@readium/speech 0.1.0 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +40 -4
- package/build/decorator/createLocator.d.ts +9 -0
- package/build/decorator/index.d.ts +2 -0
- package/build/decorator/setupDecorations.d.ts +15 -0
- package/build/{en-DCQHxNny.js → en-BELFJRDQ.js} +1 -1
- package/build/{en-Gmh32VcD.cjs → en-CbfmLXbR.cjs} +1 -1
- package/build/{es-tgHiWsyf.cjs → es-DW7IPf8I.cjs} +1 -1
- package/build/{es-CDjjngpC.js → es-nAmbEkcR.js} +1 -1
- package/build/index.cjs +43 -20
- package/build/index.d.ts +3 -0
- package/build/index.js +2642 -1288
- package/build/voices/languages.d.ts +3 -3
- package/build/voices/types.d.ts +5 -9
- package/package.json +8 -6
package/build/index.cjs
CHANGED
|
@@ -1,27 +1,50 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const F=e=>{if(!e)return["",void 0];const t=e.replace(/_/g,"-");try{const r=new Intl.Locale(t);return[r.language.toLowerCase(),r.region?.toUpperCase()]}catch{const r=t.split("-");return[r[0].toLowerCase(),r[1]?.toUpperCase()]}},P={ar:{defaultRegion:"SA",availableRegions:["001","AE","AS","BH","DZ","EG","IQ","JO","KW","LB","LY","MA","OM","QA","SA","SY","TN","YE"],testUtterance:"مرحبًا، اسمي {name} وأنا صوت عربي."},bg:{defaultRegion:"BG",availableRegions:["BG"],testUtterance:"Здравейте, казвам се {name} и съм български глас."},bho:{defaultRegion:"IN",availableRegions:["IN"],testUtterance:"नमस्कार, हमार नाम {name} ह आ हम भोजपुरी आवाज हईं"},bn:{defaultRegion:"IN",availableRegions:["BD","IN"],testUtterance:"হ্যালো, আমার নাম {name} এবং আমি একজন বাংলা ভয়েস।"},ca:{defaultRegion:"ES",availableRegions:["ES"],testUtterance:"Hola, em dic {name} i sóc una veu catalana"},cmn:{defaultRegion:"CN",availableRegions:["CN","CTW","TW"],testUtterance:"你好,我的名字是 {name},我是普通话配音。"},cs:{defaultRegion:"CZ",availableRegions:["CZ"],testUtterance:"Dobrý den, jmenuji se {name} a jsem český hlas."},da:{defaultRegion:"DK",availableRegions:["DK"],testUtterance:"Hej, mit navn er {name} og jeg er en dansk stemme."},de:{defaultRegion:"DE",availableRegions:["AT","CH","DE"],testUtterance:"Hallo, mein Name ist {name} und ich bin eine deutsche Stimme."},el:{defaultRegion:"GR",availableRegions:["GR"],testUtterance:"Γεια σας, με λένε {name} και είμαι ελληνική φωνή."},en:{defaultRegion:"US",availableRegions:["AU","CA","GB","HK","IE","IN","KE","NG","NZ","PH","SG","TZ","US","ZA"],testUtterance:"Hello, my name is {name} and I am an English voice."},es:{defaultRegion:"ES",availableRegions:["AR","BO","CL","CO","CR","CU","DO","EC","ES","GQ","GT","HN","MX","NI","PA","PE","PR","PY","SV","US","UY","VE"],testUtterance:"Hola, mi nombre es {name} y soy una voz española."},eu:{defaultRegion:"ES",availableRegions:["ES"],testUtterance:"Kaixo, nire izena {name} da eta euskal ahotsa naiz."},fa:{defaultRegion:"IR",availableRegions:["IR"],testUtterance:"سلام اسم من {name} و صدای فارسی هستم"},fi:{defaultRegion:"FI",availableRegions:["FI"],testUtterance:"Hei, nimeni on {name} ja olen suomalainen ääni."},fr:{defaultRegion:"FR",availableRegions:["BE","CA","CH","FR"],testUtterance:"Bonjour, mon nom est {name} et je suis une voix française."},gl:{defaultRegion:"ES",availableRegions:["ES"],testUtterance:"Ola, chámome {name} e son unha voz galega."},he:{defaultRegion:"IL",availableRegions:["IL"],testUtterance:"שלום, שמי {name} ואני קול עברי."},hi:{defaultRegion:"IN",availableRegions:["IN"],testUtterance:"नमस्कार, मेरा नाम {name} है और मैं एक हिंदी आवाज़ हूँ।"},hr:{defaultRegion:"HR",availableRegions:["HR"],testUtterance:"Pozdrav, ja sam {name} i hrvatski sam glas."},hu:{defaultRegion:"HU",availableRegions:["HU"],testUtterance:"Helló, a nevem {name} és magyar hangú vagyok."},id:{defaultRegion:"ID",availableRegions:["ID"],testUtterance:"Halo, nama saya {name} dan saya suara Indonesia."},it:{defaultRegion:"IT",availableRegions:["IT"],testUtterance:"Ciao, mi chiamo {name} e sono una voce italiana."},ja:{defaultRegion:"JP",availableRegions:["JP"],testUtterance:"こんにちは。私の名前は{name}で、日本語の声を担当しています。"},kk:{defaultRegion:"KZ",availableRegions:["KZ"],testUtterance:"Sälemetsiz be, meniñ atım {name} jäne men qazaq dawısımın."},kn:{defaultRegion:"IN",availableRegions:["IN"],testUtterance:"ಹಲೋ, ನನ್ನ ಹೆಸರು {name} ಮತ್ತು ನಾನು ಕನ್ನಡ ಧ್ವನಿ."},ko:{defaultRegion:"KR",availableRegions:["KR"],testUtterance:"안녕하세요, 저는 {name}이고 한국어 음성입니다."},mr:{defaultRegion:"IN",availableRegions:["IN"],testUtterance:"नमस्कार, माझे नाव {name} आहे आणि मी एक मराठी आवाज आहे."},ms:{defaultRegion:"MY",availableRegions:["MY"],testUtterance:"Hello, nama saya {name} dan saya suara Melayu."},nb:{defaultRegion:"NO",availableRegions:["NO"],testUtterance:"Hei, jeg heter {name} og er en norsk stemme."},nl:{defaultRegion:"NL",availableRegions:["BE","NL"],testUtterance:"Hallo, mijn naam is {name} en ik ben een Nederlandse stem."},pl:{defaultRegion:"PL",availableRegions:["PL"],testUtterance:"Cześć, nazywam się {name} i mam polski głos."},pt:{defaultRegion:"BR",availableRegions:["BR","PT"],testUtterance:"Olá, o meu nome é {name} e sou uma voz portuguesa."},ro:{defaultRegion:"RO",availableRegions:["RO"],testUtterance:"Buna ziua, ma numesc {name} si sunt o voce romaneasca."},ru:{defaultRegion:"RU",availableRegions:["RU"],testUtterance:"Здравствуйте, меня зовут {name} и я русский голос."},sk:{defaultRegion:"SK",availableRegions:["SK"],testUtterance:"Dobrý deň, volám sa {name} a som slovenský hlas."},sl:{defaultRegion:"SI",availableRegions:["SI"],testUtterance:"Pozdravljeni, moje ime je {name} in sem slovenski glas."},sv:{defaultRegion:"SE",availableRegions:["SE"],testUtterance:"Hej, jag heter {name} och jag är en svensk röst."},ta:{defaultRegion:"IN",availableRegions:["IN","LK","MY","SG"],testUtterance:"வணக்கம், என் பெயர் {name} மற்றும் நான் ஒரு தமிழ் குரல்"},te:{defaultRegion:"IN",availableRegions:["IN"],testUtterance:"హలో, నా పేరు {name} మరియు నేను తెలుగు వాణిని."},th:{defaultRegion:"TH",availableRegions:["TH"],testUtterance:"สวัสดีค่ะ ฉันชื่อ {name} และฉันเป็นคนมีเสียงภาษาไทย"},tr:{defaultRegion:"TR",availableRegions:["TR"],testUtterance:"Merhaba, adım {name} ve Türk sesiyim."},uk:{defaultRegion:"UA",availableRegions:["UA"],testUtterance:"Здравствуйте, меня зовут {name} и я украинский голос."},vi:{defaultRegion:"VN",availableRegions:["VN"],testUtterance:"Xin chào, tôi tên là {name} và tôi là giọng nói tiếng Việt."},wuu:{defaultRegion:"CN",availableRegions:["CN"],testUtterance:"你好,我的名字是 {name},我是吴语配音。"},yue:{defaultRegion:"HK",availableRegions:["HK"],testUtterance:"你好,我叫 {name},係越中文聲。"}},ye=new Map,Nt=Object.assign({"../../json/ar.json":()=>Promise.resolve().then(()=>require("./ar-BYWkyZgW.cjs")),"../../json/bg.json":()=>Promise.resolve().then(()=>require("./bg-D7xe9YTl.cjs")),"../../json/bho.json":()=>Promise.resolve().then(()=>require("./bho-UB6aO8oz.cjs")),"../../json/bn.json":()=>Promise.resolve().then(()=>require("./bn-boRZ2pl5.cjs")),"../../json/ca.json":()=>Promise.resolve().then(()=>require("./ca-DkC8kSJ8.cjs")),"../../json/cmn.json":()=>Promise.resolve().then(()=>require("./cmn-BsNLjyA4.cjs")),"../../json/cs.json":()=>Promise.resolve().then(()=>require("./cs-p05r08p7.cjs")),"../../json/da.json":()=>Promise.resolve().then(()=>require("./da-crefCup9.cjs")),"../../json/de.json":()=>Promise.resolve().then(()=>require("./de-xoW-RuhZ.cjs")),"../../json/el.json":()=>Promise.resolve().then(()=>require("./el-C025sTug.cjs")),"../../json/en.json":()=>Promise.resolve().then(()=>require("./en-Gmh32VcD.cjs")),"../../json/es.json":()=>Promise.resolve().then(()=>require("./es-tgHiWsyf.cjs")),"../../json/eu.json":()=>Promise.resolve().then(()=>require("./eu-uq15ZgwW.cjs")),"../../json/fa.json":()=>Promise.resolve().then(()=>require("./fa-CHOnwiFr.cjs")),"../../json/fi.json":()=>Promise.resolve().then(()=>require("./fi-Bxlno6Zi.cjs")),"../../json/fr.json":()=>Promise.resolve().then(()=>require("./fr-yAth5-FC.cjs")),"../../json/gl.json":()=>Promise.resolve().then(()=>require("./gl-BEgzCAO0.cjs")),"../../json/he.json":()=>Promise.resolve().then(()=>require("./he-B-CTHJPL.cjs")),"../../json/hi.json":()=>Promise.resolve().then(()=>require("./hi-C0yUjV1-.cjs")),"../../json/hr.json":()=>Promise.resolve().then(()=>require("./hr-CZvFOcdo.cjs")),"../../json/hu.json":()=>Promise.resolve().then(()=>require("./hu-_2PInItj.cjs")),"../../json/id.json":()=>Promise.resolve().then(()=>require("./id-BROcb7-t.cjs")),"../../json/it.json":()=>Promise.resolve().then(()=>require("./it-Bmc8Ycff.cjs")),"../../json/ja.json":()=>Promise.resolve().then(()=>require("./ja-B8t6WOeg.cjs")),"../../json/kk.json":()=>Promise.resolve().then(()=>require("./kk-DskO1CW8.cjs")),"../../json/kn.json":()=>Promise.resolve().then(()=>require("./kn-Cy3NH6na.cjs")),"../../json/ko.json":()=>Promise.resolve().then(()=>require("./ko-CZdQzppZ.cjs")),"../../json/mr.json":()=>Promise.resolve().then(()=>require("./mr-9hGqBYlV.cjs")),"../../json/ms.json":()=>Promise.resolve().then(()=>require("./ms-DzpBxNFZ.cjs")),"../../json/nb.json":()=>Promise.resolve().then(()=>require("./nb-BQfw9EEH.cjs")),"../../json/nl.json":()=>Promise.resolve().then(()=>require("./nl-CyM0R4Gr.cjs")),"../../json/pl.json":()=>Promise.resolve().then(()=>require("./pl-Da8XOMa1.cjs")),"../../json/pt.json":()=>Promise.resolve().then(()=>require("./pt-tubyvYaM.cjs")),"../../json/ro.json":()=>Promise.resolve().then(()=>require("./ro-C-rXDfuM.cjs")),"../../json/ru.json":()=>Promise.resolve().then(()=>require("./ru-DJocRaDd.cjs")),"../../json/sk.json":()=>Promise.resolve().then(()=>require("./sk-BvpojIXp.cjs")),"../../json/sl.json":()=>Promise.resolve().then(()=>require("./sl-D0X3JKvQ.cjs")),"../../json/sv.json":()=>Promise.resolve().then(()=>require("./sv-4lEgrHda.cjs")),"../../json/ta.json":()=>Promise.resolve().then(()=>require("./ta-CyeVPdIs.cjs")),"../../json/te.json":()=>Promise.resolve().then(()=>require("./te-DqWIZZxL.cjs")),"../../json/th.json":()=>Promise.resolve().then(()=>require("./th-BcoSVZAp.cjs")),"../../json/tr.json":()=>Promise.resolve().then(()=>require("./tr-BuafNhfw.cjs")),"../../json/uk.json":()=>Promise.resolve().then(()=>require("./uk-DkXNxnD9.cjs")),"../../json/vi.json":()=>Promise.resolve().then(()=>require("./vi-Ct2avSE6.cjs")),"../../json/wuu.json":()=>Promise.resolve().then(()=>require("./wuu-DnwGQ6c-.cjs")),"../../json/yue.json":()=>Promise.resolve().then(()=>require("./yue-j9Y48sR-.cjs"))});async function Lt(e){try{const t=e.split("-")[0],r=Nt[`../../json/${t}.json`];if(!r)throw new Error(`No voice data found for language: ${e}`);const i=(await r()).default;return{...i,voices:i.voices.map(It)}}catch(t){return console.warn(`Failed to load voice data for ${e}:`,t),{language:e,defaultRegion:"",testUtterance:"",voices:[]}}}function ze(e){return ye.has(e)||ye.set(e,Lt(e)),ye.get(e)}const It=e=>({...e,gender:e.gender,quality:e.quality?Array.isArray(e.quality)?e.quality.filter(t=>["veryLow","low","normal","high","veryHigh"].includes(t)):[e.quality].filter(t=>["veryLow","low","normal","high","veryHigh"].includes(t)):void 0,localizedName:e.localizedName&&["android","apple"].includes(e.localizedName)?e.localizedName:void 0}),W={cmn:"cmn","cmn-CN":"cmn-CN","cmn-TW":"cmn-TW",zh:"cmn","zh-CN":"cmn-CN","zh-TW":"cmn-TW",yue:"yue","yue-HK":"yue-HK","zh-HK":"yue-HK",wuu:"wuu","wuu-CN":"wuu-CN"},x=e=>{if(!e)return"";let t=e.toLowerCase().replace(/_/g,"-");if(/\w{2,3}-\w{2,3}/.test(t)){const[r,n]=t.split("-");t=`${r.toLowerCase()}-${n.toUpperCase()}`}return W[t]||t},qe=async e=>{if(!e)return[];try{const t=x(e);try{const n=await ze(t);if(n?.voices?.length)return n.voices}catch(n){console.warn(`Failed to load voices for ${t}:`,n)}const[r]=F(t);if(r!==t)try{const n=await ze(r);if(n?.voices?.length)return n.voices}catch(n){console.warn(`Failed to load voices for base language ${r}:`,n)}return[]}catch(t){return console.error(`Error in getVoices for ${e}:`,t),[]}},_e=e=>{if(!e)return"";try{const t=x(e),r=P[t];if(r?.testUtterance)return r.testUtterance;if(t in W){const i=W[t];if(i&&P[i]?.testUtterance)return P[i].testUtterance}const[n]=F(t);return n!==t&&P[n]?.testUtterance?P[n].testUtterance:""}catch(t){return console.error(`Error in getTestUtterance for ${e}:`,t),""}},le=e=>{if(!e)return"";try{const t=x(e),r=P[t];if(r?.defaultRegion)return`${t}-${r.defaultRegion}`;if(t in W){const i=W[t];if(i){const s=P[i];if(s?.defaultRegion)return`${i}-${s.defaultRegion}`}}const[n]=F(t);if(n!==t){const i=P[n];if(i?.defaultRegion)return`${n}-${i.defaultRegion}`}return""}catch(t){return console.error(`Failed to get default region for ${e}:`,t),""}},Me=e=>{if(!e?.length)return[];const t=new Set,r=new Map,n=new Map;for(const[i,s]of e.entries()){if(!s)continue;const u=x(s),[a,c]=F(u);c&&(t.add(c),n.has(c)||n.set(c,i)),r.has(a)||r.set(a,new Set),c&&r.get(a).add(c)}return Array.from(r.entries()).map(([i,s])=>{const u=new Set(P[i]?.availableRegions||[]),a=Array.from(s),c=Array.from(t).filter(g=>u.has(g)&&!a.includes(g)),l=Array.from(new Set([...a,...c])).sort((g,p)=>{const d=n.get(g)??Number.MAX_SAFE_INTEGER,h=n.get(p)??Number.MAX_SAFE_INTEGER;return d-h});if(l.length===0){const g=le(i),[,p]=F(g);p&&l.push(p)}return{baseLang:i,regions:l}})};async function ie(e){const t=new Map;for(const n of e){if(n.source!=="json")continue;const[i]=F(n.language);t.has(i)||t.set(i,[]),t.get(i).push(n)}const r=new Map;for(const[n,i]of t.entries()){const s=new Map,u=await qe(n),a=new Map;u.forEach((c,l)=>{a.set(c.name.toLowerCase(),l),c.altNames?.forEach(g=>{a.set(g.toLowerCase(),l)})});for(const c of i){const l=c.name.toLowerCase(),g=a.get(l);g!==void 0&&s.set(c.name,g)}s.size>0&&r.set(n,s)}return r}const Pt=[{name:"Albert",nativeID:["com.apple.speech.synthesis.voice.Albert"],note:"This novelty voice is part of a pack preloaded by Apple.",os:["macOS","iOS","iPadOS"],preloaded:!0},{name:"Bad News",nativeID:["com.apple.speech.synthesis.voice.BadNews"],note:"This novelty voice is part of a pack preloaded by Apple.",altNames:["Mauvaises nouvelles","Malas noticias","Brutte notizie"],os:["macOS","iOS","iPadOS"],preloaded:!0},{name:"Bahh",nativeID:["com.apple.speech.synthesis.voice.Bahh"],note:"This novelty voice is part of a pack preloaded by Apple.",os:["macOS","iOS","iPadOS"],preloaded:!0},{name:"Bells",nativeID:["com.apple.speech.synthesis.voice.Bells"],note:"This novelty voice is part of a pack preloaded by Apple.",altNames:["Cloches","Campanas","Campane"],os:["macOS","iOS","iPadOS"],preloaded:!0},{name:"Boing",nativeID:["com.apple.speech.synthesis.voice.Boing"],note:"This novelty voice is part of a pack preloaded by Apple.",os:["macOS","iOS","iPadOS"],preloaded:!0},{name:"Bubbles",nativeID:["com.apple.speech.synthesis.voice.Bubbles"],note:"This novelty voice is part of a pack preloaded by Apple.",altNames:["Bulles","Burbujas","Bollicine"],os:["macOS","iOS","iPadOS"],preloaded:!0},{name:"Cellos",nativeID:["com.apple.speech.synthesis.voice.Cellos"],note:"This novelty voice is part of a pack preloaded by Apple.",altNames:["Violoncelles","Violonchelos","Violoncelli"],os:["macOS","iOS","iPadOS"],preloaded:!0},{name:"Good News",nativeID:["com.apple.speech.synthesis.voice.GoodNews"],note:"This novelty voice is part of a pack preloaded by Apple.",altNames:["Bonnes nouvelles","Buenas noticias","Buone notizie"],os:["macOS","iOS","iPadOS"],preloaded:!0},{name:"Jester",nativeID:["com.apple.speech.synthesis.voice.Hysterical"],note:"This novelty voice is part of a pack preloaded by Apple.",altNames:["Bouffon","Bufón","Giullare"],os:["macOS","iOS","iPadOS"],preloaded:!0},{name:"Organ",nativeID:["com.apple.speech.synthesis.voice.Organ"],note:"This novelty voice is part of a pack preloaded by Apple.",altNames:["Orgue","Órgano","Organo"],os:["macOS","iOS","iPadOS"],preloaded:!0},{name:"Superstar",nativeID:["com.apple.speech.synthesis.voice.Princess"],note:"This novelty voice is part of a pack preloaded by Apple.",altNames:["Superestrella"],os:["macOS","iOS","iPadOS"],preloaded:!0},{name:"Trinoids",nativeID:["com.apple.speech.synthesis.voice.Trinoids"],note:"This novelty voice is part of a pack preloaded by Apple.",altNames:["Trinoïdes"],os:["macOS","iOS","iPadOS"],preloaded:!0},{name:"Whisper",nativeID:["com.apple.speech.synthesis.voice.Whisper"],note:"This novelty voice is part of a pack preloaded by Apple.",altNames:["Murmure","Susurro","Sussurro"],os:["macOS","iOS","iPadOS"],preloaded:!0},{name:"Wobble",nativeID:["com.apple.speech.synthesis.voice.Deranged"],note:"This novelty voice is part of a pack preloaded by Apple.",os:["macOS","iOS","iPadOS"],preloaded:!0},{name:"Zarvox",nativeID:["com.apple.speech.synthesis.voice.Zarvox"],note:"This novelty voice is part of a pack preloaded by Apple.",os:["macOS","iOS","iPadOS"],preloaded:!0}],xt={voices:Pt},jt=[{name:"Eddy",localizedName:"apple",note:"Eloquence voices are preloaded by default on Apple devices.",language:"en-US",otherLanguages:["en-GB","de-DE","fr-FR","fr-CA","es-ES","es-MX","fi-FI","it-IT","ja-JP","ko-KR","pt-BR","zh-CN","zh-HK"],os:["macOS","iOS","iPadOS"],preloaded:!0},{name:"Flo",localizedName:"apple",note:"Eloquence voices are preloaded by default on Apple devices.",language:"en-US",otherLanguages:["en-GB","de-DE","fr-FR","fr-CA","es-ES","es-MX","fi-FI","it-IT","ja-JP","ko-KR","pt-BR","zh-CN","zh-HK"],os:["macOS","iOS","iPadOS"],preloaded:!0},{name:"Grandma",localizedName:"apple",note:"Eloquence voices are preloaded by default on Apple devices.",language:"en-US",otherLanguages:["en-GB","de-DE","fr-FR","fr-CA","es-ES","es-MX","fi-FI","it-IT","ja-JP","ko-KR","pt-BR","zh-CN","zh-HK"],os:["macOS","iOS","iPadOS"],preloaded:!0},{name:"Grandpa",localizedName:"apple",note:"Eloquence voices are preloaded by default on Apple devices.",language:"en-US",otherLanguages:["en-GB","de-DE","fr-FR","fr-CA","es-ES","es-MX","fi-FI","it-IT","ja-JP","ko-KR","pt-BR","zh-CN","zh-HK"],os:["macOS","iOS","iPadOS"],preloaded:!0},{name:"Jacques",localizedName:"apple",note:"Eloquence voices are preloaded by default on Apple devices.",language:"en-US",otherLanguages:["en-GB","de-DE","fr-FR","fr-CA","es-ES","es-MX","fi-FI","it-IT","ja-JP","ko-KR","pt-BR","zh-CN","zh-HK"],os:["macOS","iOS","iPadOS"],preloaded:!0},{name:"Reed",localizedName:"apple",note:"Eloquence voices are preloaded by default on Apple devices.",language:"en-US",otherLanguages:["en-GB","de-DE","fr-FR","fr-CA","es-ES","es-MX","fi-FI","it-IT","ja-JP","ko-KR","pt-BR","zh-CN","zh-HK"],os:["macOS","iOS","iPadOS"],preloaded:!0},{name:"Rocko",localizedName:"apple",note:"Eloquence voices are preloaded by default on Apple devices.",language:"en-US",otherLanguages:["en-GB","de-DE","fr-FR","fr-CA","es-ES","es-MX","fi-FI","it-IT","ja-JP","ko-KR","pt-BR","zh-CN","zh-HK"],os:["macOS","iOS","iPadOS"],preloaded:!0},{name:"Sandy",localizedName:"apple",note:"Eloquence voices are preloaded by default on Apple devices.",language:"en-US",otherLanguages:["en-GB","de-DE","fr-FR","fr-CA","es-ES","es-MX","fi-FI","it-IT","ja-JP","ko-KR","pt-BR","zh-CN","zh-HK"],os:["macOS","iOS","iPadOS"],preloaded:!0},{name:"Shelley",localizedName:"apple",note:"Eloquence voices are preloaded by default on Apple devices.",language:"en-US",otherLanguages:["en-GB","de-DE","fr-FR","fr-CA","es-ES","es-MX","fi-FI","it-IT","ja-JP","ko-KR","pt-BR","zh-CN","zh-HK"],os:["macOS","iOS","iPadOS"],preloaded:!0},{name:"Fred",language:"en-US",os:["macOS","iOS","iPadOS"],preloaded:!0},{name:"Junior",language:"en-US",os:["macOS","iOS","iPadOS"],preloaded:!0},{name:"Kathy",language:"en-US",os:["macOS","iOS","iPadOS"],preloaded:!0},{name:"Ralph",language:"en-US",os:["macOS","iOS","iPadOS"],preloaded:!0},{name:"eSpeak Arabic",note:"eSpeak voices are preloaded by default on Chrome OS.",language:"ar",os:["ChromeOS"],preloaded:!0},{name:"eSpeak Bulgarian",note:"eSpeak voices are preloaded by default on Chrome OS.",language:"bg",os:["ChromeOS"],preloaded:!0},{name:"eSpeak Bengali",note:"eSpeak voices are preloaded by default on Chrome OS.",language:"bn",os:["ChromeOS"],preloaded:!0},{name:"eSpeak Catalan",note:"eSpeak voices are preloaded by default on Chrome OS.",language:"ca",os:["ChromeOS"],preloaded:!0},{name:"eSpeak Chinese (Mandarin, latin as English)",note:"eSpeak voices are preloaded by default on Chrome OS.",language:"cmn",os:["ChromeOS"],preloaded:!0},{name:"eSpeak Czech",note:"eSpeak voices are preloaded by default on Chrome OS.",language:"cs",os:["ChromeOS"],preloaded:!0},{name:"eSpeak Danish",note:"eSpeak voices are preloaded by default on Chrome OS.",language:"da",os:["ChromeOS"],preloaded:!0},{name:"eSpeak German",note:"eSpeak voices are preloaded by default on Chrome OS.",language:"de",os:["ChromeOS"],preloaded:!0},{name:"eSpeak Greek",note:"eSpeak voices are preloaded by default on Chrome OS.",language:"el",os:["ChromeOS"],preloaded:!0},{name:"eSpeak Spanish (Spain)",note:"eSpeak voices are preloaded by default on Chrome OS.",language:"es",os:["ChromeOS"],preloaded:!0},{name:"eSpeak Estonian",note:"eSpeak voices are preloaded by default on Chrome OS.",language:"et",os:["ChromeOS"],preloaded:!0},{name:"eSpeak Finnish",note:"eSpeak voices are preloaded by default on Chrome OS.",language:"fi",os:["ChromeOS"],preloaded:!0},{name:"eSpeak Gujarati",note:"eSpeak voices are preloaded by default on Chrome OS.",language:"gu",os:["ChromeOS"],preloaded:!0},{name:"eSpeak Croatian",note:"eSpeak voices are preloaded by default on Chrome OS.",language:"hr",os:["ChromeOS"],preloaded:!0},{name:"eSpeak Hungarian",note:"eSpeak voices are preloaded by default on Chrome OS.",language:"hu",os:["ChromeOS"],preloaded:!0},{name:"eSpeak Indonesian",note:"eSpeak voices are preloaded by default on Chrome OS.",language:"id",os:["ChromeOS"],preloaded:!0},{name:"eSpeak Italian",note:"eSpeak voices are preloaded by default on Chrome OS.",language:"it",os:["ChromeOS"],preloaded:!0},{name:"eSpeak Kannada",note:"eSpeak voices are preloaded by default on Chrome OS.",language:"kn",os:["ChromeOS"],preloaded:!0},{name:"eSpeak Korean",note:"eSpeak voices are preloaded by default on Chrome OS.",language:"ko",os:["ChromeOS"],preloaded:!0},{name:"eSpeak Lithuanian",note:"eSpeak voices are preloaded by default on Chrome OS.",language:"lt",os:["ChromeOS"],preloaded:!0},{name:"eSpeak Latvian",note:"eSpeak voices are preloaded by default on Chrome OS.",language:"lv",os:["ChromeOS"],preloaded:!0},{name:"eSpeak Malayalm",note:"eSpeak voices are preloaded by default on Chrome OS.",language:"ml",os:["ChromeOS"],preloaded:!0},{name:"eSpeak Marathi",note:"eSpeak voices are preloaded by default on Chrome OS.",language:"mr",os:["ChromeOS"],preloaded:!0},{name:"eSpeak Malay",note:"eSpeak voices are preloaded by default on Chrome OS.",language:"ms",os:["ChromeOS"],preloaded:!0},{name:"eSpeak Norwegian Bokmål",note:"eSpeak voices are preloaded by default on Chrome OS.",language:"nb",os:["ChromeOS"],preloaded:!0},{name:"eSpeak Polish",note:"eSpeak voices are preloaded by default on Chrome OS.",language:"pl",os:["ChromeOS"],preloaded:!0},{name:"eSpeak Portuguese (Brazil)",note:"eSpeak voices are preloaded by default on Chrome OS.",language:"pt-br",os:["ChromeOS"],preloaded:!0},{name:"eSpeak Romanian",note:"eSpeak voices are preloaded by default on Chrome OS.",language:"ro",os:["ChromeOS"],preloaded:!0},{name:"eSpeak Russian",note:"eSpeak voices are preloaded by default on Chrome OS.",language:"ru",os:["ChromeOS"],preloaded:!0},{name:"eSpeak Slovak",note:"eSpeak voices are preloaded by default on Chrome OS.",language:"sk",os:["ChromeOS"],preloaded:!0},{name:"eSpeak Slovenian",note:"eSpeak voices are preloaded by default on Chrome OS.",language:"sl",os:["ChromeOS"],preloaded:!0},{name:"eSpeak Serbian",note:"eSpeak voices are preloaded by default on Chrome OS.",language:"sv",os:["ChromeOS"],preloaded:!0},{name:"eSpeak Swedish",note:"eSpeak voices are preloaded by default on Chrome OS.",language:"sv",os:["ChromeOS"],preloaded:!0},{name:"eSpeak Swahili",note:"eSpeak voices are preloaded by default on Chrome OS.",language:"sw",os:["ChromeOS"],preloaded:!0},{name:"eSpeak Tamil",note:"eSpeak voices are preloaded by default on Chrome OS.",language:"ta",os:["ChromeOS"],preloaded:!0},{name:"eSpeak Telugu",note:"eSpeak voices are preloaded by default on Chrome OS.",language:"te",os:["ChromeOS"],preloaded:!0},{name:"eSpeak Turkish",note:"eSpeak voices are preloaded by default on Chrome OS.",language:"tr",os:["ChromeOS"],preloaded:!0},{name:"eSpeak Vietnamese (Northern)",note:"eSpeak voices are preloaded by default on Chrome OS.",language:"vi",os:["ChromeOS"],preloaded:!0}],Ut={voices:jt},Dt=xt,Bt=Ut,Ce=(e,t)=>Dt.voices.some(r=>e.includes(r.name)||t&&r.nativeID?.some(n=>t.includes(n))||r.altNames?.some(n=>e.includes(n))),Ee=(e,t)=>Bt.voices.some(r=>e.includes(r.name))||t==="veryLow",Ge=e=>e?.length?e.filter(t=>!(t.isNovelty||Ce(t.name,t.voiceURI))):[],We=e=>e?.length?e.filter(t=>!Ee(t.name,t.quality)):[],Ft={ar:{normal:"محسن",high:"استثنائي"},ca:{normal:"millorada",high:"prèmium"},"cmn-CN":{normal:"优化音质",high:"高音质"},"cmn-TW":{normal:"增強音質",high:"高音質"},cs:{normal:"vylepšená verze",high:"prémiový"},da:{normal:"forbedret",high:"høj kvalitet"},de:{normal:"erweitert",high:"premium"},el:{normal:"βελτιωμένη",high:"υψηλής ποιότητας"},en:{normal:"Enhanced",high:"Premium"},es:{normal:"mejorada",high:"premium"},fi:{normal:"parannettu",high:"korkealaatuinen"},fr:{normal:"premium",high:"de qualité"},he:{normal:"משופר",high:"פרימיום"},hi:{normal:"बेहतर",high:"प्रीमियम"},hr:{normal:"poboljšani",high:"vrhunski"},hu:{normal:"továbbfejlesztett",high:"prémium"},id:{normal:"Ditingkatkan",high:"Premium"},it:{normal:"ottimizzata",high:"premium"},ja:{normal:"拡張",high:"プレミアム"},ko:{normal:"고품질",high:"프리미엄"},ms:{normal:"Dipertingkat",high:"Premium"},nb:{normal:"forbedret",high:"premium"},nl:{normal:"verbeterd",high:"premium"},pl:{normal:"rozszerzony",high:"premium"},pt:{normal:"melhorada",high:"premium"},ro:{normal:"îmbunătățită",high:"premium"},ru:{normal:"улучшенный",high:"высшее качество"},sk:{normal:"vylepšený",high:"prémiový"},sl:{normal:"izboljšano",high:"prvovrsten"},sv:{normal:"förbättrad",high:"premium"},th:{normal:"คุณภาพสูง",high:"คุณภาพสูง"},tr:{normal:"Geliştirilmiş",high:"Yüksek Kaliteli"},uk:{normal:"вдосконалений",high:"високої якості"},vi:{normal:"Nâng cao",high:"Cao cấp"}},$t={quality:Ft},Ne={apple:$t.quality},Ht=(e,t,r)=>{if(!e)return;const n=Array.isArray(r)?r:r?[r]:[];for(const i of n)if(i&&Ne[i]){const s=Ne[i],u=F(t)[0],a=s[t]||s[u];if(a){const c=e.toLowerCase(),{normal:l,high:g}=a;if(g&&c.includes(g.toLowerCase()))return"high";if(l&&c.includes(l.toLowerCase()))return"normal"}}},Vt=(e,t)=>{const r=Ne[t];if(r)for(const[n,{high:i,normal:s}]of Object.entries(r)){const u=i&&e.some(c=>c.includes(i)),a=s&&e.some(c=>c.includes(s));if(u&&a)return n}},zt={low:{values:["super-compact","compact"],quality:"low"},normal:{values:["enhanced"],quality:"normal"},high:{values:["premium"],quality:"high"}},Je=e=>{if(!e)return;const r=e.toLowerCase().split(/[._-]/);for(const n of Object.values(zt))if(n.values.some(i=>r.includes(i)))return n.quality};function _t(e,t){if(e.name===e.originalName)return e;if(t.name===t.originalName)return t;const r=[e.originalName,...e.altNames||[]],n=[t.originalName,...t.altNames||[]],i=r.findIndex(u=>n.includes(u)),s=n.findIndex(u=>r.includes(u));return i===-1&&s===-1||i!==-1&&(s===-1||i<=s)?e:t}function Mt(e,t){if(!e.altNames&&!t.altNames)return!1;const r=e.originalName,n=t.originalName,i=e.altNames||[],s=t.altNames||[];return s.includes(r)||i.includes(n)?!0:i.filter(a=>s.includes(a)).length>0}class S{static instance;static initializationPromise=null;systemLocale;voices=[];browserVoices=[];isInitialized=!1;constructor(){if(typeof window>"u"||!window.speechSynthesis)throw new Error("Web Speech API is not available in this environment");this.systemLocale=navigator.languages?.[0]?.split("-")[0]||"en"}static async initialize(t){return S.instance?.isInitialized?S.instance:(S.initializationPromise||(S.initializationPromise=(async()=>{try{const r=new S;S.instance=r,r.browserVoices=await r.getBrowserVoices(t?.maxTimeout,t?.interval),r.updateSystemLocale(r.browserVoices);let n=r.browserVoices;return t?.languages&&t.languages.length>0&&(n=r.filterBrowserVoicesByLanguages(r.browserVoices,t.languages)),r.voices=await r.parseToReadiumSpeechVoices(n),r.isInitialized=!0,r}catch(r){throw S.initializationPromise=null,console.error("Failed to initialize WebSpeechVoiceManager:",r),r}})()),S.initializationPromise)}filterBrowserVoicesByLanguages(t,r){if(!r?.length)return t;const n=new Set(r.map(i=>{const s=x(i),[u]=S.extractLangRegionFromBCP47(s);return u}));return t.filter(i=>{if(!i?.lang)return!1;const s=x(i.lang),[u]=S.extractLangRegionFromBCP47(s);return n.has(u)})}static extractLangRegionFromBCP47(t){return F(t)}static getLanguageDisplayName(t,r){try{return new Intl.DisplayNames(r?[r]:[],{type:"language",languageDisplay:"standard"}).of(t)||t.toUpperCase()}catch{return t.toUpperCase()}}cleanVoiceName(t){return t?t.replace(/\s*\([^)]*\)/g,"").replace(/[^\p{L}\p{N}\s-]/gu,"").replace(/\s+/g," ").trim():""}normalizeVoiceName(t){return this.cleanVoiceName(t.toLowerCase())}countVoiceDuplicates(t){const r=new Map;for(const n of t){if(!n?.name||!n?.lang)continue;const i=`${n.lang.toLowerCase()}_${this.normalizeVoiceName(n.name)}`;r.set(i,(r.get(i)||0)+1)}return r}updateSystemLocale(t){if(!t?.length)return;const r=t.map(i=>i.name),n=Vt(r,"apple");n&&(this.systemLocale=n)}inferVoiceQuality(t,r,n){const i=t.voiceURI?Je(t.voiceURI):void 0;if(i)return i;if(r?.nativeID&&Array.isArray(r.nativeID))for(const s of r.nativeID){const u=Je(s);if(u)return u}if(r?.localizedName&&t.voiceURI&&t.lang){const s=Ht(t.voiceURI,this.systemLocale,r.localizedName);if(s)return s}if(r?.quality&&r.quality.length>0){const s=Math.min(n-1,r.quality.length-1),u=r.quality[s];if(u)return u}return null}findMatchingJsonVoice(t,r){return t.find(n=>this.normalizeVoiceName(n.name)===r||n.altNames?.some(i=>this.normalizeVoiceName(i)===r))}removeDuplicates(t){const r=new Map;for(const n of t){const i=`${n.language.toLowerCase()}_${this.normalizeVoiceName(n.name)}`,s=r.get(i);if(!s)r.set(i,n);else if(Mt(n,s)){const u=_t(n,s);r.set(i,u)}else{const u=S.getQualityValue(s.quality);S.getQualityValue(n.quality)>=u&&r.set(i,n)}}return Array.from(r.values())}getTestUtterance(t){if(!t)return"";const r=_e(t);if(r)return r;const[n]=S.extractLangRegionFromBCP47(t);if(n&&n!==t){const i=_e(n);if(i)return i}return""}getVoices(t={}){if(!this.isInitialized)throw new Error("WebSpeechVoiceManager not initialized. Call initialize() first.");return this.filterVoices(t,[...this.voices])}getLanguages(t,r,n){if(!n&&!this.isInitialized)throw new Error("WebSpeechVoiceManager not initialized. Call initialize() first.");const i=n??this.voices,s=r?this.filterVoices(r,i):i,u=[],a=new Set;for(const c of s){const g=x(c.language).split("-")[0];if(!a.has(g)){const p=S.getLanguageDisplayName(g,t),d=s.filter(h=>x(h.language).split("-")[0]===g).length;u.push({code:g,label:p,count:d}),a.add(g)}}return n?u:u.sort((c,l)=>c.label.localeCompare(l.label))}getRegions(t,r,n){if(!n&&!this.isInitialized)throw new Error("WebSpeechVoiceManager not initialized. Call initialize() first.");const i=n??this.voices,s=r?this.filterVoices(r,i):i,u=[],a=new Set,c=new Map;for(const l of s){const[,g]=S.extractLangRegionFromBCP47(l.language);g&&c.set(g,(c.get(g)||0)+1)}for(const l of s){const[,g]=S.extractLangRegionFromBCP47(l.language);if(g&&!a.has(g)){let p=l.language;try{const d=t||navigator.language;p=new Intl.DisplayNames([d],{type:"region"}).of(g)||l.language}catch(d){console.warn(`Failed to get display name for region ${g}`,d)}u.push({code:g,label:p,count:c.get(g)||0}),a.add(g)}}return n?u:u.sort((l,g)=>l.label.localeCompare(g.label))}async getDefaultVoice(t,r){if(!t)return null;const n=Array.isArray(t)?t:[t];let i=r||this.getVoices({languages:n});return i.length?(i=await this.sortVoicesByRegions(n,i),i[0]):null}getBrowserVoices(t=1e4,r=10){const n=()=>window.speechSynthesis?.getVoices()||[];if(!window.speechSynthesis)return Promise.resolve([]);const i=n();return Array.isArray(i)&&i.length?Promise.resolve(i):new Promise((s,u)=>{let a=Math.floor(t/r),c=!1;const l=()=>{if(c)return;c=!0;const g=()=>{if(a<1)return s([]);--a;const p=n();if(Array.isArray(p)&&p.length)return s(p);setTimeout(g,r)};setTimeout(g,r)};window.speechSynthesis.onvoiceschanged!==void 0?window.speechSynthesis.onvoiceschanged=()=>{const g=n();Array.isArray(g)&&g.length?s(g):l()}:l(),setTimeout(()=>s([]),t)})}async parseToReadiumSpeechVoices(t){const r=this.countVoiceDuplicates(t);return await Promise.all(t.filter(i=>i?.name&&i?.lang).map(async i=>{const s=x(i.lang),[u]=S.extractLangRegionFromBCP47(s),a=this.normalizeVoiceName(i.name),c=`${i.lang.toLowerCase()}_${a}`,l=r.get(c)||1;let g=await qe(s);(!g||g.length===0)&&(g=await qe(u));const p=this.findMatchingJsonVoice(g,a),d=this.inferVoiceQuality(i,p,l);return p?{...p,source:"json",originalName:i.name,voiceURI:i.voiceURI,quality:d,isDefault:i.default||!1,offlineAvailability:i.localService||!1,isNovelty:Ce(i.name,i.voiceURI),isLowQuality:Ee(i.name,d)}:{source:"browser",label:this.cleanVoiceName(i.name),name:i.name,originalName:i.name,language:s,voiceURI:i.voiceURI,quality:d,isDefault:i.default||!1,offlineAvailability:i.localService||!1,isNovelty:Ce(i.name,i.voiceURI),isLowQuality:Ee(i.name,d)}}))}convertToSpeechSynthesisVoice(t){if(t)return this.browserVoices.find(r=>r.voiceURI===t.voiceURI||r.name===t.originalName||this.normalizeVoiceName(r.name)===this.normalizeVoiceName(t.name))}filterVoices(t,r){let n=r?[...r]:[...this.voices];const i={excludeNovelty:!0,excludeVeryLowQuality:!0,removeDuplicates:!0,...t};if(i.languages){const s=Array.isArray(i.languages)?i.languages:[i.languages];n=n.filter(u=>s.some(a=>{const c=a.toLowerCase(),l=u.language?.toLowerCase(),g=u.altLanguage?.toLowerCase();if(l===c||g===c)return!0;const[p]=c.split("-");return l&&l.startsWith(p)||g&&g.startsWith(p)}))}if(i.source&&(n=n.filter(s=>s.source===i.source)),i.gender&&(n=n.filter(s=>s.gender===i.gender)),i.quality){const s=Array.isArray(i.quality)?i.quality:[i.quality];n=n.filter(u=>u.quality&&s.includes(u.quality))}return i.offlineOnly&&(n=n.filter(s=>s.offlineAvailability===!0)),i.provider&&(n=n.filter(s=>s.provider?.toLowerCase()===i.provider?.toLowerCase())),i.excludeNovelty&&(n=Ge(n)),i.excludeVeryLowQuality&&(n=We(n)),i.removeDuplicates&&(n=this.removeDuplicates(n)),n}filterOutNoveltyVoices(t){const r=t??this.voices;return Ge(r)}filterOutVeryLowQualityVoices(t){const r=t??this.voices;return We(r)}static getQualityValue(t){return t?{veryLow:1,low:2,normal:3,high:4,veryHigh:5}[t]??0:0}static sortByQuality(t,r,n,i){const s=S.getQualityValue(t.quality),u=S.getQualityValue(r.quality);if(n&&i&&t.source==="json"&&r.source==="json"){const a=n.get(i);if(a){const c=a.get(t.name),l=a.get(r.name);if(c!==void 0&&l!==void 0)return c-l}}return u!==s?u-s:t.name.localeCompare(r.name)}async sortVoicesByQuality(t){const r=t||this.voices;if(!r?.length)return[];const n=await ie(r);return[...r].sort((i,s)=>S.sortByQuality(i,s,n))}static groupVoicesByLanguage(t,r){const n=new Map(r.map(u=>[u.baseLang,u])),i=new Map,s=[];for(const u of t){const[a]=S.extractLangRegionFromBCP47(u.language);n.get(a)?(i.has(a)||i.set(a,[]),i.get(a).push(u)):s.push(u)}return{voicesByLang:i,otherLangVoices:s}}static async sortByDefaultRegion(t,r){const n=await ie(t),i=le(r);t.sort((s,u)=>{const[,a]=S.extractLangRegionFromBCP47(s.language),[,c]=S.extractLangRegionFromBCP47(u.language),l=i&&a===i.split("-")[1],g=i&&c===i.split("-")[1];return l&&!g?-1:!l&&g?1:S.sortByQuality(s,u,n,r)})}static async sortAlphabetically(t){const r=await ie(t);t.sort((n,i)=>{const[s]=S.extractLangRegionFromBCP47(n.language),[u]=S.extractLangRegionFromBCP47(i.language),a=S.getLanguageDisplayName(s).toLowerCase(),c=S.getLanguageDisplayName(u).toLowerCase(),l=a.localeCompare(c);if(l!==0)return l;if(s===u){const g=le(s),[,p]=S.extractLangRegionFromBCP47(n.language),[,d]=S.extractLangRegionFromBCP47(i.language),h=g&&p===g.split("-")[1],b=g&&d===g.split("-")[1];if(h&&!b)return-1;if(!h&&b)return 1;if(p&&d){const O=p.localeCompare(d);if(O!==0)return O}return p&&!d?-1:!p&&d?1:S.sortByQuality(n,i,r,s)}return S.sortByQuality(n,i,r,s)})}async sortVoicesByLanguages(t,r){const n=r||this.voices;if(!n?.length)return[];if(!t?.length){const c=[...n];return await S.sortAlphabetically(c),c}const i=Me(t),{voicesByLang:s,otherLangVoices:u}=S.groupVoicesByLanguage(n,i),a=[];for(const c of i){const l=s.get(c.baseLang);l&&(await S.sortByDefaultRegion(l,c.baseLang),a.push(...l))}return await S.sortAlphabetically(u),a.push(...u),a}static async sortByPreferredRegion(t,r){const n=await ie(t);t.sort((i,s)=>{const[,u]=S.extractLangRegionFromBCP47(i.language),[,a]=S.extractLangRegionFromBCP47(s.language),c=u&&r.regions.includes(u),l=a&&r.regions.includes(a);if(c&&l){const b=r.regions.indexOf(u),O=r.regions.indexOf(a);return b===O?S.sortByQuality(i,s,n,r.baseLang):b-O}if(c)return-1;if(l)return 1;const g=le(r.baseLang),[,p]=S.extractLangRegionFromBCP47(g),d=u===p,h=a===p;if(d&&!h)return-1;if(!d&&h)return 1;if(u&&a){const b=u.localeCompare(a);return b!==0?b:S.sortByQuality(i,s,n,r.baseLang)}return u?-1:a?1:S.sortByQuality(i,s,n,r.baseLang)})}async sortVoicesByRegions(t,r){const n=r||this.voices;if(!n?.length)return[];const i=Me(t||[]),{voicesByLang:s,otherLangVoices:u}=S.groupVoicesByLanguage(n,i),a=[];for(const c of i){const l=s.get(c.baseLang);l&&(await S.sortByPreferredRegion(l,c),a.push(...l))}return await S.sortAlphabetically(u),a.push(...u),a}groupVoices(t,r){const n={},i=r||this.voices;for(const s of i){let u="Unknown";switch(t){case"languages":u=S.extractLangRegionFromBCP47(s.language)[0];break;case"gender":u=s.gender||"unknown";break;case"quality":u=s.quality||"unknown";break;case"region":const[,a]=S.extractLangRegionFromBCP47(s.language);u=a||"unknown";break}n[u]||(n[u]=[]),n[u].push(s)}return n}}const Gt=["webKit","moz","ms","o"],Wt=["boundary","end","error","mark","pause","resume","start"],Jt=e=>`${e.charAt(0).toUpperCase()}${e.slice(1)}`,ee=(e={},t)=>Object.hasOwnProperty.call(e,t)||t in e||!!e[t],Qt=e=>typeof window<"u"&&e in window,Kt=e=>{const t=Jt(e),r=Gt.map(i=>`${i}${t}`),n=[e,t].concat(r).find(Qt);return n&&typeof window<"u"?window[n]:void 0},Zt=()=>{const e={};["speechSynthesis","speechSynthesisUtterance","speechSynthesisVoice","speechSynthesisEvent","speechSynthesisErrorEvent"].forEach(r=>{e[r]=Kt(r)}),e.onvoiceschanged=ee(e.speechSynthesis,"onvoiceschanged"),e.speechSynthesisSpeaking=ee(e.speechSynthesis,"speaking"),e.speechSynthesisPaused=ee(e.speechSynthesis,"paused");const t=e.speechSynthesisUtterance?ee(e.speechSynthesisUtterance,"prototype"):!1;return Wt.forEach(r=>{const n=`on${r}`;e[n]=t&&e.speechSynthesisUtterance?ee(e.speechSynthesisUtterance.prototype,n):!1}),e},Xt=()=>{const t=typeof window<"u"&&(window.navigator||{}).userAgent||"",r=()=>/android/i.test(t),n=()=>/kaios/i.test(t),i=()=>typeof window.InstallTrigger<"u"?!0:/firefox/i.test(t),s=()=>typeof window.GestureEvent<"u"||/safari/i.test(t);return{isAndroid:r(),isFirefox:i()||n(),isSafari:s(),isKaiOS:n()}};function Yt(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var ve,Qe;function er(){if(Qe)return ve;Qe=1,ve=t;function e(n){return n instanceof Buffer?Buffer.from(n):new n.constructor(n.buffer.slice(),n.byteOffset,n.length)}function t(n){if(n=n||{},n.circles)return r(n);const i=new Map;if(i.set(Date,l=>new Date(l)),i.set(Map,(l,g)=>new Map(u(Array.from(l),g))),i.set(Set,(l,g)=>new Set(u(Array.from(l),g))),n.constructorHandlers)for(const l of n.constructorHandlers)i.set(l[0],l[1]);let s=null;return n.proto?c:a;function u(l,g){const p=Object.keys(l),d=new Array(p.length);for(let h=0;h<p.length;h++){const b=p[h],O=l[b];typeof O!="object"||O===null?d[b]=O:O.constructor!==Object&&(s=i.get(O.constructor))?d[b]=s(O,g):ArrayBuffer.isView(O)?d[b]=e(O):d[b]=g(O)}return d}function a(l){if(typeof l!="object"||l===null)return l;if(Array.isArray(l))return u(l,a);if(l.constructor!==Object&&(s=i.get(l.constructor)))return s(l,a);const g={};for(const p in l){if(Object.hasOwnProperty.call(l,p)===!1)continue;const d=l[p];typeof d!="object"||d===null?g[p]=d:d.constructor!==Object&&(s=i.get(d.constructor))?g[p]=s(d,a):ArrayBuffer.isView(d)?g[p]=e(d):g[p]=a(d)}return g}function c(l){if(typeof l!="object"||l===null)return l;if(Array.isArray(l))return u(l,c);if(l.constructor!==Object&&(s=i.get(l.constructor)))return s(l,c);const g={};for(const p in l){const d=l[p];typeof d!="object"||d===null?g[p]=d:d.constructor!==Object&&(s=i.get(d.constructor))?g[p]=s(d,c):ArrayBuffer.isView(d)?g[p]=e(d):g[p]=c(d)}return g}}function r(n){const i=[],s=[],u=new Map;if(u.set(Date,p=>new Date(p)),u.set(Map,(p,d)=>new Map(c(Array.from(p),d))),u.set(Set,(p,d)=>new Set(c(Array.from(p),d))),n.constructorHandlers)for(const p of n.constructorHandlers)u.set(p[0],p[1]);let a=null;return n.proto?g:l;function c(p,d){const h=Object.keys(p),b=new Array(h.length);for(let O=0;O<h.length;O++){const q=h[O],R=p[q];if(typeof R!="object"||R===null)b[q]=R;else if(R.constructor!==Object&&(a=u.get(R.constructor)))b[q]=a(R,d);else if(ArrayBuffer.isView(R))b[q]=e(R);else{const N=i.indexOf(R);N!==-1?b[q]=s[N]:b[q]=d(R)}}return b}function l(p){if(typeof p!="object"||p===null)return p;if(Array.isArray(p))return c(p,l);if(p.constructor!==Object&&(a=u.get(p.constructor)))return a(p,l);const d={};i.push(p),s.push(d);for(const h in p){if(Object.hasOwnProperty.call(p,h)===!1)continue;const b=p[h];if(typeof b!="object"||b===null)d[h]=b;else if(b.constructor!==Object&&(a=u.get(b.constructor)))d[h]=a(b,l);else if(ArrayBuffer.isView(b))d[h]=e(b);else{const O=i.indexOf(b);O!==-1?d[h]=s[O]:d[h]=l(b)}}return i.pop(),s.pop(),d}function g(p){if(typeof p!="object"||p===null)return p;if(Array.isArray(p))return c(p,g);if(p.constructor!==Object&&(a=u.get(p.constructor)))return a(p,g);const d={};i.push(p),s.push(d);for(const h in p){const b=p[h];if(typeof b!="object"||b===null)d[h]=b;else if(b.constructor!==Object&&(a=u.get(b.constructor)))d[h]=a(b,g);else if(ArrayBuffer.isView(b))d[h]=e(b);else{const O=i.indexOf(b);O!==-1?d[h]=s[O]:d[h]=g(b)}}return i.pop(),s.pop(),d}}return ve}var tr=er();const ht=Yt(tr);ht();function Le(e){if(e==null||typeof e!="object")return!1;let t=Object.getPrototypeOf(e);return t!==null&&t!==Object.prototype&&Object.getPrototypeOf(t)!==null?!1:!(Symbol.iterator in e)&&!(Symbol.toStringTag in e)}function M(e){return typeof e=="string"}function rr(e){return Number.isFinite(e)}function _(e){return Number.isSafeInteger(e)&&e>=0}function B(e){return e!=null}function nr(e,t){return Le(e)&&M(t)&&t in e}var ar=typeof globalThis=="object"&&globalThis&&globalThis.Object===Object&&globalThis,sr=typeof self=="object"&&self&&self.Object===Object&&self,xe=ar||sr||Function("return this")(),J=xe.Symbol,dt=Object.prototype,ir=dt.hasOwnProperty,or=dt.toString,te=J?J.toStringTag:void 0;function lr(e){var t=ir.call(e,te),r=e[te];try{e[te]=void 0;var n=!0}catch{}var i=or.call(e);return n&&(t?e[te]=r:delete e[te]),i}var ur=Object.prototype,cr=ur.toString;function gr(e){return cr.call(e)}var pr="[object Null]",hr="[object Undefined]",Ke=J?J.toStringTag:void 0;function ft(e){return e==null?e===void 0?hr:pr:Ke&&Ke in Object(e)?lr(e):gr(e)}function mt(e){return e!=null&&typeof e=="object"}var dr="[object Symbol]";function fr(e){return typeof e=="symbol"||mt(e)&&ft(e)==dr}function mr(e,t){for(var r=-1,n=e==null?0:e.length,i=Array(n);++r<n;)i[r]=t(e[r],r,e);return i}var yr=Array.isArray,Ze=J?J.prototype:void 0,Xe=Ze?Ze.toString:void 0;function je(e){if(typeof e=="string")return e;if(yr(e))return mr(e,je)+"";if(fr(e))return Xe?Xe.call(e):"";var t=e+"";return t=="0"&&1/e==-1/0?"-0":t}var vr=/\s/;function br(e){for(var t=e.length;t--&&vr.test(e.charAt(t)););return t}var Sr=/^\s+/;function wr(e){return e&&e.slice(0,br(e)+1).replace(Sr,"")}function yt(e){var t=typeof e;return e!=null&&(t=="object"||t=="function")}function vt(e){return e}var Or="[object AsyncFunction]",Ar="[object Function]",kr="[object GeneratorFunction]",Tr="[object Proxy]";function bt(e){if(!yt(e))return!1;var t=ft(e);return t==Ar||t==kr||t==Or||t==Tr}var be=xe["__core-js_shared__"],Ye=(function(){var e=/[^.]+$/.exec(be&&be.keys&&be.keys.IE_PROTO||"");return e?"Symbol(src)_1."+e:""})();function Rr(e){return!!Ye&&Ye in e}var qr=Function.prototype,Cr=qr.toString;function Er(e){if(e!=null){try{return Cr.call(e)}catch{}try{return e+""}catch{}}return""}var Nr=/[\\^$.*+?()[\]{}|]/g,Lr=/^\[object .+?Constructor\]$/,Ir=Function.prototype,Pr=Object.prototype,xr=Ir.toString,jr=Pr.hasOwnProperty,Ur=RegExp("^"+xr.call(jr).replace(Nr,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function Dr(e){if(!yt(e)||Rr(e))return!1;var t=bt(e)?Ur:Lr;return t.test(Er(e))}function Br(e,t){return e?.[t]}function Ue(e,t){var r=Br(e,t);return Dr(r)?r:void 0}function Fr(e,t,r){switch(r.length){case 0:return e.call(t);case 1:return e.call(t,r[0]);case 2:return e.call(t,r[0],r[1]);case 3:return e.call(t,r[0],r[1],r[2])}return e.apply(t,r)}var $r=800,Hr=16,Vr=Date.now;function zr(e){var t=0,r=0;return function(){var n=Vr(),i=Hr-(n-r);if(r=n,i>0){if(++t>=$r)return arguments[0]}else t=0;return e.apply(void 0,arguments)}}function _r(e){return function(){return e}}var et=(function(){try{var e=Ue(Object,"defineProperty");return e({},"",{}),e}catch{}})(),Mr=et?function(e,t){return et(e,"toString",{configurable:!0,enumerable:!1,value:_r(t),writable:!0})}:vt,Gr=zr(Mr);function Wr(e,t,r,n){for(var i=e.length,s=r+-1;++s<i;)if(t(e[s],s,e))return s;return-1}function Jr(e){return e!==e}function Qr(e,t,r){for(var n=r-1,i=e.length;++n<i;)if(e[n]===t)return n;return-1}function De(e,t,r){return t===t?Qr(e,t,r):Wr(e,Jr,r)}function Kr(e,t){var r=e==null?0:e.length;return!!r&&De(e,t,0)>-1}function Zr(e,t){return e===t||e!==e&&t!==t}var tt=Math.max;function Xr(e,t,r){return t=tt(t===void 0?e.length-1:t,0),function(){for(var n=arguments,i=-1,s=tt(n.length-t,0),u=Array(s);++i<s;)u[i]=n[t+i];i=-1;for(var a=Array(t+1);++i<t;)a[i]=n[i];return a[t]=r(u),Fr(e,this,a)}}function Yr(e,t){return Gr(Xr(e,t,vt),e+"")}var en=9007199254740991;function tn(e){return typeof e=="number"&&e>-1&&e%1==0&&e<=en}function rn(e){return e!=null&&tn(e.length)&&!bt(e)}var ne=Ue(Object,"create");function nn(){this.__data__=ne?ne(null):{},this.size=0}function an(e){var t=this.has(e)&&delete this.__data__[e];return this.size-=t?1:0,t}var sn="__lodash_hash_undefined__",on=Object.prototype,ln=on.hasOwnProperty;function un(e){var t=this.__data__;if(ne){var r=t[e];return r===sn?void 0:r}return ln.call(t,e)?t[e]:void 0}var cn=Object.prototype,gn=cn.hasOwnProperty;function pn(e){var t=this.__data__;return ne?t[e]!==void 0:gn.call(t,e)}var hn="__lodash_hash_undefined__";function dn(e,t){var r=this.__data__;return this.size+=this.has(e)?0:1,r[e]=ne&&t===void 0?hn:t,this}function H(e){var t=-1,r=e==null?0:e.length;for(this.clear();++t<r;){var n=e[t];this.set(n[0],n[1])}}H.prototype.clear=nn;H.prototype.delete=an;H.prototype.get=un;H.prototype.has=pn;H.prototype.set=dn;function fn(){this.__data__=[],this.size=0}function pe(e,t){for(var r=e.length;r--;)if(Zr(e[r][0],t))return r;return-1}var mn=Array.prototype,yn=mn.splice;function vn(e){var t=this.__data__,r=pe(t,e);if(r<0)return!1;var n=t.length-1;return r==n?t.pop():yn.call(t,r,1),--this.size,!0}function bn(e){var t=this.__data__,r=pe(t,e);return r<0?void 0:t[r][1]}function Sn(e){return pe(this.__data__,e)>-1}function wn(e,t){var r=this.__data__,n=pe(r,e);return n<0?(++this.size,r.push([e,t])):r[n][1]=t,this}function Z(e){var t=-1,r=e==null?0:e.length;for(this.clear();++t<r;){var n=e[t];this.set(n[0],n[1])}}Z.prototype.clear=fn;Z.prototype.delete=vn;Z.prototype.get=bn;Z.prototype.has=Sn;Z.prototype.set=wn;var On=Ue(xe,"Map");function An(){this.size=0,this.__data__={hash:new H,map:new(On||Z),string:new H}}function kn(e){var t=typeof e;return t=="string"||t=="number"||t=="symbol"||t=="boolean"?e!=="__proto__":e===null}function he(e,t){var r=e.__data__;return kn(t)?r[typeof t=="string"?"string":"hash"]:r.map}function Tn(e){var t=he(this,e).delete(e);return this.size-=t?1:0,t}function Rn(e){return he(this,e).get(e)}function qn(e){return he(this,e).has(e)}function Cn(e,t){var r=he(this,e),n=r.size;return r.set(e,t),this.size+=r.size==n?0:1,this}function X(e){var t=-1,r=e==null?0:e.length;for(this.clear();++t<r;){var n=e[t];this.set(n[0],n[1])}}X.prototype.clear=An;X.prototype.delete=Tn;X.prototype.get=Rn;X.prototype.has=qn;X.prototype.set=Cn;function En(e){return e==null?"":je(e)}function Nn(e,t,r){var n=-1,i=e.length;t<0&&(t=-t>i?0:i+t),r=r>i?i:r,r<0&&(r+=i),i=t>r?0:r-t>>>0,t>>>=0;for(var s=Array(i);++n<i;)s[n]=e[n+t];return s}function Ln(e,t,r){var n=e.length;return r=r===void 0?n:r,!t&&r>=n?e:Nn(e,t,r)}var In="\\ud800-\\udfff",Pn="\\u0300-\\u036f",xn="\\ufe20-\\ufe2f",jn="\\u20d0-\\u20ff",Un=Pn+xn+jn,Dn="\\ufe0e\\ufe0f",Bn="\\u200d",Fn=RegExp("["+Bn+In+Un+Dn+"]");function $n(e){return Fn.test(e)}function Hn(e){return e.split("")}var St="\\ud800-\\udfff",Vn="\\u0300-\\u036f",zn="\\ufe20-\\ufe2f",_n="\\u20d0-\\u20ff",Mn=Vn+zn+_n,Gn="\\ufe0e\\ufe0f",Wn="["+St+"]",Ie="["+Mn+"]",Pe="\\ud83c[\\udffb-\\udfff]",Jn="(?:"+Ie+"|"+Pe+")",wt="[^"+St+"]",Ot="(?:\\ud83c[\\udde6-\\uddff]){2}",At="[\\ud800-\\udbff][\\udc00-\\udfff]",Qn="\\u200d",kt=Jn+"?",Tt="["+Gn+"]?",Kn="(?:"+Qn+"(?:"+[wt,Ot,At].join("|")+")"+Tt+kt+")*",Zn=Tt+kt+Kn,Xn="(?:"+[wt+Ie+"?",Ie,Ot,At,Wn].join("|")+")",Yn=RegExp(Pe+"(?="+Pe+")|"+Xn+Zn,"g");function ea(e){return e.match(Yn)||[]}function rt(e){return $n(e)?ea(e):Hn(e)}var ta="__lodash_hash_undefined__";function ra(e){return this.__data__.set(e,ta),this}function na(e){return this.__data__.has(e)}function ue(e){var t=-1,r=e==null?0:e.length;for(this.__data__=new X;++t<r;)this.add(e[t])}ue.prototype.add=ue.prototype.push=ra;ue.prototype.has=na;function aa(e,t){return e.has(t)}function sa(e){return mt(e)&&rn(e)}var ia=200;function oa(e,t,r,n){var i=-1,s=Kr,u=!0,a=e.length,c=[],l=t.length;if(!a)return c;t.length>=ia&&(s=aa,u=!1,t=new ue(t));e:for(;++i<a;){var g=e[i],p=g;if(g=g!==0?g:0,u&&p===p){for(var d=l;d--;)if(t[d]===p)continue e;c.push(g)}else s(t,p,n)||c.push(g)}return c}function la(e,t){for(var r=e.length;r--&&De(t,e[r],0)>-1;);return r}function ua(e,t){for(var r=-1,n=e.length;++r<n&&De(t,e[r],0)>-1;);return r}function nt(e,t,r){if(e=En(e),e&&t===void 0)return wr(e);if(!e||!(t=je(t)))return e;var n=rt(e),i=rt(t),s=ua(n,i),u=la(n,i)+1;return Ln(n,s,u).join("")}var ca=Yr(function(e,t){return sa(e)?oa(e,t):[]}),G=function(){return G=Object.assign||function(e){for(var t,r=1,n=arguments.length;r<n;r++){t=arguments[r];for(var i in t)Object.prototype.hasOwnProperty.call(t,i)&&(e[i]=t[i])}return e},G.apply(this,arguments)},ga="~",pa="~~";function Be(e,t){for(var r={},n={},i=e.split(pa),s=!1,u=0;i.length>u;u++){for(var a=i[u].split(ga),c=0;c<a.length;c+=2){var l=a[c],g=a[c+1],p="&"+l+";";r[p]=g,s&&(r["&"+l]=g),n[g]=p}s=!0}return t?{entities:G(G({},r),t.entities),characters:G(G({},n),t.characters)}:{entities:r,characters:n}}var Se={xml:/&(?:#\d+|#[xX][\da-fA-F]+|[0-9a-zA-Z]+);?/g,html4:/∉|&(?:nbsp|iexcl|cent|pound|curren|yen|brvbar|sect|uml|copy|ordf|laquo|not|shy|reg|macr|deg|plusmn|sup2|sup3|acute|micro|para|middot|cedil|sup1|ordm|raquo|frac14|frac12|frac34|iquest|Agrave|Aacute|Acirc|Atilde|Auml|Aring|AElig|Ccedil|Egrave|Eacute|Ecirc|Euml|Igrave|Iacute|Icirc|Iuml|ETH|Ntilde|Ograve|Oacute|Ocirc|Otilde|Ouml|times|Oslash|Ugrave|Uacute|Ucirc|Uuml|Yacute|THORN|szlig|agrave|aacute|acirc|atilde|auml|aring|aelig|ccedil|egrave|eacute|ecirc|euml|igrave|iacute|icirc|iuml|eth|ntilde|ograve|oacute|ocirc|otilde|ouml|divide|oslash|ugrave|uacute|ucirc|uuml|yacute|thorn|yuml|quot|amp|lt|gt|#\d+|#[xX][\da-fA-F]+|[0-9a-zA-Z]+);?/g,html5:/·|℗|⋇|⪧|⩺|⋗|⦕|⩼|⪆|⥸|⋗|⋛|⪌|≷|≳|⪦|⩹|⋖|⋋|⋉|⥶|⩻|⦖|◃|⊴|◂|∉|⋹̸|⋵̸|∉|⋷|⋶|∌|∌|⋾|⋽|∥|⊠|⨱|⨰|&(?:AElig|AMP|Aacute|Acirc|Agrave|Aring|Atilde|Auml|COPY|Ccedil|ETH|Eacute|Ecirc|Egrave|Euml|GT|Iacute|Icirc|Igrave|Iuml|LT|Ntilde|Oacute|Ocirc|Ograve|Oslash|Otilde|Ouml|QUOT|REG|THORN|Uacute|Ucirc|Ugrave|Uuml|Yacute|aacute|acirc|acute|aelig|agrave|amp|aring|atilde|auml|brvbar|ccedil|cedil|cent|copy|curren|deg|divide|eacute|ecirc|egrave|eth|euml|frac12|frac14|frac34|gt|iacute|icirc|iexcl|igrave|iquest|iuml|laquo|lt|macr|micro|middot|nbsp|not|ntilde|oacute|ocirc|ograve|ordf|ordm|oslash|otilde|ouml|para|plusmn|pound|quot|raquo|reg|sect|shy|sup1|sup2|sup3|szlig|thorn|times|uacute|ucirc|ugrave|uml|uuml|yacute|yen|yuml|#\d+|#[xX][\da-fA-F]+|[0-9a-zA-Z]+);?/g},Q={};Q.xml=Be(`lt~<~gt~>~quot~"~apos~'~amp~&`);Q.html4=Be(`apos~'~OElig~Œ~oelig~œ~Scaron~Š~scaron~š~Yuml~Ÿ~circ~ˆ~tilde~˜~ensp~ ~emsp~ ~thinsp~ ~zwnj~~zwj~~lrm~~rlm~~ndash~–~mdash~—~lsquo~‘~rsquo~’~sbquo~‚~ldquo~“~rdquo~”~bdquo~„~dagger~†~Dagger~‡~permil~‰~lsaquo~‹~rsaquo~›~euro~€~fnof~ƒ~Alpha~Α~Beta~Β~Gamma~Γ~Delta~Δ~Epsilon~Ε~Zeta~Ζ~Eta~Η~Theta~Θ~Iota~Ι~Kappa~Κ~Lambda~Λ~Mu~Μ~Nu~Ν~Xi~Ξ~Omicron~Ο~Pi~Π~Rho~Ρ~Sigma~Σ~Tau~Τ~Upsilon~Υ~Phi~Φ~Chi~Χ~Psi~Ψ~Omega~Ω~alpha~α~beta~β~gamma~γ~delta~δ~epsilon~ε~zeta~ζ~eta~η~theta~θ~iota~ι~kappa~κ~lambda~λ~mu~μ~nu~ν~xi~ξ~omicron~ο~pi~π~rho~ρ~sigmaf~ς~sigma~σ~tau~τ~upsilon~υ~phi~φ~chi~χ~psi~ψ~omega~ω~thetasym~ϑ~upsih~ϒ~piv~ϖ~bull~•~hellip~…~prime~′~Prime~″~oline~‾~frasl~⁄~weierp~℘~image~ℑ~real~ℜ~trade~™~alefsym~ℵ~larr~←~uarr~↑~rarr~→~darr~↓~harr~↔~crarr~↵~lArr~⇐~uArr~⇑~rArr~⇒~dArr~⇓~hArr~⇔~forall~∀~part~∂~exist~∃~empty~∅~nabla~∇~isin~∈~notin~∉~ni~∋~prod~∏~sum~∑~minus~−~lowast~∗~radic~√~prop~∝~infin~∞~ang~∠~and~∧~or~∨~cap~∩~cup~∪~int~∫~there4~∴~sim~∼~cong~≅~asymp~≈~ne~≠~equiv~≡~le~≤~ge~≥~sub~⊂~sup~⊃~nsub~⊄~sube~⊆~supe~⊇~oplus~⊕~otimes~⊗~perp~⊥~sdot~⋅~lceil~⌈~rceil~⌉~lfloor~⌊~rfloor~⌋~lang~〈~rang~〉~loz~◊~spades~♠~clubs~♣~hearts~♥~diams~♦~~nbsp~ ~iexcl~¡~cent~¢~pound~£~curren~¤~yen~¥~brvbar~¦~sect~§~uml~¨~copy~©~ordf~ª~laquo~«~not~¬~shy~~reg~®~macr~¯~deg~°~plusmn~±~sup2~²~sup3~³~acute~´~micro~µ~para~¶~middot~·~cedil~¸~sup1~¹~ordm~º~raquo~»~frac14~¼~frac12~½~frac34~¾~iquest~¿~Agrave~À~Aacute~Á~Acirc~Â~Atilde~Ã~Auml~Ä~Aring~Å~AElig~Æ~Ccedil~Ç~Egrave~È~Eacute~É~Ecirc~Ê~Euml~Ë~Igrave~Ì~Iacute~Í~Icirc~Î~Iuml~Ï~ETH~Ð~Ntilde~Ñ~Ograve~Ò~Oacute~Ó~Ocirc~Ô~Otilde~Õ~Ouml~Ö~times~×~Oslash~Ø~Ugrave~Ù~Uacute~Ú~Ucirc~Û~Uuml~Ü~Yacute~Ý~THORN~Þ~szlig~ß~agrave~à~aacute~á~acirc~â~atilde~ã~auml~ä~aring~å~aelig~æ~ccedil~ç~egrave~è~eacute~é~ecirc~ê~euml~ë~igrave~ì~iacute~í~icirc~î~iuml~ï~eth~ð~ntilde~ñ~ograve~ò~oacute~ó~ocirc~ô~otilde~õ~ouml~ö~divide~÷~oslash~ø~ugrave~ù~uacute~ú~ucirc~û~uuml~ü~yacute~ý~thorn~þ~yuml~ÿ~quot~"~amp~&~lt~<~gt~>`);Q.html5=Be('Abreve~Ă~Acy~А~Afr~𝔄~Amacr~Ā~And~⩓~Aogon~Ą~Aopf~𝔸~ApplyFunction~~Ascr~𝒜~Assign~≔~Backslash~∖~Barv~⫧~Barwed~⌆~Bcy~Б~Because~∵~Bernoullis~ℬ~Bfr~𝔅~Bopf~𝔹~Breve~˘~Bscr~ℬ~Bumpeq~≎~CHcy~Ч~Cacute~Ć~Cap~⋒~CapitalDifferentialD~ⅅ~Cayleys~ℭ~Ccaron~Č~Ccirc~Ĉ~Cconint~∰~Cdot~Ċ~Cedilla~¸~CenterDot~·~Cfr~ℭ~CircleDot~⊙~CircleMinus~⊖~CirclePlus~⊕~CircleTimes~⊗~ClockwiseContourIntegral~∲~CloseCurlyDoubleQuote~”~CloseCurlyQuote~’~Colon~∷~Colone~⩴~Congruent~≡~Conint~∯~ContourIntegral~∮~Copf~ℂ~Coproduct~∐~CounterClockwiseContourIntegral~∳~Cross~⨯~Cscr~𝒞~Cup~⋓~CupCap~≍~DD~ⅅ~DDotrahd~⤑~DJcy~Ђ~DScy~Ѕ~DZcy~Џ~Darr~↡~Dashv~⫤~Dcaron~Ď~Dcy~Д~Del~∇~Dfr~𝔇~DiacriticalAcute~´~DiacriticalDot~˙~DiacriticalDoubleAcute~˝~DiacriticalGrave~`~DiacriticalTilde~˜~Diamond~⋄~DifferentialD~ⅆ~Dopf~𝔻~Dot~¨~DotDot~⃜~DotEqual~≐~DoubleContourIntegral~∯~DoubleDot~¨~DoubleDownArrow~⇓~DoubleLeftArrow~⇐~DoubleLeftRightArrow~⇔~DoubleLeftTee~⫤~DoubleLongLeftArrow~⟸~DoubleLongLeftRightArrow~⟺~DoubleLongRightArrow~⟹~DoubleRightArrow~⇒~DoubleRightTee~⊨~DoubleUpArrow~⇑~DoubleUpDownArrow~⇕~DoubleVerticalBar~∥~DownArrow~↓~DownArrowBar~⤓~DownArrowUpArrow~⇵~DownBreve~̑~DownLeftRightVector~⥐~DownLeftTeeVector~⥞~DownLeftVector~↽~DownLeftVectorBar~⥖~DownRightTeeVector~⥟~DownRightVector~⇁~DownRightVectorBar~⥗~DownTee~⊤~DownTeeArrow~↧~Downarrow~⇓~Dscr~𝒟~Dstrok~Đ~ENG~Ŋ~Ecaron~Ě~Ecy~Э~Edot~Ė~Efr~𝔈~Element~∈~Emacr~Ē~EmptySmallSquare~◻~EmptyVerySmallSquare~▫~Eogon~Ę~Eopf~𝔼~Equal~⩵~EqualTilde~≂~Equilibrium~⇌~Escr~ℰ~Esim~⩳~Exists~∃~ExponentialE~ⅇ~Fcy~Ф~Ffr~𝔉~FilledSmallSquare~◼~FilledVerySmallSquare~▪~Fopf~𝔽~ForAll~∀~Fouriertrf~ℱ~Fscr~ℱ~GJcy~Ѓ~Gammad~Ϝ~Gbreve~Ğ~Gcedil~Ģ~Gcirc~Ĝ~Gcy~Г~Gdot~Ġ~Gfr~𝔊~Gg~⋙~Gopf~𝔾~GreaterEqual~≥~GreaterEqualLess~⋛~GreaterFullEqual~≧~GreaterGreater~⪢~GreaterLess~≷~GreaterSlantEqual~⩾~GreaterTilde~≳~Gscr~𝒢~Gt~≫~HARDcy~Ъ~Hacek~ˇ~Hat~^~Hcirc~Ĥ~Hfr~ℌ~HilbertSpace~ℋ~Hopf~ℍ~HorizontalLine~─~Hscr~ℋ~Hstrok~Ħ~HumpDownHump~≎~HumpEqual~≏~IEcy~Е~IJlig~IJ~IOcy~Ё~Icy~И~Idot~İ~Ifr~ℑ~Im~ℑ~Imacr~Ī~ImaginaryI~ⅈ~Implies~⇒~Int~∬~Integral~∫~Intersection~⋂~InvisibleComma~~InvisibleTimes~~Iogon~Į~Iopf~𝕀~Iscr~ℐ~Itilde~Ĩ~Iukcy~І~Jcirc~Ĵ~Jcy~Й~Jfr~𝔍~Jopf~𝕁~Jscr~𝒥~Jsercy~Ј~Jukcy~Є~KHcy~Х~KJcy~Ќ~Kcedil~Ķ~Kcy~К~Kfr~𝔎~Kopf~𝕂~Kscr~𝒦~LJcy~Љ~Lacute~Ĺ~Lang~⟪~Laplacetrf~ℒ~Larr~↞~Lcaron~Ľ~Lcedil~Ļ~Lcy~Л~LeftAngleBracket~⟨~LeftArrow~←~LeftArrowBar~⇤~LeftArrowRightArrow~⇆~LeftCeiling~⌈~LeftDoubleBracket~⟦~LeftDownTeeVector~⥡~LeftDownVector~⇃~LeftDownVectorBar~⥙~LeftFloor~⌊~LeftRightArrow~↔~LeftRightVector~⥎~LeftTee~⊣~LeftTeeArrow~↤~LeftTeeVector~⥚~LeftTriangle~⊲~LeftTriangleBar~⧏~LeftTriangleEqual~⊴~LeftUpDownVector~⥑~LeftUpTeeVector~⥠~LeftUpVector~↿~LeftUpVectorBar~⥘~LeftVector~↼~LeftVectorBar~⥒~Leftarrow~⇐~Leftrightarrow~⇔~LessEqualGreater~⋚~LessFullEqual~≦~LessGreater~≶~LessLess~⪡~LessSlantEqual~⩽~LessTilde~≲~Lfr~𝔏~Ll~⋘~Lleftarrow~⇚~Lmidot~Ŀ~LongLeftArrow~⟵~LongLeftRightArrow~⟷~LongRightArrow~⟶~Longleftarrow~⟸~Longleftrightarrow~⟺~Longrightarrow~⟹~Lopf~𝕃~LowerLeftArrow~↙~LowerRightArrow~↘~Lscr~ℒ~Lsh~↰~Lstrok~Ł~Lt~≪~Map~⤅~Mcy~М~MediumSpace~ ~Mellintrf~ℳ~Mfr~𝔐~MinusPlus~∓~Mopf~𝕄~Mscr~ℳ~NJcy~Њ~Nacute~Ń~Ncaron~Ň~Ncedil~Ņ~Ncy~Н~NegativeMediumSpace~~NegativeThickSpace~~NegativeThinSpace~~NegativeVeryThinSpace~~NestedGreaterGreater~≫~NestedLessLess~≪~NewLine~\n~Nfr~𝔑~NoBreak~~NonBreakingSpace~ ~Nopf~ℕ~Not~⫬~NotCongruent~≢~NotCupCap~≭~NotDoubleVerticalBar~∦~NotElement~∉~NotEqual~≠~NotEqualTilde~≂̸~NotExists~∄~NotGreater~≯~NotGreaterEqual~≱~NotGreaterFullEqual~≧̸~NotGreaterGreater~≫̸~NotGreaterLess~≹~NotGreaterSlantEqual~⩾̸~NotGreaterTilde~≵~NotHumpDownHump~≎̸~NotHumpEqual~≏̸~NotLeftTriangle~⋪~NotLeftTriangleBar~⧏̸~NotLeftTriangleEqual~⋬~NotLess~≮~NotLessEqual~≰~NotLessGreater~≸~NotLessLess~≪̸~NotLessSlantEqual~⩽̸~NotLessTilde~≴~NotNestedGreaterGreater~⪢̸~NotNestedLessLess~⪡̸~NotPrecedes~⊀~NotPrecedesEqual~⪯̸~NotPrecedesSlantEqual~⋠~NotReverseElement~∌~NotRightTriangle~⋫~NotRightTriangleBar~⧐̸~NotRightTriangleEqual~⋭~NotSquareSubset~⊏̸~NotSquareSubsetEqual~⋢~NotSquareSuperset~⊐̸~NotSquareSupersetEqual~⋣~NotSubset~⊂⃒~NotSubsetEqual~⊈~NotSucceeds~⊁~NotSucceedsEqual~⪰̸~NotSucceedsSlantEqual~⋡~NotSucceedsTilde~≿̸~NotSuperset~⊃⃒~NotSupersetEqual~⊉~NotTilde~≁~NotTildeEqual~≄~NotTildeFullEqual~≇~NotTildeTilde~≉~NotVerticalBar~∤~Nscr~𝒩~Ocy~О~Odblac~Ő~Ofr~𝔒~Omacr~Ō~Oopf~𝕆~OpenCurlyDoubleQuote~“~OpenCurlyQuote~‘~Or~⩔~Oscr~𝒪~Otimes~⨷~OverBar~‾~OverBrace~⏞~OverBracket~⎴~OverParenthesis~⏜~PartialD~∂~Pcy~П~Pfr~𝔓~PlusMinus~±~Poincareplane~ℌ~Popf~ℙ~Pr~⪻~Precedes~≺~PrecedesEqual~⪯~PrecedesSlantEqual~≼~PrecedesTilde~≾~Product~∏~Proportion~∷~Proportional~∝~Pscr~𝒫~Qfr~𝔔~Qopf~ℚ~Qscr~𝒬~RBarr~⤐~Racute~Ŕ~Rang~⟫~Rarr~↠~Rarrtl~⤖~Rcaron~Ř~Rcedil~Ŗ~Rcy~Р~Re~ℜ~ReverseElement~∋~ReverseEquilibrium~⇋~ReverseUpEquilibrium~⥯~Rfr~ℜ~RightAngleBracket~⟩~RightArrow~→~RightArrowBar~⇥~RightArrowLeftArrow~⇄~RightCeiling~⌉~RightDoubleBracket~⟧~RightDownTeeVector~⥝~RightDownVector~⇂~RightDownVectorBar~⥕~RightFloor~⌋~RightTee~⊢~RightTeeArrow~↦~RightTeeVector~⥛~RightTriangle~⊳~RightTriangleBar~⧐~RightTriangleEqual~⊵~RightUpDownVector~⥏~RightUpTeeVector~⥜~RightUpVector~↾~RightUpVectorBar~⥔~RightVector~⇀~RightVectorBar~⥓~Rightarrow~⇒~Ropf~ℝ~RoundImplies~⥰~Rrightarrow~⇛~Rscr~ℛ~Rsh~↱~RuleDelayed~⧴~SHCHcy~Щ~SHcy~Ш~SOFTcy~Ь~Sacute~Ś~Sc~⪼~Scedil~Ş~Scirc~Ŝ~Scy~С~Sfr~𝔖~ShortDownArrow~↓~ShortLeftArrow~←~ShortRightArrow~→~ShortUpArrow~↑~SmallCircle~∘~Sopf~𝕊~Sqrt~√~Square~□~SquareIntersection~⊓~SquareSubset~⊏~SquareSubsetEqual~⊑~SquareSuperset~⊐~SquareSupersetEqual~⊒~SquareUnion~⊔~Sscr~𝒮~Star~⋆~Sub~⋐~Subset~⋐~SubsetEqual~⊆~Succeeds~≻~SucceedsEqual~⪰~SucceedsSlantEqual~≽~SucceedsTilde~≿~SuchThat~∋~Sum~∑~Sup~⋑~Superset~⊃~SupersetEqual~⊇~Supset~⋑~TRADE~™~TSHcy~Ћ~TScy~Ц~Tab~ ~Tcaron~Ť~Tcedil~Ţ~Tcy~Т~Tfr~𝔗~Therefore~∴~ThickSpace~ ~ThinSpace~ ~Tilde~∼~TildeEqual~≃~TildeFullEqual~≅~TildeTilde~≈~Topf~𝕋~TripleDot~⃛~Tscr~𝒯~Tstrok~Ŧ~Uarr~↟~Uarrocir~⥉~Ubrcy~Ў~Ubreve~Ŭ~Ucy~У~Udblac~Ű~Ufr~𝔘~Umacr~Ū~UnderBar~_~UnderBrace~⏟~UnderBracket~⎵~UnderParenthesis~⏝~Union~⋃~UnionPlus~⊎~Uogon~Ų~Uopf~𝕌~UpArrow~↑~UpArrowBar~⤒~UpArrowDownArrow~⇅~UpDownArrow~↕~UpEquilibrium~⥮~UpTee~⊥~UpTeeArrow~↥~Uparrow~⇑~Updownarrow~⇕~UpperLeftArrow~↖~UpperRightArrow~↗~Upsi~ϒ~Uring~Ů~Uscr~𝒰~Utilde~Ũ~VDash~⊫~Vbar~⫫~Vcy~В~Vdash~⊩~Vdashl~⫦~Vee~⋁~Verbar~‖~Vert~‖~VerticalBar~∣~VerticalLine~|~VerticalSeparator~❘~VerticalTilde~≀~VeryThinSpace~ ~Vfr~𝔙~Vopf~𝕍~Vscr~𝒱~Vvdash~⊪~Wcirc~Ŵ~Wedge~⋀~Wfr~𝔚~Wopf~𝕎~Wscr~𝒲~Xfr~𝔛~Xopf~𝕏~Xscr~𝒳~YAcy~Я~YIcy~Ї~YUcy~Ю~Ycirc~Ŷ~Ycy~Ы~Yfr~𝔜~Yopf~𝕐~Yscr~𝒴~ZHcy~Ж~Zacute~Ź~Zcaron~Ž~Zcy~З~Zdot~Ż~ZeroWidthSpace~~Zfr~ℨ~Zopf~ℤ~Zscr~𝒵~abreve~ă~ac~∾~acE~∾̳~acd~∿~acy~а~af~~afr~𝔞~aleph~ℵ~amacr~ā~amalg~⨿~andand~⩕~andd~⩜~andslope~⩘~andv~⩚~ange~⦤~angle~∠~angmsd~∡~angmsdaa~⦨~angmsdab~⦩~angmsdac~⦪~angmsdad~⦫~angmsdae~⦬~angmsdaf~⦭~angmsdag~⦮~angmsdah~⦯~angrt~∟~angrtvb~⊾~angrtvbd~⦝~angsph~∢~angst~Å~angzarr~⍼~aogon~ą~aopf~𝕒~ap~≈~apE~⩰~apacir~⩯~ape~≊~apid~≋~approx~≈~approxeq~≊~ascr~𝒶~ast~*~asympeq~≍~awconint~∳~awint~⨑~bNot~⫭~backcong~≌~backepsilon~϶~backprime~‵~backsim~∽~backsimeq~⋍~barvee~⊽~barwed~⌅~barwedge~⌅~bbrk~⎵~bbrktbrk~⎶~bcong~≌~bcy~б~becaus~∵~because~∵~bemptyv~⦰~bepsi~϶~bernou~ℬ~beth~ℶ~between~≬~bfr~𝔟~bigcap~⋂~bigcirc~◯~bigcup~⋃~bigodot~⨀~bigoplus~⨁~bigotimes~⨂~bigsqcup~⨆~bigstar~★~bigtriangledown~▽~bigtriangleup~△~biguplus~⨄~bigvee~⋁~bigwedge~⋀~bkarow~⤍~blacklozenge~⧫~blacksquare~▪~blacktriangle~▴~blacktriangledown~▾~blacktriangleleft~◂~blacktriangleright~▸~blank~␣~blk12~▒~blk14~░~blk34~▓~block~█~bne~=⃥~bnequiv~≡⃥~bnot~⌐~bopf~𝕓~bot~⊥~bottom~⊥~bowtie~⋈~boxDL~╗~boxDR~╔~boxDl~╖~boxDr~╓~boxH~═~boxHD~╦~boxHU~╩~boxHd~╤~boxHu~╧~boxUL~╝~boxUR~╚~boxUl~╜~boxUr~╙~boxV~║~boxVH~╬~boxVL~╣~boxVR~╠~boxVh~╫~boxVl~╢~boxVr~╟~boxbox~⧉~boxdL~╕~boxdR~╒~boxdl~┐~boxdr~┌~boxh~─~boxhD~╥~boxhU~╨~boxhd~┬~boxhu~┴~boxminus~⊟~boxplus~⊞~boxtimes~⊠~boxuL~╛~boxuR~╘~boxul~┘~boxur~└~boxv~│~boxvH~╪~boxvL~╡~boxvR~╞~boxvh~┼~boxvl~┤~boxvr~├~bprime~‵~breve~˘~bscr~𝒷~bsemi~⁏~bsim~∽~bsime~⋍~bsol~\\~bsolb~⧅~bsolhsub~⟈~bullet~•~bump~≎~bumpE~⪮~bumpe~≏~bumpeq~≏~cacute~ć~capand~⩄~capbrcup~⩉~capcap~⩋~capcup~⩇~capdot~⩀~caps~∩︀~caret~⁁~caron~ˇ~ccaps~⩍~ccaron~č~ccirc~ĉ~ccups~⩌~ccupssm~⩐~cdot~ċ~cemptyv~⦲~centerdot~·~cfr~𝔠~chcy~ч~check~✓~checkmark~✓~cir~○~cirE~⧃~circeq~≗~circlearrowleft~↺~circlearrowright~↻~circledR~®~circledS~Ⓢ~circledast~⊛~circledcirc~⊚~circleddash~⊝~cire~≗~cirfnint~⨐~cirmid~⫯~cirscir~⧂~clubsuit~♣~colon~:~colone~≔~coloneq~≔~comma~,~commat~@~comp~∁~compfn~∘~complement~∁~complexes~ℂ~congdot~⩭~conint~∮~copf~𝕔~coprod~∐~copysr~℗~cross~✗~cscr~𝒸~csub~⫏~csube~⫑~csup~⫐~csupe~⫒~ctdot~⋯~cudarrl~⤸~cudarrr~⤵~cuepr~⋞~cuesc~⋟~cularr~↶~cularrp~⤽~cupbrcap~⩈~cupcap~⩆~cupcup~⩊~cupdot~⊍~cupor~⩅~cups~∪︀~curarr~↷~curarrm~⤼~curlyeqprec~⋞~curlyeqsucc~⋟~curlyvee~⋎~curlywedge~⋏~curvearrowleft~↶~curvearrowright~↷~cuvee~⋎~cuwed~⋏~cwconint~∲~cwint~∱~cylcty~⌭~dHar~⥥~daleth~ℸ~dash~‐~dashv~⊣~dbkarow~⤏~dblac~˝~dcaron~ď~dcy~д~dd~ⅆ~ddagger~‡~ddarr~⇊~ddotseq~⩷~demptyv~⦱~dfisht~⥿~dfr~𝔡~dharl~⇃~dharr~⇂~diam~⋄~diamond~⋄~diamondsuit~♦~die~¨~digamma~ϝ~disin~⋲~div~÷~divideontimes~⋇~divonx~⋇~djcy~ђ~dlcorn~⌞~dlcrop~⌍~dollar~$~dopf~𝕕~dot~˙~doteq~≐~doteqdot~≑~dotminus~∸~dotplus~∔~dotsquare~⊡~doublebarwedge~⌆~downarrow~↓~downdownarrows~⇊~downharpoonleft~⇃~downharpoonright~⇂~drbkarow~⤐~drcorn~⌟~drcrop~⌌~dscr~𝒹~dscy~ѕ~dsol~⧶~dstrok~đ~dtdot~⋱~dtri~▿~dtrif~▾~duarr~⇵~duhar~⥯~dwangle~⦦~dzcy~џ~dzigrarr~⟿~eDDot~⩷~eDot~≑~easter~⩮~ecaron~ě~ecir~≖~ecolon~≕~ecy~э~edot~ė~ee~ⅇ~efDot~≒~efr~𝔢~eg~⪚~egs~⪖~egsdot~⪘~el~⪙~elinters~⏧~ell~ℓ~els~⪕~elsdot~⪗~emacr~ē~emptyset~∅~emptyv~∅~emsp13~ ~emsp14~ ~eng~ŋ~eogon~ę~eopf~𝕖~epar~⋕~eparsl~⧣~eplus~⩱~epsi~ε~epsiv~ϵ~eqcirc~≖~eqcolon~≕~eqsim~≂~eqslantgtr~⪖~eqslantless~⪕~equals~=~equest~≟~equivDD~⩸~eqvparsl~⧥~erDot~≓~erarr~⥱~escr~ℯ~esdot~≐~esim~≂~excl~!~expectation~ℰ~exponentiale~ⅇ~fallingdotseq~≒~fcy~ф~female~♀~ffilig~ffi~fflig~ff~ffllig~ffl~ffr~𝔣~filig~fi~fjlig~fj~flat~♭~fllig~fl~fltns~▱~fopf~𝕗~fork~⋔~forkv~⫙~fpartint~⨍~frac13~⅓~frac15~⅕~frac16~⅙~frac18~⅛~frac23~⅔~frac25~⅖~frac35~⅗~frac38~⅜~frac45~⅘~frac56~⅚~frac58~⅝~frac78~⅞~frown~⌢~fscr~𝒻~gE~≧~gEl~⪌~gacute~ǵ~gammad~ϝ~gap~⪆~gbreve~ğ~gcirc~ĝ~gcy~г~gdot~ġ~gel~⋛~geq~≥~geqq~≧~geqslant~⩾~ges~⩾~gescc~⪩~gesdot~⪀~gesdoto~⪂~gesdotol~⪄~gesl~⋛︀~gesles~⪔~gfr~𝔤~gg~≫~ggg~⋙~gimel~ℷ~gjcy~ѓ~gl~≷~glE~⪒~gla~⪥~glj~⪤~gnE~≩~gnap~⪊~gnapprox~⪊~gne~⪈~gneq~⪈~gneqq~≩~gnsim~⋧~gopf~𝕘~grave~`~gscr~ℊ~gsim~≳~gsime~⪎~gsiml~⪐~gtcc~⪧~gtcir~⩺~gtdot~⋗~gtlPar~⦕~gtquest~⩼~gtrapprox~⪆~gtrarr~⥸~gtrdot~⋗~gtreqless~⋛~gtreqqless~⪌~gtrless~≷~gtrsim~≳~gvertneqq~≩︀~gvnE~≩︀~hairsp~ ~half~½~hamilt~ℋ~hardcy~ъ~harrcir~⥈~harrw~↭~hbar~ℏ~hcirc~ĥ~heartsuit~♥~hercon~⊹~hfr~𝔥~hksearow~⤥~hkswarow~⤦~hoarr~⇿~homtht~∻~hookleftarrow~↩~hookrightarrow~↪~hopf~𝕙~horbar~―~hscr~𝒽~hslash~ℏ~hstrok~ħ~hybull~⁃~hyphen~‐~ic~~icy~и~iecy~е~iff~⇔~ifr~𝔦~ii~ⅈ~iiiint~⨌~iiint~∭~iinfin~⧜~iiota~℩~ijlig~ij~imacr~ī~imagline~ℐ~imagpart~ℑ~imath~ı~imof~⊷~imped~Ƶ~in~∈~incare~℅~infintie~⧝~inodot~ı~intcal~⊺~integers~ℤ~intercal~⊺~intlarhk~⨗~intprod~⨼~iocy~ё~iogon~į~iopf~𝕚~iprod~⨼~iscr~𝒾~isinE~⋹~isindot~⋵~isins~⋴~isinsv~⋳~isinv~∈~it~~itilde~ĩ~iukcy~і~jcirc~ĵ~jcy~й~jfr~𝔧~jmath~ȷ~jopf~𝕛~jscr~𝒿~jsercy~ј~jukcy~є~kappav~ϰ~kcedil~ķ~kcy~к~kfr~𝔨~kgreen~ĸ~khcy~х~kjcy~ќ~kopf~𝕜~kscr~𝓀~lAarr~⇚~lAtail~⤛~lBarr~⤎~lE~≦~lEg~⪋~lHar~⥢~lacute~ĺ~laemptyv~⦴~lagran~ℒ~langd~⦑~langle~⟨~lap~⪅~larrb~⇤~larrbfs~⤟~larrfs~⤝~larrhk~↩~larrlp~↫~larrpl~⤹~larrsim~⥳~larrtl~↢~lat~⪫~latail~⤙~late~⪭~lates~⪭︀~lbarr~⤌~lbbrk~❲~lbrace~{~lbrack~[~lbrke~⦋~lbrksld~⦏~lbrkslu~⦍~lcaron~ľ~lcedil~ļ~lcub~{~lcy~л~ldca~⤶~ldquor~„~ldrdhar~⥧~ldrushar~⥋~ldsh~↲~leftarrow~←~leftarrowtail~↢~leftharpoondown~↽~leftharpoonup~↼~leftleftarrows~⇇~leftrightarrow~↔~leftrightarrows~⇆~leftrightharpoons~⇋~leftrightsquigarrow~↭~leftthreetimes~⋋~leg~⋚~leq~≤~leqq~≦~leqslant~⩽~les~⩽~lescc~⪨~lesdot~⩿~lesdoto~⪁~lesdotor~⪃~lesg~⋚︀~lesges~⪓~lessapprox~⪅~lessdot~⋖~lesseqgtr~⋚~lesseqqgtr~⪋~lessgtr~≶~lesssim~≲~lfisht~⥼~lfr~𝔩~lg~≶~lgE~⪑~lhard~↽~lharu~↼~lharul~⥪~lhblk~▄~ljcy~љ~ll~≪~llarr~⇇~llcorner~⌞~llhard~⥫~lltri~◺~lmidot~ŀ~lmoust~⎰~lmoustache~⎰~lnE~≨~lnap~⪉~lnapprox~⪉~lne~⪇~lneq~⪇~lneqq~≨~lnsim~⋦~loang~⟬~loarr~⇽~lobrk~⟦~longleftarrow~⟵~longleftrightarrow~⟷~longmapsto~⟼~longrightarrow~⟶~looparrowleft~↫~looparrowright~↬~lopar~⦅~lopf~𝕝~loplus~⨭~lotimes~⨴~lowbar~_~lozenge~◊~lozf~⧫~lpar~(~lparlt~⦓~lrarr~⇆~lrcorner~⌟~lrhar~⇋~lrhard~⥭~lrtri~⊿~lscr~𝓁~lsh~↰~lsim~≲~lsime~⪍~lsimg~⪏~lsqb~[~lsquor~‚~lstrok~ł~ltcc~⪦~ltcir~⩹~ltdot~⋖~lthree~⋋~ltimes~⋉~ltlarr~⥶~ltquest~⩻~ltrPar~⦖~ltri~◃~ltrie~⊴~ltrif~◂~lurdshar~⥊~luruhar~⥦~lvertneqq~≨︀~lvnE~≨︀~mDDot~∺~male~♂~malt~✠~maltese~✠~map~↦~mapsto~↦~mapstodown~↧~mapstoleft~↤~mapstoup~↥~marker~▮~mcomma~⨩~mcy~м~measuredangle~∡~mfr~𝔪~mho~℧~mid~∣~midast~*~midcir~⫰~minusb~⊟~minusd~∸~minusdu~⨪~mlcp~⫛~mldr~…~mnplus~∓~models~⊧~mopf~𝕞~mp~∓~mscr~𝓂~mstpos~∾~multimap~⊸~mumap~⊸~nGg~⋙̸~nGt~≫⃒~nGtv~≫̸~nLeftarrow~⇍~nLeftrightarrow~⇎~nLl~⋘̸~nLt~≪⃒~nLtv~≪̸~nRightarrow~⇏~nVDash~⊯~nVdash~⊮~nacute~ń~nang~∠⃒~nap~≉~napE~⩰̸~napid~≋̸~napos~ʼn~napprox~≉~natur~♮~natural~♮~naturals~ℕ~nbump~≎̸~nbumpe~≏̸~ncap~⩃~ncaron~ň~ncedil~ņ~ncong~≇~ncongdot~⩭̸~ncup~⩂~ncy~н~neArr~⇗~nearhk~⤤~nearr~↗~nearrow~↗~nedot~≐̸~nequiv~≢~nesear~⤨~nesim~≂̸~nexist~∄~nexists~∄~nfr~𝔫~ngE~≧̸~nge~≱~ngeq~≱~ngeqq~≧̸~ngeqslant~⩾̸~nges~⩾̸~ngsim~≵~ngt~≯~ngtr~≯~nhArr~⇎~nharr~↮~nhpar~⫲~nis~⋼~nisd~⋺~niv~∋~njcy~њ~nlArr~⇍~nlE~≦̸~nlarr~↚~nldr~‥~nle~≰~nleftarrow~↚~nleftrightarrow~↮~nleq~≰~nleqq~≦̸~nleqslant~⩽̸~nles~⩽̸~nless~≮~nlsim~≴~nlt~≮~nltri~⋪~nltrie~⋬~nmid~∤~nopf~𝕟~notinE~⋹̸~notindot~⋵̸~notinva~∉~notinvb~⋷~notinvc~⋶~notni~∌~notniva~∌~notnivb~⋾~notnivc~⋽~npar~∦~nparallel~∦~nparsl~⫽⃥~npart~∂̸~npolint~⨔~npr~⊀~nprcue~⋠~npre~⪯̸~nprec~⊀~npreceq~⪯̸~nrArr~⇏~nrarr~↛~nrarrc~⤳̸~nrarrw~↝̸~nrightarrow~↛~nrtri~⋫~nrtrie~⋭~nsc~⊁~nsccue~⋡~nsce~⪰̸~nscr~𝓃~nshortmid~∤~nshortparallel~∦~nsim~≁~nsime~≄~nsimeq~≄~nsmid~∤~nspar~∦~nsqsube~⋢~nsqsupe~⋣~nsubE~⫅̸~nsube~⊈~nsubset~⊂⃒~nsubseteq~⊈~nsubseteqq~⫅̸~nsucc~⊁~nsucceq~⪰̸~nsup~⊅~nsupE~⫆̸~nsupe~⊉~nsupset~⊃⃒~nsupseteq~⊉~nsupseteqq~⫆̸~ntgl~≹~ntlg~≸~ntriangleleft~⋪~ntrianglelefteq~⋬~ntriangleright~⋫~ntrianglerighteq~⋭~num~#~numero~№~numsp~ ~nvDash~⊭~nvHarr~⤄~nvap~≍⃒~nvdash~⊬~nvge~≥⃒~nvgt~>⃒~nvinfin~⧞~nvlArr~⤂~nvle~≤⃒~nvlt~<⃒~nvltrie~⊴⃒~nvrArr~⤃~nvrtrie~⊵⃒~nvsim~∼⃒~nwArr~⇖~nwarhk~⤣~nwarr~↖~nwarrow~↖~nwnear~⤧~oS~Ⓢ~oast~⊛~ocir~⊚~ocy~о~odash~⊝~odblac~ő~odiv~⨸~odot~⊙~odsold~⦼~ofcir~⦿~ofr~𝔬~ogon~˛~ogt~⧁~ohbar~⦵~ohm~Ω~oint~∮~olarr~↺~olcir~⦾~olcross~⦻~olt~⧀~omacr~ō~omid~⦶~ominus~⊖~oopf~𝕠~opar~⦷~operp~⦹~orarr~↻~ord~⩝~order~ℴ~orderof~ℴ~origof~⊶~oror~⩖~orslope~⩗~orv~⩛~oscr~ℴ~osol~⊘~otimesas~⨶~ovbar~⌽~par~∥~parallel~∥~parsim~⫳~parsl~⫽~pcy~п~percnt~%~period~.~pertenk~‱~pfr~𝔭~phiv~ϕ~phmmat~ℳ~phone~☎~pitchfork~⋔~planck~ℏ~planckh~ℎ~plankv~ℏ~plus~+~plusacir~⨣~plusb~⊞~pluscir~⨢~plusdo~∔~plusdu~⨥~pluse~⩲~plussim~⨦~plustwo~⨧~pm~±~pointint~⨕~popf~𝕡~pr~≺~prE~⪳~prap~⪷~prcue~≼~pre~⪯~prec~≺~precapprox~⪷~preccurlyeq~≼~preceq~⪯~precnapprox~⪹~precneqq~⪵~precnsim~⋨~precsim~≾~primes~ℙ~prnE~⪵~prnap~⪹~prnsim~⋨~profalar~⌮~profline~⌒~profsurf~⌓~propto~∝~prsim~≾~prurel~⊰~pscr~𝓅~puncsp~ ~qfr~𝔮~qint~⨌~qopf~𝕢~qprime~⁗~qscr~𝓆~quaternions~ℍ~quatint~⨖~quest~?~questeq~≟~rAarr~⇛~rAtail~⤜~rBarr~⤏~rHar~⥤~race~∽̱~racute~ŕ~raemptyv~⦳~rangd~⦒~range~⦥~rangle~⟩~rarrap~⥵~rarrb~⇥~rarrbfs~⤠~rarrc~⤳~rarrfs~⤞~rarrhk~↪~rarrlp~↬~rarrpl~⥅~rarrsim~⥴~rarrtl~↣~rarrw~↝~ratail~⤚~ratio~∶~rationals~ℚ~rbarr~⤍~rbbrk~❳~rbrace~}~rbrack~]~rbrke~⦌~rbrksld~⦎~rbrkslu~⦐~rcaron~ř~rcedil~ŗ~rcub~}~rcy~р~rdca~⤷~rdldhar~⥩~rdquor~”~rdsh~↳~realine~ℛ~realpart~ℜ~reals~ℝ~rect~▭~rfisht~⥽~rfr~𝔯~rhard~⇁~rharu~⇀~rharul~⥬~rhov~ϱ~rightarrow~→~rightarrowtail~↣~rightharpoondown~⇁~rightharpoonup~⇀~rightleftarrows~⇄~rightleftharpoons~⇌~rightrightarrows~⇉~rightsquigarrow~↝~rightthreetimes~⋌~ring~˚~risingdotseq~≓~rlarr~⇄~rlhar~⇌~rmoust~⎱~rmoustache~⎱~rnmid~⫮~roang~⟭~roarr~⇾~robrk~⟧~ropar~⦆~ropf~𝕣~roplus~⨮~rotimes~⨵~rpar~)~rpargt~⦔~rppolint~⨒~rrarr~⇉~rscr~𝓇~rsh~↱~rsqb~]~rsquor~’~rthree~⋌~rtimes~⋊~rtri~▹~rtrie~⊵~rtrif~▸~rtriltri~⧎~ruluhar~⥨~rx~℞~sacute~ś~sc~≻~scE~⪴~scap~⪸~sccue~≽~sce~⪰~scedil~ş~scirc~ŝ~scnE~⪶~scnap~⪺~scnsim~⋩~scpolint~⨓~scsim~≿~scy~с~sdotb~⊡~sdote~⩦~seArr~⇘~searhk~⤥~searr~↘~searrow~↘~semi~;~seswar~⤩~setminus~∖~setmn~∖~sext~✶~sfr~𝔰~sfrown~⌢~sharp~♯~shchcy~щ~shcy~ш~shortmid~∣~shortparallel~∥~sigmav~ς~simdot~⩪~sime~≃~simeq~≃~simg~⪞~simgE~⪠~siml~⪝~simlE~⪟~simne~≆~simplus~⨤~simrarr~⥲~slarr~←~smallsetminus~∖~smashp~⨳~smeparsl~⧤~smid~∣~smile~⌣~smt~⪪~smte~⪬~smtes~⪬︀~softcy~ь~sol~/~solb~⧄~solbar~⌿~sopf~𝕤~spadesuit~♠~spar~∥~sqcap~⊓~sqcaps~⊓︀~sqcup~⊔~sqcups~⊔︀~sqsub~⊏~sqsube~⊑~sqsubset~⊏~sqsubseteq~⊑~sqsup~⊐~sqsupe~⊒~sqsupset~⊐~sqsupseteq~⊒~squ~□~square~□~squarf~▪~squf~▪~srarr~→~sscr~𝓈~ssetmn~∖~ssmile~⌣~sstarf~⋆~star~☆~starf~★~straightepsilon~ϵ~straightphi~ϕ~strns~¯~subE~⫅~subdot~⪽~subedot~⫃~submult~⫁~subnE~⫋~subne~⊊~subplus~⪿~subrarr~⥹~subset~⊂~subseteq~⊆~subseteqq~⫅~subsetneq~⊊~subsetneqq~⫋~subsim~⫇~subsub~⫕~subsup~⫓~succ~≻~succapprox~⪸~succcurlyeq~≽~succeq~⪰~succnapprox~⪺~succneqq~⪶~succnsim~⋩~succsim~≿~sung~♪~supE~⫆~supdot~⪾~supdsub~⫘~supedot~⫄~suphsol~⟉~suphsub~⫗~suplarr~⥻~supmult~⫂~supnE~⫌~supne~⊋~supplus~⫀~supset~⊃~supseteq~⊇~supseteqq~⫆~supsetneq~⊋~supsetneqq~⫌~supsim~⫈~supsub~⫔~supsup~⫖~swArr~⇙~swarhk~⤦~swarr~↙~swarrow~↙~swnwar~⤪~target~⌖~tbrk~⎴~tcaron~ť~tcedil~ţ~tcy~т~tdot~⃛~telrec~⌕~tfr~𝔱~therefore~∴~thetav~ϑ~thickapprox~≈~thicksim~∼~thkap~≈~thksim~∼~timesb~⊠~timesbar~⨱~timesd~⨰~tint~∭~toea~⤨~top~⊤~topbot~⌶~topcir~⫱~topf~𝕥~topfork~⫚~tosa~⤩~tprime~‴~triangle~▵~triangledown~▿~triangleleft~◃~trianglelefteq~⊴~triangleq~≜~triangleright~▹~trianglerighteq~⊵~tridot~◬~trie~≜~triminus~⨺~triplus~⨹~trisb~⧍~tritime~⨻~trpezium~⏢~tscr~𝓉~tscy~ц~tshcy~ћ~tstrok~ŧ~twixt~≬~twoheadleftarrow~↞~twoheadrightarrow~↠~uHar~⥣~ubrcy~ў~ubreve~ŭ~ucy~у~udarr~⇅~udblac~ű~udhar~⥮~ufisht~⥾~ufr~𝔲~uharl~↿~uharr~↾~uhblk~▀~ulcorn~⌜~ulcorner~⌜~ulcrop~⌏~ultri~◸~umacr~ū~uogon~ų~uopf~𝕦~uparrow~↑~updownarrow~↕~upharpoonleft~↿~upharpoonright~↾~uplus~⊎~upsi~υ~upuparrows~⇈~urcorn~⌝~urcorner~⌝~urcrop~⌎~uring~ů~urtri~◹~uscr~𝓊~utdot~⋰~utilde~ũ~utri~▵~utrif~▴~uuarr~⇈~uwangle~⦧~vArr~⇕~vBar~⫨~vBarv~⫩~vDash~⊨~vangrt~⦜~varepsilon~ϵ~varkappa~ϰ~varnothing~∅~varphi~ϕ~varpi~ϖ~varpropto~∝~varr~↕~varrho~ϱ~varsigma~ς~varsubsetneq~⊊︀~varsubsetneqq~⫋︀~varsupsetneq~⊋︀~varsupsetneqq~⫌︀~vartheta~ϑ~vartriangleleft~⊲~vartriangleright~⊳~vcy~в~vdash~⊢~vee~∨~veebar~⊻~veeeq~≚~vellip~⋮~verbar~|~vert~|~vfr~𝔳~vltri~⊲~vnsub~⊂⃒~vnsup~⊃⃒~vopf~𝕧~vprop~∝~vrtri~⊳~vscr~𝓋~vsubnE~⫋︀~vsubne~⊊︀~vsupnE~⫌︀~vsupne~⊋︀~vzigzag~⦚~wcirc~ŵ~wedbar~⩟~wedge~∧~wedgeq~≙~wfr~𝔴~wopf~𝕨~wp~℘~wr~≀~wreath~≀~wscr~𝓌~xcap~⋂~xcirc~◯~xcup~⋃~xdtri~▽~xfr~𝔵~xhArr~⟺~xharr~⟷~xlArr~⟸~xlarr~⟵~xmap~⟼~xnis~⋻~xodot~⨀~xopf~𝕩~xoplus~⨁~xotime~⨂~xrArr~⟹~xrarr~⟶~xscr~𝓍~xsqcup~⨆~xuplus~⨄~xutri~△~xvee~⋁~xwedge~⋀~yacy~я~ycirc~ŷ~ycy~ы~yfr~𝔶~yicy~ї~yopf~𝕪~yscr~𝓎~yucy~ю~zacute~ź~zcaron~ž~zcy~з~zdot~ż~zeetrf~ℨ~zfr~𝔷~zhcy~ж~zigrarr~⇝~zopf~𝕫~zscr~𝓏~~AMP~&~COPY~©~GT~>~LT~<~QUOT~"~REG~®',Q.html4);var ha={0:65533,128:8364,130:8218,131:402,132:8222,133:8230,134:8224,135:8225,136:710,137:8240,138:352,139:8249,140:338,142:381,145:8216,146:8217,147:8220,148:8221,149:8226,150:8211,151:8212,152:732,153:8482,154:353,155:8250,156:339,158:382,159:376},da=String.fromCodePoint||function(e){return String.fromCharCode(Math.floor((e-65536)/1024)+55296,(e-65536)%1024+56320)},K=function(){return K=Object.assign||function(e){for(var t,r=1,n=arguments.length;r<n;r++){t=arguments[r];for(var i in t)Object.prototype.hasOwnProperty.call(t,i)&&(e[i]=t[i])}return e},K.apply(this,arguments)},fa=K(K({},Q),{all:Q.html5}),ma={scope:"body",level:"all"},we=/&(?:#\d+|#[xX][\da-fA-F]+|[0-9a-zA-Z]+);/g,Oe=/&(?:#\d+|#[xX][\da-fA-F]+|[0-9a-zA-Z]+)[;=]?/g,at={xml:{strict:we,attribute:Oe,body:Se.xml},html4:{strict:we,attribute:Oe,body:Se.html4},html5:{strict:we,attribute:Oe,body:Se.html5}},ya=K(K({},at),{all:at.html5}),Rt=String.fromCharCode,va=Rt(65533);function ba(e,t,r,n){var i=e,s=e[e.length-1];if(r&&s==="=")i=e;else if(n&&s!==";")i=e;else{var u=t[e];if(u)i=u;else if(e[0]==="&"&&e[1]==="#"){var a=e[2],c=a=="x"||a=="X"?parseInt(e.substr(3),16):parseInt(e.substr(2));i=c>=1114111?va:c>65535?da(c):Rt(ha[c]||c)}}return i}function st(e,t){var r=t===void 0?ma:t,n=r.level,i=n===void 0?"all":n,s=r.scope,u=s===void 0?i==="xml"?"strict":"body":s;if(!e)return"";var a=ya[i][u],c=fa[i].entities,l=u==="attribute",g=u==="strict";return e.replace(a,function(p){return ba(p,c,l,g)})}var Sa={strictlyTwoElementsInRangeArrays:!1,progressFn:null};function ce(e,t){if(!Array.isArray(e)||!e.length)return e;let r={...Sa,...t},n,i;if(r.strictlyTwoElementsInRangeArrays&&!e.every((a,c)=>!Array.isArray(a)||a.length!==2?(n=c,i=a.length,!1):!0))throw new TypeError(`ranges-sort: [THROW_ID_03] The first argument should be an array and must consist of arrays which are natural number indexes representing TWO string index ranges. However, ${n}th range (${JSON.stringify(e[n],null,4)}) has not two but ${i} elements!`);if(!e.every((a,c)=>!Array.isArray(a)||!Number.isInteger(a[0])||a[0]<0||!Number.isInteger(a[1])||a[1]<0?(n=c,!1):!0))throw new TypeError(`ranges-sort: [THROW_ID_04] The first argument should be an array and must consist of arrays which are natural number indexes representing string index ranges. However, ${n}th range (${JSON.stringify(e[n],null,4)}) does not consist of only natural numbers!`);let s=e.length**2,u=0;return Array.from(e).sort((a,c)=>(r.progressFn&&(u+=1,r.progressFn(Math.floor(u*100/s))),a[0]===c[0]?a[1]<c[1]?-1:a[1]>c[1]?1:0:a[0]<c[0]?-1:1))}var it={mergeType:1,progressFn:null,joinRangesThatTouchEdges:!0};function wa(e,t){function r(l){return!!l&&typeof l=="object"&&!Array.isArray(l)}if(!Array.isArray(e)||!e.length)return null;let n;if(t)if(r(t)){if(n={...it,...t},n.progressFn&&r(n.progressFn)&&!Object.keys(n.progressFn).length)n.progressFn=null;else if(n.progressFn&&typeof n.progressFn!="function")throw new Error(`ranges-merge: [THROW_ID_01] opts.progressFn must be a function! It was given of a type: "${typeof n.progressFn}", equal to ${JSON.stringify(n.progressFn,null,4)}`);if(![1,2,"1","2"].includes(n.mergeType))throw new Error(`ranges-merge: [THROW_ID_02] opts.mergeType was customised to a wrong thing! It was given of a type: "${typeof n.mergeType}", equal to ${JSON.stringify(n.mergeType,null,4)}`);if(typeof n.joinRangesThatTouchEdges!="boolean")throw new Error(`ranges-merge: [THROW_ID_04] opts.joinRangesThatTouchEdges was customised to a wrong thing! It was given of a type: "${typeof n.joinRangesThatTouchEdges}", equal to ${JSON.stringify(n.joinRangesThatTouchEdges,null,4)}`)}else throw new Error(`emlint: [THROW_ID_03] the second input argument must be a plain object. It was given as:
|
|
2
|
-
${JSON.stringify(
|
|
3
|
-
`:"\r",l=
|
|
4
|
-
`;if(!s)return s;let
|
|
5
|
-
`.includes(s[
|
|
6
|
-
${JSON.stringify(
|
|
7
|
-
${JSON.stringify(
|
|
8
|
-
\r`.includes(e
|
|
9
|
-
\r`.includes(e
|
|
10
|
-
\r`.includes(
|
|
11
|
-
`)&&
|
|
12
|
-
`:
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const W=t=>{if(!t)return["",void 0];const e=t.replace(/_/g,"-");try{const r=new Intl.Locale(e);return[r.language.toLowerCase(),r.region?.toUpperCase()]}catch{const r=e.split("-");return[r[0].toLowerCase(),r[1]?.toUpperCase()]}},j={ar:{defaultRegion:"SA",availableRegions:["001","AE","AS","BH","DZ","EG","IQ","JO","KW","LB","LY","MA","OM","QA","SA","SY","TN","YE"],testUtterance:"مرحبًا، اسمي {name} وأنا صوت عربي."},bg:{defaultRegion:"BG",availableRegions:["BG"],testUtterance:"Здравейте, казвам се {name} и съм български глас."},bho:{defaultRegion:"IN",availableRegions:["IN"],testUtterance:"नमस्कार, हमार नाम {name} ह आ हम भोजपुरी आवाज हईं"},bn:{defaultRegion:"IN",availableRegions:["BD","IN"],testUtterance:"হ্যালো, আমার নাম {name} এবং আমি একজন বাংলা ভয়েস।"},ca:{defaultRegion:"ES",availableRegions:["ES"],testUtterance:"Hola, em dic {name} i sóc una veu catalana"},cmn:{defaultRegion:"CN",availableRegions:["CN","CTW","TW"],testUtterance:"你好,我的名字是 {name},我是普通话配音。"},cs:{defaultRegion:"CZ",availableRegions:["CZ"],testUtterance:"Dobrý den, jmenuji se {name} a jsem český hlas."},da:{defaultRegion:"DK",availableRegions:["DK"],testUtterance:"Hej, mit navn er {name} og jeg er en dansk stemme."},de:{defaultRegion:"DE",availableRegions:["AT","CH","DE"],testUtterance:"Hallo, mein Name ist {name} und ich bin eine deutsche Stimme."},el:{defaultRegion:"GR",availableRegions:["GR"],testUtterance:"Γεια σας, με λένε {name} και είμαι ελληνική φωνή."},en:{defaultRegion:"US",availableRegions:["AU","CA","GB","HK","IE","IN","KE","NG","NZ","PH","SG","TZ","US","ZA"],testUtterance:"Hello, my name is {name} and I am an English voice."},es:{defaultRegion:"ES",availableRegions:["AR","BO","CL","CO","CR","CU","DO","EC","ES","GQ","GT","HN","MX","NI","PA","PE","PR","PY","SV","US","UY","VE"],testUtterance:"Hola, mi nombre es {name} y soy una voz española."},eu:{defaultRegion:"ES",availableRegions:["ES"],testUtterance:"Kaixo, nire izena {name} da eta euskal ahotsa naiz."},fa:{defaultRegion:"IR",availableRegions:["IR"],testUtterance:"سلام اسم من {name} و صدای فارسی هستم"},fi:{defaultRegion:"FI",availableRegions:["FI"],testUtterance:"Hei, nimeni on {name} ja olen suomalainen ääni."},fr:{defaultRegion:"FR",availableRegions:["BE","CA","CH","FR"],testUtterance:"Bonjour, mon nom est {name} et je suis une voix française."},gl:{defaultRegion:"ES",availableRegions:["ES"],testUtterance:"Ola, chámome {name} e son unha voz galega."},he:{defaultRegion:"IL",availableRegions:["IL"],testUtterance:"שלום, שמי {name} ואני קול עברי."},hi:{defaultRegion:"IN",availableRegions:["IN"],testUtterance:"नमस्कार, मेरा नाम {name} है और मैं एक हिंदी आवाज़ हूँ।"},hr:{defaultRegion:"HR",availableRegions:["HR"],testUtterance:"Pozdrav, ja sam {name} i hrvatski sam glas."},hu:{defaultRegion:"HU",availableRegions:["HU"],testUtterance:"Helló, a nevem {name} és magyar hangú vagyok."},id:{defaultRegion:"ID",availableRegions:["ID"],testUtterance:"Halo, nama saya {name} dan saya suara Indonesia."},it:{defaultRegion:"IT",availableRegions:["IT"],testUtterance:"Ciao, mi chiamo {name} e sono una voce italiana."},ja:{defaultRegion:"JP",availableRegions:["JP"],testUtterance:"こんにちは。私の名前は{name}で、日本語の声を担当しています。"},kk:{defaultRegion:"KZ",availableRegions:["KZ"],testUtterance:"Sälemetsiz be, meniñ atım {name} jäne men qazaq dawısımın."},kn:{defaultRegion:"IN",availableRegions:["IN"],testUtterance:"ಹಲೋ, ನನ್ನ ಹೆಸರು {name} ಮತ್ತು ನಾನು ಕನ್ನಡ ಧ್ವನಿ."},ko:{defaultRegion:"KR",availableRegions:["KR"],testUtterance:"안녕하세요, 저는 {name}이고 한국어 음성입니다."},mr:{defaultRegion:"IN",availableRegions:["IN"],testUtterance:"नमस्कार, माझे नाव {name} आहे आणि मी एक मराठी आवाज आहे."},ms:{defaultRegion:"MY",availableRegions:["MY"],testUtterance:"Hello, nama saya {name} dan saya suara Melayu."},nb:{defaultRegion:"NO",availableRegions:["NO"],testUtterance:"Hei, jeg heter {name} og er en norsk stemme."},nl:{defaultRegion:"NL",availableRegions:["BE","NL"],testUtterance:"Hallo, mijn naam is {name} en ik ben een Nederlandse stem."},pl:{defaultRegion:"PL",availableRegions:["PL"],testUtterance:"Cześć, nazywam się {name} i mam polski głos."},pt:{defaultRegion:"BR",availableRegions:["BR","PT"],testUtterance:"Olá, o meu nome é {name} e sou uma voz portuguesa."},ro:{defaultRegion:"RO",availableRegions:["RO"],testUtterance:"Buna ziua, ma numesc {name} si sunt o voce romaneasca."},ru:{defaultRegion:"RU",availableRegions:["RU"],testUtterance:"Здравствуйте, меня зовут {name} и я русский голос."},sk:{defaultRegion:"SK",availableRegions:["SK"],testUtterance:"Dobrý deň, volám sa {name} a som slovenský hlas."},sl:{defaultRegion:"SI",availableRegions:["SI"],testUtterance:"Pozdravljeni, moje ime je {name} in sem slovenski glas."},sv:{defaultRegion:"SE",availableRegions:["SE"],testUtterance:"Hej, jag heter {name} och jag är en svensk röst."},ta:{defaultRegion:"IN",availableRegions:["IN","LK","MY","SG"],testUtterance:"வணக்கம், என் பெயர் {name} மற்றும் நான் ஒரு தமிழ் குரல்"},te:{defaultRegion:"IN",availableRegions:["IN"],testUtterance:"హలో, నా పేరు {name} మరియు నేను తెలుగు వాణిని."},th:{defaultRegion:"TH",availableRegions:["TH"],testUtterance:"สวัสดีค่ะ ฉันชื่อ {name} และฉันเป็นคนมีเสียงภาษาไทย"},tr:{defaultRegion:"TR",availableRegions:["TR"],testUtterance:"Merhaba, adım {name} ve Türk sesiyim."},uk:{defaultRegion:"UA",availableRegions:["UA"],testUtterance:"Здравствуйте, меня зовут {name} и я украинский голос."},vi:{defaultRegion:"VN",availableRegions:["VN"],testUtterance:"Xin chào, tôi tên là {name} và tôi là giọng nói tiếng Việt."},wuu:{defaultRegion:"CN",availableRegions:["CN"],testUtterance:"你好,我的名字是 {name},我是吴语配音。"},yue:{defaultRegion:"HK",availableRegions:["HK"],testUtterance:"你好,我叫 {name},係越中文聲。"}},je=new Map,Jr=Object.assign({"../../json/ar.json":()=>Promise.resolve().then(()=>require("./ar-BYWkyZgW.cjs")),"../../json/bg.json":()=>Promise.resolve().then(()=>require("./bg-D7xe9YTl.cjs")),"../../json/bho.json":()=>Promise.resolve().then(()=>require("./bho-UB6aO8oz.cjs")),"../../json/bn.json":()=>Promise.resolve().then(()=>require("./bn-boRZ2pl5.cjs")),"../../json/ca.json":()=>Promise.resolve().then(()=>require("./ca-DkC8kSJ8.cjs")),"../../json/cmn.json":()=>Promise.resolve().then(()=>require("./cmn-BsNLjyA4.cjs")),"../../json/cs.json":()=>Promise.resolve().then(()=>require("./cs-p05r08p7.cjs")),"../../json/da.json":()=>Promise.resolve().then(()=>require("./da-crefCup9.cjs")),"../../json/de.json":()=>Promise.resolve().then(()=>require("./de-xoW-RuhZ.cjs")),"../../json/el.json":()=>Promise.resolve().then(()=>require("./el-C025sTug.cjs")),"../../json/en.json":()=>Promise.resolve().then(()=>require("./en-CbfmLXbR.cjs")),"../../json/es.json":()=>Promise.resolve().then(()=>require("./es-DW7IPf8I.cjs")),"../../json/eu.json":()=>Promise.resolve().then(()=>require("./eu-uq15ZgwW.cjs")),"../../json/fa.json":()=>Promise.resolve().then(()=>require("./fa-CHOnwiFr.cjs")),"../../json/fi.json":()=>Promise.resolve().then(()=>require("./fi-Bxlno6Zi.cjs")),"../../json/fr.json":()=>Promise.resolve().then(()=>require("./fr-yAth5-FC.cjs")),"../../json/gl.json":()=>Promise.resolve().then(()=>require("./gl-BEgzCAO0.cjs")),"../../json/he.json":()=>Promise.resolve().then(()=>require("./he-B-CTHJPL.cjs")),"../../json/hi.json":()=>Promise.resolve().then(()=>require("./hi-C0yUjV1-.cjs")),"../../json/hr.json":()=>Promise.resolve().then(()=>require("./hr-CZvFOcdo.cjs")),"../../json/hu.json":()=>Promise.resolve().then(()=>require("./hu-_2PInItj.cjs")),"../../json/id.json":()=>Promise.resolve().then(()=>require("./id-BROcb7-t.cjs")),"../../json/it.json":()=>Promise.resolve().then(()=>require("./it-Bmc8Ycff.cjs")),"../../json/ja.json":()=>Promise.resolve().then(()=>require("./ja-B8t6WOeg.cjs")),"../../json/kk.json":()=>Promise.resolve().then(()=>require("./kk-DskO1CW8.cjs")),"../../json/kn.json":()=>Promise.resolve().then(()=>require("./kn-Cy3NH6na.cjs")),"../../json/ko.json":()=>Promise.resolve().then(()=>require("./ko-CZdQzppZ.cjs")),"../../json/mr.json":()=>Promise.resolve().then(()=>require("./mr-9hGqBYlV.cjs")),"../../json/ms.json":()=>Promise.resolve().then(()=>require("./ms-DzpBxNFZ.cjs")),"../../json/nb.json":()=>Promise.resolve().then(()=>require("./nb-BQfw9EEH.cjs")),"../../json/nl.json":()=>Promise.resolve().then(()=>require("./nl-CyM0R4Gr.cjs")),"../../json/pl.json":()=>Promise.resolve().then(()=>require("./pl-Da8XOMa1.cjs")),"../../json/pt.json":()=>Promise.resolve().then(()=>require("./pt-tubyvYaM.cjs")),"../../json/ro.json":()=>Promise.resolve().then(()=>require("./ro-C-rXDfuM.cjs")),"../../json/ru.json":()=>Promise.resolve().then(()=>require("./ru-DJocRaDd.cjs")),"../../json/sk.json":()=>Promise.resolve().then(()=>require("./sk-BvpojIXp.cjs")),"../../json/sl.json":()=>Promise.resolve().then(()=>require("./sl-D0X3JKvQ.cjs")),"../../json/sv.json":()=>Promise.resolve().then(()=>require("./sv-4lEgrHda.cjs")),"../../json/ta.json":()=>Promise.resolve().then(()=>require("./ta-CyeVPdIs.cjs")),"../../json/te.json":()=>Promise.resolve().then(()=>require("./te-DqWIZZxL.cjs")),"../../json/th.json":()=>Promise.resolve().then(()=>require("./th-BcoSVZAp.cjs")),"../../json/tr.json":()=>Promise.resolve().then(()=>require("./tr-BuafNhfw.cjs")),"../../json/uk.json":()=>Promise.resolve().then(()=>require("./uk-DkXNxnD9.cjs")),"../../json/vi.json":()=>Promise.resolve().then(()=>require("./vi-Ct2avSE6.cjs")),"../../json/wuu.json":()=>Promise.resolve().then(()=>require("./wuu-DnwGQ6c-.cjs")),"../../json/yue.json":()=>Promise.resolve().then(()=>require("./yue-j9Y48sR-.cjs"))});async function Qr(t){try{const e=t.split("-")[0],r=Jr[`../../json/${e}.json`];if(!r)throw new Error(`No voice data found for language: ${t}`);const i=(await r()).default;return{...i,voices:i.voices.map(Yr)}}catch(e){return console.warn(`Failed to load voice data for ${t}:`,e),{language:t,defaultRegion:"",testUtterance:"",voices:[]}}}function Ct(t){return je.has(t)||je.set(t,Qr(t)),je.get(t)}const Xr=["veryLow","low","normal","high","veryHigh"],Zr=["android","apple"],Yr=t=>({...t,quality:t.quality?.filter(e=>Xr.includes(e)),localizedName:t.localizedName&&Zr.includes(t.localizedName)?t.localizedName:void 0}),ie={cmn:"cmn","cmn-CN":"cmn-CN","cmn-TW":"cmn-TW",zh:"cmn","zh-CN":"cmn-CN","zh-TW":"cmn-TW",yue:"yue","yue-HK":"yue-HK","zh-HK":"yue-HK",wuu:"wuu","wuu-CN":"wuu-CN"},z=t=>{if(!t)return"";let e=t.toLowerCase().replace(/_/g,"-");if(/\w{2,3}-\w{2,3}/.test(e)){const[r,n]=e.split("-");e=`${r.toLowerCase()}-${n.toUpperCase()}`}return ie[e]||e},tt=async t=>{if(!t)return[];try{const e=z(t);try{const n=await Ct(e);if(n?.voices?.length)return n.voices}catch(n){console.warn(`Failed to load voices for ${e}:`,n)}const[r]=W(e);if(r!==e)try{const n=await Ct(r);if(n?.voices?.length)return n.voices}catch(n){console.warn(`Failed to load voices for base language ${r}:`,n)}return[]}catch(e){return console.error(`Error in getVoices for ${t}:`,e),[]}},Et=t=>{if(!t)return"";try{const e=z(t),r=j[e];if(r?.testUtterance)return r.testUtterance;if(e in ie){const i=ie[e];if(i&&j[i]?.testUtterance)return j[i].testUtterance}const[n]=W(e);return n!==e&&j[n]?.testUtterance?j[n].testUtterance:""}catch(e){return console.error(`Error in getTestUtterance for ${t}:`,e),""}},Le=t=>{if(!t)return"";try{const e=z(t),r=j[e];if(r?.defaultRegion)return`${e}-${r.defaultRegion}`;if(e in ie){const i=ie[e];if(i){const s=j[i];if(s?.defaultRegion)return`${i}-${s.defaultRegion}`}}const[n]=W(e);if(n!==e){const i=j[n];if(i?.defaultRegion)return`${n}-${i.defaultRegion}`}return""}catch(e){return console.error(`Failed to get default region for ${t}:`,e),""}},At=t=>{if(!t?.length)return[];const e=new Set,r=new Map,n=new Map;for(const[i,s]of t.entries()){if(!s)continue;const a=z(s),[o,u]=W(a);u&&(e.add(u),n.has(u)||n.set(u,i)),r.has(o)||r.set(o,new Set),u&&r.get(o).add(u)}return Array.from(r.entries()).map(([i,s])=>{const a=new Set(j[i]?.availableRegions||[]),o=Array.from(s),u=Array.from(e).filter(d=>a.has(d)&&!o.includes(d)),l=Array.from(new Set([...o,...u])).sort((d,h)=>{const g=n.get(d)??Number.MAX_SAFE_INTEGER,p=n.get(h)??Number.MAX_SAFE_INTEGER;return g-p});if(l.length===0){const d=Le(i),[,h]=W(d);h&&l.push(h)}return{baseLang:i,regions:l}})};async function Ee(t){const e=new Map;for(const n of t){if(n.source!=="json")continue;const[i]=W(n.language);e.has(i)||e.set(i,[]),e.get(i).push(n)}const r=new Map;for(const[n,i]of e.entries()){const s=new Map,a=await tt(n),o=new Map;a.forEach((u,l)=>{o.set(u.name.toLowerCase(),l),u.altNames?.forEach(d=>{o.set(d.toLowerCase(),l)})});for(const u of i){const l=u.name.toLowerCase(),d=o.get(l);d!==void 0&&s.set(u.name,d)}s.size>0&&r.set(n,s)}return r}const en=[{name:"Albert",nativeID:["com.apple.speech.synthesis.voice.Albert"],note:"This novelty voice is part of a pack preloaded by Apple.",os:["macOS","iOS","iPadOS"],preloaded:!0},{name:"Bad News",nativeID:["com.apple.speech.synthesis.voice.BadNews"],note:"This novelty voice is part of a pack preloaded by Apple.",altNames:["Mauvaises nouvelles","Malas noticias","Brutte notizie"],os:["macOS","iOS","iPadOS"],preloaded:!0},{name:"Bahh",nativeID:["com.apple.speech.synthesis.voice.Bahh"],note:"This novelty voice is part of a pack preloaded by Apple.",os:["macOS","iOS","iPadOS"],preloaded:!0},{name:"Bells",nativeID:["com.apple.speech.synthesis.voice.Bells"],note:"This novelty voice is part of a pack preloaded by Apple.",altNames:["Cloches","Campanas","Campane"],os:["macOS","iOS","iPadOS"],preloaded:!0},{name:"Boing",nativeID:["com.apple.speech.synthesis.voice.Boing"],note:"This novelty voice is part of a pack preloaded by Apple.",os:["macOS","iOS","iPadOS"],preloaded:!0},{name:"Bubbles",nativeID:["com.apple.speech.synthesis.voice.Bubbles"],note:"This novelty voice is part of a pack preloaded by Apple.",altNames:["Bulles","Burbujas","Bollicine"],os:["macOS","iOS","iPadOS"],preloaded:!0},{name:"Cellos",nativeID:["com.apple.speech.synthesis.voice.Cellos"],note:"This novelty voice is part of a pack preloaded by Apple.",altNames:["Violoncelles","Violonchelos","Violoncelli"],os:["macOS","iOS","iPadOS"],preloaded:!0},{name:"Good News",nativeID:["com.apple.speech.synthesis.voice.GoodNews"],note:"This novelty voice is part of a pack preloaded by Apple.",altNames:["Bonnes nouvelles","Buenas noticias","Buone notizie"],os:["macOS","iOS","iPadOS"],preloaded:!0},{name:"Jester",nativeID:["com.apple.speech.synthesis.voice.Hysterical"],note:"This novelty voice is part of a pack preloaded by Apple.",altNames:["Bouffon","Bufón","Giullare"],os:["macOS","iOS","iPadOS"],preloaded:!0},{name:"Organ",nativeID:["com.apple.speech.synthesis.voice.Organ"],note:"This novelty voice is part of a pack preloaded by Apple.",altNames:["Orgue","Órgano","Organo"],os:["macOS","iOS","iPadOS"],preloaded:!0},{name:"Superstar",nativeID:["com.apple.speech.synthesis.voice.Princess"],note:"This novelty voice is part of a pack preloaded by Apple.",altNames:["Superestrella"],os:["macOS","iOS","iPadOS"],preloaded:!0},{name:"Trinoids",nativeID:["com.apple.speech.synthesis.voice.Trinoids"],note:"This novelty voice is part of a pack preloaded by Apple.",altNames:["Trinoïdes"],os:["macOS","iOS","iPadOS"],preloaded:!0},{name:"Whisper",nativeID:["com.apple.speech.synthesis.voice.Whisper"],note:"This novelty voice is part of a pack preloaded by Apple.",altNames:["Murmure","Susurro","Sussurro"],os:["macOS","iOS","iPadOS"],preloaded:!0},{name:"Wobble",nativeID:["com.apple.speech.synthesis.voice.Deranged"],note:"This novelty voice is part of a pack preloaded by Apple.",os:["macOS","iOS","iPadOS"],preloaded:!0},{name:"Zarvox",nativeID:["com.apple.speech.synthesis.voice.Zarvox"],note:"This novelty voice is part of a pack preloaded by Apple.",os:["macOS","iOS","iPadOS"],preloaded:!0}],tn={voices:en},rn=[{name:"Eddy",localizedName:"apple",note:"Eloquence voices are preloaded by default on Apple devices.",language:"en-US",otherLanguages:["en-GB","de-DE","fr-FR","fr-CA","es-ES","es-MX","fi-FI","it-IT","ja-JP","ko-KR","pt-BR","zh-CN","zh-HK"],os:["macOS","iOS","iPadOS"],preloaded:!0},{name:"Flo",localizedName:"apple",note:"Eloquence voices are preloaded by default on Apple devices.",language:"en-US",otherLanguages:["en-GB","de-DE","fr-FR","fr-CA","es-ES","es-MX","fi-FI","it-IT","ja-JP","ko-KR","pt-BR","zh-CN","zh-HK"],os:["macOS","iOS","iPadOS"],preloaded:!0},{name:"Grandma",localizedName:"apple",note:"Eloquence voices are preloaded by default on Apple devices.",language:"en-US",otherLanguages:["en-GB","de-DE","fr-FR","fr-CA","es-ES","es-MX","fi-FI","it-IT","ja-JP","ko-KR","pt-BR","zh-CN","zh-HK"],os:["macOS","iOS","iPadOS"],preloaded:!0},{name:"Grandpa",localizedName:"apple",note:"Eloquence voices are preloaded by default on Apple devices.",language:"en-US",otherLanguages:["en-GB","de-DE","fr-FR","fr-CA","es-ES","es-MX","fi-FI","it-IT","ja-JP","ko-KR","pt-BR","zh-CN","zh-HK"],os:["macOS","iOS","iPadOS"],preloaded:!0},{name:"Jacques",localizedName:"apple",note:"Eloquence voices are preloaded by default on Apple devices.",language:"en-US",otherLanguages:["en-GB","de-DE","fr-FR","fr-CA","es-ES","es-MX","fi-FI","it-IT","ja-JP","ko-KR","pt-BR","zh-CN","zh-HK"],os:["macOS","iOS","iPadOS"],preloaded:!0},{name:"Reed",localizedName:"apple",note:"Eloquence voices are preloaded by default on Apple devices.",language:"en-US",otherLanguages:["en-GB","de-DE","fr-FR","fr-CA","es-ES","es-MX","fi-FI","it-IT","ja-JP","ko-KR","pt-BR","zh-CN","zh-HK"],os:["macOS","iOS","iPadOS"],preloaded:!0},{name:"Rocko",localizedName:"apple",note:"Eloquence voices are preloaded by default on Apple devices.",language:"en-US",otherLanguages:["en-GB","de-DE","fr-FR","fr-CA","es-ES","es-MX","fi-FI","it-IT","ja-JP","ko-KR","pt-BR","zh-CN","zh-HK"],os:["macOS","iOS","iPadOS"],preloaded:!0},{name:"Sandy",localizedName:"apple",note:"Eloquence voices are preloaded by default on Apple devices.",language:"en-US",otherLanguages:["en-GB","de-DE","fr-FR","fr-CA","es-ES","es-MX","fi-FI","it-IT","ja-JP","ko-KR","pt-BR","zh-CN","zh-HK"],os:["macOS","iOS","iPadOS"],preloaded:!0},{name:"Shelley",localizedName:"apple",note:"Eloquence voices are preloaded by default on Apple devices.",language:"en-US",otherLanguages:["en-GB","de-DE","fr-FR","fr-CA","es-ES","es-MX","fi-FI","it-IT","ja-JP","ko-KR","pt-BR","zh-CN","zh-HK"],os:["macOS","iOS","iPadOS"],preloaded:!0},{name:"Fred",language:"en-US",os:["macOS","iOS","iPadOS"],preloaded:!0},{name:"Junior",language:"en-US",os:["macOS","iOS","iPadOS"],preloaded:!0},{name:"Kathy",language:"en-US",os:["macOS","iOS","iPadOS"],preloaded:!0},{name:"Ralph",language:"en-US",os:["macOS","iOS","iPadOS"],preloaded:!0},{name:"eSpeak Arabic",note:"eSpeak voices are preloaded by default on Chrome OS.",language:"ar",os:["ChromeOS"],preloaded:!0},{name:"eSpeak Bulgarian",note:"eSpeak voices are preloaded by default on Chrome OS.",language:"bg",os:["ChromeOS"],preloaded:!0},{name:"eSpeak Bengali",note:"eSpeak voices are preloaded by default on Chrome OS.",language:"bn",os:["ChromeOS"],preloaded:!0},{name:"eSpeak Catalan",note:"eSpeak voices are preloaded by default on Chrome OS.",language:"ca",os:["ChromeOS"],preloaded:!0},{name:"eSpeak Chinese (Mandarin, latin as English)",note:"eSpeak voices are preloaded by default on Chrome OS.",language:"cmn",os:["ChromeOS"],preloaded:!0},{name:"eSpeak Czech",note:"eSpeak voices are preloaded by default on Chrome OS.",language:"cs",os:["ChromeOS"],preloaded:!0},{name:"eSpeak Danish",note:"eSpeak voices are preloaded by default on Chrome OS.",language:"da",os:["ChromeOS"],preloaded:!0},{name:"eSpeak German",note:"eSpeak voices are preloaded by default on Chrome OS.",language:"de",os:["ChromeOS"],preloaded:!0},{name:"eSpeak Greek",note:"eSpeak voices are preloaded by default on Chrome OS.",language:"el",os:["ChromeOS"],preloaded:!0},{name:"eSpeak Spanish (Spain)",note:"eSpeak voices are preloaded by default on Chrome OS.",language:"es",os:["ChromeOS"],preloaded:!0},{name:"eSpeak Estonian",note:"eSpeak voices are preloaded by default on Chrome OS.",language:"et",os:["ChromeOS"],preloaded:!0},{name:"eSpeak Finnish",note:"eSpeak voices are preloaded by default on Chrome OS.",language:"fi",os:["ChromeOS"],preloaded:!0},{name:"eSpeak Gujarati",note:"eSpeak voices are preloaded by default on Chrome OS.",language:"gu",os:["ChromeOS"],preloaded:!0},{name:"eSpeak Croatian",note:"eSpeak voices are preloaded by default on Chrome OS.",language:"hr",os:["ChromeOS"],preloaded:!0},{name:"eSpeak Hungarian",note:"eSpeak voices are preloaded by default on Chrome OS.",language:"hu",os:["ChromeOS"],preloaded:!0},{name:"eSpeak Indonesian",note:"eSpeak voices are preloaded by default on Chrome OS.",language:"id",os:["ChromeOS"],preloaded:!0},{name:"eSpeak Italian",note:"eSpeak voices are preloaded by default on Chrome OS.",language:"it",os:["ChromeOS"],preloaded:!0},{name:"eSpeak Kannada",note:"eSpeak voices are preloaded by default on Chrome OS.",language:"kn",os:["ChromeOS"],preloaded:!0},{name:"eSpeak Korean",note:"eSpeak voices are preloaded by default on Chrome OS.",language:"ko",os:["ChromeOS"],preloaded:!0},{name:"eSpeak Lithuanian",note:"eSpeak voices are preloaded by default on Chrome OS.",language:"lt",os:["ChromeOS"],preloaded:!0},{name:"eSpeak Latvian",note:"eSpeak voices are preloaded by default on Chrome OS.",language:"lv",os:["ChromeOS"],preloaded:!0},{name:"eSpeak Malayalm",note:"eSpeak voices are preloaded by default on Chrome OS.",language:"ml",os:["ChromeOS"],preloaded:!0},{name:"eSpeak Marathi",note:"eSpeak voices are preloaded by default on Chrome OS.",language:"mr",os:["ChromeOS"],preloaded:!0},{name:"eSpeak Malay",note:"eSpeak voices are preloaded by default on Chrome OS.",language:"ms",os:["ChromeOS"],preloaded:!0},{name:"eSpeak Norwegian Bokmål",note:"eSpeak voices are preloaded by default on Chrome OS.",language:"nb",os:["ChromeOS"],preloaded:!0},{name:"eSpeak Polish",note:"eSpeak voices are preloaded by default on Chrome OS.",language:"pl",os:["ChromeOS"],preloaded:!0},{name:"eSpeak Portuguese (Brazil)",note:"eSpeak voices are preloaded by default on Chrome OS.",language:"pt-br",os:["ChromeOS"],preloaded:!0},{name:"eSpeak Romanian",note:"eSpeak voices are preloaded by default on Chrome OS.",language:"ro",os:["ChromeOS"],preloaded:!0},{name:"eSpeak Russian",note:"eSpeak voices are preloaded by default on Chrome OS.",language:"ru",os:["ChromeOS"],preloaded:!0},{name:"eSpeak Slovak",note:"eSpeak voices are preloaded by default on Chrome OS.",language:"sk",os:["ChromeOS"],preloaded:!0},{name:"eSpeak Slovenian",note:"eSpeak voices are preloaded by default on Chrome OS.",language:"sl",os:["ChromeOS"],preloaded:!0},{name:"eSpeak Serbian",note:"eSpeak voices are preloaded by default on Chrome OS.",language:"sv",os:["ChromeOS"],preloaded:!0},{name:"eSpeak Swedish",note:"eSpeak voices are preloaded by default on Chrome OS.",language:"sv",os:["ChromeOS"],preloaded:!0},{name:"eSpeak Swahili",note:"eSpeak voices are preloaded by default on Chrome OS.",language:"sw",os:["ChromeOS"],preloaded:!0},{name:"eSpeak Tamil",note:"eSpeak voices are preloaded by default on Chrome OS.",language:"ta",os:["ChromeOS"],preloaded:!0},{name:"eSpeak Telugu",note:"eSpeak voices are preloaded by default on Chrome OS.",language:"te",os:["ChromeOS"],preloaded:!0},{name:"eSpeak Turkish",note:"eSpeak voices are preloaded by default on Chrome OS.",language:"tr",os:["ChromeOS"],preloaded:!0},{name:"eSpeak Vietnamese (Northern)",note:"eSpeak voices are preloaded by default on Chrome OS.",language:"vi",os:["ChromeOS"],preloaded:!0}],nn={voices:rn},sn=tn,on=nn,rt=(t,e)=>sn.voices.some(r=>t.includes(r.name)||e&&r.nativeID?.some(n=>e.includes(n))||r.altNames?.some(n=>t.includes(n))),nt=(t,e)=>on.voices.some(r=>t.includes(r.name))||e==="veryLow",Tt=t=>t?.length?t.filter(e=>!(e.isNovelty||rt(e.name,e.voiceURI))):[],Rt=t=>t?.length?t.filter(e=>!nt(e.name,e.quality)):[],an={ar:{normal:"محسن",high:"استثنائي"},ca:{normal:"millorada",high:"prèmium"},"cmn-CN":{normal:"优化音质",high:"高音质"},"cmn-TW":{normal:"增強音質",high:"高音質"},cs:{normal:"vylepšená verze",high:"prémiový"},da:{normal:"forbedret",high:"høj kvalitet"},de:{normal:"erweitert",high:"premium"},el:{normal:"βελτιωμένη",high:"υψηλής ποιότητας"},en:{normal:"Enhanced",high:"Premium"},es:{normal:"mejorada",high:"premium"},fi:{normal:"parannettu",high:"korkealaatuinen"},fr:{normal:"premium",high:"de qualité"},he:{normal:"משופר",high:"פרימיום"},hi:{normal:"बेहतर",high:"प्रीमियम"},hr:{normal:"poboljšani",high:"vrhunski"},hu:{normal:"továbbfejlesztett",high:"prémium"},id:{normal:"Ditingkatkan",high:"Premium"},it:{normal:"ottimizzata",high:"premium"},ja:{normal:"拡張",high:"プレミアム"},ko:{normal:"고품질",high:"프리미엄"},ms:{normal:"Dipertingkat",high:"Premium"},nb:{normal:"forbedret",high:"premium"},nl:{normal:"verbeterd",high:"premium"},pl:{normal:"rozszerzony",high:"premium"},pt:{normal:"melhorada",high:"premium"},ro:{normal:"îmbunătățită",high:"premium"},ru:{normal:"улучшенный",high:"высшее качество"},sk:{normal:"vylepšený",high:"prémiový"},sl:{normal:"izboljšano",high:"prvovrsten"},sv:{normal:"förbättrad",high:"premium"},th:{normal:"คุณภาพสูง",high:"คุณภาพสูง"},tr:{normal:"Geliştirilmiş",high:"Yüksek Kaliteli"},uk:{normal:"вдосконалений",high:"високої якості"},vi:{normal:"Nâng cao",high:"Cao cấp"}},ln={quality:an},it={apple:ln.quality},cn=(t,e,r)=>{if(!t)return;const n=Array.isArray(r)?r:r?[r]:[];for(const i of n)if(i&&it[i]){const s=it[i],a=W(e)[0],o=s[e]||s[a];if(o){const u=t.toLowerCase(),{normal:l,high:d}=o;if(d&&u.includes(d.toLowerCase()))return"high";if(l&&u.includes(l.toLowerCase()))return"normal"}}},un=(t,e)=>{const r=it[e];if(r)for(const[n,{high:i,normal:s}]of Object.entries(r)){const a=i&&t.some(u=>u.includes(i)),o=s&&t.some(u=>u.includes(s));if(a&&o)return n}},hn={low:{values:["super-compact","compact"],quality:"low"},normal:{values:["enhanced"],quality:"normal"},high:{values:["premium"],quality:"high"}},xt=t=>{if(!t)return;const r=t.toLowerCase().split(/[._-]/);for(const n of Object.values(hn))if(n.values.some(i=>r.includes(i)))return n.quality};function dn(t,e){if(t.name===t.originalName)return t;if(e.name===e.originalName)return e;const r=[t.originalName,...t.altNames||[]],n=[e.originalName,...e.altNames||[]],i=r.findIndex(a=>n.includes(a)),s=n.findIndex(a=>r.includes(a));return i===-1&&s===-1||i!==-1&&(s===-1||i<=s)?t:e}function gn(t,e){if(!t.altNames&&!e.altNames)return!1;const r=t.originalName,n=e.originalName,i=t.altNames||[],s=e.altNames||[];return s.includes(r)||i.includes(n)?!0:i.filter(o=>s.includes(o)).length>0}class k{static instance;static initializationPromise=null;systemLocale;voices=[];browserVoices=[];isInitialized=!1;constructor(){if(typeof window>"u"||!window.speechSynthesis)throw new Error("Web Speech API is not available in this environment");this.systemLocale=navigator.languages?.[0]?.split("-")[0]||"en"}static async initialize(e){return k.instance?.isInitialized?k.instance:(k.initializationPromise||(k.initializationPromise=(async()=>{try{const r=new k;k.instance=r,r.browserVoices=await r.getBrowserVoices(e?.maxTimeout,e?.interval),r.updateSystemLocale(r.browserVoices);let n=r.browserVoices;return e?.languages&&e.languages.length>0&&(n=r.filterBrowserVoicesByLanguages(r.browserVoices,e.languages)),r.voices=await r.parseToReadiumSpeechVoices(n),r.isInitialized=!0,r}catch(r){throw k.initializationPromise=null,console.error("Failed to initialize WebSpeechVoiceManager:",r),r}})()),k.initializationPromise)}filterBrowserVoicesByLanguages(e,r){if(!r?.length)return e;const n=new Set(r.map(i=>{const s=z(i),[a]=k.extractLangRegionFromBCP47(s);return a}));return e.filter(i=>{if(!i?.lang)return!1;const s=z(i.lang),[a]=k.extractLangRegionFromBCP47(s);return n.has(a)})}static extractLangRegionFromBCP47(e){return W(e)}static getLanguageDisplayName(e,r){try{return new Intl.DisplayNames(r?[r]:[],{type:"language",languageDisplay:"standard"}).of(e)||e.toUpperCase()}catch{return e.toUpperCase()}}cleanVoiceName(e){return e?e.replace(/\s*\([^)]*\)/g,"").replace(/[^\p{L}\p{N}\s-]/gu,"").replace(/\s+/g," ").trim():""}normalizeVoiceName(e){return this.cleanVoiceName(e.toLowerCase())}countVoiceDuplicates(e){const r=new Map;for(const n of e){if(!n?.name||!n?.lang)continue;const i=`${n.lang.toLowerCase()}_${this.normalizeVoiceName(n.name)}`;r.set(i,(r.get(i)||0)+1)}return r}updateSystemLocale(e){if(!e?.length)return;const r=e.map(i=>i.name),n=un(r,"apple");n&&(this.systemLocale=n)}inferVoiceQuality(e,r,n){const i=e.voiceURI?xt(e.voiceURI):void 0;if(i)return i;if(r?.nativeID&&Array.isArray(r.nativeID))for(const s of r.nativeID){const a=xt(s);if(a)return a}if(r?.localizedName&&e.voiceURI&&e.lang){const s=cn(e.voiceURI,this.systemLocale,r.localizedName);if(s)return s}if(r?.quality&&r.quality.length>0){const s=Math.min(n-1,r.quality.length-1),a=r.quality[s];if(a)return a}return null}findMatchingJsonVoice(e,r){return e.find(n=>this.normalizeVoiceName(n.name)===r||n.altNames?.some(i=>this.normalizeVoiceName(i)===r))}removeDuplicates(e){const r=new Map;for(const n of e){const i=`${n.language.toLowerCase()}_${this.normalizeVoiceName(n.name)}`,s=r.get(i);if(!s)r.set(i,n);else if(gn(n,s)){const a=dn(n,s);r.set(i,a)}else{const a=k.getQualityValue(s.quality);k.getQualityValue(n.quality)>=a&&r.set(i,n)}}return Array.from(r.values())}getTestUtterance(e){if(!e)return"";const r=Et(e);if(r)return r;const[n]=k.extractLangRegionFromBCP47(e);if(n&&n!==e){const i=Et(n);if(i)return i}return""}getVoices(e={}){if(!this.isInitialized)throw new Error("WebSpeechVoiceManager not initialized. Call initialize() first.");return this.filterVoices(e,[...this.voices])}getLanguages(e,r,n){if(!n&&!this.isInitialized)throw new Error("WebSpeechVoiceManager not initialized. Call initialize() first.");const i=n??this.voices,s=r?this.filterVoices(r,i):i,a=[],o=new Set;for(const u of s){const d=z(u.language).split("-")[0];if(!o.has(d)){const h=k.getLanguageDisplayName(d,e),g=s.filter(p=>z(p.language).split("-")[0]===d).length;a.push({code:d,label:h,count:g}),o.add(d)}}return n?a:a.sort((u,l)=>u.label.localeCompare(l.label))}getRegions(e,r,n){if(!n&&!this.isInitialized)throw new Error("WebSpeechVoiceManager not initialized. Call initialize() first.");const i=n??this.voices,s=r?this.filterVoices(r,i):i,a=[],o=new Set,u=new Map;for(const l of s){const[,d]=k.extractLangRegionFromBCP47(l.language);d&&u.set(d,(u.get(d)||0)+1)}for(const l of s){const[,d]=k.extractLangRegionFromBCP47(l.language);if(d&&!o.has(d)){let h=l.language;try{const g=e||navigator.language;h=new Intl.DisplayNames([g],{type:"region"}).of(d)||l.language}catch(g){console.warn(`Failed to get display name for region ${d}`,g)}a.push({code:d,label:h,count:u.get(d)||0}),o.add(d)}}return n?a:a.sort((l,d)=>l.label.localeCompare(d.label))}async getDefaultVoice(e,r){if(!e)return null;const n=Array.isArray(e)?e:[e];let i=r||this.getVoices({languages:n});return i.length?(i=await this.sortVoicesByRegions(n,i),i[0]):null}getBrowserVoices(e=1e4,r=10){const n=()=>window.speechSynthesis?.getVoices()||[];if(!window.speechSynthesis)return Promise.resolve([]);const i=n();return Array.isArray(i)&&i.length?Promise.resolve(i):new Promise((s,a)=>{let o=Math.floor(e/r),u=!1;const l=()=>{if(u)return;u=!0;const d=()=>{if(o<1)return s([]);--o;const h=n();if(Array.isArray(h)&&h.length)return s(h);setTimeout(d,r)};setTimeout(d,r)};window.speechSynthesis.onvoiceschanged!==void 0?window.speechSynthesis.onvoiceschanged=()=>{const d=n();Array.isArray(d)&&d.length?s(d):l()}:l(),setTimeout(()=>s([]),e)})}async parseToReadiumSpeechVoices(e){const r=this.countVoiceDuplicates(e);return await Promise.all(e.filter(i=>i?.name&&i?.lang).map(async i=>{const s=z(i.lang),[a]=k.extractLangRegionFromBCP47(s),o=this.normalizeVoiceName(i.name),u=`${i.lang.toLowerCase()}_${o}`,l=r.get(u)||1;let d=await tt(s);(!d||d.length===0)&&(d=await tt(a));const h=this.findMatchingJsonVoice(d,o),g=this.inferVoiceQuality(i,h,l);return h?{...h,label:h.label??this.cleanVoiceName(i.name),source:"json",originalName:i.name,language:h.language??s,voiceURI:i.voiceURI,quality:g,isDefault:i.default||!1,offlineAvailability:i.localService||!1,isNovelty:rt(i.name,i.voiceURI),isLowQuality:nt(i.name,g)}:{source:"browser",label:this.cleanVoiceName(i.name),name:i.name,originalName:i.name,language:s,voiceURI:i.voiceURI,quality:g,isDefault:i.default||!1,offlineAvailability:i.localService||!1,isNovelty:rt(i.name,i.voiceURI),isLowQuality:nt(i.name,g)}}))}convertToSpeechSynthesisVoice(e){if(e)return this.browserVoices.find(r=>r.voiceURI===e.voiceURI||r.name===e.originalName||this.normalizeVoiceName(r.name)===this.normalizeVoiceName(e.name))}filterVoices(e,r){let n=r?[...r]:[...this.voices];const i={excludeNovelty:!0,excludeVeryLowQuality:!0,removeDuplicates:!0,...e};if(i.languages){const s=Array.isArray(i.languages)?i.languages:[i.languages];n=n.filter(a=>s.some(o=>{const u=o.toLowerCase(),l=a.language?.toLowerCase(),d=a.altLanguage?.toLowerCase();if(l===u||d===u)return!0;const[h]=u.split("-");return l&&l.startsWith(h)||d&&d.startsWith(h)}))}if(i.source&&(n=n.filter(s=>s.source===i.source)),i.gender&&(n=n.filter(s=>s.gender===i.gender)),i.quality){const s=Array.isArray(i.quality)?i.quality:[i.quality];n=n.filter(a=>a.quality&&s.includes(a.quality))}return i.offlineOnly&&(n=n.filter(s=>s.offlineAvailability===!0)),i.provider&&(n=n.filter(s=>s.provider?.toLowerCase()===i.provider?.toLowerCase())),i.excludeNovelty&&(n=Tt(n)),i.excludeVeryLowQuality&&(n=Rt(n)),i.removeDuplicates&&(n=this.removeDuplicates(n)),n}filterOutNoveltyVoices(e){const r=e??this.voices;return Tt(r)}filterOutVeryLowQualityVoices(e){const r=e??this.voices;return Rt(r)}static getQualityValue(e){return e?{veryLow:1,low:2,normal:3,high:4,veryHigh:5}[e]??0:0}static sortByQuality(e,r,n,i){const s=k.getQualityValue(e.quality),a=k.getQualityValue(r.quality);if(n&&i&&e.source==="json"&&r.source==="json"){const o=n.get(i);if(o){const u=o.get(e.name),l=o.get(r.name);if(u!==void 0&&l!==void 0)return u-l}}return a!==s?a-s:e.name.localeCompare(r.name)}async sortVoicesByQuality(e){const r=e||this.voices;if(!r?.length)return[];const n=await Ee(r);return[...r].sort((i,s)=>k.sortByQuality(i,s,n))}static groupVoicesByLanguage(e,r){const n=new Map(r.map(a=>[a.baseLang,a])),i=new Map,s=[];for(const a of e){const[o]=k.extractLangRegionFromBCP47(a.language);n.get(o)?(i.has(o)||i.set(o,[]),i.get(o).push(a)):s.push(a)}return{voicesByLang:i,otherLangVoices:s}}static async sortByDefaultRegion(e,r){const n=await Ee(e),i=Le(r);e.sort((s,a)=>{const[,o]=k.extractLangRegionFromBCP47(s.language),[,u]=k.extractLangRegionFromBCP47(a.language),l=i&&o===i.split("-")[1],d=i&&u===i.split("-")[1];return l&&!d?-1:!l&&d?1:k.sortByQuality(s,a,n,r)})}static async sortAlphabetically(e){const r=await Ee(e);e.sort((n,i)=>{const[s]=k.extractLangRegionFromBCP47(n.language),[a]=k.extractLangRegionFromBCP47(i.language),o=k.getLanguageDisplayName(s).toLowerCase(),u=k.getLanguageDisplayName(a).toLowerCase(),l=o.localeCompare(u);if(l!==0)return l;if(s===a){const d=Le(s),[,h]=k.extractLangRegionFromBCP47(n.language),[,g]=k.extractLangRegionFromBCP47(i.language),p=d&&h===d.split("-")[1],f=d&&g===d.split("-")[1];if(p&&!f)return-1;if(!p&&f)return 1;if(h&&g){const b=h.localeCompare(g);if(b!==0)return b}return h&&!g?-1:!h&&g?1:k.sortByQuality(n,i,r,s)}return k.sortByQuality(n,i,r,s)})}async sortVoicesByLanguages(e,r){const n=r||this.voices;if(!n?.length)return[];if(!e?.length){const u=[...n];return await k.sortAlphabetically(u),u}const i=At(e),{voicesByLang:s,otherLangVoices:a}=k.groupVoicesByLanguage(n,i),o=[];for(const u of i){const l=s.get(u.baseLang);l&&(await k.sortByDefaultRegion(l,u.baseLang),o.push(...l))}return await k.sortAlphabetically(a),o.push(...a),o}static async sortByPreferredRegion(e,r){const n=await Ee(e);e.sort((i,s)=>{const[,a]=k.extractLangRegionFromBCP47(i.language),[,o]=k.extractLangRegionFromBCP47(s.language),u=a&&r.regions.includes(a),l=o&&r.regions.includes(o);if(u&&l){const f=r.regions.indexOf(a),b=r.regions.indexOf(o);return f===b?k.sortByQuality(i,s,n,r.baseLang):f-b}if(u)return-1;if(l)return 1;const d=Le(r.baseLang),[,h]=k.extractLangRegionFromBCP47(d),g=a===h,p=o===h;if(g&&!p)return-1;if(!g&&p)return 1;if(a&&o){const f=a.localeCompare(o);return f!==0?f:k.sortByQuality(i,s,n,r.baseLang)}return a?-1:o?1:k.sortByQuality(i,s,n,r.baseLang)})}async sortVoicesByRegions(e,r){const n=r||this.voices;if(!n?.length)return[];const i=At(e||[]),{voicesByLang:s,otherLangVoices:a}=k.groupVoicesByLanguage(n,i),o=[];for(const u of i){const l=s.get(u.baseLang);l&&(await k.sortByPreferredRegion(l,u),o.push(...l))}return await k.sortAlphabetically(a),o.push(...a),o}groupVoices(e,r){const n={},i=r||this.voices;for(const s of i){let a="Unknown";switch(e){case"languages":a=k.extractLangRegionFromBCP47(s.language)[0];break;case"gender":a=s.gender||"unknown";break;case"quality":a=s.quality||"unknown";break;case"region":const[,o]=k.extractLangRegionFromBCP47(s.language);a=o||"unknown";break}n[a]||(n[a]=[]),n[a].push(s)}return n}}const pn=["webKit","moz","ms","o"],fn=["boundary","end","error","mark","pause","resume","start"],mn=t=>`${t.charAt(0).toUpperCase()}${t.slice(1)}`,ge=(t={},e)=>Object.hasOwnProperty.call(t,e)||e in t||!!t[e],yn=t=>typeof window<"u"&&t in window,bn=t=>{const e=mn(t),r=pn.map(i=>`${i}${e}`),n=[t,e].concat(r).find(yn);return n&&typeof window<"u"?window[n]:void 0},vn=()=>{const t={};["speechSynthesis","speechSynthesisUtterance","speechSynthesisVoice","speechSynthesisEvent","speechSynthesisErrorEvent"].forEach(r=>{t[r]=bn(r)}),t.onvoiceschanged=ge(t.speechSynthesis,"onvoiceschanged"),t.speechSynthesisSpeaking=ge(t.speechSynthesis,"speaking"),t.speechSynthesisPaused=ge(t.speechSynthesis,"paused");const e=t.speechSynthesisUtterance?ge(t.speechSynthesisUtterance,"prototype"):!1;return fn.forEach(r=>{const n=`on${r}`;t[n]=e&&t.speechSynthesisUtterance?ge(t.speechSynthesisUtterance.prototype,n):!1}),t},wn=()=>{const e=typeof window<"u"&&(window.navigator||{}).userAgent||"",r=()=>/android/i.test(e),n=()=>/kaios/i.test(e),i=()=>typeof window.InstallTrigger<"u"?!0:/firefox/i.test(e),s=()=>typeof window.GestureEvent<"u"||/safari/i.test(e);return{isAndroid:r(),isFirefox:i()||n(),isSafari:s(),isKaiOS:n()}};function Sn(t){return t&&t.__esModule&&Object.prototype.hasOwnProperty.call(t,"default")?t.default:t}var ze,Nt;function On(){if(Nt)return ze;Nt=1,ze=e;function t(n){return n instanceof Buffer?Buffer.from(n):new n.constructor(n.buffer.slice(),n.byteOffset,n.length)}function e(n){if(n=n||{},n.circles)return r(n);const i=new Map;if(i.set(Date,l=>new Date(l)),i.set(Map,(l,d)=>new Map(a(Array.from(l),d))),i.set(Set,(l,d)=>new Set(a(Array.from(l),d))),n.constructorHandlers)for(const l of n.constructorHandlers)i.set(l[0],l[1]);let s=null;return n.proto?u:o;function a(l,d){const h=Object.keys(l),g=new Array(h.length);for(let p=0;p<h.length;p++){const f=h[p],b=l[f];typeof b!="object"||b===null?g[f]=b:b.constructor!==Object&&(s=i.get(b.constructor))?g[f]=s(b,d):ArrayBuffer.isView(b)?g[f]=t(b):g[f]=d(b)}return g}function o(l){if(typeof l!="object"||l===null)return l;if(Array.isArray(l))return a(l,o);if(l.constructor!==Object&&(s=i.get(l.constructor)))return s(l,o);const d={};for(const h in l){if(Object.hasOwnProperty.call(l,h)===!1)continue;const g=l[h];typeof g!="object"||g===null?d[h]=g:g.constructor!==Object&&(s=i.get(g.constructor))?d[h]=s(g,o):ArrayBuffer.isView(g)?d[h]=t(g):d[h]=o(g)}return d}function u(l){if(typeof l!="object"||l===null)return l;if(Array.isArray(l))return a(l,u);if(l.constructor!==Object&&(s=i.get(l.constructor)))return s(l,u);const d={};for(const h in l){const g=l[h];typeof g!="object"||g===null?d[h]=g:g.constructor!==Object&&(s=i.get(g.constructor))?d[h]=s(g,u):ArrayBuffer.isView(g)?d[h]=t(g):d[h]=u(g)}return d}}function r(n){const i=[],s=[],a=new Map;if(a.set(Date,h=>new Date(h)),a.set(Map,(h,g)=>new Map(u(Array.from(h),g))),a.set(Set,(h,g)=>new Set(u(Array.from(h),g))),n.constructorHandlers)for(const h of n.constructorHandlers)a.set(h[0],h[1]);let o=null;return n.proto?d:l;function u(h,g){const p=Object.keys(h),f=new Array(p.length);for(let b=0;b<p.length;b++){const m=p[b],O=h[m];if(typeof O!="object"||O===null)f[m]=O;else if(O.constructor!==Object&&(o=a.get(O.constructor)))f[m]=o(O,g);else if(ArrayBuffer.isView(O))f[m]=t(O);else{const R=i.indexOf(O);R!==-1?f[m]=s[R]:f[m]=g(O)}}return f}function l(h){if(typeof h!="object"||h===null)return h;if(Array.isArray(h))return u(h,l);if(h.constructor!==Object&&(o=a.get(h.constructor)))return o(h,l);const g={};i.push(h),s.push(g);for(const p in h){if(Object.hasOwnProperty.call(h,p)===!1)continue;const f=h[p];if(typeof f!="object"||f===null)g[p]=f;else if(f.constructor!==Object&&(o=a.get(f.constructor)))g[p]=o(f,l);else if(ArrayBuffer.isView(f))g[p]=t(f);else{const b=i.indexOf(f);b!==-1?g[p]=s[b]:g[p]=l(f)}}return i.pop(),s.pop(),g}function d(h){if(typeof h!="object"||h===null)return h;if(Array.isArray(h))return u(h,d);if(h.constructor!==Object&&(o=a.get(h.constructor)))return o(h,d);const g={};i.push(h),s.push(g);for(const p in h){const f=h[p];if(typeof f!="object"||f===null)g[p]=f;else if(f.constructor!==Object&&(o=a.get(f.constructor)))g[p]=o(f,d);else if(ArrayBuffer.isView(f))g[p]=t(f);else{const b=i.indexOf(f);b!==-1?g[p]=s[b]:g[p]=d(f)}}return i.pop(),s.pop(),g}}return ze}var kn=On();const sr=Sn(kn);sr();function st(t){if(t==null||typeof t!="object")return!1;let e=Object.getPrototypeOf(t);return e!==null&&e!==Object.prototype&&Object.getPrototypeOf(e)!==null?!1:!(Symbol.iterator in t)&&!(Symbol.toStringTag in t)}function ee(t){return typeof t=="string"}function Cn(t){return Number.isFinite(t)}function X(t){return Number.isSafeInteger(t)&&t>=0}function M(t){return t!=null}function En(t,e){return st(t)&&ee(e)&&e in t}var An=typeof globalThis=="object"&&globalThis&&globalThis.Object===Object&&globalThis,Tn=typeof self=="object"&&self&&self.Object===Object&&self,ft=An||Tn||Function("return this")(),se=ft.Symbol,or=Object.prototype,Rn=or.hasOwnProperty,xn=or.toString,pe=se?se.toStringTag:void 0;function Nn(t){var e=Rn.call(t,pe),r=t[pe];try{t[pe]=void 0;var n=!0}catch{}var i=xn.call(t);return n&&(e?t[pe]=r:delete t[pe]),i}var qn=Object.prototype,Ln=qn.toString;function In(t){return Ln.call(t)}var Pn="[object Null]",$n="[object Undefined]",qt=se?se.toStringTag:void 0;function ar(t){return t==null?t===void 0?$n:Pn:qt&&qt in Object(t)?Nn(t):In(t)}function lr(t){return t!=null&&typeof t=="object"}var Dn="[object Symbol]";function Bn(t){return typeof t=="symbol"||lr(t)&&ar(t)==Dn}function Un(t,e){for(var r=-1,n=t==null?0:t.length,i=Array(n);++r<n;)i[r]=e(t[r],r,t);return i}var jn=Array.isArray,Lt=se?se.prototype:void 0,It=Lt?Lt.toString:void 0;function mt(t){if(typeof t=="string")return t;if(jn(t))return Un(t,mt)+"";if(Bn(t))return It?It.call(t):"";var e=t+"";return e=="0"&&1/t==-1/0?"-0":e}var zn=/\s/;function Hn(t){for(var e=t.length;e--&&zn.test(t.charAt(e)););return e}var Fn=/^\s+/;function _n(t){return t&&t.slice(0,Hn(t)+1).replace(Fn,"")}function cr(t){var e=typeof t;return t!=null&&(e=="object"||e=="function")}function ur(t){return t}var Mn="[object AsyncFunction]",Vn="[object Function]",Wn="[object GeneratorFunction]",Gn="[object Proxy]";function hr(t){if(!cr(t))return!1;var e=ar(t);return e==Vn||e==Wn||e==Mn||e==Gn}var He=ft["__core-js_shared__"],Pt=(function(){var t=/[^.]+$/.exec(He&&He.keys&&He.keys.IE_PROTO||"");return t?"Symbol(src)_1."+t:""})();function Kn(t){return!!Pt&&Pt in t}var Jn=Function.prototype,Qn=Jn.toString;function Xn(t){if(t!=null){try{return Qn.call(t)}catch{}try{return t+""}catch{}}return""}var Zn=/[\\^$.*+?()[\]{}|]/g,Yn=/^\[object .+?Constructor\]$/,ei=Function.prototype,ti=Object.prototype,ri=ei.toString,ni=ti.hasOwnProperty,ii=RegExp("^"+ri.call(ni).replace(Zn,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function si(t){if(!cr(t)||Kn(t))return!1;var e=hr(t)?ii:Yn;return e.test(Xn(t))}function oi(t,e){return t?.[e]}function yt(t,e){var r=oi(t,e);return si(r)?r:void 0}function ai(t,e,r){switch(r.length){case 0:return t.call(e);case 1:return t.call(e,r[0]);case 2:return t.call(e,r[0],r[1]);case 3:return t.call(e,r[0],r[1],r[2])}return t.apply(e,r)}var li=800,ci=16,ui=Date.now;function hi(t){var e=0,r=0;return function(){var n=ui(),i=ci-(n-r);if(r=n,i>0){if(++e>=li)return arguments[0]}else e=0;return t.apply(void 0,arguments)}}function di(t){return function(){return t}}var $t=(function(){try{var t=yt(Object,"defineProperty");return t({},"",{}),t}catch{}})(),gi=$t?function(t,e){return $t(t,"toString",{configurable:!0,enumerable:!1,value:di(e),writable:!0})}:ur,pi=hi(gi);function fi(t,e,r,n){for(var i=t.length,s=r+-1;++s<i;)if(e(t[s],s,t))return s;return-1}function mi(t){return t!==t}function yi(t,e,r){for(var n=r-1,i=t.length;++n<i;)if(t[n]===e)return n;return-1}function bt(t,e,r){return e===e?yi(t,e,r):fi(t,mi,r)}function bi(t,e){var r=t==null?0:t.length;return!!r&&bt(t,e,0)>-1}function vi(t,e){return t===e||t!==t&&e!==e}var Dt=Math.max;function wi(t,e,r){return e=Dt(e===void 0?t.length-1:e,0),function(){for(var n=arguments,i=-1,s=Dt(n.length-e,0),a=Array(s);++i<s;)a[i]=n[e+i];i=-1;for(var o=Array(e+1);++i<e;)o[i]=n[i];return o[e]=r(a),ai(t,this,o)}}function Si(t,e){return pi(wi(t,e,ur),t+"")}var Oi=9007199254740991;function ki(t){return typeof t=="number"&&t>-1&&t%1==0&&t<=Oi}function Ci(t){return t!=null&&ki(t.length)&&!hr(t)}var Se=yt(Object,"create");function Ei(){this.__data__=Se?Se(null):{},this.size=0}function Ai(t){var e=this.has(t)&&delete this.__data__[t];return this.size-=e?1:0,e}var Ti="__lodash_hash_undefined__",Ri=Object.prototype,xi=Ri.hasOwnProperty;function Ni(t){var e=this.__data__;if(Se){var r=e[t];return r===Ti?void 0:r}return xi.call(e,t)?e[t]:void 0}var qi=Object.prototype,Li=qi.hasOwnProperty;function Ii(t){var e=this.__data__;return Se?e[t]!==void 0:Li.call(e,t)}var Pi="__lodash_hash_undefined__";function $i(t,e){var r=this.__data__;return this.size+=this.has(t)?0:1,r[t]=Se&&e===void 0?Pi:e,this}function K(t){var e=-1,r=t==null?0:t.length;for(this.clear();++e<r;){var n=t[e];this.set(n[0],n[1])}}K.prototype.clear=Ei;K.prototype.delete=Ai;K.prototype.get=Ni;K.prototype.has=Ii;K.prototype.set=$i;function Di(){this.__data__=[],this.size=0}function Be(t,e){for(var r=t.length;r--;)if(vi(t[r][0],e))return r;return-1}var Bi=Array.prototype,Ui=Bi.splice;function ji(t){var e=this.__data__,r=Be(e,t);if(r<0)return!1;var n=e.length-1;return r==n?e.pop():Ui.call(e,r,1),--this.size,!0}function zi(t){var e=this.__data__,r=Be(e,t);return r<0?void 0:e[r][1]}function Hi(t){return Be(this.__data__,t)>-1}function Fi(t,e){var r=this.__data__,n=Be(r,t);return n<0?(++this.size,r.push([t,e])):r[n][1]=e,this}function le(t){var e=-1,r=t==null?0:t.length;for(this.clear();++e<r;){var n=t[e];this.set(n[0],n[1])}}le.prototype.clear=Di;le.prototype.delete=ji;le.prototype.get=zi;le.prototype.has=Hi;le.prototype.set=Fi;var _i=yt(ft,"Map");function Mi(){this.size=0,this.__data__={hash:new K,map:new(_i||le),string:new K}}function Vi(t){var e=typeof t;return e=="string"||e=="number"||e=="symbol"||e=="boolean"?t!=="__proto__":t===null}function Ue(t,e){var r=t.__data__;return Vi(e)?r[typeof e=="string"?"string":"hash"]:r.map}function Wi(t){var e=Ue(this,t).delete(t);return this.size-=e?1:0,e}function Gi(t){return Ue(this,t).get(t)}function Ki(t){return Ue(this,t).has(t)}function Ji(t,e){var r=Ue(this,t),n=r.size;return r.set(t,e),this.size+=r.size==n?0:1,this}function ce(t){var e=-1,r=t==null?0:t.length;for(this.clear();++e<r;){var n=t[e];this.set(n[0],n[1])}}ce.prototype.clear=Mi;ce.prototype.delete=Wi;ce.prototype.get=Gi;ce.prototype.has=Ki;ce.prototype.set=Ji;function Qi(t){return t==null?"":mt(t)}function Xi(t,e,r){var n=-1,i=t.length;e<0&&(e=-e>i?0:i+e),r=r>i?i:r,r<0&&(r+=i),i=e>r?0:r-e>>>0,e>>>=0;for(var s=Array(i);++n<i;)s[n]=t[n+e];return s}function Zi(t,e,r){var n=t.length;return r=r===void 0?n:r,!e&&r>=n?t:Xi(t,e,r)}var Yi="\\ud800-\\udfff",es="\\u0300-\\u036f",ts="\\ufe20-\\ufe2f",rs="\\u20d0-\\u20ff",ns=es+ts+rs,is="\\ufe0e\\ufe0f",ss="\\u200d",os=RegExp("["+ss+Yi+ns+is+"]");function as(t){return os.test(t)}function ls(t){return t.split("")}var dr="\\ud800-\\udfff",cs="\\u0300-\\u036f",us="\\ufe20-\\ufe2f",hs="\\u20d0-\\u20ff",ds=cs+us+hs,gs="\\ufe0e\\ufe0f",ps="["+dr+"]",ot="["+ds+"]",at="\\ud83c[\\udffb-\\udfff]",fs="(?:"+ot+"|"+at+")",gr="[^"+dr+"]",pr="(?:\\ud83c[\\udde6-\\uddff]){2}",fr="[\\ud800-\\udbff][\\udc00-\\udfff]",ms="\\u200d",mr=fs+"?",yr="["+gs+"]?",ys="(?:"+ms+"(?:"+[gr,pr,fr].join("|")+")"+yr+mr+")*",bs=yr+mr+ys,vs="(?:"+[gr+ot+"?",ot,pr,fr,ps].join("|")+")",ws=RegExp(at+"(?="+at+")|"+vs+bs,"g");function Ss(t){return t.match(ws)||[]}function Bt(t){return as(t)?Ss(t):ls(t)}var Os="__lodash_hash_undefined__";function ks(t){return this.__data__.set(t,Os),this}function Cs(t){return this.__data__.has(t)}function Ie(t){var e=-1,r=t==null?0:t.length;for(this.__data__=new ce;++e<r;)this.add(t[e])}Ie.prototype.add=Ie.prototype.push=ks;Ie.prototype.has=Cs;function Es(t,e){return t.has(e)}function As(t){return lr(t)&&Ci(t)}var Ts=200;function Rs(t,e,r,n){var i=-1,s=bi,a=!0,o=t.length,u=[],l=e.length;if(!o)return u;e.length>=Ts&&(s=Es,a=!1,e=new Ie(e));e:for(;++i<o;){var d=t[i],h=d;if(d=d!==0?d:0,a&&h===h){for(var g=l;g--;)if(e[g]===h)continue e;u.push(d)}else s(e,h,n)||u.push(d)}return u}function xs(t,e){for(var r=t.length;r--&&bt(e,t[r],0)>-1;);return r}function Ns(t,e){for(var r=-1,n=t.length;++r<n&&bt(e,t[r],0)>-1;);return r}function Ut(t,e,r){if(t=Qi(t),t&&e===void 0)return _n(t);if(!t||!(e=mt(e)))return t;var n=Bt(t),i=Bt(e),s=Ns(n,i),a=xs(n,i)+1;return Zi(n,s,a).join("")}var qs=Si(function(t,e){return As(t)?Rs(t,e):[]}),ne=function(){return ne=Object.assign||function(t){for(var e,r=1,n=arguments.length;r<n;r++){e=arguments[r];for(var i in e)Object.prototype.hasOwnProperty.call(e,i)&&(t[i]=e[i])}return t},ne.apply(this,arguments)},Ls="~",Is="~~";function vt(t,e){for(var r={},n={},i=t.split(Is),s=!1,a=0;i.length>a;a++){for(var o=i[a].split(Ls),u=0;u<o.length;u+=2){var l=o[u],d=o[u+1],h="&"+l+";";r[h]=d,s&&(r["&"+l]=d),n[d]=h}s=!0}return e?{entities:ne(ne({},r),e.entities),characters:ne(ne({},n),e.characters)}:{entities:r,characters:n}}var Fe={xml:/&(?:#\d+|#[xX][\da-fA-F]+|[0-9a-zA-Z]+);?/g,html4:/∉|&(?:nbsp|iexcl|cent|pound|curren|yen|brvbar|sect|uml|copy|ordf|laquo|not|shy|reg|macr|deg|plusmn|sup2|sup3|acute|micro|para|middot|cedil|sup1|ordm|raquo|frac14|frac12|frac34|iquest|Agrave|Aacute|Acirc|Atilde|Auml|Aring|AElig|Ccedil|Egrave|Eacute|Ecirc|Euml|Igrave|Iacute|Icirc|Iuml|ETH|Ntilde|Ograve|Oacute|Ocirc|Otilde|Ouml|times|Oslash|Ugrave|Uacute|Ucirc|Uuml|Yacute|THORN|szlig|agrave|aacute|acirc|atilde|auml|aring|aelig|ccedil|egrave|eacute|ecirc|euml|igrave|iacute|icirc|iuml|eth|ntilde|ograve|oacute|ocirc|otilde|ouml|divide|oslash|ugrave|uacute|ucirc|uuml|yacute|thorn|yuml|quot|amp|lt|gt|#\d+|#[xX][\da-fA-F]+|[0-9a-zA-Z]+);?/g,html5:/·|℗|⋇|⪧|⩺|⋗|⦕|⩼|⪆|⥸|⋗|⋛|⪌|≷|≳|⪦|⩹|⋖|⋋|⋉|⥶|⩻|⦖|◃|⊴|◂|∉|⋹̸|⋵̸|∉|⋷|⋶|∌|∌|⋾|⋽|∥|⊠|⨱|⨰|&(?:AElig|AMP|Aacute|Acirc|Agrave|Aring|Atilde|Auml|COPY|Ccedil|ETH|Eacute|Ecirc|Egrave|Euml|GT|Iacute|Icirc|Igrave|Iuml|LT|Ntilde|Oacute|Ocirc|Ograve|Oslash|Otilde|Ouml|QUOT|REG|THORN|Uacute|Ucirc|Ugrave|Uuml|Yacute|aacute|acirc|acute|aelig|agrave|amp|aring|atilde|auml|brvbar|ccedil|cedil|cent|copy|curren|deg|divide|eacute|ecirc|egrave|eth|euml|frac12|frac14|frac34|gt|iacute|icirc|iexcl|igrave|iquest|iuml|laquo|lt|macr|micro|middot|nbsp|not|ntilde|oacute|ocirc|ograve|ordf|ordm|oslash|otilde|ouml|para|plusmn|pound|quot|raquo|reg|sect|shy|sup1|sup2|sup3|szlig|thorn|times|uacute|ucirc|ugrave|uml|uuml|yacute|yen|yuml|#\d+|#[xX][\da-fA-F]+|[0-9a-zA-Z]+);?/g},oe={};oe.xml=vt(`lt~<~gt~>~quot~"~apos~'~amp~&`);oe.html4=vt(`apos~'~OElig~Œ~oelig~œ~Scaron~Š~scaron~š~Yuml~Ÿ~circ~ˆ~tilde~˜~ensp~ ~emsp~ ~thinsp~ ~zwnj~~zwj~~lrm~~rlm~~ndash~–~mdash~—~lsquo~‘~rsquo~’~sbquo~‚~ldquo~“~rdquo~”~bdquo~„~dagger~†~Dagger~‡~permil~‰~lsaquo~‹~rsaquo~›~euro~€~fnof~ƒ~Alpha~Α~Beta~Β~Gamma~Γ~Delta~Δ~Epsilon~Ε~Zeta~Ζ~Eta~Η~Theta~Θ~Iota~Ι~Kappa~Κ~Lambda~Λ~Mu~Μ~Nu~Ν~Xi~Ξ~Omicron~Ο~Pi~Π~Rho~Ρ~Sigma~Σ~Tau~Τ~Upsilon~Υ~Phi~Φ~Chi~Χ~Psi~Ψ~Omega~Ω~alpha~α~beta~β~gamma~γ~delta~δ~epsilon~ε~zeta~ζ~eta~η~theta~θ~iota~ι~kappa~κ~lambda~λ~mu~μ~nu~ν~xi~ξ~omicron~ο~pi~π~rho~ρ~sigmaf~ς~sigma~σ~tau~τ~upsilon~υ~phi~φ~chi~χ~psi~ψ~omega~ω~thetasym~ϑ~upsih~ϒ~piv~ϖ~bull~•~hellip~…~prime~′~Prime~″~oline~‾~frasl~⁄~weierp~℘~image~ℑ~real~ℜ~trade~™~alefsym~ℵ~larr~←~uarr~↑~rarr~→~darr~↓~harr~↔~crarr~↵~lArr~⇐~uArr~⇑~rArr~⇒~dArr~⇓~hArr~⇔~forall~∀~part~∂~exist~∃~empty~∅~nabla~∇~isin~∈~notin~∉~ni~∋~prod~∏~sum~∑~minus~−~lowast~∗~radic~√~prop~∝~infin~∞~ang~∠~and~∧~or~∨~cap~∩~cup~∪~int~∫~there4~∴~sim~∼~cong~≅~asymp~≈~ne~≠~equiv~≡~le~≤~ge~≥~sub~⊂~sup~⊃~nsub~⊄~sube~⊆~supe~⊇~oplus~⊕~otimes~⊗~perp~⊥~sdot~⋅~lceil~⌈~rceil~⌉~lfloor~⌊~rfloor~⌋~lang~〈~rang~〉~loz~◊~spades~♠~clubs~♣~hearts~♥~diams~♦~~nbsp~ ~iexcl~¡~cent~¢~pound~£~curren~¤~yen~¥~brvbar~¦~sect~§~uml~¨~copy~©~ordf~ª~laquo~«~not~¬~shy~~reg~®~macr~¯~deg~°~plusmn~±~sup2~²~sup3~³~acute~´~micro~µ~para~¶~middot~·~cedil~¸~sup1~¹~ordm~º~raquo~»~frac14~¼~frac12~½~frac34~¾~iquest~¿~Agrave~À~Aacute~Á~Acirc~Â~Atilde~Ã~Auml~Ä~Aring~Å~AElig~Æ~Ccedil~Ç~Egrave~È~Eacute~É~Ecirc~Ê~Euml~Ë~Igrave~Ì~Iacute~Í~Icirc~Î~Iuml~Ï~ETH~Ð~Ntilde~Ñ~Ograve~Ò~Oacute~Ó~Ocirc~Ô~Otilde~Õ~Ouml~Ö~times~×~Oslash~Ø~Ugrave~Ù~Uacute~Ú~Ucirc~Û~Uuml~Ü~Yacute~Ý~THORN~Þ~szlig~ß~agrave~à~aacute~á~acirc~â~atilde~ã~auml~ä~aring~å~aelig~æ~ccedil~ç~egrave~è~eacute~é~ecirc~ê~euml~ë~igrave~ì~iacute~í~icirc~î~iuml~ï~eth~ð~ntilde~ñ~ograve~ò~oacute~ó~ocirc~ô~otilde~õ~ouml~ö~divide~÷~oslash~ø~ugrave~ù~uacute~ú~ucirc~û~uuml~ü~yacute~ý~thorn~þ~yuml~ÿ~quot~"~amp~&~lt~<~gt~>`);oe.html5=vt('Abreve~Ă~Acy~А~Afr~𝔄~Amacr~Ā~And~⩓~Aogon~Ą~Aopf~𝔸~ApplyFunction~~Ascr~𝒜~Assign~≔~Backslash~∖~Barv~⫧~Barwed~⌆~Bcy~Б~Because~∵~Bernoullis~ℬ~Bfr~𝔅~Bopf~𝔹~Breve~˘~Bscr~ℬ~Bumpeq~≎~CHcy~Ч~Cacute~Ć~Cap~⋒~CapitalDifferentialD~ⅅ~Cayleys~ℭ~Ccaron~Č~Ccirc~Ĉ~Cconint~∰~Cdot~Ċ~Cedilla~¸~CenterDot~·~Cfr~ℭ~CircleDot~⊙~CircleMinus~⊖~CirclePlus~⊕~CircleTimes~⊗~ClockwiseContourIntegral~∲~CloseCurlyDoubleQuote~”~CloseCurlyQuote~’~Colon~∷~Colone~⩴~Congruent~≡~Conint~∯~ContourIntegral~∮~Copf~ℂ~Coproduct~∐~CounterClockwiseContourIntegral~∳~Cross~⨯~Cscr~𝒞~Cup~⋓~CupCap~≍~DD~ⅅ~DDotrahd~⤑~DJcy~Ђ~DScy~Ѕ~DZcy~Џ~Darr~↡~Dashv~⫤~Dcaron~Ď~Dcy~Д~Del~∇~Dfr~𝔇~DiacriticalAcute~´~DiacriticalDot~˙~DiacriticalDoubleAcute~˝~DiacriticalGrave~`~DiacriticalTilde~˜~Diamond~⋄~DifferentialD~ⅆ~Dopf~𝔻~Dot~¨~DotDot~⃜~DotEqual~≐~DoubleContourIntegral~∯~DoubleDot~¨~DoubleDownArrow~⇓~DoubleLeftArrow~⇐~DoubleLeftRightArrow~⇔~DoubleLeftTee~⫤~DoubleLongLeftArrow~⟸~DoubleLongLeftRightArrow~⟺~DoubleLongRightArrow~⟹~DoubleRightArrow~⇒~DoubleRightTee~⊨~DoubleUpArrow~⇑~DoubleUpDownArrow~⇕~DoubleVerticalBar~∥~DownArrow~↓~DownArrowBar~⤓~DownArrowUpArrow~⇵~DownBreve~̑~DownLeftRightVector~⥐~DownLeftTeeVector~⥞~DownLeftVector~↽~DownLeftVectorBar~⥖~DownRightTeeVector~⥟~DownRightVector~⇁~DownRightVectorBar~⥗~DownTee~⊤~DownTeeArrow~↧~Downarrow~⇓~Dscr~𝒟~Dstrok~Đ~ENG~Ŋ~Ecaron~Ě~Ecy~Э~Edot~Ė~Efr~𝔈~Element~∈~Emacr~Ē~EmptySmallSquare~◻~EmptyVerySmallSquare~▫~Eogon~Ę~Eopf~𝔼~Equal~⩵~EqualTilde~≂~Equilibrium~⇌~Escr~ℰ~Esim~⩳~Exists~∃~ExponentialE~ⅇ~Fcy~Ф~Ffr~𝔉~FilledSmallSquare~◼~FilledVerySmallSquare~▪~Fopf~𝔽~ForAll~∀~Fouriertrf~ℱ~Fscr~ℱ~GJcy~Ѓ~Gammad~Ϝ~Gbreve~Ğ~Gcedil~Ģ~Gcirc~Ĝ~Gcy~Г~Gdot~Ġ~Gfr~𝔊~Gg~⋙~Gopf~𝔾~GreaterEqual~≥~GreaterEqualLess~⋛~GreaterFullEqual~≧~GreaterGreater~⪢~GreaterLess~≷~GreaterSlantEqual~⩾~GreaterTilde~≳~Gscr~𝒢~Gt~≫~HARDcy~Ъ~Hacek~ˇ~Hat~^~Hcirc~Ĥ~Hfr~ℌ~HilbertSpace~ℋ~Hopf~ℍ~HorizontalLine~─~Hscr~ℋ~Hstrok~Ħ~HumpDownHump~≎~HumpEqual~≏~IEcy~Е~IJlig~IJ~IOcy~Ё~Icy~И~Idot~İ~Ifr~ℑ~Im~ℑ~Imacr~Ī~ImaginaryI~ⅈ~Implies~⇒~Int~∬~Integral~∫~Intersection~⋂~InvisibleComma~~InvisibleTimes~~Iogon~Į~Iopf~𝕀~Iscr~ℐ~Itilde~Ĩ~Iukcy~І~Jcirc~Ĵ~Jcy~Й~Jfr~𝔍~Jopf~𝕁~Jscr~𝒥~Jsercy~Ј~Jukcy~Є~KHcy~Х~KJcy~Ќ~Kcedil~Ķ~Kcy~К~Kfr~𝔎~Kopf~𝕂~Kscr~𝒦~LJcy~Љ~Lacute~Ĺ~Lang~⟪~Laplacetrf~ℒ~Larr~↞~Lcaron~Ľ~Lcedil~Ļ~Lcy~Л~LeftAngleBracket~⟨~LeftArrow~←~LeftArrowBar~⇤~LeftArrowRightArrow~⇆~LeftCeiling~⌈~LeftDoubleBracket~⟦~LeftDownTeeVector~⥡~LeftDownVector~⇃~LeftDownVectorBar~⥙~LeftFloor~⌊~LeftRightArrow~↔~LeftRightVector~⥎~LeftTee~⊣~LeftTeeArrow~↤~LeftTeeVector~⥚~LeftTriangle~⊲~LeftTriangleBar~⧏~LeftTriangleEqual~⊴~LeftUpDownVector~⥑~LeftUpTeeVector~⥠~LeftUpVector~↿~LeftUpVectorBar~⥘~LeftVector~↼~LeftVectorBar~⥒~Leftarrow~⇐~Leftrightarrow~⇔~LessEqualGreater~⋚~LessFullEqual~≦~LessGreater~≶~LessLess~⪡~LessSlantEqual~⩽~LessTilde~≲~Lfr~𝔏~Ll~⋘~Lleftarrow~⇚~Lmidot~Ŀ~LongLeftArrow~⟵~LongLeftRightArrow~⟷~LongRightArrow~⟶~Longleftarrow~⟸~Longleftrightarrow~⟺~Longrightarrow~⟹~Lopf~𝕃~LowerLeftArrow~↙~LowerRightArrow~↘~Lscr~ℒ~Lsh~↰~Lstrok~Ł~Lt~≪~Map~⤅~Mcy~М~MediumSpace~ ~Mellintrf~ℳ~Mfr~𝔐~MinusPlus~∓~Mopf~𝕄~Mscr~ℳ~NJcy~Њ~Nacute~Ń~Ncaron~Ň~Ncedil~Ņ~Ncy~Н~NegativeMediumSpace~~NegativeThickSpace~~NegativeThinSpace~~NegativeVeryThinSpace~~NestedGreaterGreater~≫~NestedLessLess~≪~NewLine~\n~Nfr~𝔑~NoBreak~~NonBreakingSpace~ ~Nopf~ℕ~Not~⫬~NotCongruent~≢~NotCupCap~≭~NotDoubleVerticalBar~∦~NotElement~∉~NotEqual~≠~NotEqualTilde~≂̸~NotExists~∄~NotGreater~≯~NotGreaterEqual~≱~NotGreaterFullEqual~≧̸~NotGreaterGreater~≫̸~NotGreaterLess~≹~NotGreaterSlantEqual~⩾̸~NotGreaterTilde~≵~NotHumpDownHump~≎̸~NotHumpEqual~≏̸~NotLeftTriangle~⋪~NotLeftTriangleBar~⧏̸~NotLeftTriangleEqual~⋬~NotLess~≮~NotLessEqual~≰~NotLessGreater~≸~NotLessLess~≪̸~NotLessSlantEqual~⩽̸~NotLessTilde~≴~NotNestedGreaterGreater~⪢̸~NotNestedLessLess~⪡̸~NotPrecedes~⊀~NotPrecedesEqual~⪯̸~NotPrecedesSlantEqual~⋠~NotReverseElement~∌~NotRightTriangle~⋫~NotRightTriangleBar~⧐̸~NotRightTriangleEqual~⋭~NotSquareSubset~⊏̸~NotSquareSubsetEqual~⋢~NotSquareSuperset~⊐̸~NotSquareSupersetEqual~⋣~NotSubset~⊂⃒~NotSubsetEqual~⊈~NotSucceeds~⊁~NotSucceedsEqual~⪰̸~NotSucceedsSlantEqual~⋡~NotSucceedsTilde~≿̸~NotSuperset~⊃⃒~NotSupersetEqual~⊉~NotTilde~≁~NotTildeEqual~≄~NotTildeFullEqual~≇~NotTildeTilde~≉~NotVerticalBar~∤~Nscr~𝒩~Ocy~О~Odblac~Ő~Ofr~𝔒~Omacr~Ō~Oopf~𝕆~OpenCurlyDoubleQuote~“~OpenCurlyQuote~‘~Or~⩔~Oscr~𝒪~Otimes~⨷~OverBar~‾~OverBrace~⏞~OverBracket~⎴~OverParenthesis~⏜~PartialD~∂~Pcy~П~Pfr~𝔓~PlusMinus~±~Poincareplane~ℌ~Popf~ℙ~Pr~⪻~Precedes~≺~PrecedesEqual~⪯~PrecedesSlantEqual~≼~PrecedesTilde~≾~Product~∏~Proportion~∷~Proportional~∝~Pscr~𝒫~Qfr~𝔔~Qopf~ℚ~Qscr~𝒬~RBarr~⤐~Racute~Ŕ~Rang~⟫~Rarr~↠~Rarrtl~⤖~Rcaron~Ř~Rcedil~Ŗ~Rcy~Р~Re~ℜ~ReverseElement~∋~ReverseEquilibrium~⇋~ReverseUpEquilibrium~⥯~Rfr~ℜ~RightAngleBracket~⟩~RightArrow~→~RightArrowBar~⇥~RightArrowLeftArrow~⇄~RightCeiling~⌉~RightDoubleBracket~⟧~RightDownTeeVector~⥝~RightDownVector~⇂~RightDownVectorBar~⥕~RightFloor~⌋~RightTee~⊢~RightTeeArrow~↦~RightTeeVector~⥛~RightTriangle~⊳~RightTriangleBar~⧐~RightTriangleEqual~⊵~RightUpDownVector~⥏~RightUpTeeVector~⥜~RightUpVector~↾~RightUpVectorBar~⥔~RightVector~⇀~RightVectorBar~⥓~Rightarrow~⇒~Ropf~ℝ~RoundImplies~⥰~Rrightarrow~⇛~Rscr~ℛ~Rsh~↱~RuleDelayed~⧴~SHCHcy~Щ~SHcy~Ш~SOFTcy~Ь~Sacute~Ś~Sc~⪼~Scedil~Ş~Scirc~Ŝ~Scy~С~Sfr~𝔖~ShortDownArrow~↓~ShortLeftArrow~←~ShortRightArrow~→~ShortUpArrow~↑~SmallCircle~∘~Sopf~𝕊~Sqrt~√~Square~□~SquareIntersection~⊓~SquareSubset~⊏~SquareSubsetEqual~⊑~SquareSuperset~⊐~SquareSupersetEqual~⊒~SquareUnion~⊔~Sscr~𝒮~Star~⋆~Sub~⋐~Subset~⋐~SubsetEqual~⊆~Succeeds~≻~SucceedsEqual~⪰~SucceedsSlantEqual~≽~SucceedsTilde~≿~SuchThat~∋~Sum~∑~Sup~⋑~Superset~⊃~SupersetEqual~⊇~Supset~⋑~TRADE~™~TSHcy~Ћ~TScy~Ц~Tab~ ~Tcaron~Ť~Tcedil~Ţ~Tcy~Т~Tfr~𝔗~Therefore~∴~ThickSpace~ ~ThinSpace~ ~Tilde~∼~TildeEqual~≃~TildeFullEqual~≅~TildeTilde~≈~Topf~𝕋~TripleDot~⃛~Tscr~𝒯~Tstrok~Ŧ~Uarr~↟~Uarrocir~⥉~Ubrcy~Ў~Ubreve~Ŭ~Ucy~У~Udblac~Ű~Ufr~𝔘~Umacr~Ū~UnderBar~_~UnderBrace~⏟~UnderBracket~⎵~UnderParenthesis~⏝~Union~⋃~UnionPlus~⊎~Uogon~Ų~Uopf~𝕌~UpArrow~↑~UpArrowBar~⤒~UpArrowDownArrow~⇅~UpDownArrow~↕~UpEquilibrium~⥮~UpTee~⊥~UpTeeArrow~↥~Uparrow~⇑~Updownarrow~⇕~UpperLeftArrow~↖~UpperRightArrow~↗~Upsi~ϒ~Uring~Ů~Uscr~𝒰~Utilde~Ũ~VDash~⊫~Vbar~⫫~Vcy~В~Vdash~⊩~Vdashl~⫦~Vee~⋁~Verbar~‖~Vert~‖~VerticalBar~∣~VerticalLine~|~VerticalSeparator~❘~VerticalTilde~≀~VeryThinSpace~ ~Vfr~𝔙~Vopf~𝕍~Vscr~𝒱~Vvdash~⊪~Wcirc~Ŵ~Wedge~⋀~Wfr~𝔚~Wopf~𝕎~Wscr~𝒲~Xfr~𝔛~Xopf~𝕏~Xscr~𝒳~YAcy~Я~YIcy~Ї~YUcy~Ю~Ycirc~Ŷ~Ycy~Ы~Yfr~𝔜~Yopf~𝕐~Yscr~𝒴~ZHcy~Ж~Zacute~Ź~Zcaron~Ž~Zcy~З~Zdot~Ż~ZeroWidthSpace~~Zfr~ℨ~Zopf~ℤ~Zscr~𝒵~abreve~ă~ac~∾~acE~∾̳~acd~∿~acy~а~af~~afr~𝔞~aleph~ℵ~amacr~ā~amalg~⨿~andand~⩕~andd~⩜~andslope~⩘~andv~⩚~ange~⦤~angle~∠~angmsd~∡~angmsdaa~⦨~angmsdab~⦩~angmsdac~⦪~angmsdad~⦫~angmsdae~⦬~angmsdaf~⦭~angmsdag~⦮~angmsdah~⦯~angrt~∟~angrtvb~⊾~angrtvbd~⦝~angsph~∢~angst~Å~angzarr~⍼~aogon~ą~aopf~𝕒~ap~≈~apE~⩰~apacir~⩯~ape~≊~apid~≋~approx~≈~approxeq~≊~ascr~𝒶~ast~*~asympeq~≍~awconint~∳~awint~⨑~bNot~⫭~backcong~≌~backepsilon~϶~backprime~‵~backsim~∽~backsimeq~⋍~barvee~⊽~barwed~⌅~barwedge~⌅~bbrk~⎵~bbrktbrk~⎶~bcong~≌~bcy~б~becaus~∵~because~∵~bemptyv~⦰~bepsi~϶~bernou~ℬ~beth~ℶ~between~≬~bfr~𝔟~bigcap~⋂~bigcirc~◯~bigcup~⋃~bigodot~⨀~bigoplus~⨁~bigotimes~⨂~bigsqcup~⨆~bigstar~★~bigtriangledown~▽~bigtriangleup~△~biguplus~⨄~bigvee~⋁~bigwedge~⋀~bkarow~⤍~blacklozenge~⧫~blacksquare~▪~blacktriangle~▴~blacktriangledown~▾~blacktriangleleft~◂~blacktriangleright~▸~blank~␣~blk12~▒~blk14~░~blk34~▓~block~█~bne~=⃥~bnequiv~≡⃥~bnot~⌐~bopf~𝕓~bot~⊥~bottom~⊥~bowtie~⋈~boxDL~╗~boxDR~╔~boxDl~╖~boxDr~╓~boxH~═~boxHD~╦~boxHU~╩~boxHd~╤~boxHu~╧~boxUL~╝~boxUR~╚~boxUl~╜~boxUr~╙~boxV~║~boxVH~╬~boxVL~╣~boxVR~╠~boxVh~╫~boxVl~╢~boxVr~╟~boxbox~⧉~boxdL~╕~boxdR~╒~boxdl~┐~boxdr~┌~boxh~─~boxhD~╥~boxhU~╨~boxhd~┬~boxhu~┴~boxminus~⊟~boxplus~⊞~boxtimes~⊠~boxuL~╛~boxuR~╘~boxul~┘~boxur~└~boxv~│~boxvH~╪~boxvL~╡~boxvR~╞~boxvh~┼~boxvl~┤~boxvr~├~bprime~‵~breve~˘~bscr~𝒷~bsemi~⁏~bsim~∽~bsime~⋍~bsol~\\~bsolb~⧅~bsolhsub~⟈~bullet~•~bump~≎~bumpE~⪮~bumpe~≏~bumpeq~≏~cacute~ć~capand~⩄~capbrcup~⩉~capcap~⩋~capcup~⩇~capdot~⩀~caps~∩︀~caret~⁁~caron~ˇ~ccaps~⩍~ccaron~č~ccirc~ĉ~ccups~⩌~ccupssm~⩐~cdot~ċ~cemptyv~⦲~centerdot~·~cfr~𝔠~chcy~ч~check~✓~checkmark~✓~cir~○~cirE~⧃~circeq~≗~circlearrowleft~↺~circlearrowright~↻~circledR~®~circledS~Ⓢ~circledast~⊛~circledcirc~⊚~circleddash~⊝~cire~≗~cirfnint~⨐~cirmid~⫯~cirscir~⧂~clubsuit~♣~colon~:~colone~≔~coloneq~≔~comma~,~commat~@~comp~∁~compfn~∘~complement~∁~complexes~ℂ~congdot~⩭~conint~∮~copf~𝕔~coprod~∐~copysr~℗~cross~✗~cscr~𝒸~csub~⫏~csube~⫑~csup~⫐~csupe~⫒~ctdot~⋯~cudarrl~⤸~cudarrr~⤵~cuepr~⋞~cuesc~⋟~cularr~↶~cularrp~⤽~cupbrcap~⩈~cupcap~⩆~cupcup~⩊~cupdot~⊍~cupor~⩅~cups~∪︀~curarr~↷~curarrm~⤼~curlyeqprec~⋞~curlyeqsucc~⋟~curlyvee~⋎~curlywedge~⋏~curvearrowleft~↶~curvearrowright~↷~cuvee~⋎~cuwed~⋏~cwconint~∲~cwint~∱~cylcty~⌭~dHar~⥥~daleth~ℸ~dash~‐~dashv~⊣~dbkarow~⤏~dblac~˝~dcaron~ď~dcy~д~dd~ⅆ~ddagger~‡~ddarr~⇊~ddotseq~⩷~demptyv~⦱~dfisht~⥿~dfr~𝔡~dharl~⇃~dharr~⇂~diam~⋄~diamond~⋄~diamondsuit~♦~die~¨~digamma~ϝ~disin~⋲~div~÷~divideontimes~⋇~divonx~⋇~djcy~ђ~dlcorn~⌞~dlcrop~⌍~dollar~$~dopf~𝕕~dot~˙~doteq~≐~doteqdot~≑~dotminus~∸~dotplus~∔~dotsquare~⊡~doublebarwedge~⌆~downarrow~↓~downdownarrows~⇊~downharpoonleft~⇃~downharpoonright~⇂~drbkarow~⤐~drcorn~⌟~drcrop~⌌~dscr~𝒹~dscy~ѕ~dsol~⧶~dstrok~đ~dtdot~⋱~dtri~▿~dtrif~▾~duarr~⇵~duhar~⥯~dwangle~⦦~dzcy~џ~dzigrarr~⟿~eDDot~⩷~eDot~≑~easter~⩮~ecaron~ě~ecir~≖~ecolon~≕~ecy~э~edot~ė~ee~ⅇ~efDot~≒~efr~𝔢~eg~⪚~egs~⪖~egsdot~⪘~el~⪙~elinters~⏧~ell~ℓ~els~⪕~elsdot~⪗~emacr~ē~emptyset~∅~emptyv~∅~emsp13~ ~emsp14~ ~eng~ŋ~eogon~ę~eopf~𝕖~epar~⋕~eparsl~⧣~eplus~⩱~epsi~ε~epsiv~ϵ~eqcirc~≖~eqcolon~≕~eqsim~≂~eqslantgtr~⪖~eqslantless~⪕~equals~=~equest~≟~equivDD~⩸~eqvparsl~⧥~erDot~≓~erarr~⥱~escr~ℯ~esdot~≐~esim~≂~excl~!~expectation~ℰ~exponentiale~ⅇ~fallingdotseq~≒~fcy~ф~female~♀~ffilig~ffi~fflig~ff~ffllig~ffl~ffr~𝔣~filig~fi~fjlig~fj~flat~♭~fllig~fl~fltns~▱~fopf~𝕗~fork~⋔~forkv~⫙~fpartint~⨍~frac13~⅓~frac15~⅕~frac16~⅙~frac18~⅛~frac23~⅔~frac25~⅖~frac35~⅗~frac38~⅜~frac45~⅘~frac56~⅚~frac58~⅝~frac78~⅞~frown~⌢~fscr~𝒻~gE~≧~gEl~⪌~gacute~ǵ~gammad~ϝ~gap~⪆~gbreve~ğ~gcirc~ĝ~gcy~г~gdot~ġ~gel~⋛~geq~≥~geqq~≧~geqslant~⩾~ges~⩾~gescc~⪩~gesdot~⪀~gesdoto~⪂~gesdotol~⪄~gesl~⋛︀~gesles~⪔~gfr~𝔤~gg~≫~ggg~⋙~gimel~ℷ~gjcy~ѓ~gl~≷~glE~⪒~gla~⪥~glj~⪤~gnE~≩~gnap~⪊~gnapprox~⪊~gne~⪈~gneq~⪈~gneqq~≩~gnsim~⋧~gopf~𝕘~grave~`~gscr~ℊ~gsim~≳~gsime~⪎~gsiml~⪐~gtcc~⪧~gtcir~⩺~gtdot~⋗~gtlPar~⦕~gtquest~⩼~gtrapprox~⪆~gtrarr~⥸~gtrdot~⋗~gtreqless~⋛~gtreqqless~⪌~gtrless~≷~gtrsim~≳~gvertneqq~≩︀~gvnE~≩︀~hairsp~ ~half~½~hamilt~ℋ~hardcy~ъ~harrcir~⥈~harrw~↭~hbar~ℏ~hcirc~ĥ~heartsuit~♥~hercon~⊹~hfr~𝔥~hksearow~⤥~hkswarow~⤦~hoarr~⇿~homtht~∻~hookleftarrow~↩~hookrightarrow~↪~hopf~𝕙~horbar~―~hscr~𝒽~hslash~ℏ~hstrok~ħ~hybull~⁃~hyphen~‐~ic~~icy~и~iecy~е~iff~⇔~ifr~𝔦~ii~ⅈ~iiiint~⨌~iiint~∭~iinfin~⧜~iiota~℩~ijlig~ij~imacr~ī~imagline~ℐ~imagpart~ℑ~imath~ı~imof~⊷~imped~Ƶ~in~∈~incare~℅~infintie~⧝~inodot~ı~intcal~⊺~integers~ℤ~intercal~⊺~intlarhk~⨗~intprod~⨼~iocy~ё~iogon~į~iopf~𝕚~iprod~⨼~iscr~𝒾~isinE~⋹~isindot~⋵~isins~⋴~isinsv~⋳~isinv~∈~it~~itilde~ĩ~iukcy~і~jcirc~ĵ~jcy~й~jfr~𝔧~jmath~ȷ~jopf~𝕛~jscr~𝒿~jsercy~ј~jukcy~є~kappav~ϰ~kcedil~ķ~kcy~к~kfr~𝔨~kgreen~ĸ~khcy~х~kjcy~ќ~kopf~𝕜~kscr~𝓀~lAarr~⇚~lAtail~⤛~lBarr~⤎~lE~≦~lEg~⪋~lHar~⥢~lacute~ĺ~laemptyv~⦴~lagran~ℒ~langd~⦑~langle~⟨~lap~⪅~larrb~⇤~larrbfs~⤟~larrfs~⤝~larrhk~↩~larrlp~↫~larrpl~⤹~larrsim~⥳~larrtl~↢~lat~⪫~latail~⤙~late~⪭~lates~⪭︀~lbarr~⤌~lbbrk~❲~lbrace~{~lbrack~[~lbrke~⦋~lbrksld~⦏~lbrkslu~⦍~lcaron~ľ~lcedil~ļ~lcub~{~lcy~л~ldca~⤶~ldquor~„~ldrdhar~⥧~ldrushar~⥋~ldsh~↲~leftarrow~←~leftarrowtail~↢~leftharpoondown~↽~leftharpoonup~↼~leftleftarrows~⇇~leftrightarrow~↔~leftrightarrows~⇆~leftrightharpoons~⇋~leftrightsquigarrow~↭~leftthreetimes~⋋~leg~⋚~leq~≤~leqq~≦~leqslant~⩽~les~⩽~lescc~⪨~lesdot~⩿~lesdoto~⪁~lesdotor~⪃~lesg~⋚︀~lesges~⪓~lessapprox~⪅~lessdot~⋖~lesseqgtr~⋚~lesseqqgtr~⪋~lessgtr~≶~lesssim~≲~lfisht~⥼~lfr~𝔩~lg~≶~lgE~⪑~lhard~↽~lharu~↼~lharul~⥪~lhblk~▄~ljcy~љ~ll~≪~llarr~⇇~llcorner~⌞~llhard~⥫~lltri~◺~lmidot~ŀ~lmoust~⎰~lmoustache~⎰~lnE~≨~lnap~⪉~lnapprox~⪉~lne~⪇~lneq~⪇~lneqq~≨~lnsim~⋦~loang~⟬~loarr~⇽~lobrk~⟦~longleftarrow~⟵~longleftrightarrow~⟷~longmapsto~⟼~longrightarrow~⟶~looparrowleft~↫~looparrowright~↬~lopar~⦅~lopf~𝕝~loplus~⨭~lotimes~⨴~lowbar~_~lozenge~◊~lozf~⧫~lpar~(~lparlt~⦓~lrarr~⇆~lrcorner~⌟~lrhar~⇋~lrhard~⥭~lrtri~⊿~lscr~𝓁~lsh~↰~lsim~≲~lsime~⪍~lsimg~⪏~lsqb~[~lsquor~‚~lstrok~ł~ltcc~⪦~ltcir~⩹~ltdot~⋖~lthree~⋋~ltimes~⋉~ltlarr~⥶~ltquest~⩻~ltrPar~⦖~ltri~◃~ltrie~⊴~ltrif~◂~lurdshar~⥊~luruhar~⥦~lvertneqq~≨︀~lvnE~≨︀~mDDot~∺~male~♂~malt~✠~maltese~✠~map~↦~mapsto~↦~mapstodown~↧~mapstoleft~↤~mapstoup~↥~marker~▮~mcomma~⨩~mcy~м~measuredangle~∡~mfr~𝔪~mho~℧~mid~∣~midast~*~midcir~⫰~minusb~⊟~minusd~∸~minusdu~⨪~mlcp~⫛~mldr~…~mnplus~∓~models~⊧~mopf~𝕞~mp~∓~mscr~𝓂~mstpos~∾~multimap~⊸~mumap~⊸~nGg~⋙̸~nGt~≫⃒~nGtv~≫̸~nLeftarrow~⇍~nLeftrightarrow~⇎~nLl~⋘̸~nLt~≪⃒~nLtv~≪̸~nRightarrow~⇏~nVDash~⊯~nVdash~⊮~nacute~ń~nang~∠⃒~nap~≉~napE~⩰̸~napid~≋̸~napos~ʼn~napprox~≉~natur~♮~natural~♮~naturals~ℕ~nbump~≎̸~nbumpe~≏̸~ncap~⩃~ncaron~ň~ncedil~ņ~ncong~≇~ncongdot~⩭̸~ncup~⩂~ncy~н~neArr~⇗~nearhk~⤤~nearr~↗~nearrow~↗~nedot~≐̸~nequiv~≢~nesear~⤨~nesim~≂̸~nexist~∄~nexists~∄~nfr~𝔫~ngE~≧̸~nge~≱~ngeq~≱~ngeqq~≧̸~ngeqslant~⩾̸~nges~⩾̸~ngsim~≵~ngt~≯~ngtr~≯~nhArr~⇎~nharr~↮~nhpar~⫲~nis~⋼~nisd~⋺~niv~∋~njcy~њ~nlArr~⇍~nlE~≦̸~nlarr~↚~nldr~‥~nle~≰~nleftarrow~↚~nleftrightarrow~↮~nleq~≰~nleqq~≦̸~nleqslant~⩽̸~nles~⩽̸~nless~≮~nlsim~≴~nlt~≮~nltri~⋪~nltrie~⋬~nmid~∤~nopf~𝕟~notinE~⋹̸~notindot~⋵̸~notinva~∉~notinvb~⋷~notinvc~⋶~notni~∌~notniva~∌~notnivb~⋾~notnivc~⋽~npar~∦~nparallel~∦~nparsl~⫽⃥~npart~∂̸~npolint~⨔~npr~⊀~nprcue~⋠~npre~⪯̸~nprec~⊀~npreceq~⪯̸~nrArr~⇏~nrarr~↛~nrarrc~⤳̸~nrarrw~↝̸~nrightarrow~↛~nrtri~⋫~nrtrie~⋭~nsc~⊁~nsccue~⋡~nsce~⪰̸~nscr~𝓃~nshortmid~∤~nshortparallel~∦~nsim~≁~nsime~≄~nsimeq~≄~nsmid~∤~nspar~∦~nsqsube~⋢~nsqsupe~⋣~nsubE~⫅̸~nsube~⊈~nsubset~⊂⃒~nsubseteq~⊈~nsubseteqq~⫅̸~nsucc~⊁~nsucceq~⪰̸~nsup~⊅~nsupE~⫆̸~nsupe~⊉~nsupset~⊃⃒~nsupseteq~⊉~nsupseteqq~⫆̸~ntgl~≹~ntlg~≸~ntriangleleft~⋪~ntrianglelefteq~⋬~ntriangleright~⋫~ntrianglerighteq~⋭~num~#~numero~№~numsp~ ~nvDash~⊭~nvHarr~⤄~nvap~≍⃒~nvdash~⊬~nvge~≥⃒~nvgt~>⃒~nvinfin~⧞~nvlArr~⤂~nvle~≤⃒~nvlt~<⃒~nvltrie~⊴⃒~nvrArr~⤃~nvrtrie~⊵⃒~nvsim~∼⃒~nwArr~⇖~nwarhk~⤣~nwarr~↖~nwarrow~↖~nwnear~⤧~oS~Ⓢ~oast~⊛~ocir~⊚~ocy~о~odash~⊝~odblac~ő~odiv~⨸~odot~⊙~odsold~⦼~ofcir~⦿~ofr~𝔬~ogon~˛~ogt~⧁~ohbar~⦵~ohm~Ω~oint~∮~olarr~↺~olcir~⦾~olcross~⦻~olt~⧀~omacr~ō~omid~⦶~ominus~⊖~oopf~𝕠~opar~⦷~operp~⦹~orarr~↻~ord~⩝~order~ℴ~orderof~ℴ~origof~⊶~oror~⩖~orslope~⩗~orv~⩛~oscr~ℴ~osol~⊘~otimesas~⨶~ovbar~⌽~par~∥~parallel~∥~parsim~⫳~parsl~⫽~pcy~п~percnt~%~period~.~pertenk~‱~pfr~𝔭~phiv~ϕ~phmmat~ℳ~phone~☎~pitchfork~⋔~planck~ℏ~planckh~ℎ~plankv~ℏ~plus~+~plusacir~⨣~plusb~⊞~pluscir~⨢~plusdo~∔~plusdu~⨥~pluse~⩲~plussim~⨦~plustwo~⨧~pm~±~pointint~⨕~popf~𝕡~pr~≺~prE~⪳~prap~⪷~prcue~≼~pre~⪯~prec~≺~precapprox~⪷~preccurlyeq~≼~preceq~⪯~precnapprox~⪹~precneqq~⪵~precnsim~⋨~precsim~≾~primes~ℙ~prnE~⪵~prnap~⪹~prnsim~⋨~profalar~⌮~profline~⌒~profsurf~⌓~propto~∝~prsim~≾~prurel~⊰~pscr~𝓅~puncsp~ ~qfr~𝔮~qint~⨌~qopf~𝕢~qprime~⁗~qscr~𝓆~quaternions~ℍ~quatint~⨖~quest~?~questeq~≟~rAarr~⇛~rAtail~⤜~rBarr~⤏~rHar~⥤~race~∽̱~racute~ŕ~raemptyv~⦳~rangd~⦒~range~⦥~rangle~⟩~rarrap~⥵~rarrb~⇥~rarrbfs~⤠~rarrc~⤳~rarrfs~⤞~rarrhk~↪~rarrlp~↬~rarrpl~⥅~rarrsim~⥴~rarrtl~↣~rarrw~↝~ratail~⤚~ratio~∶~rationals~ℚ~rbarr~⤍~rbbrk~❳~rbrace~}~rbrack~]~rbrke~⦌~rbrksld~⦎~rbrkslu~⦐~rcaron~ř~rcedil~ŗ~rcub~}~rcy~р~rdca~⤷~rdldhar~⥩~rdquor~”~rdsh~↳~realine~ℛ~realpart~ℜ~reals~ℝ~rect~▭~rfisht~⥽~rfr~𝔯~rhard~⇁~rharu~⇀~rharul~⥬~rhov~ϱ~rightarrow~→~rightarrowtail~↣~rightharpoondown~⇁~rightharpoonup~⇀~rightleftarrows~⇄~rightleftharpoons~⇌~rightrightarrows~⇉~rightsquigarrow~↝~rightthreetimes~⋌~ring~˚~risingdotseq~≓~rlarr~⇄~rlhar~⇌~rmoust~⎱~rmoustache~⎱~rnmid~⫮~roang~⟭~roarr~⇾~robrk~⟧~ropar~⦆~ropf~𝕣~roplus~⨮~rotimes~⨵~rpar~)~rpargt~⦔~rppolint~⨒~rrarr~⇉~rscr~𝓇~rsh~↱~rsqb~]~rsquor~’~rthree~⋌~rtimes~⋊~rtri~▹~rtrie~⊵~rtrif~▸~rtriltri~⧎~ruluhar~⥨~rx~℞~sacute~ś~sc~≻~scE~⪴~scap~⪸~sccue~≽~sce~⪰~scedil~ş~scirc~ŝ~scnE~⪶~scnap~⪺~scnsim~⋩~scpolint~⨓~scsim~≿~scy~с~sdotb~⊡~sdote~⩦~seArr~⇘~searhk~⤥~searr~↘~searrow~↘~semi~;~seswar~⤩~setminus~∖~setmn~∖~sext~✶~sfr~𝔰~sfrown~⌢~sharp~♯~shchcy~щ~shcy~ш~shortmid~∣~shortparallel~∥~sigmav~ς~simdot~⩪~sime~≃~simeq~≃~simg~⪞~simgE~⪠~siml~⪝~simlE~⪟~simne~≆~simplus~⨤~simrarr~⥲~slarr~←~smallsetminus~∖~smashp~⨳~smeparsl~⧤~smid~∣~smile~⌣~smt~⪪~smte~⪬~smtes~⪬︀~softcy~ь~sol~/~solb~⧄~solbar~⌿~sopf~𝕤~spadesuit~♠~spar~∥~sqcap~⊓~sqcaps~⊓︀~sqcup~⊔~sqcups~⊔︀~sqsub~⊏~sqsube~⊑~sqsubset~⊏~sqsubseteq~⊑~sqsup~⊐~sqsupe~⊒~sqsupset~⊐~sqsupseteq~⊒~squ~□~square~□~squarf~▪~squf~▪~srarr~→~sscr~𝓈~ssetmn~∖~ssmile~⌣~sstarf~⋆~star~☆~starf~★~straightepsilon~ϵ~straightphi~ϕ~strns~¯~subE~⫅~subdot~⪽~subedot~⫃~submult~⫁~subnE~⫋~subne~⊊~subplus~⪿~subrarr~⥹~subset~⊂~subseteq~⊆~subseteqq~⫅~subsetneq~⊊~subsetneqq~⫋~subsim~⫇~subsub~⫕~subsup~⫓~succ~≻~succapprox~⪸~succcurlyeq~≽~succeq~⪰~succnapprox~⪺~succneqq~⪶~succnsim~⋩~succsim~≿~sung~♪~supE~⫆~supdot~⪾~supdsub~⫘~supedot~⫄~suphsol~⟉~suphsub~⫗~suplarr~⥻~supmult~⫂~supnE~⫌~supne~⊋~supplus~⫀~supset~⊃~supseteq~⊇~supseteqq~⫆~supsetneq~⊋~supsetneqq~⫌~supsim~⫈~supsub~⫔~supsup~⫖~swArr~⇙~swarhk~⤦~swarr~↙~swarrow~↙~swnwar~⤪~target~⌖~tbrk~⎴~tcaron~ť~tcedil~ţ~tcy~т~tdot~⃛~telrec~⌕~tfr~𝔱~therefore~∴~thetav~ϑ~thickapprox~≈~thicksim~∼~thkap~≈~thksim~∼~timesb~⊠~timesbar~⨱~timesd~⨰~tint~∭~toea~⤨~top~⊤~topbot~⌶~topcir~⫱~topf~𝕥~topfork~⫚~tosa~⤩~tprime~‴~triangle~▵~triangledown~▿~triangleleft~◃~trianglelefteq~⊴~triangleq~≜~triangleright~▹~trianglerighteq~⊵~tridot~◬~trie~≜~triminus~⨺~triplus~⨹~trisb~⧍~tritime~⨻~trpezium~⏢~tscr~𝓉~tscy~ц~tshcy~ћ~tstrok~ŧ~twixt~≬~twoheadleftarrow~↞~twoheadrightarrow~↠~uHar~⥣~ubrcy~ў~ubreve~ŭ~ucy~у~udarr~⇅~udblac~ű~udhar~⥮~ufisht~⥾~ufr~𝔲~uharl~↿~uharr~↾~uhblk~▀~ulcorn~⌜~ulcorner~⌜~ulcrop~⌏~ultri~◸~umacr~ū~uogon~ų~uopf~𝕦~uparrow~↑~updownarrow~↕~upharpoonleft~↿~upharpoonright~↾~uplus~⊎~upsi~υ~upuparrows~⇈~urcorn~⌝~urcorner~⌝~urcrop~⌎~uring~ů~urtri~◹~uscr~𝓊~utdot~⋰~utilde~ũ~utri~▵~utrif~▴~uuarr~⇈~uwangle~⦧~vArr~⇕~vBar~⫨~vBarv~⫩~vDash~⊨~vangrt~⦜~varepsilon~ϵ~varkappa~ϰ~varnothing~∅~varphi~ϕ~varpi~ϖ~varpropto~∝~varr~↕~varrho~ϱ~varsigma~ς~varsubsetneq~⊊︀~varsubsetneqq~⫋︀~varsupsetneq~⊋︀~varsupsetneqq~⫌︀~vartheta~ϑ~vartriangleleft~⊲~vartriangleright~⊳~vcy~в~vdash~⊢~vee~∨~veebar~⊻~veeeq~≚~vellip~⋮~verbar~|~vert~|~vfr~𝔳~vltri~⊲~vnsub~⊂⃒~vnsup~⊃⃒~vopf~𝕧~vprop~∝~vrtri~⊳~vscr~𝓋~vsubnE~⫋︀~vsubne~⊊︀~vsupnE~⫌︀~vsupne~⊋︀~vzigzag~⦚~wcirc~ŵ~wedbar~⩟~wedge~∧~wedgeq~≙~wfr~𝔴~wopf~𝕨~wp~℘~wr~≀~wreath~≀~wscr~𝓌~xcap~⋂~xcirc~◯~xcup~⋃~xdtri~▽~xfr~𝔵~xhArr~⟺~xharr~⟷~xlArr~⟸~xlarr~⟵~xmap~⟼~xnis~⋻~xodot~⨀~xopf~𝕩~xoplus~⨁~xotime~⨂~xrArr~⟹~xrarr~⟶~xscr~𝓍~xsqcup~⨆~xuplus~⨄~xutri~△~xvee~⋁~xwedge~⋀~yacy~я~ycirc~ŷ~ycy~ы~yfr~𝔶~yicy~ї~yopf~𝕪~yscr~𝓎~yucy~ю~zacute~ź~zcaron~ž~zcy~з~zdot~ż~zeetrf~ℨ~zfr~𝔷~zhcy~ж~zigrarr~⇝~zopf~𝕫~zscr~𝓏~~AMP~&~COPY~©~GT~>~LT~<~QUOT~"~REG~®',oe.html4);var Ps={0:65533,128:8364,130:8218,131:402,132:8222,133:8230,134:8224,135:8225,136:710,137:8240,138:352,139:8249,140:338,142:381,145:8216,146:8217,147:8220,148:8221,149:8226,150:8211,151:8212,152:732,153:8482,154:353,155:8250,156:339,158:382,159:376},$s=String.fromCodePoint||function(t){return String.fromCharCode(Math.floor((t-65536)/1024)+55296,(t-65536)%1024+56320)},ae=function(){return ae=Object.assign||function(t){for(var e,r=1,n=arguments.length;r<n;r++){e=arguments[r];for(var i in e)Object.prototype.hasOwnProperty.call(e,i)&&(t[i]=e[i])}return t},ae.apply(this,arguments)},Ds=ae(ae({},oe),{all:oe.html5}),Bs={scope:"body",level:"all"},_e=/&(?:#\d+|#[xX][\da-fA-F]+|[0-9a-zA-Z]+);/g,Me=/&(?:#\d+|#[xX][\da-fA-F]+|[0-9a-zA-Z]+)[;=]?/g,jt={xml:{strict:_e,attribute:Me,body:Fe.xml},html4:{strict:_e,attribute:Me,body:Fe.html4},html5:{strict:_e,attribute:Me,body:Fe.html5}},Us=ae(ae({},jt),{all:jt.html5}),br=String.fromCharCode,js=br(65533);function zs(t,e,r,n){var i=t,s=t[t.length-1];if(r&&s==="=")i=t;else if(n&&s!==";")i=t;else{var a=e[t];if(a)i=a;else if(t[0]==="&"&&t[1]==="#"){var o=t[2],u=o=="x"||o=="X"?parseInt(t.substr(3),16):parseInt(t.substr(2));i=u>=1114111?js:u>65535?$s(u):br(Ps[u]||u)}}return i}function zt(t,e){var r=e===void 0?Bs:e,n=r.level,i=n===void 0?"all":n,s=r.scope,a=s===void 0?i==="xml"?"strict":"body":s;if(!t)return"";var o=Us[i][a],u=Ds[i].entities,l=a==="attribute",d=a==="strict";return t.replace(o,function(h){return zs(h,u,l,d)})}var Hs={strictlyTwoElementsInRangeArrays:!1,progressFn:null};function Pe(t,e){if(!Array.isArray(t)||!t.length)return t;let r={...Hs,...e},n,i;if(r.strictlyTwoElementsInRangeArrays&&!t.every((o,u)=>!Array.isArray(o)||o.length!==2?(n=u,i=o.length,!1):!0))throw new TypeError(`ranges-sort: [THROW_ID_03] The first argument should be an array and must consist of arrays which are natural number indexes representing TWO string index ranges. However, ${n}th range (${JSON.stringify(t[n],null,4)}) has not two but ${i} elements!`);if(!t.every((o,u)=>!Array.isArray(o)||!Number.isInteger(o[0])||o[0]<0||!Number.isInteger(o[1])||o[1]<0?(n=u,!1):!0))throw new TypeError(`ranges-sort: [THROW_ID_04] The first argument should be an array and must consist of arrays which are natural number indexes representing string index ranges. However, ${n}th range (${JSON.stringify(t[n],null,4)}) does not consist of only natural numbers!`);let s=t.length**2,a=0;return Array.from(t).sort((o,u)=>(r.progressFn&&(a+=1,r.progressFn(Math.floor(a*100/s))),o[0]===u[0]?o[1]<u[1]?-1:o[1]>u[1]?1:0:o[0]<u[0]?-1:1))}var Ht={mergeType:1,progressFn:null,joinRangesThatTouchEdges:!0};function Fs(t,e){function r(l){return!!l&&typeof l=="object"&&!Array.isArray(l)}if(!Array.isArray(t)||!t.length)return null;let n;if(e)if(r(e)){if(n={...Ht,...e},n.progressFn&&r(n.progressFn)&&!Object.keys(n.progressFn).length)n.progressFn=null;else if(n.progressFn&&typeof n.progressFn!="function")throw new Error(`ranges-merge: [THROW_ID_01] opts.progressFn must be a function! It was given of a type: "${typeof n.progressFn}", equal to ${JSON.stringify(n.progressFn,null,4)}`);if(![1,2,"1","2"].includes(n.mergeType))throw new Error(`ranges-merge: [THROW_ID_02] opts.mergeType was customised to a wrong thing! It was given of a type: "${typeof n.mergeType}", equal to ${JSON.stringify(n.mergeType,null,4)}`);if(typeof n.joinRangesThatTouchEdges!="boolean")throw new Error(`ranges-merge: [THROW_ID_04] opts.joinRangesThatTouchEdges was customised to a wrong thing! It was given of a type: "${typeof n.joinRangesThatTouchEdges}", equal to ${JSON.stringify(n.joinRangesThatTouchEdges,null,4)}`)}else throw new Error(`emlint: [THROW_ID_03] the second input argument must be a plain object. It was given as:
|
|
2
|
+
${JSON.stringify(e,null,4)} (type ${typeof e})`);else n={...Ht};let i=t.filter(l=>Array.isArray(l)).map(l=>[...l]).filter(l=>l[2]!==void 0||l[0]!==l[1]),s,a,o;n.progressFn?s=Pe(i,{progressFn:l=>{o=Math.floor(l/5),o!==a&&(a=o,n.progressFn(o))}}):s=Pe(i);let u=s.length-1;for(let l=u;l>0;l--)n.progressFn&&(o=Math.floor((1-l/u)*78)+21,o!==a&&o>a&&(a=o,n.progressFn(o))),(s[l][0]<=s[l-1][0]||!n.joinRangesThatTouchEdges&&s[l][0]<s[l-1][1]||n.joinRangesThatTouchEdges&&s[l][0]<=s[l-1][1])&&(s[l-1][0]=Math.min(s[l][0],s[l-1][0]),s[l-1][1]=Math.max(s[l][1],s[l-1][1]),s[l][2]!==void 0&&(s[l-1][0]>=s[l][0]||s[l-1][1]<=s[l][1])&&s[l-1][2]!==null&&(s[l][2]===null&&s[l-1][2]!==null?s[l-1][2]=null:s[l-1][2]!=null?+n.mergeType==2&&s[l-1][0]===s[l][0]?s[l-1][2]=s[l][2]:s[l-1][2]+=s[l][2]:s[l-1][2]=s[l][2]),s.splice(l,1),l=s.length);return s.length?s:null}var _s={},Ms=_s.NODE_ENV==="production",Ft="Invariant failed";function Vs(t,e){if(!t){if(Ms)throw new Error(Ft);var r=Ft;throw new Error(r)}}function Ws(t,e,r){if(arguments.length===0)throw new Error("ranges-apply: [THROW_ID_01] inputs missing!");if(typeof t!="string")throw new TypeError(`ranges-apply: [THROW_ID_02] first input argument must be a string! Currently it's: ${typeof t}, equal to: ${JSON.stringify(t,null,4)}`);if(e&&!Array.isArray(e))throw new TypeError(`ranges-apply: [THROW_ID_03] second input argument must be an array (or null)! Currently it's: ${typeof e}, equal to: ${JSON.stringify(e,null,4)}`);if(!e?.filter(a=>a).length)return t;let n;Array.isArray(e)&&Number.isInteger(e[0])&&Number.isInteger(e[1])?n=[Array.from(e)]:n=Array.from(e),n.length,n.filter(a=>a).forEach((a,o)=>{if(!Array.isArray(a))throw new TypeError(`ranges-apply: [THROW_ID_05] ranges array, second input arg., has ${o}th element not an array: ${JSON.stringify(a,null,4)}, which is ${typeof a}`);if(!Number.isInteger(a[0])){if(!Number.isInteger(+a[0])||+a[0]<0)throw new TypeError(`ranges-apply: [THROW_ID_06] ranges array, second input arg. has ${o}th element, array ${JSON.stringify(a,null,0)}. Its first element is not an integer, string index, but ${typeof a[0]}, equal to: ${JSON.stringify(a[0],null,4)}.`);n[o][0]=+n[o][0]}if(!Number.isInteger(a[1])){if(!Number.isInteger(+a[1])||+a[1]<0)throw new TypeError(`ranges-apply: [THROW_ID_07] ranges array, second input arg. has ${o}th element, array ${JSON.stringify(a,null,0)}. Its second element is not an integer, string index, but ${typeof a[1]}, equal to: ${JSON.stringify(a[1],null,4)}.`);n[o][1]=+n[o][1]}});let i=Fs(n,{progressFn:a=>{}});Vs(i);let s=i.length;if(s>0){let a=t.slice(i[s-1][1]);t=i.reduce((o,u,l,d)=>{let h=l===0?0:d[l-1][1],g=d[l][0];return`${o}${t.slice(h,g)}${d[l][2]||""}`},""),t+=a}return t}function Ve(t,e=1){let r=" ";function n(s){return Array.from(s).reverse().join("")}function i(s,a,o){let u=o?`
|
|
3
|
+
`:"\r",l=o?"\r":`
|
|
4
|
+
`;if(!s)return s;let d=0,h="";for(let g=0,p=s.length;g<p;g++)(s[g]===u||s[g]===l&&s[g-1]!==u)&&d++,`\r
|
|
5
|
+
`.includes(s[g])||s[g]===r?s[g]===r?h+=s[g]:s[g]===u?d<=a&&(h+=s[g],s[g+1]===l&&(h+=s[g+1],g++)):s[g]===l&&s?.[g-1]!==u&&d<=a&&(h+=s[g]):!s[g+1]&&!d&&(h+=" ");return h}if(typeof t=="string"&&t.length){let s=1;typeof+e=="number"&&Number.isInteger(+e)&&+e>=0&&(s=+e);let a="",o="";if(!t.trim())a=t;else if(!t[0].trim()){for(let u=0,l=t.length;u<l;u++)if(t[u].trim()){a=t.slice(0,u);break}}if(t.trim()&&(t.slice(-1).trim()===""||t.slice(-1)===r)){for(let u=t.length;u--;)if(t[u].trim()){o=t.slice(u+1);break}}return`${i(a,s,!1)}${t.trim()}${n(i(n(o),s,!0))}`}return t}var _t={mergeType:1,progressFn:null,joinRangesThatTouchEdges:!0};function Gs(t,e){function r(l){return!!l&&typeof l=="object"&&!Array.isArray(l)}if(!Array.isArray(t)||!t.length)return null;let n;if(e)if(r(e)){if(n={..._t,...e},n.progressFn&&r(n.progressFn)&&!Object.keys(n.progressFn).length)n.progressFn=null;else if(n.progressFn&&typeof n.progressFn!="function")throw new Error(`ranges-merge: [THROW_ID_01] resolvedOpts.progressFn must be a function! It was given of a type: "${typeof n.progressFn}", equal to ${JSON.stringify(n.progressFn,null,4)}`);if(![1,2,"1","2"].includes(n.mergeType))throw new Error(`ranges-merge: [THROW_ID_02] resolvedOpts.mergeType was customised to a wrong thing! It was given of a type: "${typeof n.mergeType}", equal to ${JSON.stringify(n.mergeType,null,4)}`);if(typeof n.joinRangesThatTouchEdges!="boolean")throw new Error(`ranges-merge: [THROW_ID_04] resolvedOpts.joinRangesThatTouchEdges was customised to a wrong thing! It was given of a type: "${typeof n.joinRangesThatTouchEdges}", equal to ${JSON.stringify(n.joinRangesThatTouchEdges,null,4)}`)}else throw new Error(`ranges-merge: [THROW_ID_03] the second input argument must be a plain object. It was given as:
|
|
6
|
+
${JSON.stringify(e,null,4)} (type ${typeof e})`);else n={..._t};let i=t.filter(l=>Array.isArray(l)).map(l=>[...l]).filter(l=>l[2]!==void 0||l[0]!==l[1]),s,a,o;n.progressFn?s=Pe(i,{progressFn:l=>{o=Math.floor(l/5),o!==a&&(a=o,n.progressFn!=null&&n.progressFn(o))}}):s=Pe(i);let u=s.length-1;for(let l=u;l>0;l--)n.progressFn&&(o=Math.floor((1-l/u)*78)+21,o!==a&&o>a&&(a=o,n.progressFn(o))),(s[l][0]<=s[l-1][0]||!n.joinRangesThatTouchEdges&&s[l][0]<s[l-1][1]||n.joinRangesThatTouchEdges&&s[l][0]<=s[l-1][1])&&(s[l-1][0]=Math.min(s[l][0],s[l-1][0]),s[l-1][1]=Math.max(s[l][1],s[l-1][1]),s[l][2]!==void 0&&(s[l-1][0]>=s[l][0]||s[l-1][1]<=s[l][1])&&s[l-1][2]!==null&&(s[l][2]===null&&s[l-1][2]!==null?s[l-1][2]=null:s[l-1][2]!=null?+(n||{})?.mergeType==2&&s[l-1][0]===s[l][0]?s[l-1][2]=s[l][2]:s[l-1][2]+=s[l][2]:s[l-1][2]=s[l][2]),s.splice(l,1),l=s.length);return s.length?s:null}var Ks={limitToBeAddedWhitespace:!1,limitLinebreaksCount:1,mergeType:1},Js=class{constructor(e){let r={...Ks,...e};if(r.mergeType&&r.mergeType!==1&&r.mergeType!==2)if(ee(r.mergeType)&&r.mergeType.trim()==="1")r.mergeType=1;else if(ee(r.mergeType)&&r.mergeType.trim()==="2")r.mergeType=2;else throw new Error(`ranges-push: [THROW_ID_02] opts.mergeType was customised to a wrong thing! It was given of a type: "${typeof r.mergeType}", equal to ${JSON.stringify(r.mergeType,null,4)}`);this.opts=r,this.ranges=[]}ranges;opts;add(e,r,n){if(e==null&&r==null)return;if(M(e)&&!M(r)){if(Array.isArray(e)){if(e.length){if(e.some(a=>Array.isArray(a))){e.forEach(a=>{Array.isArray(a)&&this.add(...a)});return}e.length&&X(+e[0])&&X(+e[1])&&this.add(...e)}return}throw new TypeError(`ranges-push/Ranges/add(): [THROW_ID_12] the first input argument, "from" is set (${JSON.stringify(e,null,0)}) but second-one, "to" is not (${JSON.stringify(r,null,0)})`)}else if(!M(e)&&M(r))throw new TypeError(`ranges-push/Ranges/add(): [THROW_ID_13] the second input argument, "to" is set (${JSON.stringify(r,null,0)}) but first-one, "from" is not (${JSON.stringify(e,null,0)})`);let i=+e,s=+r;if(X(i)&&X(s)){if(M(n)&&!ee(n)&&!Cn(n))throw new TypeError(`ranges-push/Ranges/add(): [THROW_ID_08] The third argument, the value to add, was given not as string but ${typeof n}, equal to:
|
|
7
|
+
${JSON.stringify(n,null,4)}`);if(M(this.ranges)&&Array.isArray(this.last())&&i===this.last()[1]){if(this.last()[1]=s,this.last()[2],this.last()[2]!==null&&M(n)){let a=this.last()[2]&&this.last()[2].length&&(!this.opts?.mergeType||this.opts.mergeType===1)?`${this.last()[2]}${n}`:n;this.opts.limitToBeAddedWhitespace&&(a=Ve(a,this.opts.limitLinebreaksCount)),ee(a)&&!a.length||(this.last()[2]=a)}}else{this.ranges||(this.ranges=[]);let a=n!==void 0&&!(ee(n)&&!n.length)?[i,s,n&&this.opts.limitToBeAddedWhitespace?Ve(n,this.opts.limitLinebreaksCount):n]:[i,s];this.ranges.push(a)}}else throw X(i)&&i>=0?new TypeError(`ranges-push/Ranges/add(): [THROW_ID_10] "to" value, the second input argument, must be a natural number or zero! Currently it's of a type "${typeof s}" equal to: ${JSON.stringify(s,null,4)}`):new TypeError(`ranges-push/Ranges/add(): [THROW_ID_09] "from" value, the first input argument, must be a natural number or zero! Currently it's of a type "${typeof i}" equal to: ${JSON.stringify(i,null,4)}`)}push(e,r,n){this.add(e,r,n)}current(){return Array.isArray(this.ranges)&&this.ranges.length?(this.ranges=Gs(this.ranges,{mergeType:this.opts.mergeType}),this.ranges&&this.opts.limitToBeAddedWhitespace?this.ranges.map(e=>M(e[2])?[e[0],e[1],Ve(e[2],this.opts.limitLinebreaksCount)]:e):this.ranges):null}wipe(){this.ranges=[]}replace(e){if(Array.isArray(e)&&e.length)if(Array.isArray(e[0])&&X(e[0][0]))this.ranges=Array.from(e);else throw new Error(`ranges-push/Ranges/replace(): [THROW_ID_11] Single range was given but we expected array of arrays! The first element, ${JSON.stringify(e[0],null,4)} should be an array and its first element should be an integer, a string index.`);else this.ranges=[]}last(){return Array.isArray(this.ranges)&&this.ranges.length?this.ranges[this.ranges.length-1]:null}};sr();var We=" ";function Qs({str:t,idx:e=0,stopAtNewlines:r=!1,stopAtRawNbsp:n=!1}){if(typeof t!="string"||!t.length||((!e||typeof e!="number")&&(e=0),!t[e+1]))return null;if(t[e+1]&&(t[e+1].trim()||r&&`
|
|
8
|
+
\r`.includes(t[e+1])||n&&t[e+1]===We))return e+1;if(t[e+2]&&(t[e+2].trim()||r&&`
|
|
9
|
+
\r`.includes(t[e+2])||n&&t[e+2]===We))return e+2;for(let i=e+1,s=t.length;i<s;i++)if(t[i].trim()||r&&`
|
|
10
|
+
\r`.includes(t[i])||n&&t[i]===We)return i;return null}function B(t,e=0){return Qs({str:t,idx:e,stopAtNewlines:!1,stopAtRawNbsp:!1})}function Xs(t){return/[-_A-Za-z0-9]/.test(t)}function Mt(t,e){if(!t)return[];if(Array.isArray(t))return t.filter(r=>typeof r=="string"&&r.trim());if(typeof t=="string")return t.trim()?[t]:[];throw new TypeError(`string-strip-html/stripHtml(): [THROW_ID_05] ${e} must be array containing zero or more strings or something falsey. Currently it's equal to: ${t}, that a type of ${typeof t}.`)}function Ae(t,e,r,n){for(let i=e,s=t.length;i<s;i++){if(t.startsWith(r,i))return!0;if(t.startsWith(n,i))return!1}return!1}function Vt(t,e,r){return t?.quotes,t?.quotes?.value&&Ae(e,r+1,t.quotes.value,">"),t?.quotes?.next,Ae(e,t?.quotes?.next-1,t?.quotes?.value,">"),!t?.quotes||!Ae(e,r+1,t.quotes.value,">")&&t?.quotes?.next!==-1&&Ae(e,t?.quotes?.next-1,t?.quotes?.value,">")}function Zs(t,e){return(e.match(new RegExp(t,"g"))||[]).length}var fe=new Set(["!doctype","abbr","address","area","article","aside","audio","base","bdi","bdo","blockquote","body","br","button","canvas","caption","cite","code","col","colgroup","data","datalist","dd","del","details","dfn","dialog","div","dl","doctype","dt","em","embed","fieldset","figcaption","figure","footer","form","h1","h2","h3","h4","h5","h6","head","header","hgroup","hr","html","iframe","img","input","ins","kbd","keygen","label","legend","li","link","main","map","mark","math","menu","menuitem","meta","meter","nav","noscript","object","ol","optgroup","option","output","param","picture","pre","progress","rb","rp","rt","rtc","ruby","samp","script","section","select","slot","small","source","span","strong","style","sub","summary","sup","svg","table","tbody","td","template","textarea","tfoot","th","thead","time","title","tr","track","ul","var","video","wbr","xml"]),Ge=new Set(["a","b","i","p","q","s","u"]),Ke=new Set([".",",",";","!","?"]),Wt=new Set([".",",","?",";",")","…",'"',"»"]),Ys=new Set(["a","abbr","acronym","audio","b","bdi","bdo","big","button","canvas","cite","code","data","datalist","del","dfn","em","embed","i","iframe","input","ins","kbd","label","map","mark","meter","noscript","object","output","picture","progress","q","ruby","s","samp","select","slot","small","span","strong","sub","sup","svg","template","textarea","time","u","tt","var","video","wbr"]),Gt={ignoreTags:[],ignoreTagsWithTheirContents:[],onlyStripTags:[],stripTogetherWithTheirContents:["script","style","xml"],skipHtmlDecoding:!1,trimOnlySpaces:!1,stripRecognisedHTMLOnly:!1,dumpLinkHrefsNearby:{enabled:!1,putOnNewLine:!1,wrapHeads:"",wrapTails:""},ignoreIndentations:!1,cb:null,reportProgressFunc:null,reportProgressFuncFrom:0,reportProgressFuncTo:100};function vr(t,e){let r=Date.now(),n=[],i=[],s=[],a=[],o={};function u(){o={attributes:[]}}u();let l=null,d=null,h=null,g=!1,p={},f={tagName:"",hrefValue:"",openingTagEnds:void 0},b="",m=!1,O=null,R=!0;function E(c,v,S){if(Array.isArray(v.stripTogetherWithTheirContents)&&(v.stripTogetherWithTheirContents.includes(o.name)||v.stripTogetherWithTheirContents.includes("*")))if(o.slashPresent&&Array.isArray(n)&&n.some(w=>w.name===o.name)){for(let w=n.length;w--;)if(n[w].name===o.name){a=a.filter(([T,q])=>(T<n[w].lastOpeningBracketAt||T>=c+1)&&(q<=n[w].lastOpeningBracketAt||q>c+1));let x=c+1;o.lastClosingBracketAt&&(x=o.lastClosingBracketAt+1),a.push([n[w].lastOpeningBracketAt,x]),Wt.has(t[c])&&v.cb?v.cb({tag:o,deleteFrom:n[w].lastOpeningBracketAt,deleteTo:c+1,insert:null,rangesArr:S,proposedReturn:[n[w].lastOpeningBracketAt,c,null]}):v.cb&&v.cb({tag:o,deleteFrom:n[w].lastOpeningBracketAt,deleteTo:c,insert:"",rangesArr:S,proposedReturn:[n[w].lastOpeningBracketAt,c,""]}),n.splice(w,1);break}}else o.slashPresent||n.push(o);else Array.isArray(v.ignoreTagsWithTheirContents)&&ue(c,v,o)&&(R=!1)}function N(c,v,S,w,x,T){if(Array.isArray(A.current())&&typeof S=="number"&&A.current()[0][0]===0&&A.current()[0][1]>=S)return"";if(t.length===w&&T&&!y?.dumpLinkHrefsNearby?.enabled)return null;let q="";if(Number.isInteger(S)&&S<x&&(q+=c.slice(S,x)),Number.isInteger(w)&&w>T+1){let U=c.slice(T+1,w);w&&!B(t,w-1)&&(U=U.trimEnd()),U.includes(`
|
|
11
|
+
`)&&I(w,c)?q+=" ":q+=U}let Q=!Wt.has(c[v]),Ot=c[w-1]!==">"||!c[S].trim(),kt=!['"',"("].includes(c[x-1]),Kr=![";",".",":","!"].includes(c[v]);if((Q||Ot&&kt&&Kr)&&(Ot||kt)&&c[v]!=="!"&&(!Ys.has(o.name)||typeof S=="number"&&S<x||typeof w=="number"&&w>T+1)){let U=q.match(/\n/g);return Array.isArray(U)&&U.length?U.length===1?`
|
|
12
|
+
`:U.length===2?`
|
|
13
13
|
|
|
14
14
|
`:`
|
|
15
15
|
|
|
16
16
|
|
|
17
|
-
`:" "}return""}function
|
|
17
|
+
`:" "}return""}function L(c,v){if(c.dumpLinkHrefsNearby?.enabled&&f.tagName&&f.tagName===o.name&&o.lastOpeningBracketAt&&(f.openingTagEnds&&o.lastOpeningBracketAt>f.openingTagEnds||!f.openingTagEnds)&&(m=!0),m){let S=c.dumpLinkHrefsNearby?.putOnNewLine?`
|
|
18
18
|
|
|
19
|
-
`:"";
|
|
20
|
-
${JSON.stringify(
|
|
21
|
-
${JSON.stringify(
|
|
22
|
-
`.includes(
|
|
19
|
+
`:"";b=`${S}${f.hrefValue}`,(typeof v!="number"||B(t,v-1))&&(b+=S)}}function I(c,v){return v?v[c]==="<"&&v[c+1]!=="%":t[c]==="<"&&t[c+1]!=="%"}function D(c){return t[c]===">"&&t[c-1]!=="%"}function ue(c,v,S){if(v.ignoreTagsWithTheirContents.includes("*"))return!0;let w=t.indexOf(`<${S.name}`,c),x=t.indexOf(`</${S.name}`,c);return!S.slashPresent&&x===-1||S.slashPresent&&!i.some(T=>T.name===S.name)||x>-1&&w>-1&&w<x?!1:v.ignoreTagsWithTheirContents.includes(S.name)}if(typeof t!="string")throw new TypeError(`string-strip-html/stripHtml(): [THROW_ID_01] Input must be string! Currently it's: ${(typeof t).toLowerCase()}, equal to:
|
|
20
|
+
${JSON.stringify(t,null,4)}`);if(e)if(st(e)){if(e.reportProgressFunc&&typeof e.reportProgressFunc!="function")throw new Error(`string-strip-html/stripHtml(): [THROW_ID_03] The Optional Options Object's key reportProgressFunc, callback function, should be a function but it was given as type ${typeof e.reportProgressFunc}, equal to ${JSON.stringify(e.reportProgressFunc,null,4)}`);if(typeof e.dumpLinkHrefsNearby=="boolean"&&e.dumpLinkHrefsNearby!=null)throw new Error(`string-strip-html/stripHtml(): [THROW_ID_04] The Optional Options Object's key should be a plain object but it was given as type ${typeof e.dumpLinkHrefsNearby}, equal to ${JSON.stringify(e.dumpLinkHrefsNearby,null,4)}`)}else throw new TypeError(`string-strip-html/stripHtml(): [THROW_ID_02] Optional Options Object must be a plain object! Currently it's: ${(typeof e).toLowerCase()}, equal to:
|
|
21
|
+
${JSON.stringify(e,null,4)}`);function he(){m&&(f={tagName:"",hrefValue:"",openingTagEnds:void 0},m=!1)}let y={...Gt,...e,dumpLinkHrefsNearby:Object.assign({},Gt.dumpLinkHrefsNearby,e?.dumpLinkHrefsNearby)};if(En(y,"returnRangesOnly"))throw new TypeError("string-strip-html/stripHtml(): [THROW_ID_05] The Optional Options Object's key returnRangesOnly has been removed from the API since v.5 release.");if(y.reportProgressFunc){if(typeof y.reportProgressFuncFrom!="number")throw new Error(`string-strip-html/stripHtml(): [THROW_ID_06] The Optional Options Object's key reportProgressFuncFrom, callback function's "from" range, should be a number but it was given as type ${typeof y.reportProgressFuncFrom}, equal to ${JSON.stringify(y.reportProgressFuncFrom,null,4)}`);if(typeof y.reportProgressFuncTo!="number")throw new Error(`string-strip-html/stripHtml(): [THROW_ID_07] The Optional Options Object's key reportProgressFuncTo, callback function's "to" range, should be a number but it was given as type ${typeof y.reportProgressFuncTo}, equal to ${JSON.stringify(y.reportProgressFuncTo,null,4)}`)}y.ignoreTags=Mt(y.ignoreTags,"resolvedOpts.ignoreTags"),y.onlyStripTags=Mt(y.onlyStripTags,"resolvedOpts.onlyStripTags");let wt=!!y.onlyStripTags.length;y.onlyStripTags.length&&y.ignoreTags.length&&(y.onlyStripTags=qs(y.onlyStripTags,...y.ignoreTags)),y.stripTogetherWithTheirContents?typeof y.stripTogetherWithTheirContents=="string"&&y.stripTogetherWithTheirContents.length&&(y.stripTogetherWithTheirContents=[y.stripTogetherWithTheirContents]):y.stripTogetherWithTheirContents=[];let de={};if(y.stripTogetherWithTheirContents&&Array.isArray(y.stripTogetherWithTheirContents)&&y.stripTogetherWithTheirContents.length&&!y.stripTogetherWithTheirContents.every((c,v)=>typeof c!="string"?(de.el=c,de.i=v,!1):!0))throw new TypeError(`string-strip-html/stripHtml(): [THROW_ID_08] Optional Options Object's key stripTogetherWithTheirContents was set to contain not just string elements! For example, element at index ${de.i} has a value ${de.el} which is not string but ${(typeof de.el).toLowerCase()}.`);y.cb||(y.cb=({rangesArr:c,proposedReturn:v})=>{v&&c.push(...v)});let A=new Js({limitToBeAddedWhitespace:!0,limitLinebreaksCount:2});if(!y.skipHtmlDecoding)for(;t!==zt(t,{scope:"strict"});)t=zt(t,{scope:"strict"});let G=!1,F=!1,Ce=0,St=0,$=t.length,Gr=Math.floor($/2);for(let c=0;c<$;c++){if(y.reportProgressFunc&&($>1e3&&$<2e3?c===Gr&&y.reportProgressFunc(Math.floor((y.reportProgressFuncTo-y.reportProgressFuncFrom)/2)):$>=2e3&&(Ce=y.reportProgressFuncFrom+Math.floor(c/$*(y.reportProgressFuncTo-y.reportProgressFuncFrom)),Ce!==St&&(St=Ce,y.reportProgressFunc(Ce)))),Object.keys(o).length>1&&o.lastClosingBracketAt&&o.lastClosingBracketAt<c&&t[c]!==" "&&O===null&&(O=c),!G&&t[c]==="%"&&t[c-1]==="{"&&t.includes("%}",c+1)){h=null;let v=t.indexOf("%}",c)-1;if(v>c){c=v;continue}}if(!G&&D(c)&&(!o||Object.keys(o).length<2)&&c>1){for(let v=c;v--;)if(t[v-1]===void 0||D(v)){let S=t[v-1]===void 0?v:v+1,w=t.slice(S,c+1)||"";if((w.includes("/>")||w.includes("/ >")||w.includes('="')||w.includes("='"))&&t!==`<${Ut(w.trim(),"/>")}>`&&[...fe].some(x=>Ut(w.trim().split(/\s+/).filter(T=>T.trim()).filter((T,q)=>q===0),"/>").toLowerCase()===x)&&vr(`<${w.trim()}>`,y).result===""){(!s.length||s[s.length-1][0]!==o.lastOpeningBracketAt)&&s.push([S,c+1]),(!a.length||a[a.length-1][0]!==o.lastOpeningBracketAt)&&a.push([S,c+1]);let x=N(t,c,S,c+1,S,c+1),T=c+1;if(t[T]&&!t[T].trim()){for(let q=T;q<$;q++)if(t[q].trim()){T=q;break}}y.cb({tag:o,deleteFrom:S,deleteTo:T,insert:x,rangesArr:A,proposedReturn:[S,T,x]})}break}}if(!F&&t[c]==="/"&&!o.quotes?.value&&Number.isInteger(o.lastOpeningBracketAt)&&!Number.isInteger(o.lastClosingBracketAt)&&(o.slashPresent=c),t[c]==='"'||t[c]==="'")if(!F&&o.nameStarts&&o?.quotes?.value===t[c])if(p.valueStarts===void 0)p={},delete o.quotes;else{p.valueEnds=c,p.value=t.slice(p.valueStarts,c),o.attributes.push(p),p={},delete o.quotes;let v;y.dumpLinkHrefsNearby?.enabled&&!n.length&&o.attributes.some(S=>{if(typeof S.name=="string"&&S.name.toLowerCase()==="href")return v=`${y.dumpLinkHrefsNearby?.wrapHeads||""}${S.value}${y.dumpLinkHrefsNearby?.wrapTails||""}`,!0})&&(f={tagName:o.name,hrefValue:v,openingTagEnds:void 0})}else!F&&!o.quotes&&o.nameStarts&&(o.quotes={},o.quotes.value=t[c],o.quotes.start=c,o.quotes.next=t.indexOf(t[c],c+1),p.nameStarts&&p.nameEnds&&p.nameEnds<c&&p.nameStarts<c&&!p.valueStarts&&(p.name=t.slice(p.nameStarts,p.nameEnds)));if(o.nameStarts!==void 0&&o.nameEnds===void 0&&(!t[c].trim()||!Xs(t[c]))){if(o.nameEnds=c,o.name=t.slice(o.nameStarts,o.nameEnds+(!D(c)&&t[c]!=="/"&&t[c+1]===void 0?1:0)),t[o.nameStarts-1]!=="!"&&!o.name.replace(/-/g,"").length||/^\d+$/.test(o.name[0])){o={};continue}if(typeof o.name=="string"&&o.name.toLowerCase()==="doctype"&&(F=!0),I(c)){L(y);let v=N(t,c,o.leftOuterWhitespace,c,o.lastOpeningBracketAt,c);(y.stripTogetherWithTheirContents.includes(o.name)||y.stripTogetherWithTheirContents.includes("*"))&&(a=a.filter(([S,w])=>!(S===o.leftOuterWhitespace&&w===c))),y.cb({tag:o,deleteFrom:o.leftOuterWhitespace,deleteTo:c,insert:`${v}${b}${v}`,rangesArr:A,proposedReturn:[o.leftOuterWhitespace,c,`${v}${b}${v}`]}),he(),E(c,y,A)}}if(o.quotes?.start&&o.quotes.start<c&&!o.quotes.end&&p.nameEnds&&p.equalsAt&&!p.valueStarts&&(p.valueStarts=c),!o.quotes&&p.nameEnds&&t[c]==="="&&!p.valueStarts&&!p.equalsAt&&(p.equalsAt=c),!o.quotes&&p.nameStarts&&p.nameEnds&&!p.valueStarts&&t[c].trim()&&t[c]!=="="&&(o.attributes.push(p),p={}),!o.quotes&&p.nameStarts&&!p.nameEnds&&(F&&`'"`.includes(t[p.nameStarts])?p.nameStarts<c&&t[c]===t[p.nameStarts]&&(p.nameEnds=c+1,p.name=t.slice(p.nameStarts,p.nameEnds)):t[c].trim()?t[c]==="="?p.equalsAt||(p.nameEnds=c,p.equalsAt=c,p.name=t.slice(p.nameStarts,p.nameEnds)):t[c]==="/"||D(c)?(p.nameEnds=c,p.name=t.slice(p.nameStarts,p.nameEnds),o.attributes.push(p),p={}):I(c)&&(p.nameEnds=c,p.name=t.slice(p.nameStarts,p.nameEnds),o.attributes.push(p),p={}):(p.nameEnds=c,p.name=t.slice(p.nameStarts,p.nameEnds))),!o.quotes&&o.nameEnds<c&&!t[c-1].trim()&&t[c].trim()&&!"<>/!".includes(t[c])&&!p.nameStarts&&!o.lastClosingBracketAt&&(p.nameStarts=c),o.lastOpeningBracketAt!==null&&o.lastOpeningBracketAt<c&&t[c]==="/"&&o.onlyPlausible&&(o.onlyPlausible=!1),o.lastOpeningBracketAt!==null&&o.lastOpeningBracketAt<c&&t[c]!=="/"&&(o.onlyPlausible===void 0&&((!t[c].trim()||I(c))&&!o.slashPresent?o.onlyPlausible=!0:o.onlyPlausible=!1),t[c].trim()&&o.nameStarts===void 0&&!I(c)&&t[c]!=="/"&&!D(c)&&t[c]!=="!"&&(o.nameStarts=c,o.nameContainsLetters=!1)),o.nameStarts&&!o.quotes&&typeof t[c]=="string"&&t[c].toLowerCase()!==t[c].toUpperCase()&&(o.nameContainsLetters=!0),D(c)&&(Vt(o,t,c)||o.quotes.value&&typeof o.lastOpeningBracketAt=="number"&&Zs(o.quotes.value,t.slice(o.lastOpeningBracketAt,c))%2===1&&!t.slice(o.lastOpeningBracketAt+1,c).includes("<")&&!t.slice(o.lastOpeningBracketAt+1,c).includes(">"))&&o.lastOpeningBracketAt!==void 0&&(o.lastClosingBracketAt=c,O=null,Object.keys(p).length&&(o.attributes.push(p),p={}),y.dumpLinkHrefsNearby?.enabled&&f.tagName&&!f.openingTagEnds&&(f.openingTagEnds=c)),(!F||t[c]===">")&&o.lastOpeningBracketAt!==void 0){if(o.lastClosingBracketAt===void 0){if(o.lastOpeningBracketAt<c&&!I(c)&&(t[c+1]===void 0||I(c+1)&&!o?.quotes?.value)&&o.nameContainsLetters&&typeof o.nameStarts=="number"){if(o.name=t.slice(o.nameStarts,o.nameEnds||c+1).toLowerCase(),(!s.length||s[s.length-1][0]!==o.lastOpeningBracketAt)&&s.push([o.lastOpeningBracketAt,c+1]),y.ignoreTags.includes(o.name)||ue(c,y,o)||!fe.has(o.name)&&(o.onlyPlausible||y.stripRecognisedHTMLOnly)){o={},p={};continue}if((fe.has(o.name)||Ge.has(o.name))&&(o.onlyPlausible===!1||o.onlyPlausible===!0&&o.attributes.length)||t[c+1]===void 0){L(y);let v=N(t,c,o.leftOuterWhitespace,c+1,o.lastOpeningBracketAt,o.lastClosingBracketAt);G&&o.name==="script"&&o.slashPresent&&(G=!1);let S;v===null||b===null?S=null:S=`${v}${b}${v}`,y.cb({tag:o,deleteFrom:o.leftOuterWhitespace,deleteTo:c+1,insert:S,rangesArr:A,proposedReturn:[o.leftOuterWhitespace,c+1,S]}),he(),E(c,y,A)}if(!a.length||a[a.length-1][0]!==o.lastOpeningBracketAt&&a[a.length-1][1]!==c+1)if(y.stripTogetherWithTheirContents.includes(o.name)||y.stripTogetherWithTheirContents.includes("*")){let v;for(let S=n.length;S--;)n[S].name===o.name&&(v=n[S]);v?(a=a.filter(([S])=>S!==v.lastOpeningBracketAt),a.push([v.lastOpeningBracketAt,c+1])):a.push([o.lastOpeningBracketAt,c+1])}else a.push([o.lastOpeningBracketAt,c+1])}}else if(c>o.lastClosingBracketAt&&t[c].trim()||t[c+1]===void 0||y.ignoreIndentations&&`\r
|
|
22
|
+
`.includes(t[c])){let v=o.lastClosingBracketAt===c?c+1:c;y.trimOnlySpaces&&v===$-1&&O!==null&&O<c&&(v=O),(!s.length||s[s.length-1][0]!==o.lastOpeningBracketAt)&&s.push([o.lastOpeningBracketAt,o.lastClosingBracketAt+1]);let S=y.ignoreTags.includes(o.name),w=ue(c,y,o);if(!R||y.stripRecognisedHTMLOnly&&typeof o.name=="string"&&!fe.has(o.name.toLowerCase())&&!Ge.has(o.name.toLowerCase())||!wt&&(S||w)||wt&&!y.onlyStripTags.includes(o.name)||y.ignoreTagsWithTheirContents.includes(o.name)){if(w)if(o.slashPresent){for(let x=i.length;x--;)if(i[x].name===o.name){i.splice(x,1);break}i.length||(R=!0)}else R&&(R=!1),i.push(o);y.cb({tag:o,deleteFrom:null,deleteTo:null,insert:null,rangesArr:A,proposedReturn:null}),o={},p={}}else if(!o.onlyPlausible||o.attributes.length===0&&o.name&&(fe.has(o.name.toLowerCase())||Ge.has(o.name.toLowerCase()))||o.attributes?.some(x=>x.equalsAt)){(!a.length||a[a.length-1][0]!==o.lastOpeningBracketAt)&&a.push([o.lastOpeningBracketAt,o.lastClosingBracketAt+1]);let x=N(t,c,o.leftOuterWhitespace,v,o.lastOpeningBracketAt,o.lastClosingBracketAt);b="",m=!1,L(y,v);let T;typeof b=="string"&&b.length?(T=`${x}${b}${x===`
|
|
23
23
|
|
|
24
24
|
`?`
|
|
25
|
-
`:
|
|
26
|
-
`)?
|
|
27
|
-
`||e[o]==="\r")&&(p=o,d&&(d=!1))):(l!==null&&(!a.quotes&&h.equalsAt>l-1&&h.nameEnds&&h.equalsAt>h.nameEnds&&e[o]!=='"'&&e[o]!=="'"&&(Le(h)&&a.attributes.push(h),h={},a.equalsSpottedAt=void 0),l=null),d||(d=!0,N&&!$&&typeof p=="number"&&o&&p<o-1&&(e.slice(p+1,o).trim()?p=null:f.ignoreIndentations||w.push([p+1,o])))),e[o]===" "?g===null&&(g=o):g!==null&&(g=null),a.name==="script"&&($=!a.slashPresent)}if(e&&!f.ignoreIndentations&&(f.trimOnlySpaces&&e[0]===" "||!f.trimOnlySpaces&&!e[0].trim()))for(let o=0;o<C;o++)if(f.trimOnlySpaces&&e[o]!==" "||!f.trimOnlySpaces&&e[o].trim()){w.push([0,o]);break}else e[o+1]||w.push([0,o+1]);if(e&&(f.trimOnlySpaces&&e[~-e.length]===" "||!f.trimOnlySpaces&&!e[~-e.length].trim())){for(let o=e.length;o--;)if(f.trimOnlySpaces&&e[o]!==" "||!f.trimOnlySpaces&&e[o].trim()){w.push([o+1,C]);break}}let D=w.current();if(!t?.cb&&D&&(D[0]&&!D[0][0]&&(D[0][1],w.ranges[0]=[w.ranges[0][0],w.ranges[0][1]]),D[D.length-1]?.[1]===e.length&&(D[D.length-1][0],w.ranges))){let o=w.ranges[w.ranges.length-1][0];e[o-1]&&(f.trimOnlySpaces&&e[o-1]===" "||!f.trimOnlySpaces&&!e[o-1].trim())&&(o-=1);let m=w.ranges[w.ranges.length-1][2];w.ranges[w.ranges.length-1]=[o,w.ranges[w.ranges.length-1][1]],m?.trim()&&w.ranges[w.ranges.length-1].push(m.trimEnd())}return{log:{timeTakenInMilliseconds:Date.now()-r},result:Ta(e,w.current()),ranges:w.current(),allTagLocations:s,filteredTagLocations:u}}class ge{speechSynthesis;speechSynthesisUtterance;currentVoice=null;currentUtterances=[];currentUtteranceIndex=0;playbackState="idle";eventListeners=new Map;voiceManager=null;voices=[];defaultVoice=null;resumeInfinityTimer;isSpeakingInternal=!1;isPausedInternal=!1;isAndroidPaused=!1;pausedAtUtteranceIndex=null;initialized=!1;maxLengthExceeded="warn";utterancesBeingCancelled=!1;rate=1;pitch=1;volume=1;features;patches;constructor(){if(this.features=Zt(),this.patches=Xt(),!this.features.speechSynthesis||!this.features.speechSynthesisUtterance)throw new Error("Web Speech API is not available in this environment");this.speechSynthesis=this.features.speechSynthesis,this.speechSynthesisUtterance=this.features.speechSynthesisUtterance}shouldUseResumeInfinity(){const t=this.currentVoice,r=!!(t?.name&&typeof t.name=="string"&&t.name.toLocaleLowerCase().includes("(natural)"));return this.patches.isAndroid!==!0&&!this.patches.isFirefox&&!this.patches.isSafari&&!r}createUtterance(t){return new this.speechSynthesisUtterance(t)}async initialize(t={}){const{languages:r,maxTimeout:n,interval:i,maxLengthExceeded:s="warn"}=t;if(this.initialized)return!1;this.maxLengthExceeded=s;try{this.voiceManager=await S.initialize({languages:r,maxTimeout:n,interval:i}),this.voices=this.voiceManager.getVoices();const u=r||[...navigator.languages||["en"]];return this.defaultVoice=await this.voiceManager.getDefaultVoice(u,this.voices),this.initialized=!0,!0}catch(u){return console.error("Failed to initialize WebSpeechEngine:",u),this.initialized=!1,!1}}validateText(t){if(new TextEncoder().encode(t).length>4096){const n="Text exceeds max length of 4096 bytes, which may not work with some voices.";switch(this.maxLengthExceeded){case"none":break;case"error":throw new Error(`WebSpeechEngine: ${n}`);default:console.warn(`WebSpeechEngine: ${n}`)}}}getCurrentVoiceForUtterance(t){return t&&typeof t=="object"?t:typeof t=="string"?this.voices.find(r=>r.name===t||r.language===t)||null:this.currentVoice||this.defaultVoice}getCurrentVoice(){return this.currentVoice}escapeSSML(t){return t.map(r=>({...r,text:r.ssml?qt(r.text).result:r.text}))}loadUtterances(t){this.currentUtterances=this.escapeSSML(t),this.currentUtteranceIndex=0,this.setState("ready"),this.emitEvent({type:"ready"})}async setVoice(t){const r=this.currentVoice;if(typeof t=="string"){const n=this.voices.find(i=>i.name===t||i.language===t);n?(this.currentVoice=n,r&&r.name!==n.name&&(this.currentUtteranceIndex=0)):console.warn(`Voice "${t}" not found`)}else this.currentVoice=t,r&&r.name!==t.name&&(this.currentUtteranceIndex=0);this.voiceManager&&this.defaultVoice&&this.currentVoice&&this.currentVoice.language!==this.defaultVoice.language&&(this.defaultVoice=await this.voiceManager.getDefaultVoice([this.currentVoice.language],this.voices))}async getAvailableVoices(){if(this.voices.length>0)return this.voices;try{return await this.initialize(),this.voices}catch{return[]}}speak(t){if(t!==void 0){if(t<0||t>=this.currentUtterances.length)throw new Error("Invalid utterance index");this.currentUtteranceIndex=t}if(this.currentUtterances.length===0){console.warn("No utterances loaded");return}this.cancelCurrentSpeech(),this.isSpeakingInternal=!0,this.isPausedInternal=!1,this.setState("playing"),this.emitEvent({type:"start"}),this.stopResumeInfinity(),this.currentUtteranceIndex=t??0,this.currentUtteranceIndex>=this.currentUtterances.length&&(this.currentUtteranceIndex=0),this.speakCurrentUtterance()}cancelCurrentSpeech(){this.patches.isFirefox&&this.speechSynthesis.speaking&&(this.utterancesBeingCancelled=!0,setTimeout(()=>{this.utterancesBeingCancelled=!1},100)),this.speechSynthesis.cancel()}speakCurrentUtterance(){if(this.currentUtteranceIndex>=this.currentUtterances.length){this.setState("idle"),this.emitEvent({type:"end"});return}const t=this.currentUtterances[this.currentUtteranceIndex],r=(t.ssml,t.text);this.validateText(r);const n=this.createUtterance(r),i=this.getCurrentVoiceForUtterance(this.currentVoice);if(i&&this.voiceManager){const s=this.voiceManager.convertToSpeechSynthesisVoice(i);s&&(n.voice=s,n.lang=s.lang)}t.language&&(n.lang=t.language),n.rate=this.rate,n.pitch=this.pitch,n.volume=this.volume,n.onstart=()=>{this.isSpeakingInternal=!0,this.isPausedInternal=!1,this.setState("playing"),this.emitEvent({type:"start"}),this.patches.isAndroid&&this.isAndroidPaused&&(this.isAndroidPaused=!1),this.shouldUseResumeInfinity()&&this.startResumeInfinity(n)},n.onend=()=>{if(this.utterancesBeingCancelled){this.utterancesBeingCancelled=!1;return}this.playbackState!=="idle"&&(this.isSpeakingInternal=!1,this.isPausedInternal=!1,this.stopResumeInfinity(),this.currentUtteranceIndex>=this.currentUtterances.length-1&&this.setState("idle"),this.emitEvent({type:"end"}))},n.onerror=s=>{if(s.error==="interrupted"&&this.patches.isAndroid&&this.isAndroidPaused)return;this.isSpeakingInternal=!1,this.isPausedInternal=!1,this.stopResumeInfinity(),this.setState("idle"),["synthesis-unavailable","audio-hardware","voice-unavailable"].includes(s.error)&&(console.log("[ENGINE] fatal error detected, resetting index to 0"),this.currentUtteranceIndex=0),s.error==="interrupted"||s.error==="canceled"?this.emitEvent({type:"stop"}):this.emitEvent({type:"error",detail:{error:s.error,message:`Speech synthesis error: ${s.error}`}})},n.onpause=()=>{this.isPausedInternal=!0,this.isSpeakingInternal=!1,this.emitEvent({type:"pause"})},n.onresume=()=>{this.isPausedInternal=!1,this.isSpeakingInternal=!0,this.emitEvent({type:"resume"})},n.onboundary=s=>{this.emitEvent({type:"boundary",detail:{charIndex:s.charIndex,charLength:s.charLength,elapsedTime:s.elapsedTime,name:s.name}})},n.onmark=s=>{this.emitEvent({type:"mark",detail:{name:s.name}})},this.speechSynthesis.speak(n)}startResumeInfinity(t){this.shouldUseResumeInfinity()&&(this.resumeInfinityTimer=window.setTimeout(()=>{if(t){const{paused:n,speaking:i}=this.speechSynthesis,s=i||this.isSpeakingInternal,u=n||this.isPausedInternal;s&&!u&&(this.speechSynthesis.pause(),this.speechSynthesis.resume())}this.startResumeInfinity(t)},5e3))}stopResumeInfinity(){this.resumeInfinityTimer&&(clearTimeout(this.resumeInfinityTimer),this.resumeInfinityTimer=void 0)}pause(){this.playbackState==="playing"&&(this.pausedAtUtteranceIndex=this.currentUtteranceIndex,this.patches.isAndroid?(this.isAndroidPaused=!0,this.speechSynthesis.cancel()):this.speechSynthesis.pause(),this.isPausedInternal=!0,this.isSpeakingInternal=!1,this.setState("paused"),this.emitEvent({type:"pause"}))}resume(){this.playbackState==="paused"&&this.currentUtteranceIndex<this.currentUtterances.length&&(this.isPausedInternal=!1,this.isSpeakingInternal=!0,this.setState("playing"),this.emitEvent({type:"resume"}),this.patches.isAndroid||this.pausedAtUtteranceIndex!==this.currentUtteranceIndex?this.speak(this.currentUtteranceIndex):this.speechSynthesis.resume(),this.pausedAtUtteranceIndex=null)}stop(){this.speechSynthesis.cancel(),this.currentUtteranceIndex=0,this.patches.isAndroid&&(this.isAndroidPaused=!1),this.setState("idle"),this.emitEvent({type:"stop"})}setRate(t){this.rate=Math.max(.1,Math.min(10,t))}getRate(){return this.rate}setPitch(t){this.pitch=Math.max(0,Math.min(2,t))}getPitch(){return this.pitch}setVolume(t){this.volume=Math.max(0,Math.min(1,t))}getVolume(){return this.volume}getState(){return this.playbackState}getCurrentUtteranceIndex(){return this.currentUtteranceIndex}setCurrentUtteranceIndex(t,r){if(t<0||t>=this.currentUtterances.length){r?.(!1);return}t!==this.currentUtteranceIndex&&(!this.isPausedInternal&&this.isSpeakingInternal&&this.cancelCurrentSpeech(),this.currentUtteranceIndex=t,r?.(!0))}getUtteranceCount(){return this.currentUtterances.length}on(t,r){return this.eventListeners.has(t)||this.eventListeners.set(t,[]),this.eventListeners.get(t).push(r),()=>{const n=this.eventListeners.get(t);if(n){const i=n.indexOf(r);i>-1&&n.splice(i,1)}}}emitEvent(t){const r=this.eventListeners.get(t.type);r&&r.forEach(n=>n(t))}setState(t){const r=this.playbackState;if(this.playbackState=t,r!==t)switch(t){case"idle":this.emitEvent({type:"idle"});break;case"loading":this.emitEvent({type:"loading"});break;case"ready":this.emitEvent({type:"ready"});break}}async destroy(){this.stop(),this.stopResumeInfinity(),this.eventListeners.clear(),this.currentUtterances=[],this.currentVoice=null,this.voices=[],this.defaultVoice=null,this.initialized=!1}}class Pa{id="webspeech";name="Web Speech API";engine=null;async getVoices(){if(!this.engine)throw new Error("No engine available. Create an engine first.");return this.engine.getAvailableVoices()}async createEngine(t){const r=new ge;return await r.initialize(),t&&await r.setVoice(t),r}async destroy(){this.engine&&(await this.engine.destroy(),this.engine=null)}}class xa{engine;contentQueue=[];eventListeners=new Map;navigatorState="idle";constructor(t){this.engine=t||new ge,this.setupEngineListeners(),this.initializeEngine()}async initializeEngine(){if(this.engine instanceof ge)try{await this.engine.initialize()}catch(t){console.warn("Failed to initialize WebSpeechEngine:",t)}}setupEngineListeners(){this.engine.on("start",()=>{this.setNavigatorState("playing"),this.emitEvent({type:"start"})}),this.engine.on("end",()=>{const t=this.engine.getCurrentUtteranceIndex(),r=this.engine.getUtteranceCount();t<r-1?this.engine.speak(t+1):this.setNavigatorState("idle"),this.emitEvent({type:"end"})}),this.engine.on("pause",()=>{this.setNavigatorState("paused"),this.emitEvent({type:"pause"})}),this.engine.on("resume",()=>{this.setNavigatorState("playing"),this.emitEvent({type:"resume"})}),this.engine.on("stop",()=>{this.setNavigatorState("idle"),this.emitEvent({type:"stop"})}),this.engine.on("error",t=>{this.setNavigatorState("idle"),this.emitEvent(t)}),this.engine.on("ready",()=>{this.contentQueue.length>0&&(this.setNavigatorState("ready"),this.emitEvent({type:"ready"}))}),this.engine.on("boundary",t=>{this.emitEvent(t)}),this.engine.on("mark",t=>{this.emitEvent(t)}),this.engine.on("voiceschanged",()=>{this.emitEvent({type:"voiceschanged"})})}setNavigatorState(t){this.navigatorState=t}async getVoices(){return this.engine.getAvailableVoices()}setVoice(t){this.engine.setVoice(t)}getCurrentVoice(){return this.engine.getCurrentVoice()}loadContent(t){const r=Array.isArray(t)?t:[t];this.contentQueue=[...r],this.engine.loadUtterances(r),this.setNavigatorState("ready"),this.emitContentChangeEvent({content:r})}getCurrentContent(){const t=this.getCurrentUtteranceIndex();return t<this.contentQueue.length?this.contentQueue[t]:null}getContentQueue(){return[...this.contentQueue]}getCurrentUtteranceIndex(){return this.engine.getCurrentUtteranceIndex()}play(){if(this.navigatorState==="paused")this.setNavigatorState("playing"),this.engine.resume();else if(this.navigatorState==="ready"||this.navigatorState==="idle")this.setNavigatorState("playing"),this.engine.speak();else if(this.navigatorState==="playing")return}pause(){this.navigatorState==="playing"&&(this.setNavigatorState("paused"),this.engine.pause())}stop(){this.setNavigatorState("idle"),this.engine.stop(),this.emitEvent({type:"stop"})}skipToPosition(t,r=!1){const n=this.getCurrentUtteranceIndex();return t<0||t>=this.contentQueue.length?!1:(t===n||(this.navigatorState==="paused"&&!r?this.engine.setCurrentUtteranceIndex(t,i=>{i&&this.emitEvent({type:"skip",detail:{position:t}})}):(this.setNavigatorState("playing"),this.engine.speak(t))),!0)}next(t=!1){const r=this.getCurrentUtteranceIndex();return this.skipToPosition(r+1,t)}previous(t=!1){const r=this.getCurrentUtteranceIndex();return this.skipToPosition(r-1,t)}jumpTo(t,r=!1){return this.skipToPosition(t,r)}setRate(t){this.engine.setRate(t)}getRate(){return this.engine.getRate()}setPitch(t){this.engine.setPitch(t)}getPitch(){return this.engine.getPitch()}setVolume(t){this.engine.setVolume(t)}getVolume(){return this.engine.getVolume()}getState(){return this.navigatorState}on(t,r){return this.eventListeners.has(t)||this.eventListeners.set(t,[]),this.eventListeners.get(t).push(r),()=>{const n=this.eventListeners.get(t);if(n){const i=n.indexOf(r);i>-1&&n.splice(i,1)}}}emitEvent(t){const r=this.eventListeners.get(t.type);r&&r.forEach(n=>n(t))}emitContentChangeEvent(t){const r=this.eventListeners.get("contentchange");r&&r.forEach(n=>n({type:"contentchange",detail:t}))}async destroy(){this.eventListeners.clear(),await this.engine.destroy()}}exports.WebSpeechEngine=ge;exports.WebSpeechEngineProvider=Pa;exports.WebSpeechReadAloudNavigator=xa;exports.WebSpeechVoiceManager=S;exports.chineseVariantMap=W;
|
|
25
|
+
`:x}`,v===o.lastClosingBracketAt+1&&(!t[v]||!Ke.has(t[v]))&&(T+=" "),o.leftOuterWhitespace===o.lastOpeningBracketAt&&A.last()&&A.last()[1]<o.lastOpeningBracketAt&&(!y?.dumpLinkHrefsNearby?.putOnNewLine||!Ke.has(t[v]))&&(T=" "+T)):T=x,T!==null&&(o.leftOuterWhitespace===0||!B(t,v-1))&&(!y.dumpLinkHrefsNearby?.enabled||o.name!=="a")&&(T=void 0);let q=0;if(m&&Ke.has(t[v])){y.dumpLinkHrefsNearby?.putOnNewLine&&(T=`${t[v]}${T||""}`);let Q=B(t,v);Q&&T?.endsWith(`
|
|
26
|
+
`)?q+=Q-c:(!Q||Q>c)&&q++}y.cb({tag:o,deleteFrom:o.leftOuterWhitespace,deleteTo:v+q,insert:T,rangesArr:A,proposedReturn:[o.leftOuterWhitespace,v+q,T]}),he(),E(c,y,A)}else o={};D(c)||(o={})}F&&(F=!1)}if((!G||t[c]==="<"&&B(t,B(t,c))&&t[B(t,c)]==="/"&&t.startsWith("script",B(t,B(t,c))))&&I(c)&&!I(c-1)&&!`'"`.includes(t[c+1])&&(!`'"`.includes(t[c+2])||/\w/.test(t[c+1]))&&!(t[c+1]==="c"&&t[c+2]===":")&&!(t[c+1]==="f"&&t[c+2]==="m"&&t[c+3]==="t"&&t[c+4]===":")&&!(t[c+1]==="s"&&t[c+2]==="q"&&t[c+3]==="l"&&t[c+4]===":")&&!(t[c+1]==="x"&&t[c+2]===":")&&!(t[c+1]==="f"&&t[c+2]==="n"&&t[c+3]===":")&&Vt(o,t,c)){if(D(B(t,c)))continue;if(o.nameEnds&&o.nameEnds<c&&!o.lastClosingBracketAt&&(o.onlyPlausible===!0&&o.attributes?.length||o.onlyPlausible===!1)){let v=N(t,c,o.leftOuterWhitespace,c,o.lastOpeningBracketAt,c);y.cb({tag:o,deleteFrom:o.leftOuterWhitespace,deleteTo:c,insert:v,rangesArr:A,proposedReturn:[o.leftOuterWhitespace,c,v]}),E(c,y,A),o={},p={}}if(o.lastOpeningBracketAt!==void 0&&o.onlyPlausible&&o.name&&!o.quotes&&(o.lastOpeningBracketAt=void 0,o.name=void 0,o.onlyPlausible=!1),(o.lastOpeningBracketAt===void 0||!o.onlyPlausible)&&!o.quotes&&(o.lastOpeningBracketAt=c,o.slashPresent=!1,o.attributes=[],l===null?o.leftOuterWhitespace=c:y.trimOnlySpaces&&l===0?o.leftOuterWhitespace=d||c:o.leftOuterWhitespace=l,`${t[c+1]}${t[c+2]}${t[c+3]}`=="!--"||`${t[c+1]}${t[c+2]}${t[c+3]}${t[c+4]}${t[c+5]}${t[c+6]}${t[c+7]}${t[c+8]}`=="![CDATA[")){let v=!0;t[c+2]==="-"&&(v=!1);let S;for(let w=c;w<$;w++)if((!S&&v&&`${t[w-2]}${t[w-1]}${t[w]}`=="]]>"||!v&&`${t[w-2]}${t[w-1]}${t[w]}`=="-->")&&(S=w),S&&(S<w&&t[w].trim()||t[w+1]===void 0)){let x=w;(t[w+1]===void 0&&!t[w].trim()||t[w]===">")&&(x+=1),(!s.length||s[s.length-1][0]!==o.lastOpeningBracketAt)&&s.push([o.lastOpeningBracketAt,S+1]),(!a.length||a[a.length-1][0]!==o.lastOpeningBracketAt)&&a.push([o.lastOpeningBracketAt,S+1]);let T=N(t,w,o.leftOuterWhitespace,x,o.lastOpeningBracketAt,S);y.cb({tag:o,deleteFrom:o.leftOuterWhitespace,deleteTo:x,insert:T,rangesArr:A,proposedReturn:[o.leftOuterWhitespace,x,T]}),c=w-1,t[w]===">"&&(c=w),o={},p={};break}}}!t[c].trim()||t[c].charCodeAt(0)===847?(l===null&&(l=c,o.lastOpeningBracketAt!==void 0&&o.lastOpeningBracketAt<c&&o.nameStarts&&o.nameStarts<o.lastOpeningBracketAt&&c===o.lastOpeningBracketAt+1&&!n.some(v=>v.name===o.name)&&(o.onlyPlausible=!0,o.name=void 0,o.nameStarts=void 0)),(t[c]===`
|
|
27
|
+
`||t[c]==="\r")&&(h=c,g&&(g=!1))):(l!==null&&(!o.quotes&&p.equalsAt>l-1&&p.nameEnds&&p.equalsAt>p.nameEnds&&t[c]!=='"'&&t[c]!=="'"&&(st(p)&&o.attributes.push(p),p={},o.equalsSpottedAt=void 0),l=null),g||(g=!0,R&&!G&&typeof h=="number"&&c&&h<c-1&&(t.slice(h+1,c).trim()?h=null:y.ignoreIndentations||A.push([h+1,c])))),t[c]===" "?d===null&&(d=c):d!==null&&(d=null),o.name==="script"&&(G=!o.slashPresent)}if(t&&!y.ignoreIndentations&&(y.trimOnlySpaces&&t[0]===" "||!y.trimOnlySpaces&&!t[0].trim()))for(let c=0;c<$;c++)if(y.trimOnlySpaces&&t[c]!==" "||!y.trimOnlySpaces&&t[c].trim()){A.push([0,c]);break}else t[c+1]||A.push([0,c+1]);if(t&&(y.trimOnlySpaces&&t[~-t.length]===" "||!y.trimOnlySpaces&&!t[~-t.length].trim())){for(let c=t.length;c--;)if(y.trimOnlySpaces&&t[c]!==" "||!y.trimOnlySpaces&&t[c].trim()){A.push([c+1,$]);break}}let _=A.current();if(!e?.cb&&_&&(_[0]&&!_[0][0]&&(_[0][1],A.ranges[0]=[A.ranges[0][0],A.ranges[0][1]]),_[_.length-1]?.[1]===t.length&&(_[_.length-1][0],A.ranges))){let c=A.ranges[A.ranges.length-1][0];t[c-1]&&(y.trimOnlySpaces&&t[c-1]===" "||!y.trimOnlySpaces&&!t[c-1].trim())&&(c-=1);let v=A.ranges[A.ranges.length-1][2];A.ranges[A.ranges.length-1]=[c,A.ranges[A.ranges.length-1][1]],v?.trim()&&A.ranges[A.ranges.length-1].push(v.trimEnd())}return{log:{timeTakenInMilliseconds:Date.now()-r},result:Ws(t,A.current()),ranges:A.current(),allTagLocations:s,filteredTagLocations:a}}class $e{speechSynthesis;speechSynthesisUtterance;currentVoice=null;currentUtterances=[];currentUtteranceIndex=0;playbackState="idle";eventListeners=new Map;voiceManager=null;voices=[];defaultVoice=null;resumeInfinityTimer;isSpeakingInternal=!1;isPausedInternal=!1;isAndroidPaused=!1;pausedAtUtteranceIndex=null;initialized=!1;maxLengthExceeded="warn";utterancesBeingCancelled=!1;rate=1;pitch=1;volume=1;features;patches;constructor(){if(this.features=vn(),this.patches=wn(),!this.features.speechSynthesis||!this.features.speechSynthesisUtterance)throw new Error("Web Speech API is not available in this environment");this.speechSynthesis=this.features.speechSynthesis,this.speechSynthesisUtterance=this.features.speechSynthesisUtterance}shouldUseResumeInfinity(){const e=this.currentVoice,r=!!(e?.name&&typeof e.name=="string"&&e.name.toLocaleLowerCase().includes("(natural)"));return this.patches.isAndroid!==!0&&!this.patches.isFirefox&&!this.patches.isSafari&&!r}createUtterance(e){return new this.speechSynthesisUtterance(e)}async initialize(e={}){const{languages:r,maxTimeout:n,interval:i,maxLengthExceeded:s="warn"}=e;if(this.initialized)return!1;this.maxLengthExceeded=s;try{this.voiceManager=await k.initialize({languages:r,maxTimeout:n,interval:i}),this.voices=this.voiceManager.getVoices();const a=r||[...navigator.languages||["en"]];return this.defaultVoice=await this.voiceManager.getDefaultVoice(a,this.voices),this.initialized=!0,!0}catch(a){return console.error("Failed to initialize WebSpeechEngine:",a),this.initialized=!1,!1}}validateText(e){if(new TextEncoder().encode(e).length>4096){const n="Text exceeds max length of 4096 bytes, which may not work with some voices.";switch(this.maxLengthExceeded){case"none":break;case"error":throw new Error(`WebSpeechEngine: ${n}`);default:console.warn(`WebSpeechEngine: ${n}`)}}}getCurrentVoiceForUtterance(e){return e&&typeof e=="object"?e:typeof e=="string"?this.voices.find(r=>r.name===e||r.language===e)||null:this.currentVoice||this.defaultVoice}getCurrentVoice(){return this.currentVoice}escapeSSML(e){return e.map(r=>({...r,text:r.ssml?vr(r.text).result:r.text}))}loadUtterances(e){this.currentUtterances=this.escapeSSML(e),this.currentUtteranceIndex=0,this.setState("ready"),this.emitEvent({type:"ready"})}async setVoice(e){const r=this.currentVoice;if(typeof e=="string"){const n=this.voices.find(i=>i.name===e||i.language===e);n?(this.currentVoice=n,r&&r.name!==n.name&&(this.currentUtteranceIndex=0)):console.warn(`Voice "${e}" not found`)}else this.currentVoice=e,r&&r.name!==e.name&&(this.currentUtteranceIndex=0);this.voiceManager&&this.defaultVoice&&this.currentVoice&&this.currentVoice.language!==this.defaultVoice.language&&(this.defaultVoice=await this.voiceManager.getDefaultVoice([this.currentVoice.language],this.voices))}async getAvailableVoices(){if(this.voices.length>0)return this.voices;try{return await this.initialize(),this.voices}catch{return[]}}speak(e){if(e!==void 0){if(e<0||e>=this.currentUtterances.length)throw new Error("Invalid utterance index");this.currentUtteranceIndex=e}if(this.currentUtterances.length===0){console.warn("No utterances loaded");return}this.cancelCurrentSpeech(),this.isSpeakingInternal=!0,this.isPausedInternal=!1,this.setState("playing"),this.emitEvent({type:"start"}),this.stopResumeInfinity(),this.currentUtteranceIndex=e??0,this.currentUtteranceIndex>=this.currentUtterances.length&&(this.currentUtteranceIndex=0),this.speakCurrentUtterance()}cancelCurrentSpeech(){this.patches.isFirefox&&this.speechSynthesis.speaking&&(this.utterancesBeingCancelled=!0,setTimeout(()=>{this.utterancesBeingCancelled=!1},100)),this.speechSynthesis.cancel()}speakCurrentUtterance(){if(this.currentUtteranceIndex>=this.currentUtterances.length){this.setState("idle"),this.emitEvent({type:"end"});return}const e=this.currentUtterances[this.currentUtteranceIndex],r=(e.ssml,e.text);this.validateText(r);const n=this.createUtterance(r),i=this.getCurrentVoiceForUtterance(this.currentVoice);if(i&&this.voiceManager){const s=this.voiceManager.convertToSpeechSynthesisVoice(i);s&&(n.voice=s,n.lang=s.lang)}e.language&&(n.lang=e.language),n.rate=this.rate,n.pitch=this.pitch,n.volume=this.volume,n.onstart=()=>{this.isSpeakingInternal=!0,this.isPausedInternal=!1,this.setState("playing"),this.emitEvent({type:"start"}),this.patches.isAndroid&&this.isAndroidPaused&&(this.isAndroidPaused=!1),this.shouldUseResumeInfinity()&&this.startResumeInfinity(n)},n.onend=()=>{if(this.utterancesBeingCancelled){this.utterancesBeingCancelled=!1;return}this.playbackState!=="idle"&&(this.isSpeakingInternal=!1,this.isPausedInternal=!1,this.stopResumeInfinity(),this.currentUtteranceIndex>=this.currentUtterances.length-1&&this.setState("idle"),this.emitEvent({type:"end"}))},n.onerror=s=>{if(s.error==="interrupted"&&this.patches.isAndroid&&this.isAndroidPaused)return;this.isSpeakingInternal=!1,this.isPausedInternal=!1,this.stopResumeInfinity(),this.setState("idle"),["synthesis-unavailable","audio-hardware","voice-unavailable"].includes(s.error)&&(console.log("[ENGINE] fatal error detected, resetting index to 0"),this.currentUtteranceIndex=0),s.error==="interrupted"||s.error==="canceled"?this.emitEvent({type:"stop"}):this.emitEvent({type:"error",detail:{error:s.error,message:`Speech synthesis error: ${s.error}`}})},n.onpause=()=>{this.isPausedInternal=!0,this.isSpeakingInternal=!1,this.emitEvent({type:"pause"})},n.onresume=()=>{this.isPausedInternal=!1,this.isSpeakingInternal=!0,this.emitEvent({type:"resume"})},n.onboundary=s=>{this.emitEvent({type:"boundary",detail:{charIndex:s.charIndex,charLength:s.charLength,elapsedTime:s.elapsedTime,name:s.name}})},n.onmark=s=>{this.emitEvent({type:"mark",detail:{name:s.name}})},this.speechSynthesis.speak(n)}startResumeInfinity(e){this.shouldUseResumeInfinity()&&(this.resumeInfinityTimer=window.setTimeout(()=>{if(e){const{paused:n,speaking:i}=this.speechSynthesis,s=i||this.isSpeakingInternal,a=n||this.isPausedInternal;s&&!a&&(this.speechSynthesis.pause(),this.speechSynthesis.resume())}this.startResumeInfinity(e)},5e3))}stopResumeInfinity(){this.resumeInfinityTimer&&(clearTimeout(this.resumeInfinityTimer),this.resumeInfinityTimer=void 0)}pause(){this.playbackState==="playing"&&(this.pausedAtUtteranceIndex=this.currentUtteranceIndex,this.patches.isAndroid?(this.isAndroidPaused=!0,this.speechSynthesis.cancel()):this.speechSynthesis.pause(),this.isPausedInternal=!0,this.isSpeakingInternal=!1,this.setState("paused"),this.emitEvent({type:"pause"}))}resume(){this.playbackState==="paused"&&this.currentUtteranceIndex<this.currentUtterances.length&&(this.isPausedInternal=!1,this.isSpeakingInternal=!0,this.setState("playing"),this.emitEvent({type:"resume"}),this.patches.isAndroid||this.pausedAtUtteranceIndex!==this.currentUtteranceIndex?this.speak(this.currentUtteranceIndex):this.speechSynthesis.resume(),this.pausedAtUtteranceIndex=null)}stop(){this.speechSynthesis.cancel(),this.currentUtteranceIndex=0,this.patches.isAndroid&&(this.isAndroidPaused=!1),this.setState("idle"),this.emitEvent({type:"stop"})}setRate(e){this.rate=Math.max(.1,Math.min(10,e))}getRate(){return this.rate}setPitch(e){this.pitch=Math.max(0,Math.min(2,e))}getPitch(){return this.pitch}setVolume(e){this.volume=Math.max(0,Math.min(1,e))}getVolume(){return this.volume}getState(){return this.playbackState}getCurrentUtteranceIndex(){return this.currentUtteranceIndex}setCurrentUtteranceIndex(e,r){if(e<0||e>=this.currentUtterances.length){r?.(!1);return}e!==this.currentUtteranceIndex&&(!this.isPausedInternal&&this.isSpeakingInternal&&this.cancelCurrentSpeech(),this.currentUtteranceIndex=e,r?.(!0))}getUtteranceCount(){return this.currentUtterances.length}on(e,r){return this.eventListeners.has(e)||this.eventListeners.set(e,[]),this.eventListeners.get(e).push(r),()=>{const n=this.eventListeners.get(e);if(n){const i=n.indexOf(r);i>-1&&n.splice(i,1)}}}emitEvent(e){const r=this.eventListeners.get(e.type);r&&r.forEach(n=>n(e))}setState(e){const r=this.playbackState;if(this.playbackState=e,r!==e)switch(e){case"idle":this.emitEvent({type:"idle"});break;case"loading":this.emitEvent({type:"loading"});break;case"ready":this.emitEvent({type:"ready"});break}}async destroy(){this.stop(),this.stopResumeInfinity(),this.eventListeners.clear(),this.currentUtterances=[],this.currentVoice=null,this.voices=[],this.defaultVoice=null,this.initialized=!1}}class eo{id="webspeech";name="Web Speech API";engine=null;async getVoices(){if(!this.engine)throw new Error("No engine available. Create an engine first.");return this.engine.getAvailableVoices()}async createEngine(e){const r=new $e;return await r.initialize(),e&&await r.setVoice(e),r}async destroy(){this.engine&&(await this.engine.destroy(),this.engine=null)}}class to{engine;contentQueue=[];eventListeners=new Map;navigatorState="idle";constructor(e){this.engine=e||new $e,this.setupEngineListeners(),this.initializeEngine()}async initializeEngine(){if(this.engine instanceof $e)try{await this.engine.initialize()}catch(e){console.warn("Failed to initialize WebSpeechEngine:",e)}}setupEngineListeners(){this.engine.on("start",()=>{this.setNavigatorState("playing"),this.emitEvent({type:"start"})}),this.engine.on("end",()=>{const e=this.engine.getCurrentUtteranceIndex(),r=this.engine.getUtteranceCount();e<r-1?this.engine.speak(e+1):this.setNavigatorState("idle"),this.emitEvent({type:"end"})}),this.engine.on("pause",()=>{this.setNavigatorState("paused"),this.emitEvent({type:"pause"})}),this.engine.on("resume",()=>{this.setNavigatorState("playing"),this.emitEvent({type:"resume"})}),this.engine.on("stop",()=>{this.setNavigatorState("idle"),this.emitEvent({type:"stop"})}),this.engine.on("error",e=>{this.setNavigatorState("idle"),this.emitEvent(e)}),this.engine.on("ready",()=>{this.contentQueue.length>0&&(this.setNavigatorState("ready"),this.emitEvent({type:"ready"}))}),this.engine.on("boundary",e=>{this.emitEvent(e)}),this.engine.on("mark",e=>{this.emitEvent(e)}),this.engine.on("voiceschanged",()=>{this.emitEvent({type:"voiceschanged"})})}setNavigatorState(e){this.navigatorState=e}async getVoices(){return this.engine.getAvailableVoices()}setVoice(e){this.engine.setVoice(e)}getCurrentVoice(){return this.engine.getCurrentVoice()}loadContent(e){const r=Array.isArray(e)?e:[e];this.contentQueue=[...r],this.engine.loadUtterances(r),this.setNavigatorState("ready"),this.emitContentChangeEvent({content:r})}getCurrentContent(){const e=this.getCurrentUtteranceIndex();return e<this.contentQueue.length?this.contentQueue[e]:null}getContentQueue(){return[...this.contentQueue]}getCurrentUtteranceIndex(){return this.engine.getCurrentUtteranceIndex()}play(){if(this.navigatorState==="paused")this.setNavigatorState("playing"),this.engine.resume();else if(this.navigatorState==="ready"||this.navigatorState==="idle")this.setNavigatorState("playing"),this.engine.speak();else if(this.navigatorState==="playing")return}pause(){this.navigatorState==="playing"&&(this.setNavigatorState("paused"),this.engine.pause())}stop(){this.setNavigatorState("idle"),this.engine.stop(),this.emitEvent({type:"stop"})}skipToPosition(e,r=!1){const n=this.getCurrentUtteranceIndex();return e<0||e>=this.contentQueue.length?!1:(e===n||(this.navigatorState==="paused"&&!r?this.engine.setCurrentUtteranceIndex(e,i=>{i&&this.emitEvent({type:"skip",detail:{position:e}})}):(this.setNavigatorState("playing"),this.engine.speak(e))),!0)}next(e=!1){const r=this.getCurrentUtteranceIndex();return this.skipToPosition(r+1,e)}previous(e=!1){const r=this.getCurrentUtteranceIndex();return this.skipToPosition(r-1,e)}jumpTo(e,r=!1){return this.skipToPosition(e,r)}setRate(e){this.engine.setRate(e)}getRate(){return this.engine.getRate()}setPitch(e){this.engine.setPitch(e)}getPitch(){return this.engine.getPitch()}setVolume(e){this.engine.setVolume(e)}getVolume(){return this.engine.getVolume()}getState(){return this.navigatorState}on(e,r){return this.eventListeners.has(e)||this.eventListeners.set(e,[]),this.eventListeners.get(e).push(r),()=>{const n=this.eventListeners.get(e);if(n){const i=n.indexOf(r);i>-1&&n.splice(i,1)}}}emitEvent(e){const r=this.eventListeners.get(e.type);r&&r.forEach(n=>n(e))}emitContentChangeEvent(e){const r=this.eventListeners.get("contentchange");r&&r.forEach(n=>n({type:"contentchange",detail:e}))}async destroy(){this.eventListeners.clear(),await this.engine.destroy()}}let ro=class{};function no(t){return(t.getComputedStyle(t.document.documentElement).writingMode||t.getComputedStyle(t.document.body).writingMode)==="vertical-lr"}function io(t){const e=t.getComputedStyle(t.document.documentElement).writingMode||t.getComputedStyle(t.document.body).writingMode;return e==="vertical-rl"||e==="vertical-lr"}function me(t){const e=io(t),r=e&&no(t),n=t.innerWidth,i=t.innerHeight,s=t.document.scrollingElement,a=s.scrollLeft,o=s.scrollTop,u=parseInt(t.getComputedStyle(t.document.documentElement).getPropertyValue("column-count")),l=e&&!r?s.scrollWidth-n+a:a,d=o;return{isVertical:e,isVertLR:r,viewportInlineSize:e?i:n,viewportBlockSize:e?n:i,pageInlineSize:e?i:n/(u||1),xDocOffset:l,yDocOffset:d,inlineScrollOffset:e?d:l,blockScrollOffset:e?l:d,inlineStart:h=>e?h.top:h.left,blockStart:h=>e?h.left:h.top,inlineSize:h=>e?h.height:h.width,blockSize:h=>e?h.width:h.height,applyPosition(h,g,p,f,b,m){h.style.position="absolute",e?(h.style.top=`${g*m}px`,h.style.left=`${p*m}px`,h.style.height=`${f*m}px`,h.style.width=`${b*m}px`):(h.style.left=`${g*m}px`,h.style.top=`${p*m}px`,h.style.width=`${f*m}px`,h.style.height=`${b*m}px`)},toRect(h,g,p,f){return e?new DOMRect(g,h,f,p):new DOMRect(h,g,p,f)}}}function Kt(t,e){return t.document.documentElement.style.getPropertyValue(e)}function so(t){return t&&Array.isArray(t)?t:void 0}function oo(t){return t&&typeof t=="string"?[t]:so(t)}function Je(t){return isNaN(t)?void 0:t}function Te(t){return t.otherLocations?.get("cssSelector")}let ye=class wr{constructor(e){this.fragments=e.fragments?e.fragments:new Array,this.progression=e.progression,this.totalProgression=e.totalProgression,this.position=e.position,this.otherLocations=e.otherLocations}static deserialize(e){if(!e)return;const r=Je(e.progression),n=Je(e.totalProgression),i=Je(e.position),s=new Map,a=new Set(["fragment","fragments","progression","totalProgression","position","otherLocations"]);return Object.entries(e).forEach(([o,u])=>{a.has(o)||s.set(o,u)}),e.otherLocations instanceof Map&&e.otherLocations.forEach((o,u)=>s.set(u,o)),new wr({fragments:oo(e.fragments||e.fragment),progression:r!==void 0&&r>=0&&r<=1?r:void 0,totalProgression:n!==void 0&&n>=0&&n<=1?n:void 0,position:i!==void 0&&i>0?i:void 0,otherLocations:s.size===0?void 0:s})}serialize(){const e={};return this.fragments&&(e.fragments=this.fragments),this.progression!==void 0&&(e.progression=this.progression),this.totalProgression!==void 0&&(e.totalProgression=this.totalProgression),this.position!==void 0&&(e.position=this.position),this.otherLocations&&this.otherLocations.forEach((r,n)=>e[n]=r),e}},ao=class Sr{constructor(e){this.after=e.after,this.before=e.before,this.highlight=e.highlight}static deserialize(e){if(e)return new Sr({after:e.after,before:e.before,highlight:e.highlight})}serialize(){const e={};return this.after!==void 0&&(e.after=this.after),this.before!==void 0&&(e.before=this.before),this.highlight!==void 0&&(e.highlight=this.highlight),e}},lo=class lt{constructor(e){const r=e.href.indexOf("#"),n=r>=0?e.href.slice(r+1):void 0;this.href=r>=0?e.href.slice(0,r):e.href,this.type=e.type,this.title=e.title;const i=e.locations?.fragments,s=n&&(!i||i.length===0);this.locations=e.locations?s?new ye({...e.locations,fragments:[n]}):e.locations:n?new ye({fragments:[n]}):new ye({}),this.text=e.text}static deserialize(e){if(e&&e.href&&e.type)return new lt({href:e.href,type:e.type,title:e.title,locations:ye.deserialize(e.locations),text:ao.deserialize(e.text)})}serialize(){const e={href:this.href,type:this.type};return this.title!==void 0&&(e.title=this.title),this.locations&&(e.locations=this.locations.serialize()),this.text&&(e.text=this.text.serialize()),e}copyWithLocations(e){return new lt({href:this.href,type:this.type,title:this.title,text:this.text,locations:new ye({...this.locations,...e})})}};function Jt(t){return t.split("").reverse().join("")}function co(t,e,r){const n=Jt(e);return r.map(i=>{const s=Math.max(0,i.end-e.length-i.errors),a=Jt(t.slice(s,i.end));return{start:Or(a,n,i.errors).reduce((o,u)=>i.end-u.end<o?i.end-u.end:o,i.end),end:i.end,errors:i.errors}})}function Qe(t){return(t|-t)>>31&1}function Qt(t,e,r,n){let i=t.P[r],s=t.M[r];const a=n>>>31,o=e[r]|a,u=o|s,l=(o&i)+i^i|o;let d=s|~(l|i),h=i&l;const g=Qe(d&t.lastRowMask[r])-Qe(h&t.lastRowMask[r]);return d<<=1,h<<=1,h|=a,d|=Qe(n)-a,i=h|~(u|d),s=d&u,t.P[r]=i,t.M[r]=s,g}function Or(t,e,r){if(e.length===0)return[];r=Math.min(r,e.length);const n=[],i=32,s=Math.ceil(e.length/i)-1,a={P:new Uint32Array(s+1),M:new Uint32Array(s+1),lastRowMask:new Uint32Array(s+1)};a.lastRowMask.fill(1<<31),a.lastRowMask[s]=1<<(e.length-1)%i;const o=new Uint32Array(s+1),u=new Map,l=[];for(let g=0;g<256;g++)l.push(o);for(let g=0;g<e.length;g+=1){const p=e.charCodeAt(g);if(u.has(p))continue;const f=new Uint32Array(s+1);u.set(p,f),p<l.length&&(l[p]=f);for(let b=0;b<=s;b+=1){f[b]=0;for(let m=0;m<i;m+=1){const O=b*i+m;O>=e.length||e.charCodeAt(O)===p&&(f[b]|=1<<m)}}}let d=Math.max(0,Math.ceil(r/i)-1);const h=new Uint32Array(s+1);for(let g=0;g<=d;g+=1)h[g]=(g+1)*i;h[s]=e.length;for(let g=0;g<=d;g+=1)a.P[g]=-1,a.M[g]=0;for(let g=0;g<t.length;g+=1){const p=t.charCodeAt(g);let f;p<l.length?f=l[p]:(f=u.get(p),typeof f>"u"&&(f=o));let b=0;for(let m=0;m<=d;m+=1)b=Qt(a,f,m,b),h[m]+=b;if(h[d]-b<=r&&d<s&&(f[d+1]&1||b<0)){d+=1,a.P[d]=-1,a.M[d]=0;let m;if(d===s){const O=e.length%i;m=O===0?i:O}else m=i;h[d]=h[d-1]+m-b+Qt(a,f,d,b)}else for(;d>0&&h[d]>=r+i;)d-=1;d===s&&h[d]<=r&&(h[d]<r&&n.splice(0,n.length),n.push({start:-1,end:g+1,errors:h[d]}),r=h[d])}return n}function uo(t,e,r){const n=Or(t,e,r);return co(t,e,n)}function kr(t,e,r){let n=0;const i=[];for(;n!==-1;)n=t.indexOf(e,n),n!==-1&&(i.push({start:n,end:n+e.length,errors:0}),n+=1);return i.length>0?i:uo(t,e,r)}function Xt(t,e){return e.length===0||t.length===0?0:1-kr(t,e,e.length)[0].errors/e.length}function ho(t,e,r={}){if(e.length===0)return null;const n=Math.min(256,e.length/2),i=kr(t,e,n);if(i.length===0)return null;const s=o=>{const u=1-o.errors/e.length,l=r.prefix?Xt(t.slice(Math.max(0,o.start-r.prefix.length),o.start),r.prefix):1,d=r.suffix?Xt(t.slice(o.end,o.end+r.suffix.length),r.suffix):1;let h=1;return typeof r.hint=="number"&&(h=1-Math.abs(o.start-r.hint)/t.length),(50*u+20*l+20*d+2*h)/92},a=i.map(o=>({start:o.start,end:o.end,score:s(o)}));return a.sort((o,u)=>u.score-o.score),a[0]}function ct(t,e,r){const n=r===1?e:e-1;if(t.charAt(n).trim()!=="")return e;let i,s;if(r===2?(i=t.substring(0,e),s=i.trimEnd()):(i=t.substring(e),s=i.trimStart()),!s.length)return-1;const a=i.length-s.length;return r===2?e-a:e+a}function Zt(t,e){const r=t.commonAncestorContainer.ownerDocument.createNodeIterator(t.commonAncestorContainer,NodeFilter.SHOW_TEXT),n=e===1?t.startContainer:t.endContainer,i=e===1?t.endContainer:t.startContainer;let s=r.nextNode();for(;s&&s!==n;)s=r.nextNode();e===2&&(s=r.previousNode());let a=-1;const o=()=>{if(s=e===1?r.nextNode():r.previousNode(),s){const u=s.textContent,l=e===1?0:u.length;a=ct(u,l,e)}};for(;s&&a===-1&&s!==i;)o();if(s&&a>=0)return{node:s,offset:a};throw new RangeError("No text nodes with non-whitespace text found in range")}function go(t){if(!t.toString().trim().length)throw new RangeError("Range contains no non-whitespace text");if(t.startContainer.nodeType!==Node.TEXT_NODE)throw new RangeError("Range startContainer is not a text node");if(t.endContainer.nodeType!==Node.TEXT_NODE)throw new RangeError("Range endContainer is not a text node");const e=t.cloneRange();let r=!1,n=!1;const i={start:ct(t.startContainer.textContent,t.startOffset,1),end:ct(t.endContainer.textContent,t.endOffset,2)};if(i.start>=0&&(e.setStart(t.startContainer,i.start),r=!0),i.end>0&&(e.setEnd(t.endContainer,i.end),n=!0),r&&n)return e;if(!r){const{node:s,offset:a}=Zt(e,1);s&&a>=0&&e.setStart(s,a)}if(!n){const{node:s,offset:a}=Zt(e,2);s&&a>0&&e.setEnd(s,a)}return e}function Cr(t){switch(t.nodeType){case Node.ELEMENT_NODE:case Node.TEXT_NODE:return t.textContent?.length??0;default:return 0}}function Yt(t){let e=t.previousSibling,r=0;for(;e;)r+=Cr(e),e=e.previousSibling;return r}function Er(t,...e){let r=e.shift();const n=t.ownerDocument.createNodeIterator(t,NodeFilter.SHOW_TEXT),i=[];let s=n.nextNode(),a,o=0;for(;r!==void 0&&s;)a=s,o+a.data.length>r?(i.push({node:a,offset:r-o}),r=e.shift()):(s=n.nextNode(),o+=a.data.length);for(;r!==void 0&&a&&o===r;)i.push({node:a,offset:a.data.length}),r=e.shift();if(r!==void 0)throw new RangeError("Offset exceeds text length");return i}let Re=class te{constructor(e,r){if(r<0)throw new Error("Offset is invalid");this.element=e,this.offset=r}relativeTo(e){if(!e.contains(this.element))throw new Error("Parent is not an ancestor of current element");let r=this.element,n=this.offset;for(;r!==e;)n+=Yt(r),r=r.parentElement;return new te(r,n)}resolve(e={}){try{return Er(this.element,this.offset)[0]}catch(r){if(this.offset===0&&e.direction!==void 0){const n=document.createTreeWalker(this.element.getRootNode(),NodeFilter.SHOW_TEXT);n.currentNode=this.element;const i=e.direction===1,s=i?n.nextNode():n.previousNode();if(!s)throw r;return{node:s,offset:i?0:s.data.length}}else throw r}}static fromCharOffset(e,r){switch(e.nodeType){case Node.TEXT_NODE:return te.fromPoint(e,r);case Node.ELEMENT_NODE:return new te(e,r);default:throw new Error("Node is not an element or text node")}}static fromPoint(e,r){switch(e.nodeType){case Node.TEXT_NODE:{if(r<0||r>e.data.length)throw new Error("Text node offset is out of range");if(!e.parentElement)throw new Error("Text node has no parent");const n=Yt(e)+r;return new te(e.parentElement,n)}case Node.ELEMENT_NODE:{if(r<0||r>e.childNodes.length)throw new Error("Child node offset is out of range");let n=0;for(let i=0;i<r;i++)n+=Cr(e.childNodes[i]);return new te(e,n)}default:throw new Error("Point is not in an element or text node")}}},ut=class ve{constructor(e,r){this.start=e,this.end=r}relativeTo(e){return new ve(this.start.relativeTo(e),this.end.relativeTo(e))}toRange(){let e,r;this.start.element===this.end.element&&this.start.offset<=this.end.offset?[e,r]=Er(this.start.element,this.start.offset,this.end.offset):(e=this.start.resolve({direction:1}),r=this.end.resolve({direction:2}));const n=new Range;return n.setStart(e.node,e.offset),n.setEnd(r.node,r.offset),n}static fromRange(e){const r=Re.fromPoint(e.startContainer,e.startOffset),n=Re.fromPoint(e.endContainer,e.endOffset);return new ve(r,n)}static fromOffsets(e,r,n){return new ve(new Re(e,r),new Re(e,n))}static trimmedRange(e){return go(ve.fromRange(e).toRange())}},po=class ht{constructor(e,r,n){this.root=e,this.start=r,this.end=n}static fromRange(e,r){const n=ut.fromRange(r).relativeTo(e);return new ht(e,n.start.offset,n.end.offset)}static fromSelector(e,r){return new ht(e,r.start,r.end)}toSelector(){return{type:"TextPositionSelector",start:this.start,end:this.end}}toRange(){return ut.fromOffsets(this.root,this.start,this.end).toRange()}},fo=class dt{constructor(e,r,n={}){this.root=e,this.exact=r,this.context=n}static fromRange(e,r){const n=e.textContent,i=ut.fromRange(r).relativeTo(e),s=i.start.offset,a=i.end.offset,o=32;return new dt(e,n.slice(s,a),{prefix:n.slice(Math.max(0,s-o),s),suffix:n.slice(a,Math.min(n.length,a+o))})}static fromSelector(e,r){const{prefix:n,suffix:i}=r;return new dt(e,r.exact,{prefix:n,suffix:i})}toSelector(){return{type:"TextQuoteSelector",exact:this.exact,prefix:this.context.prefix,suffix:this.context.suffix}}toRange(e={}){return this.toPositionAnchor(e).toRange()}toPositionAnchor(e={}){const r=this.root.textContent,n=ho(r,this.exact,{...this.context,hint:e.hint});if(!n)throw new Error("Quote not found");return new po(this.root,n.start,n.end)}};function mo(t){const e=t.tagName.toUpperCase();return e==="IMG"||e==="VIDEO"||e==="AUDIO"||e==="IFRAME"||e==="OBJECT"||e==="EMBED"||e==="CANVAS"}function yo(t,e){try{const r=e.locations,n=e.text;if(n&&n.highlight){let i;r&&Te(r)&&(i=t.querySelector(Te(r))),i||(i=t.body);const s=new fo(i,n.highlight,{prefix:n.before,suffix:n.after});try{return s.toRange()}catch{return console.warn("Quote not found:",s),null}}if(r){let i=null;if(!i&&Te(r)&&(i=t.querySelector(Te(r))),!i&&r.fragments){for(const s of r.fragments)if(i=t.getElementById(s),i)break}if(i){const s=t.createRange();return i.childNodes.length===0||mo(i)?(s.selectNode(i),s):(s.setStartBefore(i),s.setEndAfter(i),s)}}}catch(r){console.error(r)}return null}function bo(t,e){const r=e.map(u=>u.toUpperCase()),n=[],i=t.commonAncestorContainer,s=i.nodeType===Node.TEXT_NODE?i.parentNode:i,a=t.startContainer.ownerDocument.createTreeWalker(s,NodeFilter.SHOW_TEXT);let o=a.nextNode();for(;o;){if(t.intersectsNode(o)){let u=o.parentNode,l=!1;for(;u;){if(u.nodeType===Node.ELEMENT_NODE&&r.includes(u.tagName.toUpperCase())){l=!0;break}u=u.parentNode}if(!l){const d=t.cloneRange();d.selectNode(o),d.compareBoundaryPoints(Range.START_TO_START,t)<0&&d.setStart(t.startContainer,t.startOffset),d.compareBoundaryPoints(Range.END_TO_END,t)>0&&d.setEnd(t.endContainer,t.endOffset);for(const h of d.getClientRects())n.push({left:h.left,right:h.right,top:h.top,bottom:h.bottom,width:h.width,height:h.height})}}o=a.nextNode()}return n}function xe(t,e,r=!1,n=0){let i;if(Array.isArray(t))i=t;else{let l=t.getClientRects();l.length||t.commonAncestorContainer.nodeType===Node.ELEMENT_NODE&&(l=t.commonAncestorContainer.getClientRects()),i=[];for(const d of l)i.push({bottom:d.bottom,height:d.height,left:d.left,right:d.right,top:d.top,width:d.width})}if(n)for(const l of i)l.left-=n,l.top-=n,l.right+=n,l.bottom+=n,l.width+=n*2,l.height+=n*2;const s=Ar(i,1,e,r),a=wo(s,1),o=Tr(a),u=4;for(let l=o.length-1;l>=0;l--){const d=o[l];if(!(d.width*d.height>u))if(o.length>1)o.splice(l,1);else break}return o}function Ar(t,e,r,n=!1){for(let i=0;i<t.length;i++)for(let s=i+1;s<t.length;s++){const a=t[i],o=t[s];if(a===o)continue;const u=P(a.top,o.top,e)&&P(a.bottom,o.bottom,e),l=P(a.left,o.left,e)&&P(a.right,o.right,e);if((l&&!r&&!n||u&&!l)&&Rr(a,o,e)){const d=t.filter(g=>g!==a&&g!==o),h=vo(a,o);return d.push(h),Ar(d,e,r,n)}}return t}function vo(t,e){const r=Math.min(t.left,e.left),n=Math.max(t.right,e.right),i=Math.min(t.top,e.top),s=Math.max(t.bottom,e.bottom);return{bottom:s,height:s-i,left:r,right:n,top:i,width:n-r}}function wo(t,e){const r=new Set(t);for(const n of t){if(!(n.width>1&&n.height>1)){r.delete(n);continue}for(const i of t)if(n!==i&&r.has(i)&&So(i,n,e)){r.delete(n);break}}return Array.from(r)}function So(t,e,r){return V(t,e.left,e.top,r)&&V(t,e.right,e.top,r)&&V(t,e.left,e.bottom,r)&&V(t,e.right,e.bottom,r)}function V(t,e,r,n){return(t.left<e||P(t.left,e,n))&&(t.right>e||P(t.right,e,n))&&(t.top<r||P(t.top,r,n))&&(t.bottom>r||P(t.bottom,r,n))}function Tr(t){for(let e=0;e<t.length;e++)for(let r=e+1;r<t.length;r++){const n=t[e],i=t[r];if(n!==i&&Rr(n,i,-1)){let s=[],a;const o=er(n,i);if(o.length===1)s=o,a=n;else{const l=er(i,n);o.length<l.length?(s=o,a=n):(s=l,a=i)}const u=t.filter(l=>l!==a);return Array.prototype.push.apply(u,s),Tr(u)}}return t}function er(t,e){const r=Oo(e,t);if(r.height===0||r.width===0)return[t];const n=[];{const i={bottom:t.bottom,height:0,left:t.left,right:r.left,top:t.top,width:0};i.width=i.right-i.left,i.height=i.bottom-i.top,i.height!==0&&i.width!==0&&n.push(i)}{const i={bottom:r.top,height:0,left:r.left,right:r.right,top:t.top,width:0};i.width=i.right-i.left,i.height=i.bottom-i.top,i.height!==0&&i.width!==0&&n.push(i)}{const i={bottom:t.bottom,height:0,left:r.left,right:r.right,top:r.bottom,width:0};i.width=i.right-i.left,i.height=i.bottom-i.top,i.height!==0&&i.width!==0&&n.push(i)}{const i={bottom:t.bottom,height:0,left:r.right,right:t.right,top:t.top,width:0};i.width=i.right-i.left,i.height=i.bottom-i.top,i.height!==0&&i.width!==0&&n.push(i)}return n}function Oo(t,e){const r=Math.max(t.left,e.left),n=Math.min(t.right,e.right),i=Math.max(t.top,e.top),s=Math.min(t.bottom,e.bottom);return{bottom:s,height:Math.max(0,s-i),left:r,right:n,top:i,width:Math.max(0,n-r)}}function Rr(t,e,r){return(t.left<e.right||r>=0&&P(t.left,e.right,r))&&(e.left<t.right||r>=0&&P(e.left,t.right,r))&&(t.top<e.bottom||r>=0&&P(t.top,e.bottom,r))&&(e.top<t.bottom||r>=0&&P(e.top,t.bottom,r))}function P(t,e,r){return Math.abs(t-e)<=r}let Ne=null,Xe=null,be=0;const re={r:255,g:255,b:255,a:1},Z=new Map,ko=()=>{if(!Ne)if(typeof OffscreenCanvas<"u")Ne=new OffscreenCanvas(5,5),Xe=Ne.getContext("2d",{willReadFrequently:!0,desynchronized:!0});else{const t=document.createElement("canvas");t.width=5,t.height=5,Ne=t,Xe=t.getContext("2d",{willReadFrequently:!0,desynchronized:!0})}return Xe},Co=t=>{if(!t)return!0;const e=t.trim().toLowerCase();return e.startsWith("var(")||["transparent","currentcolor","inherit","initial","revert","unset","revert-layer"].includes(e)?!0:["linear-gradient","radial-gradient","conic-gradient","repeating-linear-gradient","repeating-radial-gradient","repeating-conic-gradient"].some(r=>e.includes(r))},qe=(t,e)=>{console.warn(`[Decorator] Could not parse color: "${t}". ${e} Falling back to ${JSON.stringify(re)} to compute contrast. Please use a CSS color value that can be computed to RGB(A).`)},J=(t,e=null)=>{const r=e?`${t}|${e}`:t,n=Z.get(r);if(n!==void 0)return n??re;if(Co(t))return qe(t,"Unsupported color format or special value."),Z.set(r,null),re;const i=ko();if(!i)return qe(t,"Could not get canvas context."),Z.set(r,null),re;try{be===0&&i.clearRect(0,0,5,5);const s=be%5,a=Math.floor(be/5);i.clearRect(s,a,1,1),e&&(i.fillStyle=e,i.fillRect(s,a,1,1)),i.fillStyle=t,i.fillRect(s,a,1,1);const o=i.getImageData(s,a,1,1);be=(be+1)%25;const[u,l,d,h]=o.data;if(h===0)return qe(t,"Fully transparent color."),Z.set(r,null),re;const g={r:u,g:l,b:d,a:h/255};return Z.set(r,g),g}catch(s){return qe(t,`Error: ${s instanceof Error?s.message:String(s)}`),Z.set(r,null),re}},Ze=t=>{const e=t/255;return e<=.03928?e/12.92:Math.pow((e+.055)/1.055,2.4)},gt=t=>{const e=Ze(t.r),r=Ze(t.g),n=Ze(t.b);return .2126*e+.7152*r+.0722*n},De=(t,e)=>{const r=typeof t=="string"?J(t):t,n=typeof e=="string"?J(e):e,i=gt(r),s=gt(n),a=Math.max(i,s),o=Math.min(i,s);return(a+.05)/(o+.05)},xr=(t,e=null)=>{const r=J(t,e),n=De(r,{r:255,g:255,b:255,a:1}),i=De(r,{r:0,g:0,b:0,a:1});return n>i},tr=(t,e=null)=>xr(t,e)?"white":"black",Eo=t=>{const e=t.a!==void 0?t.a:1;return`rgba(${Math.round(t.r)}, ${Math.round(t.g)}, ${Math.round(t.b)}, ${e})`},Ao=(t,e)=>({r:Math.min(255,t.r+(255-t.r)*e),g:Math.min(255,t.g+(255-t.g)*e),b:Math.min(255,t.b+(255-t.b)*e),a:t.a??1}),To=(t,e)=>({r:Math.max(0,t.r*(1-e)),g:Math.max(0,t.g*(1-e)),b:Math.max(0,t.b*(1-e)),a:t.a??1}),Y=(t,e=null,r=3)=>{const n=J(t),i=e?J(e):{r:255,g:255,b:255,a:1};let s=De(n,i);if(s>=r)return t;const a=gt(i)<.5;let o={...n,a:n.a??1};const u=20,l=.1;for(let d=0;d<u&&(a?o=Ao(o,l):o=To(o,l),s=De(o,i),!(s>=r));d++);return Eo(o)},Nr=()=>typeof navigator>"u"?"":navigator.userAgent||"",qr=()=>typeof navigator>"u"?void 0:navigator.userAgentData||void 0;let Lr=class{constructor(){const e=qr(),r=Nr(),n=s=>(typeof s=="string"||typeof s=="number")&&s?String(s).replace(/_/g,".").split(".").map(a=>parseInt(a)||0):[],i=(s="")=>{if(!s)return[];const a=new RegExp("^.*"+s+"[ :\\/]?(\\d+([\\._]\\d+)*).*$");return a.test(r)?n(r.replace(a,"$1")):[]};this.OS=(s=>(/(macOS|Mac OS X)/.test(r)?(/\(iP(hone|od touch);/.test(r)&&(s.iOS=i("CPU (?:iPhone )?OS ")),/\(iPad;/.test(r)?s.iOS=s.iPadOS=i("CPU (?:iPhone )?OS "):/(macOS|Mac OS X) \d/.test(r)&&(document.ontouchend!==void 0?s.iOS=s.iPadOS=i():s.macOS=i("(?:macOS|Mac OS X) "))):/Windows( NT)? \d/.test(r)?s.Windows=(a=>a[0]!==6||!a[1]?a:a[1]===1?[7]:a[1]===2?[8]:[8,1])(i("Windows(?: NT)?")):/Android \d/.test(r)?s.Android=i("Android"):/CrOS/.test(r)?s.ChromeOS=i():/X11;/.test(r)&&(s.Linux=i()),s))({}),e&&e.getHighEntropyValues(["architecture","model","platform","platformVersion","uaFullVersion"]).then(s=>(a=>{const o=s.platform,u=s.platformVersion;if(!(!o||!u)){if(/^i(OS|P(hone|od touch))$/.test(o))a.iOS=n(u);else if(/^iPad(OS)?$/.test(o))a.iOS=a.iPadOS=n(u);else if(/^(macOS|(Mac )?OS X|Mac(Intel)?)$/.test(o))document.ontouchend!==void 0?a.iOS=a.iPadOS=n():a.macOS=n(u);else if(/^(Microsoft )?Windows$/.test(o))a.Windows=n(u);else if(/^(Google )?Android$/.test(o))a.Android=n(u);else if(/^((Google )?Chrome OS|CrOS)$/.test(o))a.ChromeOS=n(u);else if(/^(Linux|Ubuntu|X11)$/.test(o))a.Linux=n(u);else return;Object.keys(this.OS).forEach(l=>delete this.OS[l]),Object.assign(this.OS,a)}})({})),this.UA=(s=>{let a=!1;if(e&&Array.isArray(e.brands)){const o=e.brands.reduce((u,l)=>(u[l.brand]=[l.version*1],u),{});o["Google Chrome"]?(a=!0,s.Blink=s.Chromium=o.Chromium||[],s.Chrome=o["Google Chrome"]):o["Microsoft Edge"]?(a=!0,s.Blink=s.Chromium=o.Chromium||[],s.Edge=o["Microsoft Edge"]):o.Opera&&(a=!0,s.Blink=s.Chromium=o.Chromium||[],s.Opera=o.Opera)}return a||(/ Gecko\/\d/.test(r)?(s.Gecko=i("rv"),/ Waterfox\/\d/.test(r)?s.Waterfox=i("Waterfox"):/ Firefox\/\d/.test(r)&&(s.Firefox=i("Firefox"))):/ Edge\/\d/.test(r)?(s.EdgeHTML=i("Edge"),s.Edge=s.EdgeHTML):/ Chrom(ium|e)\/\d/.test(r)?(s.Blink=s.Chromium=(o=>o[0]?o:i("Chrome"))(i("Chromium")),/ EdgA?\/\d/.test(r)?s.Edge=(o=>o[0]?o:i("Edg"))(i("EdgA")):/ OPR\/\d/.test(r)?s.Opera=i("OPR"):/ Vivaldi\/\d/.test(r)?s.Vivaldi=i("Vivaldi"):/ Silk\/\d/.test(r)?s.Silk=i("Silk"):/ UCBrowser\/\d/.test(r)?s.UCBrowser=i("UCBrowser"):/ Phoebe\/\d/.test(r)?s.Phoebe=i("Phoebe"):s.Chrome=(o=>o[0]?o:s.Chromium)(i("Chrome"))):/ AppleWebKit\/\d/.test(r)?(s.WebKit=i("AppleWebKit"),/ CriOS \d/.test(r)?s.Chrome=i("CriOS"):/ FxiOS \d/.test(r)?s.Firefox=i("FxiOS"):/ EdgiOS\/\d/.test(r)?s.Edge=i("EdgiOS"):/ Version\/\d/.test(r)&&(s.Safari=i("Version"))):/ Trident\/\d/.test(r)&&(s.Trident=i("Trident"),s.InternetExplorer=(o=>o[0]?o:i("MSIE"))(i("rv")))),/[\[; ]FB(AN|_IAB)\//.test(r)&&(s.Facebook=i("FBAV")),/ Line\/\d/.test(r)&&(s.LINE=i("Line")),s})({}),this.Env={get:()=>[this.OS,this.UA].reduce((s,a)=>{for(const o in a)a[o]&&s.push(o);return s},[])}}};class Ro extends Lr{get iOSRequest(){const e=qr(),r=Nr();if(this.OS.iOS&&!this.OS.iPadOS)return"mobile";if(this.OS.iPadOS)return/\(iPad;/.test(r)||e&&/^iPad(OS)?$/.test(e.platform)?"mobile":"desktop"}}const xo=new Lr;new Ro;const rr=["div","span","p","br","hr","b","i","em","strong","s","u","mark","small","sub","sup","abbr","cite","code","data","dfn","kbd","q","samp","time","var","blockquote","pre","svg","g","path","circle","ellipse","rect","line","polygon","polyline","text","tspan","defs","use"],No=/^on/i,qo=new Set(["href","src","action","formaction","xlink:href"]),Lo=/^\s*(javascript|data):/i;function Io(t,e){const r=t.document.createElement("div");if("Sanitizer"in t&&typeof r.setHTML=="function")try{const i=new t.Sanitizer({allowElements:rr});return r.setHTML(e,{sanitizer:i}),r.firstElementChild}catch{}const n=t.document.implementation.createHTMLDocument("");for(n.body.innerHTML=e,Po(n.body,new Set(rr));n.body.firstChild;)r.appendChild(t.document.adoptNode(n.body.firstChild));return r.firstElementChild}function Po(t,e){const r=Array.from(t.querySelectorAll("*")).reverse();for(const n of r){if(!e.has(n.localName)){n.replaceWith(...Array.from(n.childNodes));continue}for(const{name:i,value:s}of Array.from(n.attributes))(No.test(i)||qo.has(i)&&Lo.test(s))&&n.removeAttribute(i)}}function Ye(t){switch(t){case C.Mask:return"rgba(255, 255, 255, 0.5)";case C.Highlight:case C.HighlightUnderline:return"#FFFF00";default:return"#FF0000"}}const C={Highlight:"highlight",HighlightUnderline:"highlightUnderline",Underline:"underline",Strikethrough:"strikethrough",Outline:"outline",TextColor:"textColor",Mask:"mask",Template:"template"};var Ir=(t=>(t.Wrap="wrap",t.Viewport="viewport",t.Bounds="bounds",t.Page="page",t))(Ir||{}),Pr=(t=>(t.Boxes="boxes",t.Bounds="bounds",t))(Pr||{});const $o=()=>"Highlight"in window,nr=["IMG","IMAGE","AUDIO","VIDEO","SVG"];class Do{constructor(e,r,n,i){this.wnd=e,this.comms=r,this.id=n,this.name=i,this.items=[],this.lastItemId=0,this.container=void 0,this._activatable=!1,this._hoverable=!1,this.hoveredItem=void 0,this.experimentalHighlights=!1,this._tintSubKeys=new Map,this._subKeyCounter=0,this.maskSvg=void 0,this.shadowHost=void 0,this.shadowRoot=void 0,this.currentRender=0,$o()&&(this.experimentalHighlights=!0,this.notTextFlag=new Map),this.activationHandler=this.handleActivation.bind(this),this.wnd.document.addEventListener("pointerup",this.activationHandler),this.hoverHandler=this.handleHover.bind(this),this.wnd.document.addEventListener("pointermove",this.hoverHandler)}get activatable(){return this._activatable}set activatable(e){this._activatable=e}get hoverable(){return this._hoverable}set hoverable(e){if(this._hoverable=e,!e&&this.hoveredItem){const r=this.hoveredItem.range.getBoundingClientRect(),n=this.wnd.devicePixelRatio;this.comms.send("decoration_pointer_leave",{decorationId:this.hoveredItem.decoration.id,group:this.name,rect:{top:r.top*n,left:r.left*n,width:r.width*n,height:r.height*n}}),this.hoveredItem=void 0}}add(e){const r=`${this.id}-${this.lastItemId++}`,n=yo(this.wnd.document,e.locator);if(!n){this.comms.log("Can't locate DOM range for decoration",e);return}const i=n.commonAncestorContainer;if(i.nodeType!==Node.TEXT_NODE&&this.experimentalHighlights&&(nr.includes(i.nodeName.toUpperCase())&&this.notTextFlag?.set(r,!0),n.cloneContents().querySelector(nr.join(", ").toLowerCase())&&this.notTextFlag?.set(r,!0),(i.textContent?.trim()||"").length===0&&this.notTextFlag?.set(r,!0)),this.experimentalHighlights&&!this.notTextFlag?.has(r)){const a=o=>{for(;o&&o.nodeType===Node.ELEMENT_NODE;){if(o.namespaceURI?.includes("svg"))return!0;o=o.parentNode}return!1};(a(n.startContainer)||a(n.endContainer))&&this.notTextFlag?.set(r,!0)}if(this.experimentalHighlights){const{type:a}=e.style,{layout:o,width:u,expand:l}=e.style;a!==C.TextColor&&(a===C.Outline||a===C.Template||a===C.Mask||o!==void 0&&o!=="boxes"||u!==void 0&&u!=="wrap"||l)&&this.notTextFlag?.set(r,!0)}const s={decoration:e,id:r,range:n,hitRects:[],clickableElements:void 0,container:void 0};this.items.push(s),this.layout(s),s.hitRects=this.clientRectsToDocCoords(xe(s.range,!1,!1,(s.decoration.style.expand??0)+this.hitGap())),this.renderLayout([s])}remove(e){const r=this.items.findIndex(s=>s.decoration.id===e);if(r<0)return;const n=this.items[r],i=n.decoration.style?.type===C.Mask;if(this.items.splice(r,1),n.clickableElements=void 0,n.container&&(n.container.remove(),n.container=void 0),this.experimentalHighlights&&!this.notTextFlag?.has(n.id)&&n.highlightSubKey){const s=this.wnd.CSS.highlights;s.get(n.highlightSubKey)?.delete(n.range),this.items.some(o=>o.highlightSubKey===n.highlightSubKey)||s.delete(n.highlightSubKey);const a=this.wnd.document.getElementById(`${this.id}-style`);a&&this._rebuildHighlightStylesheet(a)}this.notTextFlag?.delete(n.id),this.hoveredItem===n&&(this.hoveredItem=void 0),i&&this.updateSharedMask()}update(e){this.remove(e.id),this.add(e)}clear(){this.clearContainer(),this.items.length=0,this.notTextFlag?.clear(),this.hoveredItem=void 0,this.maskSvg&&(this.maskSvg.remove(),this.maskSvg=void 0),this.shadowHost&&(this.shadowHost.remove(),this.shadowHost=void 0,this.shadowRoot=void 0)}destroy(){this.clear(),this.wnd.document.removeEventListener("pointerup",this.activationHandler),this.wnd.document.removeEventListener("pointermove",this.hoverHandler)}clientRectsToDocCoords(e){const r=me(this.wnd),n=r.xDocOffset,i=r.yDocOffset;return n===0&&i===0?e:e.map(s=>({left:s.left+n,top:s.top+i,right:s.right+n,bottom:s.bottom+i,width:s.width,height:s.height}))}pointerToDocCoords(e){const r=me(this.wnd);return{docX:e.clientX+r.xDocOffset,docY:e.clientY+r.yDocOffset}}effectiveZoom(){if(!xo.UA.Blink)return 1;const e=parseFloat(this.wnd.getComputedStyle(this.wnd.document.documentElement).zoom),r=parseFloat(this.wnd.getComputedStyle(this.wnd.document.body).zoom);return(e||1)*(r||1)}hitGap(){return 2*this.effectiveZoom()}handleActivation(e){if(!this._activatable)return;const{docX:r,docY:n}=this.pointerToDocCoords(e),i=this.wnd.devicePixelRatio;for(const s of this.items){let a;if(s.decoration.style.type===C.Template)for(const o of s.clickableElements??[]){const u=o.getBoundingClientRect();if(V(u,e.clientX,e.clientY,0)){a=u;break}}else for(const o of s.hitRects)if(V(o,r,n,0)){a=s.range.getBoundingClientRect();break}if(a){this.comms.send("decoration_activated",{decorationId:s.decoration.id,group:this.name,rect:{top:a.top*i,left:a.left*i,width:a.width*i,height:a.height*i},point:{x:e.clientX*i,y:e.clientY*i}});return}}}handleHover(e){if(!this._hoverable)return;const{docX:r,docY:n}=this.pointerToDocCoords(e),i=this.wnd.devicePixelRatio;let s,a;for(const o of this.items){if(o.decoration.style.type===C.Template)for(const u of o.clickableElements??[]){const l=u.getBoundingClientRect();if(V(l,e.clientX,e.clientY,0)){s=o,a=l;break}}else for(const u of o.hitRects)if(V(u,r,n,0)){s=o,a=o.range.getBoundingClientRect();break}if(s)break}if(s!==this.hoveredItem){if(this.hoveredItem){const o=this.hoveredItem.range.commonAncestorContainer.isConnected?this.hoveredItem.range.getBoundingClientRect():null;this.comms.send("decoration_pointer_leave",{decorationId:this.hoveredItem.decoration.id,group:this.name,rect:o?{top:o.top*i,left:o.left*i,width:o.width*i,height:o.height*i}:void 0,point:{x:e.clientX*i,y:e.clientY*i}})}this.hoveredItem=s,s&&a&&this.comms.send("decoration_pointer_enter",{decorationId:s.decoration.id,group:this.name,rect:{top:a.top*i,left:a.left*i,width:a.width*i,height:a.height*i},point:{x:e.clientX*i,y:e.clientY*i}})}}requestLayout(){this.wnd.cancelAnimationFrame(this.currentRender),this.clearContainer(),this.wnd.document.fonts.ready.then(()=>{this.currentRender=this.wnd.requestAnimationFrame(()=>{this.items.forEach(e=>{this.layout(e),e.hitRects=this.clientRectsToDocCoords(xe(e.range,!1,!1,(e.decoration.style.expand??0)+this.hitGap()))}),this.renderLayout(this.items),this.updateSharedMask()})})}experimentalLayout(e){const r=this.requireContainer(!0),n=this.wnd.CSS.highlights,i=e.decoration.style,s=i.type??C.Highlight,a=i.tint??Ye(s),o=i.width,u=i.layout,l=this._getSubKey(s,a);e.highlightSubKey&&(n.get(e.highlightSubKey)?.delete(e.range),e.highlightSubKey!==l&&!this.items.some(b=>b!==e&&b.highlightSubKey===e.highlightSubKey)&&n.delete(e.highlightSubKey)),e.highlightSubKey=l;let d;n.has(l)?d=n.get(l):(d=new this.wnd.Highlight,n.set(l,d));const h=(b,m)=>this.wnd.document.caretPositionFromPoint?.(b,m)??null;if(s===C.TextColor&&(u==="bounds"||o==="bounds"||o==="page")){const b=me(this.wnd);if(b.isVertical)console.warn("Vertical writing detected: caretPositionFromPoint has known bugs, falling back to original range"),d.add(e.range);else{const m=e.range.getBoundingClientRect();let O,R;o==="page"?(O=Math.floor(b.inlineStart(m)/b.pageInlineSize)*b.pageInlineSize,R=b.pageInlineSize):(O=b.inlineStart(m),R=b.inlineSize(m));const E=h(O,b.blockStart(m)+1),N=h(O+R,b.blockStart(m)+b.blockSize(m)-1);if(E&&N){const L=this.wnd.document.createRange();L.setStart(E.offsetNode,E.offset),L.setEnd(N.offsetNode,N.offset),d.add(L),e.range=L}else d.add(e.range)}}else d.add(e.range);const g=this.getBackgroundColor(),p=i.enforceContrast!==!1?Y(a,g):a;let f;switch(s){case C.Underline:f=`::highlight(${l}) {
|
|
28
|
+
text-decoration: underline;
|
|
29
|
+
text-decoration-color: ${p};
|
|
30
|
+
text-decoration-thickness: 0.1em;
|
|
31
|
+
}`;break;case C.Strikethrough:f=`::highlight(${l}) {
|
|
32
|
+
text-decoration: line-through;
|
|
33
|
+
text-decoration-color: ${p};
|
|
34
|
+
text-decoration-thickness: 0.1em;
|
|
35
|
+
}`;break;case C.Outline:f=`::highlight(${l}) {
|
|
36
|
+
outline: 2px solid ${p};
|
|
37
|
+
outline-offset: 1px;
|
|
38
|
+
}`;break;case C.TextColor:f=`::highlight(${l}) {
|
|
39
|
+
color: ${p};
|
|
40
|
+
}`;break;case C.HighlightUnderline:{const{r:b,g:m,b:O}=J(p),R=`rgba(${b}, ${m}, ${O}, 0.3)`;f=`::highlight(${l}) {
|
|
41
|
+
color: ${tr(p,g)};
|
|
42
|
+
background-color: ${R};
|
|
43
|
+
text-decoration: underline;
|
|
44
|
+
text-decoration-color: ${p};
|
|
45
|
+
text-decoration-thickness: 0.1em;
|
|
46
|
+
}`;break}case C.Highlight:default:f=`::highlight(${l}) {
|
|
47
|
+
color: ${tr(p,g)};
|
|
48
|
+
background-color: ${p};
|
|
49
|
+
}`}e.highlightCSS=f,this._rebuildHighlightStylesheet(r)}_getSubKey(e,r){const n=`${e}::${r}`;let i=this._tintSubKeys.get(n);return i||(i=`${this.id}--${this._subKeyCounter++}`,this._tintSubKeys.set(n,i)),i}_rebuildHighlightStylesheet(e){const r=new Set,n=[];for(const i of this.items)i.highlightSubKey&&i.highlightCSS&&!r.has(i.highlightSubKey)&&(r.add(i.highlightSubKey),n.push(i.highlightCSS));e.innerHTML=n.join(`
|
|
50
|
+
`)}layout(e){if(this.experimentalHighlights&&!this.notTextFlag?.has(e.id))return this.experimentalLayout(e);const r=this.wnd.document.createElement("div");r.setAttribute("id",e.id),r.dataset.highlightId=e.decoration.id,r.style.setProperty("pointer-events","none");const n=me(this.wnd),i=1/this.effectiveZoom(),s=e.decoration.style.expand??0,a=(h,g,p,f=0)=>{const b=e.decoration?.style?.width,m=g;switch(b){case"viewport":{const O=Math.floor(n.inlineStart(m)/n.viewportInlineSize)*n.viewportInlineSize;n.applyPosition(h,O+n.inlineScrollOffset+f,n.blockStart(m)+n.blockScrollOffset,n.viewportInlineSize-2*f,n.blockSize(m),i);break}case"page":{const O=Math.floor(n.inlineStart(m)/n.pageInlineSize)*n.pageInlineSize;n.applyPosition(h,O+n.inlineScrollOffset+f,n.blockStart(m)+n.blockScrollOffset,n.pageInlineSize-2*f,n.blockSize(m),i);break}case"bounds":{n.applyPosition(h,n.inlineStart(p)+n.inlineScrollOffset,n.blockStart(m)+n.blockScrollOffset,n.inlineSize(p),n.blockSize(m),i);break}default:n.applyPosition(h,n.inlineStart(m)+n.inlineScrollOffset,n.blockStart(m)+n.blockScrollOffset,n.inlineSize(m),n.blockSize(m),i)}},o=e.range.getBoundingClientRect(),u=e.decoration.style,l=(()=>{if(u.type!==C.Outline)return 0;const h=u.width;return h==="page"||h==="viewport"?3:0})();let d;if(u.type===C.Template){u.stylesheet&&this.injectCustomStylesheet(u.stylesheet);const h=Io(this.wnd,u.element);if(!h){e.container=r,e.clickableElements=[];return}h.style.setProperty("pointer-events","none"),d=h}else{const h=u,g=h.type??C.Highlight,p=h.tint??Ye(g);if(g===C.TextColor){e.container=r,e.clickableElements=[];return}if(g===C.Mask){e.container=r,e.clickableElements=[],this.updateSharedMask();return}const f=this.getCurrentDarkMode(),b=this.getBackgroundColor(),m=h.enforceContrast!==!1,O=(()=>{switch(g){case C.Underline:{const E=m?Y(p,b):p,N=h.layout==="bounds",[L,I]=n.isVertical?["border-right","border-left"]:["border-bottom","border-top"];return[N?`${I}: 0.1em solid ${E} !important`:null,`${L}: 0.1em solid ${E} !important`,"background-color: transparent !important","box-sizing: border-box !important"].filter(Boolean).join("; ")}case C.Strikethrough:{const E=m?Y(p,b):p;return h.layout==="bounds"?[`background: repeating-linear-gradient(-45deg, transparent, transparent 19px, ${E} 19px, ${E} 20px) !important`,"background-color: transparent !important","box-sizing: border-box !important"].join("; "):[`background-color: ${E} !important`,"box-sizing: border-box !important"].join("; ")}case C.Outline:return[`outline: 2px solid ${m?Y(p,b):p} !important`,"outline-offset: 1px !important","background-color: transparent !important","box-sizing: border-box !important"].join("; ");case C.HighlightUnderline:{const E=m?Y(p,b):p,{r:N,g:L,b:I}=J(E),D=`rgba(${N}, ${L}, ${I}, 0.3)`,ue=h.layout==="bounds",[he,y]=n.isVertical?["border-right","border-left"]:["border-bottom","border-top"];return[`background-color: ${D} !important`,ue?`${y}: 0.1em solid ${E} !important`:null,`${he}: 0.1em solid ${E} !important`,"box-sizing: border-box !important"].filter(Boolean).join("; ")}case C.Highlight:default:return[`background-color: ${m?Y(p,b):p} !important`,`mix-blend-mode: ${f?"exclusion":"multiply"} !important`,"opacity: 1 !important","box-sizing: border-box !important"].join("; ")}})(),R=this.wnd.document.createElement("template");R.innerHTML=`<div data-readium="true" class="readium-${g}" style="${O}"></div>`.trim(),d=R.content.firstElementChild}if(e.decoration?.style?.layout==="bounds"){const h=d.cloneNode(!0);h.style.setProperty("pointer-events","none");const g=s?{left:o.left-s,right:o.right+s,top:o.top-s,bottom:o.bottom+s,width:o.width+s*2,height:o.height+s*2}:o;a(h,g,o,l),r.append(h)}else{const h=u.type,g=h===C.Underline||h===C.Strikethrough,p=h===C.Strikethrough,f=g?bo(e.range,["rt","rp"]):e.range;let b=xe(f,!0,n.isVertical,g?0:s);b=b.sort((m,O)=>n.isVertical?(n.isVertLR?1:-1)*(m.left-O.left):m.top-O.top);for(let m of b){const O=d.cloneNode(!0);O.style.setProperty("pointer-events","none");let R=m;if(p){const E=n.blockSize(m)*.1,N=n.blockStart(m)+n.blockSize(m)/2-E/2;R=n.isVertical?{left:N,right:N+E,top:m.top,bottom:m.bottom,width:E,height:m.height}:{top:N,bottom:N+E,left:m.left,right:m.right,height:E,width:m.width}}s&&g&&(R=n.isVertical?{...R,top:R.top-s,bottom:R.bottom+s,height:R.height+s*2}:{...R,left:R.left-s,right:R.right+s,width:R.width+s*2}),a(O,R,o,l),r.append(O)}}e.container=r,e.clickableElements=Array.from(r.querySelectorAll("[data-activable='1']")),e.clickableElements.length||(e.clickableElements=Array.from(r.children))}renderLayout(e){this.wnd.cancelAnimationFrame(this.currentRender),this.currentRender=this.wnd.requestAnimationFrame(()=>{e=e.filter(r=>!this.experimentalHighlights||!!this.notTextFlag?.has(r.id)),!(!e||e.length===0)&&this.requireContainer().append(...e.map(r=>r.container).filter(r=>!!r))})}requireContainer(e=!1){if(e){let r;return this.wnd.document.getElementById(`${this.id}-style`)?r=this.wnd.document.getElementById(`${this.id}-style`):(r=this.wnd.document.createElement("style"),r.dataset.readium="true",r.id=`${this.id}-style`,this.wnd.document.head.appendChild(r)),r}return this.container||(this.shadowRoot||(this.shadowHost=this.wnd.document.createElement("div"),this.shadowHost.style.cssText="position:absolute;top:0;left:0;width:100%;height:100%;pointer-events:none",this.wnd.document.body.appendChild(this.shadowHost),this.shadowRoot=this.shadowHost.attachShadow({mode:"open"})),this.container=this.wnd.document.createElement("div"),this.container.setAttribute("id",this.id),this.container.dataset.group=this.name,this.container.dataset.readium="true",this.container.style.setProperty("pointer-events","none"),this.container.style.display="contents",this.shadowRoot.appendChild(this.container)),this.container}getCurrentDarkMode(){return Kt(this.wnd,"--USER__appearance")==="readium-night-on"||xr(this.getBackgroundColor())}getBackgroundColor(){return Kt(this.wnd,"--USER__backgroundColor")||this.wnd.getComputedStyle(this.wnd.document.documentElement).getPropertyValue("background-color")}updateSharedMask(){const e=this.items.filter(g=>g.decoration.style?.type===C.Mask);if(e.length===0){this.maskSvg&&(this.maskSvg.remove(),this.maskSvg=void 0),this.shadowRoot&&(this.shadowRoot.innerHTML="");return}const r=me(this.wnd),n=1/this.effectiveZoom(),i=this.wnd.document.documentElement,s=i.scrollWidth,a=i.scrollHeight,o=[];for(const g of e){const p=g.decoration.style,f=p.layout??"boxes",b=p.width??"wrap",m=p.expand??0,O=g.range.getBoundingClientRect(),R=f==="bounds"?[m?{left:O.left-m,top:O.top-m,right:O.right+m,bottom:O.bottom+m,width:O.width+m*2,height:O.height+m*2}:O]:xe(g.range,!1,!1,m);for(const E of R){let N;switch(b){case"viewport":{const L=Math.floor(r.inlineStart(E)/r.viewportInlineSize)*r.viewportInlineSize;N=r.toRect(L,r.blockStart(E),r.viewportInlineSize,r.blockSize(E));break}case"page":{const L=Math.floor(r.inlineStart(E)/r.pageInlineSize)*r.pageInlineSize;N=r.toRect(L,r.blockStart(E),r.pageInlineSize,r.blockSize(E));break}case"bounds":{N=r.toRect(r.inlineStart(O),r.blockStart(E),r.inlineSize(O),r.blockSize(E));break}default:N=r.toRect(r.inlineStart(E),r.blockStart(E),r.inlineSize(E),r.blockSize(E))}o.push(N)}}const u=[`M0 0 H${s} V${a} H0 Z`,...o.map(g=>{const p=(g.left+r.xDocOffset)*n,f=(g.top+r.yDocOffset)*n,b=(g.right+r.xDocOffset)*n,m=(g.bottom+r.yDocOffset)*n;return`M${p} ${f} H${b} V${m} H${p} Z`})].join(" "),l="http://www.w3.org/2000/svg";if(!this.maskSvg){this.shadowRoot||(this.shadowHost=this.wnd.document.createElement("div"),this.shadowHost.style.cssText="position:absolute;top:0;left:0;width:100%;height:100%;pointer-events:none",this.wnd.document.body.appendChild(this.shadowHost),this.shadowRoot=this.shadowHost.attachShadow({mode:"open"})),this.maskSvg=this.wnd.document.createElementNS(l,"svg"),this.maskSvg.style.cssText=`position:absolute;top:0;left:0;width:${s}px;height:${a}px;pointer-events:none;z-index:9999`,this.maskSvg.dataset.readium="true";const g=this.wnd.document.createElementNS(l,"defs"),p=this.wnd.document.createElementNS(l,"clipPath"),f=`${this.id}-mask-clip`;p.setAttribute("id",f),p.setAttribute("clipPathUnits","userSpaceOnUse");const b=this.wnd.document.createElementNS(l,"path");b.setAttribute("clip-rule","evenodd"),p.appendChild(b),g.appendChild(p),this.maskSvg.appendChild(g);const m=this.wnd.document.createElementNS(l,"rect");m.setAttribute("id",`${this.id}-mask-rect`),m.setAttribute("clip-path",`url(#${f})`),m.style.pointerEvents="none",this.maskSvg.appendChild(m),this.shadowRoot.appendChild(this.maskSvg)}this.maskSvg.style.width=`${s}px`,this.maskSvg.style.height=`${a}px`;const d=this.maskSvg.querySelector("path");d&&d.setAttribute("d",u);const h=this.maskSvg.querySelector("rect");if(h){const g=e[0].decoration.style.tint,p=g??this.getBackgroundColor()??Ye(C.Mask),f=g?"1":"0.5";h.setAttribute("x","0"),h.setAttribute("y","0"),h.setAttribute("width",String(s)),h.setAttribute("height",String(a)),h.setAttribute("fill",p),h.setAttribute("fill-opacity",f)}}injectCustomStylesheet(e){const r=`${this.id}-custom-style`;let n=this.wnd.document.getElementById(r);n||(n=this.wnd.document.createElement("style"),n.id=r,n.dataset.readium="true",this.wnd.document.head.appendChild(n)),n.innerHTML=e}clearContainer(){if(this.experimentalHighlights){const e=this.wnd.CSS.highlights;for(const r of this._tintSubKeys.values())e.delete(r);this._tintSubKeys.clear(),this._subKeyCounter=0}this.wnd.document.getElementById(`${this.id}-custom-style`)?.remove(),this.container&&(this.container.remove(),this.container=void 0)}}const $r=class we extends ro{constructor(){super(...arguments),this.resizeFrame=0,this.lastGroupId=0,this.groups=new Map,this.handleResizer=this.handleResize.bind(this)}cleanup(){this.groups.forEach(e=>e.destroy()),this.groups.clear()}updateHighlightStyles(){this.groups.forEach(e=>{e.requestLayout()})}handleResize(){this.wnd.clearTimeout(this.resizeFrame),this.resizeFrame=this.wnd.setTimeout(()=>{this.groups.forEach(e=>{e.experimentalHighlights||e.requestLayout()})},50)}mount(e,r){return this.wnd=e,r.register("decorate",we.moduleName,(n,i)=>{const s=n;(s.action==="add"||s.action==="update")&&s.decoration.locator&&(s.decoration.locator=lo.deserialize(s.decoration.locator)),this.groups.has(s.group)||this.groups.set(s.group,new Do(e,r,`readium-decoration-${this.lastGroupId++}`,s.group));const a=this.groups.get(s.group);switch(s.action){case"add":a?.add(s.decoration);break;case"remove":a?.remove(s.decoration.id);break;case"clear":a?.clear();break;case"update":a?.update(s.decoration);break}i(!0)}),r.register("decoration_activatable",we.moduleName,(n,i)=>{const s=n,a=this.groups.get(s.group);a&&(a.activatable=s.activatable),i(!0)}),r.register("decoration_hoverable",we.moduleName,(n,i)=>{const s=n,a=this.groups.get(s.group);a&&(a.hoverable=s.hoverable),i(!0)}),this.resizeObserver=new ResizeObserver(()=>e.requestAnimationFrame(()=>this.handleResize())),this.resizeObserver.observe(e.document.documentElement),e.addEventListener("orientationchange",this.handleResizer),e.addEventListener("resize",this.handleResizer),this.styleObserver=new MutationObserver(n=>{n.some(i=>i.type==="attributes"&&i.attributeName==="style"&&i.oldValue!==i.target.getAttribute("style"))&&this.updateHighlightStyles()}),this.styleObserver.observe(e.document.documentElement,{attributes:!0,attributeFilter:["style"],attributeOldValue:!0}),r.log("Decorator Mounted"),!0}unmount(e,r){return e.removeEventListener("orientationchange",this.handleResizer),e.removeEventListener("resize",this.handleResizer),r.unregisterAll(we.moduleName),this.resizeObserver.disconnect(),this.styleObserver.disconnect(),this.cleanup(),r.log("Decorator Unmounted"),!0}};$r.moduleName="decorator";let Dr=$r;const Br=new Set(Object.values(C));function Ur(t,e){return t===C.TextColor?typeof window<"u"&&"Highlight"in window:Br.has(t)?!0:!!e?.[t]}function pt(t,e){const{style:r}=t;if(r.type===C.Template){const n=r;return{...t,style:{...n,element:ir(n,t)}}}if(r.type&&e?.[r.type]){const n=e[r.type];return{...t,style:{type:C.Template,layout:n.layout,width:n.width,stylesheet:n.stylesheet,element:ir(n,t)}}}return t}function ir(t,e){return typeof t.element=="function"?t.element(e):t.element}function Bo(t,e){if(t.type!==e.type)return!1;if(t.type===C.Template){const i=t,s=e;return i.layout===s.layout&&i.width===s.width&&i.stylesheet===s.stylesheet}const r=t,n=e;return r.tint===n.tint&&r.layout===n.layout&&r.width===n.width&&(r.enforceContrast??!0)===(n.enforceContrast??!0)&&(r.expand??0)===(n.expand??0)}function jr(t,e){return t.locator.href===e.locator.href&&JSON.stringify(t.locator.locations?.serialize?.()??t.locator.locations)===JSON.stringify(e.locator.locations?.serialize?.()??e.locator.locations)&&JSON.stringify(t.locator.text??null)===JSON.stringify(e.locator.text??null)&&Bo(t.style,e.style)&&JSON.stringify(t.extras??null)===JSON.stringify(e.extras??null)}let zr=class{constructor(){this.queue=[],this.channel=typeof MessageChannel<"u"?new MessageChannel:void 0,this.channel&&(this.channel.port1.onmessage=()=>this.flush())}push(e){const r=this.queue.length===0;this.queue.push(e),r&&(this.channel?this.channel.port2.postMessage(null):setTimeout(()=>this.flush(),0))}flush(){const e=this.queue;this.queue=[],e.forEach(r=>r())}clear(){this.queue=[]}};class Hr{constructor(){this.frame=new Fr(this),this.host=new _r(this)}}let Fr=class{constructor(e){this.channel=e,this.registrar=new Map,this.outbox=new zr,this.ready=!0}register(e,r,n){(Array.isArray(e)?e:[e]).forEach(i=>{const s=this.registrar.get(i)??[];if(s.find(a=>a.module===r))throw new Error(`Duplicate callback for "${i}" in module "${r}"`);s.push({module:r,cb:n}),this.registrar.set(i,s)})}unregister(e,r){(Array.isArray(e)?e:[e]).forEach(n=>{const i=this.registrar.get(n);i&&this.registrar.set(n,i.filter(s=>s.module!==r))})}unregisterAll(e){this.registrar.forEach((r,n)=>{this.registrar.set(n,r.filter(i=>i.module!==e))})}_dispatch(e,r,n){const i=this.registrar.get(e);if(!i?.length){n(!1);return}i.forEach(s=>s.cb(r,n))}send(e,r){this.outbox.push(()=>this.channel.host._receive(e,r))}log(...e){this.outbox.push(()=>this.channel.host._receive("log",e))}destroy(){this.registrar.clear(),this.outbox.clear()}};class _r{constructor(e){this.channel=e,this.listeners=new Map,this.outbox=new zr,this.ready=!0}send(e,r,n){this.outbox.push(()=>this.channel.frame._dispatch(e,r,n??(()=>{})))}on(e,r){const n=this.listeners.get(e)??[];n.push(r),this.listeners.set(e,n)}off(e,r){const n=this.listeners.get(e);n&&this.listeners.set(e,n.filter(i=>i!==r))}_receive(e,r){this.listeners.get(e)?.forEach(n=>n(r))}}class Mr{constructor(e,r={}){this.host=e,this._decorations=new Map,this._activationState=new Map,this._hoverState=new Map,this._observers=new Map,this._hoveredDecorations=new Map,this._config=r,e.on("decoration_activated",n=>{const i=n,s=this._decorations.get(i.group)?.find(a=>a.id===i.decorationId);s&&this._observers.get(i.group)?.forEach(a=>a.onDecorationActivated?.({group:i.group,decoration:s,rect:i.rect,point:i.point}))}),e.on("decoration_pointer_enter",n=>{const i=n,s=this._decorations.get(i.group)?.find(a=>a.id===i.decorationId);s&&(this._hoveredDecorations.set(i.group,s),this._observers.get(i.group)?.forEach(a=>a.onDecorationPointerEnter?.({group:i.group,decoration:s,rect:i.rect,point:i.point})))}),e.on("decoration_pointer_leave",n=>{const i=n,s=this._decorations.get(i.group)?.find(a=>a.id===i.decorationId)??this._hoveredDecorations.get(i.group);this._hoveredDecorations.delete(i.group),s&&this._observers.get(i.group)?.forEach(a=>a.onDecorationPointerLeave?.({group:i.group,decoration:s,rect:i.rect,point:i.point}))})}supportsDecorationStyle(e){return Ur(e,this._config.decorationTemplates)}applyDecorations(e,r){const n=this._decorations.get(r)??[],i=new Map(n.map(u=>[u.id,u])),s=new Map(e.map(u=>[u.id,u]));for(const[u,l]of i){const d=s.get(u);d?jr(l,d)||this.host.send("decorate",{group:r,action:"update",decoration:pt(d,this._config.decorationTemplates)}):this.host.send("decorate",{group:r,action:"remove",decoration:{id:u}})}for(const[u,l]of s)i.has(u)||this.host.send("decorate",{group:r,action:"add",decoration:pt(l,this._config.decorationTemplates)});this._decorations.set(r,e);const a=this._activationState.get(r);a!==void 0&&this.host.send("decoration_activatable",{group:r,activatable:a});const o=this._hoverState.get(r);o!==void 0&&this.host.send("decoration_hoverable",{group:r,hoverable:o})}registerDecorationObserver(e,r){this._observers.has(e)||this._observers.set(e,new Set),this._observers.get(e).add(r),r.onDecorationActivated&&(this._activationState.set(e,!0),this.host.send("decoration_activatable",{group:e,activatable:!0})),(r.onDecorationPointerEnter||r.onDecorationPointerLeave)&&(this._hoverState.set(e,!0),this.host.send("decoration_hoverable",{group:e,hoverable:!0}))}unregisterDecorationObserver(e){this._observers.forEach((r,n)=>{if(!r.has(e))return;r.delete(e);const i=[...r].some(a=>a.onDecorationActivated);this._activationState.has(n)&&!i&&(this._activationState.delete(n),this.host.send("decoration_activatable",{group:n,activatable:!1}));const s=[...r].some(a=>a.onDecorationPointerEnter||a.onDecorationPointerLeave);this._hoverState.has(n)&&!s&&(this._hoverState.delete(n),this.host.send("decoration_hoverable",{group:n,hoverable:!1}))})}destroy(){this._decorations.clear(),this._activationState.clear(),this._hoverState.clear(),this._observers.clear(),this._hoveredDecorations.clear()}}function Uo(t){return t&&Array.isArray(t)?t:void 0}function jo(t){return t&&typeof t=="string"?[t]:Uo(t)}function et(t){return isNaN(t)?void 0:t}class H{constructor(e){this.fragments=e.fragments?e.fragments:new Array,this.progression=e.progression,this.totalProgression=e.totalProgression,this.position=e.position,this.otherLocations=e.otherLocations}static deserialize(e){if(!e)return;const r=et(e.progression),n=et(e.totalProgression),i=et(e.position),s=new Map,a=new Set(["fragment","fragments","progression","totalProgression","position","otherLocations"]);return Object.entries(e).forEach(([o,u])=>{a.has(o)||s.set(o,u)}),e.otherLocations instanceof Map&&e.otherLocations.forEach((o,u)=>s.set(u,o)),new H({fragments:jo(e.fragments||e.fragment),progression:r!==void 0&&r>=0&&r<=1?r:void 0,totalProgression:n!==void 0&&n>=0&&n<=1?n:void 0,position:i!==void 0&&i>0?i:void 0,otherLocations:s.size===0?void 0:s})}serialize(){const e={};return this.fragments&&(e.fragments=this.fragments),this.progression!==void 0&&(e.progression=this.progression),this.totalProgression!==void 0&&(e.totalProgression=this.totalProgression),this.position!==void 0&&(e.position=this.position),this.otherLocations&&this.otherLocations.forEach((r,n)=>e[n]=r),e}}class ke{constructor(e){this.after=e.after,this.before=e.before,this.highlight=e.highlight}static deserialize(e){if(e)return new ke({after:e.after,before:e.before,highlight:e.highlight})}serialize(){const e={};return this.after!==void 0&&(e.after=this.after),this.before!==void 0&&(e.before=this.before),this.highlight!==void 0&&(e.highlight=this.highlight),e}}class Oe{constructor(e){const r=e.href.indexOf("#"),n=r>=0?e.href.slice(r+1):void 0;this.href=r>=0?e.href.slice(0,r):e.href,this.type=e.type,this.title=e.title;const i=e.locations?.fragments,s=n&&(!i||i.length===0);this.locations=e.locations?s?new H({...e.locations,fragments:[n]}):e.locations:n?new H({fragments:[n]}):new H({}),this.text=e.text}static deserialize(e){if(e&&e.href&&e.type)return new Oe({href:e.href,type:e.type,title:e.title,locations:H.deserialize(e.locations),text:ke.deserialize(e.text)})}serialize(){const e={href:this.href,type:this.type};return this.title!==void 0&&(e.title=this.title),this.locations&&(e.locations=this.locations.serialize()),this.text&&(e.text=this.text.serialize()),e}copyWithLocations(e){return new Oe({href:this.href,type:this.type,title:this.title,text:this.text,locations:new H({...this.locations,...e})})}}function Vr(t,e=window){const{highlight:r,before:n,after:i,selector:s,fragment:a}=t,u=r!==void 0||n!==void 0||i!==void 0?new ke({highlight:r,before:n,after:i}):void 0,l=s?new Map([["cssSelector",s]]):void 0,h=l!==void 0||a!==void 0?new H({fragments:a?[a]:void 0,otherLocations:l}):void 0;return new Oe({href:e.location.href,type:"text/html",text:u,locations:h})}class Wr extends Mr{constructor(e,r,n,i={}){super(e.host,i),this.channel=e,this.wnd=r,this.decorator=n}decorate(e,r){this.applyDecorations(e.map(({id:n,style:i,...s})=>({id:n,style:i,locator:Vr(s,this.wnd)})),r)}destroy(){super.destroy(),this.decorator.unmount(this.wnd,this.channel.frame),this.channel.frame.destroy()}}function zo(t=window,e={}){const r=new Hr,n=new Dr;return n.mount(t,r.frame),new Wr(r,t,n,e)}exports.BUILTIN_DECORATION_TYPES=Br;exports.DecorationController=Mr;exports.DecorationLayout=Pr;exports.DecorationStyleType=C;exports.DecorationWidth=Ir;exports.Decorator=Dr;exports.DirectCommsChannel=Hr;exports.DirectCommsFrame=Fr;exports.DirectCommsHost=_r;exports.Locator=Oe;exports.LocatorLocations=H;exports.LocatorText=ke;exports.ReadiumSpeechDecorationController=Wr;exports.WebSpeechEngine=$e;exports.WebSpeechEngineProvider=eo;exports.WebSpeechReadAloudNavigator=to;exports.WebSpeechVoiceManager=k;exports.chineseVariantMap=ie;exports.createLocator=Vr;exports.decorationsEqual=jr;exports.resolveDecorationForWire=pt;exports.setupDecorations=zo;exports.supportsDecorationStyle=Ur;
|