From b11547c8949183992fb21ba8018ee392a0bd4a2c Mon Sep 17 00:00:00 2001 From: Doxa Maps Date: Sun, 27 Sep 2026 02:29:10 +0000 Subject: [PATCH] Research Gallery: Gospel x Internet is one of its dashboards A fourth row in the Dashboards section (after Big Picture, Simple Research and Regions), mounting from its own bundle like every other tab, with its label and subtitle in all 11 locales. It leaves the Experimental shelf, which only lists bundles no section names. --- plugin-designs/doxa-maps-spa/doxa-maps-spa.meta.json | 1 + plugin-designs/doxa-maps-spa/doxa-maps-spa.vue | 9 ++++++++- plugin-designs/doxa-maps-spa/src/strings.js | 11 +++++++++++ public/dx-maps/doxa-maps-spa/doxa-maps-spa.js | 12 ++++++------ .../doxa-maps-spa/doxa-maps-spa/app/index.html | 2 +- .../dx-maps/doxa-maps-spa/doxa-maps-spa/index.html | 2 +- public/dx-maps/doxa-maps-spa/manifest.json | 5 +++-- public/dx-maps/manifest.json | 5 +++-- 8 files changed, 34 insertions(+), 13 deletions(-) diff --git a/plugin-designs/doxa-maps-spa/doxa-maps-spa.meta.json b/plugin-designs/doxa-maps-spa/doxa-maps-spa.meta.json index 864a240fa..6f404ec6d 100644 --- a/plugin-designs/doxa-maps-spa/doxa-maps-spa.meta.json +++ b/plugin-designs/doxa-maps-spa/doxa-maps-spa.meta.json @@ -5,6 +5,7 @@ "dashboard-plus-grid/dashboard-plus-grid", "research-map-plus-grid/research-map-plus-grid", "regions-dashboard/regions-mfe", + "gospel-internet/board", "my-upg-100-list/upg-100-mfe", "doxa-simple-map/doxa-simple-map", "cities-internet/connectivity-map", diff --git a/plugin-designs/doxa-maps-spa/doxa-maps-spa.vue b/plugin-designs/doxa-maps-spa/doxa-maps-spa.vue index 4c76d29dd..0833a45f7 100644 --- a/plugin-designs/doxa-maps-spa/doxa-maps-spa.vue +++ b/plugin-designs/doxa-maps-spa/doxa-maps-spa.vue @@ -230,6 +230,9 @@ const NAV_MODEL = [ // worth more than a complete feature nobody can open, and its absence was the one real gap // between the Driver's seven and the six that shipped. { id: 'regions-dashboard', icon: 'map' }, + // 4. Gospel x Internet — the Driver asked for it INSIDE the gallery as one of its dashboards + // (2026-09-27): gospel access by language x how much of each country is online. + { id: 'gospel-internet', icon: 'chart' }, ] }, // Prayer Mobilization — now TWO rows only: the onboarding ramp's steps 2 and 3. Big Picture (former // step 1) moved to Dashboards above; Gospel Resources (former step 4) moved to Gospel Research below @@ -413,6 +416,10 @@ const TAB_DEFS = [ id: 'regions-dashboard', label: 'Regions', sub: 'regions and their countries', emoji: '🌐', bundle: 'regions-dashboard', profile: 'regions-mfe' }, + { + id: 'gospel-internet', label: 'Gospel x Internet', sub: 'gospel access through the internet', emoji: '📶', + bundle: 'gospel-internet', profile: 'board' + }, { id: 'upg-100', label: 'UPG-100 List', sub: 'my unreached list + posters', emoji: '📋', bundle: 'my-upg-100-list', profile: 'upg-100-mfe' @@ -449,7 +456,7 @@ const HEAVY_ELEMENTS = new Set([ 'my-upg-100-list-map', 'doxa-map', 'doxa-maps-spa', // composites that NEST a map, so they own a context too (measured, see above) 'dashboard-plus-grid', 'research-dashboard-map', 'demo-map', 'all-people-groups', - 'country-posters-map', 'key-cities-map', 'research-map-plus-grid' + 'country-posters-map', 'key-cities-map', 'research-map-plus-grid', 'gospel-internet-board' ]) // SCROLL-STACK ELEMENTS — the rows this shell mounts WITHOUT the fixed-viewport inline style diff --git a/plugin-designs/doxa-maps-spa/src/strings.js b/plugin-designs/doxa-maps-spa/src/strings.js index a69d0ebc0..f1915ec70 100644 --- a/plugin-designs/doxa-maps-spa/src/strings.js +++ b/plugin-designs/doxa-maps-spa/src/strings.js @@ -24,6 +24,7 @@ export const STRINGS = { 'tab.cities-internet': 'Cities with Internet', 'sub.cities-internet': 'connectivity of key cities', 'tab.gospel-resources': 'Gospel Resources', 'sub.gospel-resources': 'resources by place', 'tab.regions-dashboard': 'Regions', 'sub.regions-dashboard': 'regions and their countries', + 'tab.gospel-internet': "Gospel x Internet", 'sub.gospel-internet': "gospel access through the internet", 'tab.upg-100': 'UPG-100 List', 'sub.upg-100': 'my unreached list + posters', navLabel: 'Research maps', meta: '{n} maps', loading: 'Loading {label}…', loadFailed: 'Could not load {label}.', manifestHint: 'This tab is composed from manifest.json — build the tree, or serve the built tree, to load it.', @@ -44,6 +45,7 @@ export const STRINGS = { 'tab.cities-internet': 'Ciudades con Internet', 'sub.cities-internet': 'conectividad de ciudades clave', 'tab.gospel-resources': 'Recursos del Evangelio', 'sub.gospel-resources': 'recursos por lugar', 'tab.regions-dashboard': 'Regiones', 'sub.regions-dashboard': 'regiones y sus países', + 'tab.gospel-internet': "Evangelio e Internet", 'sub.gospel-internet': "acceso al evangelio por internet", 'tab.upg-100': 'Lista UPG-100', 'sub.upg-100': 'mi lista de no alcanzados + carteles', navLabel: 'Mapas de investigación', meta: '{n} mapas', loading: 'Cargando {label}…', loadFailed: 'No se pudo cargar {label}.', manifestHint: 'Esta pestaña se compone a partir de manifest.json: compila el árbol o sirve el árbol compilado para cargarla.', @@ -64,6 +66,7 @@ export const STRINGS = { 'tab.cities-internet': 'Villes avec Internet', 'sub.cities-internet': 'connectivité des villes clés', 'tab.gospel-resources': "Ressources de l'Évangile", 'sub.gospel-resources': 'ressources par lieu', 'tab.regions-dashboard': 'Régions', 'sub.regions-dashboard': 'régions et leurs pays', + 'tab.gospel-internet': "Évangile et Internet", 'sub.gospel-internet': "l’accès à l’Évangile par internet", 'tab.upg-100': 'Liste UPG-100', 'sub.upg-100': 'ma liste des non atteints + affiches', navLabel: 'Cartes de recherche', meta: '{n} cartes', loading: 'Chargement de {label}…', loadFailed: 'Impossible de charger {label}.', manifestHint: "Cet onglet est composé à partir de manifest.json : construisez l'arborescence ou servez l'arborescence construite pour le charger.", @@ -84,6 +87,7 @@ export const STRINGS = { 'tab.cities-internet': 'Städte mit Internet', 'sub.cities-internet': 'Konnektivität wichtiger Städte', 'tab.gospel-resources': 'Evangeliumsressourcen', 'sub.gospel-resources': 'Ressourcen nach Ort', 'tab.regions-dashboard': 'Regionen', 'sub.regions-dashboard': 'Regionen und ihre Länder', + 'tab.gospel-internet': "Evangelium × Internet", 'sub.gospel-internet': "Zugang zum Evangelium über das Internet", 'tab.upg-100': 'UPG-100-Liste', 'sub.upg-100': 'meine Liste der Unerreichten + Poster', navLabel: 'Forschungskarten', meta: '{n} Karten', loading: '{label} wird geladen…', loadFailed: '{label} konnte nicht geladen werden.', manifestHint: 'Dieser Tab wird aus manifest.json zusammengesetzt – bauen Sie den Baum oder stellen Sie den gebauten Baum bereit, um ihn zu laden.', @@ -104,6 +108,7 @@ export const STRINGS = { 'tab.cities-internet': 'Cidades com Internet', 'sub.cities-internet': 'conectividade das principais cidades', 'tab.gospel-resources': 'Recursos do Evangelho', 'sub.gospel-resources': 'recursos por lugar', 'tab.regions-dashboard': 'Regiões', 'sub.regions-dashboard': 'regiões e seus países', + 'tab.gospel-internet': "Evangelho e Internet", 'sub.gospel-internet': "acesso ao evangelho pela internet", 'tab.upg-100': 'Lista UPG-100', 'sub.upg-100': 'minha lista de não alcançados + cartazes', navLabel: 'Mapas de pesquisa', meta: '{n} mapas', loading: 'Carregando {label}…', loadFailed: 'Não foi possível carregar {label}.', manifestHint: 'Esta aba é composta a partir do manifest.json — compile a árvore ou sirva a árvore compilada para carregá-la.', @@ -126,6 +131,7 @@ export const STRINGS = { 'tab.cities-internet': 'Città con Internet', 'sub.cities-internet': 'connettività delle città chiave', 'tab.gospel-resources': 'Risorse del Vangelo', 'sub.gospel-resources': 'risorse per luogo', 'tab.regions-dashboard': 'Regioni', 'sub.regions-dashboard': 'regioni e i loro paesi', + 'tab.gospel-internet': "Vangelo e Internet", 'sub.gospel-internet': "l’accesso al vangelo tramite internet", 'tab.upg-100': 'Lista UPG-100', 'sub.upg-100': 'la mia lista dei non raggiunti + poster', navLabel: 'Mappe di ricerca', meta: '{n} mappe', loading: 'Caricamento di {label}…', loadFailed: 'Impossibile caricare {label}.', manifestHint: "Questa scheda è composta da manifest.json: compila l'albero o pubblica l'albero compilato per caricarla.", @@ -146,6 +152,7 @@ export const STRINGS = { 'tab.cities-internet': 'Orașe cu internet', 'sub.cities-internet': 'conectivitatea orașelor-cheie', 'tab.gospel-resources': 'Resurse ale Evangheliei', 'sub.gospel-resources': 'resurse după loc', 'tab.regions-dashboard': 'Regiuni', 'sub.regions-dashboard': 'regiunile și țările lor', + 'tab.gospel-internet': "Evanghelie și Internet", 'sub.gospel-internet': "accesul la Evanghelie prin internet", 'tab.upg-100': 'Lista UPG-100', 'sub.upg-100': 'lista mea de neatinși + afișe', navLabel: 'Hărți de cercetare', meta: '{n} hărți', loading: 'Se încarcă {label}…', loadFailed: '{label} nu a putut fi încărcat.', manifestHint: 'Această filă este compusă din manifest.json — construiți arborele sau serviți arborele construit pentru a o încărca.', @@ -166,6 +173,7 @@ export const STRINGS = { 'tab.cities-internet': 'Города с интернетом', 'sub.cities-internet': 'подключённость ключевых городов', 'tab.gospel-resources': 'Евангельские ресурсы', 'sub.gospel-resources': 'ресурсы по местам', 'tab.regions-dashboard': 'Регионы', 'sub.regions-dashboard': 'регионы и их страны', + 'tab.gospel-internet': "Евангелие и интернет", 'sub.gospel-internet': "доступ к Евангелию через интернет", 'tab.upg-100': 'Список UPG-100', 'sub.upg-100': 'мой список недостигнутых + плакаты', navLabel: 'Исследовательские карты', meta: 'Карт: {n}', loading: 'Загрузка: {label}…', loadFailed: 'Не удалось загрузить: {label}.', manifestHint: 'Эта вкладка собирается из manifest.json — соберите дерево или разместите собранное дерево, чтобы загрузить её.', @@ -186,6 +194,7 @@ export const STRINGS = { 'tab.cities-internet': 'مدن متصلة بالإنترنت', 'sub.cities-internet': 'اتصال المدن الرئيسية', 'tab.gospel-resources': 'موارد الإنجيل', 'sub.gospel-resources': 'الموارد حسب المكان', 'tab.regions-dashboard': 'المناطق', 'sub.regions-dashboard': 'المناطق ودولها', + 'tab.gospel-internet': "الإنجيل والإنترنت", 'sub.gospel-internet': "الوصول إلى الإنجيل عبر الإنترنت", 'tab.upg-100': 'قائمة UPG-100', 'sub.upg-100': 'قائمتي لغير المُبشَّرين + ملصقات', navLabel: 'خرائط البحث', meta: 'عدد الخرائط: {n}', loading: 'جارٍ تحميل {label}…', loadFailed: 'تعذّر تحميل {label}.', manifestHint: 'تُبنى علامة التبويب هذه من manifest.json — ابنِ الشجرة أو قدّم الشجرة المبنية لتحميلها.', @@ -206,6 +215,7 @@ export const STRINGS = { 'tab.cities-internet': 'इंटरनेट वाले शहर', 'sub.cities-internet': 'प्रमुख शहरों की कनेक्टिविटी', 'tab.gospel-resources': 'सुसमाचार संसाधन', 'sub.gospel-resources': 'स्थान के अनुसार संसाधन', 'tab.regions-dashboard': 'क्षेत्र', 'sub.regions-dashboard': 'क्षेत्र और उनके देश', + 'tab.gospel-internet': "सुसमाचार और इंटरनेट", 'sub.gospel-internet': "इंटरनेट के माध्यम से सुसमाचार तक पहुँच", 'tab.upg-100': 'UPG-100 सूची', 'sub.upg-100': 'मेरी अप्राप्त सूची + पोस्टर', navLabel: 'शोध मानचित्र', meta: '{n} मानचित्र', loading: '{label} लोड हो रहा है…', loadFailed: '{label} लोड नहीं हो सका।', manifestHint: 'यह टैब manifest.json से बनता है — इसे लोड करने के लिए ट्री बनाएँ या बना हुआ ट्री सर्व करें।', @@ -226,6 +236,7 @@ export const STRINGS = { 'tab.cities-internet': '有互联网的城市', 'sub.cities-internet': '主要城市的网络连接', 'tab.gospel-resources': '福音资源', 'sub.gospel-resources': '按地点划分的资源', 'tab.regions-dashboard': '区域', 'sub.regions-dashboard': '区域及其国家', + 'tab.gospel-internet': "福音与互联网", 'sub.gospel-internet': "通过互联网接触福音", 'tab.upg-100': 'UPG-100 名单', 'sub.upg-100': '我的未得之民名单 + 海报', navLabel: '研究地图', meta: '{n} 张地图', loading: '正在加载{label}…', loadFailed: '无法加载{label}。', manifestHint: '此标签页由 manifest.json 组成——请构建目录树或提供已构建的目录树以加载它。', diff --git a/public/dx-maps/doxa-maps-spa/doxa-maps-spa.js b/public/dx-maps/doxa-maps-spa/doxa-maps-spa.js index dcf31be88..2c1a5d5d9 100644 --- a/public/dx-maps/doxa-maps-spa/doxa-maps-spa.js +++ b/public/dx-maps/doxa-maps-spa/doxa-maps-spa.js @@ -2,23 +2,23 @@ * @vue/shared v3.5.42 * (c) 2018-present Yuxi (Evan) You and Vue contributors * @license MIT -**/function Ro(e){const t=Object.create(null);for(const o of e.split(","))t[o]=1;return o=>o in t}const V={},nt=[],xe=()=>{},Ss=()=>!1,zt=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&(e.charCodeAt(2)>122||e.charCodeAt(2)<97),Bt=e=>e.startsWith("onUpdate:"),J=Object.assign,Eo=(e,t)=>{const o=e.indexOf(t);o>-1&&e.splice(o,1)},Oi=Object.prototype.hasOwnProperty,I=(e,t)=>Oi.call(e,t),C=Array.isArray,ze=e=>ht(e)==="[object Map]",Kt=e=>ht(e)==="[object Set]",Cs=e=>ht(e)==="[object Date]",R=e=>typeof e=="function",q=e=>typeof e=="string",me=e=>typeof e=="symbol",j=e=>e!==null&&typeof e=="object",Ts=e=>(j(e)||R(e))&&R(e.then)&&R(e.catch),Ns=Object.prototype.toString,ht=e=>Ns.call(e),Fi=e=>ht(e).slice(8,-1),qt=e=>ht(e)==="[object Object]",Ao=e=>q(e)&&e!=="NaN"&&e[0]!=="-"&&""+parseInt(e,10)===e,bt=Ro(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"),Zt=e=>{const t=Object.create(null);return o=>t[o]||(t[o]=e(o))},Mi=/-\w/g,oe=Zt(e=>e.replace(Mi,t=>t.slice(1).toUpperCase())),Di=/\B([A-Z])/g,be=Zt(e=>e.replace(Di,"-$1").toLowerCase()),Xt=Zt(e=>e.charAt(0).toUpperCase()+e.slice(1)),Oo=Zt(e=>e?`on${Xt(e)}`:""),Me=(e,t)=>!Object.is(e,t),Fo=(e,...t)=>{for(let o=0;o{Object.defineProperty(e,t,{configurable:!0,enumerable:!1,writable:s,value:o})},Ii=e=>{const t=parseFloat(e);return isNaN(t)?e:t},Es=e=>{const t=q(e)?Number(e):NaN;return isNaN(t)?e:t};let As;const Jt=()=>As||(As=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:{});function Mo(e){if(C(e)){const t={};for(let o=0;o{if(o){const s=o.split(ji);s.length>1&&(t[s[0].trim()]=s[1].trim())}}),t}function Be(e){let t="";if(q(e))t=e;else if(C(e))for(let o=0;o!!(e&&e.__v_isRef===!0),F=e=>q(e)?e:e==null?"":C(e)||j(e)&&(e.toString===Ns||!R(e.toString))?Ms(e)?F(e.value):JSON.stringify(e,Ds,2):String(e),Ds=(e,t)=>Ms(t)?Ds(e,t.value):ze(t)?{[`Map(${t.size})`]:[...t.entries()].reduce((o,[s,n],i)=>(o[Do(s,i)+" =>"]=n,o),{})}:Kt(t)?{[`Set(${t.size})`]:[...t.values()].map(o=>Do(o))}:me(t)?Do(t):j(t)&&!C(t)&&!qt(t)?String(t):t,Do=(e,t="")=>{var o;return me(e)?`Symbol(${(o=e.description)!=null?o:t})`:e};/** +**/function Ro(e){const t=Object.create(null);for(const o of e.split(","))t[o]=1;return o=>o in t}const V={},nt=[],xe=()=>{},Ss=()=>!1,zt=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&(e.charCodeAt(2)>122||e.charCodeAt(2)<97),Bt=e=>e.startsWith("onUpdate:"),J=Object.assign,Eo=(e,t)=>{const o=e.indexOf(t);o>-1&&e.splice(o,1)},Oi=Object.prototype.hasOwnProperty,D=(e,t)=>Oi.call(e,t),C=Array.isArray,ze=e=>ht(e)==="[object Map]",Kt=e=>ht(e)==="[object Set]",Cs=e=>ht(e)==="[object Date]",R=e=>typeof e=="function",q=e=>typeof e=="string",me=e=>typeof e=="symbol",j=e=>e!==null&&typeof e=="object",Ts=e=>(j(e)||R(e))&&R(e.then)&&R(e.catch),Ns=Object.prototype.toString,ht=e=>Ns.call(e),Fi=e=>ht(e).slice(8,-1),qt=e=>ht(e)==="[object Object]",Ao=e=>q(e)&&e!=="NaN"&&e[0]!=="-"&&""+parseInt(e,10)===e,bt=Ro(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"),Zt=e=>{const t=Object.create(null);return o=>t[o]||(t[o]=e(o))},Mi=/-\w/g,oe=Zt(e=>e.replace(Mi,t=>t.slice(1).toUpperCase())),Ii=/\B([A-Z])/g,be=Zt(e=>e.replace(Ii,"-$1").toLowerCase()),Xt=Zt(e=>e.charAt(0).toUpperCase()+e.slice(1)),Oo=Zt(e=>e?`on${Xt(e)}`:""),Me=(e,t)=>!Object.is(e,t),Fo=(e,...t)=>{for(let o=0;o{Object.defineProperty(e,t,{configurable:!0,enumerable:!1,writable:s,value:o})},Di=e=>{const t=parseFloat(e);return isNaN(t)?e:t},Es=e=>{const t=q(e)?Number(e):NaN;return isNaN(t)?e:t};let As;const Jt=()=>As||(As=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:{});function Mo(e){if(C(e)){const t={};for(let o=0;o{if(o){const s=o.split(ji);s.length>1&&(t[s[0].trim()]=s[1].trim())}}),t}function Be(e){let t="";if(q(e))t=e;else if(C(e))for(let o=0;o!!(e&&e.__v_isRef===!0),F=e=>q(e)?e:e==null?"":C(e)||j(e)&&(e.toString===Ns||!R(e.toString))?Ms(e)?F(e.value):JSON.stringify(e,Is,2):String(e),Is=(e,t)=>Ms(t)?Is(e,t.value):ze(t)?{[`Map(${t.size})`]:[...t.entries()].reduce((o,[s,n],i)=>(o[Io(s,i)+" =>"]=n,o),{})}:Kt(t)?{[`Set(${t.size})`]:[...t.values()].map(o=>Io(o))}:me(t)?Io(t):j(t)&&!C(t)&&!qt(t)?String(t):t,Io=(e,t="")=>{var o;return me(e)?`Symbol(${(o=e.description)!=null?o:t})`:e};/** * @vue/reactivity v3.5.42 * (c) 2018-present Yuxi (Evan) You and Vue contributors * @license MIT -**/let se;class zi{constructor(t=!1){this.detached=t,this._active=!0,this._on=0,this.effects=[],this.cleanups=[],this._isPaused=!1,this._warnOnRun=!0,this.__v_skip=!0,!t&&se&&(se.active?(this.parent=se,this.index=(se.scopes||(se.scopes=[])).push(this)-1):(this._active=!1,this._warnOnRun=!1))}get active(){return this._active}pause(){if(this._active){this._isPaused=!0;let t,o;if(this.scopes){const s=this.scopes.slice();for(t=0,o=s.length;t0&&--this._on===0){if(se===this)se=this.prevScope;else{let t=se;for(;t;){if(t.prevScope===this){t.prevScope=this.prevScope;break}t=t.prevScope}}this.prevScope=void 0}}stop(t){if(this._active){this._active=!1;let o,s;for(o=0,s=this.effects.length;o0)return;if(_t){let t=_t;for(_t=void 0;t;){const o=t.next;t.next=void 0,t.flags&=-9,t=o}}let e;for(;mt;){let t=mt;for(mt=void 0;t;){const o=t.next;if(t.next=void 0,t.flags&=-9,t.flags&1)try{t.trigger()}catch(s){e||(e=s)}t=o}}if(e)throw e}function Gs(e){for(let t=e.deps;t;t=t.nextDep)t.version=-1,t.prevActiveLink=t.dep.activeLink,t.dep.activeLink=t}function Ws(e){let t,o=e.depsTail,s=o;for(;s;){const n=s.prevDep;s.version===-1?(s===o&&(o=n),Wo(s),Ki(s)):t=s,s.dep.activeLink=s.prevActiveLink,s.prevActiveLink=void 0,s=n}e.deps=t,e.depsTail=o}function Go(e){for(let t=e.deps;t;t=t.nextDep)if(t.dep.version!==t.version||t.dep.computed&&(Us(t.dep.computed)||t.dep.version!==t.version))return!0;return!!e._dirty}function Us(e){if(e.flags&4&&!(e.flags&16)||(e.flags&=-17,e.globalVersion===$t)||(e.globalVersion=$t,!e.isSSR&&e.flags&128&&(!e.deps&&!e._dirty||!Go(e))))return;e.flags|=2;const t=e.dep,o=B,s=_e;B=e,_e=!0;try{Gs(e);const n=e.fn(e._value);(t.version===0||Me(n,e._value))&&(e.flags|=128,e._value=n,t.version++)}catch(n){throw t.version++,n}finally{B=o,_e=s,Ws(e),e.flags&=-3}}function Wo(e,t=!1){const{dep:o,prevSub:s,nextSub:n}=e;if(s&&(s.nextSub=n,e.prevSub=void 0),n&&(n.prevSub=s,e.nextSub=void 0),o.subs===e&&(o.subs=s,!s&&o.computed)){o.computed.flags&=-5;for(let i=o.computed.deps;i;i=i.nextDep)Wo(i,!0)}!t&&!--o.sc&&o.map&&o.map.delete(o.key)}function Ki(e){const{prevDep:t,nextDep:o}=e;t&&(t.nextDep=o,e.prevDep=void 0),o&&(o.prevDep=t,e.nextDep=void 0)}let _e=!0;const Vs=[];function we(){Vs.push(_e),_e=!1}function Pe(){const e=Vs.pop();_e=e===void 0?!0:e}function zs(e){const{cleanup:t}=e;if(e.cleanup=void 0,t){const o=B;B=void 0;try{t()}finally{B=o}}}let $t=0;class qi{constructor(t,o){this.sub=t,this.dep=o,this.version=o.version,this.nextDep=this.prevDep=this.nextSub=this.prevSub=this.prevActiveLink=void 0}}class Bs{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(!B||!_e||B===this.computed)return;let o=this.activeLink;if(o===void 0||o.sub!==B)o=this.activeLink=new qi(B,this),B.deps?(o.prevDep=B.depsTail,B.depsTail.nextDep=o,B.depsTail=o):B.deps=B.depsTail=o,Ks(o);else if(o.version===-1&&(o.version=this.version,o.nextDep)){const s=o.nextDep;s.prevDep=o.prevDep,o.prevDep&&(o.prevDep.nextDep=s),o.prevDep=B.depsTail,o.nextDep=void 0,B.depsTail.nextDep=o,B.depsTail=o,B.deps===o&&(B.deps=s)}return o}trigger(t){this.version++,$t++,this.notify(t)}notify(t){Ho();try{for(let o=this.subs;o;o=o.prevSub)o.sub.notify()&&o.sub.dep.notify()}finally{jo()}}}function Ks(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)Ks(s)}const o=e.dep.subs;o!==e&&(e.prevSub=o,o&&(o.nextSub=e)),e.dep.subs=e}}const Uo=new WeakMap,Xe=Symbol(""),Vo=Symbol(""),vt=Symbol("");function ae(e,t,o){if(_e&&B){let s=Uo.get(e);s||Uo.set(e,s=new Map);let n=s.get(o);n||(s.set(o,n=new Bs),n.map=s,n.key=o),n.track()}}function De(e,t,o,s,n,i){const a=Uo.get(e);if(!a){$t++;return}const r=l=>{l&&l.trigger()};if(Ho(),t==="clear")a.forEach(r);else{const l=C(e),u=l&&Ao(o);if(l&&o==="length"){const d=Number(s);a.forEach((g,x)=>{(x==="length"||x===vt||!me(x)&&x>=d)&&r(g)})}else switch((o!==void 0||a.has(void 0))&&r(a.get(o)),u&&r(a.get(vt)),t){case"add":l?u&&r(a.get("length")):(r(a.get(Xe)),ze(e)&&r(a.get(Vo)));break;case"delete":l||(r(a.get(Xe)),ze(e)&&r(a.get(Vo)));break;case"set":ze(e)&&r(a.get(Xe));break}}jo()}function it(e){const t=H(e);return t===e?t:(ae(t,"iterate",vt),$e(e)?t:t.map(He))}function Qt(e){return ae(e=H(e),"iterate",vt),e}function ke(e,t){return Ke(e)?at(Je(e)?He(t):t):He(t)}const Zi={__proto__:null,[Symbol.iterator](){return zo(this,Symbol.iterator,e=>ke(this,e))},concat(...e){return it(this).concat(...e.map(t=>C(t)?it(t):t))},entries(){return zo(this,"entries",e=>(e[1]=ke(this,e[1]),e))},every(e,t){return Ie(this,"every",e,t,void 0,arguments)},filter(e,t){return Ie(this,"filter",e,t,o=>o.map(s=>ke(this,s)),arguments)},find(e,t){return Ie(this,"find",e,t,o=>ke(this,o),arguments)},findIndex(e,t){return Ie(this,"findIndex",e,t,void 0,arguments)},findLast(e,t){return Ie(this,"findLast",e,t,o=>ke(this,o),arguments)},findLastIndex(e,t){return Ie(this,"findLastIndex",e,t,void 0,arguments)},forEach(e,t){return Ie(this,"forEach",e,t,void 0,arguments)},includes(...e){return Bo(this,"includes",e)},indexOf(...e){return Bo(this,"indexOf",e)},join(e){return it(this).join(e)},lastIndexOf(...e){return Bo(this,"lastIndexOf",e)},map(e,t){return Ie(this,"map",e,t,void 0,arguments)},pop(){return yt(this,"pop")},push(...e){return yt(this,"push",e)},reduce(e,...t){return qs(this,"reduce",e,t)},reduceRight(e,...t){return qs(this,"reduceRight",e,t)},shift(){return yt(this,"shift")},some(e,t){return Ie(this,"some",e,t,void 0,arguments)},splice(...e){return yt(this,"splice",e)},toReversed(){return it(this).toReversed()},toSorted(e){return it(this).toSorted(e)},toSpliced(...e){return it(this).toSpliced(...e)},unshift(...e){return yt(this,"unshift",e)},values(){return zo(this,"values",e=>ke(this,e))}};function zo(e,t,o){const s=Qt(e),n=s[t]();return s!==e&&!$e(e)&&(n._next=n.next,n.next=()=>{const i=n._next();return i.done||(i.value=o(i.value)),i}),n}const Xi=Array.prototype;function Ie(e,t,o,s,n,i){const a=Qt(e),r=a!==e&&!$e(e),l=a[t];if(l!==Xi[t]){const g=l.apply(e,i);return r?He(g):g}let u=o;a!==e&&(r?u=function(g,x){return o.call(this,ke(e,g),x,e)}:o.length>2&&(u=function(g,x){return o.call(this,g,x,e)}));const d=l.call(a,u,s);return r&&n?n(d):d}function qs(e,t,o,s){const n=Qt(e),i=n!==e&&!$e(e);let a=o,r=!1;n!==e&&(i?(r=s.length===0,a=function(u,d,g){return r&&(r=!1,u=ke(e,u)),o.call(this,u,ke(e,d),g,e)}):o.length>3&&(a=function(u,d,g){return o.call(this,u,d,g,e)}));const l=n[t](a,...s);return r?ke(e,l):l}function Bo(e,t,o){const s=H(e);ae(s,"iterate",vt);const n=s[t](...o);return(n===-1||n===!1)&&Xo(o[0])?(o[0]=H(o[0]),s[t](...o)):n}function yt(e,t,o=[]){we(),Ho();const s=H(e)[t].apply(e,o);return jo(),Pe(),s}const Ji=Ro("__proto__,__v_isRef,__isVue"),Zs=new Set(Object.getOwnPropertyNames(Symbol).filter(e=>e!=="arguments"&&e!=="caller").map(e=>Symbol[e]).filter(me));function Yi(e){me(e)||(e=String(e));const t=H(this);return ae(t,"has",e),t.hasOwnProperty(e)}class Xs{constructor(t=!1,o=!1){this._isReadonly=t,this._isShallow=o}get(t,o,s){if(o==="__v_skip")return t.__v_skip;const n=this._isReadonly,i=this._isShallow;if(o==="__v_isReactive")return!n;if(o==="__v_isReadonly")return n;if(o==="__v_isShallow")return i;if(o==="__v_raw")return s===(n?i?on:tn:i?en:Qs).get(t)||Object.getPrototypeOf(t)===Object.getPrototypeOf(s)?t:void 0;const a=C(t);if(!n){let l;if(a&&(l=Zi[o]))return l;if(o==="hasOwnProperty")return Yi}const r=Reflect.get(t,o,re(t)?t:s);if((me(o)?Zs.has(o):Ji(o))||(n||ae(t,"get",o),i))return r;if(re(r)){const l=a&&Ao(o)?r:r.value;return n&&j(l)?Zo(l):l}return j(r)?n?Zo(r):qo(r):r}}class Js extends Xs{constructor(t=!1){super(!1,t)}set(t,o,s,n){let i=t[o];const a=C(t)&&Ao(o);if(!this._isShallow){const u=Ke(i);if(!$e(s)&&!Ke(s)&&(i=H(i),s=H(s)),!a&&re(i)&&!re(s))return u||(i.value=s),!0}const r=a?Number(o)e,eo=e=>Reflect.getPrototypeOf(e);function sa(e,t,o){return function(...s){const n=this.__v_raw,i=H(n),a=ze(i),r=e==="entries"||e===Symbol.iterator&&a,l=e==="keys"&&a,u=n[e](...s),d=o?Ko:t?at:He;return!t&&ae(i,"iterate",l?Vo:Xe),J(Object.create(u),{next(){const{value:g,done:x}=u.next();return x?{value:g,done:x}:{value:r?[d(g[0]),d(g[1])]:d(g),done:x}}})}}function to(e){return function(...t){return e==="delete"?!1:e==="clear"?void 0:this}}function na(e,t){const o={get(n){const i=this.__v_raw,a=H(i),r=H(n);e||(Me(n,r)&&ae(a,"get",n),ae(a,"get",r));const{has:l}=eo(a),u=t?Ko:e?at:He;if(l.call(a,n))return u(i.get(n));if(l.call(a,r))return u(i.get(r));i!==a&&i.get(n)},get size(){const n=this.__v_raw;return!e&&ae(H(n),"iterate",Xe),n.size},has(n){const i=this.__v_raw,a=H(i),r=H(n);return e||(Me(n,r)&&ae(a,"has",n),ae(a,"has",r)),n===r?i.has(n):i.has(n)||i.has(r)},forEach(n,i){const a=this,r=a.__v_raw,l=H(r),u=t?Ko:e?at:He;return!e&&ae(l,"iterate",Xe),r.forEach((d,g)=>n.call(i,u(d),u(g),a))}};return J(o,e?{add:to("add"),set:to("set"),delete:to("delete"),clear:to("clear")}:{add(n){const i=H(this),a=eo(i),r=H(n),l=!t&&!$e(n)&&!Ke(n)?r:n;return a.has.call(i,l)||Me(n,l)&&a.has.call(i,n)||Me(r,l)&&a.has.call(i,r)||(i.add(l),De(i,"add",l,l)),this},set(n,i){!t&&!$e(i)&&!Ke(i)&&(i=H(i));const a=H(this),{has:r,get:l}=eo(a);let u=r.call(a,n);u||(n=H(n),u=r.call(a,n));const d=l.call(a,n);return a.set(n,i),u?Me(i,d)&&De(a,"set",n,i):De(a,"add",n,i),this},delete(n){const i=H(this),{has:a,get:r}=eo(i);let l=a.call(i,n);l||(n=H(n),l=a.call(i,n)),r&&r.call(i,n);const u=i.delete(n);return l&&De(i,"delete",n,void 0),u},clear(){const n=H(this),i=n.size!==0,a=n.clear();return i&&De(n,"clear",void 0,void 0),a}}),["keys","values","entries",Symbol.iterator].forEach(n=>{o[n]=sa(n,e,t)}),o}function oo(e,t){const o=na(e,t);return(s,n,i)=>n==="__v_isReactive"?!e:n==="__v_isReadonly"?e:n==="__v_raw"?s:Reflect.get(I(o,n)&&n in s?o:s,n,i)}const ia={get:oo(!1,!1)},aa={get:oo(!1,!0)},ra={get:oo(!0,!1)},la={get:oo(!0,!0)},Qs=new WeakMap,en=new WeakMap,tn=new WeakMap,on=new WeakMap;function ca(e){switch(e){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}function qo(e){return Ke(e)?e:so(e,!1,Qi,ia,Qs)}function pa(e){return so(e,!1,ta,aa,en)}function Zo(e){return so(e,!0,ea,ra,tn)}function Zc(e){return so(e,!0,oa,la,on)}function so(e,t,o,s,n){if(!j(e)||e.__v_raw&&!(t&&e.__v_isReactive)||e.__v_skip||!Object.isExtensible(e))return e;const i=n.get(e);if(i)return i;const a=ca(Fi(e));if(a===0)return e;const r=new Proxy(e,a===2?s:o);return n.set(e,r),r}function Je(e){return Ke(e)?Je(e.__v_raw):!!(e&&e.__v_isReactive)}function Ke(e){return!!(e&&e.__v_isReadonly)}function $e(e){return!!(e&&e.__v_isShallow)}function Xo(e){return e?!!e.__v_raw:!1}function H(e){const t=e&&e.__v_raw;return t?H(t):e}function da(e){return!I(e,"__v_skip")&&Object.isExtensible(e)&&Rs(e,"__v_skip",!0),e}const He=e=>j(e)?qo(e):e,at=e=>j(e)?Zo(e):e;function re(e){return e?e.__v_isRef===!0:!1}function sn(e){return re(e)?e.value:e}const ua={get:(e,t,o)=>t==="__v_raw"?e:sn(Reflect.get(e,t,o)),set:(e,t,o,s)=>{const n=e[t];return re(n)&&!re(o)?(n.value=o,!0):Reflect.set(e,t,o,s)}};function nn(e){return Je(e)?e:new Proxy(e,ua)}class fa{constructor(t,o,s){this.fn=t,this.setter=o,this._value=void 0,this.dep=new Bs(this),this.__v_isRef=!0,this.deps=void 0,this.depsTail=void 0,this.flags=16,this.globalVersion=$t-1,this.next=void 0,this.effect=this,this.__v_isReadonly=!o,this.isSSR=s}notify(){if(this.flags|=16,!(this.flags&8)&&B!==this)return js(this,!0),!0}get value(){const t=this.dep.track();return Us(this),t&&(t.version=this.dep.version),this._value}set value(t){this.setter&&this.setter(t)}}function ga(e,t,o=!1){let s,n;return R(e)?s=e:(s=e.get,n=e.set),new fa(s,n,o)}const no={},io=new WeakMap;let Ye;function ha(e,t=!1,o=Ye){if(o){let s=io.get(o);s||io.set(o,s=[]),s.push(e)}}function ba(e,t,o=V){const{immediate:s,deep:n,once:i,scheduler:a,augmentJob:r,call:l}=o,u=S=>n?S:$e(S)||n===!1||n===0?je(S,1):je(S);let d,g,x,P,G=!1,E=!1;if(re(e)?(g=()=>e.value,G=$e(e)):Je(e)?(g=()=>u(e),G=!0):C(e)?(E=!0,G=e.some(S=>Je(S)||$e(S)),g=()=>e.map(S=>{if(re(S))return S.value;if(Je(S))return u(S);if(R(S))return l?l(S,2):S()})):R(e)?t?g=l?()=>l(e,2):e:g=()=>{if(x){we();try{x()}finally{Pe()}}const S=Ye;Ye=d;try{return l?l(e,3,[P]):e(P)}finally{Ye=S}}:g=xe,t&&n){const S=g,te=n===!0?1/0:n;g=()=>je(S(),te)}const Y=Bi(),Z=()=>{d.stop(),Y&&Y.active&&Eo(Y.effects,d)};if(i&&t){const S=t;t=(...te)=>{const Ne=S(...te);return Z(),Ne}}let D=E?new Array(e.length).fill(no):no;const W=S=>{if(!(!(d.flags&1)||!d.dirty&&!S))if(t){const te=d.run();if(S||n||G||(E?te.some((Ne,Re)=>Me(Ne,D[Re])):Me(te,D))){x&&x();const Ne=Ye;Ye=d;try{const Re=[te,D===no?void 0:E&&D[0]===no?[]:D,P];D=te,l?l(t,3,Re):t(...Re)}finally{Ye=Ne}}}else d.run()};return r&&r(W),d=new Is(g),d.scheduler=a?()=>a(W,!1):W,P=S=>ha(S,!1,d),x=d.onStop=()=>{const S=io.get(d);if(S){if(l)l(S,4);else for(const te of S)te();io.delete(d)}},t?s?W(!0):D=d.run():a?a(W.bind(null,!0),!0):d.run(),Z.pause=d.pause.bind(d),Z.resume=d.resume.bind(d),Z.stop=Z,Z}function je(e,t=1/0,o){if(t<=0||!j(e)||e.__v_skip||(o=o||new Map,(o.get(e)||0)>=t))return e;if(o.set(e,t),t--,re(e))je(e.value,t,o);else if(C(e))for(let s=0;s{je(s,t,o)});else if(qt(e)){for(const s in e)je(e[s],t,o);for(const s of Object.getOwnPropertySymbols(e))Object.prototype.propertyIsEnumerable.call(e,s)&&je(e[s],t,o)}return e}/** +**/let se;class zi{constructor(t=!1){this.detached=t,this._active=!0,this._on=0,this.effects=[],this.cleanups=[],this._isPaused=!1,this._warnOnRun=!0,this.__v_skip=!0,!t&&se&&(se.active?(this.parent=se,this.index=(se.scopes||(se.scopes=[])).push(this)-1):(this._active=!1,this._warnOnRun=!1))}get active(){return this._active}pause(){if(this._active){this._isPaused=!0;let t,o;if(this.scopes){const s=this.scopes.slice();for(t=0,o=s.length;t0&&--this._on===0){if(se===this)se=this.prevScope;else{let t=se;for(;t;){if(t.prevScope===this){t.prevScope=this.prevScope;break}t=t.prevScope}}this.prevScope=void 0}}stop(t){if(this._active){this._active=!1;let o,s;for(o=0,s=this.effects.length;o0)return;if(_t){let t=_t;for(_t=void 0;t;){const o=t.next;t.next=void 0,t.flags&=-9,t=o}}let e;for(;mt;){let t=mt;for(mt=void 0;t;){const o=t.next;if(t.next=void 0,t.flags&=-9,t.flags&1)try{t.trigger()}catch(s){e||(e=s)}t=o}}if(e)throw e}function Gs(e){for(let t=e.deps;t;t=t.nextDep)t.version=-1,t.prevActiveLink=t.dep.activeLink,t.dep.activeLink=t}function Ws(e){let t,o=e.depsTail,s=o;for(;s;){const n=s.prevDep;s.version===-1?(s===o&&(o=n),Wo(s),Ki(s)):t=s,s.dep.activeLink=s.prevActiveLink,s.prevActiveLink=void 0,s=n}e.deps=t,e.depsTail=o}function Go(e){for(let t=e.deps;t;t=t.nextDep)if(t.dep.version!==t.version||t.dep.computed&&(Us(t.dep.computed)||t.dep.version!==t.version))return!0;return!!e._dirty}function Us(e){if(e.flags&4&&!(e.flags&16)||(e.flags&=-17,e.globalVersion===$t)||(e.globalVersion=$t,!e.isSSR&&e.flags&128&&(!e.deps&&!e._dirty||!Go(e))))return;e.flags|=2;const t=e.dep,o=B,s=_e;B=e,_e=!0;try{Gs(e);const n=e.fn(e._value);(t.version===0||Me(n,e._value))&&(e.flags|=128,e._value=n,t.version++)}catch(n){throw t.version++,n}finally{B=o,_e=s,Ws(e),e.flags&=-3}}function Wo(e,t=!1){const{dep:o,prevSub:s,nextSub:n}=e;if(s&&(s.nextSub=n,e.prevSub=void 0),n&&(n.prevSub=s,e.nextSub=void 0),o.subs===e&&(o.subs=s,!s&&o.computed)){o.computed.flags&=-5;for(let i=o.computed.deps;i;i=i.nextDep)Wo(i,!0)}!t&&!--o.sc&&o.map&&o.map.delete(o.key)}function Ki(e){const{prevDep:t,nextDep:o}=e;t&&(t.nextDep=o,e.prevDep=void 0),o&&(o.prevDep=t,e.nextDep=void 0)}let _e=!0;const Vs=[];function we(){Vs.push(_e),_e=!1}function Pe(){const e=Vs.pop();_e=e===void 0?!0:e}function zs(e){const{cleanup:t}=e;if(e.cleanup=void 0,t){const o=B;B=void 0;try{t()}finally{B=o}}}let $t=0;class qi{constructor(t,o){this.sub=t,this.dep=o,this.version=o.version,this.nextDep=this.prevDep=this.nextSub=this.prevSub=this.prevActiveLink=void 0}}class Bs{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(!B||!_e||B===this.computed)return;let o=this.activeLink;if(o===void 0||o.sub!==B)o=this.activeLink=new qi(B,this),B.deps?(o.prevDep=B.depsTail,B.depsTail.nextDep=o,B.depsTail=o):B.deps=B.depsTail=o,Ks(o);else if(o.version===-1&&(o.version=this.version,o.nextDep)){const s=o.nextDep;s.prevDep=o.prevDep,o.prevDep&&(o.prevDep.nextDep=s),o.prevDep=B.depsTail,o.nextDep=void 0,B.depsTail.nextDep=o,B.depsTail=o,B.deps===o&&(B.deps=s)}return o}trigger(t){this.version++,$t++,this.notify(t)}notify(t){Ho();try{for(let o=this.subs;o;o=o.prevSub)o.sub.notify()&&o.sub.dep.notify()}finally{jo()}}}function Ks(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)Ks(s)}const o=e.dep.subs;o!==e&&(e.prevSub=o,o&&(o.nextSub=e)),e.dep.subs=e}}const Uo=new WeakMap,Xe=Symbol(""),Vo=Symbol(""),vt=Symbol("");function ae(e,t,o){if(_e&&B){let s=Uo.get(e);s||Uo.set(e,s=new Map);let n=s.get(o);n||(s.set(o,n=new Bs),n.map=s,n.key=o),n.track()}}function Ie(e,t,o,s,n,i){const a=Uo.get(e);if(!a){$t++;return}const r=l=>{l&&l.trigger()};if(Ho(),t==="clear")a.forEach(r);else{const l=C(e),u=l&&Ao(o);if(l&&o==="length"){const d=Number(s);a.forEach((g,x)=>{(x==="length"||x===vt||!me(x)&&x>=d)&&r(g)})}else switch((o!==void 0||a.has(void 0))&&r(a.get(o)),u&&r(a.get(vt)),t){case"add":l?u&&r(a.get("length")):(r(a.get(Xe)),ze(e)&&r(a.get(Vo)));break;case"delete":l||(r(a.get(Xe)),ze(e)&&r(a.get(Vo)));break;case"set":ze(e)&&r(a.get(Xe));break}}jo()}function it(e){const t=H(e);return t===e?t:(ae(t,"iterate",vt),$e(e)?t:t.map(He))}function Qt(e){return ae(e=H(e),"iterate",vt),e}function ke(e,t){return Ke(e)?at(Je(e)?He(t):t):He(t)}const Zi={__proto__:null,[Symbol.iterator](){return zo(this,Symbol.iterator,e=>ke(this,e))},concat(...e){return it(this).concat(...e.map(t=>C(t)?it(t):t))},entries(){return zo(this,"entries",e=>(e[1]=ke(this,e[1]),e))},every(e,t){return De(this,"every",e,t,void 0,arguments)},filter(e,t){return De(this,"filter",e,t,o=>o.map(s=>ke(this,s)),arguments)},find(e,t){return De(this,"find",e,t,o=>ke(this,o),arguments)},findIndex(e,t){return De(this,"findIndex",e,t,void 0,arguments)},findLast(e,t){return De(this,"findLast",e,t,o=>ke(this,o),arguments)},findLastIndex(e,t){return De(this,"findLastIndex",e,t,void 0,arguments)},forEach(e,t){return De(this,"forEach",e,t,void 0,arguments)},includes(...e){return Bo(this,"includes",e)},indexOf(...e){return Bo(this,"indexOf",e)},join(e){return it(this).join(e)},lastIndexOf(...e){return Bo(this,"lastIndexOf",e)},map(e,t){return De(this,"map",e,t,void 0,arguments)},pop(){return yt(this,"pop")},push(...e){return yt(this,"push",e)},reduce(e,...t){return qs(this,"reduce",e,t)},reduceRight(e,...t){return qs(this,"reduceRight",e,t)},shift(){return yt(this,"shift")},some(e,t){return De(this,"some",e,t,void 0,arguments)},splice(...e){return yt(this,"splice",e)},toReversed(){return it(this).toReversed()},toSorted(e){return it(this).toSorted(e)},toSpliced(...e){return it(this).toSpliced(...e)},unshift(...e){return yt(this,"unshift",e)},values(){return zo(this,"values",e=>ke(this,e))}};function zo(e,t,o){const s=Qt(e),n=s[t]();return s!==e&&!$e(e)&&(n._next=n.next,n.next=()=>{const i=n._next();return i.done||(i.value=o(i.value)),i}),n}const Xi=Array.prototype;function De(e,t,o,s,n,i){const a=Qt(e),r=a!==e&&!$e(e),l=a[t];if(l!==Xi[t]){const g=l.apply(e,i);return r?He(g):g}let u=o;a!==e&&(r?u=function(g,x){return o.call(this,ke(e,g),x,e)}:o.length>2&&(u=function(g,x){return o.call(this,g,x,e)}));const d=l.call(a,u,s);return r&&n?n(d):d}function qs(e,t,o,s){const n=Qt(e),i=n!==e&&!$e(e);let a=o,r=!1;n!==e&&(i?(r=s.length===0,a=function(u,d,g){return r&&(r=!1,u=ke(e,u)),o.call(this,u,ke(e,d),g,e)}):o.length>3&&(a=function(u,d,g){return o.call(this,u,d,g,e)}));const l=n[t](a,...s);return r?ke(e,l):l}function Bo(e,t,o){const s=H(e);ae(s,"iterate",vt);const n=s[t](...o);return(n===-1||n===!1)&&Xo(o[0])?(o[0]=H(o[0]),s[t](...o)):n}function yt(e,t,o=[]){we(),Ho();const s=H(e)[t].apply(e,o);return jo(),Pe(),s}const Ji=Ro("__proto__,__v_isRef,__isVue"),Zs=new Set(Object.getOwnPropertyNames(Symbol).filter(e=>e!=="arguments"&&e!=="caller").map(e=>Symbol[e]).filter(me));function Yi(e){me(e)||(e=String(e));const t=H(this);return ae(t,"has",e),t.hasOwnProperty(e)}class Xs{constructor(t=!1,o=!1){this._isReadonly=t,this._isShallow=o}get(t,o,s){if(o==="__v_skip")return t.__v_skip;const n=this._isReadonly,i=this._isShallow;if(o==="__v_isReactive")return!n;if(o==="__v_isReadonly")return n;if(o==="__v_isShallow")return i;if(o==="__v_raw")return s===(n?i?on:tn:i?en:Qs).get(t)||Object.getPrototypeOf(t)===Object.getPrototypeOf(s)?t:void 0;const a=C(t);if(!n){let l;if(a&&(l=Zi[o]))return l;if(o==="hasOwnProperty")return Yi}const r=Reflect.get(t,o,re(t)?t:s);if((me(o)?Zs.has(o):Ji(o))||(n||ae(t,"get",o),i))return r;if(re(r)){const l=a&&Ao(o)?r:r.value;return n&&j(l)?Zo(l):l}return j(r)?n?Zo(r):qo(r):r}}class Js extends Xs{constructor(t=!1){super(!1,t)}set(t,o,s,n){let i=t[o];const a=C(t)&&Ao(o);if(!this._isShallow){const u=Ke(i);if(!$e(s)&&!Ke(s)&&(i=H(i),s=H(s)),!a&&re(i)&&!re(s))return u||(i.value=s),!0}const r=a?Number(o)e,eo=e=>Reflect.getPrototypeOf(e);function sa(e,t,o){return function(...s){const n=this.__v_raw,i=H(n),a=ze(i),r=e==="entries"||e===Symbol.iterator&&a,l=e==="keys"&&a,u=n[e](...s),d=o?Ko:t?at:He;return!t&&ae(i,"iterate",l?Vo:Xe),J(Object.create(u),{next(){const{value:g,done:x}=u.next();return x?{value:g,done:x}:{value:r?[d(g[0]),d(g[1])]:d(g),done:x}}})}}function to(e){return function(...t){return e==="delete"?!1:e==="clear"?void 0:this}}function na(e,t){const o={get(n){const i=this.__v_raw,a=H(i),r=H(n);e||(Me(n,r)&&ae(a,"get",n),ae(a,"get",r));const{has:l}=eo(a),u=t?Ko:e?at:He;if(l.call(a,n))return u(i.get(n));if(l.call(a,r))return u(i.get(r));i!==a&&i.get(n)},get size(){const n=this.__v_raw;return!e&&ae(H(n),"iterate",Xe),n.size},has(n){const i=this.__v_raw,a=H(i),r=H(n);return e||(Me(n,r)&&ae(a,"has",n),ae(a,"has",r)),n===r?i.has(n):i.has(n)||i.has(r)},forEach(n,i){const a=this,r=a.__v_raw,l=H(r),u=t?Ko:e?at:He;return!e&&ae(l,"iterate",Xe),r.forEach((d,g)=>n.call(i,u(d),u(g),a))}};return J(o,e?{add:to("add"),set:to("set"),delete:to("delete"),clear:to("clear")}:{add(n){const i=H(this),a=eo(i),r=H(n),l=!t&&!$e(n)&&!Ke(n)?r:n;return a.has.call(i,l)||Me(n,l)&&a.has.call(i,n)||Me(r,l)&&a.has.call(i,r)||(i.add(l),Ie(i,"add",l,l)),this},set(n,i){!t&&!$e(i)&&!Ke(i)&&(i=H(i));const a=H(this),{has:r,get:l}=eo(a);let u=r.call(a,n);u||(n=H(n),u=r.call(a,n));const d=l.call(a,n);return a.set(n,i),u?Me(i,d)&&Ie(a,"set",n,i):Ie(a,"add",n,i),this},delete(n){const i=H(this),{has:a,get:r}=eo(i);let l=a.call(i,n);l||(n=H(n),l=a.call(i,n)),r&&r.call(i,n);const u=i.delete(n);return l&&Ie(i,"delete",n,void 0),u},clear(){const n=H(this),i=n.size!==0,a=n.clear();return i&&Ie(n,"clear",void 0,void 0),a}}),["keys","values","entries",Symbol.iterator].forEach(n=>{o[n]=sa(n,e,t)}),o}function oo(e,t){const o=na(e,t);return(s,n,i)=>n==="__v_isReactive"?!e:n==="__v_isReadonly"?e:n==="__v_raw"?s:Reflect.get(D(o,n)&&n in s?o:s,n,i)}const ia={get:oo(!1,!1)},aa={get:oo(!1,!0)},ra={get:oo(!0,!1)},la={get:oo(!0,!0)},Qs=new WeakMap,en=new WeakMap,tn=new WeakMap,on=new WeakMap;function ca(e){switch(e){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}function qo(e){return Ke(e)?e:so(e,!1,Qi,ia,Qs)}function pa(e){return so(e,!1,ta,aa,en)}function Zo(e){return so(e,!0,ea,ra,tn)}function Zc(e){return so(e,!0,oa,la,on)}function so(e,t,o,s,n){if(!j(e)||e.__v_raw&&!(t&&e.__v_isReactive)||e.__v_skip||!Object.isExtensible(e))return e;const i=n.get(e);if(i)return i;const a=ca(Fi(e));if(a===0)return e;const r=new Proxy(e,a===2?s:o);return n.set(e,r),r}function Je(e){return Ke(e)?Je(e.__v_raw):!!(e&&e.__v_isReactive)}function Ke(e){return!!(e&&e.__v_isReadonly)}function $e(e){return!!(e&&e.__v_isShallow)}function Xo(e){return e?!!e.__v_raw:!1}function H(e){const t=e&&e.__v_raw;return t?H(t):e}function da(e){return!D(e,"__v_skip")&&Object.isExtensible(e)&&Rs(e,"__v_skip",!0),e}const He=e=>j(e)?qo(e):e,at=e=>j(e)?Zo(e):e;function re(e){return e?e.__v_isRef===!0:!1}function sn(e){return re(e)?e.value:e}const ua={get:(e,t,o)=>t==="__v_raw"?e:sn(Reflect.get(e,t,o)),set:(e,t,o,s)=>{const n=e[t];return re(n)&&!re(o)?(n.value=o,!0):Reflect.set(e,t,o,s)}};function nn(e){return Je(e)?e:new Proxy(e,ua)}class fa{constructor(t,o,s){this.fn=t,this.setter=o,this._value=void 0,this.dep=new Bs(this),this.__v_isRef=!0,this.deps=void 0,this.depsTail=void 0,this.flags=16,this.globalVersion=$t-1,this.next=void 0,this.effect=this,this.__v_isReadonly=!o,this.isSSR=s}notify(){if(this.flags|=16,!(this.flags&8)&&B!==this)return js(this,!0),!0}get value(){const t=this.dep.track();return Us(this),t&&(t.version=this.dep.version),this._value}set value(t){this.setter&&this.setter(t)}}function ga(e,t,o=!1){let s,n;return R(e)?s=e:(s=e.get,n=e.set),new fa(s,n,o)}const no={},io=new WeakMap;let Ye;function ha(e,t=!1,o=Ye){if(o){let s=io.get(o);s||io.set(o,s=[]),s.push(e)}}function ba(e,t,o=V){const{immediate:s,deep:n,once:i,scheduler:a,augmentJob:r,call:l}=o,u=S=>n?S:$e(S)||n===!1||n===0?je(S,1):je(S);let d,g,x,P,G=!1,E=!1;if(re(e)?(g=()=>e.value,G=$e(e)):Je(e)?(g=()=>u(e),G=!0):C(e)?(E=!0,G=e.some(S=>Je(S)||$e(S)),g=()=>e.map(S=>{if(re(S))return S.value;if(Je(S))return u(S);if(R(S))return l?l(S,2):S()})):R(e)?t?g=l?()=>l(e,2):e:g=()=>{if(x){we();try{x()}finally{Pe()}}const S=Ye;Ye=d;try{return l?l(e,3,[P]):e(P)}finally{Ye=S}}:g=xe,t&&n){const S=g,te=n===!0?1/0:n;g=()=>je(S(),te)}const Y=Bi(),Z=()=>{d.stop(),Y&&Y.active&&Eo(Y.effects,d)};if(i&&t){const S=t;t=(...te)=>{const Ne=S(...te);return Z(),Ne}}let I=E?new Array(e.length).fill(no):no;const W=S=>{if(!(!(d.flags&1)||!d.dirty&&!S))if(t){const te=d.run();if(S||n||G||(E?te.some((Ne,Re)=>Me(Ne,I[Re])):Me(te,I))){x&&x();const Ne=Ye;Ye=d;try{const Re=[te,I===no?void 0:E&&I[0]===no?[]:I,P];I=te,l?l(t,3,Re):t(...Re)}finally{Ye=Ne}}}else d.run()};return r&&r(W),d=new Ds(g),d.scheduler=a?()=>a(W,!1):W,P=S=>ha(S,!1,d),x=d.onStop=()=>{const S=io.get(d);if(S){if(l)l(S,4);else for(const te of S)te();io.delete(d)}},t?s?W(!0):I=d.run():a?a(W.bind(null,!0),!0):d.run(),Z.pause=d.pause.bind(d),Z.resume=d.resume.bind(d),Z.stop=Z,Z}function je(e,t=1/0,o){if(t<=0||!j(e)||e.__v_skip||(o=o||new Map,(o.get(e)||0)>=t))return e;if(o.set(e,t),t--,re(e))je(e.value,t,o);else if(C(e))for(let s=0;s{je(s,t,o)});else if(qt(e)){for(const s in e)je(e[s],t,o);for(const s of Object.getOwnPropertySymbols(e))Object.prototype.propertyIsEnumerable.call(e,s)&&je(e[s],t,o)}return e}/** * @vue/runtime-core v3.5.42 * (c) 2018-present Yuxi (Evan) You and Vue contributors * @license MIT **/const xt=[];let Jo=!1;function Xc(e,...t){if(Jo)return;Jo=!0,we();const o=xt.length?xt[xt.length-1].component:null,s=o&&o.appContext.config.warnHandler,n=ma();if(s)rt(s,o,11,[e+t.map(i=>{var a,r;return(r=(a=i.toString)==null?void 0:a.call(i))!=null?r:JSON.stringify(i)}).join(""),o&&o.proxy,n.map(({vnode:i})=>`at <${ii(o,i.type)}>`).join(` `),n]);else{const i=[`[Vue warn]: ${e}`,...t];n.length&&i.push(` `,..._a(n)),console.warn(...i)}Pe(),Jo=!1}function ma(){let e=xt[xt.length-1];if(!e)return[];const t=[];for(;e;){const o=t[0];o&&o.vnode===e?o.recurseCount++:t.push({vnode:e,recurseCount:0});const s=e.component&&e.component.parent;e=s&&s.vnode}return t}function _a(e){const t=[];return e.forEach((o,s)=>{t.push(...s===0?[]:[` -`],...$a(o))}),t}function $a({vnode:e,recurseCount:t}){const o=t>0?`... (${t} recursive calls)`:"",s=e.component?e.component.parent==null:!1,n=` at <${ii(e.component,e.type,s)}`,i=">"+o;return e.props?[n,...va(e.props),i]:[n+i]}function va(e){const t=[],o=Object.keys(e);return o.slice(0,3).forEach(s=>{t.push(...an(s,e[s]))}),o.length>3&&t.push(" ..."),t}function an(e,t,o){return q(t)?(t=JSON.stringify(t),o?t:[`${e}=${t}`]):typeof t=="number"||typeof t=="boolean"||t==null?o?t:[`${e}=${t}`]:re(t)?(t=an(e,H(t.value),!0),o?t:[`${e}=Ref<`,t,">"]):R(t)?[`${e}=fn${t.name?`<${t.name}>`:""}`]:(t=H(t),o?t:[`${e}=`,t])}function rt(e,t,o,s){try{return s?e(...s):e()}catch(n){ao(n,t,o)}}function ve(e,t,o,s){if(R(e)){const n=rt(e,t,o,s);return n&&Ts(n)&&n.catch(i=>{ao(i,t,o)}),n}if(C(e)){const n=[];for(let i=0;i>>1,n=ce[s],i=wt(n);i=wt(o)?ce.push(e):ce.splice(xa(t),0,e),e.flags|=1,cn()}}function cn(){ro||(ro=rn.then(un))}function wa(e){if(!C(e))qe&&e.id===-1?qe.splice(ct+1,0,e):e.flags&1||(lt.push(e),e.flags|=1);else for(let t=0;twt(o)-wt(s));if(lt.length=0,qe){for(let o=0;oe.id==null?e.flags&2?-1:1/0:e.id;function un(e){try{for(Le=0;Le{s._d&&Xn(-1);const i=lo(t),a=We.length;let r;try{r=e(...n)}finally{for(let l=We.length;l>a;l--)gs();lo(i),s._d&&Xn(1)}return r};return s._n=!0,s._c=!0,s._d=!0,s}function Qo(e,t){if(ne===null)return e;const o=vo(ne),s=e.dirs||(e.dirs=[]);for(let n=0;n1)return o&&R(t)?t.call(s&&s.proxy):t}}const ka=Symbol.for("v-scx"),La=()=>kt(ka);function es(e,t,o){return gn(e,t,o)}function gn(e,t,o=V){const{immediate:s,deep:n,flush:i,once:a}=o,r=J({},o),l=t&&s||!t&&i!=="post";let u;if(Ot){if(i==="sync"){const P=La();u=P.__watcherHandles||(P.__watcherHandles=[])}else if(!l){const P=()=>{};return P.stop=xe,P.resume=xe,P.pause=xe,P}}const d=le;r.call=(P,G,E)=>ve(P,d,G,E);let g=!1;i==="post"?r.scheduler=P=>{fe(P,d&&d.suspense)}:i!=="sync"&&(g=!0,r.scheduler=(P,G)=>{G?P():Yo(P)}),r.augmentJob=P=>{t&&(P.flags|=4),g&&(P.flags|=2,d&&(P.id=d.uid,P.i=d))};const x=ba(e,t,r);return Ot&&(u?u.push(x):l&&x()),x}function Sa(e,t,o){const s=this.proxy,n=q(e)?e.includes(".")?hn(s,e):()=>s[e]:e.bind(s,s);let i;R(t)?i=t:(i=t.handler,o=t);const a=At(this),r=gn(n,i.bind(s),o);return a(),r}function hn(e,t){const o=t.split(".");return()=>{let s=e;for(let n=0;ne.__isTeleport,ts=Symbol("_leaveCb");function Ta(e){let t=e[0];if(e.length>1){for(const o of e)if(o.type!==Se){t=o;break}}return t}function bn(e){if(!ns(e))return co(e.type)&&e.children?Ta(e.children):e;if(e.component)return e.component.subTree;const{shapeFlag:t,children:o}=e;if(o){if(t&16)return o[0];if(t&32&&R(o.default))return o.default()}}function os(e,t){if(e.shapeFlag&6&&e.component){e.transition=t;const o=e.component.subTree;os(co(o.type)&&bn(o)||o,t)}else e.shapeFlag&128?(e.ssContent.transition=t.clone(e.ssContent),e.ssFallback.transition=t.clone(e.ssFallback)):e.transition=t}function ss(e,t){return R(e)?J({name:e.name},t,{setup:e}):e}function mn(e){e.ids=[e.ids[0]+e.ids[2]+++"-",0,0]}function _n(e,t){let o;return!!((o=Object.getOwnPropertyDescriptor(e,t))&&!o.configurable)}const po=new WeakMap;function Lt(e,t,o,s,n=!1){if(C(e)){e.forEach((E,Y)=>Lt(E,t&&(C(t)?t[Y]:t),o,s,n));return}if(pt(s)&&!n){s.shapeFlag&512&&s.type.__asyncResolved&&s.component.subTree.component&&Lt(e,t,o,s.component.subTree);return}const i=s.shapeFlag&4?vo(s.component):s.el,a=n?null:i,{i:r,r:l}=e,u=t&&t.r,d=r.refs===V?r.refs={}:r.refs,g=r.setupState,x=H(g),P=g===V?Ss:E=>_n(d,E)?!1:I(x,E),G=(E,Y)=>!(Y&&_n(d,Y));if(u!=null&&u!==l){if($n(t),q(u))d[u]=null,P(u)&&(g[u]=null);else if(re(u)){const E=t;G(u,E.k)&&(u.value=null),E.k&&(d[E.k]=null)}}if(R(l))rt(l,r,12,[a,d]);else{const E=q(l),Y=re(l);if(E||Y){const Z=()=>{if(e.f){const D=E?P(l)?g[l]:d[l]:G()||!e.k?l.value:d[e.k];if(n)C(D)&&Eo(D,i);else if(C(D))D.includes(i)||D.push(i);else if(E)d[l]=[i],P(l)&&(g[l]=d[l]);else{const W=[i];G(l,e.k)&&(l.value=W),e.k&&(d[e.k]=W)}}else E?(d[l]=a,P(l)&&(g[l]=a)):Y&&(G(l,e.k)&&(l.value=a),e.k&&(d[e.k]=a))};if(a){const D=()=>{Z(),po.delete(e)};D.id=-1,po.set(e,D),fe(D,o)}else $n(e),Z()}}}function $n(e){const t=po.get(e);t&&(t.flags|=8,po.delete(e))}Jt().requestIdleCallback,Jt().cancelIdleCallback;const pt=e=>!!e.type.__asyncLoader,ns=e=>e.type.__isKeepAlive;function Na(e,t){vn(e,"a",t)}function Ra(e,t){vn(e,"da",t)}function vn(e,t,o=le){const s=e.__wdc||(e.__wdc=()=>{let n=o;for(;n;){if(n.isDeactivated)return;n=n.parent}return e()});if(uo(t,s,o),o){let n=o.parent;for(;n&&n.parent;)ns(n.parent.vnode)&&Ea(s,t,o,n),n=n.parent}}function Ea(e,t,o,s){const n=uo(t,e,s,!0);xn(()=>{Eo(s[t],n)},o)}function uo(e,t,o=le,s=!1){if(o){const n=o[e]||(o[e]=[]),i=t.__weh||(t.__weh=(...a)=>{we();const r=At(o),l=ve(t,o,e,a);return r(),Pe(),l});return s?n.unshift(i):n.push(i),i}}const Ge=e=>(t,o=le)=>{(!Ot||e==="sp")&&uo(e,(...s)=>t(...s),o)},Aa=Ge("bm"),yn=Ge("m"),Oa=Ge("bu"),Fa=Ge("u"),Ma=Ge("bum"),xn=Ge("um"),Da=Ge("sp"),Ia=Ge("rtg"),Ha=Ge("rtc");function ja(e,t=le){uo("ec",e,t)}const Ga="components";function Wa(e,t){return Va(Ga,e,!0,t)||e}const Ua=Symbol.for("v-ndc");function Va(e,t,o=!0,s=!1){const n=ne||le;if(n){const i=n.type;{const r=ni(i,!1);if(r&&(r===t||r===oe(t)||r===Xt(oe(t))))return i}const a=wn(n[e]||i[e],t)||wn(n.appContext[e],t);return!a&&s?i:a}}function wn(e,t){return e&&(e[t]||e[oe(t)]||e[Xt(oe(t))])}function dt(e,t,o,s){let n;const i=o,a=C(e);if(a||q(e)){const r=a&&Je(e);let l=!1,u=!1;r&&(l=!$e(e),u=Ke(e),e=Qt(e)),n=new Array(e.length);for(let d=0,g=e.length;dt(r,l,void 0,i));else{const r=Object.keys(e);n=new Array(r.length);for(let l=0,u=r.length;l{const i=s.fn(...n);return i&&(i.key=s.key),i}:s.fn)}return e}function St(e,t,o,s,n,i){if(o==null&&(o={}),ne.ce||ne.parent&&pt(ne.parent)&&ne.parent.ce){const u=i!=null&&o.key==null?J({},o,{key:i}):o,d=Object.keys(u).length>0;return t!=="default"&&(u.name=t),A(),bo(ee,null,[ye("slot",u,s)],d?-2:64)}let a=e[t];a&&a._c&&(a._d=!1);const r=We.length;A();let l;try{const u=a&&Pn(a(o)),d=o.key||i||u&&u.key;l=bo(ee,{key:(d&&!me(d)?d:`_${t}`)+(!u&&s?"_fb":"")},u||(s?s():[]),u&&e._===1?64:-2)}catch(u){for(let d=We.length;d>r;d--)gs();throw u}finally{a&&a._c&&(a._d=!0)}return l.scopeId&&(l.slotScopeIds=[l.scopeId+"-s"]),l}function Pn(e){return e.some(t=>hs(t)?!(t.type===Se||t.type===ee&&!Pn(t.children)):!0)?e:null}const is=e=>e?ti(e)?vo(e):is(e.parent):null,Ct=J(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=>is(e.parent),$root:e=>is(e.root),$host:e=>e.ce,$emit:e=>e.emit,$options:e=>Cn(e),$forceUpdate:e=>e.f||(e.f=()=>{Yo(e.update)}),$nextTick:e=>e.n||(e.n=ln.bind(e.proxy)),$watch:e=>Sa.bind(e)}),as=(e,t)=>e!==V&&!e.__isScriptSetup&&I(e,t),Ba={get({_:e},t){if(t==="__v_skip")return!0;const{ctx:o,setupState:s,data:n,props:i,accessCache:a,type:r,appContext:l}=e;if(t[0]!=="$"){const x=a[t];if(x!==void 0)switch(x){case 1:return s[t];case 2:return n[t];case 4:return o[t];case 3:return i[t]}else{if(as(s,t))return a[t]=1,s[t];if(n!==V&&I(n,t))return a[t]=2,n[t];if(I(i,t))return a[t]=3,i[t];if(o!==V&&I(o,t))return a[t]=4,o[t];rs&&(a[t]=0)}}const u=Ct[t];let d,g;if(u)return t==="$attrs"&&ae(e.attrs,"get",""),u(e);if((d=r.__cssModules)&&(d=d[t]))return d;if(o!==V&&I(o,t))return a[t]=4,o[t];if(g=l.config.globalProperties,I(g,t))return g[t]},set({_:e},t,o){const{data:s,setupState:n,ctx:i}=e;return as(n,t)?(n[t]=o,!0):s!==V&&I(s,t)?(s[t]=o,!0):I(e.props,t)||t[0]==="$"&&t.slice(1)in e?!1:(i[t]=o,!0)},has({_:{data:e,setupState:t,accessCache:o,ctx:s,appContext:n,props:i,type:a}},r){let l;return!!(o[r]||e!==V&&r[0]!=="$"&&I(e,r)||as(t,r)||I(i,r)||I(s,r)||I(Ct,r)||I(n.config.globalProperties,r)||(l=a.__cssModules)&&l[r])},defineProperty(e,t,o){return o.get!=null?e._.accessCache[t]=0:I(o,"value")&&this.set(e,t,o.value,null),Reflect.defineProperty(e,t,o)}};function kn(e){return C(e)?e.reduce((t,o)=>(t[o]=null,t),{}):e}let rs=!0;function Ka(e){const t=Cn(e),o=e.proxy,s=e.ctx;rs=!1,t.beforeCreate&&Ln(t.beforeCreate,e,"bc");const{data:n,computed:i,methods:a,watch:r,provide:l,inject:u,created:d,beforeMount:g,mounted:x,beforeUpdate:P,updated:G,activated:E,deactivated:Y,beforeDestroy:Z,beforeUnmount:D,destroyed:W,unmounted:S,render:te,renderTracked:Ne,renderTriggered:Re,errorCaptured:Ze,serverPrefetch:Lo,expose:tt,inheritAttrs:Gt,components:So,directives:Co,filters:ks}=t;if(u&&qa(u,s,null),a)for(const X in a){const K=a[X];R(K)&&(s[X]=K.bind(o))}if(n){const X=n.call(o,o);j(X)&&(e.data=qo(X))}if(rs=!0,i)for(const X in i){const K=i[X],ot=R(K)?K.bind(o,o):R(K.get)?K.get.bind(o,o):xe,To=!R(K)&&R(K.set)?K.set.bind(o):xe,st=Rr({get:ot,set:To});Object.defineProperty(s,X,{enumerable:!0,configurable:!0,get:()=>st.value,set:Ee=>st.value=Ee})}if(r)for(const X in r)Sn(r[X],s,o,X);if(l){const X=R(l)?l.call(o):l;Reflect.ownKeys(X).forEach(K=>{Pa(K,X[K])})}d&&Ln(d,e,"c");function ue(X,K){C(K)?K.forEach(ot=>X(ot.bind(o))):K&&X(K.bind(o))}if(ue(Aa,g),ue(yn,x),ue(Oa,P),ue(Fa,G),ue(Na,E),ue(Ra,Y),ue(ja,Ze),ue(Ha,Ne),ue(Ia,Re),ue(Ma,D),ue(xn,S),ue(Da,Lo),C(tt))if(tt.length){const X=e.exposed||(e.exposed={});tt.forEach(K=>{Object.defineProperty(X,K,{get:()=>o[K],set:ot=>o[K]=ot,enumerable:!0})})}else e.exposed||(e.exposed={});te&&e.render===xe&&(e.render=te),Gt!=null&&(e.inheritAttrs=Gt),So&&(e.components=So),Co&&(e.directives=Co),Lo&&mn(e)}function qa(e,t,o=xe){C(e)&&(e=ls(e));for(const s in e){const n=e[s];let i;j(n)?"default"in n?i=kt(n.from||s,n.default,!0):i=kt(n.from||s):i=kt(n),re(i)?Object.defineProperty(t,s,{enumerable:!0,configurable:!0,get:()=>i.value,set:a=>i.value=a}):t[s]=i}}function Ln(e,t,o){ve(C(e)?e.map(s=>s.bind(t.proxy)):e.bind(t.proxy),t,o)}function Sn(e,t,o,s){let n=s.includes(".")?hn(o,s):()=>o[s];if(q(e)){const i=t[e];R(i)&&es(n,i)}else if(R(e))es(n,e.bind(o));else if(j(e))if(C(e))e.forEach(i=>Sn(i,t,o,s));else{const i=R(e.handler)?e.handler.bind(o):t[e.handler];R(i)&&es(n,i,e)}}function Cn(e){const t=e.type,{mixins:o,extends:s}=t,{mixins:n,optionsCache:i,config:{optionMergeStrategies:a}}=e.appContext,r=i.get(t);let l;return r?l=r:!n.length&&!o&&!s?l=t:(l={},n.length&&n.forEach(u=>fo(l,u,a,!0)),fo(l,t,a)),j(t)&&i.set(t,l),l}function fo(e,t,o,s=!1){const{mixins:n,extends:i}=t;i&&fo(e,i,o,!0),n&&n.forEach(a=>fo(e,a,o,!0));for(const a in t)if(!(s&&a==="expose")){const r=Za[a]||o&&o[a];e[a]=r?r(e[a],t[a]):t[a]}return e}const Za={data:Tn,props:Nn,emits:Nn,methods:Tt,computed:Tt,beforeCreate:pe,created:pe,beforeMount:pe,mounted:pe,beforeUpdate:pe,updated:pe,beforeDestroy:pe,beforeUnmount:pe,destroyed:pe,unmounted:pe,activated:pe,deactivated:pe,errorCaptured:pe,serverPrefetch:pe,components:Tt,directives:Tt,watch:Ja,provide:Tn,inject:Xa};function Tn(e,t){return t?e?function(){return J(R(e)?e.call(this,this):e,R(t)?t.call(this,this):t)}:t:e}function Xa(e,t){return Tt(ls(e),ls(t))}function ls(e){if(C(e)){const t={};for(let o=0;ot==="modelValue"||t==="model-value"?e.modelModifiers:e[`${t}Modifiers`]||e[`${oe(t)}Modifiers`]||e[`${be(t)}Modifiers`];function tr(e,t,...o){if(e.isUnmounted)return;const s=e.vnode.props||V;let n=o;const i=t.startsWith("update:"),a=i&&er(s,t.slice(7));a&&(a.trim&&(n=o.map(d=>q(d)?d.trim():d)),a.number&&(n=n.map(Ii)));let r,l=s[r=Oo(t)]||s[r=Oo(oe(t))];!l&&i&&(l=s[r=Oo(be(t))]),l&&ve(l,e,6,n);const u=s[r+"Once"];if(u){if(!e.emitted)e.emitted={};else if(e.emitted[r])return;e.emitted[r]=!0,ve(u,e,6,n)}}const or=new WeakMap;function En(e,t,o=!1){const s=o?or:t.emitsCache,n=s.get(e);if(n!==void 0)return n;const i=e.emits;let a={},r=!1;if(!R(e)){const l=u=>{const d=En(u,t,!0);d&&(r=!0,J(a,d))};!o&&t.mixins.length&&t.mixins.forEach(l),e.extends&&l(e.extends),e.mixins&&e.mixins.forEach(l)}return!i&&!r?(j(e)&&s.set(e,null),null):(C(i)?i.forEach(l=>a[l]=null):J(a,i),j(e)&&s.set(e,a),a)}function go(e,t){return!e||!zt(t)?!1:(t=t.slice(2),t=t==="Once"?t:t.replace(/Once$/,""),I(e,t[0].toLowerCase()+t.slice(1))||I(e,be(t))||I(e,t))}function Jc(){}function An(e){const{type:t,vnode:o,proxy:s,withProxy:n,propsOptions:[i],slots:a,attrs:r,emit:l,render:u,renderCache:d,props:g,data:x,setupState:P,ctx:G,inheritAttrs:E}=e,Y=lo(e);let Z,D;try{if(o.shapeFlag&4){const S=n||s,te=S;Z=Ce(u.call(te,S,d,g,P,x,G)),D=r}else{const S=t;Z=Ce(S.length>1?S(g,{attrs:r,slots:a,emit:l}):S(g,null)),D=t.props?r:sr(r)}}catch(S){We.length=0,ao(S,e,1),Z=ye(Se)}let W=Z;if(D&&E!==!1){const S=Object.keys(D),{shapeFlag:te}=W;S.length&&te&7&&(i&&S.some(Bt)&&(D=nr(D,i)),W=ft(W,D,!1,!0))}if(o.dirs&&(W=ft(W,null,!1,!0),W.dirs=W.dirs?W.dirs.concat(o.dirs):o.dirs),o.transition){const S=co(W.type)&&bn(W)||W;os(S,o.transition)}return Z=W,lo(Y),Z}const sr=e=>{let t;for(const o in e)(o==="class"||o==="style"||zt(o))&&((t||(t={}))[o]=e[o]);return t},nr=(e,t)=>{const o={};for(const s in e)(!Bt(s)||!(s.slice(9)in t))&&(o[s]=e[s]);return o};function ir(e,t,o){const{props:s,children:n,component:i}=e,{props:a,children:r,patchFlag:l}=t,u=i.emitsOptions;if(t.dirs||t.transition)return!0;if(o&&l>=0){if(l&1024)return!0;if(l&16)return s?On(s,a,u):!!a;if(l&8){const d=t.dynamicProps;for(let g=0;gObject.create(Mn),In=e=>Object.getPrototypeOf(e)===Mn;function rr(e,t,o,s=!1){const n={},i=Dn();e.propsDefaults=Object.create(null),Hn(e,t,n,i);for(const a in e.propsOptions[0])a in n||(n[a]=void 0);o?e.props=s?n:pa(n):e.type.props?e.props=n:e.props=i,e.attrs=i}function lr(e,t,o,s){const{props:n,attrs:i,vnode:{patchFlag:a}}=e,r=H(n),[l]=e.propsOptions;let u=!1;if((s||a>0)&&!(a&16)){if(a&8){const d=e.vnode.dynamicProps;for(let g=0;g{l=!0;const[x,P]=jn(g,t,!0);J(a,x),P&&r.push(...P)};!o&&t.mixins.length&&t.mixins.forEach(d),e.extends&&d(e.extends),e.mixins&&e.mixins.forEach(d)}if(!i&&!l)return j(e)&&s.set(e,nt),nt;if(C(i))for(let d=0;de==="_"||e==="_ctx"||e==="$stable",ds=e=>C(e)?e.map(Ce):[Ce(e)],pr=(e,t,o)=>{if(t._n)return t;const s=Pt((...n)=>ds(t(...n)),o);return s._c=!1,s},Wn=(e,t,o)=>{const s=e._ctx;for(const n in e){if(ps(n))continue;const i=e[n];if(R(i))t[n]=pr(n,i,s);else if(i!=null){const a=ds(i);t[n]=()=>a}}},Un=(e,t)=>{const o=ds(t);e.slots.default=()=>o},Vn=(e,t,o)=>{for(const s in t)(o||!ps(s))&&(e[s]=t[s])},dr=(e,t,o)=>{const s=e.slots=Dn();if(e.vnode.shapeFlag&32){const n=t._;n?(Vn(s,t,o),o&&Rs(s,"_",n,!0)):Wn(t,s)}else t&&Un(e,t)},ur=(e,t,o)=>{const{vnode:s,slots:n}=e;let i=!0,a=V;if(s.shapeFlag&32){const r=t._;r?o&&r===1?i=!1:Vn(n,t,o):(i=!t.$stable,Wn(t,n)),a=t}else t&&(Un(e,t),a={default:1});if(i)for(const r in n)!ps(r)&&a[r]==null&&delete n[r]},fe=mr;function fr(e){return gr(e)}function gr(e,t){const o=Jt();o.__VUE__=!0;const{insert:s,remove:n,patchProp:i,createElement:a,createText:r,createComment:l,setText:u,setElementText:d,parentNode:g,nextSibling:x,setScopeId:P=xe,insertStaticContent:G}=e,E=(c,p,f,_=null,m=null,h=null,y=void 0,v=null,$=!!p.dynamicChildren)=>{if(c===p)return;c&&!Rt(c,p)&&(_=No(c),Ee(c,m,h,!0),c=null),p.patchFlag===-2&&($=!1,p.dynamicChildren=null);const{type:b,ref:L,shapeFlag:w}=p;switch(b){case ho:Y(c,p,f,_);break;case Se:Z(c,p,f,_);break;case fs:c==null&&D(p,f,_,y);break;case ee:So(c,p,f,_,m,h,y,v,$);break;default:w&1?te(c,p,f,_,m,h,y,v,$):w&6?Co(c,p,f,_,m,h,y,v,$):(w&64||w&128)&&b.process(c,p,f,_,m,h,y,v,$,Ut)}L!=null&&m?Lt(L,c&&c.ref,h,p||c,!p):L==null&&c&&c.ref!=null&&Lt(c.ref,null,h,c,!0)},Y=(c,p,f,_)=>{if(c==null)s(p.el=r(p.children),f,_);else{const m=p.el=c.el;p.children!==c.children&&u(m,p.children)}},Z=(c,p,f,_)=>{c==null?s(p.el=l(p.children||""),f,_):p.el=c.el},D=(c,p,f,_)=>{[c.el,c.anchor]=G(c.children,p,f,_,c.el,c.anchor)},W=({el:c,anchor:p},f,_)=>{let m;for(;c&&c!==p;)m=x(c),s(c,f,_),c=m;s(p,f,_)},S=({el:c,anchor:p})=>{let f;for(;c&&c!==p;)f=x(c),n(c),c=f;n(p)},te=(c,p,f,_,m,h,y,v,$)=>{if(p.type==="svg"?y="svg":p.type==="math"&&(y="mathml"),c==null)Ne(p,f,_,m,h,y,v,$);else{const b=c.el&&c.el._isVueCE?c.el:null;try{b&&b._beginPatch(),Lo(c,p,m,h,y,v,$)}finally{b&&b._endPatch()}}},Ne=(c,p,f,_,m,h,y,v)=>{let $,b;const{props:L,shapeFlag:w,transition:k,dirs:N}=c;if($=c.el=a(c.type,h,L&&L.is,L),w&8?d($,c.children):w&16&&Ze(c.children,$,null,_,m,us(c,h),y,v),N&&Qe(c,null,_,"created"),Re($,c,c.scopeId,y,_),L){for(const z in L)z!=="value"&&!bt(z)&&i($,z,null,L[z],h,_);"value"in L&&i($,"value",null,L.value,h),(b=L.onVnodeBeforeMount)&&Te(b,_,c)}N&&Qe(c,null,_,"beforeMount");const M=hr(m,k);M&&k.beforeEnter($),s($,p,f),((b=L&&L.onVnodeMounted)||M||N)&&fe(()=>{try{b&&Te(b,_,c),M&&k.enter($),N&&Qe(c,null,_,"mounted")}finally{}},m)},Re=(c,p,f,_,m)=>{if(f&&P(c,f),_)for(let h=0;h<_.length;h++)P(c,_[h]);if(m){let h=m.subTree;if(p===h||Zn(h.type)&&(h.ssContent===p||h.ssFallback===p)){const y=m.vnode;Re(c,y,y.scopeId,y.slotScopeIds,m.parent)}}},Ze=(c,p,f,_,m,h,y,v,$=0)=>{for(let b=$;b{const v=p.el=c.el;let{patchFlag:$,dynamicChildren:b,dirs:L}=p;$|=c.patchFlag&16;const w=c.props||V,k=p.props||V;let N;if(f&&et(f,!1),(N=k.onVnodeBeforeUpdate)&&Te(N,f,p,c),L&&Qe(p,c,f,"beforeUpdate"),f&&et(f,!0),b&&(!c.dynamicChildren||c.dynamicChildren.length!==b.length)&&($=0,y=!1,b=null),(w.innerHTML&&k.innerHTML==null||w.textContent&&k.textContent==null)&&d(v,""),b?tt(c.dynamicChildren,b,v,f,_,us(p,m),h):y||K(c,p,v,null,f,_,us(p,m),h,!1),$>0){if($&16)Gt(v,w,k,f,m);else if($&2&&w.class!==k.class&&i(v,"class",null,k.class,m),$&4&&i(v,"style",w.style,k.style,m),$&8){const M=p.dynamicProps;for(let z=0;z{N&&Te(N,f,p,c),L&&Qe(p,c,f,"updated")},_)},tt=(c,p,f,_,m,h,y)=>{for(let v=0;v{if(p!==f){if(p!==V)for(const h in p)!bt(h)&&!(h in f)&&i(c,h,p[h],null,m,_);for(const h in f){if(bt(h))continue;const y=f[h],v=p[h];y!==v&&h!=="value"&&i(c,h,v,y,m,_)}"value"in f&&i(c,"value",p.value,f.value,m)}},So=(c,p,f,_,m,h,y,v,$)=>{const b=p.el=c?c.el:r(""),L=p.anchor=c?c.anchor:r("");let{patchFlag:w,dynamicChildren:k,slotScopeIds:N}=p;N&&(v=v?v.concat(N):N),c==null?(s(b,f,_),s(L,f,_),Ze(p.children||[],f,L,m,h,y,v,$)):w>0&&w&64&&k&&c.dynamicChildren&&c.dynamicChildren.length===k.length?(tt(c.dynamicChildren,k,f,m,h,y,v),(p.key!=null||m&&p===m.subTree)&&zn(c,p,!0)):K(c,p,f,L,m,h,y,v,$)},Co=(c,p,f,_,m,h,y,v,$)=>{p.slotScopeIds=v,c==null?p.shapeFlag&512?m.ctx.activate(p,f,_,y,$):ks(p,f,_,m,h,y,$):Ci(c,p,$)},ks=(c,p,f,_,m,h,y)=>{const v=c.component=wr(c,_,m);if(ns(c)&&(v.ctx.renderer=Ut),Pr(v,!1,y),v.asyncDep){if(m&&m.registerDep(v,ue,y),!c.el){const $=v.subTree=ye(Se);Z(null,$,p,f),c.placeholder=$.el}}else ue(v,c,p,f,m,h,y)},Ci=(c,p,f)=>{const _=p.component=c.component;if(ir(c,p,f))if(_.asyncDep&&!_.asyncResolved){X(_,p,f);return}else _.next=p,_.update();else p.el=c.el,_.vnode=p},ue=(c,p,f,_,m,h,y)=>{const v=()=>{if(c.isMounted){let{next:w,bu:k,u:N,parent:M,vnode:z}=c;{const Oe=Bn(c);if(Oe){w&&(w.el=z.el,X(c,w,y)),Oe.asyncDep.then(()=>{fe(()=>{c.isUnmounted||b()},m)});return}}let U=w,Q;et(c,!1),w?(w.el=z.el,X(c,w,y)):w=z,k&&Fo(k),(Q=w.props&&w.props.onVnodeBeforeUpdate)&&Te(Q,M,w,z),et(c,!0);const ie=An(c),Ae=c.subTree;c.subTree=ie,E(Ae,ie,g(Ae.el),No(Ae),c,m,h),w.el=ie.el,U===null&&ar(c,ie.el),N&&fe(N,m),(Q=w.props&&w.props.onVnodeUpdated)&&fe(()=>Te(Q,M,w,z),m)}else{let w;const{el:k,props:N}=p,{bm:M,m:z,parent:U,root:Q,type:ie}=c,Ae=pt(p);et(c,!1),M&&Fo(M),!Ae&&(w=N&&N.onVnodeBeforeMount)&&Te(w,U,p),et(c,!0);{Q.ce&&Q.ce._hasShadowRoot()&&Q.ce._injectChildStyle(ie,c.parent?c.parent.type:void 0);const Oe=c.subTree=An(c);E(null,Oe,f,_,c,m,h),p.el=Oe.el}if(z&&fe(z,m),!Ae&&(w=N&&N.onVnodeMounted)){const Oe=p;fe(()=>Te(w,U,Oe),m)}(p.shapeFlag&256||U&&pt(U.vnode)&&U.vnode.shapeFlag&256)&&c.a&&fe(c.a,m),c.isMounted=!0,p=f=_=null}};c.scope.on();const $=c.effect=new Is(v);c.scope.off();const b=c.update=$.run.bind($),L=c.job=$.runIfDirty.bind($);L.i=c,L.id=c.uid,$.scheduler=()=>Yo(L),et(c,!0),b()},X=(c,p,f)=>{p.component=c;const _=c.vnode.props;c.vnode=p,c.next=null,lr(c,p.props,_,f),ur(c,p.children,f),we(),pn(c),Pe()},K=(c,p,f,_,m,h,y,v,$=!1)=>{const b=c&&c.children,L=c?c.shapeFlag:0,w=p.children,{patchFlag:k,shapeFlag:N}=p;if(k>0){if(k&128){To(b,w,f,_,m,h,y,v,$);return}else if(k&256){ot(b,w,f,_,m,h,y,v,$);return}}N&8?(L&16&&Wt(b,m,h),w!==b&&d(f,w)):L&16?N&16?To(b,w,f,_,m,h,y,v,$):Wt(b,m,h,!0):(L&8&&d(f,""),N&16&&Ze(w,f,_,m,h,y,v,$))},ot=(c,p,f,_,m,h,y,v,$)=>{c=c||nt,p=p||nt;const b=c.length,L=p.length,w=Math.min(b,L);let k;for(k=0;kL?Wt(c,m,h,!0,!1,w):Ze(p,f,_,m,h,y,v,$,w)},To=(c,p,f,_,m,h,y,v,$)=>{let b=0;const L=p.length;let w=c.length-1,k=L-1;for(;b<=w&&b<=k;){const N=c[b],M=p[b]=$?Ue(p[b]):Ce(p[b]);if(Rt(N,M))E(N,M,f,null,m,h,y,v,$);else break;b++}for(;b<=w&&b<=k;){const N=c[w],M=p[k]=$?Ue(p[k]):Ce(p[k]);if(Rt(N,M))E(N,M,f,null,m,h,y,v,$);else break;w--,k--}if(b>w){if(b<=k){const N=k+1,M=Nk)for(;b<=w;)Ee(c[b],m,h,!0),b++;else{const N=b,M=b,z=new Map;for(b=M;b<=k;b++){const he=p[b]=$?Ue(p[b]):Ce(p[b]);he.key!=null&&z.set(he.key,b)}let U,Q=0;const ie=k-M+1;let Ae=!1,Oe=0;const Vt=new Array(ie);for(b=0;b=ie){Ee(he,m,h,!0);continue}let Fe;if(he.key!=null)Fe=z.get(he.key);else for(U=M;U<=k;U++)if(Vt[U-M]===0&&Rt(he,p[U])){Fe=U;break}Fe===void 0?Ee(he,m,h,!0):(Vt[Fe-M]=b+1,Fe>=Oe?Oe=Fe:Ae=!0,E(he,p[Fe],f,null,m,h,y,v,$),Q++)}const Ri=Ae?br(Vt):nt;for(U=Ri.length-1,b=ie-1;b>=0;b--){const he=M+b,Fe=p[he],Ei=p[he+1],Ai=he+1{const{el:h,type:y,transition:v,children:$,shapeFlag:b}=c;if(b&6){st(c.component.subTree,p,f,_);return}if(b&128){c.suspense.move(p,f,_);return}if(b&64){y.move(c,p,f,Ut);return}if(y===ee){s(h,p,f);for(let w=0;w<$.length;w++)st($[w],p,f,_);s(c.anchor,p,f);return}if(y===fs){W(c,p,f);return}if(_!==2&&b&1&&v)if(_===0)v.persisted&&!h[ts]?s(h,p,f):(v.beforeEnter(h),s(h,p,f),fe(()=>v.enter(h),m));else{const{leave:w,delayLeave:k,afterLeave:N}=v,M=()=>{c.ctx.isUnmounted?n(h):s(h,p,f)},z=()=>{const U=h._isLeaving||!!h[ts];h._isLeaving&&h[ts](!0),v.persisted&&!U?M():w(h,()=>{M(),N&&N()})};k?k(h,M,z):z()}else s(h,p,f)},Ee=(c,p,f,_=!1,m=!1)=>{const{type:h,props:y,ref:v,children:$,dynamicChildren:b,shapeFlag:L,patchFlag:w,dirs:k,cacheIndex:N,memo:M}=c;if(w===-2&&(m=!1),v!=null&&(we(),Lt(v,null,f,c,!0),Pe()),N!=null&&(p.renderCache[N]=void 0),L&256){p.ctx.deactivate(c);return}const z=L&1&&k,U=!pt(c);let Q;if(U&&(Q=y&&y.onVnodeBeforeUnmount)&&Te(Q,p,c),L&6)Kc(c.component,f,_);else{if(L&128){c.suspense.unmount(f,_);return}z&&Qe(c,null,p,"beforeUnmount"),L&64?c.type.remove(c,p,f,Ut,_):b&&!b.hasOnce&&(h!==ee||w>0&&w&64)?Wt(b,p,f,!1,!0):(h===ee&&w&384||!m&&L&16)&&Wt($,p,f),_&&Ti(c)}const ie=M!=null&&N==null;(U&&(Q=y&&y.onVnodeUnmounted)||z||ie)&&fe(()=>{Q&&Te(Q,p,c),z&&Qe(c,null,p,"unmounted"),ie&&(c.el=null)},f)},Ti=c=>{const{type:p,el:f,anchor:_,transition:m}=c;if(p===ee){Bc(f,_);return}if(p===fs){S(c);return}const h=()=>{n(f),m&&!m.persisted&&m.afterLeave&&m.afterLeave()};if(c.shapeFlag&1&&m&&!m.persisted){const{leave:y,delayLeave:v}=m,$=()=>y(f,h);v?v(c.el,h,$):$()}else h()},Bc=(c,p)=>{let f;for(;c!==p;)f=x(c),n(c),c=f;n(p)},Kc=(c,p,f)=>{const{bum:_,scope:m,job:h,subTree:y,um:v,m:$,a:b}=c;Kn($),Kn(b),_&&Fo(_),m.stop(),h&&(h.flags|=8,Ee(y,c,p,f)),v&&fe(v,p),fe(()=>{c.isUnmounted=!0},p)},Wt=(c,p,f,_=!1,m=!1,h=0)=>{for(let y=h;y{if(c.shapeFlag&6)return No(c.component.subTree);if(c.shapeFlag&128)return c.suspense.next();const p=x(c.anchor||c.el),f=p&&p[Ca];return f?x(f):p};let Ls=!1;const Ni=(c,p,f)=>{let _;c==null?p._vnode&&(Ee(p._vnode,null,null,!0),_=p._vnode.component):E(p._vnode||null,c,p,null,null,null,f),p._vnode=c,Ls||(Ls=!0,pn(_),dn(),Ls=!1)},Ut={p:E,um:Ee,m:st,r:Ti,mt:ks,mc:Ze,pc:K,pbc:tt,n:No,o:e};return{render:Ni,hydrate:void 0,createApp:Qa(Ni)}}function us({type:e,props:t},o){return o==="svg"&&e==="foreignObject"||o==="mathml"&&e==="annotation-xml"&&t&&t.encoding&&t.encoding.includes("html")?void 0:o}function et({effect:e,job:t},o){o?(e.flags|=32,t.flags|=4):(e.flags&=-33,t.flags&=-5)}function hr(e,t){return(!e||e&&!e.pendingBranch)&&t&&!t.persisted}function zn(e,t,o=!1){const s=e.children,n=t.children;if(C(s)&&C(n))for(let i=0;i>1,e[o[r]]0&&(t[s]=o[i-1]),o[i]=s)}}for(i=o.length,a=o[i-1];i-- >0;)o[i]=a,a=t[a];return o}function Bn(e){const t=e.subTree.component;if(t)return t.asyncDep&&!t.asyncResolved?t:Bn(t)}function Kn(e){if(e)for(let t=0;te.__isSuspense;function mr(e,t){t&&t.pendingBranch?C(e)?t.effects.push(...e):t.effects.push(e):wa(e)}const ee=Symbol.for("v-fgt"),ho=Symbol.for("v-txt"),Se=Symbol.for("v-cmt"),fs=Symbol.for("v-stc"),We=[];let ge=null;function A(e=!1){We.push(ge=e?null:[])}function gs(){We.pop(),ge=We[We.length-1]||null}let Nt=1;function Xn(e,t=!1){Nt+=e,e<0&&ge&&t&&(ge.hasOnce=!0)}function Jn(e){return e.dynamicChildren=Nt>0?ge||nt:null,gs(),Nt>0&&ge&&ge.push(e),e}function O(e,t,o,s,n,i){return Jn(T(e,t,o,s,n,i,!0))}function bo(e,t,o,s,n){return Jn(ye(e,t,o,s,n,!0))}function hs(e){return e?e.__v_isVNode===!0:!1}function Rt(e,t){return e.type===t.type&&e.key===t.key}const Yn=({key:e})=>e??null,mo=({ref:e,ref_key:t,ref_for:o})=>(typeof e=="number"&&(e=""+e),e!=null?q(e)||re(e)||R(e)?{i:ne,r:e,k:t,f:!!o}:e:null);function T(e,t=null,o=null,s=0,n=null,i=e===ee?0:1,a=!1,r=!1){const l={__v_isVNode:!0,__v_skip:!0,type:e,props:t,key:t&&Yn(t),ref:t&&mo(t),scopeId:fn,slotScopeIds:null,children:o,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:i,patchFlag:s,dynamicProps:n,dynamicChildren:null,appContext:null,ctx:ne};return r?(_o(l,o),i&128&&e.normalize(l)):o&&(l.shapeFlag|=q(o)?8:16),Nt>0&&!a&&ge&&(l.patchFlag>0||i&6)&&l.patchFlag!==32&&ge.push(l),l}const ye=_r;function _r(e,t=null,o=null,s=0,n=null,i=!1){if((!e||e===Ua)&&(e=Se),hs(e)){const r=ft(e,t,!0);return o&&_o(r,o),Nt>0&&!i&&ge&&(r.shapeFlag&6?ge[ge.indexOf(e)]=r:ge.push(r)),r.patchFlag=-2,r}if(Nr(e)&&(e=e.__vccOpts),t){t=$r(t);let{class:r,style:l}=t;r&&!q(r)&&(t.class=Be(r)),j(l)&&(Xo(l)&&!C(l)&&(l=J({},l)),t.style=Mo(l))}const a=q(e)?1:Zn(e)?128:co(e)?64:j(e)?4:R(e)?2:0;return T(e,t,o,s,n,a,i,!0)}function $r(e){return e?Xo(e)||In(e)?J({},e):e:null}function ft(e,t,o=!1,s=!1){const{props:n,ref:i,patchFlag:a,children:r,transition:l}=e,u=t?vr(n||{},t):n,d={__v_isVNode:!0,__v_skip:!0,type:e.type,props:u,key:u&&Yn(u),ref:t&&t.ref?o&&i?C(i)?i.concat(mo(t)):[i,mo(t)]:mo(t):i,scopeId:e.scopeId,slotScopeIds:e.slotScopeIds,children:r,target:e.target,targetStart:e.targetStart,targetAnchor:e.targetAnchor,staticCount:e.staticCount,shapeFlag:e.shapeFlag,patchFlag:t&&e.type!==ee?a===-1?16:a|16:a,dynamicProps:e.dynamicProps,dynamicChildren:e.dynamicChildren,appContext:e.appContext,dirs:e.dirs,transition:l,component:e.component,suspense:e.suspense,ssContent:e.ssContent&&ft(e.ssContent),ssFallback:e.ssFallback&&ft(e.ssFallback),placeholder:e.placeholder,el:e.el,anchor:e.anchor,ctx:e.ctx,ce:e.ce};return l&&s&&os(d,l.clone(d)),d}function gt(e=" ",t=0){return ye(ho,null,e,t)}function de(e="",t=!1){return t?(A(),bo(Se,null,e)):ye(Se,null,e)}function Ce(e){return e==null||typeof e=="boolean"?ye(Se):C(e)?ye(ee,null,e.slice()):hs(e)?Ue(e):ye(ho,null,String(e))}function Ue(e){return e.el===null&&e.patchFlag!==-1||e.memo?e:ft(e)}function _o(e,t){let o=0;const{shapeFlag:s}=e;if(t==null)t=null;else if(C(t))o=16;else if(typeof t=="object")if(s&65){const n=t.default;n&&(n._c&&(n._d=!1),_o(e,n()),n._c&&(n._d=!0));return}else{o=32;const n=t._;!n&&!In(t)?t._ctx=ne:n===3&&ne&&(ne.slots._===1?t._=1:(t._=2,e.patchFlag|=1024))}else if(R(t)){if(s&65){_o(e,{default:t});return}t={default:t,_ctx:ne},o=32}else t=String(t),s&64?(o=16,t=[gt(t)]):o=8;e.children=t,e.shapeFlag|=o}function vr(...e){const t={};for(let o=0;ole||ne;let $o,Et;{const e=Jt(),t=(o,s)=>{let n;return(n=e[o])||(n=e[o]=[]),n.push(s),i=>{n.length>1?n.forEach(a=>a(i)):n[0](i)}};$o=t("__VUE_INSTANCE_SETTERS__",o=>le=o),Et=t("__VUE_SSR_SETTERS__",o=>Ot=o)}const At=e=>{const t=le;return $o(e),e.scope.on(),()=>{e.scope.off(),$o(t)}},ei=()=>{le&&le.scope.off(),$o(null)};function ti(e){return e.vnode.shapeFlag&4}let Ot=!1;function Pr(e,t=!1,o=!1){t&&Et(t);const{props:s,children:n}=e.vnode,i=ti(e);rr(e,s,i,t),dr(e,n,o||t);const a=i?kr(e,t):void 0;return t&&Et(!1),a}function kr(e,t){const o=e.type;e.accessCache=Object.create(null),e.proxy=new Proxy(e.ctx,Ba);const{setup:s}=o;if(s){we();const n=e.setupContext=s.length>1?Sr(e):null,i=At(e),a=rt(s,e,0,[e.props,n]),r=Ts(a);if(Pe(),i(),(r||e.sp)&&!pt(e)&&mn(e),r){if(a.then(ei,ei),t)return a.then(l=>{Et(!0);try{oi(e,l,t)}finally{Et(!1)}}).catch(l=>{ao(l,e,0)});e.asyncDep=a}else oi(e,a)}else si(e)}function oi(e,t,o){R(t)?e.type.__ssrInlineRender?e.ssrRender=t:e.render=t:j(t)&&(e.setupState=nn(t)),si(e)}function si(e,t,o){const s=e.type;e.render||(e.render=s.render||xe);{const n=At(e);we();try{Ka(e)}finally{Pe(),n()}}}const Lr={get(e,t){return ae(e,"get",""),e[t]}};function Sr(e){const t=o=>{e.exposed=o||{}};return{attrs:new Proxy(e.attrs,Lr),slots:e.slots,emit:e.emit,expose:t}}function vo(e){return e.exposed?e.exposeProxy||(e.exposeProxy=new Proxy(nn(da(e.exposed)),{get(t,o){if(o in t)return t[o];if(o in Ct)return Ct[o](e)},has(t,o){return o in t||o in Ct}})):e.proxy}const Cr=/(?:^|[-_])\w/g,Tr=e=>e.replace(Cr,t=>t.toUpperCase()).replace(/[-_]/g,"");function ni(e,t=!0){return R(e)?e.displayName||e.name:e.name||t&&e.__name}function ii(e,t,o=!1){let s=ni(t);if(!s&&t.__file){const n=t.__file.match(/([^/\\]+)\.\w+$/);n&&(s=n[1])}if(!s&&e){const n=i=>{for(const a in i)if(i[a]===t)return a};s=n(e.components)||e.parent&&n(e.parent.type.components)||n(e.appContext.components)}return s?Tr(s):o?"App":"Anonymous"}function Nr(e){return R(e)&&"__vccOpts"in e}const Rr=(e,t)=>ga(e,t,Ot),Er="3.5.42";/** +`],...$a(o))}),t}function $a({vnode:e,recurseCount:t}){const o=t>0?`... (${t} recursive calls)`:"",s=e.component?e.component.parent==null:!1,n=` at <${ii(e.component,e.type,s)}`,i=">"+o;return e.props?[n,...va(e.props),i]:[n+i]}function va(e){const t=[],o=Object.keys(e);return o.slice(0,3).forEach(s=>{t.push(...an(s,e[s]))}),o.length>3&&t.push(" ..."),t}function an(e,t,o){return q(t)?(t=JSON.stringify(t),o?t:[`${e}=${t}`]):typeof t=="number"||typeof t=="boolean"||t==null?o?t:[`${e}=${t}`]:re(t)?(t=an(e,H(t.value),!0),o?t:[`${e}=Ref<`,t,">"]):R(t)?[`${e}=fn${t.name?`<${t.name}>`:""}`]:(t=H(t),o?t:[`${e}=`,t])}function rt(e,t,o,s){try{return s?e(...s):e()}catch(n){ao(n,t,o)}}function ve(e,t,o,s){if(R(e)){const n=rt(e,t,o,s);return n&&Ts(n)&&n.catch(i=>{ao(i,t,o)}),n}if(C(e)){const n=[];for(let i=0;i>>1,n=ce[s],i=wt(n);i=wt(o)?ce.push(e):ce.splice(xa(t),0,e),e.flags|=1,cn()}}function cn(){ro||(ro=rn.then(un))}function wa(e){if(!C(e))qe&&e.id===-1?qe.splice(ct+1,0,e):e.flags&1||(lt.push(e),e.flags|=1);else for(let t=0;twt(o)-wt(s));if(lt.length=0,qe){for(let o=0;oe.id==null?e.flags&2?-1:1/0:e.id;function un(e){try{for(Le=0;Le{s._d&&Xn(-1);const i=lo(t),a=We.length;let r;try{r=e(...n)}finally{for(let l=We.length;l>a;l--)gs();lo(i),s._d&&Xn(1)}return r};return s._n=!0,s._c=!0,s._d=!0,s}function Qo(e,t){if(ne===null)return e;const o=vo(ne),s=e.dirs||(e.dirs=[]);for(let n=0;n1)return o&&R(t)?t.call(s&&s.proxy):t}}const ka=Symbol.for("v-scx"),La=()=>kt(ka);function es(e,t,o){return gn(e,t,o)}function gn(e,t,o=V){const{immediate:s,deep:n,flush:i,once:a}=o,r=J({},o),l=t&&s||!t&&i!=="post";let u;if(Ot){if(i==="sync"){const P=La();u=P.__watcherHandles||(P.__watcherHandles=[])}else if(!l){const P=()=>{};return P.stop=xe,P.resume=xe,P.pause=xe,P}}const d=le;r.call=(P,G,E)=>ve(P,d,G,E);let g=!1;i==="post"?r.scheduler=P=>{fe(P,d&&d.suspense)}:i!=="sync"&&(g=!0,r.scheduler=(P,G)=>{G?P():Yo(P)}),r.augmentJob=P=>{t&&(P.flags|=4),g&&(P.flags|=2,d&&(P.id=d.uid,P.i=d))};const x=ba(e,t,r);return Ot&&(u?u.push(x):l&&x()),x}function Sa(e,t,o){const s=this.proxy,n=q(e)?e.includes(".")?hn(s,e):()=>s[e]:e.bind(s,s);let i;R(t)?i=t:(i=t.handler,o=t);const a=At(this),r=gn(n,i.bind(s),o);return a(),r}function hn(e,t){const o=t.split(".");return()=>{let s=e;for(let n=0;ne.__isTeleport,ts=Symbol("_leaveCb");function Ta(e){let t=e[0];if(e.length>1){for(const o of e)if(o.type!==Se){t=o;break}}return t}function bn(e){if(!ns(e))return co(e.type)&&e.children?Ta(e.children):e;if(e.component)return e.component.subTree;const{shapeFlag:t,children:o}=e;if(o){if(t&16)return o[0];if(t&32&&R(o.default))return o.default()}}function os(e,t){if(e.shapeFlag&6&&e.component){e.transition=t;const o=e.component.subTree;os(co(o.type)&&bn(o)||o,t)}else e.shapeFlag&128?(e.ssContent.transition=t.clone(e.ssContent),e.ssFallback.transition=t.clone(e.ssFallback)):e.transition=t}function ss(e,t){return R(e)?J({name:e.name},t,{setup:e}):e}function mn(e){e.ids=[e.ids[0]+e.ids[2]+++"-",0,0]}function _n(e,t){let o;return!!((o=Object.getOwnPropertyDescriptor(e,t))&&!o.configurable)}const po=new WeakMap;function Lt(e,t,o,s,n=!1){if(C(e)){e.forEach((E,Y)=>Lt(E,t&&(C(t)?t[Y]:t),o,s,n));return}if(pt(s)&&!n){s.shapeFlag&512&&s.type.__asyncResolved&&s.component.subTree.component&&Lt(e,t,o,s.component.subTree);return}const i=s.shapeFlag&4?vo(s.component):s.el,a=n?null:i,{i:r,r:l}=e,u=t&&t.r,d=r.refs===V?r.refs={}:r.refs,g=r.setupState,x=H(g),P=g===V?Ss:E=>_n(d,E)?!1:D(x,E),G=(E,Y)=>!(Y&&_n(d,Y));if(u!=null&&u!==l){if($n(t),q(u))d[u]=null,P(u)&&(g[u]=null);else if(re(u)){const E=t;G(u,E.k)&&(u.value=null),E.k&&(d[E.k]=null)}}if(R(l))rt(l,r,12,[a,d]);else{const E=q(l),Y=re(l);if(E||Y){const Z=()=>{if(e.f){const I=E?P(l)?g[l]:d[l]:G()||!e.k?l.value:d[e.k];if(n)C(I)&&Eo(I,i);else if(C(I))I.includes(i)||I.push(i);else if(E)d[l]=[i],P(l)&&(g[l]=d[l]);else{const W=[i];G(l,e.k)&&(l.value=W),e.k&&(d[e.k]=W)}}else E?(d[l]=a,P(l)&&(g[l]=a)):Y&&(G(l,e.k)&&(l.value=a),e.k&&(d[e.k]=a))};if(a){const I=()=>{Z(),po.delete(e)};I.id=-1,po.set(e,I),fe(I,o)}else $n(e),Z()}}}function $n(e){const t=po.get(e);t&&(t.flags|=8,po.delete(e))}Jt().requestIdleCallback,Jt().cancelIdleCallback;const pt=e=>!!e.type.__asyncLoader,ns=e=>e.type.__isKeepAlive;function Na(e,t){vn(e,"a",t)}function Ra(e,t){vn(e,"da",t)}function vn(e,t,o=le){const s=e.__wdc||(e.__wdc=()=>{let n=o;for(;n;){if(n.isDeactivated)return;n=n.parent}return e()});if(uo(t,s,o),o){let n=o.parent;for(;n&&n.parent;)ns(n.parent.vnode)&&Ea(s,t,o,n),n=n.parent}}function Ea(e,t,o,s){const n=uo(t,e,s,!0);xn(()=>{Eo(s[t],n)},o)}function uo(e,t,o=le,s=!1){if(o){const n=o[e]||(o[e]=[]),i=t.__weh||(t.__weh=(...a)=>{we();const r=At(o),l=ve(t,o,e,a);return r(),Pe(),l});return s?n.unshift(i):n.push(i),i}}const Ge=e=>(t,o=le)=>{(!Ot||e==="sp")&&uo(e,(...s)=>t(...s),o)},Aa=Ge("bm"),yn=Ge("m"),Oa=Ge("bu"),Fa=Ge("u"),Ma=Ge("bum"),xn=Ge("um"),Ia=Ge("sp"),Da=Ge("rtg"),Ha=Ge("rtc");function ja(e,t=le){uo("ec",e,t)}const Ga="components";function Wa(e,t){return Va(Ga,e,!0,t)||e}const Ua=Symbol.for("v-ndc");function Va(e,t,o=!0,s=!1){const n=ne||le;if(n){const i=n.type;{const r=ni(i,!1);if(r&&(r===t||r===oe(t)||r===Xt(oe(t))))return i}const a=wn(n[e]||i[e],t)||wn(n.appContext[e],t);return!a&&s?i:a}}function wn(e,t){return e&&(e[t]||e[oe(t)]||e[Xt(oe(t))])}function dt(e,t,o,s){let n;const i=o,a=C(e);if(a||q(e)){const r=a&&Je(e);let l=!1,u=!1;r&&(l=!$e(e),u=Ke(e),e=Qt(e)),n=new Array(e.length);for(let d=0,g=e.length;dt(r,l,void 0,i));else{const r=Object.keys(e);n=new Array(r.length);for(let l=0,u=r.length;l{const i=s.fn(...n);return i&&(i.key=s.key),i}:s.fn)}return e}function St(e,t,o,s,n,i){if(o==null&&(o={}),ne.ce||ne.parent&&pt(ne.parent)&&ne.parent.ce){const u=i!=null&&o.key==null?J({},o,{key:i}):o,d=Object.keys(u).length>0;return t!=="default"&&(u.name=t),A(),bo(ee,null,[ye("slot",u,s)],d?-2:64)}let a=e[t];a&&a._c&&(a._d=!1);const r=We.length;A();let l;try{const u=a&&Pn(a(o)),d=o.key||i||u&&u.key;l=bo(ee,{key:(d&&!me(d)?d:`_${t}`)+(!u&&s?"_fb":"")},u||(s?s():[]),u&&e._===1?64:-2)}catch(u){for(let d=We.length;d>r;d--)gs();throw u}finally{a&&a._c&&(a._d=!0)}return l.scopeId&&(l.slotScopeIds=[l.scopeId+"-s"]),l}function Pn(e){return e.some(t=>hs(t)?!(t.type===Se||t.type===ee&&!Pn(t.children)):!0)?e:null}const is=e=>e?ti(e)?vo(e):is(e.parent):null,Ct=J(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=>is(e.parent),$root:e=>is(e.root),$host:e=>e.ce,$emit:e=>e.emit,$options:e=>Cn(e),$forceUpdate:e=>e.f||(e.f=()=>{Yo(e.update)}),$nextTick:e=>e.n||(e.n=ln.bind(e.proxy)),$watch:e=>Sa.bind(e)}),as=(e,t)=>e!==V&&!e.__isScriptSetup&&D(e,t),Ba={get({_:e},t){if(t==="__v_skip")return!0;const{ctx:o,setupState:s,data:n,props:i,accessCache:a,type:r,appContext:l}=e;if(t[0]!=="$"){const x=a[t];if(x!==void 0)switch(x){case 1:return s[t];case 2:return n[t];case 4:return o[t];case 3:return i[t]}else{if(as(s,t))return a[t]=1,s[t];if(n!==V&&D(n,t))return a[t]=2,n[t];if(D(i,t))return a[t]=3,i[t];if(o!==V&&D(o,t))return a[t]=4,o[t];rs&&(a[t]=0)}}const u=Ct[t];let d,g;if(u)return t==="$attrs"&&ae(e.attrs,"get",""),u(e);if((d=r.__cssModules)&&(d=d[t]))return d;if(o!==V&&D(o,t))return a[t]=4,o[t];if(g=l.config.globalProperties,D(g,t))return g[t]},set({_:e},t,o){const{data:s,setupState:n,ctx:i}=e;return as(n,t)?(n[t]=o,!0):s!==V&&D(s,t)?(s[t]=o,!0):D(e.props,t)||t[0]==="$"&&t.slice(1)in e?!1:(i[t]=o,!0)},has({_:{data:e,setupState:t,accessCache:o,ctx:s,appContext:n,props:i,type:a}},r){let l;return!!(o[r]||e!==V&&r[0]!=="$"&&D(e,r)||as(t,r)||D(i,r)||D(s,r)||D(Ct,r)||D(n.config.globalProperties,r)||(l=a.__cssModules)&&l[r])},defineProperty(e,t,o){return o.get!=null?e._.accessCache[t]=0:D(o,"value")&&this.set(e,t,o.value,null),Reflect.defineProperty(e,t,o)}};function kn(e){return C(e)?e.reduce((t,o)=>(t[o]=null,t),{}):e}let rs=!0;function Ka(e){const t=Cn(e),o=e.proxy,s=e.ctx;rs=!1,t.beforeCreate&&Ln(t.beforeCreate,e,"bc");const{data:n,computed:i,methods:a,watch:r,provide:l,inject:u,created:d,beforeMount:g,mounted:x,beforeUpdate:P,updated:G,activated:E,deactivated:Y,beforeDestroy:Z,beforeUnmount:I,destroyed:W,unmounted:S,render:te,renderTracked:Ne,renderTriggered:Re,errorCaptured:Ze,serverPrefetch:Lo,expose:tt,inheritAttrs:Gt,components:So,directives:Co,filters:ks}=t;if(u&&qa(u,s,null),a)for(const X in a){const K=a[X];R(K)&&(s[X]=K.bind(o))}if(n){const X=n.call(o,o);j(X)&&(e.data=qo(X))}if(rs=!0,i)for(const X in i){const K=i[X],ot=R(K)?K.bind(o,o):R(K.get)?K.get.bind(o,o):xe,To=!R(K)&&R(K.set)?K.set.bind(o):xe,st=Rr({get:ot,set:To});Object.defineProperty(s,X,{enumerable:!0,configurable:!0,get:()=>st.value,set:Ee=>st.value=Ee})}if(r)for(const X in r)Sn(r[X],s,o,X);if(l){const X=R(l)?l.call(o):l;Reflect.ownKeys(X).forEach(K=>{Pa(K,X[K])})}d&&Ln(d,e,"c");function ue(X,K){C(K)?K.forEach(ot=>X(ot.bind(o))):K&&X(K.bind(o))}if(ue(Aa,g),ue(yn,x),ue(Oa,P),ue(Fa,G),ue(Na,E),ue(Ra,Y),ue(ja,Ze),ue(Ha,Ne),ue(Da,Re),ue(Ma,I),ue(xn,S),ue(Ia,Lo),C(tt))if(tt.length){const X=e.exposed||(e.exposed={});tt.forEach(K=>{Object.defineProperty(X,K,{get:()=>o[K],set:ot=>o[K]=ot,enumerable:!0})})}else e.exposed||(e.exposed={});te&&e.render===xe&&(e.render=te),Gt!=null&&(e.inheritAttrs=Gt),So&&(e.components=So),Co&&(e.directives=Co),Lo&&mn(e)}function qa(e,t,o=xe){C(e)&&(e=ls(e));for(const s in e){const n=e[s];let i;j(n)?"default"in n?i=kt(n.from||s,n.default,!0):i=kt(n.from||s):i=kt(n),re(i)?Object.defineProperty(t,s,{enumerable:!0,configurable:!0,get:()=>i.value,set:a=>i.value=a}):t[s]=i}}function Ln(e,t,o){ve(C(e)?e.map(s=>s.bind(t.proxy)):e.bind(t.proxy),t,o)}function Sn(e,t,o,s){let n=s.includes(".")?hn(o,s):()=>o[s];if(q(e)){const i=t[e];R(i)&&es(n,i)}else if(R(e))es(n,e.bind(o));else if(j(e))if(C(e))e.forEach(i=>Sn(i,t,o,s));else{const i=R(e.handler)?e.handler.bind(o):t[e.handler];R(i)&&es(n,i,e)}}function Cn(e){const t=e.type,{mixins:o,extends:s}=t,{mixins:n,optionsCache:i,config:{optionMergeStrategies:a}}=e.appContext,r=i.get(t);let l;return r?l=r:!n.length&&!o&&!s?l=t:(l={},n.length&&n.forEach(u=>fo(l,u,a,!0)),fo(l,t,a)),j(t)&&i.set(t,l),l}function fo(e,t,o,s=!1){const{mixins:n,extends:i}=t;i&&fo(e,i,o,!0),n&&n.forEach(a=>fo(e,a,o,!0));for(const a in t)if(!(s&&a==="expose")){const r=Za[a]||o&&o[a];e[a]=r?r(e[a],t[a]):t[a]}return e}const Za={data:Tn,props:Nn,emits:Nn,methods:Tt,computed:Tt,beforeCreate:pe,created:pe,beforeMount:pe,mounted:pe,beforeUpdate:pe,updated:pe,beforeDestroy:pe,beforeUnmount:pe,destroyed:pe,unmounted:pe,activated:pe,deactivated:pe,errorCaptured:pe,serverPrefetch:pe,components:Tt,directives:Tt,watch:Ja,provide:Tn,inject:Xa};function Tn(e,t){return t?e?function(){return J(R(e)?e.call(this,this):e,R(t)?t.call(this,this):t)}:t:e}function Xa(e,t){return Tt(ls(e),ls(t))}function ls(e){if(C(e)){const t={};for(let o=0;ot==="modelValue"||t==="model-value"?e.modelModifiers:e[`${t}Modifiers`]||e[`${oe(t)}Modifiers`]||e[`${be(t)}Modifiers`];function tr(e,t,...o){if(e.isUnmounted)return;const s=e.vnode.props||V;let n=o;const i=t.startsWith("update:"),a=i&&er(s,t.slice(7));a&&(a.trim&&(n=o.map(d=>q(d)?d.trim():d)),a.number&&(n=n.map(Di)));let r,l=s[r=Oo(t)]||s[r=Oo(oe(t))];!l&&i&&(l=s[r=Oo(be(t))]),l&&ve(l,e,6,n);const u=s[r+"Once"];if(u){if(!e.emitted)e.emitted={};else if(e.emitted[r])return;e.emitted[r]=!0,ve(u,e,6,n)}}const or=new WeakMap;function En(e,t,o=!1){const s=o?or:t.emitsCache,n=s.get(e);if(n!==void 0)return n;const i=e.emits;let a={},r=!1;if(!R(e)){const l=u=>{const d=En(u,t,!0);d&&(r=!0,J(a,d))};!o&&t.mixins.length&&t.mixins.forEach(l),e.extends&&l(e.extends),e.mixins&&e.mixins.forEach(l)}return!i&&!r?(j(e)&&s.set(e,null),null):(C(i)?i.forEach(l=>a[l]=null):J(a,i),j(e)&&s.set(e,a),a)}function go(e,t){return!e||!zt(t)?!1:(t=t.slice(2),t=t==="Once"?t:t.replace(/Once$/,""),D(e,t[0].toLowerCase()+t.slice(1))||D(e,be(t))||D(e,t))}function Jc(){}function An(e){const{type:t,vnode:o,proxy:s,withProxy:n,propsOptions:[i],slots:a,attrs:r,emit:l,render:u,renderCache:d,props:g,data:x,setupState:P,ctx:G,inheritAttrs:E}=e,Y=lo(e);let Z,I;try{if(o.shapeFlag&4){const S=n||s,te=S;Z=Ce(u.call(te,S,d,g,P,x,G)),I=r}else{const S=t;Z=Ce(S.length>1?S(g,{attrs:r,slots:a,emit:l}):S(g,null)),I=t.props?r:sr(r)}}catch(S){We.length=0,ao(S,e,1),Z=ye(Se)}let W=Z;if(I&&E!==!1){const S=Object.keys(I),{shapeFlag:te}=W;S.length&&te&7&&(i&&S.some(Bt)&&(I=nr(I,i)),W=ft(W,I,!1,!0))}if(o.dirs&&(W=ft(W,null,!1,!0),W.dirs=W.dirs?W.dirs.concat(o.dirs):o.dirs),o.transition){const S=co(W.type)&&bn(W)||W;os(S,o.transition)}return Z=W,lo(Y),Z}const sr=e=>{let t;for(const o in e)(o==="class"||o==="style"||zt(o))&&((t||(t={}))[o]=e[o]);return t},nr=(e,t)=>{const o={};for(const s in e)(!Bt(s)||!(s.slice(9)in t))&&(o[s]=e[s]);return o};function ir(e,t,o){const{props:s,children:n,component:i}=e,{props:a,children:r,patchFlag:l}=t,u=i.emitsOptions;if(t.dirs||t.transition)return!0;if(o&&l>=0){if(l&1024)return!0;if(l&16)return s?On(s,a,u):!!a;if(l&8){const d=t.dynamicProps;for(let g=0;gObject.create(Mn),Dn=e=>Object.getPrototypeOf(e)===Mn;function rr(e,t,o,s=!1){const n={},i=In();e.propsDefaults=Object.create(null),Hn(e,t,n,i);for(const a in e.propsOptions[0])a in n||(n[a]=void 0);o?e.props=s?n:pa(n):e.type.props?e.props=n:e.props=i,e.attrs=i}function lr(e,t,o,s){const{props:n,attrs:i,vnode:{patchFlag:a}}=e,r=H(n),[l]=e.propsOptions;let u=!1;if((s||a>0)&&!(a&16)){if(a&8){const d=e.vnode.dynamicProps;for(let g=0;g{l=!0;const[x,P]=jn(g,t,!0);J(a,x),P&&r.push(...P)};!o&&t.mixins.length&&t.mixins.forEach(d),e.extends&&d(e.extends),e.mixins&&e.mixins.forEach(d)}if(!i&&!l)return j(e)&&s.set(e,nt),nt;if(C(i))for(let d=0;de==="_"||e==="_ctx"||e==="$stable",ds=e=>C(e)?e.map(Ce):[Ce(e)],pr=(e,t,o)=>{if(t._n)return t;const s=Pt((...n)=>ds(t(...n)),o);return s._c=!1,s},Wn=(e,t,o)=>{const s=e._ctx;for(const n in e){if(ps(n))continue;const i=e[n];if(R(i))t[n]=pr(n,i,s);else if(i!=null){const a=ds(i);t[n]=()=>a}}},Un=(e,t)=>{const o=ds(t);e.slots.default=()=>o},Vn=(e,t,o)=>{for(const s in t)(o||!ps(s))&&(e[s]=t[s])},dr=(e,t,o)=>{const s=e.slots=In();if(e.vnode.shapeFlag&32){const n=t._;n?(Vn(s,t,o),o&&Rs(s,"_",n,!0)):Wn(t,s)}else t&&Un(e,t)},ur=(e,t,o)=>{const{vnode:s,slots:n}=e;let i=!0,a=V;if(s.shapeFlag&32){const r=t._;r?o&&r===1?i=!1:Vn(n,t,o):(i=!t.$stable,Wn(t,n)),a=t}else t&&(Un(e,t),a={default:1});if(i)for(const r in n)!ps(r)&&a[r]==null&&delete n[r]},fe=mr;function fr(e){return gr(e)}function gr(e,t){const o=Jt();o.__VUE__=!0;const{insert:s,remove:n,patchProp:i,createElement:a,createText:r,createComment:l,setText:u,setElementText:d,parentNode:g,nextSibling:x,setScopeId:P=xe,insertStaticContent:G}=e,E=(c,p,f,_=null,m=null,h=null,y=void 0,v=null,$=!!p.dynamicChildren)=>{if(c===p)return;c&&!Rt(c,p)&&(_=No(c),Ee(c,m,h,!0),c=null),p.patchFlag===-2&&($=!1,p.dynamicChildren=null);const{type:b,ref:L,shapeFlag:w}=p;switch(b){case ho:Y(c,p,f,_);break;case Se:Z(c,p,f,_);break;case fs:c==null&&I(p,f,_,y);break;case ee:So(c,p,f,_,m,h,y,v,$);break;default:w&1?te(c,p,f,_,m,h,y,v,$):w&6?Co(c,p,f,_,m,h,y,v,$):(w&64||w&128)&&b.process(c,p,f,_,m,h,y,v,$,Ut)}L!=null&&m?Lt(L,c&&c.ref,h,p||c,!p):L==null&&c&&c.ref!=null&&Lt(c.ref,null,h,c,!0)},Y=(c,p,f,_)=>{if(c==null)s(p.el=r(p.children),f,_);else{const m=p.el=c.el;p.children!==c.children&&u(m,p.children)}},Z=(c,p,f,_)=>{c==null?s(p.el=l(p.children||""),f,_):p.el=c.el},I=(c,p,f,_)=>{[c.el,c.anchor]=G(c.children,p,f,_,c.el,c.anchor)},W=({el:c,anchor:p},f,_)=>{let m;for(;c&&c!==p;)m=x(c),s(c,f,_),c=m;s(p,f,_)},S=({el:c,anchor:p})=>{let f;for(;c&&c!==p;)f=x(c),n(c),c=f;n(p)},te=(c,p,f,_,m,h,y,v,$)=>{if(p.type==="svg"?y="svg":p.type==="math"&&(y="mathml"),c==null)Ne(p,f,_,m,h,y,v,$);else{const b=c.el&&c.el._isVueCE?c.el:null;try{b&&b._beginPatch(),Lo(c,p,m,h,y,v,$)}finally{b&&b._endPatch()}}},Ne=(c,p,f,_,m,h,y,v)=>{let $,b;const{props:L,shapeFlag:w,transition:k,dirs:N}=c;if($=c.el=a(c.type,h,L&&L.is,L),w&8?d($,c.children):w&16&&Ze(c.children,$,null,_,m,us(c,h),y,v),N&&Qe(c,null,_,"created"),Re($,c,c.scopeId,y,_),L){for(const z in L)z!=="value"&&!bt(z)&&i($,z,null,L[z],h,_);"value"in L&&i($,"value",null,L.value,h),(b=L.onVnodeBeforeMount)&&Te(b,_,c)}N&&Qe(c,null,_,"beforeMount");const M=hr(m,k);M&&k.beforeEnter($),s($,p,f),((b=L&&L.onVnodeMounted)||M||N)&&fe(()=>{try{b&&Te(b,_,c),M&&k.enter($),N&&Qe(c,null,_,"mounted")}finally{}},m)},Re=(c,p,f,_,m)=>{if(f&&P(c,f),_)for(let h=0;h<_.length;h++)P(c,_[h]);if(m){let h=m.subTree;if(p===h||Zn(h.type)&&(h.ssContent===p||h.ssFallback===p)){const y=m.vnode;Re(c,y,y.scopeId,y.slotScopeIds,m.parent)}}},Ze=(c,p,f,_,m,h,y,v,$=0)=>{for(let b=$;b{const v=p.el=c.el;let{patchFlag:$,dynamicChildren:b,dirs:L}=p;$|=c.patchFlag&16;const w=c.props||V,k=p.props||V;let N;if(f&&et(f,!1),(N=k.onVnodeBeforeUpdate)&&Te(N,f,p,c),L&&Qe(p,c,f,"beforeUpdate"),f&&et(f,!0),b&&(!c.dynamicChildren||c.dynamicChildren.length!==b.length)&&($=0,y=!1,b=null),(w.innerHTML&&k.innerHTML==null||w.textContent&&k.textContent==null)&&d(v,""),b?tt(c.dynamicChildren,b,v,f,_,us(p,m),h):y||K(c,p,v,null,f,_,us(p,m),h,!1),$>0){if($&16)Gt(v,w,k,f,m);else if($&2&&w.class!==k.class&&i(v,"class",null,k.class,m),$&4&&i(v,"style",w.style,k.style,m),$&8){const M=p.dynamicProps;for(let z=0;z{N&&Te(N,f,p,c),L&&Qe(p,c,f,"updated")},_)},tt=(c,p,f,_,m,h,y)=>{for(let v=0;v{if(p!==f){if(p!==V)for(const h in p)!bt(h)&&!(h in f)&&i(c,h,p[h],null,m,_);for(const h in f){if(bt(h))continue;const y=f[h],v=p[h];y!==v&&h!=="value"&&i(c,h,v,y,m,_)}"value"in f&&i(c,"value",p.value,f.value,m)}},So=(c,p,f,_,m,h,y,v,$)=>{const b=p.el=c?c.el:r(""),L=p.anchor=c?c.anchor:r("");let{patchFlag:w,dynamicChildren:k,slotScopeIds:N}=p;N&&(v=v?v.concat(N):N),c==null?(s(b,f,_),s(L,f,_),Ze(p.children||[],f,L,m,h,y,v,$)):w>0&&w&64&&k&&c.dynamicChildren&&c.dynamicChildren.length===k.length?(tt(c.dynamicChildren,k,f,m,h,y,v),(p.key!=null||m&&p===m.subTree)&&zn(c,p,!0)):K(c,p,f,L,m,h,y,v,$)},Co=(c,p,f,_,m,h,y,v,$)=>{p.slotScopeIds=v,c==null?p.shapeFlag&512?m.ctx.activate(p,f,_,y,$):ks(p,f,_,m,h,y,$):Ci(c,p,$)},ks=(c,p,f,_,m,h,y)=>{const v=c.component=wr(c,_,m);if(ns(c)&&(v.ctx.renderer=Ut),Pr(v,!1,y),v.asyncDep){if(m&&m.registerDep(v,ue,y),!c.el){const $=v.subTree=ye(Se);Z(null,$,p,f),c.placeholder=$.el}}else ue(v,c,p,f,m,h,y)},Ci=(c,p,f)=>{const _=p.component=c.component;if(ir(c,p,f))if(_.asyncDep&&!_.asyncResolved){X(_,p,f);return}else _.next=p,_.update();else p.el=c.el,_.vnode=p},ue=(c,p,f,_,m,h,y)=>{const v=()=>{if(c.isMounted){let{next:w,bu:k,u:N,parent:M,vnode:z}=c;{const Oe=Bn(c);if(Oe){w&&(w.el=z.el,X(c,w,y)),Oe.asyncDep.then(()=>{fe(()=>{c.isUnmounted||b()},m)});return}}let U=w,Q;et(c,!1),w?(w.el=z.el,X(c,w,y)):w=z,k&&Fo(k),(Q=w.props&&w.props.onVnodeBeforeUpdate)&&Te(Q,M,w,z),et(c,!0);const ie=An(c),Ae=c.subTree;c.subTree=ie,E(Ae,ie,g(Ae.el),No(Ae),c,m,h),w.el=ie.el,U===null&&ar(c,ie.el),N&&fe(N,m),(Q=w.props&&w.props.onVnodeUpdated)&&fe(()=>Te(Q,M,w,z),m)}else{let w;const{el:k,props:N}=p,{bm:M,m:z,parent:U,root:Q,type:ie}=c,Ae=pt(p);et(c,!1),M&&Fo(M),!Ae&&(w=N&&N.onVnodeBeforeMount)&&Te(w,U,p),et(c,!0);{Q.ce&&Q.ce._hasShadowRoot()&&Q.ce._injectChildStyle(ie,c.parent?c.parent.type:void 0);const Oe=c.subTree=An(c);E(null,Oe,f,_,c,m,h),p.el=Oe.el}if(z&&fe(z,m),!Ae&&(w=N&&N.onVnodeMounted)){const Oe=p;fe(()=>Te(w,U,Oe),m)}(p.shapeFlag&256||U&&pt(U.vnode)&&U.vnode.shapeFlag&256)&&c.a&&fe(c.a,m),c.isMounted=!0,p=f=_=null}};c.scope.on();const $=c.effect=new Ds(v);c.scope.off();const b=c.update=$.run.bind($),L=c.job=$.runIfDirty.bind($);L.i=c,L.id=c.uid,$.scheduler=()=>Yo(L),et(c,!0),b()},X=(c,p,f)=>{p.component=c;const _=c.vnode.props;c.vnode=p,c.next=null,lr(c,p.props,_,f),ur(c,p.children,f),we(),pn(c),Pe()},K=(c,p,f,_,m,h,y,v,$=!1)=>{const b=c&&c.children,L=c?c.shapeFlag:0,w=p.children,{patchFlag:k,shapeFlag:N}=p;if(k>0){if(k&128){To(b,w,f,_,m,h,y,v,$);return}else if(k&256){ot(b,w,f,_,m,h,y,v,$);return}}N&8?(L&16&&Wt(b,m,h),w!==b&&d(f,w)):L&16?N&16?To(b,w,f,_,m,h,y,v,$):Wt(b,m,h,!0):(L&8&&d(f,""),N&16&&Ze(w,f,_,m,h,y,v,$))},ot=(c,p,f,_,m,h,y,v,$)=>{c=c||nt,p=p||nt;const b=c.length,L=p.length,w=Math.min(b,L);let k;for(k=0;kL?Wt(c,m,h,!0,!1,w):Ze(p,f,_,m,h,y,v,$,w)},To=(c,p,f,_,m,h,y,v,$)=>{let b=0;const L=p.length;let w=c.length-1,k=L-1;for(;b<=w&&b<=k;){const N=c[b],M=p[b]=$?Ue(p[b]):Ce(p[b]);if(Rt(N,M))E(N,M,f,null,m,h,y,v,$);else break;b++}for(;b<=w&&b<=k;){const N=c[w],M=p[k]=$?Ue(p[k]):Ce(p[k]);if(Rt(N,M))E(N,M,f,null,m,h,y,v,$);else break;w--,k--}if(b>w){if(b<=k){const N=k+1,M=Nk)for(;b<=w;)Ee(c[b],m,h,!0),b++;else{const N=b,M=b,z=new Map;for(b=M;b<=k;b++){const he=p[b]=$?Ue(p[b]):Ce(p[b]);he.key!=null&&z.set(he.key,b)}let U,Q=0;const ie=k-M+1;let Ae=!1,Oe=0;const Vt=new Array(ie);for(b=0;b=ie){Ee(he,m,h,!0);continue}let Fe;if(he.key!=null)Fe=z.get(he.key);else for(U=M;U<=k;U++)if(Vt[U-M]===0&&Rt(he,p[U])){Fe=U;break}Fe===void 0?Ee(he,m,h,!0):(Vt[Fe-M]=b+1,Fe>=Oe?Oe=Fe:Ae=!0,E(he,p[Fe],f,null,m,h,y,v,$),Q++)}const Ri=Ae?br(Vt):nt;for(U=Ri.length-1,b=ie-1;b>=0;b--){const he=M+b,Fe=p[he],Ei=p[he+1],Ai=he+1{const{el:h,type:y,transition:v,children:$,shapeFlag:b}=c;if(b&6){st(c.component.subTree,p,f,_);return}if(b&128){c.suspense.move(p,f,_);return}if(b&64){y.move(c,p,f,Ut);return}if(y===ee){s(h,p,f);for(let w=0;w<$.length;w++)st($[w],p,f,_);s(c.anchor,p,f);return}if(y===fs){W(c,p,f);return}if(_!==2&&b&1&&v)if(_===0)v.persisted&&!h[ts]?s(h,p,f):(v.beforeEnter(h),s(h,p,f),fe(()=>v.enter(h),m));else{const{leave:w,delayLeave:k,afterLeave:N}=v,M=()=>{c.ctx.isUnmounted?n(h):s(h,p,f)},z=()=>{const U=h._isLeaving||!!h[ts];h._isLeaving&&h[ts](!0),v.persisted&&!U?M():w(h,()=>{M(),N&&N()})};k?k(h,M,z):z()}else s(h,p,f)},Ee=(c,p,f,_=!1,m=!1)=>{const{type:h,props:y,ref:v,children:$,dynamicChildren:b,shapeFlag:L,patchFlag:w,dirs:k,cacheIndex:N,memo:M}=c;if(w===-2&&(m=!1),v!=null&&(we(),Lt(v,null,f,c,!0),Pe()),N!=null&&(p.renderCache[N]=void 0),L&256){p.ctx.deactivate(c);return}const z=L&1&&k,U=!pt(c);let Q;if(U&&(Q=y&&y.onVnodeBeforeUnmount)&&Te(Q,p,c),L&6)Kc(c.component,f,_);else{if(L&128){c.suspense.unmount(f,_);return}z&&Qe(c,null,p,"beforeUnmount"),L&64?c.type.remove(c,p,f,Ut,_):b&&!b.hasOnce&&(h!==ee||w>0&&w&64)?Wt(b,p,f,!1,!0):(h===ee&&w&384||!m&&L&16)&&Wt($,p,f),_&&Ti(c)}const ie=M!=null&&N==null;(U&&(Q=y&&y.onVnodeUnmounted)||z||ie)&&fe(()=>{Q&&Te(Q,p,c),z&&Qe(c,null,p,"unmounted"),ie&&(c.el=null)},f)},Ti=c=>{const{type:p,el:f,anchor:_,transition:m}=c;if(p===ee){Bc(f,_);return}if(p===fs){S(c);return}const h=()=>{n(f),m&&!m.persisted&&m.afterLeave&&m.afterLeave()};if(c.shapeFlag&1&&m&&!m.persisted){const{leave:y,delayLeave:v}=m,$=()=>y(f,h);v?v(c.el,h,$):$()}else h()},Bc=(c,p)=>{let f;for(;c!==p;)f=x(c),n(c),c=f;n(p)},Kc=(c,p,f)=>{const{bum:_,scope:m,job:h,subTree:y,um:v,m:$,a:b}=c;Kn($),Kn(b),_&&Fo(_),m.stop(),h&&(h.flags|=8,Ee(y,c,p,f)),v&&fe(v,p),fe(()=>{c.isUnmounted=!0},p)},Wt=(c,p,f,_=!1,m=!1,h=0)=>{for(let y=h;y{if(c.shapeFlag&6)return No(c.component.subTree);if(c.shapeFlag&128)return c.suspense.next();const p=x(c.anchor||c.el),f=p&&p[Ca];return f?x(f):p};let Ls=!1;const Ni=(c,p,f)=>{let _;c==null?p._vnode&&(Ee(p._vnode,null,null,!0),_=p._vnode.component):E(p._vnode||null,c,p,null,null,null,f),p._vnode=c,Ls||(Ls=!0,pn(_),dn(),Ls=!1)},Ut={p:E,um:Ee,m:st,r:Ti,mt:ks,mc:Ze,pc:K,pbc:tt,n:No,o:e};return{render:Ni,hydrate:void 0,createApp:Qa(Ni)}}function us({type:e,props:t},o){return o==="svg"&&e==="foreignObject"||o==="mathml"&&e==="annotation-xml"&&t&&t.encoding&&t.encoding.includes("html")?void 0:o}function et({effect:e,job:t},o){o?(e.flags|=32,t.flags|=4):(e.flags&=-33,t.flags&=-5)}function hr(e,t){return(!e||e&&!e.pendingBranch)&&t&&!t.persisted}function zn(e,t,o=!1){const s=e.children,n=t.children;if(C(s)&&C(n))for(let i=0;i>1,e[o[r]]0&&(t[s]=o[i-1]),o[i]=s)}}for(i=o.length,a=o[i-1];i-- >0;)o[i]=a,a=t[a];return o}function Bn(e){const t=e.subTree.component;if(t)return t.asyncDep&&!t.asyncResolved?t:Bn(t)}function Kn(e){if(e)for(let t=0;te.__isSuspense;function mr(e,t){t&&t.pendingBranch?C(e)?t.effects.push(...e):t.effects.push(e):wa(e)}const ee=Symbol.for("v-fgt"),ho=Symbol.for("v-txt"),Se=Symbol.for("v-cmt"),fs=Symbol.for("v-stc"),We=[];let ge=null;function A(e=!1){We.push(ge=e?null:[])}function gs(){We.pop(),ge=We[We.length-1]||null}let Nt=1;function Xn(e,t=!1){Nt+=e,e<0&&ge&&t&&(ge.hasOnce=!0)}function Jn(e){return e.dynamicChildren=Nt>0?ge||nt:null,gs(),Nt>0&&ge&&ge.push(e),e}function O(e,t,o,s,n,i){return Jn(T(e,t,o,s,n,i,!0))}function bo(e,t,o,s,n){return Jn(ye(e,t,o,s,n,!0))}function hs(e){return e?e.__v_isVNode===!0:!1}function Rt(e,t){return e.type===t.type&&e.key===t.key}const Yn=({key:e})=>e??null,mo=({ref:e,ref_key:t,ref_for:o})=>(typeof e=="number"&&(e=""+e),e!=null?q(e)||re(e)||R(e)?{i:ne,r:e,k:t,f:!!o}:e:null);function T(e,t=null,o=null,s=0,n=null,i=e===ee?0:1,a=!1,r=!1){const l={__v_isVNode:!0,__v_skip:!0,type:e,props:t,key:t&&Yn(t),ref:t&&mo(t),scopeId:fn,slotScopeIds:null,children:o,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:i,patchFlag:s,dynamicProps:n,dynamicChildren:null,appContext:null,ctx:ne};return r?(_o(l,o),i&128&&e.normalize(l)):o&&(l.shapeFlag|=q(o)?8:16),Nt>0&&!a&&ge&&(l.patchFlag>0||i&6)&&l.patchFlag!==32&&ge.push(l),l}const ye=_r;function _r(e,t=null,o=null,s=0,n=null,i=!1){if((!e||e===Ua)&&(e=Se),hs(e)){const r=ft(e,t,!0);return o&&_o(r,o),Nt>0&&!i&&ge&&(r.shapeFlag&6?ge[ge.indexOf(e)]=r:ge.push(r)),r.patchFlag=-2,r}if(Nr(e)&&(e=e.__vccOpts),t){t=$r(t);let{class:r,style:l}=t;r&&!q(r)&&(t.class=Be(r)),j(l)&&(Xo(l)&&!C(l)&&(l=J({},l)),t.style=Mo(l))}const a=q(e)?1:Zn(e)?128:co(e)?64:j(e)?4:R(e)?2:0;return T(e,t,o,s,n,a,i,!0)}function $r(e){return e?Xo(e)||Dn(e)?J({},e):e:null}function ft(e,t,o=!1,s=!1){const{props:n,ref:i,patchFlag:a,children:r,transition:l}=e,u=t?vr(n||{},t):n,d={__v_isVNode:!0,__v_skip:!0,type:e.type,props:u,key:u&&Yn(u),ref:t&&t.ref?o&&i?C(i)?i.concat(mo(t)):[i,mo(t)]:mo(t):i,scopeId:e.scopeId,slotScopeIds:e.slotScopeIds,children:r,target:e.target,targetStart:e.targetStart,targetAnchor:e.targetAnchor,staticCount:e.staticCount,shapeFlag:e.shapeFlag,patchFlag:t&&e.type!==ee?a===-1?16:a|16:a,dynamicProps:e.dynamicProps,dynamicChildren:e.dynamicChildren,appContext:e.appContext,dirs:e.dirs,transition:l,component:e.component,suspense:e.suspense,ssContent:e.ssContent&&ft(e.ssContent),ssFallback:e.ssFallback&&ft(e.ssFallback),placeholder:e.placeholder,el:e.el,anchor:e.anchor,ctx:e.ctx,ce:e.ce};return l&&s&&os(d,l.clone(d)),d}function gt(e=" ",t=0){return ye(ho,null,e,t)}function de(e="",t=!1){return t?(A(),bo(Se,null,e)):ye(Se,null,e)}function Ce(e){return e==null||typeof e=="boolean"?ye(Se):C(e)?ye(ee,null,e.slice()):hs(e)?Ue(e):ye(ho,null,String(e))}function Ue(e){return e.el===null&&e.patchFlag!==-1||e.memo?e:ft(e)}function _o(e,t){let o=0;const{shapeFlag:s}=e;if(t==null)t=null;else if(C(t))o=16;else if(typeof t=="object")if(s&65){const n=t.default;n&&(n._c&&(n._d=!1),_o(e,n()),n._c&&(n._d=!0));return}else{o=32;const n=t._;!n&&!Dn(t)?t._ctx=ne:n===3&&ne&&(ne.slots._===1?t._=1:(t._=2,e.patchFlag|=1024))}else if(R(t)){if(s&65){_o(e,{default:t});return}t={default:t,_ctx:ne},o=32}else t=String(t),s&64?(o=16,t=[gt(t)]):o=8;e.children=t,e.shapeFlag|=o}function vr(...e){const t={};for(let o=0;ole||ne;let $o,Et;{const e=Jt(),t=(o,s)=>{let n;return(n=e[o])||(n=e[o]=[]),n.push(s),i=>{n.length>1?n.forEach(a=>a(i)):n[0](i)}};$o=t("__VUE_INSTANCE_SETTERS__",o=>le=o),Et=t("__VUE_SSR_SETTERS__",o=>Ot=o)}const At=e=>{const t=le;return $o(e),e.scope.on(),()=>{e.scope.off(),$o(t)}},ei=()=>{le&&le.scope.off(),$o(null)};function ti(e){return e.vnode.shapeFlag&4}let Ot=!1;function Pr(e,t=!1,o=!1){t&&Et(t);const{props:s,children:n}=e.vnode,i=ti(e);rr(e,s,i,t),dr(e,n,o||t);const a=i?kr(e,t):void 0;return t&&Et(!1),a}function kr(e,t){const o=e.type;e.accessCache=Object.create(null),e.proxy=new Proxy(e.ctx,Ba);const{setup:s}=o;if(s){we();const n=e.setupContext=s.length>1?Sr(e):null,i=At(e),a=rt(s,e,0,[e.props,n]),r=Ts(a);if(Pe(),i(),(r||e.sp)&&!pt(e)&&mn(e),r){if(a.then(ei,ei),t)return a.then(l=>{Et(!0);try{oi(e,l,t)}finally{Et(!1)}}).catch(l=>{ao(l,e,0)});e.asyncDep=a}else oi(e,a)}else si(e)}function oi(e,t,o){R(t)?e.type.__ssrInlineRender?e.ssrRender=t:e.render=t:j(t)&&(e.setupState=nn(t)),si(e)}function si(e,t,o){const s=e.type;e.render||(e.render=s.render||xe);{const n=At(e);we();try{Ka(e)}finally{Pe(),n()}}}const Lr={get(e,t){return ae(e,"get",""),e[t]}};function Sr(e){const t=o=>{e.exposed=o||{}};return{attrs:new Proxy(e.attrs,Lr),slots:e.slots,emit:e.emit,expose:t}}function vo(e){return e.exposed?e.exposeProxy||(e.exposeProxy=new Proxy(nn(da(e.exposed)),{get(t,o){if(o in t)return t[o];if(o in Ct)return Ct[o](e)},has(t,o){return o in t||o in Ct}})):e.proxy}const Cr=/(?:^|[-_])\w/g,Tr=e=>e.replace(Cr,t=>t.toUpperCase()).replace(/[-_]/g,"");function ni(e,t=!0){return R(e)?e.displayName||e.name:e.name||t&&e.__name}function ii(e,t,o=!1){let s=ni(t);if(!s&&t.__file){const n=t.__file.match(/([^/\\]+)\.\w+$/);n&&(s=n[1])}if(!s&&e){const n=i=>{for(const a in i)if(i[a]===t)return a};s=n(e.components)||e.parent&&n(e.parent.type.components)||n(e.appContext.components)}return s?Tr(s):o?"App":"Anonymous"}function Nr(e){return R(e)&&"__vccOpts"in e}const Rr=(e,t)=>ga(e,t,Ot),Er="3.5.42";/** * @vue/runtime-dom v3.5.42 * (c) 2018-present Yuxi (Evan) You and Vue contributors * @license MIT -**/let bs;const ai=typeof window<"u"&&window.trustedTypes;if(ai)try{bs=ai.createPolicy("vue",{createHTML:e=>e})}catch{}const ri=bs?e=>bs.createHTML(e):e=>e,Ar="http://www.w3.org/2000/svg",Or="http://www.w3.org/1998/Math/MathML",Ve=typeof document<"u"?document:null,li=Ve&&Ve.createElement("template"),Fr={insert:(e,t,o)=>{t.insertBefore(e,o||null)},remove:e=>{const t=e.parentNode;t&&t.removeChild(e)},createElement:(e,t,o,s)=>{const n=t==="svg"?Ve.createElementNS(Ar,e):t==="mathml"?Ve.createElementNS(Or,e):o?Ve.createElement(e,{is:o}):Ve.createElement(e);return e==="select"&&s&&s.multiple!=null&&n.setAttribute("multiple",s.multiple),n},createText:e=>Ve.createTextNode(e),createComment:e=>Ve.createComment(e),setText:(e,t)=>{e.nodeValue=t},setElementText:(e,t)=>{e.textContent=t},parentNode:e=>e.parentNode,nextSibling:e=>e.nextSibling,querySelector:e=>Ve.querySelector(e),setScopeId(e,t){e.setAttribute(t,"")},insertStaticContent(e,t,o,s,n,i){const a=o?o.previousSibling:t.lastChild;if(n&&(n===i||n.nextSibling))for(;t.insertBefore(n.cloneNode(!0),o),!(n===i||!(n=n.nextSibling)););else{li.innerHTML=ri(s==="svg"?`${e}`:s==="mathml"?`${e}`:e);const r=li.content;if(s==="svg"||s==="mathml"){const l=r.firstChild;for(;l.firstChild;)r.appendChild(l.firstChild);r.removeChild(l)}t.insertBefore(r,o)}return[a?a.nextSibling:t.firstChild,o?o.previousSibling:t.lastChild]}},Mr=Symbol("_vtc");function Dr(e,t,o){const s=e[Mr];s&&(t=(t?[t,...s]:[...s]).join(" ")),t==null?e.removeAttribute("class"):o?e.setAttribute("class",t):e.className=t}const yo=Symbol("_vod"),ci=Symbol("_vsh"),ms={name:"show",beforeMount(e,{value:t},{transition:o}){e[yo]=e.style.display==="none"?"":e.style.display,o&&t?o.beforeEnter(e):Ft(e,t)},mounted(e,{value:t},{transition:o}){o&&t&&o.enter(e)},updated(e,{value:t,oldValue:o},{transition:s}){!t!=!o&&(s?t?(s.beforeEnter(e),Ft(e,!0),s.enter(e)):s.leave(e,()=>{Ft(e,!1)}):Ft(e,t))},beforeUnmount(e,{value:t}){Ft(e,t)}};function Ft(e,t){e.style.display=t?e[yo]:"none",e[ci]=!t}const Ir=Symbol(""),Hr=/(?:^|;)\s*display\s*:/;function jr(e,t,o){const s=e.style,n=q(o);let i=!1;if(o&&!n){if(t)if(q(t))for(const a of t.split(";")){const r=a.slice(0,a.indexOf(":")).trim();o[r]==null&&Mt(s,r,"")}else for(const a in t)o[a]==null&&Mt(s,a,"");for(const a in o){a==="display"&&(i=!0);const r=o[a];r!=null?Wr(e,a,!q(t)&&t?t[a]:void 0,r)||Mt(s,a,r):Mt(s,a,"")}}else if(n){if(t!==o){const a=s[Ir];a&&(o+=";"+a),s.cssText=o,i=Hr.test(o)}}else t&&e.removeAttribute("style");yo in e&&(e[yo]=i?s.display:"",e[ci]&&(s.display="none"))}const xo=/\s*!important$/;function Mt(e,t,o){if(C(o))o.forEach(s=>Mt(e,t,s));else if(o==null&&(o=""),t.startsWith("--"))xo.test(o)?e.setProperty(t,o.replace(xo,""),"important"):e.setProperty(t,o);else{const s=Gr(e,t);xo.test(o)?e.setProperty(be(s),o.replace(xo,""),"important"):e[s]=o}}const pi=["Webkit","Moz","ms"],_s={};function Gr(e,t){const o=_s[t];if(o)return o;let s=oe(t);if(s!=="filter"&&s in e)return _s[t]=s;s=Xt(s);for(let n=0;n$s||(Zr.then(()=>$s=0),$s=Date.now());function Jr(e,t){const o=s=>{if(!s._vts)s._vts=Date.now();else if(s._vts<=o.attached)return;const n=o.value;if(C(n)){const i=s.stopImmediatePropagation;s.stopImmediatePropagation=()=>{i.call(s),s._stopped=!0};const a=n.slice(),r=[s];for(let l=0;le.charCodeAt(0)===111&&e.charCodeAt(1)===110&&e.charCodeAt(2)>96&&e.charCodeAt(2)<123,Yr=(e,t,o,s,n,i)=>{const a=n==="svg";t==="class"?Dr(e,s,a):t==="style"?jr(e,o,s):zt(t)?Bt(t)||zr(e,t,o,s,i):(t[0]==="."?(t=t.slice(1),!0):t[0]==="^"?(t=t.slice(1),!1):Qr(e,t,s,a))?(fi(e,t,s),!e.tagName.includes("-")&&(t==="value"||t==="checked"||t==="selected")&&ui(e,t,s,a,i,t!=="value")):e._isVueCE&&(el(e,t)||e._def.__asyncLoader&&(/[A-Z]/.test(t)||!q(s)))?fi(e,oe(t),s,i,t):(t==="true-value"?e._trueValue=s:t==="false-value"&&(e._falseValue=s),ui(e,t,s,a))};function Qr(e,t,o,s){if(s)return!!(t==="innerHTML"||t==="textContent"||t in e&&hi(t)&&R(o));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 n=e.tagName;if(n==="IMG"||n==="VIDEO"||n==="CANVAS"||n==="SOURCE")return!1}return hi(t)&&q(o)?!1:t in e}function el(e,t){const o=e._def.props;if(!o)return!1;const s=oe(t);return Array.isArray(o)?o.some(n=>oe(n)===s):Object.keys(o).some(n=>oe(n)===s)}const bi={};function tl(e,t,o){let s=ss(e,t);qt(s)&&(s=J({},s,t));class n extends vs{constructor(a){super(s,a,o)}}return n.def=s,n}const ol=typeof HTMLElement<"u"?HTMLElement:class{};class vs extends ol{constructor(t,o={},s=$i){super(),this._def=t,this._props=o,this._createApp=s,this._isVueCE=!0,this._instance=null,this._app=null,this._nonce=this._def.nonce,this._connected=!1,this._resolved=!1,this._patching=!1,this._dirty=!1,this._numberProps=null,this._styleChildren=new WeakSet,this._styleAnchors=new WeakMap,this._ob=null,this.shadowRoot&&s!==$i?this._root=this.shadowRoot:t.shadowRoot!==!1?(this.attachShadow(J({},t.shadowRootOptions,{mode:"open"})),this._root=this.shadowRoot):this._root=this}connectedCallback(){if(!this.isConnected)return;!this.shadowRoot&&!this._resolved&&this._parseSlots(),this._connected=!0;let t=this;for(;t=t&&(t.assignedSlot||t.parentNode||t.host);)if(t instanceof vs){this._parent=t;break}this._instance||(this._resolved?this._mount(this._def):t&&t._pendingResolve?this._pendingResolve=t._pendingResolve.then(()=>{if(this._pendingResolve=void 0,this.isConnected)return this._resolveDef()}):this._resolveDef())}_setParent(t=this._parent){t&&(this._instance.parent=t._instance,this._inheritParentContext(t))}_inheritParentContext(t=this._parent){t&&this._app&&Object.setPrototypeOf(this._app._context.provides,t._instance.provides)}disconnectedCallback(){this._connected=!1,ln(()=>{this._connected||(this._ob&&(this._ob.disconnect(),this._ob=null),this._app&&this._app.unmount(),this._instance&&(this._instance.ce=void 0),this._app=this._instance=null,this._teleportTargets&&(this._teleportTargets.clear(),this._teleportTargets=void 0))})}_processMutations(t){for(const o of t)this._setAttr(o.attributeName)}_resolveDef(){if(this._pendingResolve)return this._pendingResolve;for(let s=0;s{this._resolved=!0,this._pendingResolve=void 0;const{props:i,styles:a}=s;let r;if(i&&!C(i))for(const l in i){const u=i[l];(u===Number||u&&u.type===Number)&&(l in this._props&&(this._props[l]=Es(this._props[l])),(r||(r=Object.create(null)))[oe(l)]=!0)}this._numberProps=r,this._resolveProps(s),this.shadowRoot&&this._applyStyles(a),this._mount(s)},o=this._def.__asyncLoader;if(o)return this._pendingResolve=o().then(s=>{s.configureApp=this._def.configureApp,t(this._def=s,!0)}),this._pendingResolve;t(this._def)}_mount(t){this._app=this._createApp(t),this._inheritParentContext(),t.configureApp&&t.configureApp(this._app),this._app._ceVNode=this._createVNode(),this._app.mount(this._root);const o=this._instance&&this._instance.exposed;if(o)for(const s in o)I(this,s)||Object.defineProperty(this,s,{get:()=>sn(o[s])})}_resolveProps(t){const{props:o}=t,s=C(o)?o:Object.keys(o||{});for(const n of Object.keys(this))n[0]!=="_"&&s.includes(n)&&this._setProp(n,this[n]);for(const n of s.map(oe))Object.defineProperty(this,n,{get(){return this._getProp(n)},set(i){this._setProp(n,i,!0,!this._patching)}})}_setAttr(t){if(t.startsWith("data-v-"))return;const o=this.hasAttribute(t);let s=o?this.getAttribute(t):bi;const n=oe(t);o&&this._numberProps&&this._numberProps[n]&&(s=Es(s)),this._setProp(n,s,!1,!0)}_getProp(t){return this._props[t]}_setProp(t,o,s=!0,n=!1){if(o!==this._props[t]&&(this._dirty=!0,o===bi?delete this._props[t]:(this._props[t]=o,t==="key"&&this._app&&(this._app._ceVNode.key=o)),n&&this._instance&&this._update(),s)){const i=this._ob;i&&(this._processMutations(i.takeRecords()),i.disconnect()),o===!0?this.setAttribute(be(t),""):typeof o=="string"||typeof o=="number"?this.setAttribute(be(t),o+""):o||this.removeAttribute(be(t)),i&&i.observe(this,{attributes:!0})}}_update(){const t=this._createVNode();this._app&&(t.appContext=this._app._context),nl(t,this._root)}_createVNode(){const t={};this.shadowRoot||(t.onVnodeMounted=t.onVnodeUpdated=this._renderSlots.bind(this));const o=ye(this._def,J(t,this._props));return this._instance||(o.ce=s=>{this._instance=s,s.ce=this,s.isCE=!0;const n=(i,a)=>{this.dispatchEvent(new CustomEvent(i,qt(a[0])?J({detail:a},a[0]):{detail:a}))};s.emit=(i,...a)=>{n(i,a),be(i)!==i&&n(be(i),a)},this._setParent()}),o}_applyStyles(t,o,s){if(!t)return;if(o){if(o===this._def||this._styleChildren.has(o))return;this._styleChildren.add(o)}const n=this._nonce,i=this.shadowRoot,a=s?this._getStyleAnchor(s)||this._getStyleAnchor(this._def):this._getRootStyleInsertionAnchor(i);let r=null;for(let l=t.length-1;l>=0;l--){const u=document.createElement("style");n&&u.setAttribute("nonce",n),u.textContent=t[l],i.insertBefore(u,r||a),r=u,l===0&&(s||this._styleAnchors.set(this._def,u),o&&this._styleAnchors.set(o,u))}}_getStyleAnchor(t){if(!t)return null;const o=this._styleAnchors.get(t);return o&&o.parentNode===this.shadowRoot?o:(o&&this._styleAnchors.delete(t),null)}_getRootStyleInsertionAnchor(t){for(let o=0;o{_i().render(...e)},$i=(...e)=>{const t=_i().createApp(...e),{mount:o}=t;return t.mount=s=>{const n=al(s);if(!n)return;const i=t._component;!R(i)&&!i.render&&!i.template&&(i.template=n.innerHTML),n.nodeType===1&&(n.textContent="");const a=o(n,!1,il(n));return n instanceof Element&&(n.removeAttribute("v-cloak"),n.setAttribute("data-v-app","")),a},t};function il(e){if(e instanceof SVGElement)return"svg";if(typeof MathMLElement=="function"&&e instanceof MathMLElement)return"mathml"}function al(e){return q(e)?document.querySelector(e):e}const rl=Object.assign({"./locales/ar/grid.json":{search:"ابحث عن الشعوب…",hide_filters:"إخفاء عوامل التصفية",show_filters:"إظهار عوامل التصفية",total:"الإجمالي",showing:"المعروض",load_more:"عرض المزيد",full_profile:"الملف الكامل",wagf_region:"المنطقة",wagf_block:"كتلة التقارب",rop1:"الشعب",religion:"الدين",exact_filter:"تطابق تام",clear_all:"مسح الكل",loading:"جارٍ التحميل…",no_results:"لا توجد شعوب مطابقة لهذا التصفية.",type_to_search:"اكتب للبحث...",load_failed:"تعذّر تحميل بيانات الشعوب. هذه مشكلة اتصال، وليست مشكلة في التصفية.",search_people_or_countries:"ابحث عن الشعوب أو الدول…"},"./locales/ar/messages.json":{menuComingSoon:"القائمة قادمة قريباً",pinHint:{tapDot:"اضغط على نقطة ملوّنة — لا يزال هناك من يحتاج إلى الصلاة"},upg100WallHeading:"قائمتي UPG 100 — قوائم الصلاة والملصقات",upg100WallTag:"تعبئة للصلاة",upg100WallIntro:"وزّع مهمة الصلاة في مجموعات من خمسين ومئة — كما أطعم يسوع الخمسة آلاف (لوقا ٩:١٤). كل ملصق هو قائمة من 100 يمكنك أن تصلي بها وتطبعها وتعلّقها على الحائط — مصلّيًا لأجلهم باسم شعبهم.",loadingNamed:"جارٍ تحميل {name}…",couldNotLoadNamed:"تعذّر تحميل {name}.",engineMissing:"لم يتم تحميل محرك الخرائط {engine}.",packetFailed:"فشل إنشاء الكُتيّب: {reason}",selectionPacketFailed:"فشل إنشاء كُتيّب التحديد: {reason}",posterOneTerritory:"الملصق يطبع منطقة واحدة في كل مرة — {count} محددة.",selectionPosterFailed:"فشل إنشاء ملصق التحديد: {reason}",mapUnavailable:"الخريطة غير متاحة",copied:"تم النسخ!",copyFailed:"فشل النسخ — اضغط Ctrl/Cmd-C",engineNotLoaded:"لم يتم تحميل محرك الخريطة",engineNotLoadedDetail:"لم يتم تحميل محرك الخريطة {engine}. القائمة ووسيلة الإيضاح غير متأثرتين."},"./locales/ar/poster.json":{export_poster:"تصدير الملصق",size:"الحجم",orientation:"الاتجاه",portrait:"طولي",landscape:"عرضي",dpi:"DPI",format:"الصيغة",png_raster:"PNG (نقطي)",pdf_raster:"PDF (نقطي على صفحة متجهية)",title:"العنوان",map_title:"عنوان الخريطة",subtitle:"العنوان الفرعي",slots:"العناصر",scale_bar:"شريط المقياس",north_arrow:"سهم الشمال",footer_attribution:"التذييل (الإسناد مطلوب)",cancel:"إلغاء",map_preview:"معاينة الخريطة",loading_snapshot:"جارٍ تحميل لقطة الخريطة…",preview_unavailable:"المعاينة غير متاحة"},"./locales/ar/search.json":{placeholder:"شعب، مكان، لغة، ديانة",placeholderNoPlaces:"شعب، لغة، ديانة (البحث عن الأماكن يتطلب رمز Mapbox)",labels:{people:"الشعب:",place:"المكان:",language:"اللغة:",religion:"الديانة:"},kinds:{people:"الشعب + الدولة",peopleGroup:"الشعب",bloc:"كتلة التقارب",cluster:"مجموعة شعوب",country:"الدولة",region:"المنطقة",family:"عائلة اللغة",languageKind:"اللغة",dialect:"اللهجة",religionKind:"الدين"},sections:{within:"ضمن {selection}",allData:"كل بيانات DOXA"},upg100Placeholder:"ابحث عن شعب أو قائمة UPG-100 أو منطقة…"},"./locales/ar/tabs.json":{prayer:"الصلاة",adoption:"التبني",engagement:"المشاركة","affinity-blocks":"الشعوب",regions:"المناطق",countries:"الدول","language-families":"اللغات",religion:"الأديان",family:"عائلة اللغة",language:"اللغة",dialect:"اللهجة/التنوع",bloc:"كتلة التقارب",cluster:"المجموعة",group:"الشعب",pgic:"الشعب في الدولة",region:"منطقة WAGF",block:"كتلة WAGF",country:"الدولة",upg100Region:"المنطقة",upg100Zone:"قوائم UPG-100",upg100Group:"مجموعة شعبية",selectView:"اختر العرض",views:"العروض",prayerResources:"موارد الصلاة",map:"الخريطة",countryPosters:"ملصقات الدول"},"./locales/de/grid.json":{search:"Volksgruppen suchen…",hide_filters:"Filter ausblenden",show_filters:"Filter anzeigen",total:"Gesamt",showing:"Angezeigt",load_more:"Mehr laden",full_profile:"Vollständiges Profil",wagf_region:"Region",wagf_block:"Affinitätsblock",rop1:"Volk",religion:"Religion",exact_filter:"Exakt",clear_all:"Alle löschen",loading:"Wird geladen…",no_results:"Keine Volksgruppen entsprechen diesem Filter.",type_to_search:"Zum Suchen tippen...",load_failed:"Die Daten konnten nicht geladen werden. Das ist ein Verbindungsproblem, nicht Ihr Filter.",search_people_or_countries:"Volksgruppen oder Länder suchen…"},"./locales/de/messages.json":{menuComingSoon:"Menü folgt in Kürze",pinHint:{tapDot:"Tippe auf einen farbigen Punkt — jemand braucht noch Gebet"},upg100WallHeading:"Meine UPG-100-Liste — Gebetslisten und Poster",upg100WallTag:"Gebetsmobilisierung",upg100WallIntro:"Teilen Sie die Gebetsaufgabe in Gruppen zu fünfzig und hundert auf — so wie Jesus die 5.000 speiste (Lukas 9,14). Jedes Poster ist eine 100er-Liste, die Sie beten, drucken und an die Wand hängen können — und für sie mit dem Namen ihrer Volksgruppe beten.",loadingNamed:"{name} wird geladen…",couldNotLoadNamed:"{name} konnte nicht geladen werden.",engineMissing:"Die Karten-Engine {engine} wurde nicht geladen.",packetFailed:"Heft fehlgeschlagen: {reason}",selectionPacketFailed:"Heft der Auswahl fehlgeschlagen: {reason}",posterOneTerritory:"Das Plakat druckt ein Gebiet auf einmal — {count} ausgewählt.",selectionPosterFailed:"Plakat der Auswahl fehlgeschlagen: {reason}",mapUnavailable:"Karte nicht verfügbar",copied:"Kopiert!",copyFailed:"Kopieren fehlgeschlagen — Strg/Cmd-C drücken",engineNotLoaded:"Karten-Engine nicht geladen",engineNotLoadedDetail:"Die Karten-Engine {engine} wurde nicht geladen. Liste und Legende sind nicht betroffen."},"./locales/de/poster.json":{export_poster:"Poster exportieren",size:"Größe",orientation:"Ausrichtung",portrait:"Hochformat",landscape:"Querformat",dpi:"DPI",format:"Format",png_raster:"PNG (Raster)",pdf_raster:"PDF (Raster auf Vektorseite)",title:"Titel",map_title:"Kartentitel",subtitle:"Untertitel",slots:"Elemente",scale_bar:"Maßstabsleiste",north_arrow:"Nordpfeil",footer_attribution:"Fußzeile (Quellenangabe erforderlich)",cancel:"Abbrechen",map_preview:"Kartenvorschau",loading_snapshot:"Kartenaufnahme wird geladen…",preview_unavailable:"Vorschau nicht verfügbar"},"./locales/de/search.json":{placeholder:"Volk, Ort, Sprache, Religion",placeholderNoPlaces:"Volk, Sprache, Religion (Ortssuche braucht ein Mapbox-Token)",labels:{people:"Volk:",place:"Ort:",language:"Sprache:",religion:"Religion:"},sections:{within:"Innerhalb {selection}",allData:"Alle DOXA-Daten"},kinds:{people:"Volk + Land",peopleGroup:"Volk",bloc:"Affinitätsblock",cluster:"Völkercluster",country:"Land",region:"Region",family:"Sprachfamilie",languageKind:"Sprache",dialect:"Dialekt",religionKind:"Religion"},upg100Placeholder:"Volksgruppe, UPG-100-Liste oder Region suchen…"},"./locales/de/tabs.json":{prayer:"Gebet",adoption:"Adoption",engagement:"Engagement","affinity-blocks":"Volksgruppen",regions:"Regionen",countries:"Länder","language-families":"Sprachen",religion:"Religionen",family:"Sprachfamilie",language:"Sprache",dialect:"Dialekt/Varietät",bloc:"Affinitätsblock",cluster:"Cluster",group:"Volksgruppe",pgic:"Volksgruppe im Land",region:"WAGF-Region",block:"WAGF-Block",country:"Land",upg100Region:"Region",upg100Zone:"UPG-100-Listen",upg100Group:"Volksgruppe",selectView:"Ansicht wählen",views:"Ansichten",prayerResources:"Gebetsressourcen",map:"Karte",countryPosters:"Länderposter"},"./locales/en/grid.json":{search:"Search people groups…",hide_filters:"Hide Filters",show_filters:"Show Filters",total:"Total",showing:"Showing",load_more:"Load More",full_profile:"Full Profile",wagf_region:"Region",wagf_block:"Affinity Block",rop1:"People Group",religion:"Religion",exact_filter:"Exact",clear_all:"Clear All",loading:"Loading…",no_results:"No people groups match this filter.",type_to_search:"Type to search...",load_failed:"People-group data could not be loaded. This is a connection problem, not your filter.",search_people_or_countries:"Search people groups or countries…"},"./locales/en/messages.json":{menuComingSoon:"Menu coming soon",pinHint:{tapDot:"Tap a coloured dot — someone still needs prayer"},upg100WallHeading:"My UPG 100 List — Prayer Lists & Posters",upg100WallTag:"Prayer Mobilization",upg100WallIntro:"Hand away the prayer task in clusters of fifties and hundreds — the way Jesus fed the 5,000 (Luke 9:14). Each poster is a 100-list you can pray, print, and put on a wall — praying for them by their people group name.",loadingNamed:"Loading {name}…",couldNotLoadNamed:"Could not load {name}.",engineMissing:"The {engine} map engine did not load.",packetFailed:"Packet failed: {reason}",selectionPacketFailed:"Selection packet failed: {reason}",posterOneTerritory:"Poster prints one territory at a time — {count} selected.",selectionPosterFailed:"Selection poster failed: {reason}",mapUnavailable:"Map unavailable",copied:"Copied!",copyFailed:"Copy failed — press Ctrl/Cmd-C",engineNotLoaded:"map engine not loaded",engineNotLoadedDetail:"The {engine} map engine did not load. The list and legend are unaffected."},"./locales/en/poster.json":{export_poster:"Export Poster",size:"Size",orientation:"Orientation",portrait:"Portrait",landscape:"Landscape",dpi:"DPI",format:"Format",png_raster:"PNG (raster)",pdf_raster:"PDF (raster on vector page)",title:"Title",map_title:"Map title",subtitle:"Subtitle",slots:"Slots",scale_bar:"Scale bar",north_arrow:"North arrow",footer_attribution:"Footer (attribution required)",cancel:"Cancel",map_preview:"map preview",loading_snapshot:"Loading map snapshot…",preview_unavailable:"preview unavailable"},"./locales/en/search.json":{placeholder:"People, place, language, religion",placeholderNoPlaces:"People, language, religion (place search needs a Mapbox token)",labels:{people:"People:",place:"Place:",language:"Language:",religion:"Religion:"},kinds:{people:"People Group + Country",peopleGroup:"People Group",bloc:"Affinity Block",cluster:"People Cluster",country:"Country",region:"Region",family:"Language Family",languageKind:"Language",dialect:"Dialect",religionKind:"Religion"},sections:{within:"Within {selection}",allData:"All DOXA Data"},upg100Placeholder:"Search people group, UPG-100 list, or region…"},"./locales/en/tabs.json":{prayer:"Prayer",adoption:"Adoption",engagement:"Engagement","affinity-blocks":"People Groups (Affinity)",regions:"Regions",countries:"Countries","language-families":"Languages",religion:"Religions",family:"Lang Family",language:"Language",dialect:"Dialect/Variety",bloc:"Affinity Block",cluster:"Cluster",group:"People Group",pgic:"PG in Country",region:"WAGF Region",block:"WAGF Bloc",country:"Country",upg100Region:"Region",upg100Zone:"UPG-100 Lists",upg100Group:"People Group",selectView:"Select View",views:"Views",prayerResources:"Prayer Resources",map:"Map",countryPosters:"Country Posters"},"./locales/es/grid.json":{search:"Buscar pueblos…",hide_filters:"Ocultar filtros",show_filters:"Mostrar filtros",total:"Total",showing:"Mostrando",load_more:"Cargar más",full_profile:"Perfil completo",wagf_region:"Región",wagf_block:"Bloque de afinidad",rop1:"Pueblo",religion:"Religión",exact_filter:"Exacto",clear_all:"Borrar todo",loading:"Cargando…",no_results:"Ningún pueblo coincide con este filtro.",type_to_search:"Escribe para buscar...",load_failed:"No se pudieron cargar los datos de pueblos. Es un problema de conexión, no de tu filtro.",search_people_or_countries:"Buscar pueblos o países…"},"./locales/es/messages.json":{menuComingSoon:"Menú próximamente",pinHint:{tapDot:"Toca un punto de color: alguien todavía necesita oración"},upg100WallHeading:"Mi lista UPG 100 — Listas de oración y carteles",upg100WallTag:"Movilización de oración",upg100WallIntro:"Reparte la tarea de la oración en grupos de cincuenta y de cien, como Jesús alimentó a los 5.000 (Lucas 9:14). Cada cartel es una lista de 100 que puedes orar, imprimir y poner en la pared — orando por ellos por el nombre de su pueblo.",loadingNamed:"Cargando {name}…",couldNotLoadNamed:"No se pudo cargar {name}.",engineMissing:"El motor de mapas {engine} no se cargó.",packetFailed:"Error al generar el cuadernillo: {reason}",selectionPacketFailed:"Error al generar el cuadernillo de la selección: {reason}",posterOneTerritory:"El cartel imprime un territorio a la vez: {count} seleccionados.",selectionPosterFailed:"Error al generar el cartel de la selección: {reason}",mapUnavailable:"Mapa no disponible",copied:"¡Copiado!",copyFailed:"Error al copiar: pulsa Ctrl/Cmd-C",engineNotLoaded:"motor de mapas no cargado",engineNotLoadedDetail:"El motor de mapas {engine} no se cargó. La lista y la leyenda no se ven afectadas."},"./locales/es/poster.json":{export_poster:"Exportar póster",size:"Tamaño",orientation:"Orientación",portrait:"Vertical",landscape:"Horizontal",dpi:"DPI",format:"Formato",png_raster:"PNG (ráster)",pdf_raster:"PDF (ráster en página vectorial)",title:"Título",map_title:"Título del mapa",subtitle:"Subtítulo",slots:"Elementos",scale_bar:"Barra de escala",north_arrow:"Flecha norte",footer_attribution:"Pie de página (atribución obligatoria)",cancel:"Cancelar",map_preview:"vista previa del mapa",loading_snapshot:"Cargando la captura del mapa…",preview_unavailable:"vista previa no disponible"},"./locales/es/search.json":{placeholder:"Pueblo, lugar, idioma, religión",placeholderNoPlaces:"Pueblo, idioma, religión (buscar lugares requiere un token de Mapbox)",labels:{people:"Pueblo:",place:"Lugar:",language:"Idioma:",religion:"Religión:"},kinds:{people:"Pueblo + país",peopleGroup:"Pueblo",bloc:"Bloque de afinidad",cluster:"Clúster de pueblos",country:"País",region:"Región",family:"Familia lingüística",languageKind:"Idioma",dialect:"Dialecto",religionKind:"Religión"},sections:{within:"Dentro de {selection}",allData:"Todos los datos DOXA"},upg100Placeholder:"Buscar pueblo, lista UPG-100 o región…"},"./locales/es/tabs.json":{prayer:"Oración",adoption:"Adopción",engagement:"Compromiso","affinity-blocks":"Pueblos",regions:"Regiones",countries:"Países","language-families":"Idiomas",religion:"Religiones",family:"Familia lingüística",language:"Idioma",dialect:"Dialecto/Variedad",bloc:"Bloque de afinidad",cluster:"Clúster",group:"Pueblo",pgic:"Pueblo en país",region:"Región WAGF",block:"Bloque WAGF",country:"País",upg100Region:"Región",upg100Zone:"Listas UPG-100",upg100Group:"Grupo étnico",selectView:"Seleccionar vista",views:"Vistas",prayerResources:"Recursos de oración",map:"Mapa",countryPosters:"Carteles por país"},"./locales/fr/grid.json":{search:"Rechercher des peuples…",hide_filters:"Masquer les filtres",show_filters:"Afficher les filtres",total:"Total",showing:"Affichage",load_more:"Charger plus",full_profile:"Profil complet",wagf_region:"Région",wagf_block:"Bloc d'affinité",rop1:"Peuple",religion:"Religion",exact_filter:"Exact",clear_all:"Tout effacer",loading:"Chargement…",no_results:"Aucun peuple ne correspond à ce filtre.",type_to_search:"Tapez pour rechercher...",load_failed:"Les données n’ont pas pu être chargées. C’est un problème de connexion, pas votre filtre.",search_people_or_countries:"Rechercher des peuples ou des pays…"},"./locales/fr/messages.json":{menuComingSoon:"Menu bientôt disponible",pinHint:{tapDot:"Touchez un point coloré — quelqu’un a encore besoin de prière"},upg100WallHeading:"Ma liste UPG 100 — Listes de prière et affiches",upg100WallTag:"Mobilisation pour la prière",upg100WallIntro:"Répartissez la tâche de la prière par groupes de cinquante et de cent — comme Jésus a nourri les 5 000 (Luc 9:14). Chaque affiche est une liste de 100 que vous pouvez prier, imprimer et afficher au mur — en priant pour eux par le nom de leur peuple.",loadingNamed:"Chargement de {name}…",couldNotLoadNamed:"Impossible de charger {name}.",engineMissing:"Le moteur de carte {engine} ne s’est pas chargé.",packetFailed:"Échec du livret : {reason}",selectionPacketFailed:"Échec du livret de la sélection : {reason}",posterOneTerritory:"L’affiche imprime un territoire à la fois — {count} sélectionnés.",selectionPosterFailed:"Échec de l’affiche de la sélection : {reason}",mapUnavailable:"Carte indisponible",copied:"Copié !",copyFailed:"Échec de la copie — appuyez sur Ctrl/Cmd-C",engineNotLoaded:"moteur cartographique non chargé",engineNotLoadedDetail:"Le moteur cartographique {engine} ne s’est pas chargé. La liste et la légende ne sont pas affectées."},"./locales/fr/poster.json":{export_poster:"Exporter l'affiche",size:"Taille",orientation:"Orientation",portrait:"Portrait",landscape:"Paysage",dpi:"DPI",format:"Format",png_raster:"PNG (raster)",pdf_raster:"PDF (raster sur page vectorielle)",title:"Titre",map_title:"Titre de la carte",subtitle:"Sous-titre",slots:"Éléments",scale_bar:"Échelle",north_arrow:"Flèche du nord",footer_attribution:"Pied de page (attribution requise)",cancel:"Annuler",map_preview:"aperçu de la carte",loading_snapshot:"Chargement de l'instantané de la carte…",preview_unavailable:"aperçu indisponible"},"./locales/fr/search.json":{placeholder:"Peuple, lieu, langue, religion",placeholderNoPlaces:"Peuple, langue, religion (la recherche de lieux requiert un jeton Mapbox)",labels:{people:"Peuple :",place:"Lieu :",language:"Langue :",religion:"Religion :"},kinds:{people:"Peuple + pays",peopleGroup:"Peuple",bloc:"Bloc d'affinité",cluster:"Grappe de peuples",country:"Pays",region:"Région",family:"Famille linguistique",languageKind:"Langue",dialect:"Dialecte",religionKind:"Religion"},sections:{within:"Dans {selection}",allData:"Toutes les données DOXA"},upg100Placeholder:"Rechercher un peuple, une liste UPG-100 ou une région…"},"./locales/fr/tabs.json":{prayer:"Prière",adoption:"Adoption",engagement:"Engagement","affinity-blocks":"Peuples",regions:"Régions",countries:"Pays","language-families":"Langues",religion:"Religions",family:"Famille linguistique",language:"Langue",dialect:"Dialecte/Variété",bloc:"Bloc d'affinité",cluster:"Grappe",group:"Peuple",pgic:"Peuple dans le pays",region:"Région WAGF",block:"Bloc WAGF",country:"Pays",upg100Region:"Région",upg100Zone:"Listes UPG-100",upg100Group:"Groupe de peuples",selectView:"Choisir la vue",views:"Vues",prayerResources:"Ressources de prière",map:"Carte",countryPosters:"Affiches par pays"},"./locales/hi/grid.json":{search:"जनसमूह खोजें…",hide_filters:"फ़िल्टर छिपाएँ",show_filters:"फ़िल्टर दिखाएँ",total:"कुल",showing:"दिखा रहे हैं",load_more:"और देखें",full_profile:"पूरी प्रोफ़ाइल",wagf_region:"क्षेत्र",wagf_block:"समानता समूह",rop1:"जनसमूह",religion:"धर्म",exact_filter:"सटीक",clear_all:"सब हटाएँ",loading:"लोड हो रहा है…",no_results:"इस फ़िल्टर से कोई जनसमूह मेल नहीं खाता।",type_to_search:"खोजने के लिए लिखें...",load_failed:"जनसमूह डेटा लोड नहीं हो सका। यह कनेक्शन की समस्या है, आपके फ़िल्टर की नहीं।",search_people_or_countries:"जनसमूह या देश खोजें…"},"./locales/hi/messages.json":{menuComingSoon:"मेनू शीघ्र आ रहा है",pinHint:{tapDot:"किसी रंगीन बिंदु पर टैप करें — किसी को अभी भी प्रार्थना की आवश्यकता है"},upg100WallHeading:"मेरी UPG 100 सूची — प्रार्थना सूचियाँ और पोस्टर",upg100WallTag:"प्रार्थना लामबंदी",upg100WallIntro:"प्रार्थना के काम को पचास-पचास और सौ-सौ के समूहों में बाँटें — जैसे यीशु ने 5,000 लोगों को खिलाया (लूका 9:14)। हर पोस्टर 100 की एक सूची है जिसके लिए आप प्रार्थना कर सकते हैं, छाप सकते हैं और दीवार पर लगा सकते हैं — उनके लिए उनके जनसमूह के नाम से प्रार्थना करते हुए।",loadingNamed:"{name} लोड हो रहा है…",couldNotLoadNamed:"{name} लोड नहीं हो सका।",engineMissing:"{engine} नक्शा इंजन लोड नहीं हुआ।",packetFailed:"पुस्तिका विफल: {reason}",selectionPacketFailed:"चयन की पुस्तिका विफल: {reason}",posterOneTerritory:"पोस्टर एक समय में एक क्षेत्र छापता है — {count} चयनित।",selectionPosterFailed:"चयन का पोस्टर विफल: {reason}",mapUnavailable:"मानचित्र अनुपलब्ध",copied:"कॉपी हो गया!",copyFailed:"कॉपी विफल — Ctrl/Cmd-C दबाएँ",engineNotLoaded:"मानचित्र इंजन लोड नहीं हुआ",engineNotLoadedDetail:"{engine} मानचित्र इंजन लोड नहीं हुआ। सूची और लेजेंड अप्रभावित हैं।"},"./locales/hi/poster.json":{export_poster:"पोस्टर निर्यात करें",size:"आकार",orientation:"अभिविन्यास",portrait:"पोर्ट्रेट",landscape:"लैंडस्केप",dpi:"DPI",format:"प्रारूप",png_raster:"PNG (रास्टर)",pdf_raster:"PDF (वेक्टर पृष्ठ पर रास्टर)",title:"शीर्षक",map_title:"मानचित्र शीर्षक",subtitle:"उपशीर्षक",slots:"स्लॉट",scale_bar:"स्केल बार",north_arrow:"उत्तर तीर",footer_attribution:"फ़ुटर (एट्रिब्यूशन आवश्यक)",cancel:"रद्द करें",map_preview:"मानचित्र पूर्वावलोकन",loading_snapshot:"मानचित्र स्नैपशॉट लोड हो रहा है…",preview_unavailable:"पूर्वावलोकन उपलब्ध नहीं"},"./locales/hi/search.json":{placeholder:"लोग, स्थान, भाषा, धर्म",placeholderNoPlaces:"लोग, भाषा, धर्म (स्थान खोज के लिए Mapbox टोकन चाहिए)",labels:{people:"लोग:",place:"स्थान:",language:"भाषा:",religion:"धर्म:"},sections:{within:"{selection} के भीतर",allData:"सभी DOXA डेटा"},kinds:{people:"जनसमूह + देश",peopleGroup:"जनसमूह",bloc:"समानता समूह",cluster:"जनसमूह क्लस्टर",country:"देश",region:"क्षेत्र",family:"भाषा परिवार",languageKind:"भाषा",dialect:"बोली",religionKind:"धर्म"},upg100Placeholder:"जनसमूह, UPG-100 सूची या क्षेत्र खोजें…"},"./locales/hi/tabs.json":{prayer:"प्रार्थना",adoption:"गोद लेना",engagement:"सहभागिता","affinity-blocks":"जनसमूह",regions:"क्षेत्र",countries:"देश","language-families":"भाषाएँ",religion:"धर्म",family:"भाषा परिवार",language:"भाषा",dialect:"बोली/रूप",bloc:"समानता समूह",cluster:"क्लस्टर",group:"जनसमूह",pgic:"देश में जनसमूह",region:"WAGF क्षेत्र",block:"WAGF ब्लॉक",country:"देश",upg100Region:"क्षेत्र",upg100Zone:"UPG-100 सूचियाँ",upg100Group:"जनसमूह",selectView:"दृश्य चुनें",views:"दृश्य",prayerResources:"प्रार्थना संसाधन",map:"मानचित्र",countryPosters:"देश पोस्टर"},"./locales/it/grid.json":{search:"Cerca popoli…",hide_filters:"Nascondi filtri",show_filters:"Mostra filtri",total:"Totale",showing:"Mostrati",load_more:"Carica altro",full_profile:"Profilo completo",wagf_region:"Regione",wagf_block:"Blocco di affinità",rop1:"Popolo",religion:"Religione",exact_filter:"Esatto",clear_all:"Cancella tutto",loading:"Caricamento…",no_results:"Nessun popolo corrisponde a questo filtro.",type_to_search:"Digita per cercare...",load_failed:"Impossibile caricare i dati dei popoli. È un problema di connessione, non del filtro.",search_people_or_countries:"Cerca popoli o paesi…"},"./locales/it/messages.json":{menuComingSoon:"Menu in arrivo",pinHint:{tapDot:"Tocca un punto colorato — qualcuno ha ancora bisogno di preghiera"},upg100WallHeading:"La mia lista UPG 100 — Liste di preghiera e poster",upg100WallTag:"Mobilitazione alla preghiera",upg100WallIntro:"Distribuisci il compito della preghiera in gruppi di cinquanta e di cento — come Gesù sfamò i 5.000 (Luca 9:14). Ogni poster è una lista di 100 che puoi pregare, stampare e appendere al muro — pregando per loro con il nome del loro popolo.",loadingNamed:"Caricamento di {name}…",couldNotLoadNamed:"Impossibile caricare {name}.",engineMissing:"Il motore di mappa {engine} non è stato caricato.",packetFailed:"Libretto non riuscito: {reason}",selectionPacketFailed:"Libretto della selezione non riuscito: {reason}",posterOneTerritory:"Il manifesto stampa un territorio alla volta — {count} selezionati.",selectionPosterFailed:"Manifesto della selezione non riuscito: {reason}",mapUnavailable:"Mappa non disponibile",copied:"Copiato!",copyFailed:"Copia non riuscita — premi Ctrl/Cmd-C",engineNotLoaded:"motore di mappe non caricato",engineNotLoadedDetail:"Il motore di mappe {engine} non si è caricato. L’elenco e la legenda non sono interessati."},"./locales/it/poster.json":{export_poster:"Esporta poster",size:"Dimensione",orientation:"Orientamento",portrait:"Verticale",landscape:"Orizzontale",dpi:"DPI",format:"Formato",png_raster:"PNG (raster)",pdf_raster:"PDF (raster su pagina vettoriale)",title:"Titolo",map_title:"Titolo della mappa",subtitle:"Sottotitolo",slots:"Elementi",scale_bar:"Barra della scala",north_arrow:"Freccia nord",footer_attribution:"Piè di pagina (attribuzione obbligatoria)",cancel:"Annulla",map_preview:"anteprima della mappa",loading_snapshot:"Caricamento dell'istantanea della mappa…",preview_unavailable:"anteprima non disponibile"},"./locales/it/search.json":{placeholder:"Popolo, luogo, lingua, religione",placeholderNoPlaces:"Popolo, lingua, religione (la ricerca di luoghi richiede un token Mapbox)",labels:{people:"Popolo:",place:"Luogo:",language:"Lingua:",religion:"Religione:"},sections:{within:"In {selection}",allData:"Tutti i dati DOXA"},kinds:{people:"Popolo + paese",peopleGroup:"Popolo",bloc:"Blocco di affinità",cluster:"Cluster di popoli",country:"Paese",region:"Regione",family:"Famiglia linguistica",languageKind:"Lingua",dialect:"Dialetto",religionKind:"Religione"},upg100Placeholder:"Cerca popolo, elenco UPG-100 o regione…"},"./locales/it/tabs.json":{prayer:"Preghiera",adoption:"Adozione",engagement:"Impegno","affinity-blocks":"Popoli",regions:"Regioni",countries:"Paesi","language-families":"Lingue",religion:"Religioni",family:"Famiglia ling.",language:"Lingua",dialect:"Dialetto/Variante",bloc:"Blocco di affinità",cluster:"Cluster",group:"Popolo",pgic:"Popolo nel paese",region:"Regione WAGF",block:"Blocco WAGF",country:"Paese",upg100Region:"Regione",upg100Zone:"Liste UPG-100",upg100Group:"Gruppo etnico",selectView:"Seleziona vista",views:"Viste",prayerResources:"Risorse di preghiera",map:"Mappa",countryPosters:"Poster per paese"},"./locales/pt/grid.json":{search:"Pesquisar povos…",hide_filters:"Ocultar filtros",show_filters:"Mostrar filtros",total:"Total",showing:"Mostrando",load_more:"Carregar mais",full_profile:"Perfil completo",wagf_region:"Região",wagf_block:"Bloco de afinidade",rop1:"Povo",religion:"Religião",exact_filter:"Exato",clear_all:"Limpar tudo",loading:"A carregar…",no_results:"Nenhum povo corresponde a este filtro.",type_to_search:"Escreva para pesquisar...",load_failed:"Não foi possível carregar os dados dos povos. É um problema de ligação, não do seu filtro.",search_people_or_countries:"Pesquisar povos ou países…"},"./locales/pt/messages.json":{menuComingSoon:"Menu em breve",pinHint:{tapDot:"Toque num ponto colorido — alguém ainda precisa de oração"},upg100WallHeading:"A minha lista UPG 100 — Listas de oração e cartazes",upg100WallTag:"Mobilização de oração",upg100WallIntro:"Reparta a tarefa da oração em grupos de cinquenta e de cem — como Jesus alimentou os 5.000 (Lucas 9:14). Cada cartaz é uma lista de 100 que pode orar, imprimir e pôr na parede — orando por eles pelo nome do seu povo.",loadingNamed:"Carregando {name}…",couldNotLoadNamed:"Não foi possível carregar {name}.",engineMissing:"O motor de mapa {engine} não foi carregado.",packetFailed:"Falha ao gerar o caderno: {reason}",selectionPacketFailed:"Falha ao gerar o caderno da seleção: {reason}",posterOneTerritory:"O cartaz imprime um território de cada vez — {count} selecionados.",selectionPosterFailed:"Falha ao gerar o cartaz da seleção: {reason}",mapUnavailable:"Mapa indisponível",copied:"Copiado!",copyFailed:"Falha ao copiar — pressione Ctrl/Cmd-C",engineNotLoaded:"motor de mapas não carregado",engineNotLoadedDetail:"O motor de mapas {engine} não carregou. A lista e a legenda não são afetadas."},"./locales/pt/poster.json":{export_poster:"Exportar pôster",size:"Tamanho",orientation:"Orientação",portrait:"Retrato",landscape:"Paisagem",dpi:"DPI",format:"Formato",png_raster:"PNG (raster)",pdf_raster:"PDF (raster em página vetorial)",title:"Título",map_title:"Título do mapa",subtitle:"Subtítulo",slots:"Elementos",scale_bar:"Barra de escala",north_arrow:"Seta norte",footer_attribution:"Rodapé (atribuição obrigatória)",cancel:"Cancelar",map_preview:"pré-visualização do mapa",loading_snapshot:"Carregando o instantâneo do mapa…",preview_unavailable:"pré-visualização indisponível"},"./locales/pt/search.json":{placeholder:"Povo, local, língua, religião",placeholderNoPlaces:"Povo, língua, religião (a busca de locais requer um token do Mapbox)",labels:{people:"Povo:",place:"Local:",language:"Língua:",religion:"Religião:"},kinds:{people:"Povo + país",peopleGroup:"Povo",bloc:"Bloco de afinidade",cluster:"Agrupamento de povos",country:"País",region:"Região",family:"Família linguística",languageKind:"Idioma",dialect:"Dialeto",religionKind:"Religião"},sections:{within:"Dentro de {selection}",allData:"Todos os dados DOXA"},upg100Placeholder:"Procurar povo, lista UPG-100 ou região…"},"./locales/pt/tabs.json":{prayer:"Oração",adoption:"Adoção",engagement:"Engajamento","affinity-blocks":"Povos",regions:"Regiões",countries:"Países","language-families":"Idiomas",religion:"Religiões",family:"Família linguística",language:"Idioma",dialect:"Dialeto/Variedade",bloc:"Bloco de afinidade",cluster:"Agrupamento",group:"Povo",pgic:"Povo no país",region:"Região WAGF",block:"Bloco WAGF",country:"País",upg100Region:"Região",upg100Zone:"Listas UPG-100",upg100Group:"Grupo étnico",selectView:"Selecionar vista",views:"Vistas",prayerResources:"Recursos de oração",map:"Mapa",countryPosters:"Cartazes por país"},"./locales/ro/grid.json":{search:"Caută popoare…",hide_filters:"Ascunde filtrele",show_filters:"Arată filtrele",total:"Total",showing:"Se afișează",load_more:"Încarcă mai mult",full_profile:"Profil complet",wagf_region:"Regiune",wagf_block:"Bloc de afinitate",rop1:"Popor",religion:"Religie",exact_filter:"Exact",clear_all:"Șterge tot",loading:"Se încarcă…",no_results:"Niciun popor nu corespunde acestui filtru.",type_to_search:"Scrie pentru a căuta...",load_failed:"Datele despre popoare nu au putut fi încărcate. Este o problemă de conexiune, nu a filtrului.",search_people_or_countries:"Caută popoare sau țări…"},"./locales/ro/messages.json":{menuComingSoon:"Meniu în curând",pinHint:{tapDot:"Atinge un punct colorat — cineva are încă nevoie de rugăciune"},upg100WallHeading:"Lista mea UPG 100 — Liste de rugăciune și afișe",upg100WallTag:"Mobilizare pentru rugăciune",upg100WallIntro:"Împarte sarcina rugăciunii în grupuri de câte cincizeci și o sută — așa cum Isus a hrănit cei 5.000 (Luca 9:14). Fiecare afiș este o listă de 100 pe care o poți ruga, tipări și pune pe perete — rugându-te pentru ei pe numele poporului lor.",loadingNamed:"Se încarcă {name}…",couldNotLoadNamed:"Nu s-a putut încărca {name}.",engineMissing:"Motorul de hartă {engine} nu s-a încărcat.",packetFailed:"Broșura a eșuat: {reason}",selectionPacketFailed:"Broșura selecției a eșuat: {reason}",posterOneTerritory:"Afișul tipărește un teritoriu pe rând — {count} selectate.",selectionPosterFailed:"Afișul selecției a eșuat: {reason}",mapUnavailable:"Harta indisponibilă",copied:"Copiat!",copyFailed:"Copierea a eșuat — apasă Ctrl/Cmd-C",engineNotLoaded:"motorul de hărți nu s-a încărcat",engineNotLoadedDetail:"Motorul de hărți {engine} nu s-a încărcat. Lista și legenda nu sunt afectate."},"./locales/ro/poster.json":{export_poster:"Exportă posterul",size:"Dimensiune",orientation:"Orientare",portrait:"Portret",landscape:"Peisaj",dpi:"DPI",format:"Format",png_raster:"PNG (raster)",pdf_raster:"PDF (raster pe pagină vectorială)",title:"Titlu",map_title:"Titlul hărții",subtitle:"Subtitlu",slots:"Elemente",scale_bar:"Bară de scară",north_arrow:"Săgeata nord",footer_attribution:"Subsol (atribuire obligatorie)",cancel:"Anulează",map_preview:"previzualizare hartă",loading_snapshot:"Se încarcă instantaneul hărții…",preview_unavailable:"previzualizare indisponibilă"},"./locales/ro/search.json":{placeholder:"Popor, loc, limbă, religie",placeholderNoPlaces:"Popor, limbă, religie (căutarea locurilor necesită un token Mapbox)",labels:{people:"Popor:",place:"Loc:",language:"Limbă:",religion:"Religie:"},sections:{within:"În {selection}",allData:"Toate datele DOXA"},kinds:{people:"Popor + țară",peopleGroup:"Popor",bloc:"Bloc de afinitate",cluster:"Grup de popoare",country:"Țară",region:"Regiune",family:"Familie de limbi",languageKind:"Limbă",dialect:"Dialect",religionKind:"Religie"},upg100Placeholder:"Caută popor, listă UPG-100 sau regiune…"},"./locales/ro/tabs.json":{prayer:"Rugăciune",adoption:"Adopție",engagement:"Implicare","affinity-blocks":"Popoare",regions:"Regiuni",countries:"Țări","language-families":"Limbi",religion:"Religii",family:"Familie de limbi",language:"Limbă",dialect:"Dialect/Variantă",bloc:"Bloc de afinitate",cluster:"Grup",group:"Popor",pgic:"Popor în țară",region:"Regiune WAGF",block:"Bloc WAGF",country:"Țară",upg100Region:"Regiune",upg100Zone:"Liste UPG-100",upg100Group:"Grup etnic",selectView:"Alege vizualizarea",views:"Vizualizări",prayerResources:"Resurse de rugăciune",map:"Hartă",countryPosters:"Afișe pe țări"},"./locales/ru/grid.json":{search:"Поиск народов…",hide_filters:"Скрыть фильтры",show_filters:"Показать фильтры",total:"Всего",showing:"Показано",load_more:"Показать ещё",full_profile:"Полный профиль",wagf_region:"Регион",wagf_block:"Блок родства",rop1:"Народ",religion:"Религия",exact_filter:"Точное совпадение",clear_all:"Очистить всё",loading:"Загрузка…",no_results:"Нет народов, соответствующих этому фильтру.",type_to_search:"Введите для поиска...",load_failed:"Не удалось загрузить данные о народах. Это проблема соединения, а не фильтра.",search_people_or_countries:"Поиск народов или стран…"},"./locales/ru/messages.json":{menuComingSoon:"Меню скоро появится",pinHint:{tapDot:"Нажмите на цветную точку — кому-то всё ещё нужна молитва"},upg100WallHeading:"Мой список UPG 100 — молитвенные списки и плакаты",upg100WallTag:"Молитвенная мобилизация",upg100WallIntro:"Разделите молитвенный труд на группы по пятьдесят и по сто — так Иисус накормил 5000 (Луки 9:14). Каждый плакат — это список из 100, о котором можно молиться, распечатать и повесить на стену, молясь о них по имени их народа.",loadingNamed:"Загрузка {name}…",couldNotLoadNamed:"Не удалось загрузить {name}.",engineMissing:"Картографический движок {engine} не загрузился.",packetFailed:"Не удалось создать буклет: {reason}",selectionPacketFailed:"Не удалось создать буклет выбора: {reason}",posterOneTerritory:"Плакат печатает по одной территории — выбрано {count}.",selectionPosterFailed:"Не удалось создать плакат выбора: {reason}",mapUnavailable:"Карта недоступна",copied:"Скопировано!",copyFailed:"Не удалось скопировать — нажмите Ctrl/Cmd-C",engineNotLoaded:"движок карты не загружен",engineNotLoadedDetail:"Движок карты {engine} не загрузился. Список и легенда не затронуты."},"./locales/ru/poster.json":{export_poster:"Экспорт плаката",size:"Размер",orientation:"Ориентация",portrait:"Портретная",landscape:"Альбомная",dpi:"DPI",format:"Формат",png_raster:"PNG (растр)",pdf_raster:"PDF (растр на векторной странице)",title:"Заголовок",map_title:"Заголовок карты",subtitle:"Подзаголовок",slots:"Элементы",scale_bar:"Масштабная линейка",north_arrow:"Указатель севера",footer_attribution:"Нижний колонтитул (указание источника обязательно)",cancel:"Отмена",map_preview:"предпросмотр карты",loading_snapshot:"Загрузка снимка карты…",preview_unavailable:"предпросмотр недоступен"},"./locales/ru/search.json":{placeholder:"Народ, место, язык, религия",placeholderNoPlaces:"Народ, язык, религия (для поиска мест нужен токен Mapbox)",labels:{people:"Народ:",place:"Место:",language:"Язык:",religion:"Религия:"},kinds:{people:"Народ + страна",peopleGroup:"Народ",bloc:"Блок родства",cluster:"Кластер народов",country:"Страна",region:"Регион",family:"Языковая семья",languageKind:"Язык",dialect:"Диалект",religionKind:"Религия"},sections:{within:"В пределах {selection}",allData:"Все данные DOXA"},upg100Placeholder:"Поиск народа, списка UPG-100 или региона…"},"./locales/ru/tabs.json":{prayer:"Молитва",adoption:"Усыновление",engagement:"Вовлечённость","affinity-blocks":"Народы",regions:"Регионы",countries:"Страны","language-families":"Языки",religion:"Религии",family:"Языковая семья",language:"Язык",dialect:"Диалект/вариант",bloc:"Блок родства",cluster:"Кластер",group:"Народ",pgic:"Народ в стране",region:"Регион WAGF",block:"Блок WAGF",country:"Страна",upg100Region:"Регион",upg100Zone:"Списки UPG-100",upg100Group:"Народ",selectView:"Выбрать вид",views:"Виды",prayerResources:"Молитвенные ресурсы",map:"Карта",countryPosters:"Плакаты по странам"},"./locales/zh/grid.json":{search:"搜索民族…",hide_filters:"隐藏筛选",show_filters:"显示筛选",total:"总计",showing:"显示",load_more:"加载更多",full_profile:"完整档案",wagf_region:"区域",wagf_block:"亲缘板块",rop1:"民族",religion:"宗教",exact_filter:"精确",clear_all:"全部清除",loading:"加载中…",no_results:"没有符合此筛选条件的民族。",type_to_search:"输入以搜索...",load_failed:"无法加载民族数据。这是连接问题,而不是筛选问题。",search_people_or_countries:"搜索民族或国家…"},"./locales/zh/messages.json":{menuComingSoon:"菜单即将推出",pinHint:{tapDot:"点按一个彩色圆点——仍有人需要祷告"},upg100WallHeading:"我的 UPG 100 名單 — 禱告名單與海報",upg100WallTag:"禱告動員",upg100WallIntro:"將禱告的工作分成五十人、一百人一組 — 就像耶穌餵飽五千人那樣(路加福音 9:14)。每一張海報都是一份 100 人名單,你可以為他們禱告、列印出來、貼在牆上 — 按著他們族群的名字為他們禱告。",loadingNamed:"正在加载{name}…",couldNotLoadNamed:"无法加载{name}。",engineMissing:"{engine} 地图引擎未能加载。",packetFailed:"祷告册生成失败:{reason}",selectionPacketFailed:"所选内容的祷告册生成失败:{reason}",posterOneTerritory:"海报一次只能打印一个区域——已选 {count} 个。",selectionPosterFailed:"所选内容的海报生成失败:{reason}",mapUnavailable:"地图不可用",copied:"已复制!",copyFailed:"复制失败——请按 Ctrl/Cmd-C",engineNotLoaded:"地图引擎未加载",engineNotLoadedDetail:"{engine} 地图引擎未能加载。列表和图例不受影响。"},"./locales/zh/poster.json":{export_poster:"导出海报",size:"尺寸",orientation:"方向",portrait:"纵向",landscape:"横向",dpi:"DPI",format:"格式",png_raster:"PNG(位图)",pdf_raster:"PDF(矢量页面上的位图)",title:"标题",map_title:"地图标题",subtitle:"副标题",slots:"元素",scale_bar:"比例尺",north_arrow:"指北针",footer_attribution:"页脚(必须署名)",cancel:"取消",map_preview:"地图预览",loading_snapshot:"正在加载地图快照…",preview_unavailable:"预览不可用"},"./locales/zh/search.json":{placeholder:"民族、地点、语言、宗教",placeholderNoPlaces:"民族、语言、宗教(地点搜索需要 Mapbox 令牌)",labels:{people:"民族:",place:"地点:",language:"语言:",religion:"宗教:"},sections:{within:"在 {selection} 之內",allData:"所有 DOXA 資料"},kinds:{people:"民族 + 国家",peopleGroup:"民族",bloc:"亲缘板块",cluster:"民族群",country:"国家",region:"区域",family:"语系",languageKind:"语言",dialect:"方言",religionKind:"宗教"},upg100Placeholder:"搜索民族、UPG-100 名单或区域…"},"./locales/zh/tabs.json":{prayer:"祷告",adoption:"认领",engagement:"参与","affinity-blocks":"民族",regions:"区域",countries:"国家","language-families":"语言",religion:"宗教",family:"语系",language:"语言",dialect:"方言/变体",bloc:"亲缘板块",cluster:"民族群",group:"民族",pgic:"国内民族",region:"WAGF 区域",block:"WAGF 板块",country:"国家",upg100Region:"区域",upg100Zone:"UPG-100 名单",upg100Group:"族群",selectView:"選擇檢視",views:"檢視",prayerResources:"禱告資源",map:"地圖",countryPosters:"国家海报"}}),Dt={};for(const[e,t]of Object.entries(rl)){const o=e.match(/\.\/locales\/([^/]+)\/([^/]+)\.json$/);if(!o)continue;const[,s,n]=o;Dt[s]??(Dt[s]={}),Dt[s][n]=t}const vi=["ar","de","en","es","fr","hi","it","pt","ro","ru","zh"];function ll(){try{const e=new URLSearchParams(window.location.search);return(e.get("lang")||e.get("locale")||"").split("-")[0].toLowerCase()}catch{return""}}function cl(){var s;const e=ll();if(vi.includes(e))return e;const o=(((s=document==null?void 0:document.documentElement)==null?void 0:s.lang)||"").split("-")[0].toLowerCase();return vi.includes(o)?o:"en"}const pl="__DOXA_PAGE_LOCALE";function dl(){try{return typeof window<"u"&&window[pl]||""}catch{return""}}function ul(e,t){const o=n=>{let i=Dt[n];for(const a of String(e).split(".")){if(!i||typeof i!="object")return;i=i[a]}return typeof i=="string"?i:void 0},s=dl()||cl();return o(s)??o("en")}function fl(e,t){const o=Qn(),s=t;yn(()=>{var l;if(!o)return;const n=(l=o.proxy)==null?void 0:l.$el;if(!n)return;const i=n.getRootNode();if(!(i instanceof ShadowRoot))return;const a=i.querySelector(`style[data-shadow-styles="${s}"]`);if(a){a.textContent!==e&&(a.textContent=e);return}const r=document.createElement("style");r.setAttribute("data-shadow-styles",s),r.textContent=e,i.appendChild(r)})}const yi={menu:'',map:'',globe:'',heart:'',prayer:'',list:'',users:'',flag:'',target:'',pin:'',monitor:'',chart:'',folder:'',layers:'',flask:'',share:'',beaker:'',chevron:'',grid:'',tree:'',dots:'',embed:'',send:'',poster:'',search:'',book:'',wifi:''};function gl(e,t=""){const o=yi[e]||yi.map;return``}const hl=".vtl{position:absolute;top:0;right:0;bottom:0;left:0;display:grid!important;grid-template-rows:auto 1fr;height:100%;width:100%;min-height:420px;background:#f3f3f1;color:#3b463d;font-family:Public Sans,-apple-system,BlinkMacSystemFont,Segoe UI,system-ui,sans-serif;-webkit-font-smoothing:antialiased;--vtl-accent:#92b195;--vtl-border:#d1d4cd;--vtl-elevated:#ffffff;--vtl-accented:#d1d4cd;--vtl-muted:#6d766e;--vtl-rail:256px}.vtl.no-header{grid-template-rows:1fr}.vtl-top{flex:0 0 auto;display:flex;align-items:center;gap:10px;box-sizing:border-box;min-height:64px;padding:8px 16px;border-bottom:1px solid var(--vtl-border);background:#fff}.vtl-menu{display:none;font:16px/1 system-ui;color:#3b463d;background:#d1d4cd;border:1px solid #d1d4cd;border-radius:8px;padding:5px 10px;cursor:pointer}.vtl-fab{position:absolute;z-index:15;left:calc(12px + env(safe-area-inset-left));bottom:calc(12px + env(safe-area-inset-bottom));width:44px;height:44px;display:flex;align-items:center;justify-content:center;font:18px/1 system-ui;color:#3b463d;background:#fff;border:1px solid var(--vtl-border);border-radius:50%;box-shadow:0 2px 10px #0000002e;cursor:pointer}.vtl-fab:hover{background:#d1d4cd}.vtl-fab:focus-visible{outline:2px solid var(--vtl-accent);outline-offset:2px}.vtl-menu:hover{background:#d1d4cd}.vtl-brand{display:inline-flex;align-items:center}.vtl-brand:empty{display:none}.vtl-title{font-size:15px;font-weight:600;letter-spacing:-.01em;color:#3b463d}.vtl-meta{color:var(--vtl-muted);font-size:12px;margin-left:auto;display:inline-flex;align-items:center;gap:8px}.vtl-body{min-height:0;position:relative;display:flex}.vtl-nav{position:absolute;top:0;bottom:0;left:0;z-index:5;width:256px;box-sizing:border-box;overflow-y:auto;overflow-x:hidden;border-right:1px solid var(--vtl-border);padding:12px 12px 20px;background:#fff;scrollbar-width:thin;scrollbar-color:#c4c8c0 transparent;contain:layout paint;transform:translate(0);transition:transform .2s cubic-bezier(.4,0,.2,1);will-change:transform}.vtl-nav::-webkit-scrollbar{width:8px;height:8px}.vtl-nav::-webkit-scrollbar-track{background:transparent}.vtl-nav::-webkit-scrollbar-thumb{background:#c4c8c0;border-radius:8px}.vtl-nav::-webkit-scrollbar-thumb:hover{background:#9aa197}.vtl-collapse{display:flex;align-items:center;gap:8px;width:100%;box-sizing:border-box;margin:0 0 8px;padding:7px 10px;border:1px solid var(--vtl-border);border-radius:8px;background:#d1d4cd;color:var(--vtl-muted);font:inherit;font-size:12px;cursor:pointer}.vtl-collapse:hover{background:var(--vtl-accented);color:#3b463d}.vtl-collapse:focus-visible{outline:2px solid var(--vtl-accent);outline-offset:-2px}.vtl-collapse-ic{flex:0 0 auto;display:inline-flex;transition:transform .16s ease;transform:rotate(180deg)}.vtl-collapse-ic svg{width:16px;height:16px}.vtl-collapse-tx{white-space:nowrap}.vtl-grp{margin-bottom:2px}.vtl-grp+.vtl-grp{margin-top:8px;padding-top:8px;border-top:1px solid var(--vtl-border)}.vtl-tier{width:100%;padding:8px 8px 6px;display:flex;align-items:center;gap:8px;box-sizing:border-box}.vtl-tier-btn{border:0;background:none;color:inherit;font:inherit;cursor:pointer;text-align:left;border-radius:8px}.vtl-tier-btn:hover{background:var(--vtl-accented)}.vtl-tier-btn:focus-visible{outline:2px solid var(--vtl-accent);outline-offset:-2px}.vtl-tier-ic{flex:0 0 auto;display:inline-flex;color:var(--vtl-muted)}.vtl-tier-ic svg{width:15px;height:15px}.vtl-cap{font:700 10px/1 system-ui;letter-spacing:.4px;color:#052e16;background:var(--vtl-accent);border-radius:999px;padding:3px 7px}.vtl-tl{font-weight:600;font-size:11px;letter-spacing:.03em;text-transform:uppercase;color:var(--vtl-muted)}.vtl-td{color:#6b6b6b;font-size:11px;margin-left:auto}.vtl-chev{margin-left:auto;display:inline-flex;color:var(--vtl-muted);transition:transform .16s ease}.vtl-chev svg{width:15px;height:15px}.vtl-chev.open{transform:rotate(90deg)}.vtl-rows{display:flex;flex-direction:column;gap:1px}.vtl-tab{display:flex;align-items:center;gap:11px;width:100%;min-height:48px;text-align:left;border:0;background:none;color:var(--vtl-muted);padding:8px 12px;cursor:pointer;border-radius:var(--vtl-radius,8px);font:inherit;margin:0;transition:background .13s ease,color .13s ease}.vtl-tab:hover{background:var(--vtl-accented);color:#3b463d}.vtl-tab:focus-visible{outline:2px solid var(--vtl-accent);outline-offset:-2px}.vtl-tab.active{background:var(--vtl-accented);color:#3b463d;font-weight:500}.vtl-tab.active .vtl-tab-ic{color:var(--vtl-accent)}.vtl-tab-ic{flex:0 0 auto;display:inline-flex;color:var(--vtl-muted)}.vtl-tab-ic svg{width:20px;height:20px}.vtl-tab-emoji{font-size:17px;line-height:1;flex:0 0 auto}.vtl-tab-fallback{display:none;flex:0 0 auto;width:20px;height:20px;align-items:center;justify-content:center;font-size:12px;font-weight:600;color:var(--vtl-muted);background:var(--vtl-accented);border-radius:6px}.vtl-tab.active .vtl-tab-fallback{color:var(--vtl-accent)}.vtl-tab-text{display:flex;flex-direction:column;min-width:0}.vtl-tab-label{font-size:13px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:flex;align-items:center;gap:6px}.vtl-tab-badge{font:600 9px/1 system-ui;letter-spacing:.3px;text-transform:uppercase;color:var(--vtl-accent);border:1px solid var(--vtl-accent);border-radius:var(--vtl-radius,8px);padding:2px 5px}.vtl-tab-sub{font-size:11px;color:#6b6b6b;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.vtl-tab-sub code{font-family:ui-monospace,Menlo,monospace}.vtl-tab.active .vtl-tab-sub{color:var(--vtl-muted)}.vtl-main{position:absolute;top:0;bottom:0;right:0;left:256px;min-width:0;display:flex;flex-direction:column}.vtl-content{flex:1 1 auto;position:relative;min-height:0}.vtl-host{position:absolute;top:0;right:0;bottom:0;left:0;overflow-y:auto;overflow-x:hidden;overscroll-behavior:contain;--profile-min-h:0}.vtl-host-slot{position:relative;min-height:100%}.vtl-host-slot>*{min-height:0;max-height:none}.vtl-host-hint{position:absolute;top:0;right:0;bottom:0;left:0;display:grid;place-items:center;text-align:center;color:var(--dx-muted, #6d766e);font-size:13px;padding:20px}.vtl-host-hint.err{color:#f87171}.vtl-host-hint small{color:var(--dx-muted, #6d766e)}.vtl.rail-collapsed .vtl-nav{transform:translate(-184px)}.vtl.rail-collapsed .vtl-main{left:72px}.vtl.rail-collapsed .vtl-collapse{padding-left:184px;justify-content:flex-start}.vtl.rail-collapsed .vtl-collapse-ic{transform:rotate(0)}.vtl.rail-collapsed .vtl-collapse-tx{display:none}.vtl.rail-collapsed .vtl-tab{padding-left:188px;gap:0}.vtl.rail-collapsed .vtl-tab-text{display:none}.vtl.rail-collapsed .vtl-tab-emoji{font-size:19px}.vtl.rail-collapsed .vtl-tab-fallback{display:inline-flex}.vtl.rail-collapsed .vtl-tier{padding-left:196px}.vtl.rail-collapsed .vtl-tl,.vtl.rail-collapsed .vtl-td,.vtl.rail-collapsed .vtl-cap,.vtl.rail-collapsed .vtl-chev{display:none}.vtl.rail-collapsed .vtl-grp+.vtl-grp{margin-top:6px;padding-top:6px}@media (max-width: 760px){.vtl-top{min-height:56px}.vtl-menu{display:inline-block}.vtl-meta{display:none}.vtl-nav{z-index:20;width:256px;box-shadow:0 0 28px #0000008c;transform:translate(-100%)}.vtl.nav-open .vtl-nav{transform:translate(0);z-index:1000}.vtl-main{left:0}.vtl.rail-collapsed .vtl-nav{transform:translate(-100%)}.vtl.rail-collapsed.nav-open .vtl-nav{transform:translate(0)}.vtl.rail-collapsed .vtl-main{left:0}.vtl.rail-collapsed .vtl-collapse{padding-left:10px;justify-content:flex-start}.vtl.rail-collapsed .vtl-collapse-ic{transform:rotate(180deg)}.vtl.rail-collapsed .vtl-collapse-tx{display:inline}.vtl.rail-collapsed .vtl-tab{padding-left:10px;gap:11px}.vtl.rail-collapsed .vtl-tab-text{display:flex}.vtl.rail-collapsed .vtl-tab-fallback{display:none}.vtl.rail-collapsed .vtl-tier{padding-left:8px}.vtl.rail-collapsed .vtl-tl,.vtl.rail-collapsed .vtl-td,.vtl.rail-collapsed .vtl-cap,.vtl.rail-collapsed .vtl-chev{display:inline}}.vtl:dir(rtl) .vtl-nav{left:auto;right:0;border-right:0;border-left:1px solid var(--vtl-border)}.vtl:dir(rtl) .vtl-main{left:0;right:256px}.vtl:dir(rtl) .vtl-tab,.vtl:dir(rtl) .vtl-tier-btn{text-align:right}.vtl:dir(rtl) .vtl-meta,.vtl:dir(rtl) .vtl-td,.vtl:dir(rtl) .vtl-chev{margin-left:0;margin-right:auto}.vtl:dir(rtl) .vtl-chev:not(.open){transform:scaleX(-1)}.vtl:dir(rtl) .vtl-collapse-ic svg{transform:scaleX(-1)}.vtl:dir(rtl) .vtl-fab{left:auto;right:calc(12px + env(safe-area-inset-right))}.vtl.rail-collapsed:dir(rtl) .vtl-nav{transform:translate(184px)}.vtl.rail-collapsed:dir(rtl) .vtl-main{left:0;right:72px}.vtl.rail-collapsed:dir(rtl) .vtl-collapse{padding-left:10px;padding-right:184px}.vtl.rail-collapsed:dir(rtl) .vtl-tab{padding-left:12px;padding-right:188px}.vtl.rail-collapsed:dir(rtl) .vtl-tier{padding-left:8px;padding-right:196px}@media (max-width: 760px){.vtl:dir(rtl) .vtl-nav{transform:translate(100%)}.vtl.nav-open:dir(rtl) .vtl-nav{transform:translate(0)}.vtl:dir(rtl) .vtl-main,.vtl.rail-collapsed:dir(rtl) .vtl-main{left:0;right:0}.vtl.rail-collapsed:dir(rtl) .vtl-nav{transform:translate(100%)}.vtl.rail-collapsed.nav-open:dir(rtl) .vtl-nav{transform:translate(0)}.vtl.rail-collapsed:dir(rtl) .vtl-collapse{padding-left:10px;padding-right:10px}.vtl.rail-collapsed:dir(rtl) .vtl-tab{padding-left:12px;padding-right:10px}.vtl.rail-collapsed:dir(rtl) .vtl-tier{padding-left:8px;padding-right:8px}}",xi=(e,t)=>{const o=e.__vccOpts||e;for(const[s,n]of t)o[s]=n;return o},bl=(e,t)=>ul(e)||t,It={};function ml(e){return e?(It[e]||(It[e]=new Promise((t,o)=>{const s=document.createElement("script");s.src=e,s.onload=()=>t(),s.onerror=()=>{delete It[e],o(new Error("failed to load "+e))},document.head.appendChild(s)})),It[e]):Promise.resolve()}function _l(e,t=5e3){return typeof customElements>"u"||customElements.get(e)?Promise.resolve():customElements.whenDefined?Promise.race([customElements.whenDefined(e),new Promise((o,s)=>setTimeout(()=>s(new Error("timeout waiting for <"+e+">")),t))]):Promise.resolve()}const $l=` +**/let bs;const ai=typeof window<"u"&&window.trustedTypes;if(ai)try{bs=ai.createPolicy("vue",{createHTML:e=>e})}catch{}const ri=bs?e=>bs.createHTML(e):e=>e,Ar="http://www.w3.org/2000/svg",Or="http://www.w3.org/1998/Math/MathML",Ve=typeof document<"u"?document:null,li=Ve&&Ve.createElement("template"),Fr={insert:(e,t,o)=>{t.insertBefore(e,o||null)},remove:e=>{const t=e.parentNode;t&&t.removeChild(e)},createElement:(e,t,o,s)=>{const n=t==="svg"?Ve.createElementNS(Ar,e):t==="mathml"?Ve.createElementNS(Or,e):o?Ve.createElement(e,{is:o}):Ve.createElement(e);return e==="select"&&s&&s.multiple!=null&&n.setAttribute("multiple",s.multiple),n},createText:e=>Ve.createTextNode(e),createComment:e=>Ve.createComment(e),setText:(e,t)=>{e.nodeValue=t},setElementText:(e,t)=>{e.textContent=t},parentNode:e=>e.parentNode,nextSibling:e=>e.nextSibling,querySelector:e=>Ve.querySelector(e),setScopeId(e,t){e.setAttribute(t,"")},insertStaticContent(e,t,o,s,n,i){const a=o?o.previousSibling:t.lastChild;if(n&&(n===i||n.nextSibling))for(;t.insertBefore(n.cloneNode(!0),o),!(n===i||!(n=n.nextSibling)););else{li.innerHTML=ri(s==="svg"?`${e}`:s==="mathml"?`${e}`:e);const r=li.content;if(s==="svg"||s==="mathml"){const l=r.firstChild;for(;l.firstChild;)r.appendChild(l.firstChild);r.removeChild(l)}t.insertBefore(r,o)}return[a?a.nextSibling:t.firstChild,o?o.previousSibling:t.lastChild]}},Mr=Symbol("_vtc");function Ir(e,t,o){const s=e[Mr];s&&(t=(t?[t,...s]:[...s]).join(" ")),t==null?e.removeAttribute("class"):o?e.setAttribute("class",t):e.className=t}const yo=Symbol("_vod"),ci=Symbol("_vsh"),ms={name:"show",beforeMount(e,{value:t},{transition:o}){e[yo]=e.style.display==="none"?"":e.style.display,o&&t?o.beforeEnter(e):Ft(e,t)},mounted(e,{value:t},{transition:o}){o&&t&&o.enter(e)},updated(e,{value:t,oldValue:o},{transition:s}){!t!=!o&&(s?t?(s.beforeEnter(e),Ft(e,!0),s.enter(e)):s.leave(e,()=>{Ft(e,!1)}):Ft(e,t))},beforeUnmount(e,{value:t}){Ft(e,t)}};function Ft(e,t){e.style.display=t?e[yo]:"none",e[ci]=!t}const Dr=Symbol(""),Hr=/(?:^|;)\s*display\s*:/;function jr(e,t,o){const s=e.style,n=q(o);let i=!1;if(o&&!n){if(t)if(q(t))for(const a of t.split(";")){const r=a.slice(0,a.indexOf(":")).trim();o[r]==null&&Mt(s,r,"")}else for(const a in t)o[a]==null&&Mt(s,a,"");for(const a in o){a==="display"&&(i=!0);const r=o[a];r!=null?Wr(e,a,!q(t)&&t?t[a]:void 0,r)||Mt(s,a,r):Mt(s,a,"")}}else if(n){if(t!==o){const a=s[Dr];a&&(o+=";"+a),s.cssText=o,i=Hr.test(o)}}else t&&e.removeAttribute("style");yo in e&&(e[yo]=i?s.display:"",e[ci]&&(s.display="none"))}const xo=/\s*!important$/;function Mt(e,t,o){if(C(o))o.forEach(s=>Mt(e,t,s));else if(o==null&&(o=""),t.startsWith("--"))xo.test(o)?e.setProperty(t,o.replace(xo,""),"important"):e.setProperty(t,o);else{const s=Gr(e,t);xo.test(o)?e.setProperty(be(s),o.replace(xo,""),"important"):e[s]=o}}const pi=["Webkit","Moz","ms"],_s={};function Gr(e,t){const o=_s[t];if(o)return o;let s=oe(t);if(s!=="filter"&&s in e)return _s[t]=s;s=Xt(s);for(let n=0;n$s||(Zr.then(()=>$s=0),$s=Date.now());function Jr(e,t){const o=s=>{if(!s._vts)s._vts=Date.now();else if(s._vts<=o.attached)return;const n=o.value;if(C(n)){const i=s.stopImmediatePropagation;s.stopImmediatePropagation=()=>{i.call(s),s._stopped=!0};const a=n.slice(),r=[s];for(let l=0;le.charCodeAt(0)===111&&e.charCodeAt(1)===110&&e.charCodeAt(2)>96&&e.charCodeAt(2)<123,Yr=(e,t,o,s,n,i)=>{const a=n==="svg";t==="class"?Ir(e,s,a):t==="style"?jr(e,o,s):zt(t)?Bt(t)||zr(e,t,o,s,i):(t[0]==="."?(t=t.slice(1),!0):t[0]==="^"?(t=t.slice(1),!1):Qr(e,t,s,a))?(fi(e,t,s),!e.tagName.includes("-")&&(t==="value"||t==="checked"||t==="selected")&&ui(e,t,s,a,i,t!=="value")):e._isVueCE&&(el(e,t)||e._def.__asyncLoader&&(/[A-Z]/.test(t)||!q(s)))?fi(e,oe(t),s,i,t):(t==="true-value"?e._trueValue=s:t==="false-value"&&(e._falseValue=s),ui(e,t,s,a))};function Qr(e,t,o,s){if(s)return!!(t==="innerHTML"||t==="textContent"||t in e&&hi(t)&&R(o));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 n=e.tagName;if(n==="IMG"||n==="VIDEO"||n==="CANVAS"||n==="SOURCE")return!1}return hi(t)&&q(o)?!1:t in e}function el(e,t){const o=e._def.props;if(!o)return!1;const s=oe(t);return Array.isArray(o)?o.some(n=>oe(n)===s):Object.keys(o).some(n=>oe(n)===s)}const bi={};function tl(e,t,o){let s=ss(e,t);qt(s)&&(s=J({},s,t));class n extends vs{constructor(a){super(s,a,o)}}return n.def=s,n}const ol=typeof HTMLElement<"u"?HTMLElement:class{};class vs extends ol{constructor(t,o={},s=$i){super(),this._def=t,this._props=o,this._createApp=s,this._isVueCE=!0,this._instance=null,this._app=null,this._nonce=this._def.nonce,this._connected=!1,this._resolved=!1,this._patching=!1,this._dirty=!1,this._numberProps=null,this._styleChildren=new WeakSet,this._styleAnchors=new WeakMap,this._ob=null,this.shadowRoot&&s!==$i?this._root=this.shadowRoot:t.shadowRoot!==!1?(this.attachShadow(J({},t.shadowRootOptions,{mode:"open"})),this._root=this.shadowRoot):this._root=this}connectedCallback(){if(!this.isConnected)return;!this.shadowRoot&&!this._resolved&&this._parseSlots(),this._connected=!0;let t=this;for(;t=t&&(t.assignedSlot||t.parentNode||t.host);)if(t instanceof vs){this._parent=t;break}this._instance||(this._resolved?this._mount(this._def):t&&t._pendingResolve?this._pendingResolve=t._pendingResolve.then(()=>{if(this._pendingResolve=void 0,this.isConnected)return this._resolveDef()}):this._resolveDef())}_setParent(t=this._parent){t&&(this._instance.parent=t._instance,this._inheritParentContext(t))}_inheritParentContext(t=this._parent){t&&this._app&&Object.setPrototypeOf(this._app._context.provides,t._instance.provides)}disconnectedCallback(){this._connected=!1,ln(()=>{this._connected||(this._ob&&(this._ob.disconnect(),this._ob=null),this._app&&this._app.unmount(),this._instance&&(this._instance.ce=void 0),this._app=this._instance=null,this._teleportTargets&&(this._teleportTargets.clear(),this._teleportTargets=void 0))})}_processMutations(t){for(const o of t)this._setAttr(o.attributeName)}_resolveDef(){if(this._pendingResolve)return this._pendingResolve;for(let s=0;s{this._resolved=!0,this._pendingResolve=void 0;const{props:i,styles:a}=s;let r;if(i&&!C(i))for(const l in i){const u=i[l];(u===Number||u&&u.type===Number)&&(l in this._props&&(this._props[l]=Es(this._props[l])),(r||(r=Object.create(null)))[oe(l)]=!0)}this._numberProps=r,this._resolveProps(s),this.shadowRoot&&this._applyStyles(a),this._mount(s)},o=this._def.__asyncLoader;if(o)return this._pendingResolve=o().then(s=>{s.configureApp=this._def.configureApp,t(this._def=s,!0)}),this._pendingResolve;t(this._def)}_mount(t){this._app=this._createApp(t),this._inheritParentContext(),t.configureApp&&t.configureApp(this._app),this._app._ceVNode=this._createVNode(),this._app.mount(this._root);const o=this._instance&&this._instance.exposed;if(o)for(const s in o)D(this,s)||Object.defineProperty(this,s,{get:()=>sn(o[s])})}_resolveProps(t){const{props:o}=t,s=C(o)?o:Object.keys(o||{});for(const n of Object.keys(this))n[0]!=="_"&&s.includes(n)&&this._setProp(n,this[n]);for(const n of s.map(oe))Object.defineProperty(this,n,{get(){return this._getProp(n)},set(i){this._setProp(n,i,!0,!this._patching)}})}_setAttr(t){if(t.startsWith("data-v-"))return;const o=this.hasAttribute(t);let s=o?this.getAttribute(t):bi;const n=oe(t);o&&this._numberProps&&this._numberProps[n]&&(s=Es(s)),this._setProp(n,s,!1,!0)}_getProp(t){return this._props[t]}_setProp(t,o,s=!0,n=!1){if(o!==this._props[t]&&(this._dirty=!0,o===bi?delete this._props[t]:(this._props[t]=o,t==="key"&&this._app&&(this._app._ceVNode.key=o)),n&&this._instance&&this._update(),s)){const i=this._ob;i&&(this._processMutations(i.takeRecords()),i.disconnect()),o===!0?this.setAttribute(be(t),""):typeof o=="string"||typeof o=="number"?this.setAttribute(be(t),o+""):o||this.removeAttribute(be(t)),i&&i.observe(this,{attributes:!0})}}_update(){const t=this._createVNode();this._app&&(t.appContext=this._app._context),nl(t,this._root)}_createVNode(){const t={};this.shadowRoot||(t.onVnodeMounted=t.onVnodeUpdated=this._renderSlots.bind(this));const o=ye(this._def,J(t,this._props));return this._instance||(o.ce=s=>{this._instance=s,s.ce=this,s.isCE=!0;const n=(i,a)=>{this.dispatchEvent(new CustomEvent(i,qt(a[0])?J({detail:a},a[0]):{detail:a}))};s.emit=(i,...a)=>{n(i,a),be(i)!==i&&n(be(i),a)},this._setParent()}),o}_applyStyles(t,o,s){if(!t)return;if(o){if(o===this._def||this._styleChildren.has(o))return;this._styleChildren.add(o)}const n=this._nonce,i=this.shadowRoot,a=s?this._getStyleAnchor(s)||this._getStyleAnchor(this._def):this._getRootStyleInsertionAnchor(i);let r=null;for(let l=t.length-1;l>=0;l--){const u=document.createElement("style");n&&u.setAttribute("nonce",n),u.textContent=t[l],i.insertBefore(u,r||a),r=u,l===0&&(s||this._styleAnchors.set(this._def,u),o&&this._styleAnchors.set(o,u))}}_getStyleAnchor(t){if(!t)return null;const o=this._styleAnchors.get(t);return o&&o.parentNode===this.shadowRoot?o:(o&&this._styleAnchors.delete(t),null)}_getRootStyleInsertionAnchor(t){for(let o=0;o{_i().render(...e)},$i=(...e)=>{const t=_i().createApp(...e),{mount:o}=t;return t.mount=s=>{const n=al(s);if(!n)return;const i=t._component;!R(i)&&!i.render&&!i.template&&(i.template=n.innerHTML),n.nodeType===1&&(n.textContent="");const a=o(n,!1,il(n));return n instanceof Element&&(n.removeAttribute("v-cloak"),n.setAttribute("data-v-app","")),a},t};function il(e){if(e instanceof SVGElement)return"svg";if(typeof MathMLElement=="function"&&e instanceof MathMLElement)return"mathml"}function al(e){return q(e)?document.querySelector(e):e}const rl=Object.assign({"./locales/ar/grid.json":{search:"ابحث عن الشعوب…",hide_filters:"إخفاء عوامل التصفية",show_filters:"إظهار عوامل التصفية",total:"الإجمالي",showing:"المعروض",load_more:"عرض المزيد",full_profile:"الملف الكامل",wagf_region:"المنطقة",wagf_block:"كتلة التقارب",rop1:"الشعب",religion:"الدين",exact_filter:"تطابق تام",clear_all:"مسح الكل",loading:"جارٍ التحميل…",no_results:"لا توجد شعوب مطابقة لهذا التصفية.",type_to_search:"اكتب للبحث...",load_failed:"تعذّر تحميل بيانات الشعوب. هذه مشكلة اتصال، وليست مشكلة في التصفية.",search_people_or_countries:"ابحث عن الشعوب أو الدول…"},"./locales/ar/messages.json":{menuComingSoon:"القائمة قادمة قريباً",pinHint:{tapDot:"اضغط على نقطة ملوّنة — لا يزال هناك من يحتاج إلى الصلاة"},upg100WallHeading:"قائمتي UPG 100 — قوائم الصلاة والملصقات",upg100WallTag:"تعبئة للصلاة",upg100WallIntro:"وزّع مهمة الصلاة في مجموعات من خمسين ومئة — كما أطعم يسوع الخمسة آلاف (لوقا ٩:١٤). كل ملصق هو قائمة من 100 يمكنك أن تصلي بها وتطبعها وتعلّقها على الحائط — مصلّيًا لأجلهم باسم شعبهم.",loadingNamed:"جارٍ تحميل {name}…",couldNotLoadNamed:"تعذّر تحميل {name}.",engineMissing:"لم يتم تحميل محرك الخرائط {engine}.",packetFailed:"فشل إنشاء الكُتيّب: {reason}",selectionPacketFailed:"فشل إنشاء كُتيّب التحديد: {reason}",posterOneTerritory:"الملصق يطبع منطقة واحدة في كل مرة — {count} محددة.",selectionPosterFailed:"فشل إنشاء ملصق التحديد: {reason}",mapUnavailable:"الخريطة غير متاحة",copied:"تم النسخ!",copyFailed:"فشل النسخ — اضغط Ctrl/Cmd-C",engineNotLoaded:"لم يتم تحميل محرك الخريطة",engineNotLoadedDetail:"لم يتم تحميل محرك الخريطة {engine}. القائمة ووسيلة الإيضاح غير متأثرتين."},"./locales/ar/poster.json":{export_poster:"تصدير الملصق",size:"الحجم",orientation:"الاتجاه",portrait:"طولي",landscape:"عرضي",dpi:"DPI",format:"الصيغة",png_raster:"PNG (نقطي)",pdf_raster:"PDF (نقطي على صفحة متجهية)",title:"العنوان",map_title:"عنوان الخريطة",subtitle:"العنوان الفرعي",slots:"العناصر",scale_bar:"شريط المقياس",north_arrow:"سهم الشمال",footer_attribution:"التذييل (الإسناد مطلوب)",cancel:"إلغاء",map_preview:"معاينة الخريطة",loading_snapshot:"جارٍ تحميل لقطة الخريطة…",preview_unavailable:"المعاينة غير متاحة"},"./locales/ar/search.json":{placeholder:"شعب، مكان، لغة، ديانة",placeholderNoPlaces:"شعب، لغة، ديانة (البحث عن الأماكن يتطلب رمز Mapbox)",labels:{people:"الشعب:",place:"المكان:",language:"اللغة:",religion:"الديانة:"},kinds:{people:"الشعب + الدولة",peopleGroup:"الشعب",bloc:"كتلة التقارب",cluster:"مجموعة شعوب",country:"الدولة",region:"المنطقة",family:"عائلة اللغة",languageKind:"اللغة",dialect:"اللهجة",religionKind:"الدين"},sections:{within:"ضمن {selection}",allData:"كل بيانات DOXA"},upg100Placeholder:"ابحث عن شعب أو قائمة UPG-100 أو منطقة…"},"./locales/ar/tabs.json":{prayer:"الصلاة",adoption:"التبني",engagement:"المشاركة","affinity-blocks":"الشعوب",regions:"المناطق",countries:"الدول","language-families":"اللغات",religion:"الأديان",family:"عائلة اللغة",language:"اللغة",dialect:"اللهجة/التنوع",bloc:"كتلة التقارب",cluster:"المجموعة",group:"الشعب",pgic:"الشعب في الدولة",region:"منطقة WAGF",block:"كتلة WAGF",country:"الدولة",upg100Region:"المنطقة",upg100Zone:"قوائم UPG-100",upg100Group:"مجموعة شعبية",selectView:"اختر العرض",views:"العروض",prayerResources:"موارد الصلاة",map:"الخريطة",countryPosters:"ملصقات الدول"},"./locales/de/grid.json":{search:"Volksgruppen suchen…",hide_filters:"Filter ausblenden",show_filters:"Filter anzeigen",total:"Gesamt",showing:"Angezeigt",load_more:"Mehr laden",full_profile:"Vollständiges Profil",wagf_region:"Region",wagf_block:"Affinitätsblock",rop1:"Volk",religion:"Religion",exact_filter:"Exakt",clear_all:"Alle löschen",loading:"Wird geladen…",no_results:"Keine Volksgruppen entsprechen diesem Filter.",type_to_search:"Zum Suchen tippen...",load_failed:"Die Daten konnten nicht geladen werden. Das ist ein Verbindungsproblem, nicht Ihr Filter.",search_people_or_countries:"Volksgruppen oder Länder suchen…"},"./locales/de/messages.json":{menuComingSoon:"Menü folgt in Kürze",pinHint:{tapDot:"Tippe auf einen farbigen Punkt — jemand braucht noch Gebet"},upg100WallHeading:"Meine UPG-100-Liste — Gebetslisten und Poster",upg100WallTag:"Gebetsmobilisierung",upg100WallIntro:"Teilen Sie die Gebetsaufgabe in Gruppen zu fünfzig und hundert auf — so wie Jesus die 5.000 speiste (Lukas 9,14). Jedes Poster ist eine 100er-Liste, die Sie beten, drucken und an die Wand hängen können — und für sie mit dem Namen ihrer Volksgruppe beten.",loadingNamed:"{name} wird geladen…",couldNotLoadNamed:"{name} konnte nicht geladen werden.",engineMissing:"Die Karten-Engine {engine} wurde nicht geladen.",packetFailed:"Heft fehlgeschlagen: {reason}",selectionPacketFailed:"Heft der Auswahl fehlgeschlagen: {reason}",posterOneTerritory:"Das Plakat druckt ein Gebiet auf einmal — {count} ausgewählt.",selectionPosterFailed:"Plakat der Auswahl fehlgeschlagen: {reason}",mapUnavailable:"Karte nicht verfügbar",copied:"Kopiert!",copyFailed:"Kopieren fehlgeschlagen — Strg/Cmd-C drücken",engineNotLoaded:"Karten-Engine nicht geladen",engineNotLoadedDetail:"Die Karten-Engine {engine} wurde nicht geladen. Liste und Legende sind nicht betroffen."},"./locales/de/poster.json":{export_poster:"Poster exportieren",size:"Größe",orientation:"Ausrichtung",portrait:"Hochformat",landscape:"Querformat",dpi:"DPI",format:"Format",png_raster:"PNG (Raster)",pdf_raster:"PDF (Raster auf Vektorseite)",title:"Titel",map_title:"Kartentitel",subtitle:"Untertitel",slots:"Elemente",scale_bar:"Maßstabsleiste",north_arrow:"Nordpfeil",footer_attribution:"Fußzeile (Quellenangabe erforderlich)",cancel:"Abbrechen",map_preview:"Kartenvorschau",loading_snapshot:"Kartenaufnahme wird geladen…",preview_unavailable:"Vorschau nicht verfügbar"},"./locales/de/search.json":{placeholder:"Volk, Ort, Sprache, Religion",placeholderNoPlaces:"Volk, Sprache, Religion (Ortssuche braucht ein Mapbox-Token)",labels:{people:"Volk:",place:"Ort:",language:"Sprache:",religion:"Religion:"},sections:{within:"Innerhalb {selection}",allData:"Alle DOXA-Daten"},kinds:{people:"Volk + Land",peopleGroup:"Volk",bloc:"Affinitätsblock",cluster:"Völkercluster",country:"Land",region:"Region",family:"Sprachfamilie",languageKind:"Sprache",dialect:"Dialekt",religionKind:"Religion"},upg100Placeholder:"Volksgruppe, UPG-100-Liste oder Region suchen…"},"./locales/de/tabs.json":{prayer:"Gebet",adoption:"Adoption",engagement:"Engagement","affinity-blocks":"Volksgruppen",regions:"Regionen",countries:"Länder","language-families":"Sprachen",religion:"Religionen",family:"Sprachfamilie",language:"Sprache",dialect:"Dialekt/Varietät",bloc:"Affinitätsblock",cluster:"Cluster",group:"Volksgruppe",pgic:"Volksgruppe im Land",region:"WAGF-Region",block:"WAGF-Block",country:"Land",upg100Region:"Region",upg100Zone:"UPG-100-Listen",upg100Group:"Volksgruppe",selectView:"Ansicht wählen",views:"Ansichten",prayerResources:"Gebetsressourcen",map:"Karte",countryPosters:"Länderposter"},"./locales/en/grid.json":{search:"Search people groups…",hide_filters:"Hide Filters",show_filters:"Show Filters",total:"Total",showing:"Showing",load_more:"Load More",full_profile:"Full Profile",wagf_region:"Region",wagf_block:"Affinity Block",rop1:"People Group",religion:"Religion",exact_filter:"Exact",clear_all:"Clear All",loading:"Loading…",no_results:"No people groups match this filter.",type_to_search:"Type to search...",load_failed:"People-group data could not be loaded. This is a connection problem, not your filter.",search_people_or_countries:"Search people groups or countries…"},"./locales/en/messages.json":{menuComingSoon:"Menu coming soon",pinHint:{tapDot:"Tap a coloured dot — someone still needs prayer"},upg100WallHeading:"My UPG 100 List — Prayer Lists & Posters",upg100WallTag:"Prayer Mobilization",upg100WallIntro:"Hand away the prayer task in clusters of fifties and hundreds — the way Jesus fed the 5,000 (Luke 9:14). Each poster is a 100-list you can pray, print, and put on a wall — praying for them by their people group name.",loadingNamed:"Loading {name}…",couldNotLoadNamed:"Could not load {name}.",engineMissing:"The {engine} map engine did not load.",packetFailed:"Packet failed: {reason}",selectionPacketFailed:"Selection packet failed: {reason}",posterOneTerritory:"Poster prints one territory at a time — {count} selected.",selectionPosterFailed:"Selection poster failed: {reason}",mapUnavailable:"Map unavailable",copied:"Copied!",copyFailed:"Copy failed — press Ctrl/Cmd-C",engineNotLoaded:"map engine not loaded",engineNotLoadedDetail:"The {engine} map engine did not load. The list and legend are unaffected."},"./locales/en/poster.json":{export_poster:"Export Poster",size:"Size",orientation:"Orientation",portrait:"Portrait",landscape:"Landscape",dpi:"DPI",format:"Format",png_raster:"PNG (raster)",pdf_raster:"PDF (raster on vector page)",title:"Title",map_title:"Map title",subtitle:"Subtitle",slots:"Slots",scale_bar:"Scale bar",north_arrow:"North arrow",footer_attribution:"Footer (attribution required)",cancel:"Cancel",map_preview:"map preview",loading_snapshot:"Loading map snapshot…",preview_unavailable:"preview unavailable"},"./locales/en/search.json":{placeholder:"People, place, language, religion",placeholderNoPlaces:"People, language, religion (place search needs a Mapbox token)",labels:{people:"People:",place:"Place:",language:"Language:",religion:"Religion:"},kinds:{people:"People Group + Country",peopleGroup:"People Group",bloc:"Affinity Block",cluster:"People Cluster",country:"Country",region:"Region",family:"Language Family",languageKind:"Language",dialect:"Dialect",religionKind:"Religion"},sections:{within:"Within {selection}",allData:"All DOXA Data"},upg100Placeholder:"Search people group, UPG-100 list, or region…"},"./locales/en/tabs.json":{prayer:"Prayer",adoption:"Adoption",engagement:"Engagement","affinity-blocks":"People Groups (Affinity)",regions:"Regions",countries:"Countries","language-families":"Languages",religion:"Religions",family:"Lang Family",language:"Language",dialect:"Dialect/Variety",bloc:"Affinity Block",cluster:"Cluster",group:"People Group",pgic:"PG in Country",region:"WAGF Region",block:"WAGF Bloc",country:"Country",upg100Region:"Region",upg100Zone:"UPG-100 Lists",upg100Group:"People Group",selectView:"Select View",views:"Views",prayerResources:"Prayer Resources",map:"Map",countryPosters:"Country Posters"},"./locales/es/grid.json":{search:"Buscar pueblos…",hide_filters:"Ocultar filtros",show_filters:"Mostrar filtros",total:"Total",showing:"Mostrando",load_more:"Cargar más",full_profile:"Perfil completo",wagf_region:"Región",wagf_block:"Bloque de afinidad",rop1:"Pueblo",religion:"Religión",exact_filter:"Exacto",clear_all:"Borrar todo",loading:"Cargando…",no_results:"Ningún pueblo coincide con este filtro.",type_to_search:"Escribe para buscar...",load_failed:"No se pudieron cargar los datos de pueblos. Es un problema de conexión, no de tu filtro.",search_people_or_countries:"Buscar pueblos o países…"},"./locales/es/messages.json":{menuComingSoon:"Menú próximamente",pinHint:{tapDot:"Toca un punto de color: alguien todavía necesita oración"},upg100WallHeading:"Mi lista UPG 100 — Listas de oración y carteles",upg100WallTag:"Movilización de oración",upg100WallIntro:"Reparte la tarea de la oración en grupos de cincuenta y de cien, como Jesús alimentó a los 5.000 (Lucas 9:14). Cada cartel es una lista de 100 que puedes orar, imprimir y poner en la pared — orando por ellos por el nombre de su pueblo.",loadingNamed:"Cargando {name}…",couldNotLoadNamed:"No se pudo cargar {name}.",engineMissing:"El motor de mapas {engine} no se cargó.",packetFailed:"Error al generar el cuadernillo: {reason}",selectionPacketFailed:"Error al generar el cuadernillo de la selección: {reason}",posterOneTerritory:"El cartel imprime un territorio a la vez: {count} seleccionados.",selectionPosterFailed:"Error al generar el cartel de la selección: {reason}",mapUnavailable:"Mapa no disponible",copied:"¡Copiado!",copyFailed:"Error al copiar: pulsa Ctrl/Cmd-C",engineNotLoaded:"motor de mapas no cargado",engineNotLoadedDetail:"El motor de mapas {engine} no se cargó. La lista y la leyenda no se ven afectadas."},"./locales/es/poster.json":{export_poster:"Exportar póster",size:"Tamaño",orientation:"Orientación",portrait:"Vertical",landscape:"Horizontal",dpi:"DPI",format:"Formato",png_raster:"PNG (ráster)",pdf_raster:"PDF (ráster en página vectorial)",title:"Título",map_title:"Título del mapa",subtitle:"Subtítulo",slots:"Elementos",scale_bar:"Barra de escala",north_arrow:"Flecha norte",footer_attribution:"Pie de página (atribución obligatoria)",cancel:"Cancelar",map_preview:"vista previa del mapa",loading_snapshot:"Cargando la captura del mapa…",preview_unavailable:"vista previa no disponible"},"./locales/es/search.json":{placeholder:"Pueblo, lugar, idioma, religión",placeholderNoPlaces:"Pueblo, idioma, religión (buscar lugares requiere un token de Mapbox)",labels:{people:"Pueblo:",place:"Lugar:",language:"Idioma:",religion:"Religión:"},kinds:{people:"Pueblo + país",peopleGroup:"Pueblo",bloc:"Bloque de afinidad",cluster:"Clúster de pueblos",country:"País",region:"Región",family:"Familia lingüística",languageKind:"Idioma",dialect:"Dialecto",religionKind:"Religión"},sections:{within:"Dentro de {selection}",allData:"Todos los datos DOXA"},upg100Placeholder:"Buscar pueblo, lista UPG-100 o región…"},"./locales/es/tabs.json":{prayer:"Oración",adoption:"Adopción",engagement:"Compromiso","affinity-blocks":"Pueblos",regions:"Regiones",countries:"Países","language-families":"Idiomas",religion:"Religiones",family:"Familia lingüística",language:"Idioma",dialect:"Dialecto/Variedad",bloc:"Bloque de afinidad",cluster:"Clúster",group:"Pueblo",pgic:"Pueblo en país",region:"Región WAGF",block:"Bloque WAGF",country:"País",upg100Region:"Región",upg100Zone:"Listas UPG-100",upg100Group:"Grupo étnico",selectView:"Seleccionar vista",views:"Vistas",prayerResources:"Recursos de oración",map:"Mapa",countryPosters:"Carteles por país"},"./locales/fr/grid.json":{search:"Rechercher des peuples…",hide_filters:"Masquer les filtres",show_filters:"Afficher les filtres",total:"Total",showing:"Affichage",load_more:"Charger plus",full_profile:"Profil complet",wagf_region:"Région",wagf_block:"Bloc d'affinité",rop1:"Peuple",religion:"Religion",exact_filter:"Exact",clear_all:"Tout effacer",loading:"Chargement…",no_results:"Aucun peuple ne correspond à ce filtre.",type_to_search:"Tapez pour rechercher...",load_failed:"Les données n’ont pas pu être chargées. C’est un problème de connexion, pas votre filtre.",search_people_or_countries:"Rechercher des peuples ou des pays…"},"./locales/fr/messages.json":{menuComingSoon:"Menu bientôt disponible",pinHint:{tapDot:"Touchez un point coloré — quelqu’un a encore besoin de prière"},upg100WallHeading:"Ma liste UPG 100 — Listes de prière et affiches",upg100WallTag:"Mobilisation pour la prière",upg100WallIntro:"Répartissez la tâche de la prière par groupes de cinquante et de cent — comme Jésus a nourri les 5 000 (Luc 9:14). Chaque affiche est une liste de 100 que vous pouvez prier, imprimer et afficher au mur — en priant pour eux par le nom de leur peuple.",loadingNamed:"Chargement de {name}…",couldNotLoadNamed:"Impossible de charger {name}.",engineMissing:"Le moteur de carte {engine} ne s’est pas chargé.",packetFailed:"Échec du livret : {reason}",selectionPacketFailed:"Échec du livret de la sélection : {reason}",posterOneTerritory:"L’affiche imprime un territoire à la fois — {count} sélectionnés.",selectionPosterFailed:"Échec de l’affiche de la sélection : {reason}",mapUnavailable:"Carte indisponible",copied:"Copié !",copyFailed:"Échec de la copie — appuyez sur Ctrl/Cmd-C",engineNotLoaded:"moteur cartographique non chargé",engineNotLoadedDetail:"Le moteur cartographique {engine} ne s’est pas chargé. La liste et la légende ne sont pas affectées."},"./locales/fr/poster.json":{export_poster:"Exporter l'affiche",size:"Taille",orientation:"Orientation",portrait:"Portrait",landscape:"Paysage",dpi:"DPI",format:"Format",png_raster:"PNG (raster)",pdf_raster:"PDF (raster sur page vectorielle)",title:"Titre",map_title:"Titre de la carte",subtitle:"Sous-titre",slots:"Éléments",scale_bar:"Échelle",north_arrow:"Flèche du nord",footer_attribution:"Pied de page (attribution requise)",cancel:"Annuler",map_preview:"aperçu de la carte",loading_snapshot:"Chargement de l'instantané de la carte…",preview_unavailable:"aperçu indisponible"},"./locales/fr/search.json":{placeholder:"Peuple, lieu, langue, religion",placeholderNoPlaces:"Peuple, langue, religion (la recherche de lieux requiert un jeton Mapbox)",labels:{people:"Peuple :",place:"Lieu :",language:"Langue :",religion:"Religion :"},kinds:{people:"Peuple + pays",peopleGroup:"Peuple",bloc:"Bloc d'affinité",cluster:"Grappe de peuples",country:"Pays",region:"Région",family:"Famille linguistique",languageKind:"Langue",dialect:"Dialecte",religionKind:"Religion"},sections:{within:"Dans {selection}",allData:"Toutes les données DOXA"},upg100Placeholder:"Rechercher un peuple, une liste UPG-100 ou une région…"},"./locales/fr/tabs.json":{prayer:"Prière",adoption:"Adoption",engagement:"Engagement","affinity-blocks":"Peuples",regions:"Régions",countries:"Pays","language-families":"Langues",religion:"Religions",family:"Famille linguistique",language:"Langue",dialect:"Dialecte/Variété",bloc:"Bloc d'affinité",cluster:"Grappe",group:"Peuple",pgic:"Peuple dans le pays",region:"Région WAGF",block:"Bloc WAGF",country:"Pays",upg100Region:"Région",upg100Zone:"Listes UPG-100",upg100Group:"Groupe de peuples",selectView:"Choisir la vue",views:"Vues",prayerResources:"Ressources de prière",map:"Carte",countryPosters:"Affiches par pays"},"./locales/hi/grid.json":{search:"जनसमूह खोजें…",hide_filters:"फ़िल्टर छिपाएँ",show_filters:"फ़िल्टर दिखाएँ",total:"कुल",showing:"दिखा रहे हैं",load_more:"और देखें",full_profile:"पूरी प्रोफ़ाइल",wagf_region:"क्षेत्र",wagf_block:"समानता समूह",rop1:"जनसमूह",religion:"धर्म",exact_filter:"सटीक",clear_all:"सब हटाएँ",loading:"लोड हो रहा है…",no_results:"इस फ़िल्टर से कोई जनसमूह मेल नहीं खाता।",type_to_search:"खोजने के लिए लिखें...",load_failed:"जनसमूह डेटा लोड नहीं हो सका। यह कनेक्शन की समस्या है, आपके फ़िल्टर की नहीं।",search_people_or_countries:"जनसमूह या देश खोजें…"},"./locales/hi/messages.json":{menuComingSoon:"मेनू शीघ्र आ रहा है",pinHint:{tapDot:"किसी रंगीन बिंदु पर टैप करें — किसी को अभी भी प्रार्थना की आवश्यकता है"},upg100WallHeading:"मेरी UPG 100 सूची — प्रार्थना सूचियाँ और पोस्टर",upg100WallTag:"प्रार्थना लामबंदी",upg100WallIntro:"प्रार्थना के काम को पचास-पचास और सौ-सौ के समूहों में बाँटें — जैसे यीशु ने 5,000 लोगों को खिलाया (लूका 9:14)। हर पोस्टर 100 की एक सूची है जिसके लिए आप प्रार्थना कर सकते हैं, छाप सकते हैं और दीवार पर लगा सकते हैं — उनके लिए उनके जनसमूह के नाम से प्रार्थना करते हुए।",loadingNamed:"{name} लोड हो रहा है…",couldNotLoadNamed:"{name} लोड नहीं हो सका।",engineMissing:"{engine} नक्शा इंजन लोड नहीं हुआ।",packetFailed:"पुस्तिका विफल: {reason}",selectionPacketFailed:"चयन की पुस्तिका विफल: {reason}",posterOneTerritory:"पोस्टर एक समय में एक क्षेत्र छापता है — {count} चयनित।",selectionPosterFailed:"चयन का पोस्टर विफल: {reason}",mapUnavailable:"मानचित्र अनुपलब्ध",copied:"कॉपी हो गया!",copyFailed:"कॉपी विफल — Ctrl/Cmd-C दबाएँ",engineNotLoaded:"मानचित्र इंजन लोड नहीं हुआ",engineNotLoadedDetail:"{engine} मानचित्र इंजन लोड नहीं हुआ। सूची और लेजेंड अप्रभावित हैं।"},"./locales/hi/poster.json":{export_poster:"पोस्टर निर्यात करें",size:"आकार",orientation:"अभिविन्यास",portrait:"पोर्ट्रेट",landscape:"लैंडस्केप",dpi:"DPI",format:"प्रारूप",png_raster:"PNG (रास्टर)",pdf_raster:"PDF (वेक्टर पृष्ठ पर रास्टर)",title:"शीर्षक",map_title:"मानचित्र शीर्षक",subtitle:"उपशीर्षक",slots:"स्लॉट",scale_bar:"स्केल बार",north_arrow:"उत्तर तीर",footer_attribution:"फ़ुटर (एट्रिब्यूशन आवश्यक)",cancel:"रद्द करें",map_preview:"मानचित्र पूर्वावलोकन",loading_snapshot:"मानचित्र स्नैपशॉट लोड हो रहा है…",preview_unavailable:"पूर्वावलोकन उपलब्ध नहीं"},"./locales/hi/search.json":{placeholder:"लोग, स्थान, भाषा, धर्म",placeholderNoPlaces:"लोग, भाषा, धर्म (स्थान खोज के लिए Mapbox टोकन चाहिए)",labels:{people:"लोग:",place:"स्थान:",language:"भाषा:",religion:"धर्म:"},sections:{within:"{selection} के भीतर",allData:"सभी DOXA डेटा"},kinds:{people:"जनसमूह + देश",peopleGroup:"जनसमूह",bloc:"समानता समूह",cluster:"जनसमूह क्लस्टर",country:"देश",region:"क्षेत्र",family:"भाषा परिवार",languageKind:"भाषा",dialect:"बोली",religionKind:"धर्म"},upg100Placeholder:"जनसमूह, UPG-100 सूची या क्षेत्र खोजें…"},"./locales/hi/tabs.json":{prayer:"प्रार्थना",adoption:"गोद लेना",engagement:"सहभागिता","affinity-blocks":"जनसमूह",regions:"क्षेत्र",countries:"देश","language-families":"भाषाएँ",religion:"धर्म",family:"भाषा परिवार",language:"भाषा",dialect:"बोली/रूप",bloc:"समानता समूह",cluster:"क्लस्टर",group:"जनसमूह",pgic:"देश में जनसमूह",region:"WAGF क्षेत्र",block:"WAGF ब्लॉक",country:"देश",upg100Region:"क्षेत्र",upg100Zone:"UPG-100 सूचियाँ",upg100Group:"जनसमूह",selectView:"दृश्य चुनें",views:"दृश्य",prayerResources:"प्रार्थना संसाधन",map:"मानचित्र",countryPosters:"देश पोस्टर"},"./locales/it/grid.json":{search:"Cerca popoli…",hide_filters:"Nascondi filtri",show_filters:"Mostra filtri",total:"Totale",showing:"Mostrati",load_more:"Carica altro",full_profile:"Profilo completo",wagf_region:"Regione",wagf_block:"Blocco di affinità",rop1:"Popolo",religion:"Religione",exact_filter:"Esatto",clear_all:"Cancella tutto",loading:"Caricamento…",no_results:"Nessun popolo corrisponde a questo filtro.",type_to_search:"Digita per cercare...",load_failed:"Impossibile caricare i dati dei popoli. È un problema di connessione, non del filtro.",search_people_or_countries:"Cerca popoli o paesi…"},"./locales/it/messages.json":{menuComingSoon:"Menu in arrivo",pinHint:{tapDot:"Tocca un punto colorato — qualcuno ha ancora bisogno di preghiera"},upg100WallHeading:"La mia lista UPG 100 — Liste di preghiera e poster",upg100WallTag:"Mobilitazione alla preghiera",upg100WallIntro:"Distribuisci il compito della preghiera in gruppi di cinquanta e di cento — come Gesù sfamò i 5.000 (Luca 9:14). Ogni poster è una lista di 100 che puoi pregare, stampare e appendere al muro — pregando per loro con il nome del loro popolo.",loadingNamed:"Caricamento di {name}…",couldNotLoadNamed:"Impossibile caricare {name}.",engineMissing:"Il motore di mappa {engine} non è stato caricato.",packetFailed:"Libretto non riuscito: {reason}",selectionPacketFailed:"Libretto della selezione non riuscito: {reason}",posterOneTerritory:"Il manifesto stampa un territorio alla volta — {count} selezionati.",selectionPosterFailed:"Manifesto della selezione non riuscito: {reason}",mapUnavailable:"Mappa non disponibile",copied:"Copiato!",copyFailed:"Copia non riuscita — premi Ctrl/Cmd-C",engineNotLoaded:"motore di mappe non caricato",engineNotLoadedDetail:"Il motore di mappe {engine} non si è caricato. L’elenco e la legenda non sono interessati."},"./locales/it/poster.json":{export_poster:"Esporta poster",size:"Dimensione",orientation:"Orientamento",portrait:"Verticale",landscape:"Orizzontale",dpi:"DPI",format:"Formato",png_raster:"PNG (raster)",pdf_raster:"PDF (raster su pagina vettoriale)",title:"Titolo",map_title:"Titolo della mappa",subtitle:"Sottotitolo",slots:"Elementi",scale_bar:"Barra della scala",north_arrow:"Freccia nord",footer_attribution:"Piè di pagina (attribuzione obbligatoria)",cancel:"Annulla",map_preview:"anteprima della mappa",loading_snapshot:"Caricamento dell'istantanea della mappa…",preview_unavailable:"anteprima non disponibile"},"./locales/it/search.json":{placeholder:"Popolo, luogo, lingua, religione",placeholderNoPlaces:"Popolo, lingua, religione (la ricerca di luoghi richiede un token Mapbox)",labels:{people:"Popolo:",place:"Luogo:",language:"Lingua:",religion:"Religione:"},sections:{within:"In {selection}",allData:"Tutti i dati DOXA"},kinds:{people:"Popolo + paese",peopleGroup:"Popolo",bloc:"Blocco di affinità",cluster:"Cluster di popoli",country:"Paese",region:"Regione",family:"Famiglia linguistica",languageKind:"Lingua",dialect:"Dialetto",religionKind:"Religione"},upg100Placeholder:"Cerca popolo, elenco UPG-100 o regione…"},"./locales/it/tabs.json":{prayer:"Preghiera",adoption:"Adozione",engagement:"Impegno","affinity-blocks":"Popoli",regions:"Regioni",countries:"Paesi","language-families":"Lingue",religion:"Religioni",family:"Famiglia ling.",language:"Lingua",dialect:"Dialetto/Variante",bloc:"Blocco di affinità",cluster:"Cluster",group:"Popolo",pgic:"Popolo nel paese",region:"Regione WAGF",block:"Blocco WAGF",country:"Paese",upg100Region:"Regione",upg100Zone:"Liste UPG-100",upg100Group:"Gruppo etnico",selectView:"Seleziona vista",views:"Viste",prayerResources:"Risorse di preghiera",map:"Mappa",countryPosters:"Poster per paese"},"./locales/pt/grid.json":{search:"Pesquisar povos…",hide_filters:"Ocultar filtros",show_filters:"Mostrar filtros",total:"Total",showing:"Mostrando",load_more:"Carregar mais",full_profile:"Perfil completo",wagf_region:"Região",wagf_block:"Bloco de afinidade",rop1:"Povo",religion:"Religião",exact_filter:"Exato",clear_all:"Limpar tudo",loading:"A carregar…",no_results:"Nenhum povo corresponde a este filtro.",type_to_search:"Escreva para pesquisar...",load_failed:"Não foi possível carregar os dados dos povos. É um problema de ligação, não do seu filtro.",search_people_or_countries:"Pesquisar povos ou países…"},"./locales/pt/messages.json":{menuComingSoon:"Menu em breve",pinHint:{tapDot:"Toque num ponto colorido — alguém ainda precisa de oração"},upg100WallHeading:"A minha lista UPG 100 — Listas de oração e cartazes",upg100WallTag:"Mobilização de oração",upg100WallIntro:"Reparta a tarefa da oração em grupos de cinquenta e de cem — como Jesus alimentou os 5.000 (Lucas 9:14). Cada cartaz é uma lista de 100 que pode orar, imprimir e pôr na parede — orando por eles pelo nome do seu povo.",loadingNamed:"Carregando {name}…",couldNotLoadNamed:"Não foi possível carregar {name}.",engineMissing:"O motor de mapa {engine} não foi carregado.",packetFailed:"Falha ao gerar o caderno: {reason}",selectionPacketFailed:"Falha ao gerar o caderno da seleção: {reason}",posterOneTerritory:"O cartaz imprime um território de cada vez — {count} selecionados.",selectionPosterFailed:"Falha ao gerar o cartaz da seleção: {reason}",mapUnavailable:"Mapa indisponível",copied:"Copiado!",copyFailed:"Falha ao copiar — pressione Ctrl/Cmd-C",engineNotLoaded:"motor de mapas não carregado",engineNotLoadedDetail:"O motor de mapas {engine} não carregou. A lista e a legenda não são afetadas."},"./locales/pt/poster.json":{export_poster:"Exportar pôster",size:"Tamanho",orientation:"Orientação",portrait:"Retrato",landscape:"Paisagem",dpi:"DPI",format:"Formato",png_raster:"PNG (raster)",pdf_raster:"PDF (raster em página vetorial)",title:"Título",map_title:"Título do mapa",subtitle:"Subtítulo",slots:"Elementos",scale_bar:"Barra de escala",north_arrow:"Seta norte",footer_attribution:"Rodapé (atribuição obrigatória)",cancel:"Cancelar",map_preview:"pré-visualização do mapa",loading_snapshot:"Carregando o instantâneo do mapa…",preview_unavailable:"pré-visualização indisponível"},"./locales/pt/search.json":{placeholder:"Povo, local, língua, religião",placeholderNoPlaces:"Povo, língua, religião (a busca de locais requer um token do Mapbox)",labels:{people:"Povo:",place:"Local:",language:"Língua:",religion:"Religião:"},kinds:{people:"Povo + país",peopleGroup:"Povo",bloc:"Bloco de afinidade",cluster:"Agrupamento de povos",country:"País",region:"Região",family:"Família linguística",languageKind:"Idioma",dialect:"Dialeto",religionKind:"Religião"},sections:{within:"Dentro de {selection}",allData:"Todos os dados DOXA"},upg100Placeholder:"Procurar povo, lista UPG-100 ou região…"},"./locales/pt/tabs.json":{prayer:"Oração",adoption:"Adoção",engagement:"Engajamento","affinity-blocks":"Povos",regions:"Regiões",countries:"Países","language-families":"Idiomas",religion:"Religiões",family:"Família linguística",language:"Idioma",dialect:"Dialeto/Variedade",bloc:"Bloco de afinidade",cluster:"Agrupamento",group:"Povo",pgic:"Povo no país",region:"Região WAGF",block:"Bloco WAGF",country:"País",upg100Region:"Região",upg100Zone:"Listas UPG-100",upg100Group:"Grupo étnico",selectView:"Selecionar vista",views:"Vistas",prayerResources:"Recursos de oração",map:"Mapa",countryPosters:"Cartazes por país"},"./locales/ro/grid.json":{search:"Caută popoare…",hide_filters:"Ascunde filtrele",show_filters:"Arată filtrele",total:"Total",showing:"Se afișează",load_more:"Încarcă mai mult",full_profile:"Profil complet",wagf_region:"Regiune",wagf_block:"Bloc de afinitate",rop1:"Popor",religion:"Religie",exact_filter:"Exact",clear_all:"Șterge tot",loading:"Se încarcă…",no_results:"Niciun popor nu corespunde acestui filtru.",type_to_search:"Scrie pentru a căuta...",load_failed:"Datele despre popoare nu au putut fi încărcate. Este o problemă de conexiune, nu a filtrului.",search_people_or_countries:"Caută popoare sau țări…"},"./locales/ro/messages.json":{menuComingSoon:"Meniu în curând",pinHint:{tapDot:"Atinge un punct colorat — cineva are încă nevoie de rugăciune"},upg100WallHeading:"Lista mea UPG 100 — Liste de rugăciune și afișe",upg100WallTag:"Mobilizare pentru rugăciune",upg100WallIntro:"Împarte sarcina rugăciunii în grupuri de câte cincizeci și o sută — așa cum Isus a hrănit cei 5.000 (Luca 9:14). Fiecare afiș este o listă de 100 pe care o poți ruga, tipări și pune pe perete — rugându-te pentru ei pe numele poporului lor.",loadingNamed:"Se încarcă {name}…",couldNotLoadNamed:"Nu s-a putut încărca {name}.",engineMissing:"Motorul de hartă {engine} nu s-a încărcat.",packetFailed:"Broșura a eșuat: {reason}",selectionPacketFailed:"Broșura selecției a eșuat: {reason}",posterOneTerritory:"Afișul tipărește un teritoriu pe rând — {count} selectate.",selectionPosterFailed:"Afișul selecției a eșuat: {reason}",mapUnavailable:"Harta indisponibilă",copied:"Copiat!",copyFailed:"Copierea a eșuat — apasă Ctrl/Cmd-C",engineNotLoaded:"motorul de hărți nu s-a încărcat",engineNotLoadedDetail:"Motorul de hărți {engine} nu s-a încărcat. Lista și legenda nu sunt afectate."},"./locales/ro/poster.json":{export_poster:"Exportă posterul",size:"Dimensiune",orientation:"Orientare",portrait:"Portret",landscape:"Peisaj",dpi:"DPI",format:"Format",png_raster:"PNG (raster)",pdf_raster:"PDF (raster pe pagină vectorială)",title:"Titlu",map_title:"Titlul hărții",subtitle:"Subtitlu",slots:"Elemente",scale_bar:"Bară de scară",north_arrow:"Săgeata nord",footer_attribution:"Subsol (atribuire obligatorie)",cancel:"Anulează",map_preview:"previzualizare hartă",loading_snapshot:"Se încarcă instantaneul hărții…",preview_unavailable:"previzualizare indisponibilă"},"./locales/ro/search.json":{placeholder:"Popor, loc, limbă, religie",placeholderNoPlaces:"Popor, limbă, religie (căutarea locurilor necesită un token Mapbox)",labels:{people:"Popor:",place:"Loc:",language:"Limbă:",religion:"Religie:"},sections:{within:"În {selection}",allData:"Toate datele DOXA"},kinds:{people:"Popor + țară",peopleGroup:"Popor",bloc:"Bloc de afinitate",cluster:"Grup de popoare",country:"Țară",region:"Regiune",family:"Familie de limbi",languageKind:"Limbă",dialect:"Dialect",religionKind:"Religie"},upg100Placeholder:"Caută popor, listă UPG-100 sau regiune…"},"./locales/ro/tabs.json":{prayer:"Rugăciune",adoption:"Adopție",engagement:"Implicare","affinity-blocks":"Popoare",regions:"Regiuni",countries:"Țări","language-families":"Limbi",religion:"Religii",family:"Familie de limbi",language:"Limbă",dialect:"Dialect/Variantă",bloc:"Bloc de afinitate",cluster:"Grup",group:"Popor",pgic:"Popor în țară",region:"Regiune WAGF",block:"Bloc WAGF",country:"Țară",upg100Region:"Regiune",upg100Zone:"Liste UPG-100",upg100Group:"Grup etnic",selectView:"Alege vizualizarea",views:"Vizualizări",prayerResources:"Resurse de rugăciune",map:"Hartă",countryPosters:"Afișe pe țări"},"./locales/ru/grid.json":{search:"Поиск народов…",hide_filters:"Скрыть фильтры",show_filters:"Показать фильтры",total:"Всего",showing:"Показано",load_more:"Показать ещё",full_profile:"Полный профиль",wagf_region:"Регион",wagf_block:"Блок родства",rop1:"Народ",religion:"Религия",exact_filter:"Точное совпадение",clear_all:"Очистить всё",loading:"Загрузка…",no_results:"Нет народов, соответствующих этому фильтру.",type_to_search:"Введите для поиска...",load_failed:"Не удалось загрузить данные о народах. Это проблема соединения, а не фильтра.",search_people_or_countries:"Поиск народов или стран…"},"./locales/ru/messages.json":{menuComingSoon:"Меню скоро появится",pinHint:{tapDot:"Нажмите на цветную точку — кому-то всё ещё нужна молитва"},upg100WallHeading:"Мой список UPG 100 — молитвенные списки и плакаты",upg100WallTag:"Молитвенная мобилизация",upg100WallIntro:"Разделите молитвенный труд на группы по пятьдесят и по сто — так Иисус накормил 5000 (Луки 9:14). Каждый плакат — это список из 100, о котором можно молиться, распечатать и повесить на стену, молясь о них по имени их народа.",loadingNamed:"Загрузка {name}…",couldNotLoadNamed:"Не удалось загрузить {name}.",engineMissing:"Картографический движок {engine} не загрузился.",packetFailed:"Не удалось создать буклет: {reason}",selectionPacketFailed:"Не удалось создать буклет выбора: {reason}",posterOneTerritory:"Плакат печатает по одной территории — выбрано {count}.",selectionPosterFailed:"Не удалось создать плакат выбора: {reason}",mapUnavailable:"Карта недоступна",copied:"Скопировано!",copyFailed:"Не удалось скопировать — нажмите Ctrl/Cmd-C",engineNotLoaded:"движок карты не загружен",engineNotLoadedDetail:"Движок карты {engine} не загрузился. Список и легенда не затронуты."},"./locales/ru/poster.json":{export_poster:"Экспорт плаката",size:"Размер",orientation:"Ориентация",portrait:"Портретная",landscape:"Альбомная",dpi:"DPI",format:"Формат",png_raster:"PNG (растр)",pdf_raster:"PDF (растр на векторной странице)",title:"Заголовок",map_title:"Заголовок карты",subtitle:"Подзаголовок",slots:"Элементы",scale_bar:"Масштабная линейка",north_arrow:"Указатель севера",footer_attribution:"Нижний колонтитул (указание источника обязательно)",cancel:"Отмена",map_preview:"предпросмотр карты",loading_snapshot:"Загрузка снимка карты…",preview_unavailable:"предпросмотр недоступен"},"./locales/ru/search.json":{placeholder:"Народ, место, язык, религия",placeholderNoPlaces:"Народ, язык, религия (для поиска мест нужен токен Mapbox)",labels:{people:"Народ:",place:"Место:",language:"Язык:",religion:"Религия:"},kinds:{people:"Народ + страна",peopleGroup:"Народ",bloc:"Блок родства",cluster:"Кластер народов",country:"Страна",region:"Регион",family:"Языковая семья",languageKind:"Язык",dialect:"Диалект",religionKind:"Религия"},sections:{within:"В пределах {selection}",allData:"Все данные DOXA"},upg100Placeholder:"Поиск народа, списка UPG-100 или региона…"},"./locales/ru/tabs.json":{prayer:"Молитва",adoption:"Усыновление",engagement:"Вовлечённость","affinity-blocks":"Народы",regions:"Регионы",countries:"Страны","language-families":"Языки",religion:"Религии",family:"Языковая семья",language:"Язык",dialect:"Диалект/вариант",bloc:"Блок родства",cluster:"Кластер",group:"Народ",pgic:"Народ в стране",region:"Регион WAGF",block:"Блок WAGF",country:"Страна",upg100Region:"Регион",upg100Zone:"Списки UPG-100",upg100Group:"Народ",selectView:"Выбрать вид",views:"Виды",prayerResources:"Молитвенные ресурсы",map:"Карта",countryPosters:"Плакаты по странам"},"./locales/zh/grid.json":{search:"搜索民族…",hide_filters:"隐藏筛选",show_filters:"显示筛选",total:"总计",showing:"显示",load_more:"加载更多",full_profile:"完整档案",wagf_region:"区域",wagf_block:"亲缘板块",rop1:"民族",religion:"宗教",exact_filter:"精确",clear_all:"全部清除",loading:"加载中…",no_results:"没有符合此筛选条件的民族。",type_to_search:"输入以搜索...",load_failed:"无法加载民族数据。这是连接问题,而不是筛选问题。",search_people_or_countries:"搜索民族或国家…"},"./locales/zh/messages.json":{menuComingSoon:"菜单即将推出",pinHint:{tapDot:"点按一个彩色圆点——仍有人需要祷告"},upg100WallHeading:"我的 UPG 100 名單 — 禱告名單與海報",upg100WallTag:"禱告動員",upg100WallIntro:"將禱告的工作分成五十人、一百人一組 — 就像耶穌餵飽五千人那樣(路加福音 9:14)。每一張海報都是一份 100 人名單,你可以為他們禱告、列印出來、貼在牆上 — 按著他們族群的名字為他們禱告。",loadingNamed:"正在加载{name}…",couldNotLoadNamed:"无法加载{name}。",engineMissing:"{engine} 地图引擎未能加载。",packetFailed:"祷告册生成失败:{reason}",selectionPacketFailed:"所选内容的祷告册生成失败:{reason}",posterOneTerritory:"海报一次只能打印一个区域——已选 {count} 个。",selectionPosterFailed:"所选内容的海报生成失败:{reason}",mapUnavailable:"地图不可用",copied:"已复制!",copyFailed:"复制失败——请按 Ctrl/Cmd-C",engineNotLoaded:"地图引擎未加载",engineNotLoadedDetail:"{engine} 地图引擎未能加载。列表和图例不受影响。"},"./locales/zh/poster.json":{export_poster:"导出海报",size:"尺寸",orientation:"方向",portrait:"纵向",landscape:"横向",dpi:"DPI",format:"格式",png_raster:"PNG(位图)",pdf_raster:"PDF(矢量页面上的位图)",title:"标题",map_title:"地图标题",subtitle:"副标题",slots:"元素",scale_bar:"比例尺",north_arrow:"指北针",footer_attribution:"页脚(必须署名)",cancel:"取消",map_preview:"地图预览",loading_snapshot:"正在加载地图快照…",preview_unavailable:"预览不可用"},"./locales/zh/search.json":{placeholder:"民族、地点、语言、宗教",placeholderNoPlaces:"民族、语言、宗教(地点搜索需要 Mapbox 令牌)",labels:{people:"民族:",place:"地点:",language:"语言:",religion:"宗教:"},sections:{within:"在 {selection} 之內",allData:"所有 DOXA 資料"},kinds:{people:"民族 + 国家",peopleGroup:"民族",bloc:"亲缘板块",cluster:"民族群",country:"国家",region:"区域",family:"语系",languageKind:"语言",dialect:"方言",religionKind:"宗教"},upg100Placeholder:"搜索民族、UPG-100 名单或区域…"},"./locales/zh/tabs.json":{prayer:"祷告",adoption:"认领",engagement:"参与","affinity-blocks":"民族",regions:"区域",countries:"国家","language-families":"语言",religion:"宗教",family:"语系",language:"语言",dialect:"方言/变体",bloc:"亲缘板块",cluster:"民族群",group:"民族",pgic:"国内民族",region:"WAGF 区域",block:"WAGF 板块",country:"国家",upg100Region:"区域",upg100Zone:"UPG-100 名单",upg100Group:"族群",selectView:"選擇檢視",views:"檢視",prayerResources:"禱告資源",map:"地圖",countryPosters:"国家海报"}}),It={};for(const[e,t]of Object.entries(rl)){const o=e.match(/\.\/locales\/([^/]+)\/([^/]+)\.json$/);if(!o)continue;const[,s,n]=o;It[s]??(It[s]={}),It[s][n]=t}const vi=["ar","de","en","es","fr","hi","it","pt","ro","ru","zh"];function ll(){try{const e=new URLSearchParams(window.location.search);return(e.get("lang")||e.get("locale")||"").split("-")[0].toLowerCase()}catch{return""}}function cl(){var s;const e=ll();if(vi.includes(e))return e;const o=(((s=document==null?void 0:document.documentElement)==null?void 0:s.lang)||"").split("-")[0].toLowerCase();return vi.includes(o)?o:"en"}const pl="__DOXA_PAGE_LOCALE";function dl(){try{return typeof window<"u"&&window[pl]||""}catch{return""}}function ul(e,t){const o=n=>{let i=It[n];for(const a of String(e).split(".")){if(!i||typeof i!="object")return;i=i[a]}return typeof i=="string"?i:void 0},s=dl()||cl();return o(s)??o("en")}function fl(e,t){const o=Qn(),s=t;yn(()=>{var l;if(!o)return;const n=(l=o.proxy)==null?void 0:l.$el;if(!n)return;const i=n.getRootNode();if(!(i instanceof ShadowRoot))return;const a=i.querySelector(`style[data-shadow-styles="${s}"]`);if(a){a.textContent!==e&&(a.textContent=e);return}const r=document.createElement("style");r.setAttribute("data-shadow-styles",s),r.textContent=e,i.appendChild(r)})}const yi={menu:'',map:'',globe:'',heart:'',prayer:'',list:'',users:'',flag:'',target:'',pin:'',monitor:'',chart:'',folder:'',layers:'',flask:'',share:'',beaker:'',chevron:'',grid:'',tree:'',dots:'',embed:'',send:'',poster:'',search:'',book:'',wifi:''};function gl(e,t=""){const o=yi[e]||yi.map;return``}const hl=".vtl{position:absolute;top:0;right:0;bottom:0;left:0;display:grid!important;grid-template-rows:auto 1fr;height:100%;width:100%;min-height:420px;background:#f3f3f1;color:#3b463d;font-family:Public Sans,-apple-system,BlinkMacSystemFont,Segoe UI,system-ui,sans-serif;-webkit-font-smoothing:antialiased;--vtl-accent:#92b195;--vtl-border:#d1d4cd;--vtl-elevated:#ffffff;--vtl-accented:#d1d4cd;--vtl-muted:#6d766e;--vtl-rail:256px}.vtl.no-header{grid-template-rows:1fr}.vtl-top{flex:0 0 auto;display:flex;align-items:center;gap:10px;box-sizing:border-box;min-height:64px;padding:8px 16px;border-bottom:1px solid var(--vtl-border);background:#fff}.vtl-menu{display:none;font:16px/1 system-ui;color:#3b463d;background:#d1d4cd;border:1px solid #d1d4cd;border-radius:8px;padding:5px 10px;cursor:pointer}.vtl-fab{position:absolute;z-index:15;left:calc(12px + env(safe-area-inset-left));bottom:calc(12px + env(safe-area-inset-bottom));width:44px;height:44px;display:flex;align-items:center;justify-content:center;font:18px/1 system-ui;color:#3b463d;background:#fff;border:1px solid var(--vtl-border);border-radius:50%;box-shadow:0 2px 10px #0000002e;cursor:pointer}.vtl-fab:hover{background:#d1d4cd}.vtl-fab:focus-visible{outline:2px solid var(--vtl-accent);outline-offset:2px}.vtl-menu:hover{background:#d1d4cd}.vtl-brand{display:inline-flex;align-items:center}.vtl-brand:empty{display:none}.vtl-title{font-size:15px;font-weight:600;letter-spacing:-.01em;color:#3b463d}.vtl-meta{color:var(--vtl-muted);font-size:12px;margin-left:auto;display:inline-flex;align-items:center;gap:8px}.vtl-body{min-height:0;position:relative;display:flex}.vtl-nav{position:absolute;top:0;bottom:0;left:0;z-index:5;width:256px;box-sizing:border-box;overflow-y:auto;overflow-x:hidden;border-right:1px solid var(--vtl-border);padding:12px 12px 20px;background:#fff;scrollbar-width:thin;scrollbar-color:#c4c8c0 transparent;contain:layout paint;transform:translate(0);transition:transform .2s cubic-bezier(.4,0,.2,1);will-change:transform}.vtl-nav::-webkit-scrollbar{width:8px;height:8px}.vtl-nav::-webkit-scrollbar-track{background:transparent}.vtl-nav::-webkit-scrollbar-thumb{background:#c4c8c0;border-radius:8px}.vtl-nav::-webkit-scrollbar-thumb:hover{background:#9aa197}.vtl-collapse{display:flex;align-items:center;gap:8px;width:100%;box-sizing:border-box;margin:0 0 8px;padding:7px 10px;border:1px solid var(--vtl-border);border-radius:8px;background:#d1d4cd;color:var(--vtl-muted);font:inherit;font-size:12px;cursor:pointer}.vtl-collapse:hover{background:var(--vtl-accented);color:#3b463d}.vtl-collapse:focus-visible{outline:2px solid var(--vtl-accent);outline-offset:-2px}.vtl-collapse-ic{flex:0 0 auto;display:inline-flex;transition:transform .16s ease;transform:rotate(180deg)}.vtl-collapse-ic svg{width:16px;height:16px}.vtl-collapse-tx{white-space:nowrap}.vtl-grp{margin-bottom:2px}.vtl-grp+.vtl-grp{margin-top:8px;padding-top:8px;border-top:1px solid var(--vtl-border)}.vtl-tier{width:100%;padding:8px 8px 6px;display:flex;align-items:center;gap:8px;box-sizing:border-box}.vtl-tier-btn{border:0;background:none;color:inherit;font:inherit;cursor:pointer;text-align:left;border-radius:8px}.vtl-tier-btn:hover{background:var(--vtl-accented)}.vtl-tier-btn:focus-visible{outline:2px solid var(--vtl-accent);outline-offset:-2px}.vtl-tier-ic{flex:0 0 auto;display:inline-flex;color:var(--vtl-muted)}.vtl-tier-ic svg{width:15px;height:15px}.vtl-cap{font:700 10px/1 system-ui;letter-spacing:.4px;color:#052e16;background:var(--vtl-accent);border-radius:999px;padding:3px 7px}.vtl-tl{font-weight:600;font-size:11px;letter-spacing:.03em;text-transform:uppercase;color:var(--vtl-muted)}.vtl-td{color:#6b6b6b;font-size:11px;margin-left:auto}.vtl-chev{margin-left:auto;display:inline-flex;color:var(--vtl-muted);transition:transform .16s ease}.vtl-chev svg{width:15px;height:15px}.vtl-chev.open{transform:rotate(90deg)}.vtl-rows{display:flex;flex-direction:column;gap:1px}.vtl-tab{display:flex;align-items:center;gap:11px;width:100%;min-height:48px;text-align:left;border:0;background:none;color:var(--vtl-muted);padding:8px 12px;cursor:pointer;border-radius:var(--vtl-radius,8px);font:inherit;margin:0;transition:background .13s ease,color .13s ease}.vtl-tab:hover{background:var(--vtl-accented);color:#3b463d}.vtl-tab:focus-visible{outline:2px solid var(--vtl-accent);outline-offset:-2px}.vtl-tab.active{background:var(--vtl-accented);color:#3b463d;font-weight:500}.vtl-tab.active .vtl-tab-ic{color:var(--vtl-accent)}.vtl-tab-ic{flex:0 0 auto;display:inline-flex;color:var(--vtl-muted)}.vtl-tab-ic svg{width:20px;height:20px}.vtl-tab-emoji{font-size:17px;line-height:1;flex:0 0 auto}.vtl-tab-fallback{display:none;flex:0 0 auto;width:20px;height:20px;align-items:center;justify-content:center;font-size:12px;font-weight:600;color:var(--vtl-muted);background:var(--vtl-accented);border-radius:6px}.vtl-tab.active .vtl-tab-fallback{color:var(--vtl-accent)}.vtl-tab-text{display:flex;flex-direction:column;min-width:0}.vtl-tab-label{font-size:13px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:flex;align-items:center;gap:6px}.vtl-tab-badge{font:600 9px/1 system-ui;letter-spacing:.3px;text-transform:uppercase;color:var(--vtl-accent);border:1px solid var(--vtl-accent);border-radius:var(--vtl-radius,8px);padding:2px 5px}.vtl-tab-sub{font-size:11px;color:#6b6b6b;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.vtl-tab-sub code{font-family:ui-monospace,Menlo,monospace}.vtl-tab.active .vtl-tab-sub{color:var(--vtl-muted)}.vtl-main{position:absolute;top:0;bottom:0;right:0;left:256px;min-width:0;display:flex;flex-direction:column}.vtl-content{flex:1 1 auto;position:relative;min-height:0}.vtl-host{position:absolute;top:0;right:0;bottom:0;left:0;overflow-y:auto;overflow-x:hidden;overscroll-behavior:contain;--profile-min-h:0}.vtl-host-slot{position:relative;min-height:100%}.vtl-host-slot>*{min-height:0;max-height:none}.vtl-host-hint{position:absolute;top:0;right:0;bottom:0;left:0;display:grid;place-items:center;text-align:center;color:var(--dx-muted, #6d766e);font-size:13px;padding:20px}.vtl-host-hint.err{color:#f87171}.vtl-host-hint small{color:var(--dx-muted, #6d766e)}.vtl.rail-collapsed .vtl-nav{transform:translate(-184px)}.vtl.rail-collapsed .vtl-main{left:72px}.vtl.rail-collapsed .vtl-collapse{padding-left:184px;justify-content:flex-start}.vtl.rail-collapsed .vtl-collapse-ic{transform:rotate(0)}.vtl.rail-collapsed .vtl-collapse-tx{display:none}.vtl.rail-collapsed .vtl-tab{padding-left:188px;gap:0}.vtl.rail-collapsed .vtl-tab-text{display:none}.vtl.rail-collapsed .vtl-tab-emoji{font-size:19px}.vtl.rail-collapsed .vtl-tab-fallback{display:inline-flex}.vtl.rail-collapsed .vtl-tier{padding-left:196px}.vtl.rail-collapsed .vtl-tl,.vtl.rail-collapsed .vtl-td,.vtl.rail-collapsed .vtl-cap,.vtl.rail-collapsed .vtl-chev{display:none}.vtl.rail-collapsed .vtl-grp+.vtl-grp{margin-top:6px;padding-top:6px}@media (max-width: 760px){.vtl-top{min-height:56px}.vtl-menu{display:inline-block}.vtl-meta{display:none}.vtl-nav{z-index:20;width:256px;box-shadow:0 0 28px #0000008c;transform:translate(-100%)}.vtl.nav-open .vtl-nav{transform:translate(0);z-index:1000}.vtl-main{left:0}.vtl.rail-collapsed .vtl-nav{transform:translate(-100%)}.vtl.rail-collapsed.nav-open .vtl-nav{transform:translate(0)}.vtl.rail-collapsed .vtl-main{left:0}.vtl.rail-collapsed .vtl-collapse{padding-left:10px;justify-content:flex-start}.vtl.rail-collapsed .vtl-collapse-ic{transform:rotate(180deg)}.vtl.rail-collapsed .vtl-collapse-tx{display:inline}.vtl.rail-collapsed .vtl-tab{padding-left:10px;gap:11px}.vtl.rail-collapsed .vtl-tab-text{display:flex}.vtl.rail-collapsed .vtl-tab-fallback{display:none}.vtl.rail-collapsed .vtl-tier{padding-left:8px}.vtl.rail-collapsed .vtl-tl,.vtl.rail-collapsed .vtl-td,.vtl.rail-collapsed .vtl-cap,.vtl.rail-collapsed .vtl-chev{display:inline}}.vtl:dir(rtl) .vtl-nav{left:auto;right:0;border-right:0;border-left:1px solid var(--vtl-border)}.vtl:dir(rtl) .vtl-main{left:0;right:256px}.vtl:dir(rtl) .vtl-tab,.vtl:dir(rtl) .vtl-tier-btn{text-align:right}.vtl:dir(rtl) .vtl-meta,.vtl:dir(rtl) .vtl-td,.vtl:dir(rtl) .vtl-chev{margin-left:0;margin-right:auto}.vtl:dir(rtl) .vtl-chev:not(.open){transform:scaleX(-1)}.vtl:dir(rtl) .vtl-collapse-ic svg{transform:scaleX(-1)}.vtl:dir(rtl) .vtl-fab{left:auto;right:calc(12px + env(safe-area-inset-right))}.vtl.rail-collapsed:dir(rtl) .vtl-nav{transform:translate(184px)}.vtl.rail-collapsed:dir(rtl) .vtl-main{left:0;right:72px}.vtl.rail-collapsed:dir(rtl) .vtl-collapse{padding-left:10px;padding-right:184px}.vtl.rail-collapsed:dir(rtl) .vtl-tab{padding-left:12px;padding-right:188px}.vtl.rail-collapsed:dir(rtl) .vtl-tier{padding-left:8px;padding-right:196px}@media (max-width: 760px){.vtl:dir(rtl) .vtl-nav{transform:translate(100%)}.vtl.nav-open:dir(rtl) .vtl-nav{transform:translate(0)}.vtl:dir(rtl) .vtl-main,.vtl.rail-collapsed:dir(rtl) .vtl-main{left:0;right:0}.vtl.rail-collapsed:dir(rtl) .vtl-nav{transform:translate(100%)}.vtl.rail-collapsed.nav-open:dir(rtl) .vtl-nav{transform:translate(0)}.vtl.rail-collapsed:dir(rtl) .vtl-collapse{padding-left:10px;padding-right:10px}.vtl.rail-collapsed:dir(rtl) .vtl-tab{padding-left:12px;padding-right:10px}.vtl.rail-collapsed:dir(rtl) .vtl-tier{padding-left:8px;padding-right:8px}}",xi=(e,t)=>{const o=e.__vccOpts||e;for(const[s,n]of t)o[s]=n;return o},bl=(e,t)=>ul(e)||t,Dt={};function ml(e){return e?(Dt[e]||(Dt[e]=new Promise((t,o)=>{const s=document.createElement("script");s.src=e,s.onload=()=>t(),s.onerror=()=>{delete Dt[e],o(new Error("failed to load "+e))},document.head.appendChild(s)})),Dt[e]):Promise.resolve()}function _l(e,t=5e3){return typeof customElements>"u"||customElements.get(e)?Promise.resolve():customElements.whenDefined?Promise.race([customElements.whenDefined(e),new Promise((o,s)=>setTimeout(()=>s(new Error("timeout waiting for <"+e+">")),t))]):Promise.resolve()}const $l=` /* STRUCTURAL DISPLAY — the !important is deliberate, not a hack. This layout's display mode is load-bearing: it CANNOT function as a block. As a library/ (high-bar) component it ships across all 5 deployment methods, and a host (app-shell direct-mount, WordPress, mobile webview) may force @@ -273,4 +273,4 @@ .vtl.rail-collapsed:dir(rtl) .vtl-tab { padding-left:12px; padding-right:10px; } .vtl.rail-collapsed:dir(rtl) .vtl-tier { padding-left:8px; padding-right:8px; } } -`,vl=ss({name:"VerticalTabsLayout",props:{active:{type:String,default:""},title:{type:String,default:""},items:{type:Array,default:()=>[]},groups:{type:Array,default:()=>[]},navLabel:{type:String,default:"Sections"},labels:{type:Object,default:()=>({})},initialNavOpen:{type:Boolean,default:!0},header:{type:Boolean,default:!0},initialRailCollapsed:{type:Boolean,default:!1}},emits:["update:active"],setup(){return fl($l,"vertical-tabs-layout"),{T:bl}},data(){return{navOpen:this.initialNavOpen,railCollapsed:this.initialRailCollapsed,_tabEls:{},folderOverride:{},narrow:!1,_mql:null,_onMedia:null,activatedKeys:{},hostState:{},hostError:{},_hostSlots:{},_hostMounted:{}}},computed:{railShown(){return this.narrow?this.navOpen:!0},allRows(){if(this.groups&&this.groups.length){const e=[];for(const t of this.groups)for(const o of t.rows||[])e.push(o);return e}return this.items},orderedKeys(){return this.allRows.map(e=>e.key)},elementRows(){return this.allRows.filter(e=>e&&e.element)},mountedElementRows(){return this.elementRows.filter(e=>this.activatedKeys[e.key])}},watch:{active:{immediate:!0,handler(e){this.activateElement(e)}}},mounted(){try{window.matchMedia&&(this._mql=window.matchMedia("(max-width: 760px)"),this.narrow=this._mql.matches,this.reconcileForWidth(),this._onMedia=e=>{this.narrow=e.matches,this.reconcileForWidth()},this._mql.addEventListener?this._mql.addEventListener("change",this._onMedia):this._mql.addListener&&this._mql.addListener(this._onMedia))}catch{}this.$nextTick(()=>this.activateElement(this.active))},beforeUnmount(){try{this._mql&&this._onMedia&&(this._mql.removeEventListener?this._mql.removeEventListener("change",this._onMedia):this._mql.removeListener&&this._mql.removeListener(this._onMedia))}catch{}this._mql=null,this._onMedia=null},methods:{registerTab(e,t){t&&(this._tabEls[e]=t)},isNarrow(){return this.narrow},reconcileForWidth(){this.narrow?(this.navOpen=!1,this.railCollapsed=!1):this.navOpen=!0},label(e){const t={toggleList:"Toggle list",openViews:"Open the list of views",expandList:"Expand list",collapseList:"Collapse list",collapse:"Collapse"};return this.labels&&this.labels[e]||t[e]},expandRail(){!this.narrow&&this.railCollapsed&&(this.railCollapsed=!1)},toggleRail(){this.narrow?this.navOpen=!this.navOpen:this.railCollapsed=!this.railCollapsed},setHostSlot(e,t){t&&(this._hostSlots[e]=t,this.$nextTick(()=>this.mountHostElement(e)))},activateElement(e){!e||!this.elementRows.find(o=>o.key===e)||(this.activatedKeys[e]||(this.activatedKeys={...this.activatedKeys,[e]:!0},this.hostState={...this.hostState,[e]:"loading"}),this.$nextTick(()=>this.mountHostElement(e)))},mountHostElement(e){if(this._hostMounted[e])return;const t=this.elementRows.find(s=>s.key===e),o=this._hostSlots[e];!t||!o||(this._hostMounted[e]=!0,this.hostState={...this.hostState,[e]:"loading"},ml(t.src).then(()=>_l(t.element)).then(()=>{o.innerHTML="";const s=document.createElement(t.element),n=t.attrs||{};for(const i in n){const a=n[i],r=a!=null&&typeof a=="object"?JSON.stringify(a):String(a);try{s[i]=a}catch{}try{s.setAttribute(i,r)}catch{}}s.style.cssText="display:block;position:absolute;inset:0;width:100%;height:100%;",o.appendChild(s),this.hostState={...this.hostState,[e]:"ready"}}).catch(s=>{this._hostMounted[e]=!1,this.hostState={...this.hostState,[e]:"error"},this.hostError={...this.hostError,[e]:s&&s.message||String(s)}}))},iconSvg(e){return e?gl(e):""},initial(e){const t=(e||"").trim();return t?t.charAt(0).toUpperCase():"•"},isFolderClosed(e){const t=this.folderOverride[e.key];return t!=null?!t:e.open!==!0},toggleFolder(e){const t=this.folderOverride[e],o=(this.groups||[]).find(n=>n.key===e),s=t??(o&&o.open===!0);this.folderOverride={...this.folderOverride,[e]:!s}},pick(e){this.$emit("update:active",e),this.narrow&&(this.navOpen=!1)},onKey(e){const t=this.orderedKeys;if(!t.length)return;const o=t.indexOf(this.active);let s=-1;if(e.key==="ArrowDown"||e.key==="ArrowRight")s=(o+1)%t.length;else if(e.key==="ArrowUp"||e.key==="ArrowLeft")s=(o-1+t.length)%t.length;else if(e.key==="Home")s=0;else if(e.key==="End")s=t.length-1;else return;e.preventDefault();const n=t[s];this.pick(n),this.$nextTick(()=>{const i=this._tabEls[n];i&&i.focus&&i.focus()})}}}),yl={key:0,class:"vtl-top"},xl=["aria-expanded","aria-label"],wl={class:"vtl-brand"},Pl={class:"vtl-title"},kl={class:"vtl-meta"},Ll=["aria-expanded","aria-label"],Sl={class:"vtl-body"},Cl=["aria-label","aria-hidden","role","aria-orientation"],Tl=["aria-expanded","aria-label"],Nl=["innerHTML"],Rl={class:"vtl-collapse-tx"},El=["aria-expanded","onClick"],Al={key:0,class:"vtl-cap"},Ol={class:"vtl-tl"},Fl={key:1,class:"vtl-td"},Ml=["innerHTML"],Dl={key:1,class:"vtl-tier"},Il={key:0,class:"vtl-cap"},Hl={class:"vtl-tl"},jl={key:1,class:"vtl-td"},Gl={class:"vtl-rows"},Wl=["aria-selected","tabindex","onClick"],Ul=["innerHTML"],Vl={key:1,class:"vtl-tab-emoji","aria-hidden":"true"},zl={key:2,class:"vtl-tab-fallback","aria-hidden":"true"},Bl={class:"vtl-tab-text"},Kl={class:"vtl-tab-label"},ql={key:0,class:"vtl-tab-badge"},Zl={key:0,class:"vtl-tab-sub"},Xl=["innerHTML"],Jl=["aria-selected","tabindex","onClick"],Yl=["innerHTML"],Ql={key:1,class:"vtl-tab-emoji","aria-hidden":"true"},ec={key:2,class:"vtl-tab-fallback","aria-hidden":"true"},tc={class:"vtl-tab-text"},oc={class:"vtl-tab-label"},sc={key:0,class:"vtl-tab-sub"},nc={class:"vtl-main"},ic={class:"vtl-content"},ac=["hidden"],rc={key:0,class:"vtl-host-hint"},lc={key:1,class:"vtl-host-hint err"};function cc(e,t,o,s,n,i){return A(),O("div",{class:Be(["vtl",{"nav-open":e.navOpen,"rail-collapsed":e.railCollapsed,"no-header":!e.header}])},[e.header?(A(),O("header",yl,[T("button",{class:"vtl-menu",type:"button","aria-expanded":String(e.navOpen),onClick:t[0]||(t[0]=a=>e.navOpen=!e.navOpen),"aria-label":e.label("toggleList")},"☰",8,xl),T("span",wl,[St(e.$slots,"brand")]),T("b",Pl,F(e.title),1),T("span",kl,[St(e.$slots,"meta")])])):de("",!0),e.narrow&&!e.header&&!e.navOpen?(A(),O("button",{key:1,class:"vtl-fab",type:"button","aria-expanded":String(e.navOpen),onClick:t[1]||(t[1]=a=>e.navOpen=!0),"aria-label":e.label("openViews")},"☰",8,Ll)):de("",!0),T("div",Sl,[T("nav",{class:"vtl-nav","aria-label":e.navLabel,"aria-hidden":String(!e.railShown),role:e.$slots.rail?null:"tablist","aria-orientation":e.$slots.rail?null:"vertical"},[T("button",{type:"button",class:"vtl-collapse","aria-expanded":String(!e.railCollapsed),"aria-label":e.railCollapsed?e.label("expandList"):e.label("collapseList"),onClick:t[2]||(t[2]=(...a)=>e.toggleRail&&e.toggleRail(...a))},[T("span",{class:"vtl-collapse-ic","aria-hidden":"true",innerHTML:e.iconSvg("chevron")},null,8,Nl),T("span",Rl,F(e.label("collapse")),1)],8,Tl),e.$slots.rail?St(e.$slots,"rail",{collapsed:e.railCollapsed&&!e.narrow,expand:e.expandRail,pick:e.pick},void 0,void 0,0):e.groups&&e.groups.length?(A(!0),O(ee,{key:1},dt(e.groups,a=>(A(),O("div",{class:"vtl-grp",key:a.key},[a.folder?(A(),O("button",{key:0,type:"button",class:"vtl-tier vtl-tier-btn","aria-expanded":String(!e.isFolderClosed(a)),onClick:r=>e.toggleFolder(a.key)},[a.badge?(A(),O("span",Al,F(a.badge),1)):de("",!0),T("span",Ol,F(a.label),1),a.count!=null?(A(),O("span",Fl,F(a.count),1)):de("",!0),T("span",{class:Be(["vtl-chev",{open:!e.isFolderClosed(a)}]),"aria-hidden":"true",innerHTML:e.iconSvg("chevron")},null,10,Ml)],8,El)):(A(),O("div",Dl,[a.badge?(A(),O("span",Il,F(a.badge),1)):de("",!0),T("span",Hl,F(a.label),1),a.count!=null?(A(),O("span",jl,F(a.count),1)):de("",!0)])),Qo(T("div",Gl,[(A(!0),O(ee,null,dt(a.rows,r=>(A(),O("button",{key:r.key,type:"button",role:"tab",class:Be(["vtl-tab",{active:r.key===e.active}]),"aria-selected":String(r.key===e.active),tabindex:r.key===e.active?0:-1,ref_for:!0,ref:l=>e.registerTab(r.key,l),onClick:l=>e.pick(r.key),onKeydown:t[3]||(t[3]=l=>e.onKey(l))},[r.icon?(A(),O("span",{key:0,class:"vtl-tab-ic","aria-hidden":"true",innerHTML:e.iconSvg(r.icon)},null,8,Ul)):r.emoji?(A(),O("span",Vl,F(r.emoji),1)):(A(),O("span",zl,F(e.initial(r.label)),1)),T("span",Bl,[T("span",Kl,[gt(F(r.label),1),r.badge?(A(),O("span",ql,F(r.badge),1)):de("",!0)]),r.sub?(A(),O("span",Zl,[T("span",{innerHTML:r.sub},null,8,Xl)])):de("",!0)])],42,Wl))),128))],512),[[ms,!a.folder||!e.isFolderClosed(a)]])]))),128)):(A(!0),O(ee,{key:2},dt(e.items,a=>(A(),O("button",{key:a.key,type:"button",role:"tab",class:Be(["vtl-tab",{active:a.key===e.active}]),"aria-selected":String(a.key===e.active),tabindex:a.key===e.active?0:-1,ref_for:!0,ref:r=>e.registerTab(a.key,r),onClick:r=>e.pick(a.key),onKeydown:t[4]||(t[4]=r=>e.onKey(r))},[a.icon?(A(),O("span",{key:0,class:"vtl-tab-ic","aria-hidden":"true",innerHTML:e.iconSvg(a.icon)},null,8,Yl)):a.emoji?(A(),O("span",Ql,F(a.emoji),1)):(A(),O("span",ec,F(e.initial(a.label)),1)),T("span",tc,[T("span",oc,F(a.label),1),a.sub?(A(),O("span",sc,F(a.sub),1)):de("",!0)])],42,Jl))),128))],8,Cl),T("main",nc,[e.header?St(e.$slots,"toolbar",{},void 0,void 0,0):de("",!0),T("div",ic,[(A(!0),O(ee,null,dt(e.mountedElementRows,a=>Qo((A(),O("section",{key:a.key,class:"vtl-host",hidden:a.key!==e.active},[T("div",{class:"vtl-host-slot",ref_for:!0,ref:r=>e.setHostSlot(a.key,r)},null,512),e.hostState[a.key]==="loading"?(A(),O("div",rc,F(e.T("messages.loadingNamed","Loading {name}…").replace("{name}",a.label)),1)):e.hostState[a.key]==="error"?(A(),O("div",lc,[gt(F(e.T("messages.couldNotLoadNamed","Could not load {name}.").replace("{name}",a.label)),1),t[5]||(t[5]=T("br",null,null,-1)),T("small",null,F(e.hostError[a.key]),1)])):de("",!0)],8,ac)),[[ms,a.key===e.active]])),128)),St(e.$slots,"default")])])])],2)}const pc=xi(vl,[["render",cc],["styles",[hl]]]),ys=[{code:"en",name:"English",nativeName:"English",flag:"🇺🇸"},{code:"es",name:"Spanish",nativeName:"Español",flag:"🇪🇸"},{code:"fr",name:"French",nativeName:"Français",flag:"🇫🇷"},{code:"pt",name:"Portuguese",nativeName:"Português",flag:"🇵🇹"},{code:"ar",name:"Arabic",nativeName:"العربية",flag:"🇸🇦",dir:"rtl"},{code:"ru",name:"Russian",nativeName:"Русский",flag:"🇷🇺"},{code:"de",name:"German",nativeName:"Deutsch",flag:"🇩🇪",hideFromSwitcher:!0},{code:"hi",name:"Hindi",nativeName:"हिन्दी",flag:"🇮🇳",hideFromSwitcher:!0},{code:"it",name:"Italian",nativeName:"Italiano",flag:"🇮🇹",hideFromSwitcher:!0},{code:"ro",name:"Romanian",nativeName:"Română",flag:"🇷🇴",hideFromSwitcher:!0},{code:"zh",name:"Chinese",nativeName:"中文",flag:"🇨🇳",hideFromSwitcher:!0}],dc=ys.filter(e=>!e.hideFromSwitcher);function uc(e){return ys.find(t=>t.code===e)}function wi(e){const t=String(e||"").split("-")[0].toLowerCase();return ys.some(o=>o.code===t)?t:"en"}const Pi="doxa-maps:locale";function fc(){try{const e=localStorage.getItem(Pi);if(e)return wi(e)}catch{}return wi(navigator==null?void 0:navigator.language)}function gc(e){try{localStorage.setItem(Pi,e)}catch{}}const Ht={en:{"sec.dashboards":"Dashboards","sec.prayer":"Prayer Mobilization","sec.gospel":"Gospel Research","sec.experimental":"Experimental","tab.dashboard-plus-grid":"Big Picture","sub.dashboard-plus-grid":"dashboard + people-groups grid, stacked","tab.research-map":"Research Map","sub.research-map":"prayer · engagement · regions","tab.research-map-plus-grid":"Simple Research","sub.research-map-plus-grid":"research map + people-groups grid","tab.prayer-map":"Prayer Progress","sub.prayer-map":"simple world prayer map","tab.cities-internet":"Cities with Internet","sub.cities-internet":"connectivity of key cities","tab.gospel-resources":"Gospel Resources","sub.gospel-resources":"resources by place","tab.regions-dashboard":"Regions","sub.regions-dashboard":"regions and their countries","tab.upg-100":"UPG-100 List","sub.upg-100":"my unreached list + posters",navLabel:"Research maps",meta:"{n} maps",loading:"Loading {label}…",loadFailed:"Could not load {label}.",manifestHint:"This tab is composed from manifest.json — build the tree, or serve the built tree, to load it.",desktopOnly:"desktop only",lab:"lab",experimentalSub:"experimental bundle",toggleList:"Toggle list",openViews:"Open the list of views",expandList:"Expand list",collapseList:"Collapse list",collapse:"Collapse","tab.prayer-walk-planner":"Prayer Walk Planner","tab.upg-neighbor":"UPG Neighbor","tab.key-cities":"Key Cities","tab.all-people-groups":"All People Groups","tab.pplr-data-maps":"PPLR Data Maps","tab.wall-of-people-groups":"Wall of People Groups","tab.country-posters":"Country Posters","tab.doxa-vision-card":"Doxa Vision Card",desktopNotice:"Big Picture only supports desktop — open this page on a desktop to use it."},es:{"sec.dashboards":"Paneles","sec.prayer":"Movilización de oración","sec.gospel":"Investigación del Evangelio","sec.experimental":"Experimental","tab.dashboard-plus-grid":"Panorama general","sub.dashboard-plus-grid":"panel + cuadrícula de pueblos","tab.research-map":"Mapa de investigación","sub.research-map":"oración · compromiso · regiones","tab.research-map-plus-grid":"Investigación simple","sub.research-map-plus-grid":"mapa de investigación + cuadrícula de pueblos","tab.prayer-map":"Progreso de oración","sub.prayer-map":"mapa mundial de oración","tab.cities-internet":"Ciudades con Internet","sub.cities-internet":"conectividad de ciudades clave","tab.gospel-resources":"Recursos del Evangelio","sub.gospel-resources":"recursos por lugar","tab.regions-dashboard":"Regiones","sub.regions-dashboard":"regiones y sus países","tab.upg-100":"Lista UPG-100","sub.upg-100":"mi lista de no alcanzados + carteles",navLabel:"Mapas de investigación",meta:"{n} mapas",loading:"Cargando {label}…",loadFailed:"No se pudo cargar {label}.",manifestHint:"Esta pestaña se compone a partir de manifest.json: compila el árbol o sirve el árbol compilado para cargarla.",desktopOnly:"solo escritorio",lab:"beta",experimentalSub:"mapa experimental",toggleList:"Mostrar u ocultar la lista",openViews:"Abrir la lista de vistas",expandList:"Expandir la lista",collapseList:"Contraer la lista",collapse:"Contraer","tab.prayer-walk-planner":"Caminatas de oración","tab.upg-neighbor":"Vecino UPG","tab.key-cities":"Ciudades clave","tab.all-people-groups":"Todos los pueblos","tab.pplr-data-maps":"Mapas de datos PPLR","tab.wall-of-people-groups":"Muro de los pueblos","tab.country-posters":"Carteles por país","tab.doxa-vision-card":"Tarjeta de visión Doxa",desktopNotice:"Panorama general solo funciona en escritorio: abre esta página en una computadora para usarlo."},fr:{"sec.dashboards":"Tableaux de bord","sec.prayer":"Mobilisation à la prière","sec.gospel":"Recherche sur l'Évangile","sec.experimental":"Expérimental","tab.dashboard-plus-grid":"Vue d'ensemble","sub.dashboard-plus-grid":"tableau de bord + grille des peuples","tab.research-map":"Carte de recherche","sub.research-map":"prière · engagement · régions","tab.research-map-plus-grid":"Recherche simple","sub.research-map-plus-grid":"carte de recherche + grille des peuples","tab.prayer-map":"Progression de la prière","sub.prayer-map":"carte mondiale de la prière","tab.cities-internet":"Villes avec Internet","sub.cities-internet":"connectivité des villes clés","tab.gospel-resources":"Ressources de l'Évangile","sub.gospel-resources":"ressources par lieu","tab.regions-dashboard":"Régions","sub.regions-dashboard":"régions et leurs pays","tab.upg-100":"Liste UPG-100","sub.upg-100":"ma liste des non atteints + affiches",navLabel:"Cartes de recherche",meta:"{n} cartes",loading:"Chargement de {label}…",loadFailed:"Impossible de charger {label}.",manifestHint:"Cet onglet est composé à partir de manifest.json : construisez l'arborescence ou servez l'arborescence construite pour le charger.",desktopOnly:"ordinateur uniquement",lab:"bêta",experimentalSub:"carte expérimentale",toggleList:"Afficher ou masquer la liste",openViews:"Ouvrir la liste des vues",expandList:"Déplier la liste",collapseList:"Replier la liste",collapse:"Replier","tab.prayer-walk-planner":"Marches de prière","tab.upg-neighbor":"Voisin UPG","tab.key-cities":"Villes clés","tab.all-people-groups":"Tous les peuples","tab.pplr-data-maps":"Cartes de données PPLR","tab.wall-of-people-groups":"Mur des peuples","tab.country-posters":"Affiches par pays","tab.doxa-vision-card":"Carte de vision Doxa",desktopNotice:"Vue d'ensemble ne fonctionne que sur ordinateur : ouvrez cette page sur un ordinateur pour l'utiliser."},de:{"sec.dashboards":"Dashboards","sec.prayer":"Gebetsmobilisierung","sec.gospel":"Evangeliumsforschung","sec.experimental":"Experimentell","tab.dashboard-plus-grid":"Gesamtbild","sub.dashboard-plus-grid":"Dashboard + Raster der Volksgruppen","tab.research-map":"Forschungskarte","sub.research-map":"Gebet · Engagement · Regionen","tab.research-map-plus-grid":"Einfache Recherche","sub.research-map-plus-grid":"Forschungskarte + Raster der Volksgruppen","tab.prayer-map":"Gebetsfortschritt","sub.prayer-map":"einfache Weltkarte des Gebets","tab.cities-internet":"Städte mit Internet","sub.cities-internet":"Konnektivität wichtiger Städte","tab.gospel-resources":"Evangeliumsressourcen","sub.gospel-resources":"Ressourcen nach Ort","tab.regions-dashboard":"Regionen","sub.regions-dashboard":"Regionen und ihre Länder","tab.upg-100":"UPG-100-Liste","sub.upg-100":"meine Liste der Unerreichten + Poster",navLabel:"Forschungskarten",meta:"{n} Karten",loading:"{label} wird geladen…",loadFailed:"{label} konnte nicht geladen werden.",manifestHint:"Dieser Tab wird aus manifest.json zusammengesetzt – bauen Sie den Baum oder stellen Sie den gebauten Baum bereit, um ihn zu laden.",desktopOnly:"nur Desktop",lab:"Beta",experimentalSub:"experimentelle Karte",toggleList:"Liste ein-/ausblenden",openViews:"Ansichtsliste öffnen",expandList:"Liste ausklappen",collapseList:"Liste einklappen",collapse:"Einklappen","tab.prayer-walk-planner":"Gebetsspaziergänge","tab.upg-neighbor":"UPG-Nachbar","tab.key-cities":"Schlüsselstädte","tab.all-people-groups":"Alle Volksgruppen","tab.pplr-data-maps":"PPLR-Datenkarten","tab.wall-of-people-groups":"Wand der Volksgruppen","tab.country-posters":"Länderposter","tab.doxa-vision-card":"Doxa-Visionskarte",desktopNotice:"Gesamtbild funktioniert nur am Desktop – öffnen Sie diese Seite an einem Computer, um es zu nutzen."},pt:{"sec.dashboards":"Painéis","sec.prayer":"Mobilização de oração","sec.gospel":"Pesquisa do Evangelho","sec.experimental":"Experimental","tab.dashboard-plus-grid":"Visão geral","sub.dashboard-plus-grid":"painel + grade de povos","tab.research-map":"Mapa de pesquisa","sub.research-map":"oração · engajamento · regiões","tab.research-map-plus-grid":"Pesquisa simples","sub.research-map-plus-grid":"mapa de pesquisa + grade de povos","tab.prayer-map":"Progresso da oração","sub.prayer-map":"mapa mundial de oração","tab.cities-internet":"Cidades com Internet","sub.cities-internet":"conectividade das principais cidades","tab.gospel-resources":"Recursos do Evangelho","sub.gospel-resources":"recursos por lugar","tab.regions-dashboard":"Regiões","sub.regions-dashboard":"regiões e seus países","tab.upg-100":"Lista UPG-100","sub.upg-100":"minha lista de não alcançados + cartazes",navLabel:"Mapas de pesquisa",meta:"{n} mapas",loading:"Carregando {label}…",loadFailed:"Não foi possível carregar {label}.",manifestHint:"Esta aba é composta a partir do manifest.json — compile a árvore ou sirva a árvore compilada para carregá-la.",desktopOnly:"só no computador",lab:"beta",experimentalSub:"mapa experimental",toggleList:"Mostrar ou ocultar a lista",openViews:"Abrir a lista de visualizações",expandList:"Expandir a lista",collapseList:"Recolher a lista",collapse:"Recolher","tab.prayer-walk-planner":"Caminhadas de oração","tab.upg-neighbor":"Vizinho UPG","tab.key-cities":"Cidades-chave","tab.all-people-groups":"Todos os povos","tab.pplr-data-maps":"Mapas de dados PPLR","tab.wall-of-people-groups":"Mural dos povos","tab.country-posters":"Cartazes por país","tab.doxa-vision-card":"Cartão de visão Doxa",desktopNotice:"Visão geral só funciona no computador — abra esta página em um computador para usá-la."},it:{"sec.dashboards":"Dashboard","sec.prayer":"Mobilitazione alla preghiera","sec.gospel":"Ricerca sul Vangelo","sec.experimental":"Sperimentale","tab.dashboard-plus-grid":"Quadro d'insieme","sub.dashboard-plus-grid":"dashboard + griglia dei popoli","tab.research-map":"Mappa di ricerca","sub.research-map":"preghiera · impegno · regioni","tab.research-map-plus-grid":"Ricerca semplice","sub.research-map-plus-grid":"mappa di ricerca + griglia dei popoli","tab.prayer-map":"Avanzamento preghiera","sub.prayer-map":"mappa mondiale della preghiera","tab.cities-internet":"Città con Internet","sub.cities-internet":"connettività delle città chiave","tab.gospel-resources":"Risorse del Vangelo","sub.gospel-resources":"risorse per luogo","tab.regions-dashboard":"Regioni","sub.regions-dashboard":"regioni e i loro paesi","tab.upg-100":"Lista UPG-100","sub.upg-100":"la mia lista dei non raggiunti + poster",navLabel:"Mappe di ricerca",meta:"{n} mappe",loading:"Caricamento di {label}…",loadFailed:"Impossibile caricare {label}.",manifestHint:"Questa scheda è composta da manifest.json: compila l'albero o pubblica l'albero compilato per caricarla.",desktopOnly:"solo desktop",lab:"beta",experimentalSub:"mappa sperimentale",toggleList:"Mostra o nascondi l’elenco",openViews:"Apri l’elenco delle viste",expandList:"Espandi l’elenco",collapseList:"Comprimi l’elenco",collapse:"Comprimi","tab.prayer-walk-planner":"Passeggiate di preghiera","tab.upg-neighbor":"Vicino UPG","tab.key-cities":"Città chiave","tab.all-people-groups":"Tutti i popoli","tab.pplr-data-maps":"Mappe dati PPLR","tab.wall-of-people-groups":"Muro dei popoli","tab.country-posters":"Poster per paese","tab.doxa-vision-card":"Scheda visione Doxa",desktopNotice:"Quadro d'insieme funziona solo su desktop: apri questa pagina su un computer per usarlo."},ro:{"sec.dashboards":"Panouri","sec.prayer":"Mobilizare la rugăciune","sec.gospel":"Cercetarea Evangheliei","sec.experimental":"Experimental","tab.dashboard-plus-grid":"Imaginea de ansamblu","sub.dashboard-plus-grid":"panou + grila popoarelor","tab.research-map":"Hartă de cercetare","sub.research-map":"rugăciune · implicare · regiuni","tab.research-map-plus-grid":"Cercetare simplă","sub.research-map-plus-grid":"hartă de cercetare + grila popoarelor","tab.prayer-map":"Progresul rugăciunii","sub.prayer-map":"hartă mondială a rugăciunii","tab.cities-internet":"Orașe cu internet","sub.cities-internet":"conectivitatea orașelor-cheie","tab.gospel-resources":"Resurse ale Evangheliei","sub.gospel-resources":"resurse după loc","tab.regions-dashboard":"Regiuni","sub.regions-dashboard":"regiunile și țările lor","tab.upg-100":"Lista UPG-100","sub.upg-100":"lista mea de neatinși + afișe",navLabel:"Hărți de cercetare",meta:"{n} hărți",loading:"Se încarcă {label}…",loadFailed:"{label} nu a putut fi încărcat.",manifestHint:"Această filă este compusă din manifest.json — construiți arborele sau serviți arborele construit pentru a o încărca.",desktopOnly:"doar pe desktop",lab:"beta",experimentalSub:"hartă experimentală",toggleList:"Afișează sau ascunde lista",openViews:"Deschide lista de vizualizări",expandList:"Extinde lista",collapseList:"Restrânge lista",collapse:"Restrânge","tab.prayer-walk-planner":"Plimbări de rugăciune","tab.upg-neighbor":"Vecin UPG","tab.key-cities":"Orașe-cheie","tab.all-people-groups":"Toate popoarele","tab.pplr-data-maps":"Hărți de date PPLR","tab.wall-of-people-groups":"Zidul popoarelor","tab.country-posters":"Afișe pe țări","tab.doxa-vision-card":"Card de viziune Doxa",desktopNotice:"Imaginea de ansamblu funcționează doar pe desktop — deschideți această pagină pe un computer pentru a o folosi."},ru:{"sec.dashboards":"Панели","sec.prayer":"Молитвенная мобилизация","sec.gospel":"Исследование Евангелия","sec.experimental":"Экспериментальное","tab.dashboard-plus-grid":"Общая картина","sub.dashboard-plus-grid":"панель + таблица народов","tab.research-map":"Исследовательская карта","sub.research-map":"молитва · вовлечённость · регионы","tab.research-map-plus-grid":"Простое исследование","sub.research-map-plus-grid":"исследовательская карта + таблица народов","tab.prayer-map":"Прогресс молитвы","sub.prayer-map":"простая карта молитвы мира","tab.cities-internet":"Города с интернетом","sub.cities-internet":"подключённость ключевых городов","tab.gospel-resources":"Евангельские ресурсы","sub.gospel-resources":"ресурсы по местам","tab.regions-dashboard":"Регионы","sub.regions-dashboard":"регионы и их страны","tab.upg-100":"Список UPG-100","sub.upg-100":"мой список недостигнутых + плакаты",navLabel:"Исследовательские карты",meta:"Карт: {n}",loading:"Загрузка: {label}…",loadFailed:"Не удалось загрузить: {label}.",manifestHint:"Эта вкладка собирается из manifest.json — соберите дерево или разместите собранное дерево, чтобы загрузить её.",desktopOnly:"только на компьютере",lab:"бета",experimentalSub:"экспериментальная карта",toggleList:"Показать или скрыть список",openViews:"Открыть список представлений",expandList:"Развернуть список",collapseList:"Свернуть список",collapse:"Свернуть","tab.prayer-walk-planner":"Молитвенные прогулки","tab.upg-neighbor":"Сосед UPG","tab.key-cities":"Ключевые города","tab.all-people-groups":"Все народы","tab.pplr-data-maps":"Карты данных PPLR","tab.wall-of-people-groups":"Стена народов","tab.country-posters":"Плакаты по странам","tab.doxa-vision-card":"Карточка видения Doxa",desktopNotice:"«Общая картина» работает только на компьютере — откройте эту страницу на компьютере."},ar:{"sec.dashboards":"لوحات المعلومات","sec.prayer":"التعبئة للصلاة","sec.gospel":"أبحاث الإنجيل","sec.experimental":"تجريبي","tab.dashboard-plus-grid":"الصورة الكاملة","sub.dashboard-plus-grid":"لوحة معلومات + شبكة الشعوب","tab.research-map":"خريطة البحث","sub.research-map":"الصلاة · الانخراط · المناطق","tab.research-map-plus-grid":"بحث مبسّط","sub.research-map-plus-grid":"خريطة البحث + شبكة الشعوب","tab.prayer-map":"تقدم الصلاة","sub.prayer-map":"خريطة عالمية مبسّطة للصلاة","tab.cities-internet":"مدن متصلة بالإنترنت","sub.cities-internet":"اتصال المدن الرئيسية","tab.gospel-resources":"موارد الإنجيل","sub.gospel-resources":"الموارد حسب المكان","tab.regions-dashboard":"المناطق","sub.regions-dashboard":"المناطق ودولها","tab.upg-100":"قائمة UPG-100","sub.upg-100":"قائمتي لغير المُبشَّرين + ملصقات",navLabel:"خرائط البحث",meta:"عدد الخرائط: {n}",loading:"جارٍ تحميل {label}…",loadFailed:"تعذّر تحميل {label}.",manifestHint:"تُبنى علامة التبويب هذه من manifest.json — ابنِ الشجرة أو قدّم الشجرة المبنية لتحميلها.",desktopOnly:"على الحاسوب فقط",lab:"تجريبي",experimentalSub:"خريطة تجريبية",toggleList:"إظهار القائمة أو إخفاؤها",openViews:"فتح قائمة العروض",expandList:"توسيع القائمة",collapseList:"طي القائمة",collapse:"طي","tab.prayer-walk-planner":"جولات الصلاة","tab.upg-neighbor":"جار UPG","tab.key-cities":"المدن الرئيسية","tab.all-people-groups":"جميع الشعوب","tab.pplr-data-maps":"خرائط بيانات PPLR","tab.wall-of-people-groups":"جدار الشعوب","tab.country-posters":"ملصقات الدول","tab.doxa-vision-card":"بطاقة رؤية Doxa",desktopNotice:"تعمل «الصورة الكاملة» على الحاسوب فقط — افتح هذه الصفحة على حاسوب لاستخدامها."},hi:{"sec.dashboards":"डैशबोर्ड","sec.prayer":"प्रार्थना संचालन","sec.gospel":"सुसमाचार शोध","sec.experimental":"प्रायोगिक","tab.dashboard-plus-grid":"संपूर्ण चित्र","sub.dashboard-plus-grid":"डैशबोर्ड + जनसमूहों की ग्रिड","tab.research-map":"शोध मानचित्र","sub.research-map":"प्रार्थना · सहभागिता · क्षेत्र","tab.research-map-plus-grid":"सरल शोध","sub.research-map-plus-grid":"शोध मानचित्र + जनसमूहों की ग्रिड","tab.prayer-map":"प्रार्थना प्रगति","sub.prayer-map":"सरल विश्व प्रार्थना मानचित्र","tab.cities-internet":"इंटरनेट वाले शहर","sub.cities-internet":"प्रमुख शहरों की कनेक्टिविटी","tab.gospel-resources":"सुसमाचार संसाधन","sub.gospel-resources":"स्थान के अनुसार संसाधन","tab.regions-dashboard":"क्षेत्र","sub.regions-dashboard":"क्षेत्र और उनके देश","tab.upg-100":"UPG-100 सूची","sub.upg-100":"मेरी अप्राप्त सूची + पोस्टर",navLabel:"शोध मानचित्र",meta:"{n} मानचित्र",loading:"{label} लोड हो रहा है…",loadFailed:"{label} लोड नहीं हो सका।",manifestHint:"यह टैब manifest.json से बनता है — इसे लोड करने के लिए ट्री बनाएँ या बना हुआ ट्री सर्व करें।",desktopOnly:"केवल डेस्कटॉप",lab:"बीटा",experimentalSub:"प्रायोगिक मानचित्र",toggleList:"सूची दिखाएँ या छिपाएँ",openViews:"दृश्यों की सूची खोलें",expandList:"सूची फैलाएँ",collapseList:"सूची संक्षिप्त करें",collapse:"संक्षिप्त करें","tab.prayer-walk-planner":"प्रार्थना पदयात्रा","tab.upg-neighbor":"UPG पड़ोसी","tab.key-cities":"प्रमुख शहर","tab.all-people-groups":"सभी जनसमूह","tab.pplr-data-maps":"PPLR डेटा मानचित्र","tab.wall-of-people-groups":"जनसमूहों की दीवार","tab.country-posters":"देश पोस्टर","tab.doxa-vision-card":"Doxa दर्शन कार्ड",desktopNotice:"संपूर्ण चित्र केवल डेस्कटॉप पर काम करता है — इसे उपयोग करने के लिए यह पेज कंप्यूटर पर खोलें।"},zh:{"sec.dashboards":"仪表板","sec.prayer":"祷告动员","sec.gospel":"福音研究","sec.experimental":"实验性","tab.dashboard-plus-grid":"全景","sub.dashboard-plus-grid":"仪表板 + 民族网格","tab.research-map":"研究地图","sub.research-map":"祷告 · 参与 · 区域","tab.research-map-plus-grid":"简易研究","sub.research-map-plus-grid":"研究地图 + 民族网格","tab.prayer-map":"祷告进度","sub.prayer-map":"简易世界祷告地图","tab.cities-internet":"有互联网的城市","sub.cities-internet":"主要城市的网络连接","tab.gospel-resources":"福音资源","sub.gospel-resources":"按地点划分的资源","tab.regions-dashboard":"区域","sub.regions-dashboard":"区域及其国家","tab.upg-100":"UPG-100 名单","sub.upg-100":"我的未得之民名单 + 海报",navLabel:"研究地图",meta:"{n} 张地图",loading:"正在加载{label}…",loadFailed:"无法加载{label}。",manifestHint:"此标签页由 manifest.json 组成——请构建目录树或提供已构建的目录树以加载它。",desktopOnly:"仅限桌面",lab:"测试版",experimentalSub:"实验性地图",toggleList:"显示或隐藏列表",openViews:"打开视图列表",expandList:"展开列表",collapseList:"折叠列表",collapse:"折叠","tab.prayer-walk-planner":"祷告行走","tab.upg-neighbor":"UPG 邻居","tab.key-cities":"重点城市","tab.all-people-groups":"所有民族","tab.pplr-data-maps":"PPLR 数据地图","tab.wall-of-people-groups":"民族之墙","tab.country-posters":"国家海报","tab.doxa-vision-card":"Doxa 异象卡",desktopNotice:"全景仅支持桌面设备——请在电脑上打开此页面使用。"}},xs=Object.keys(Ht);function hc(e){return Object.prototype.hasOwnProperty.call(Ht.en,e)}function wo(e,t,o){let n=(Ht[e]||Ht.en)[t]??Ht.en[t]??t;if(o)for(const i in o)n=n.split("{"+i+"}").join(String(o[i]));return n}const bc=":host{display:block;position:relative;height:var(--doxa-maps-spa-height, 85vh);min-height:480px}:host{font-size:16px;line-height:normal;font-weight:400;font-style:normal;font-variant:normal;font-stretch:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;text-align:start;text-indent:0;text-shadow:none;white-space:normal;-webkit-hyphens:manual;hyphens:manual;visibility:visible;cursor:auto}:host([hidden]){display:none}.dms-pane{position:absolute;top:0;right:0;bottom:0;left:0;overflow-y:auto;overflow-x:hidden;overscroll-behavior:contain}.dms-slot{position:relative;min-height:100%}.dms-hint{position:absolute;top:0;right:0;bottom:0;left:0;display:grid;place-items:center;text-align:center;color:#6d766e;font-size:13px;padding:20px}.dms-hint.err{color:#f87171}.dms-hint small{color:var(--dx-muted, #6d766e)}.dms-notice{position:fixed;left:50%;bottom:24px;transform:translate(-50%);z-index:40;max-width:320px;text-align:center;font-size:13px;line-height:1.4;color:#3b463d;background:#fff;border:1px solid #d1d4cd;border-radius:10px;padding:10px 16px;box-shadow:0 8px 24px #0000001f}.dms-logo{display:inline-flex;align-items:center}.dms-logo svg{display:block}.dms-locale{position:relative;padding:8px 12px 0;display:flex;justify-content:flex-end}.dms-locale-btn{display:inline-flex;align-items:center;gap:8px;font:inherit;font-size:12px;padding:5px 10px;border:1px solid #d1d4cd;border-radius:8px;background:#d1d4cd;color:#3b463d;cursor:pointer}.dms-locale-btn:hover{background:#d1d4cd}.dms-flag{font-size:14px;line-height:1}.dms-locale-name{max-width:12ch;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dms-dots{color:#6d766e;margin-left:2px}.dms-locale-menu{position:absolute;top:100%;right:12px;margin-top:4px;z-index:30;min-width:180px;list-style:none;padding:6px;border:1px solid #d1d4cd;border-radius:10px;background:#fff;box-shadow:0 12px 32px #00000080;max-height:320px;overflow:auto}.dms-locale-opt{display:flex;align-items:center;gap:8px;width:100%;text-align:left;font:inherit;font-size:13px;padding:7px 9px;border:0;border-radius:7px;background:none;color:#3b463d;cursor:pointer}.dms-locale-opt:hover,.dms-locale-opt.active{background:#d1d4cd;color:#3b463d}.dms-locale-opt.active .dms-locale-name{color:#92b195}.dms-locale-en{margin-left:auto;font-size:11px;color:#6d766e}";function ki(){try{const e=new URLSearchParams(location.search),t=(e.get("lang")||e.get("locale")||"").split("-")[0].toLowerCase();if(xs.includes(t))return t}catch{}try{const e=(document.documentElement.lang||"").split("-")[0].toLowerCase();if(xs.includes(e))return e}catch{}return""}const ws=[{key:"dashboards",label:"Dashboards",i18n:"sec.dashboards",icon:"chart",tabs:[{id:"dashboard-plus-grid",icon:"chart"},{id:"research-map-plus-grid",icon:"map"},{id:"regions-dashboard",icon:"map"}]},{key:"prayer-mobilization",label:"Prayer Mobilization",i18n:"sec.prayer",icon:"heart",tabs:[{id:"upg-100",icon:"list"},{id:"prayer-map",icon:"embed"}]},{key:"gospel-research",label:"Gospel Research",i18n:"sec.gospel",icon:"search",tabs:[{id:"cities-internet",icon:"wifi"},{id:"gospel-resources",icon:"book"}]},{key:"experimental",label:"Experimental",i18n:"sec.experimental",icon:"flask",folder:!0,open:!1,tabs:[]}],mc=new Set(["doxa-maps-spa","plugin-studio","template-bundle","people-groups-grid","research-dashboard","big-picture","demo-map","golden-path-check","doxa-research-map","stack-demo"]),Li={"prayer-walk-planner":1,"upg-neighbor":2,"key-cities":3,"all-people-groups":4,"country-posters":5,"doxa-vision-card":6},Ps=[{id:"dashboard-plus-grid",label:"Big Picture",sub:"dashboard + people-groups grid, stacked",emoji:"🌍",bundle:"dashboard-plus-grid",profile:"dashboard-plus-grid"},{id:"research-map",label:"Research Map",sub:"prayer · engagement · regions",emoji:"🗺️",bundle:"doxa-research-map",profile:"research-map"},{id:"research-map-plus-grid",label:"Simple Research",sub:"research map + people-groups grid",emoji:"🗺️",bundle:"research-map-plus-grid",profile:"research-map-plus-grid"},{id:"prayer-map",label:"Prayer Progress",sub:"simple world prayer map",emoji:"🙏",bundle:"doxa-simple-map",profile:"doxa-simple-map",instance:"prayer"},{id:"cities-internet",label:"Cities with Internet",sub:"connectivity of key cities",emoji:"📡",bundle:"cities-internet",profile:"connectivity-map"},{id:"gospel-resources",label:"Gospel Resources",sub:"resources by place",emoji:"📖",bundle:"gospel-resources",profile:"resources-map"},{id:"regions-dashboard",label:"Regions",sub:"regions and their countries",emoji:"🌐",bundle:"regions-dashboard",profile:"regions-mfe"},{id:"upg-100",label:"UPG-100 List",sub:"my unreached list + posters",emoji:"📋",bundle:"my-upg-100-list",profile:"upg-100-mfe"}];$c(ws);const Po=new Set(["doxa-research-map","doxa-simple-map","cities-internet-map","gospel-resources-map","my-upg-100-list-map","doxa-map","doxa-maps-spa","dashboard-plus-grid","research-dashboard-map","demo-map","all-people-groups","country-posters-map","key-cities-map","research-map-plus-grid"]),ko=new Set(["dashboard-plus-grid","research-map-plus-grid"]);function _c(){const e=Object.fromEntries(Ps.map(o=>[o.id,o])),t=new Set;for(const o of ws)if(o.key!=="experimental")for(const s of o.tabs||[]){const n=e[s.id];n&&n.bundle&&t.add(n.bundle)}return t}function Si(e,t){const o=[];for(const s of e)!s||t.has(s.key)||(t.add(s.key),o.push(s));return o}function $c(e){const t=new Map,o=[];for(const s of e)if(s.key!=="experimental")for(const n of s.tabs||[]){if(!n||!n.id)continue;const i=t.get(n.id);if(i===void 0){t.set(n.id,s.key);continue}(i!==s.key||o.indexOf(n.id)===-1)&&o.push(n.id+" ("+i+" + "+s.key+")")}return o.length&&typeof console<"u"&&console.error("[doxa-maps-spa] duplicate tab key(s) across NAV_MODEL sections: "+o.join(", ")+" — VerticalTabsLayout keys its tab-ref map and `active` highlight by id, so a row declared in two sections paints twice and stalls keyboard nav. See the duplicate-key trap in SPEC-the-six-map-product-and-its-tab-order.md."),o}function vc(e){return String(e).split(/[-_]/).filter(Boolean).map(t=>t.charAt(0).toUpperCase()+t.slice(1)).join(" ")}function yc(e){const t=_c(),o=e&&Array.isArray(e.bundles)?e.bundles:[],s=[];for(const n of o){const i=n&&n.bundle;if(!i||t.has(i)||mc.has(i))continue;const a=Array.isArray(n.profiles)?n.profiles:[];if(!a.length)continue;const r=a.find(d=>d.isMap)||a.find(d=>d.profile===i)||a[0],l=r.element||Array.isArray(n.elements)&&n.elements[0]||i,u=n.scriptUrl||r.scriptUrl||"";u&&s.push({id:i,label:r.title||vc(i),sub:(r.description||"").trim().replace(/[,;]\s*$/,"")||"experimental bundle",emoji:"🧪",tag:l,bundle:i,profile:r.profile||i,scriptUrl:u,heavy:Po.has(l)||Po.has(i),scroll:ko.has(l)||ko.has(i),discovered:!0})}return s.sort((n,i)=>{const a=Li[n.id]||999,r=Li[i.id]||999;return a!==r?a-r:n.label.localeCompare(i.label)}),s}function xc(e,t){const o=e&&Array.isArray(e.bundles)?e.bundles:[],s=Object.fromEntries(o.map(i=>[i.bundle,i])),n={};for(const i of t){const a=s[i.bundle];if(!a)continue;const r=Array.isArray(a.profiles)?a.profiles:[],l=r.find(P=>P.profile===i.profile)||r[0],u=l&&l.element||Array.isArray(a.elements)&&a.elements[0]||i.bundle,d=a.scriptUrl||l&&l.scriptUrl||"";if(!d)continue;const g=l&&Array.isArray(l.instances)?l.instances:[],x=!!(i.instance&&g.some(P=>(P&&(P.id||P.instance))===i.instance));n[i.id]={tag:u,scriptUrl:d,profile:l&&l.profile||i.profile,instance:x?i.instance:"",heavy:Po.has(u)||Po.has(i.bundle),scroll:ko.has(u)||ko.has(i.bundle)}}return n}const jt={};function wc(e,t){return jt[e]||(jt[e]=new Promise((o,s)=>{const n=document.createElement("script");n.src=e,(/^\/plugin-designs\//.test(e)||/\/index\.js(\?|$)/.test(e))&&(n.type="module"),n.onload=()=>o(),n.onerror=()=>{delete jt[e],s(new Error("failed to load "+e))},document.head.appendChild(n)})),jt[e]}function Pc(e,t){return typeof customElements>"u"||customElements.get(e)?Promise.resolve():Promise.race([customElements.whenDefined(e),new Promise((o,s)=>setTimeout(()=>{customElements.get(e)||s(new Error("<"+e+"> never registered (bundle loaded but defined no element)"))},15e3))])}const kc=ss({name:"DoxaMapsSpa",inheritAttrs:!1,components:{VerticalTabsLayout:pc},props:{treeBase:{type:String,default:""},profileConfig:{type:[String,Object],default:""},heading:{type:String,default:"DX-Maps"},tokenUrl:{type:String,default:""},tk:{type:String,default:""},language:{type:String,default:""},apiBaseUrl:{type:String,default:""},provider:{type:String,default:""},tab:{type:String,default:""}},emits:["tab-change"],setup(){return{injectedBase:kt("dmsTreeBase","")}},data(){return{activeIndex:0,showHeader:!1,narrow:!1,_mql:null,_onMedia:null,disabledNotice:"",_noticeTimer:null,manifestError:"",manifestBase:"",runtime:{},locale:fc(),hostLang:ki(),localeOpen:!1,switcherLangs:dc,tabs:Ps.map(e=>({...e,tag:"",scriptUrl:"",heavy:!1,scroll:!1,resolved:!1,mounted:!1,state:"idle",error:""}))}},computed:{cfg(){let e=this.profileConfig;if(typeof e=="string")try{e=e?JSON.parse(e):{}}catch{e={}}return e&&typeof e=="object"?e:{}},base(){const e=(this.treeBase||this.cfg.treeBase||this.injectedBase||"").trim();return e?e.replace(/\/+$/,"")+"/":""},assetsBase(){const e=String(this.cfg.assetsBase||"").trim();return/^https?:\/\//i.test(e)||e.startsWith("/")?e.replace(/\/+$/,""):this.manifestBase?this.manifestBase.replace(/\/+$/,"")+"/assets":""},navGroups(){const e=Object.fromEntries(this.tabs.map(o=>[o.id,o])),t=new Set;return ws.map(o=>{let s=Si((o.tabs||[]).filter(n=>e[n.id]).map(n=>{const i=e[n.id],a=this.isBigPictureDisabled(i.id);return{key:i.id,label:this.tabLabel(i),sub:this.tabSub(i),icon:n.icon,badge:a?this.tr("desktopOnly"):n.badge,disabled:a}}),t);return o.key==="experimental"&&(s=s.concat(Si(this.tabs.filter(n=>n.discovered).map(n=>({key:n.id,label:this.tabLabel(n),sub:this.tabSub(n),icon:"flask",badge:this.tr("lab")})),t))),{key:o.key,label:o.i18n?this.tr(o.i18n):o.label,icon:o.icon,folder:!!o.folder,open:o.open,rows:s}}).filter(o=>o.rows.length)},showLocaleSwitcher(){return this.showHeader},activeLang(){return uc(this.locale)||{code:this.locale,flag:"🌐",nativeName:this.locale}},effectiveLocale(){const e=(this.language||this.cfg.language||this.cfg.locale||this.cfg.lang||"").trim(),t=this.showLocaleSwitcher?this.locale:"";return(e||t||this.hostLang||"en").split("-")[0].toLowerCase()},uiLocale(){return xs.includes(this.effectiveLocale)?this.effectiveLocale:"en"},uiDir(){return this.uiLocale==="ar"?"rtl":"ltr"},layoutLabels(){const e={};for(const t of["toggleList","openViews","expandList","collapseList","collapse"])e[t]=this.tr(t);return e},effectiveProvider(){const e=String(this.provider||this.cfg.provider||"").trim().toLowerCase();return e==="maplibre"||e==="mapbox"?e:""},activeKey(){const e=this.tabs[this.activeIndex];return e?e.id:""}},mounted(){this.watchWidth(),this.watchHostLang(),this.select(this.initialIndex()),this.loadManifest()},beforeUnmount(){this._langObs&&(this._langObs.disconnect(),this._langObs=null),!(!this._mql||!this._onMedia)&&(this._mql.removeEventListener?this._mql.removeEventListener("change",this._onMedia):this._mql.removeListener&&this._mql.removeListener(this._onMedia),this._mql=null,this._onMedia=null)},watch:{effectiveLocale(e){const t=this.tabs[this.activeIndex];if(!(!t||!t.mounted))try{const o=this._slots&&this._slots[this.activeIndex],s=o&&o.firstElementChild;s&&s.setAttribute&&s.setAttribute("profile-config",JSON.stringify(this.childConfig(t)))}catch{}},tab(e){e&&this.onSelect(e)}},methods:{setSlot(e,t){t&&(this._slots=Object.assign(this._slots||{},{[e]:t}))},tr(e,t){return wo(this.uiLocale,e,t)},t(e,t){return wo(this.uiLocale,e,t)},tabLabel(e){return!e.discovered||hc("tab."+e.id)?wo(this.uiLocale,"tab."+e.id):e.label},tabSub(e){return e.discovered?this.uiLocale==="en"?e.sub:this.tr("experimentalSub"):wo(this.uiLocale,"sub."+e.id)},watchHostLang(){typeof MutationObserver>"u"||typeof document>"u"||(this._langObs=new MutationObserver(()=>{this.hostLang=ki()}),this._langObs.observe(document.documentElement,{attributes:!0,attributeFilter:["lang"]}))},watchWidth(){typeof window>"u"||!window.matchMedia||(this._mql=window.matchMedia("(max-width: 760px)"),this.narrow=this._mql.matches,this._onMedia=e=>{const t=this.narrow;this.narrow=!!e.matches,t!==this.narrow&&this.isBigPictureDisabled(this.activeKey)&&this.select(this.firstVisibleIndex())},this._mql.addEventListener?this._mql.addEventListener("change",this._onMedia):this._mql.addListener&&this._mql.addListener(this._onMedia))},isBigPictureDisabled(e){return e==="dashboard-plus-grid"&&this.narrow},firstVisibleIndex(){let e=-1;for(const t of this.navGroups)for(const o of t.rows){const s=this.tabs.findIndex(n=>n.id===o.key);if(!(s<0)&&(e<0&&(e=s),!o.disabled))return s}return e>=0?e:0},loadManifest(){const e=this.resolve("manifest.json"),t=u=>{try{return new URL(u,location.href).href.replace(/[^/]*$/,"")}catch{return""}},o={url:e,root:t(e)},s={url:this.resolve("doxa-maps-spa/manifest.json"),root:o.root};let n=!1;try{n=new URL(e,location.href).origin!==location.origin}catch{}const i=n?[s,o]:[o,s],a="/public/dx-maps/manifest.json";i.some(u=>u.url===a)||i.push({url:a,root:t(a)});const r=[],l=u=>{if(u>=i.length){this.manifestError="manifest.json not found (tried "+r.join(", ")+")",console.error("[doxa-maps-spa] "+this.manifestError+" — every tab except Big Picture is composed from it, so their panes cannot mount.");return}const{url:d,root:g}=i[u];return r.push(d),fetch(d,{credentials:"omit"}).then(x=>{if(!x||!x.ok)throw new Error(d+" → HTTP "+(x?x.status:"?"));return x.json()}).then(x=>{if(!x)throw new Error(d+" → empty");this.manifestError="",this.manifestBase=g||"",this.applyManifest(x)}).catch(()=>l(u+1))};try{l(0)}catch{}},applyManifest(e){this.runtime=e&&e.runtime&&typeof e.runtime=="object"?e.runtime:{},this.applyPageGlobals();const t=xc(e,Ps),o=this.activeKey,s=[];for(const l of this.tabs){if(l.discovered){s.push(l);continue}const u=t[l.id];u&&(Object.assign(l,u,{resolved:!0}),s.push(l))}const n=new Set(s.map(l=>l.id));for(const l of yc(e))n.has(l.id)||s.push({...l,resolved:!0,mounted:!1,state:"idle",error:""});this.tabs=s;const i=this.requestedTab(),a=i?this.tabs.findIndex(l=>l.id===i):-1,r=this.tabs.findIndex(l=>l.id===o);a>=0&&!this.isBigPictureDisabled(i)&&!this._honouredTab?this.select(a):this.select(r>=0?r:this.firstVisibleIndex()),this._honouredTab=!0},requestedTab(){let e="";try{e=new URLSearchParams(location.search).get("tab")||""}catch{}return String(this.tab||this.cfg.tab||e||"").trim()},initialIndex(){const e=this.requestedTab(),t=e?this.tabs.findIndex(o=>o.id===e):-1;return t>=0&&(this._honouredTab=!0),t>=0&&!this.isBigPictureDisabled(e)?t:this.firstVisibleIndex()},setLocale(e){this.locale=e,this.localeOpen=!1,gc(e)},onSelect(e){if(this.isBigPictureDisabled(e)){this.disabledNotice=this.tr("desktopNotice"),clearTimeout(this._noticeTimer),this._noticeTimer=setTimeout(()=>{this.disabledNotice=""},4e3);return}const t=this.tabs.findIndex(o=>o.id===e);t!==-1&&this.select(t)},resolve(e){const t=String(e);if(/^(https?:)?\/\//.test(t)||t.startsWith("/"))return t;const o=t.replace(/^\.\//,"");return this.manifestBase?this.manifestBase.replace(/\/+$/,"")+"/"+o:this.base?this.base.replace(/\/+$/,"")+"/"+o:"../"+o},select(e){const t=this.activeIndex;if(this.activeIndex=e,t!==e&&t>=0){const s=this.tabs[t];s&&s.heavy&&s.mounted&&this.releaseTab(t,s)}const o=this.tabs[e];o&&((t!==e||!this._announced)&&(this._announced=!0,this.$emit("tab-change",{id:o.id,label:o.label})),o.scriptUrl&&(o.mounted||this.$nextTick(()=>{this.activeIndex===e&&this.mountElement(e)})))},releaseTab(e,t){try{const o=this._slots&&this._slots[e];o&&(o.innerHTML="")}catch{}this._slots&&delete this._slots[e],t.mounted=!1,t.state="idle",t.error=""},childConfig(e){const t={profile:e.profile||e.id,instanceId:e.instance||"dms-"+e.id};this.effectiveLocale&&(t.locale=this.effectiveLocale);const o=this.tk||this.cfg.tk||this.runtime.token;return o&&(t.tk=o),(this.tokenUrl||this.cfg.tokenUrl)&&(t.tokenUrl=this.tokenUrl||this.cfg.tokenUrl),this.effectiveProvider&&(t.provider=this.effectiveProvider),this.base&&(t.treeBase=this.base),this.assetsBase&&(t.assetsBase=this.assetsBase),t.urlSync=!1,t},applyPageGlobals(){if(typeof window>"u")return;const e=(this.apiBaseUrl||this.cfg.apiBaseUrl||this.runtime.apiBaseUrl||"").trim();e&&!window.MAP_APP_API_URL&&(window.MAP_APP_API_URL=e.replace(/\/+$/,""));const t=this.tk||this.cfg.tk||this.runtime.token;t&&!window.MAP_TOKEN&&(window.MAP_TOKEN=t),this.effectiveProvider&&!window.MAP_PROVIDER&&(window.MAP_PROVIDER=this.effectiveProvider)},mountElement(e){const t=this.tabs[e];t.mounted=!0,t.state="loading";const o=this.resolve(t.scriptUrl);wc(o).then(()=>Pc(t.tag)).then(()=>{try{if(t.heavy&&this.activeIndex!==e){t.mounted=!1,t.state="idle";return}const s=this._slots&&this._slots[e];if(!s){t.state="error",t.error="no slot";return}s.innerHTML="";const n=document.createElement(t.tag);n.setAttribute("profile-config",JSON.stringify(this.childConfig(t))),this.base&&n.setAttribute("tree-base",this.base.replace(/\/+$/,"")),n.style.cssText=t.scroll?"display:block;position:static;width:100%;height:auto;":"display:block;position:absolute;inset:0;width:100%;height:100%;",s.appendChild(n),t.state="ready"}catch(s){t.state="error",t.error="mount failed: "+(s&&s.message||String(s))}}).catch(s=>{t.state="error",t.error=s&&s.message||String(s)})}}}),Lc={class:"dms-locale"},Sc=["aria-expanded"],Cc={class:"dms-flag"},Tc={class:"dms-locale-name"},Nc={key:0,class:"dms-locale-menu",role:"listbox"},Rc=["aria-selected"],Ec=["onClick"],Ac={class:"dms-flag"},Oc={class:"dms-locale-name"},Fc={class:"dms-locale-en"},Mc=["hidden"],Dc={key:0,class:"dms-hint"},Ic={key:1,class:"dms-hint err"},Hc={key:2,class:"dms-hint err"},jc={key:0,class:"dms-notice",role:"status"};function Gc(e,t,o,s,n,i){const a=Wa("VerticalTabsLayout");return A(),bo(a,{dir:e.uiDir,lang:e.uiLocale,labels:e.layoutLabels,title:e.heading,"nav-label":e.t("navLabel"),header:e.showHeader,groups:e.navGroups,active:e.activeKey,"onUpdate:active":e.onSelect},za({brand:Pt(()=>[t[1]||(t[1]=T("span",{class:"dms-logo","aria-hidden":"true"},[T("svg",{viewBox:"0 0 24 24",width:"22",height:"22",fill:"none",stroke:"#92b195","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"},[T("circle",{cx:"12",cy:"12",r:"9"}),T("polygon",{points:"12 6 14 12 12 18 10 12",fill:"#92b195",stroke:"none"}),T("polygon",{points:"6 12 12 10 18 12 12 14",fill:"#92b195",opacity:"0.55",stroke:"none"})])],-1))]),meta:Pt(()=>[gt(F(e.t("meta",{n:e.tabs.length})),1)]),default:Pt(()=>[(A(!0),O(ee,null,dt(e.tabs,(r,l)=>Qo((A(),O("section",{key:r.id,class:"dms-pane",hidden:l!==e.activeIndex},[!r.heavy||l===e.activeIndex?(A(),O(ee,{key:0},[T("div",{class:"dms-slot",ref_for:!0,ref:u=>e.setSlot(l,u)},null,512),r.state==="loading"?(A(),O("div",Dc,F(e.tr("loading",{label:e.tabLabel(r)})),1)):r.state==="error"?(A(),O("div",Ic,[gt(F(e.tr("loadFailed",{label:e.tabLabel(r)})),1),t[3]||(t[3]=T("br",null,null,-1)),T("small",null,F(r.error),1)])):r.state==="idle"&&!r.scriptUrl&&e.manifestError?(A(),O("div",Hc,[gt(F(e.tr("loadFailed",{label:e.tabLabel(r)})),1),t[4]||(t[4]=T("br",null,null,-1)),T("small",null,F(e.manifestError),1),t[5]||(t[5]=T("br",null,null,-1)),T("small",null,F(e.tr("manifestHint")),1)])):de("",!0)],64)):de("",!0)],8,Mc)),[[ms,l===e.activeIndex]])),128)),e.disabledNotice?(A(),O("div",jc,F(e.disabledNotice),1)):de("",!0)]),_:2},[e.showLocaleSwitcher?{name:"toolbar",fn:Pt(()=>[T("div",Lc,[T("button",{type:"button",class:"dms-locale-btn","aria-expanded":String(e.localeOpen),"aria-label":"Change language",onClick:t[0]||(t[0]=r=>e.localeOpen=!e.localeOpen)},[T("span",Cc,F(e.activeLang.flag),1),T("span",Tc,F(e.activeLang.nativeName),1),t[2]||(t[2]=T("span",{class:"dms-dots","aria-hidden":"true"},"⋮",-1))],8,Sc),e.localeOpen?(A(),O("ul",Nc,[(A(!0),O(ee,null,dt(e.switcherLangs,r=>(A(),O("li",{key:r.code,role:"option","aria-selected":String(r.code===e.locale)},[T("button",{type:"button",class:Be(["dms-locale-opt",{active:r.code===e.locale}]),onClick:l=>e.setLocale(r.code)},[T("span",Ac,F(r.flag),1),T("span",Oc,F(r.nativeName),1),T("span",Fc,F(r.name),1)],10,Ec)],8,Rc))),128))])):de("",!0)])]),key:"0"}:void 0]),1032,["dir","lang","labels","title","nav-label","header","groups","active","onUpdate:active"])}const Wc=xi(kc,[["render",Gc],["styles",[bc]]]);function Uc(){try{const e=typeof document<"u"&&document.currentScript&&document.currentScript.src||"";return e?e.replace(/[^/]+\/[^/]+$/,"").replace(/\/+$/,"")+"/":""}catch{return""}}const Vc=Uc(),zc=tl(Wc,{configureApp(e){e.provide("dmsTreeBase",Vc)}});typeof customElements<"u"&&!customElements.get("doxa-maps-spa")&&customElements.define("doxa-maps-spa",zc)})(); +`,vl=ss({name:"VerticalTabsLayout",props:{active:{type:String,default:""},title:{type:String,default:""},items:{type:Array,default:()=>[]},groups:{type:Array,default:()=>[]},navLabel:{type:String,default:"Sections"},labels:{type:Object,default:()=>({})},initialNavOpen:{type:Boolean,default:!0},header:{type:Boolean,default:!0},initialRailCollapsed:{type:Boolean,default:!1}},emits:["update:active"],setup(){return fl($l,"vertical-tabs-layout"),{T:bl}},data(){return{navOpen:this.initialNavOpen,railCollapsed:this.initialRailCollapsed,_tabEls:{},folderOverride:{},narrow:!1,_mql:null,_onMedia:null,activatedKeys:{},hostState:{},hostError:{},_hostSlots:{},_hostMounted:{}}},computed:{railShown(){return this.narrow?this.navOpen:!0},allRows(){if(this.groups&&this.groups.length){const e=[];for(const t of this.groups)for(const o of t.rows||[])e.push(o);return e}return this.items},orderedKeys(){return this.allRows.map(e=>e.key)},elementRows(){return this.allRows.filter(e=>e&&e.element)},mountedElementRows(){return this.elementRows.filter(e=>this.activatedKeys[e.key])}},watch:{active:{immediate:!0,handler(e){this.activateElement(e)}}},mounted(){try{window.matchMedia&&(this._mql=window.matchMedia("(max-width: 760px)"),this.narrow=this._mql.matches,this.reconcileForWidth(),this._onMedia=e=>{this.narrow=e.matches,this.reconcileForWidth()},this._mql.addEventListener?this._mql.addEventListener("change",this._onMedia):this._mql.addListener&&this._mql.addListener(this._onMedia))}catch{}this.$nextTick(()=>this.activateElement(this.active))},beforeUnmount(){try{this._mql&&this._onMedia&&(this._mql.removeEventListener?this._mql.removeEventListener("change",this._onMedia):this._mql.removeListener&&this._mql.removeListener(this._onMedia))}catch{}this._mql=null,this._onMedia=null},methods:{registerTab(e,t){t&&(this._tabEls[e]=t)},isNarrow(){return this.narrow},reconcileForWidth(){this.narrow?(this.navOpen=!1,this.railCollapsed=!1):this.navOpen=!0},label(e){const t={toggleList:"Toggle list",openViews:"Open the list of views",expandList:"Expand list",collapseList:"Collapse list",collapse:"Collapse"};return this.labels&&this.labels[e]||t[e]},expandRail(){!this.narrow&&this.railCollapsed&&(this.railCollapsed=!1)},toggleRail(){this.narrow?this.navOpen=!this.navOpen:this.railCollapsed=!this.railCollapsed},setHostSlot(e,t){t&&(this._hostSlots[e]=t,this.$nextTick(()=>this.mountHostElement(e)))},activateElement(e){!e||!this.elementRows.find(o=>o.key===e)||(this.activatedKeys[e]||(this.activatedKeys={...this.activatedKeys,[e]:!0},this.hostState={...this.hostState,[e]:"loading"}),this.$nextTick(()=>this.mountHostElement(e)))},mountHostElement(e){if(this._hostMounted[e])return;const t=this.elementRows.find(s=>s.key===e),o=this._hostSlots[e];!t||!o||(this._hostMounted[e]=!0,this.hostState={...this.hostState,[e]:"loading"},ml(t.src).then(()=>_l(t.element)).then(()=>{o.innerHTML="";const s=document.createElement(t.element),n=t.attrs||{};for(const i in n){const a=n[i],r=a!=null&&typeof a=="object"?JSON.stringify(a):String(a);try{s[i]=a}catch{}try{s.setAttribute(i,r)}catch{}}s.style.cssText="display:block;position:absolute;inset:0;width:100%;height:100%;",o.appendChild(s),this.hostState={...this.hostState,[e]:"ready"}}).catch(s=>{this._hostMounted[e]=!1,this.hostState={...this.hostState,[e]:"error"},this.hostError={...this.hostError,[e]:s&&s.message||String(s)}}))},iconSvg(e){return e?gl(e):""},initial(e){const t=(e||"").trim();return t?t.charAt(0).toUpperCase():"•"},isFolderClosed(e){const t=this.folderOverride[e.key];return t!=null?!t:e.open!==!0},toggleFolder(e){const t=this.folderOverride[e],o=(this.groups||[]).find(n=>n.key===e),s=t??(o&&o.open===!0);this.folderOverride={...this.folderOverride,[e]:!s}},pick(e){this.$emit("update:active",e),this.narrow&&(this.navOpen=!1)},onKey(e){const t=this.orderedKeys;if(!t.length)return;const o=t.indexOf(this.active);let s=-1;if(e.key==="ArrowDown"||e.key==="ArrowRight")s=(o+1)%t.length;else if(e.key==="ArrowUp"||e.key==="ArrowLeft")s=(o-1+t.length)%t.length;else if(e.key==="Home")s=0;else if(e.key==="End")s=t.length-1;else return;e.preventDefault();const n=t[s];this.pick(n),this.$nextTick(()=>{const i=this._tabEls[n];i&&i.focus&&i.focus()})}}}),yl={key:0,class:"vtl-top"},xl=["aria-expanded","aria-label"],wl={class:"vtl-brand"},Pl={class:"vtl-title"},kl={class:"vtl-meta"},Ll=["aria-expanded","aria-label"],Sl={class:"vtl-body"},Cl=["aria-label","aria-hidden","role","aria-orientation"],Tl=["aria-expanded","aria-label"],Nl=["innerHTML"],Rl={class:"vtl-collapse-tx"},El=["aria-expanded","onClick"],Al={key:0,class:"vtl-cap"},Ol={class:"vtl-tl"},Fl={key:1,class:"vtl-td"},Ml=["innerHTML"],Il={key:1,class:"vtl-tier"},Dl={key:0,class:"vtl-cap"},Hl={class:"vtl-tl"},jl={key:1,class:"vtl-td"},Gl={class:"vtl-rows"},Wl=["aria-selected","tabindex","onClick"],Ul=["innerHTML"],Vl={key:1,class:"vtl-tab-emoji","aria-hidden":"true"},zl={key:2,class:"vtl-tab-fallback","aria-hidden":"true"},Bl={class:"vtl-tab-text"},Kl={class:"vtl-tab-label"},ql={key:0,class:"vtl-tab-badge"},Zl={key:0,class:"vtl-tab-sub"},Xl=["innerHTML"],Jl=["aria-selected","tabindex","onClick"],Yl=["innerHTML"],Ql={key:1,class:"vtl-tab-emoji","aria-hidden":"true"},ec={key:2,class:"vtl-tab-fallback","aria-hidden":"true"},tc={class:"vtl-tab-text"},oc={class:"vtl-tab-label"},sc={key:0,class:"vtl-tab-sub"},nc={class:"vtl-main"},ic={class:"vtl-content"},ac=["hidden"],rc={key:0,class:"vtl-host-hint"},lc={key:1,class:"vtl-host-hint err"};function cc(e,t,o,s,n,i){return A(),O("div",{class:Be(["vtl",{"nav-open":e.navOpen,"rail-collapsed":e.railCollapsed,"no-header":!e.header}])},[e.header?(A(),O("header",yl,[T("button",{class:"vtl-menu",type:"button","aria-expanded":String(e.navOpen),onClick:t[0]||(t[0]=a=>e.navOpen=!e.navOpen),"aria-label":e.label("toggleList")},"☰",8,xl),T("span",wl,[St(e.$slots,"brand")]),T("b",Pl,F(e.title),1),T("span",kl,[St(e.$slots,"meta")])])):de("",!0),e.narrow&&!e.header&&!e.navOpen?(A(),O("button",{key:1,class:"vtl-fab",type:"button","aria-expanded":String(e.navOpen),onClick:t[1]||(t[1]=a=>e.navOpen=!0),"aria-label":e.label("openViews")},"☰",8,Ll)):de("",!0),T("div",Sl,[T("nav",{class:"vtl-nav","aria-label":e.navLabel,"aria-hidden":String(!e.railShown),role:e.$slots.rail?null:"tablist","aria-orientation":e.$slots.rail?null:"vertical"},[T("button",{type:"button",class:"vtl-collapse","aria-expanded":String(!e.railCollapsed),"aria-label":e.railCollapsed?e.label("expandList"):e.label("collapseList"),onClick:t[2]||(t[2]=(...a)=>e.toggleRail&&e.toggleRail(...a))},[T("span",{class:"vtl-collapse-ic","aria-hidden":"true",innerHTML:e.iconSvg("chevron")},null,8,Nl),T("span",Rl,F(e.label("collapse")),1)],8,Tl),e.$slots.rail?St(e.$slots,"rail",{collapsed:e.railCollapsed&&!e.narrow,expand:e.expandRail,pick:e.pick},void 0,void 0,0):e.groups&&e.groups.length?(A(!0),O(ee,{key:1},dt(e.groups,a=>(A(),O("div",{class:"vtl-grp",key:a.key},[a.folder?(A(),O("button",{key:0,type:"button",class:"vtl-tier vtl-tier-btn","aria-expanded":String(!e.isFolderClosed(a)),onClick:r=>e.toggleFolder(a.key)},[a.badge?(A(),O("span",Al,F(a.badge),1)):de("",!0),T("span",Ol,F(a.label),1),a.count!=null?(A(),O("span",Fl,F(a.count),1)):de("",!0),T("span",{class:Be(["vtl-chev",{open:!e.isFolderClosed(a)}]),"aria-hidden":"true",innerHTML:e.iconSvg("chevron")},null,10,Ml)],8,El)):(A(),O("div",Il,[a.badge?(A(),O("span",Dl,F(a.badge),1)):de("",!0),T("span",Hl,F(a.label),1),a.count!=null?(A(),O("span",jl,F(a.count),1)):de("",!0)])),Qo(T("div",Gl,[(A(!0),O(ee,null,dt(a.rows,r=>(A(),O("button",{key:r.key,type:"button",role:"tab",class:Be(["vtl-tab",{active:r.key===e.active}]),"aria-selected":String(r.key===e.active),tabindex:r.key===e.active?0:-1,ref_for:!0,ref:l=>e.registerTab(r.key,l),onClick:l=>e.pick(r.key),onKeydown:t[3]||(t[3]=l=>e.onKey(l))},[r.icon?(A(),O("span",{key:0,class:"vtl-tab-ic","aria-hidden":"true",innerHTML:e.iconSvg(r.icon)},null,8,Ul)):r.emoji?(A(),O("span",Vl,F(r.emoji),1)):(A(),O("span",zl,F(e.initial(r.label)),1)),T("span",Bl,[T("span",Kl,[gt(F(r.label),1),r.badge?(A(),O("span",ql,F(r.badge),1)):de("",!0)]),r.sub?(A(),O("span",Zl,[T("span",{innerHTML:r.sub},null,8,Xl)])):de("",!0)])],42,Wl))),128))],512),[[ms,!a.folder||!e.isFolderClosed(a)]])]))),128)):(A(!0),O(ee,{key:2},dt(e.items,a=>(A(),O("button",{key:a.key,type:"button",role:"tab",class:Be(["vtl-tab",{active:a.key===e.active}]),"aria-selected":String(a.key===e.active),tabindex:a.key===e.active?0:-1,ref_for:!0,ref:r=>e.registerTab(a.key,r),onClick:r=>e.pick(a.key),onKeydown:t[4]||(t[4]=r=>e.onKey(r))},[a.icon?(A(),O("span",{key:0,class:"vtl-tab-ic","aria-hidden":"true",innerHTML:e.iconSvg(a.icon)},null,8,Yl)):a.emoji?(A(),O("span",Ql,F(a.emoji),1)):(A(),O("span",ec,F(e.initial(a.label)),1)),T("span",tc,[T("span",oc,F(a.label),1),a.sub?(A(),O("span",sc,F(a.sub),1)):de("",!0)])],42,Jl))),128))],8,Cl),T("main",nc,[e.header?St(e.$slots,"toolbar",{},void 0,void 0,0):de("",!0),T("div",ic,[(A(!0),O(ee,null,dt(e.mountedElementRows,a=>Qo((A(),O("section",{key:a.key,class:"vtl-host",hidden:a.key!==e.active},[T("div",{class:"vtl-host-slot",ref_for:!0,ref:r=>e.setHostSlot(a.key,r)},null,512),e.hostState[a.key]==="loading"?(A(),O("div",rc,F(e.T("messages.loadingNamed","Loading {name}…").replace("{name}",a.label)),1)):e.hostState[a.key]==="error"?(A(),O("div",lc,[gt(F(e.T("messages.couldNotLoadNamed","Could not load {name}.").replace("{name}",a.label)),1),t[5]||(t[5]=T("br",null,null,-1)),T("small",null,F(e.hostError[a.key]),1)])):de("",!0)],8,ac)),[[ms,a.key===e.active]])),128)),St(e.$slots,"default")])])])],2)}const pc=xi(vl,[["render",cc],["styles",[hl]]]),ys=[{code:"en",name:"English",nativeName:"English",flag:"🇺🇸"},{code:"es",name:"Spanish",nativeName:"Español",flag:"🇪🇸"},{code:"fr",name:"French",nativeName:"Français",flag:"🇫🇷"},{code:"pt",name:"Portuguese",nativeName:"Português",flag:"🇵🇹"},{code:"ar",name:"Arabic",nativeName:"العربية",flag:"🇸🇦",dir:"rtl"},{code:"ru",name:"Russian",nativeName:"Русский",flag:"🇷🇺"},{code:"de",name:"German",nativeName:"Deutsch",flag:"🇩🇪",hideFromSwitcher:!0},{code:"hi",name:"Hindi",nativeName:"हिन्दी",flag:"🇮🇳",hideFromSwitcher:!0},{code:"it",name:"Italian",nativeName:"Italiano",flag:"🇮🇹",hideFromSwitcher:!0},{code:"ro",name:"Romanian",nativeName:"Română",flag:"🇷🇴",hideFromSwitcher:!0},{code:"zh",name:"Chinese",nativeName:"中文",flag:"🇨🇳",hideFromSwitcher:!0}],dc=ys.filter(e=>!e.hideFromSwitcher);function uc(e){return ys.find(t=>t.code===e)}function wi(e){const t=String(e||"").split("-")[0].toLowerCase();return ys.some(o=>o.code===t)?t:"en"}const Pi="doxa-maps:locale";function fc(){try{const e=localStorage.getItem(Pi);if(e)return wi(e)}catch{}return wi(navigator==null?void 0:navigator.language)}function gc(e){try{localStorage.setItem(Pi,e)}catch{}}const Ht={en:{"sec.dashboards":"Dashboards","sec.prayer":"Prayer Mobilization","sec.gospel":"Gospel Research","sec.experimental":"Experimental","tab.dashboard-plus-grid":"Big Picture","sub.dashboard-plus-grid":"dashboard + people-groups grid, stacked","tab.research-map":"Research Map","sub.research-map":"prayer · engagement · regions","tab.research-map-plus-grid":"Simple Research","sub.research-map-plus-grid":"research map + people-groups grid","tab.prayer-map":"Prayer Progress","sub.prayer-map":"simple world prayer map","tab.cities-internet":"Cities with Internet","sub.cities-internet":"connectivity of key cities","tab.gospel-resources":"Gospel Resources","sub.gospel-resources":"resources by place","tab.regions-dashboard":"Regions","sub.regions-dashboard":"regions and their countries","tab.gospel-internet":"Gospel x Internet","sub.gospel-internet":"gospel access through the internet","tab.upg-100":"UPG-100 List","sub.upg-100":"my unreached list + posters",navLabel:"Research maps",meta:"{n} maps",loading:"Loading {label}…",loadFailed:"Could not load {label}.",manifestHint:"This tab is composed from manifest.json — build the tree, or serve the built tree, to load it.",desktopOnly:"desktop only",lab:"lab",experimentalSub:"experimental bundle",toggleList:"Toggle list",openViews:"Open the list of views",expandList:"Expand list",collapseList:"Collapse list",collapse:"Collapse","tab.prayer-walk-planner":"Prayer Walk Planner","tab.upg-neighbor":"UPG Neighbor","tab.key-cities":"Key Cities","tab.all-people-groups":"All People Groups","tab.pplr-data-maps":"PPLR Data Maps","tab.wall-of-people-groups":"Wall of People Groups","tab.country-posters":"Country Posters","tab.doxa-vision-card":"Doxa Vision Card",desktopNotice:"Big Picture only supports desktop — open this page on a desktop to use it."},es:{"sec.dashboards":"Paneles","sec.prayer":"Movilización de oración","sec.gospel":"Investigación del Evangelio","sec.experimental":"Experimental","tab.dashboard-plus-grid":"Panorama general","sub.dashboard-plus-grid":"panel + cuadrícula de pueblos","tab.research-map":"Mapa de investigación","sub.research-map":"oración · compromiso · regiones","tab.research-map-plus-grid":"Investigación simple","sub.research-map-plus-grid":"mapa de investigación + cuadrícula de pueblos","tab.prayer-map":"Progreso de oración","sub.prayer-map":"mapa mundial de oración","tab.cities-internet":"Ciudades con Internet","sub.cities-internet":"conectividad de ciudades clave","tab.gospel-resources":"Recursos del Evangelio","sub.gospel-resources":"recursos por lugar","tab.regions-dashboard":"Regiones","sub.regions-dashboard":"regiones y sus países","tab.gospel-internet":"Evangelio e Internet","sub.gospel-internet":"acceso al evangelio por internet","tab.upg-100":"Lista UPG-100","sub.upg-100":"mi lista de no alcanzados + carteles",navLabel:"Mapas de investigación",meta:"{n} mapas",loading:"Cargando {label}…",loadFailed:"No se pudo cargar {label}.",manifestHint:"Esta pestaña se compone a partir de manifest.json: compila el árbol o sirve el árbol compilado para cargarla.",desktopOnly:"solo escritorio",lab:"beta",experimentalSub:"mapa experimental",toggleList:"Mostrar u ocultar la lista",openViews:"Abrir la lista de vistas",expandList:"Expandir la lista",collapseList:"Contraer la lista",collapse:"Contraer","tab.prayer-walk-planner":"Caminatas de oración","tab.upg-neighbor":"Vecino UPG","tab.key-cities":"Ciudades clave","tab.all-people-groups":"Todos los pueblos","tab.pplr-data-maps":"Mapas de datos PPLR","tab.wall-of-people-groups":"Muro de los pueblos","tab.country-posters":"Carteles por país","tab.doxa-vision-card":"Tarjeta de visión Doxa",desktopNotice:"Panorama general solo funciona en escritorio: abre esta página en una computadora para usarlo."},fr:{"sec.dashboards":"Tableaux de bord","sec.prayer":"Mobilisation à la prière","sec.gospel":"Recherche sur l'Évangile","sec.experimental":"Expérimental","tab.dashboard-plus-grid":"Vue d'ensemble","sub.dashboard-plus-grid":"tableau de bord + grille des peuples","tab.research-map":"Carte de recherche","sub.research-map":"prière · engagement · régions","tab.research-map-plus-grid":"Recherche simple","sub.research-map-plus-grid":"carte de recherche + grille des peuples","tab.prayer-map":"Progression de la prière","sub.prayer-map":"carte mondiale de la prière","tab.cities-internet":"Villes avec Internet","sub.cities-internet":"connectivité des villes clés","tab.gospel-resources":"Ressources de l'Évangile","sub.gospel-resources":"ressources par lieu","tab.regions-dashboard":"Régions","sub.regions-dashboard":"régions et leurs pays","tab.gospel-internet":"Évangile et Internet","sub.gospel-internet":"l’accès à l’Évangile par internet","tab.upg-100":"Liste UPG-100","sub.upg-100":"ma liste des non atteints + affiches",navLabel:"Cartes de recherche",meta:"{n} cartes",loading:"Chargement de {label}…",loadFailed:"Impossible de charger {label}.",manifestHint:"Cet onglet est composé à partir de manifest.json : construisez l'arborescence ou servez l'arborescence construite pour le charger.",desktopOnly:"ordinateur uniquement",lab:"bêta",experimentalSub:"carte expérimentale",toggleList:"Afficher ou masquer la liste",openViews:"Ouvrir la liste des vues",expandList:"Déplier la liste",collapseList:"Replier la liste",collapse:"Replier","tab.prayer-walk-planner":"Marches de prière","tab.upg-neighbor":"Voisin UPG","tab.key-cities":"Villes clés","tab.all-people-groups":"Tous les peuples","tab.pplr-data-maps":"Cartes de données PPLR","tab.wall-of-people-groups":"Mur des peuples","tab.country-posters":"Affiches par pays","tab.doxa-vision-card":"Carte de vision Doxa",desktopNotice:"Vue d'ensemble ne fonctionne que sur ordinateur : ouvrez cette page sur un ordinateur pour l'utiliser."},de:{"sec.dashboards":"Dashboards","sec.prayer":"Gebetsmobilisierung","sec.gospel":"Evangeliumsforschung","sec.experimental":"Experimentell","tab.dashboard-plus-grid":"Gesamtbild","sub.dashboard-plus-grid":"Dashboard + Raster der Volksgruppen","tab.research-map":"Forschungskarte","sub.research-map":"Gebet · Engagement · Regionen","tab.research-map-plus-grid":"Einfache Recherche","sub.research-map-plus-grid":"Forschungskarte + Raster der Volksgruppen","tab.prayer-map":"Gebetsfortschritt","sub.prayer-map":"einfache Weltkarte des Gebets","tab.cities-internet":"Städte mit Internet","sub.cities-internet":"Konnektivität wichtiger Städte","tab.gospel-resources":"Evangeliumsressourcen","sub.gospel-resources":"Ressourcen nach Ort","tab.regions-dashboard":"Regionen","sub.regions-dashboard":"Regionen und ihre Länder","tab.gospel-internet":"Evangelium × Internet","sub.gospel-internet":"Zugang zum Evangelium über das Internet","tab.upg-100":"UPG-100-Liste","sub.upg-100":"meine Liste der Unerreichten + Poster",navLabel:"Forschungskarten",meta:"{n} Karten",loading:"{label} wird geladen…",loadFailed:"{label} konnte nicht geladen werden.",manifestHint:"Dieser Tab wird aus manifest.json zusammengesetzt – bauen Sie den Baum oder stellen Sie den gebauten Baum bereit, um ihn zu laden.",desktopOnly:"nur Desktop",lab:"Beta",experimentalSub:"experimentelle Karte",toggleList:"Liste ein-/ausblenden",openViews:"Ansichtsliste öffnen",expandList:"Liste ausklappen",collapseList:"Liste einklappen",collapse:"Einklappen","tab.prayer-walk-planner":"Gebetsspaziergänge","tab.upg-neighbor":"UPG-Nachbar","tab.key-cities":"Schlüsselstädte","tab.all-people-groups":"Alle Volksgruppen","tab.pplr-data-maps":"PPLR-Datenkarten","tab.wall-of-people-groups":"Wand der Volksgruppen","tab.country-posters":"Länderposter","tab.doxa-vision-card":"Doxa-Visionskarte",desktopNotice:"Gesamtbild funktioniert nur am Desktop – öffnen Sie diese Seite an einem Computer, um es zu nutzen."},pt:{"sec.dashboards":"Painéis","sec.prayer":"Mobilização de oração","sec.gospel":"Pesquisa do Evangelho","sec.experimental":"Experimental","tab.dashboard-plus-grid":"Visão geral","sub.dashboard-plus-grid":"painel + grade de povos","tab.research-map":"Mapa de pesquisa","sub.research-map":"oração · engajamento · regiões","tab.research-map-plus-grid":"Pesquisa simples","sub.research-map-plus-grid":"mapa de pesquisa + grade de povos","tab.prayer-map":"Progresso da oração","sub.prayer-map":"mapa mundial de oração","tab.cities-internet":"Cidades com Internet","sub.cities-internet":"conectividade das principais cidades","tab.gospel-resources":"Recursos do Evangelho","sub.gospel-resources":"recursos por lugar","tab.regions-dashboard":"Regiões","sub.regions-dashboard":"regiões e seus países","tab.gospel-internet":"Evangelho e Internet","sub.gospel-internet":"acesso ao evangelho pela internet","tab.upg-100":"Lista UPG-100","sub.upg-100":"minha lista de não alcançados + cartazes",navLabel:"Mapas de pesquisa",meta:"{n} mapas",loading:"Carregando {label}…",loadFailed:"Não foi possível carregar {label}.",manifestHint:"Esta aba é composta a partir do manifest.json — compile a árvore ou sirva a árvore compilada para carregá-la.",desktopOnly:"só no computador",lab:"beta",experimentalSub:"mapa experimental",toggleList:"Mostrar ou ocultar a lista",openViews:"Abrir a lista de visualizações",expandList:"Expandir a lista",collapseList:"Recolher a lista",collapse:"Recolher","tab.prayer-walk-planner":"Caminhadas de oração","tab.upg-neighbor":"Vizinho UPG","tab.key-cities":"Cidades-chave","tab.all-people-groups":"Todos os povos","tab.pplr-data-maps":"Mapas de dados PPLR","tab.wall-of-people-groups":"Mural dos povos","tab.country-posters":"Cartazes por país","tab.doxa-vision-card":"Cartão de visão Doxa",desktopNotice:"Visão geral só funciona no computador — abra esta página em um computador para usá-la."},it:{"sec.dashboards":"Dashboard","sec.prayer":"Mobilitazione alla preghiera","sec.gospel":"Ricerca sul Vangelo","sec.experimental":"Sperimentale","tab.dashboard-plus-grid":"Quadro d'insieme","sub.dashboard-plus-grid":"dashboard + griglia dei popoli","tab.research-map":"Mappa di ricerca","sub.research-map":"preghiera · impegno · regioni","tab.research-map-plus-grid":"Ricerca semplice","sub.research-map-plus-grid":"mappa di ricerca + griglia dei popoli","tab.prayer-map":"Avanzamento preghiera","sub.prayer-map":"mappa mondiale della preghiera","tab.cities-internet":"Città con Internet","sub.cities-internet":"connettività delle città chiave","tab.gospel-resources":"Risorse del Vangelo","sub.gospel-resources":"risorse per luogo","tab.regions-dashboard":"Regioni","sub.regions-dashboard":"regioni e i loro paesi","tab.gospel-internet":"Vangelo e Internet","sub.gospel-internet":"l’accesso al vangelo tramite internet","tab.upg-100":"Lista UPG-100","sub.upg-100":"la mia lista dei non raggiunti + poster",navLabel:"Mappe di ricerca",meta:"{n} mappe",loading:"Caricamento di {label}…",loadFailed:"Impossibile caricare {label}.",manifestHint:"Questa scheda è composta da manifest.json: compila l'albero o pubblica l'albero compilato per caricarla.",desktopOnly:"solo desktop",lab:"beta",experimentalSub:"mappa sperimentale",toggleList:"Mostra o nascondi l’elenco",openViews:"Apri l’elenco delle viste",expandList:"Espandi l’elenco",collapseList:"Comprimi l’elenco",collapse:"Comprimi","tab.prayer-walk-planner":"Passeggiate di preghiera","tab.upg-neighbor":"Vicino UPG","tab.key-cities":"Città chiave","tab.all-people-groups":"Tutti i popoli","tab.pplr-data-maps":"Mappe dati PPLR","tab.wall-of-people-groups":"Muro dei popoli","tab.country-posters":"Poster per paese","tab.doxa-vision-card":"Scheda visione Doxa",desktopNotice:"Quadro d'insieme funziona solo su desktop: apri questa pagina su un computer per usarlo."},ro:{"sec.dashboards":"Panouri","sec.prayer":"Mobilizare la rugăciune","sec.gospel":"Cercetarea Evangheliei","sec.experimental":"Experimental","tab.dashboard-plus-grid":"Imaginea de ansamblu","sub.dashboard-plus-grid":"panou + grila popoarelor","tab.research-map":"Hartă de cercetare","sub.research-map":"rugăciune · implicare · regiuni","tab.research-map-plus-grid":"Cercetare simplă","sub.research-map-plus-grid":"hartă de cercetare + grila popoarelor","tab.prayer-map":"Progresul rugăciunii","sub.prayer-map":"hartă mondială a rugăciunii","tab.cities-internet":"Orașe cu internet","sub.cities-internet":"conectivitatea orașelor-cheie","tab.gospel-resources":"Resurse ale Evangheliei","sub.gospel-resources":"resurse după loc","tab.regions-dashboard":"Regiuni","sub.regions-dashboard":"regiunile și țările lor","tab.gospel-internet":"Evanghelie și Internet","sub.gospel-internet":"accesul la Evanghelie prin internet","tab.upg-100":"Lista UPG-100","sub.upg-100":"lista mea de neatinși + afișe",navLabel:"Hărți de cercetare",meta:"{n} hărți",loading:"Se încarcă {label}…",loadFailed:"{label} nu a putut fi încărcat.",manifestHint:"Această filă este compusă din manifest.json — construiți arborele sau serviți arborele construit pentru a o încărca.",desktopOnly:"doar pe desktop",lab:"beta",experimentalSub:"hartă experimentală",toggleList:"Afișează sau ascunde lista",openViews:"Deschide lista de vizualizări",expandList:"Extinde lista",collapseList:"Restrânge lista",collapse:"Restrânge","tab.prayer-walk-planner":"Plimbări de rugăciune","tab.upg-neighbor":"Vecin UPG","tab.key-cities":"Orașe-cheie","tab.all-people-groups":"Toate popoarele","tab.pplr-data-maps":"Hărți de date PPLR","tab.wall-of-people-groups":"Zidul popoarelor","tab.country-posters":"Afișe pe țări","tab.doxa-vision-card":"Card de viziune Doxa",desktopNotice:"Imaginea de ansamblu funcționează doar pe desktop — deschideți această pagină pe un computer pentru a o folosi."},ru:{"sec.dashboards":"Панели","sec.prayer":"Молитвенная мобилизация","sec.gospel":"Исследование Евангелия","sec.experimental":"Экспериментальное","tab.dashboard-plus-grid":"Общая картина","sub.dashboard-plus-grid":"панель + таблица народов","tab.research-map":"Исследовательская карта","sub.research-map":"молитва · вовлечённость · регионы","tab.research-map-plus-grid":"Простое исследование","sub.research-map-plus-grid":"исследовательская карта + таблица народов","tab.prayer-map":"Прогресс молитвы","sub.prayer-map":"простая карта молитвы мира","tab.cities-internet":"Города с интернетом","sub.cities-internet":"подключённость ключевых городов","tab.gospel-resources":"Евангельские ресурсы","sub.gospel-resources":"ресурсы по местам","tab.regions-dashboard":"Регионы","sub.regions-dashboard":"регионы и их страны","tab.gospel-internet":"Евангелие и интернет","sub.gospel-internet":"доступ к Евангелию через интернет","tab.upg-100":"Список UPG-100","sub.upg-100":"мой список недостигнутых + плакаты",navLabel:"Исследовательские карты",meta:"Карт: {n}",loading:"Загрузка: {label}…",loadFailed:"Не удалось загрузить: {label}.",manifestHint:"Эта вкладка собирается из manifest.json — соберите дерево или разместите собранное дерево, чтобы загрузить её.",desktopOnly:"только на компьютере",lab:"бета",experimentalSub:"экспериментальная карта",toggleList:"Показать или скрыть список",openViews:"Открыть список представлений",expandList:"Развернуть список",collapseList:"Свернуть список",collapse:"Свернуть","tab.prayer-walk-planner":"Молитвенные прогулки","tab.upg-neighbor":"Сосед UPG","tab.key-cities":"Ключевые города","tab.all-people-groups":"Все народы","tab.pplr-data-maps":"Карты данных PPLR","tab.wall-of-people-groups":"Стена народов","tab.country-posters":"Плакаты по странам","tab.doxa-vision-card":"Карточка видения Doxa",desktopNotice:"«Общая картина» работает только на компьютере — откройте эту страницу на компьютере."},ar:{"sec.dashboards":"لوحات المعلومات","sec.prayer":"التعبئة للصلاة","sec.gospel":"أبحاث الإنجيل","sec.experimental":"تجريبي","tab.dashboard-plus-grid":"الصورة الكاملة","sub.dashboard-plus-grid":"لوحة معلومات + شبكة الشعوب","tab.research-map":"خريطة البحث","sub.research-map":"الصلاة · الانخراط · المناطق","tab.research-map-plus-grid":"بحث مبسّط","sub.research-map-plus-grid":"خريطة البحث + شبكة الشعوب","tab.prayer-map":"تقدم الصلاة","sub.prayer-map":"خريطة عالمية مبسّطة للصلاة","tab.cities-internet":"مدن متصلة بالإنترنت","sub.cities-internet":"اتصال المدن الرئيسية","tab.gospel-resources":"موارد الإنجيل","sub.gospel-resources":"الموارد حسب المكان","tab.regions-dashboard":"المناطق","sub.regions-dashboard":"المناطق ودولها","tab.gospel-internet":"الإنجيل والإنترنت","sub.gospel-internet":"الوصول إلى الإنجيل عبر الإنترنت","tab.upg-100":"قائمة UPG-100","sub.upg-100":"قائمتي لغير المُبشَّرين + ملصقات",navLabel:"خرائط البحث",meta:"عدد الخرائط: {n}",loading:"جارٍ تحميل {label}…",loadFailed:"تعذّر تحميل {label}.",manifestHint:"تُبنى علامة التبويب هذه من manifest.json — ابنِ الشجرة أو قدّم الشجرة المبنية لتحميلها.",desktopOnly:"على الحاسوب فقط",lab:"تجريبي",experimentalSub:"خريطة تجريبية",toggleList:"إظهار القائمة أو إخفاؤها",openViews:"فتح قائمة العروض",expandList:"توسيع القائمة",collapseList:"طي القائمة",collapse:"طي","tab.prayer-walk-planner":"جولات الصلاة","tab.upg-neighbor":"جار UPG","tab.key-cities":"المدن الرئيسية","tab.all-people-groups":"جميع الشعوب","tab.pplr-data-maps":"خرائط بيانات PPLR","tab.wall-of-people-groups":"جدار الشعوب","tab.country-posters":"ملصقات الدول","tab.doxa-vision-card":"بطاقة رؤية Doxa",desktopNotice:"تعمل «الصورة الكاملة» على الحاسوب فقط — افتح هذه الصفحة على حاسوب لاستخدامها."},hi:{"sec.dashboards":"डैशबोर्ड","sec.prayer":"प्रार्थना संचालन","sec.gospel":"सुसमाचार शोध","sec.experimental":"प्रायोगिक","tab.dashboard-plus-grid":"संपूर्ण चित्र","sub.dashboard-plus-grid":"डैशबोर्ड + जनसमूहों की ग्रिड","tab.research-map":"शोध मानचित्र","sub.research-map":"प्रार्थना · सहभागिता · क्षेत्र","tab.research-map-plus-grid":"सरल शोध","sub.research-map-plus-grid":"शोध मानचित्र + जनसमूहों की ग्रिड","tab.prayer-map":"प्रार्थना प्रगति","sub.prayer-map":"सरल विश्व प्रार्थना मानचित्र","tab.cities-internet":"इंटरनेट वाले शहर","sub.cities-internet":"प्रमुख शहरों की कनेक्टिविटी","tab.gospel-resources":"सुसमाचार संसाधन","sub.gospel-resources":"स्थान के अनुसार संसाधन","tab.regions-dashboard":"क्षेत्र","sub.regions-dashboard":"क्षेत्र और उनके देश","tab.gospel-internet":"सुसमाचार और इंटरनेट","sub.gospel-internet":"इंटरनेट के माध्यम से सुसमाचार तक पहुँच","tab.upg-100":"UPG-100 सूची","sub.upg-100":"मेरी अप्राप्त सूची + पोस्टर",navLabel:"शोध मानचित्र",meta:"{n} मानचित्र",loading:"{label} लोड हो रहा है…",loadFailed:"{label} लोड नहीं हो सका।",manifestHint:"यह टैब manifest.json से बनता है — इसे लोड करने के लिए ट्री बनाएँ या बना हुआ ट्री सर्व करें।",desktopOnly:"केवल डेस्कटॉप",lab:"बीटा",experimentalSub:"प्रायोगिक मानचित्र",toggleList:"सूची दिखाएँ या छिपाएँ",openViews:"दृश्यों की सूची खोलें",expandList:"सूची फैलाएँ",collapseList:"सूची संक्षिप्त करें",collapse:"संक्षिप्त करें","tab.prayer-walk-planner":"प्रार्थना पदयात्रा","tab.upg-neighbor":"UPG पड़ोसी","tab.key-cities":"प्रमुख शहर","tab.all-people-groups":"सभी जनसमूह","tab.pplr-data-maps":"PPLR डेटा मानचित्र","tab.wall-of-people-groups":"जनसमूहों की दीवार","tab.country-posters":"देश पोस्टर","tab.doxa-vision-card":"Doxa दर्शन कार्ड",desktopNotice:"संपूर्ण चित्र केवल डेस्कटॉप पर काम करता है — इसे उपयोग करने के लिए यह पेज कंप्यूटर पर खोलें।"},zh:{"sec.dashboards":"仪表板","sec.prayer":"祷告动员","sec.gospel":"福音研究","sec.experimental":"实验性","tab.dashboard-plus-grid":"全景","sub.dashboard-plus-grid":"仪表板 + 民族网格","tab.research-map":"研究地图","sub.research-map":"祷告 · 参与 · 区域","tab.research-map-plus-grid":"简易研究","sub.research-map-plus-grid":"研究地图 + 民族网格","tab.prayer-map":"祷告进度","sub.prayer-map":"简易世界祷告地图","tab.cities-internet":"有互联网的城市","sub.cities-internet":"主要城市的网络连接","tab.gospel-resources":"福音资源","sub.gospel-resources":"按地点划分的资源","tab.regions-dashboard":"区域","sub.regions-dashboard":"区域及其国家","tab.gospel-internet":"福音与互联网","sub.gospel-internet":"通过互联网接触福音","tab.upg-100":"UPG-100 名单","sub.upg-100":"我的未得之民名单 + 海报",navLabel:"研究地图",meta:"{n} 张地图",loading:"正在加载{label}…",loadFailed:"无法加载{label}。",manifestHint:"此标签页由 manifest.json 组成——请构建目录树或提供已构建的目录树以加载它。",desktopOnly:"仅限桌面",lab:"测试版",experimentalSub:"实验性地图",toggleList:"显示或隐藏列表",openViews:"打开视图列表",expandList:"展开列表",collapseList:"折叠列表",collapse:"折叠","tab.prayer-walk-planner":"祷告行走","tab.upg-neighbor":"UPG 邻居","tab.key-cities":"重点城市","tab.all-people-groups":"所有民族","tab.pplr-data-maps":"PPLR 数据地图","tab.wall-of-people-groups":"民族之墙","tab.country-posters":"国家海报","tab.doxa-vision-card":"Doxa 异象卡",desktopNotice:"全景仅支持桌面设备——请在电脑上打开此页面使用。"}},xs=Object.keys(Ht);function hc(e){return Object.prototype.hasOwnProperty.call(Ht.en,e)}function wo(e,t,o){let n=(Ht[e]||Ht.en)[t]??Ht.en[t]??t;if(o)for(const i in o)n=n.split("{"+i+"}").join(String(o[i]));return n}const bc=":host{display:block;position:relative;height:var(--doxa-maps-spa-height, 85vh);min-height:480px}:host{font-size:16px;line-height:normal;font-weight:400;font-style:normal;font-variant:normal;font-stretch:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;text-align:start;text-indent:0;text-shadow:none;white-space:normal;-webkit-hyphens:manual;hyphens:manual;visibility:visible;cursor:auto}:host([hidden]){display:none}.dms-pane{position:absolute;top:0;right:0;bottom:0;left:0;overflow-y:auto;overflow-x:hidden;overscroll-behavior:contain}.dms-slot{position:relative;min-height:100%}.dms-hint{position:absolute;top:0;right:0;bottom:0;left:0;display:grid;place-items:center;text-align:center;color:#6d766e;font-size:13px;padding:20px}.dms-hint.err{color:#f87171}.dms-hint small{color:var(--dx-muted, #6d766e)}.dms-notice{position:fixed;left:50%;bottom:24px;transform:translate(-50%);z-index:40;max-width:320px;text-align:center;font-size:13px;line-height:1.4;color:#3b463d;background:#fff;border:1px solid #d1d4cd;border-radius:10px;padding:10px 16px;box-shadow:0 8px 24px #0000001f}.dms-logo{display:inline-flex;align-items:center}.dms-logo svg{display:block}.dms-locale{position:relative;padding:8px 12px 0;display:flex;justify-content:flex-end}.dms-locale-btn{display:inline-flex;align-items:center;gap:8px;font:inherit;font-size:12px;padding:5px 10px;border:1px solid #d1d4cd;border-radius:8px;background:#d1d4cd;color:#3b463d;cursor:pointer}.dms-locale-btn:hover{background:#d1d4cd}.dms-flag{font-size:14px;line-height:1}.dms-locale-name{max-width:12ch;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dms-dots{color:#6d766e;margin-left:2px}.dms-locale-menu{position:absolute;top:100%;right:12px;margin-top:4px;z-index:30;min-width:180px;list-style:none;padding:6px;border:1px solid #d1d4cd;border-radius:10px;background:#fff;box-shadow:0 12px 32px #00000080;max-height:320px;overflow:auto}.dms-locale-opt{display:flex;align-items:center;gap:8px;width:100%;text-align:left;font:inherit;font-size:13px;padding:7px 9px;border:0;border-radius:7px;background:none;color:#3b463d;cursor:pointer}.dms-locale-opt:hover,.dms-locale-opt.active{background:#d1d4cd;color:#3b463d}.dms-locale-opt.active .dms-locale-name{color:#92b195}.dms-locale-en{margin-left:auto;font-size:11px;color:#6d766e}";function ki(){try{const e=new URLSearchParams(location.search),t=(e.get("lang")||e.get("locale")||"").split("-")[0].toLowerCase();if(xs.includes(t))return t}catch{}try{const e=(document.documentElement.lang||"").split("-")[0].toLowerCase();if(xs.includes(e))return e}catch{}return""}const ws=[{key:"dashboards",label:"Dashboards",i18n:"sec.dashboards",icon:"chart",tabs:[{id:"dashboard-plus-grid",icon:"chart"},{id:"research-map-plus-grid",icon:"map"},{id:"regions-dashboard",icon:"map"},{id:"gospel-internet",icon:"chart"}]},{key:"prayer-mobilization",label:"Prayer Mobilization",i18n:"sec.prayer",icon:"heart",tabs:[{id:"upg-100",icon:"list"},{id:"prayer-map",icon:"embed"}]},{key:"gospel-research",label:"Gospel Research",i18n:"sec.gospel",icon:"search",tabs:[{id:"cities-internet",icon:"wifi"},{id:"gospel-resources",icon:"book"}]},{key:"experimental",label:"Experimental",i18n:"sec.experimental",icon:"flask",folder:!0,open:!1,tabs:[]}],mc=new Set(["doxa-maps-spa","plugin-studio","template-bundle","people-groups-grid","research-dashboard","big-picture","demo-map","golden-path-check","doxa-research-map","stack-demo"]),Li={"prayer-walk-planner":1,"upg-neighbor":2,"key-cities":3,"all-people-groups":4,"country-posters":5,"doxa-vision-card":6},Ps=[{id:"dashboard-plus-grid",label:"Big Picture",sub:"dashboard + people-groups grid, stacked",emoji:"🌍",bundle:"dashboard-plus-grid",profile:"dashboard-plus-grid"},{id:"research-map",label:"Research Map",sub:"prayer · engagement · regions",emoji:"🗺️",bundle:"doxa-research-map",profile:"research-map"},{id:"research-map-plus-grid",label:"Simple Research",sub:"research map + people-groups grid",emoji:"🗺️",bundle:"research-map-plus-grid",profile:"research-map-plus-grid"},{id:"prayer-map",label:"Prayer Progress",sub:"simple world prayer map",emoji:"🙏",bundle:"doxa-simple-map",profile:"doxa-simple-map",instance:"prayer"},{id:"cities-internet",label:"Cities with Internet",sub:"connectivity of key cities",emoji:"📡",bundle:"cities-internet",profile:"connectivity-map"},{id:"gospel-resources",label:"Gospel Resources",sub:"resources by place",emoji:"📖",bundle:"gospel-resources",profile:"resources-map"},{id:"regions-dashboard",label:"Regions",sub:"regions and their countries",emoji:"🌐",bundle:"regions-dashboard",profile:"regions-mfe"},{id:"gospel-internet",label:"Gospel x Internet",sub:"gospel access through the internet",emoji:"📶",bundle:"gospel-internet",profile:"board"},{id:"upg-100",label:"UPG-100 List",sub:"my unreached list + posters",emoji:"📋",bundle:"my-upg-100-list",profile:"upg-100-mfe"}];$c(ws);const Po=new Set(["doxa-research-map","doxa-simple-map","cities-internet-map","gospel-resources-map","my-upg-100-list-map","doxa-map","doxa-maps-spa","dashboard-plus-grid","research-dashboard-map","demo-map","all-people-groups","country-posters-map","key-cities-map","research-map-plus-grid","gospel-internet-board"]),ko=new Set(["dashboard-plus-grid","research-map-plus-grid"]);function _c(){const e=Object.fromEntries(Ps.map(o=>[o.id,o])),t=new Set;for(const o of ws)if(o.key!=="experimental")for(const s of o.tabs||[]){const n=e[s.id];n&&n.bundle&&t.add(n.bundle)}return t}function Si(e,t){const o=[];for(const s of e)!s||t.has(s.key)||(t.add(s.key),o.push(s));return o}function $c(e){const t=new Map,o=[];for(const s of e)if(s.key!=="experimental")for(const n of s.tabs||[]){if(!n||!n.id)continue;const i=t.get(n.id);if(i===void 0){t.set(n.id,s.key);continue}(i!==s.key||o.indexOf(n.id)===-1)&&o.push(n.id+" ("+i+" + "+s.key+")")}return o.length&&typeof console<"u"&&console.error("[doxa-maps-spa] duplicate tab key(s) across NAV_MODEL sections: "+o.join(", ")+" — VerticalTabsLayout keys its tab-ref map and `active` highlight by id, so a row declared in two sections paints twice and stalls keyboard nav. See the duplicate-key trap in SPEC-the-six-map-product-and-its-tab-order.md."),o}function vc(e){return String(e).split(/[-_]/).filter(Boolean).map(t=>t.charAt(0).toUpperCase()+t.slice(1)).join(" ")}function yc(e){const t=_c(),o=e&&Array.isArray(e.bundles)?e.bundles:[],s=[];for(const n of o){const i=n&&n.bundle;if(!i||t.has(i)||mc.has(i))continue;const a=Array.isArray(n.profiles)?n.profiles:[];if(!a.length)continue;const r=a.find(d=>d.isMap)||a.find(d=>d.profile===i)||a[0],l=r.element||Array.isArray(n.elements)&&n.elements[0]||i,u=n.scriptUrl||r.scriptUrl||"";u&&s.push({id:i,label:r.title||vc(i),sub:(r.description||"").trim().replace(/[,;]\s*$/,"")||"experimental bundle",emoji:"🧪",tag:l,bundle:i,profile:r.profile||i,scriptUrl:u,heavy:Po.has(l)||Po.has(i),scroll:ko.has(l)||ko.has(i),discovered:!0})}return s.sort((n,i)=>{const a=Li[n.id]||999,r=Li[i.id]||999;return a!==r?a-r:n.label.localeCompare(i.label)}),s}function xc(e,t){const o=e&&Array.isArray(e.bundles)?e.bundles:[],s=Object.fromEntries(o.map(i=>[i.bundle,i])),n={};for(const i of t){const a=s[i.bundle];if(!a)continue;const r=Array.isArray(a.profiles)?a.profiles:[],l=r.find(P=>P.profile===i.profile)||r[0],u=l&&l.element||Array.isArray(a.elements)&&a.elements[0]||i.bundle,d=a.scriptUrl||l&&l.scriptUrl||"";if(!d)continue;const g=l&&Array.isArray(l.instances)?l.instances:[],x=!!(i.instance&&g.some(P=>(P&&(P.id||P.instance))===i.instance));n[i.id]={tag:u,scriptUrl:d,profile:l&&l.profile||i.profile,instance:x?i.instance:"",heavy:Po.has(u)||Po.has(i.bundle),scroll:ko.has(u)||ko.has(i.bundle)}}return n}const jt={};function wc(e,t){return jt[e]||(jt[e]=new Promise((o,s)=>{const n=document.createElement("script");n.src=e,(/^\/plugin-designs\//.test(e)||/\/index\.js(\?|$)/.test(e))&&(n.type="module"),n.onload=()=>o(),n.onerror=()=>{delete jt[e],s(new Error("failed to load "+e))},document.head.appendChild(n)})),jt[e]}function Pc(e,t){return typeof customElements>"u"||customElements.get(e)?Promise.resolve():Promise.race([customElements.whenDefined(e),new Promise((o,s)=>setTimeout(()=>{customElements.get(e)||s(new Error("<"+e+"> never registered (bundle loaded but defined no element)"))},15e3))])}const kc=ss({name:"DoxaMapsSpa",inheritAttrs:!1,components:{VerticalTabsLayout:pc},props:{treeBase:{type:String,default:""},profileConfig:{type:[String,Object],default:""},heading:{type:String,default:"DX-Maps"},tokenUrl:{type:String,default:""},tk:{type:String,default:""},language:{type:String,default:""},apiBaseUrl:{type:String,default:""},provider:{type:String,default:""},tab:{type:String,default:""}},emits:["tab-change"],setup(){return{injectedBase:kt("dmsTreeBase","")}},data(){return{activeIndex:0,showHeader:!1,narrow:!1,_mql:null,_onMedia:null,disabledNotice:"",_noticeTimer:null,manifestError:"",manifestBase:"",runtime:{},locale:fc(),hostLang:ki(),localeOpen:!1,switcherLangs:dc,tabs:Ps.map(e=>({...e,tag:"",scriptUrl:"",heavy:!1,scroll:!1,resolved:!1,mounted:!1,state:"idle",error:""}))}},computed:{cfg(){let e=this.profileConfig;if(typeof e=="string")try{e=e?JSON.parse(e):{}}catch{e={}}return e&&typeof e=="object"?e:{}},base(){const e=(this.treeBase||this.cfg.treeBase||this.injectedBase||"").trim();return e?e.replace(/\/+$/,"")+"/":""},assetsBase(){const e=String(this.cfg.assetsBase||"").trim();return/^https?:\/\//i.test(e)||e.startsWith("/")?e.replace(/\/+$/,""):this.manifestBase?this.manifestBase.replace(/\/+$/,"")+"/assets":""},navGroups(){const e=Object.fromEntries(this.tabs.map(o=>[o.id,o])),t=new Set;return ws.map(o=>{let s=Si((o.tabs||[]).filter(n=>e[n.id]).map(n=>{const i=e[n.id],a=this.isBigPictureDisabled(i.id);return{key:i.id,label:this.tabLabel(i),sub:this.tabSub(i),icon:n.icon,badge:a?this.tr("desktopOnly"):n.badge,disabled:a}}),t);return o.key==="experimental"&&(s=s.concat(Si(this.tabs.filter(n=>n.discovered).map(n=>({key:n.id,label:this.tabLabel(n),sub:this.tabSub(n),icon:"flask",badge:this.tr("lab")})),t))),{key:o.key,label:o.i18n?this.tr(o.i18n):o.label,icon:o.icon,folder:!!o.folder,open:o.open,rows:s}}).filter(o=>o.rows.length)},showLocaleSwitcher(){return this.showHeader},activeLang(){return uc(this.locale)||{code:this.locale,flag:"🌐",nativeName:this.locale}},effectiveLocale(){const e=(this.language||this.cfg.language||this.cfg.locale||this.cfg.lang||"").trim(),t=this.showLocaleSwitcher?this.locale:"";return(e||t||this.hostLang||"en").split("-")[0].toLowerCase()},uiLocale(){return xs.includes(this.effectiveLocale)?this.effectiveLocale:"en"},uiDir(){return this.uiLocale==="ar"?"rtl":"ltr"},layoutLabels(){const e={};for(const t of["toggleList","openViews","expandList","collapseList","collapse"])e[t]=this.tr(t);return e},effectiveProvider(){const e=String(this.provider||this.cfg.provider||"").trim().toLowerCase();return e==="maplibre"||e==="mapbox"?e:""},activeKey(){const e=this.tabs[this.activeIndex];return e?e.id:""}},mounted(){this.watchWidth(),this.watchHostLang(),this.select(this.initialIndex()),this.loadManifest()},beforeUnmount(){this._langObs&&(this._langObs.disconnect(),this._langObs=null),!(!this._mql||!this._onMedia)&&(this._mql.removeEventListener?this._mql.removeEventListener("change",this._onMedia):this._mql.removeListener&&this._mql.removeListener(this._onMedia),this._mql=null,this._onMedia=null)},watch:{effectiveLocale(e){const t=this.tabs[this.activeIndex];if(!(!t||!t.mounted))try{const o=this._slots&&this._slots[this.activeIndex],s=o&&o.firstElementChild;s&&s.setAttribute&&s.setAttribute("profile-config",JSON.stringify(this.childConfig(t)))}catch{}},tab(e){e&&this.onSelect(e)}},methods:{setSlot(e,t){t&&(this._slots=Object.assign(this._slots||{},{[e]:t}))},tr(e,t){return wo(this.uiLocale,e,t)},t(e,t){return wo(this.uiLocale,e,t)},tabLabel(e){return!e.discovered||hc("tab."+e.id)?wo(this.uiLocale,"tab."+e.id):e.label},tabSub(e){return e.discovered?this.uiLocale==="en"?e.sub:this.tr("experimentalSub"):wo(this.uiLocale,"sub."+e.id)},watchHostLang(){typeof MutationObserver>"u"||typeof document>"u"||(this._langObs=new MutationObserver(()=>{this.hostLang=ki()}),this._langObs.observe(document.documentElement,{attributes:!0,attributeFilter:["lang"]}))},watchWidth(){typeof window>"u"||!window.matchMedia||(this._mql=window.matchMedia("(max-width: 760px)"),this.narrow=this._mql.matches,this._onMedia=e=>{const t=this.narrow;this.narrow=!!e.matches,t!==this.narrow&&this.isBigPictureDisabled(this.activeKey)&&this.select(this.firstVisibleIndex())},this._mql.addEventListener?this._mql.addEventListener("change",this._onMedia):this._mql.addListener&&this._mql.addListener(this._onMedia))},isBigPictureDisabled(e){return e==="dashboard-plus-grid"&&this.narrow},firstVisibleIndex(){let e=-1;for(const t of this.navGroups)for(const o of t.rows){const s=this.tabs.findIndex(n=>n.id===o.key);if(!(s<0)&&(e<0&&(e=s),!o.disabled))return s}return e>=0?e:0},loadManifest(){const e=this.resolve("manifest.json"),t=u=>{try{return new URL(u,location.href).href.replace(/[^/]*$/,"")}catch{return""}},o={url:e,root:t(e)},s={url:this.resolve("doxa-maps-spa/manifest.json"),root:o.root};let n=!1;try{n=new URL(e,location.href).origin!==location.origin}catch{}const i=n?[s,o]:[o,s],a="/public/dx-maps/manifest.json";i.some(u=>u.url===a)||i.push({url:a,root:t(a)});const r=[],l=u=>{if(u>=i.length){this.manifestError="manifest.json not found (tried "+r.join(", ")+")",console.error("[doxa-maps-spa] "+this.manifestError+" — every tab except Big Picture is composed from it, so their panes cannot mount.");return}const{url:d,root:g}=i[u];return r.push(d),fetch(d,{credentials:"omit"}).then(x=>{if(!x||!x.ok)throw new Error(d+" → HTTP "+(x?x.status:"?"));return x.json()}).then(x=>{if(!x)throw new Error(d+" → empty");this.manifestError="",this.manifestBase=g||"",this.applyManifest(x)}).catch(()=>l(u+1))};try{l(0)}catch{}},applyManifest(e){this.runtime=e&&e.runtime&&typeof e.runtime=="object"?e.runtime:{},this.applyPageGlobals();const t=xc(e,Ps),o=this.activeKey,s=[];for(const l of this.tabs){if(l.discovered){s.push(l);continue}const u=t[l.id];u&&(Object.assign(l,u,{resolved:!0}),s.push(l))}const n=new Set(s.map(l=>l.id));for(const l of yc(e))n.has(l.id)||s.push({...l,resolved:!0,mounted:!1,state:"idle",error:""});this.tabs=s;const i=this.requestedTab(),a=i?this.tabs.findIndex(l=>l.id===i):-1,r=this.tabs.findIndex(l=>l.id===o);a>=0&&!this.isBigPictureDisabled(i)&&!this._honouredTab?this.select(a):this.select(r>=0?r:this.firstVisibleIndex()),this._honouredTab=!0},requestedTab(){let e="";try{e=new URLSearchParams(location.search).get("tab")||""}catch{}return String(this.tab||this.cfg.tab||e||"").trim()},initialIndex(){const e=this.requestedTab(),t=e?this.tabs.findIndex(o=>o.id===e):-1;return t>=0&&(this._honouredTab=!0),t>=0&&!this.isBigPictureDisabled(e)?t:this.firstVisibleIndex()},setLocale(e){this.locale=e,this.localeOpen=!1,gc(e)},onSelect(e){if(this.isBigPictureDisabled(e)){this.disabledNotice=this.tr("desktopNotice"),clearTimeout(this._noticeTimer),this._noticeTimer=setTimeout(()=>{this.disabledNotice=""},4e3);return}const t=this.tabs.findIndex(o=>o.id===e);t!==-1&&this.select(t)},resolve(e){const t=String(e);if(/^(https?:)?\/\//.test(t)||t.startsWith("/"))return t;const o=t.replace(/^\.\//,"");return this.manifestBase?this.manifestBase.replace(/\/+$/,"")+"/"+o:this.base?this.base.replace(/\/+$/,"")+"/"+o:"../"+o},select(e){const t=this.activeIndex;if(this.activeIndex=e,t!==e&&t>=0){const s=this.tabs[t];s&&s.heavy&&s.mounted&&this.releaseTab(t,s)}const o=this.tabs[e];o&&((t!==e||!this._announced)&&(this._announced=!0,this.$emit("tab-change",{id:o.id,label:o.label})),o.scriptUrl&&(o.mounted||this.$nextTick(()=>{this.activeIndex===e&&this.mountElement(e)})))},releaseTab(e,t){try{const o=this._slots&&this._slots[e];o&&(o.innerHTML="")}catch{}this._slots&&delete this._slots[e],t.mounted=!1,t.state="idle",t.error=""},childConfig(e){const t={profile:e.profile||e.id,instanceId:e.instance||"dms-"+e.id};this.effectiveLocale&&(t.locale=this.effectiveLocale);const o=this.tk||this.cfg.tk||this.runtime.token;return o&&(t.tk=o),(this.tokenUrl||this.cfg.tokenUrl)&&(t.tokenUrl=this.tokenUrl||this.cfg.tokenUrl),this.effectiveProvider&&(t.provider=this.effectiveProvider),this.base&&(t.treeBase=this.base),this.assetsBase&&(t.assetsBase=this.assetsBase),t.urlSync=!1,t},applyPageGlobals(){if(typeof window>"u")return;const e=(this.apiBaseUrl||this.cfg.apiBaseUrl||this.runtime.apiBaseUrl||"").trim();e&&!window.MAP_APP_API_URL&&(window.MAP_APP_API_URL=e.replace(/\/+$/,""));const t=this.tk||this.cfg.tk||this.runtime.token;t&&!window.MAP_TOKEN&&(window.MAP_TOKEN=t),this.effectiveProvider&&!window.MAP_PROVIDER&&(window.MAP_PROVIDER=this.effectiveProvider)},mountElement(e){const t=this.tabs[e];t.mounted=!0,t.state="loading";const o=this.resolve(t.scriptUrl);wc(o).then(()=>Pc(t.tag)).then(()=>{try{if(t.heavy&&this.activeIndex!==e){t.mounted=!1,t.state="idle";return}const s=this._slots&&this._slots[e];if(!s){t.state="error",t.error="no slot";return}s.innerHTML="";const n=document.createElement(t.tag);n.setAttribute("profile-config",JSON.stringify(this.childConfig(t))),this.base&&n.setAttribute("tree-base",this.base.replace(/\/+$/,"")),n.style.cssText=t.scroll?"display:block;position:static;width:100%;height:auto;":"display:block;position:absolute;inset:0;width:100%;height:100%;",s.appendChild(n),t.state="ready"}catch(s){t.state="error",t.error="mount failed: "+(s&&s.message||String(s))}}).catch(s=>{t.state="error",t.error=s&&s.message||String(s)})}}}),Lc={class:"dms-locale"},Sc=["aria-expanded"],Cc={class:"dms-flag"},Tc={class:"dms-locale-name"},Nc={key:0,class:"dms-locale-menu",role:"listbox"},Rc=["aria-selected"],Ec=["onClick"],Ac={class:"dms-flag"},Oc={class:"dms-locale-name"},Fc={class:"dms-locale-en"},Mc=["hidden"],Ic={key:0,class:"dms-hint"},Dc={key:1,class:"dms-hint err"},Hc={key:2,class:"dms-hint err"},jc={key:0,class:"dms-notice",role:"status"};function Gc(e,t,o,s,n,i){const a=Wa("VerticalTabsLayout");return A(),bo(a,{dir:e.uiDir,lang:e.uiLocale,labels:e.layoutLabels,title:e.heading,"nav-label":e.t("navLabel"),header:e.showHeader,groups:e.navGroups,active:e.activeKey,"onUpdate:active":e.onSelect},za({brand:Pt(()=>[t[1]||(t[1]=T("span",{class:"dms-logo","aria-hidden":"true"},[T("svg",{viewBox:"0 0 24 24",width:"22",height:"22",fill:"none",stroke:"#92b195","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"},[T("circle",{cx:"12",cy:"12",r:"9"}),T("polygon",{points:"12 6 14 12 12 18 10 12",fill:"#92b195",stroke:"none"}),T("polygon",{points:"6 12 12 10 18 12 12 14",fill:"#92b195",opacity:"0.55",stroke:"none"})])],-1))]),meta:Pt(()=>[gt(F(e.t("meta",{n:e.tabs.length})),1)]),default:Pt(()=>[(A(!0),O(ee,null,dt(e.tabs,(r,l)=>Qo((A(),O("section",{key:r.id,class:"dms-pane",hidden:l!==e.activeIndex},[!r.heavy||l===e.activeIndex?(A(),O(ee,{key:0},[T("div",{class:"dms-slot",ref_for:!0,ref:u=>e.setSlot(l,u)},null,512),r.state==="loading"?(A(),O("div",Ic,F(e.tr("loading",{label:e.tabLabel(r)})),1)):r.state==="error"?(A(),O("div",Dc,[gt(F(e.tr("loadFailed",{label:e.tabLabel(r)})),1),t[3]||(t[3]=T("br",null,null,-1)),T("small",null,F(r.error),1)])):r.state==="idle"&&!r.scriptUrl&&e.manifestError?(A(),O("div",Hc,[gt(F(e.tr("loadFailed",{label:e.tabLabel(r)})),1),t[4]||(t[4]=T("br",null,null,-1)),T("small",null,F(e.manifestError),1),t[5]||(t[5]=T("br",null,null,-1)),T("small",null,F(e.tr("manifestHint")),1)])):de("",!0)],64)):de("",!0)],8,Mc)),[[ms,l===e.activeIndex]])),128)),e.disabledNotice?(A(),O("div",jc,F(e.disabledNotice),1)):de("",!0)]),_:2},[e.showLocaleSwitcher?{name:"toolbar",fn:Pt(()=>[T("div",Lc,[T("button",{type:"button",class:"dms-locale-btn","aria-expanded":String(e.localeOpen),"aria-label":"Change language",onClick:t[0]||(t[0]=r=>e.localeOpen=!e.localeOpen)},[T("span",Cc,F(e.activeLang.flag),1),T("span",Tc,F(e.activeLang.nativeName),1),t[2]||(t[2]=T("span",{class:"dms-dots","aria-hidden":"true"},"⋮",-1))],8,Sc),e.localeOpen?(A(),O("ul",Nc,[(A(!0),O(ee,null,dt(e.switcherLangs,r=>(A(),O("li",{key:r.code,role:"option","aria-selected":String(r.code===e.locale)},[T("button",{type:"button",class:Be(["dms-locale-opt",{active:r.code===e.locale}]),onClick:l=>e.setLocale(r.code)},[T("span",Ac,F(r.flag),1),T("span",Oc,F(r.nativeName),1),T("span",Fc,F(r.name),1)],10,Ec)],8,Rc))),128))])):de("",!0)])]),key:"0"}:void 0]),1032,["dir","lang","labels","title","nav-label","header","groups","active","onUpdate:active"])}const Wc=xi(kc,[["render",Gc],["styles",[bc]]]);function Uc(){try{const e=typeof document<"u"&&document.currentScript&&document.currentScript.src||"";return e?e.replace(/[^/]+\/[^/]+$/,"").replace(/\/+$/,"")+"/":""}catch{return""}}const Vc=Uc(),zc=tl(Wc,{configureApp(e){e.provide("dmsTreeBase",Vc)}});typeof customElements<"u"&&!customElements.get("doxa-maps-spa")&&customElements.define("doxa-maps-spa",zc)})(); diff --git a/public/dx-maps/doxa-maps-spa/doxa-maps-spa/app/index.html b/public/dx-maps/doxa-maps-spa/doxa-maps-spa/app/index.html index bf2c27f76..89d3d0b20 100644 --- a/public/dx-maps/doxa-maps-spa/doxa-maps-spa/app/index.html +++ b/public/dx-maps/doxa-maps-spa/doxa-maps-spa/app/index.html @@ -32,7 +32,7 @@ - + - + \n\n" + "script": "\n\n" }, "instances": [ { diff --git a/public/dx-maps/manifest.json b/public/dx-maps/manifest.json index a8213fb51..36d803fe3 100644 --- a/public/dx-maps/manifest.json +++ b/public/dx-maps/manifest.json @@ -301,7 +301,7 @@ "bundle": "doxa-maps-spa", "scriptUrl": "./doxa-maps-spa/doxa-maps-spa.js", "output": "dx-maps/doxa-maps-spa/doxa-maps-spa.js", - "integrity": "sha384-fpwC0zTBhbE2VKKQwhs9q/81s/f0sTm5kVtkwiSA6mUHjNJTzS7go+dGxdSqEx1C", + "integrity": "sha384-ZaUaF0Dx4UBlHI8JhLyifYVUt9vkrjG64kS+DIwF/YcownDDi5uh8zJ5GRqllen5", "elements": [ "doxa-maps-spa" ], @@ -309,6 +309,7 @@ "dashboard-plus-grid/dashboard-plus-grid", "research-map-plus-grid/research-map-plus-grid", "regions-dashboard/regions-mfe", + "gospel-internet/board", "my-upg-100-list/upg-100-mfe", "doxa-simple-map/doxa-simple-map", "cities-internet/connectivity-map", @@ -326,7 +327,7 @@ "scriptUrl": "./doxa-maps-spa/doxa-maps-spa.js", "embed": { "iframe": "", - "script": "\n\n" + "script": "\n\n" }, "instances": [ {