1import{a as b,b as I,c as P,d as ae,e as Me}from"./chunk-ICXT54AR.js";import{C as _e,b as we,o as Ae,p as Ie,u as Pe}from"./chunk-KVX3QGMM.js";import{a as Ue}from"./chunk-3SKXFEDV.js";import{B as ye,C as Se,Ca as z,D as re,F as Re,G as Ce,K as V,Kc as h,Lc as O,N as ie,O as Te,Q as De,S as K,V as p,Y as X,aa as s,c as me,d as E,f as ve,g as ee,j as R,ja as A,ka as Le,l as w,la as g,o as $,ra as u,s as te,t as ne,u as be,ub as Ee,w as k,x as C,ya as T}from"./chunk-D67YGJF6.js";import{a as d,b as f,e as ge,f as he}from"./chunk-EHITY2XH.js";function y(r){r||(r=s(g));let n=new me(e=>{if(r.destroyed){e.next();return}return r.onDestroy(e.next.bind(e))});return e=>e.pipe(Te(n))}function ke(r,n){let e=n?.injector??s(A),t=new ve(1),i=T(()=>{let a;try{a=r()}catch(o){O(()=>t.error(o));return}O(()=>t.next(a))},{injector:e,manualCleanup:!0});return e.get(g).onDestroy(()=>{i.destroy(),t.complete()}),t.asObservable()}function It(r,n){let t=!n?.manualCleanup?n?.injector?.get(g)??s(g):null,i=Ze(n?.equal),a;n?.requireSync?a=u({kind:0},{equal:i}):a=u({kind:1,value:n?.initialValue},{equal:i});let o,l=r.subscribe({next:c=>a.set({kind:1,value:c}),error:c=>{a.set({kind:2,error:c}),o?.()},complete:()=>{o?.()}});if(n?.requireSync&&a().kind===0)throw new K(601,!1);return o=t?.onDestroy(l.unsubscribe.bind(l)),h(()=>{let c=a();switch(c.kind){case 1:return c.value;case 2:throw c.error;case 0:throw new K(601,!1)}},{equal:n?.equal})}function Ze(r=Object.is){return(n,e)=>n.kind===1&&e.kind===1&&r(n.value,e.value)}function Oe(r,n){let e={};for(let t of Object.keys(r))t!==n&&(e[t]=r[t]);return e}var oe=class{state=u({});hasAny=h(()=>Object.keys(this.state()).length>0);isLoading(n){return this.state()[n]!==void 0}get(n){return this.state()[n]}set(n,e){this.state.update(t=>f(d({},t),{[n]:e}))}clear(n){this.state.update(e=>Oe(e,n))}clearIfOwner(n,e){this.state.update(t=>t[n]===e?Oe(t,n):t)}},W=class{},Ye=(()=>{class r{handle(e){return e.key}static \u0275fac=function(t){return new(t||r)};static \u0275prov=p({token:r,factory:r.\u0275fac})}return r})(),F=class{},Qe=(()=>{class r extends F{compile(e,t){return e}compileTranslations(e,t){return e}static \u0275fac=(()=>{let e;return function(i){return(e||(e=z(r)))(i||r)}})();static \u0275prov=p({token:r,factory:r.\u0275fac})}return r})(),B=class{},et=(()=>{class r extends B{getTranslation(e){return R({})}static \u0275fac=(()=>{let e;return function(i){return(e||(e=z(r)))(i||r)}})();static \u0275prov=p({token:r,factory:r.\u0275fac})}return r})();function se(r,n){if(r===n)return!0;if(r===null||n===null)return!1;if(r!==r&&n!==n)return!0;let e=typeof r,t=typeof n,i;if(e==t&&e=="object")if(Array.isArray(r)){if(!Array.isArray(n))return!1;if((i=r.length)==n.length){for(let a=0;a<i;a++)if(!se(r[a],n[a]))return!1;return!0}}else{if(Array.isArray(n))return!1;if(v(r)&&v(n)){let a=Object.create(null);for(let o in r){if(!se(r[o],n[o]))return!1;a[o]=!0}for(let o in n)if(!(o in a)&&typeof n[o]<"u")return!1;return!0}}return!1}function m(r){return typeof r<"u"&&r!==null}function Ne(r){return r!==void 0}function v(r){return x(r)&&!D(r)&&r!==null}function x(r){return typeof r=="object"&&r!==null}function D(r){return Array.isArray(r)}function J(r){return typeof r=="string"}function tt(r){return typeof r=="function"}function q(r){if(D(r))return r.map(n=>q(n));if(v(r)){let n={};return Object.keys(r).forEach(e=>{n[e]=q(r[e])}),n}else return r}function le(r,n){if(!x(r))return q(n);let e=q(r);return x(e)&&x(n)&&Object.keys(n).forEach(t=>{v(n[t])?t in r?e[t]=le(r[t],n[t]):Object.assign(e,{[t]:n[t]}):Object.assign(e,{[t]:n[t]})}),e}function Fe(r,n){let e=n.split(".");n="";do{n+=e.shift();let t=!e.length;if(m(r)){if(v(r)&&Ne(r[n])&&(v(r[n])||D(r[n])||t)){r=r[n],n="";continue}if(D(r)){if(n==="length"&&t){r=r.length,n="";continue}if(/^\d+$/.test(n)){let i=parseInt(n,10);if(Ne(r[i])&&(v(r[i])||D(r[i])||t)){r=r[i],n="";continue}}}}if(t){r=void 0;continue}n+="."}while(e.length);return r}function nt(r,n,e){return le(r,rt(n,e))}function rt(r,n){return r.split(".").reduceRight((e,t)=>({[t]:e}),n)}var j=class{},it=(()=>{class r extends j{templateMatcher=/{{\s?([^{}\s]*)\s?}}/g;interpolate(e,t){if(J(e))return this.interpolateString(e,t);if(tt(e))return this.interpolateFunction(e,t)}interpolateFunction(e,t){return e(t)}interpolateString(e,t){return t?e.replace(this.templateMatcher,(i,a)=>{let o=this.getInterpolationReplacement(t,a);return o!==void 0?o:i}):e}getInterpolationReplacement(e,t){return this.formatValue(Fe(e,t))}formatValue(e){if(J(e))return e;if(typeof e=="number"||typeof e=="boolean")return e.toString();if(e===null)return"null";if(D(e))return e.join(", ");
1if(x(e))return typeof e.toString=="function"&&e.toString!==Object.prototype.toString?e.toString():JSON.stringify(e)}static \u0275fac=(()=>{let e;return function(i){return(e||(e=z(r)))(i||r)}})();static \u0275prov=p({token:r,factory:r.\u0275fac})}return r})(),Be=(()=>{class r{_translations=u({});translations=this._translations.asReadonly();_languages=u([]);languages=this._languages.asReadonly();_lastTranslationChange=u(null);lastTranslationChange=this._lastTranslationChange.asReadonly();_translationChange$=new E;translationChange$=this._translationChange$.asObservable();constructor(){s(g).onDestroy(()=>{this._translationChange$.complete()})}getTranslations(e){return this.translations()[e]}setTranslations(e,t,i){this._translations.update(o=>f(d({},o),{[e]:i&&this.hasTranslationFor(e)?le(o[e],t):t})),this.addLanguages([e]);let a={lang:e,translations:this.getTranslations(e)};this._lastTranslationChange.set(a),this._translationChange$.next(a)}getLanguages(){return this.languages()}addLanguages(e){this._languages.update(t=>Array.from(new Set([...t,...e])))}hasTranslationFor(e){return typeof this.translations()[e]<"u"}deleteTranslations(e){this._translations.update(t=>{let o=t,{[e]:i}=o;return he(o,[ge(e)])})}getTranslationValue(e,t){return Fe(this.getTranslations(e),t)}static \u0275fac=function(t){return new(t||r)};static \u0275prov=p({token:r,factory:r.\u0275fac})}return r})(),je=new X("TRANSLATE_CONFIG"),N=r=>w(r)?r:R(r),H=(()=>{class r{loadingTranslations=new oe;lastUseLanguage=null;currentLoader=s(B);compiler=s(F);parser=s(j);missingTranslationHandler=s(W);store=s(Be);destroyRef=s(g);parent;get isRoot(){return this.parent===null}_onLangChange=new E;_onFallbackLangChange=new E;_currentLang=u(null);_fallbackLang=u(null);_onTranslationRefresh=null;_isLoading=h(()=>this.loadingTranslations.hasAny()||(this.parent?.isLoading()??!1));getRoot(){let e=this;for(;e.parent;)e=e.parent;return e}getParent(){return this.parent}getActiveRequestedLang(){return this.getRoot().lastUseLanguage}hasTranslationInChain(e){for(let t=this;t;t=t.parent)if(t.store.hasTranslationFor(e))return!0;return!1}chainTranslationChange$(){let e=[];for(let t=this;t;t=t.parent)e.push(t.store.translationChange$);return e.length===1?e[0]:k(...e)}get onTranslationChange(){return this.store.translationChange$}get onLangChange(){return this.isRoot?this._onLangChange.asObservable():this.parent?this.parent.onLangChange:ee}get onFallbackLangChange(){return this.isRoot?this._onFallbackLangChange.asObservable():this.parent?this.parent.onFallbackLangChange:ee}get onTranslationRefresh(){if(!this._onTranslationRefresh){let e=k(this.onTranslationChange.pipe(C(t=>t.lang===this.getCurrentLang()||t.lang===this.getFallbackLang())),this.onLangChange,this.onFallbackLangChange).pipe($(()=>{}));this.isRoot?this._onTranslationRefresh=e:this._onTranslationRefresh=this.parent?k(e,this.parent.onTranslationRefresh):e}return this._onTranslationRefresh}constructor(){let e=d({isRoot:!0,fallbackLang:null},s(je,{optional:!0}));this.parent=e.isRoot?null:s(r,{optional:!0,skipSelf:!0});let t=s(g);if(this.isRoot)e.lang&&this.use(e.lang),e.fallbackLang&&this.setFallbackLang(e.fallbackLang);else{let i=this.getCurrentLang();i&&this.loadOrExtendLanguage(i)?.pipe(y(t)).subscribe({error:o=>{console.warn(`@ngx-translate/core: child failed to load "${i}". Cause:`,o)}});let a=this.getFallbackLang();a&&a!==i&&this.loadOrExtendLanguage(a)?.pipe(y(t)).subscribe({error:o=>{console.warn(`@ngx-translate/core: child failed to load "${a}". Cause:`,o)}})}this.onLangChange.pipe(y(t)).subscribe(i=>{this.isRoot||this.loadOrExtendLanguage(i.lang)?.pipe(y(t)).subscribe({error:a=>{console.warn(`@ngx-translate/core: child failed to load "${i.lang}". Cause:`,a)}})}),this.onFallbackLangChange.pipe(y(t)).subscribe(i=>{this.isRoot||this.loadOrExtendLanguage(i.lang)?.pipe(y(t)).subscribe({error:a=>{console.warn(`@ngx-translate/core: child failed to load "${i.lang}". Cause:`,a)}})}),t.onDestroy(()=>{this._onLangChange.complete(),this._onFallbackLangChange.complete()})}setFallbackLang(e){if(!this.isRoot)return this.parent.setFallbackLang(e);this._fallbackLang()||this._fallbackLang.set(e);let t=this.loadOrExtendLanguage(e);return w(t)?(t.pipe(re(1)).subscribe({next:()=>{this._fallbackLang.set(e),this._onFallbackLangChange.next({lang:e,translations:this.store.getTranslations(e)})},error:i=>{console.warn(`@ngx-translate/core: failed to load fallback "${e}". Cause:`,i)}}),t):(this._fallbackLang.set(e),this._onFallbackLangChange.next({lang:e,translations:this.store.getTranslations(e)}),R(this.store.getTranslations(e)))}get isLoading(){return this._isLoading}use(e){if(!this.isRoot)return this.parent.use(e);let t=this._currentLang(),i=this.lastUseLanguage;this.lastUseLanguage=e,this._currentLang()||this._currentLang.set(e);let a=this.loadOrExtendLanguage(e);return w(a)?(a.pipe(re(1)).subscribe({next:()=>{this.changeLang(e)},error:o=>{this.lastUseLanguage===e&&(this._currentLang.set(t),this.lastUseLanguage=i),console.warn(`@ngx-translate/core: failed to load "${e}". currentLang was NOT changed; remains "${t??"null"}". Cause:`,o)}}),a):(this.changeLang(e),R(this.store.getTranslations(e)))}loadOrExtendLanguage(e){return this.store.hasTranslationFor(e)?R(this.store.getTranslations(e)):this.loadAndCompileTranslations(e)}getTranslations(e){return this.store.getTranslations(e)}changeLang(e){e===this.lastUseLanguage&&(this._currentLang.set(e),this._onLangChange.next({lang:e,translations:this.store.getTranslations(e)}))}getCurrentLang(){return this.isRoot?this._currentLang():this.parent?.getCurrentLang()??null}loadAndCompileTranslations(e){let t=this.loadingTranslations.get(e);if(t)return t;let i=this.currentLoader.getTranslation(e).pipe($(a=>this.compiler.compileTranslations(a,e)),De(a=>{this.store.setTranslations(e,a,!1),this.loadingTranslations.clearIfOwner(e,i)}),Ce(()=>this.loadingTranslations.clearIfOwner(e,i)),V({bufferSize:1,refCount:!0}));return this.loadingTranslations.set(e,i),i.pipe(y(this.destroyRef)).subscribe({error:()=>{}}),i}setTranslation(e,t,i=!1){let a=this.compiler.compileTranslations(t,e);this.store.setTranslations(e,a,i)}setCompiledTranslation(e,t,i=!1){this.store.setTranslations(e,t,i)}getLangs(){return this.store.getLanguages()}addLangs(e){this.store.addLanguages(e)}getParsedResultForKey(e,t,i){let a=this.getTextToInterpolate(e,i);if(m(a))return this.runInterpolation(a,t);let l=this.getMissingTranslationHandler().handle(d({key:e,translateService:this},t!==void 0&&{interpolateParams:t}));return l!==void 0?l:e}getMissingTranslationHandler(){return this.missingTranslationHandler}getFallbackLang(){return this.isRoot?this._fallbackLang():this.parent?.getFallbackLang()??null}getTextToInterpolate(e,t){if(t){let l=this.store.getTranslationValue(t,e);return l!==void 0?l:this.parent?.getTextToInterpolate(e,t)}let i=this.getCurrentLang(),a=this.getFallbackLang(),o;return i&&(o=this.store.getTranslationValue(i,e)),!m(o)&&a&&a!==i&&(o=this.store.getTranslationValue(a,e)),o!==void 0?o:this.parent?.getTextToInterpolate(e)}runInterpolation(e,t){if(m(e))return D(e)?this.runInterpolationOnArray(e,t):v(e)?this.runInterpolationOnDict(e,t):this.parser.interpolate(e,t)}runInterpolationOnArray(e,t){return e.map(i=>this.runInterpolation(i,t))}runInterpolationOnDict(e,t){let i={};for(let a in e){let o=this.runInterpolation(e[a],t);o!==void 0&&(i[a]=o)}return i}getParsedResult(e,t,i){return e instanceof Array?this.getParsedResultForArray(e,t,i):this.getParsedResultForKey(e,t,i)}getParsedResultForArray(e,t,i){let a={},o=!1;
1for(let c of e)a[c]=this.getParsedResultForKey(c,t,i),o=o||w(a[c]);if(!o)return a;let l=e.map(c=>N(a[c]));return be(l).pipe($(c=>{let L={};return c.forEach((M,U)=>{L[e[U]]=M}),L}))}get(e,t,i){if(!m(e)||!e.length)return R("");let a=i??this.getActiveRequestedLang()??this.getCurrentLang(),o=a?this.loadingTranslations.get(a):void 0;return o?o.pipe(ye(()=>N(this.getParsedResult(e,t,i)))):N(this.getParsedResult(e,t,i))}getStreamOnTranslationChange(e,t,i){if(!m(e)||!e.length)throw new Error('Parameter "key" is required and cannot be empty');return te(ne(()=>this.get(e,t,i)),this.onTranslationChange.pipe(ie(()=>{let a=this.getParsedResult(e,t,i);return N(a)})))}stream(e,t,i){if(!m(e)||!e.length)throw new Error('Parameter "key" required');let a=i?k(this.onLangChange,this.chainTranslationChange$().pipe(C(o=>o.lang===i))):this.onLangChange;return te(ne(()=>this.get(e,t,i)),a.pipe(ie(()=>{let o=this.getParsedResult(e,t,i);return N(o)})))}instant(e,t,i){if(!m(e)||e.length===0)return"";i&&!this.hasTranslationInChain(i)&&this.warnUnloadedInstantLang(i);let a=this.getParsedResult(e,t,i);return w(a)?this.keyToObject(e):a}warnedUnloadedInstantLangs=new Set;warnUnloadedInstantLang(e){let t=this.getRoot();if(t!==this){t.warnUnloadedInstantLang(e);return}this.warnedUnloadedInstantLangs.has(e)||O(()=>{this.warnedUnloadedInstantLangs.add(e),console.warn(`@ngx-translate/core: instant() called with lang="${e}" but no translations are loaded for that language. Returning the key as fallback. Load with use("${e}") or setTranslation("${e}", ...) first.`)})}translate(e,t,i){return h(()=>{let a=typeof e=="function"?e():e,o=typeof t=="function"?t():t,l=typeof i=="function"?i():i;return this.instant(a,o,l)})}keyToObject(e){return Array.isArray(e)?e.reduce((t,i)=>(t[i]=i,t),{}):e}set(e,t,i=this.getCurrentLang()){this.store.setTranslations(i,nt(this.store.getTranslations(i),e,J(t)?this.compiler.compile(t,i):this.compiler.compileTranslations(t,i)),!1)}reloadLang(e){return this.resetLang(e),this.loadAndCompileTranslations(e)}
1resetLang(e){this.loadingTranslations.clear(e),this.store.deleteTranslations(e)}static getBrowserLang(){if(typeof window>"u"||!window.navigator)return;let e=this.getBrowserCultureLang();return e?e.split(/[-_]/)[0]:void 0}static getBrowserCultureLang(){if(!(typeof window>"u"||typeof window.navigator>"u"))return window.navigator.languages?window.navigator.languages[0]:window.navigator.language||window.navigator.browserLanguage||window.navigator.userLanguage}getBrowserLang(){return r.getBrowserLang()}getBrowserCultureLang(){return r.getBrowserCultureLang()}get currentLang(){return this.isRoot?this._currentLang.asReadonly():this.parent.currentLang}get fallbackLang(){return this.isRoot?this._fallbackLang.asReadonly():this.parent.fallbackLang}static \u0275fac=function(t){return new(t||r)};static \u0275prov=p({token:r,factory:r.\u0275fac})}return r})();var Xt=(()=>{class r{translateService=s(H);cachedSignal=null;lastKey=null;lastParams;transform(e,...t){if(!e||!e.length)return e;let i=this.parseArgs(t);return(e!==this.lastKey||!se(i,this.lastParams))&&(this.cachedSignal=this.translateService.translate(e,i),this.lastKey=e,this.lastParams=i),this.cachedSignal()}parseArgs(e){if(!(!m(e[0])||!e.length)){if(J(e[0])&&e[0].length){let t=e[0].replace(/(')?([a-zA-Z0-9_]+)(')?(\s)?:/g,'"$2":').replace(/:(\s)?(')(.*?)(')/g,':"$3"');try{return JSON.parse(t)}catch(i){throw new SyntaxError(`Wrong parameter in TranslatePipe. Expected a valid Object, received: ${e[0]}`)}}if(v(e[0]))return e[0]}}static \u0275fac=function(t){return new(t||r)};static \u0275pipe=Ee({name:"translate",type:r,pure:!1});static \u0275prov=p({token:r,factory:r.\u0275fac})}return r})();function He(r){return/^class\s/.test(Function.prototype.toString.call(r))}function xe(r,n){return He(n)?{provide:r,useClass:n}:{provide:r,useFactory:n}}function zt(r={}){return at(f(d({},r),{isRoot:!0}))}function G(r,n,e,t,i){if(n===void 0)return xe(r,e);if(typeof n=="function"){if(He(n)){let a=n.name||"YourClass";console.warn(`@ngx-translate/core: "${t}" received a bare class (${a}); auto-wrapping with ${i}(). For clarity, prefer ${t}: ${i}(${a}).`)}return xe(r,n)}return n}function at(r){let n=[],e=G(B,r.loader,et,"loader","provideTranslateLoader"),t=G(F,r.compiler,Qe,"compiler","provideTranslateCompiler"),i=G(j,r.parser,it,"parser","provideTranslateParser"),a=G(W,r.missingTranslationHandler,Ye,"missingTranslationHandler","provideMissingTranslationHandler");n.push(e,t,i,a),n.push(Be);let o={fallbackLang:r.fallbackLang??null,lang:r.lang,isRoot:r.isRoot};return n.push({provide:je,useValue:o}),n.push({provide:H,useClass:H}),n}var $e=[{currency:"\u20AC",group:"Bitcoin",key:"price",name:"BTC / EUR",pair:"BTCEUR",scale:"BTC / EUR",ticker:"BTC/EUR"},{currency:"$",group:"Bitcoin",key:"price_usd",name:"BTC / USD",pair:"BTCUSD",scale:"BTC / USD",ticker:"BTC/USD"},{currency:"\xA3",group:"Bitcoin",key:"price_gbp",name:"BTC / GBP",pair:"BTCGBP",scale:"BTC / GBP",ticker:"BTC/GBP"},{currency:"\u20AC",group:"Ethereum",key:"eth_eur",name:"ETH / EUR",pair:"ETHEUR",scale:"ETH / EUR",ticker:"ETH/EUR"},{currency:"$",group:"Ethereum",key:"eth_usd",name:"ETH / USD",pair:"ETHUSD",scale:"ETH / USD",ticker:"ETH/USD"},{currency:"B",group:"Ethereum",key:"btc_eth",name:"ETH / BTC",pair:"ETHBTC",scale:"ETH / BTC",ticker:"ETH/BTC"}
1,{currency:"\u20AC",group:"Solana",key:"sol_eur",name:"SOL / EUR",pair:"SOLEUR",scale:"SOL / EUR",ticker:"SOL/EUR"},{currency:"$",group:"Solana",key:"sol_usd",name:"SOL / USD",pair:"SOLUSD",scale:"SOL / USD",ticker:"SOL/USD"},{currency:"\u20AC",group:"Avalanche",key:"avax_eur",name:"AVAX / EUR",pair:"AVAXEUR",scale:"AVAX / EUR",ticker:"AVAX/EUR"},{currency:"$",group:"Avalanche",key:"avax_usd",name:"AVAX / USD",pair:"AVAXUSD",scale:"AVAX / USD",ticker:"AVAX/USD"},{currency:"\u20AC",group:"Chainlink",key:"link_eur",name:"LINK / EUR",pair:"LINKEUR",scale:"LINK / EUR",ticker:"LINK/EUR"},{currency:"$",group:"Chainlink",key:"link_usd",name:"LINK / USD",pair:"LINKUSD",scale:"LINK / USD",ticker:"LINK/USD"},{currency:"\u20AC",group:"Cardano",key:"ada_eur",name:"ADA / EUR",pair:"ADAEUR",scale:"ADA / EUR",ticker:"ADA/EUR"},{currency:"$",group:"Cardano",key:"ada_usd",name:"ADA / USD",pair:"ADAUSD",scale:"ADA / USD",ticker:"ADA/USD"},{currency:"\u20AC",group:"Ripple",key:"xrp_eur",name:"XRP / EUR",pair:"XRPEUR",scale:"XRP / EUR",ticker:"XRP/EUR"},{currency:"$",group:"Ripple",key:"xrp_usd",name:"XRP / USD",pair:"XRPUSD",scale:"XRP / USD",ticker:"XRP/USD"},{currency:"\u30B7",group:"Ripple",key:"xrp_btc",name:"XRP / BTC",pair:"XRPBTC",scale:"XRP / Satoshi",ticker:"XRP/BTC"},{currency:"\u20AC",group:"Bitcoin Cash",key:"bch_eur",name:"BCH / EUR",pair:"BCHEUR",scale:"BCH / EUR",ticker:"BCH/EUR"},{currency:"$",group:"Bitcoin Cash",key:"bch_usd",name:"BCH / USD",pair:"BCHUSD",scale:"BCH / USD",ticker:"BCH/USD"},{currency:"\u20AC",group:"Litecoin",key:"ltc_eur",name:"LTC / EUR",pair:"LTCEUR",scale:"LTC / EUR",ticker:"LTC/EUR"},{currency:"$",group:"Litecoin",key:"ltc_usd",name:"LTC / USD",pair:"LTCUSD",scale:"LTC / USD",ticker:"LTC/USD"},{currency:"$",group:"Stellar",key:"xlm_usd",name:"XLM / USD",pair:"XLMUSD",scale:"XLM / USD",ticker:"XLM/USD"},{currency:"\u30B7",group:"Stellar",key:"xlm_btc",name:"XLM / BTC",pair:"XLMBTC",scale:"XLM / Satoshi",ticker:"XLM/BTC"},{currency:"$",group:"Dash",key:"dash_usd",name:"DASH / USD",pair:"DASHUSD",scale:"DASH / USD",ticker:"DASH/USD"},{currency:"B",group:"Dash",key:"dash_btc",name:"DASH / BTC",pair:"DASHBTC",scale:"DASH / BTC",ticker:"DASH/BTC"}];function st(){return I("pair")}var ue="last_pairs.v2",de="last_pairs.v2.timestamp",ct=3600*1e3*12,lt=new Set($e.map(r=>r.pair)),Ve=["Bitcoin","Ethereum","Solana","Avalanche","Chainlink","Cardano","Ripple","Bitcoin Cash","Litecoin","Stellar","Dash"];function Ke(r){let n=Ve.indexOf(r);return n>=0?n:Ve.length}var ut=r=>{P(de,new Date().toISOString()),P(ue,JSON.stringify(r))},dt=()=>{let r=I(de);if(r&&new Date().getTime()-new Date(r).getTime()<=ct){let n=I(ue);if(!n)return null;let e=JSON.parse(n);if(e&&e.length)return e}return ae(ue),ae(de),null},Z=class r{injector=s(A);pairs=u([]);selectedPairKey=u(st());digits={AVAXEUR:3,AVAXUSD:3,LINKEUR:3,LINKUSD:3,XRPEUR:5,XRPUSD:5,XRPGBP:5,XLMUSD:4,d:2,B:6,"\u20AC":2,$:2,\u30B7:0};noShort={B:!0,$:!0,"\u20AC":!0,"\xA3":!0};exchanges=u([]);activePair=h(()=>{let n=this.pairs();if(!n.length)return null;let e=this.selectedPairKey();return(e?n.find(i=>i.pair===e):null)??n[0]});groups=h(()=>{let n={};for(let e of this.pairs()){let t=e.group;n[t]=n[t]||[],n[t].push(e)}return Object.keys(n).map(e=>({name:e,pairs:n[e]}))});ensureActivePairEffect=T(()=>{let n=this.pairs();if(!n.length)return;let e=this.selectedPairKey();(!e||!n.some(t=>t.pair===e))&&this.selectedPairKey.set(n[0].pair)});activePair$=ke(this.activePair,{injector:this.injector}).pipe(C(n=>!!n),Re((n,e)=>n.pair===e.pair),V({bufferSize:1,refCount:!0}));setActivePair(n){let e=this.activePair(),t=n&&n.pair&&this.pairs().find(i=>i.pair===n.pair);if(!(t&&e&&e.pair===t.pair)){if(t)P("pair",n.pair),this.selectedPairKey.set(t.pair);else if(!e&&this.pairs().length){let i=this.pairs()[0];i&&this.selectedPairKey.set(i.pair)}}}setPairs(n){let e=this.normalizePairs(n??[]);this.pairs.set(e),ut(e)}normalizePairs(n){return n.filter(e=>lt.has(e.pair)).map(e=>{let t=e.scale?e.scale.split(" / "):[],i=t.length?t[0]:e.name;return f(d({},e),{coin:i})}).sort((e,t)=>{let i=Ke(e.group)-Ke(t.group);return i!==0?i:e.name.localeCompare(t.name)})}constructor(){let n=dt();n&&n.length&&this.pairs.set(this.normalizePairs(n))}static \u0275fac=function(e){return new(e||r)};static \u0275prov=p({token:r,factory:r.\u0275fac,providedIn:"root"})};var _={production:!0,appConfig:"bitcoinMonitor",firebase:null,revenueCat:{iosApiKey:"appl_NvxHNwkClKPfdWXeInECaxAVprf",androidApiKey:"goog_PIbxVDufscfZbVfXgPWxmytrmGR",entitlementId:"bitcoinKursMonitor.subscription.adfree"}};var pt=()=>b?!!document.hidden:!1,ft=()=>b?document.visibilityState??"visible":"visible",gt=r=>{if(!b){r();return}if(!document.hidden){r();return}let n=()=>{document.hidden||(document.removeEventListener("visibilitychange",n),r())};document.addEventListener("visibilitychange",n)},cn={hidden:pt,state:ft,onVisible:gt}
1,ht={initBackground:()=>!0,languages:[{id:"ar",name:"\u{1F1F8}\u{1F1E6} AR - \u0627\u0644\u0639\u0631\u0628\u064A\u0629"},{id:"cs",name:"\u{1F1E8}\u{1F1FF} CS - \u010Ce\u0161tina"},{id:"de",name:"\u{1F1E9}\u{1F1EA} DE - Deutsch"},{id:"en",name:"\u{1F1FA}\u{1F1F8} EN - English"},{id:"es",name:"\u{1F1F2}\u{1F1FD} ES - Espa\xF1ol"},{id:"fa",name:"\u{1F1EE}\u{1F1F7} FA - \u0641\u0627\u0631\u0633\u06CC"},{id:"fil",name:"\u{1F1F5}\u{1F1ED} FIL - Filipino"},{id:"fr",name:"\u{1F1EB}\u{1F1F7} FR - Fran\xE7ais"},{id:"id",name:"\u{1F1EE}\u{1F1E9} ID - Indonesia"},{id:"it",name:"\u{1F1EE}\u{1F1F9} IT - Italiano"},{id:"ja",name:"\u{1F1EF}\u{1F1F5} JA - \u65E5\u672C\u8A9E"},{id:"ko",name:"\u{1F1F0}\u{1F1F7} KO - \uD55C\uAD6D\uC5B4"},{id:"nl",name:"\u{1F1F3}\u{1F1F1} NL - Nederlands"},{id:"pl",name:"\u{1F1F5}\u{1F1F1} PL - Polski"},{id:"pt",name:"\u{1F1E7}\u{1F1F7} PT - Portugu\xEAs"},{id:"ro",name:"\u{1F1F7}\u{1F1F4} RO - Rom\xE2n\u0103"},{id:"ru",name:"\u{1F1F7}\u{1F1FA} RU - \u0420\u0443\u0441\u0441\u043A\u0438\u0439"},{id:"th",name:"\u{1F1F9}\u{1F1ED} TH - \u0E20\u0E32\u0E29\u0E32\u0E44\u0E17\u0E22"},{id:"tr",name:"\u{1F1F9}\u{1F1F7} TR - T\xFCrk\xE7e"},{id:"vi",name:"\u{1F1FB}\u{1F1F3} VI - Ti\u1EBFng Vi\u1EC7t"},{id:"zh",name:"\u{1F1F9}\u{1F1FC} ZH - \u7E41\u9AD4\u4E2D\u6587"}],colors:["#1f77b4","#ff7f0e","#2ca02c","#d62728","#9467bd","#8c564b","#e377c2","#b3b3b3","#bcbd22","#17becf","#00ffbc","#ffef00"],showWalletAddress:!1,crossCoinMaxDuration:"30",proId:null,customCss:"",admobiOS:{banner:{id:"ca-app-pub-3414374509820137/2314915414"},interstitial:{id:"ca-app-pub-3414374509820137/5417906699"}},admobAndroid:{banner:{id:"ca-app-pub-3414374509820137/7036102512"},interstitial:{id:"ca-app-pub-3414374509820137/7305703436"}},showAds:!1,subscriptions:{}},Y=f(d({},ht),{appName:"Bitcoin Monitor",homeRoute:"price",description:"APP_DESCRIPTION",proId:"8b67017d",version:"2.100.0",images:{ios:"apps-bitcoinMonitor-iOS-1.webp",android:"apps-bitcoinMonitor-Android-1.webp"},storeAppURL:{ios:"1332312760",android:"tech.pertiller.bitcoinKursMonitor"},logo:"Bitcoin-Monitor-Logo-192.png",pairsDb:"pairs",exchanges:"exchanges",features:{crossCoinCheck:!0,showAppLinksToCoinCheck:!0},cryptoCoinCheckUrl:"https://bitcoinmonitor.app/",bitcoinMonitorUrl:"https://bitcoinmonitor.app/get-app.html",onInit:()=>{},i18n:"i18n",showArbitrage:!0,crossCoinMaxDuration:"14",showAds:!0,admobiOS:{banner:{id:"ca-app-pub-3414374509820137/6553000400"},interstitial:{id:"ca-app-pub-3414374509820137/7270614886"}},admobAndroid:{banner:{id:"ca-app-pub-3414374509820137/9541555003"},interstitial:{id:"ca-app-pub-3414374509820137/3714513254"}},customCss:"bitcoin-monitor",customBackground:"bitcoin-monitor-background",subscriptions:{adFreeId:"bitcoinKursMonitor.subscription.adfree"},revenueCat:_.revenueCat?{iosApiKey:_.revenueCat.iosApiKey,androidApiKey:_.revenueCat.androidApiKey,entitlementId:_.revenueCat.entitlementId??"bitcoinKursMonitor.subscription.adfree"}:void 0}),Xe=f(d({},Y),{appName:"Crypto Coin Check",homeRoute:"ccc",description:"CROSS_COIN_CHECK_DESCRIPTION",proId:"3450762b",storeAppURL:{ios:"1367107864",android:"tech.pertiller.cryptocoincheck"},images:{ios:"apps-cryptoCoinCheck-iOS.webp",android:"apps-cryptoCoinCheck-Android.webp"},subscriptions:{},revenueCat:void 0,logo:"CryptoCoinCheck-Logo-192.png",showAds:!0,customBackground:"ccc-background",admobiOS:{banner:{id:"ca-app-pub-3414374509820137/5188781990"},interstitial:{id:"ca-app-pub-3414374509820137/2996898774"}},admobAndroid:{banner:{id:"ca-app-pub-3414374509820137/3943164841"},interstitial:{id:"ca-app-pub-3414374509820137/6377756496"}}}),ln=[Y,Xe],ze={bitcoinMonitor:Y,cryptoCoinCheck:Xe},S=ze[_.appConfig]??Y;function Ge(r){return r&&r.startsWith("/ccc")?ze.cryptoCoinCheck??S:S}var Q=class r{spinner$=new E;activeSignal=u(!1);isActive=this.activeSignal.asReadonly();start(){this.activeSignal.set(!0),this.spinner$.next(!1),this.handleDom(!1)}stop(n){n?(this.activeSignal.set(!1),this.handleDom(!0)):this.spinner$.next(!0)}handleDom(n){if(!b)return;Array.from(document.querySelectorAll(".spinner")).forEach(i=>{i.style.display=n?"none":"block"});let t=document.querySelector("#intro");n&&t&&(t.className=t.className.replace(" show",""))}constructor(){this.spinner$.pipe(Se(350)).subscribe(n=>{this.activeSignal.set(!n),this.handleDom(n)})}static \u0275fac=function(e){return new(e||r)};static \u0275prov=p({token:r,factory:r.\u0275fac,providedIn:"root"})};var pe=new X("Server.INITIAL_CONFIG");
1var We=class r{config=S;pairsService=s(Z);spinner=s(Q);router=s(_e);title=s(Ie);meta=s(Ae);document=s(Le);platformLocation=s(we);serverConfig=s(pe,{optional:!0});translate=s(H);enableSeo=!b||!Ue.isNativePlatform();activePair=null;lastKnownPath=null;constructor(){this.enableSeo&&(T(()=>{this.activePair=this.pairsService.activePair(),this.updateMeta()}),this.router.events.pipe(C(this.isNavigationEnd)).subscribe(n=>{let e=n;this.lastKnownPath=e.urlAfterRedirects||e.url,this.updateMeta()}),queueMicrotask(()=>{this.lastKnownPath||(this.lastKnownPath=this.router.url,this.updateMeta())}))}setLanguage(n){n&&n.id&&this.spinner.stop()}setResolvedPath(n){n&&(this.lastKnownPath=n,this.updateMeta())}updateMeta(){let n=this.resolveServerPath(),e=this.platformLocation.pathname||"",t=this.resolveDocumentPath(),i=this.resolveSnapshotPath(),a=this.normalizePath(this.lastKnownPath??n??t??e??i??this.router.url??"/");this.config=Ge(a);let o=this.config.appName??"Bitcoin Monitor",l=this.resolveBaseDescription(this.config.description),c=this.formatPairLabel(this.activePair),L=this.buildTitle(a,o,c),M=this.buildDescription(a,l,c),U=this.buildCanonicalUrl(a),fe=this.buildImageUrl();this.title.setTitle(L),this.meta.updateTag({name:"description",content:M}),this.meta.updateTag({property:"og:title",content:L}),this.meta.updateTag({property:"og:description",content:M}),this.meta.updateTag({property:"og:url",content:U}),this.meta.updateTag({property:"og:image",content:fe}),this.meta.updateTag({name:"twitter:card",content:"summary_large_image"}),this.meta.updateTag({name:"twitter:site",content:"@BitcoinMonitor1"}),this.meta.updateTag({name:"twitter:title",content:L}),this.meta.updateTag({name:"twitter:description",content:M}),this.meta.updateTag({name:"twitter:image",content:fe}),this.meta.updateTag({name:"robots",content:"index,follow"}),this.meta.updateTag({property:"og:locale",content:"en_US"}),this.setCanonicalLink(U),this.injectStructuredData(a,o,U)}normalizePath(n){let e=n.split("?")[0]?.split("#")[0]??"/";return e===""?"/":e}isNavigationEnd(n){return n instanceof Pe||n?.constructor?.name==="NavigationEnd"}buildTitle(n,e,t){return t&&n.match(/^\/(price|ccc)\//)?`${t} Live Price | ${e}`:n.startsWith("/apps")?`${e} Apps | iOS & Android`:n.startsWith("/contact")?`Contact | ${e}`:n.startsWith("/imprint")?`Imprint | ${e}`:n.startsWith("/ccc")?`Crypto Cross Compare | ${e}`:`${e} | Live Crypto Prices & Trade Signals`}buildDescription(n,e,t){return t&&n.match(/^\/(price|ccc)\//)?`Live ${t} price across Kraken, Binance, Coinbase and more. Real-time trade signals, arbitrage data and price history.`:n.startsWith("/apps")?`Download ${e.includes("Bitcoin")?"Bitcoin Monitor":"Crypto Coin Check"} for iOS and Android. Live cryptocurrency prices, trade signals, and arbitrage data.`:e.length<=155?e:"Live cryptocurrency prices across Kraken, Binance, Coinbase and more. Real-time trade signals and arbitrage data."}buildCanonicalUrl(n){let e=(this.config.cryptoCoinCheckUrl||"https://bitcoinmonitor.app/").replace(/\/+$/,"");return n==="/"?e:`${e}${n}`}buildImageUrl(){return`${(this.config.cryptoCoinCheckUrl||"https://bitcoinmonitor.app/").replace(/\/+$/,"")}/image.png`}formatPairLabel(n){if(!n)return null;let e=n.name?n.name.trim().replace(/\s+/g,""):"";return e||(n.pair??null)}resolveBaseDescription(n){let e="Crypto price monitoring and trade signals.";if(!n)return e;let t=this.translate.instant(n),i=t&&t!==n?t:n;return this.stripHtml(i)}stripHtml(n){return n.replace(/<[^>]*>/g," ").replace(/\s+/g," ").trim()}resolveServerPath(){let n=typeof globalThis<"u"?globalThis.__SSR_URL__:void 0,e=this.serverConfig?.url??n;if(!e)return null;try{return new URL(e,"http://localhost").pathname}catch(t){return null}}resolveSnapshotPath(){let n=this.router.routerState.snapshot.root,e=[],t=n;for(;t;)t.url?.length&&e.push(...t.url.map(i=>i.path).filter(Boolean)),t=t.firstChild??null;return e.length?`/${e.join("/")}`:this.router.routerState.snapshot.url||null}resolveDocumentPath(){let n=this.document,e=n?.location?.href||n?.URL;if(!e)return null;try{return new URL(e,"http://localhost").pathname}catch(t){return null}}setCanonicalLink(n){let e=this.document?.head;if(!e)return;let t=e.querySelector("link[rel='canonical']");t||(t=this.document.createElement("link"),t.setAttribute("rel","canonical"),e.appendChild(t)),t.setAttribute("href",n)}injectStructuredData(n,e,t){let i=(this.config.cryptoCoinCheckUrl||"https://bitcoinmonitor.app/").replace(/\/+$/,""),a=this.config.storeAppURL,o=[{"@context":"https://schema.org","@type":"WebSite",name:e,url:i,description:"Live cryptocurrency price monitoring with real-time trade signals and arbitrage data"},f(d({"@context":"https://schema.org","@type":"SoftwareApplication",name:e,applicationCategory:"FinanceApplication",operatingSystem:"iOS, Android",url:i},a?.ios||a?.android?{downloadUrl:[...a.ios?[`https://apps.apple.com/app/id${a.ios}`]:[],...a.android?[`https://play.google.com/store/apps/details?id=${a.android}`]:[]]}:{}),{offers:{"@type":"Offer",price:"0",priceCurrency:"USD"}})];if(this.setJsonLd("site-schema",o),this.activePair?.name&&n.match(/^\/(price|ccc)\/[A-Z]+$/)){let l={"@context":"https://schema.org","@type":"BreadcrumbList",itemListElement:[{"@type":"ListItem",position:1,name:e,item:i},{"@type":"ListItem",position:2,name:"Price",item:`${i}/price`},{"@type":"ListItem",position:3,name:this.activePair.name,item:t}]};this.setJsonLd("breadcrumb-schema",l)}else this.removeJsonLd("breadcrumb-schema")}setJsonLd(n,e){let t=this.document?.head;if(!t)return;let i=t.querySelector(`script[data-schema-id="${n}"]`);i||(i=this.document.createElement("script"),i.setAttribute("type","application/ld+json"),i.setAttribute("data-schema-id",n),t.appendChild(i)),i.textContent=JSON.stringify(e)}removeJsonLd(n){let e=this.document?.head;if(!e)return;let t=e.querySelector(`script[data-schema-id="${n}"]`);t&&e.removeChild(t)}static \u0275fac=function(e){return new(e||r)};static \u0275prov=p({token:r,factory:r.\u0275fac,providedIn:"root"})};var qe=`${S.appName}.preferredLang`,Je="en",vt=S.languages??[];function cr(r){let n=r??Me()??Je;return I(qe)||vt.map(e=>e.id).find(e=>e===n)||Je}function lr(r){P(qe,r)}export{ke as a,It as b,B as c,H as d,Xt as e,zt as f,$e as g,ut as h,Z as i,cn as j,ln as k,S as l,Ge as m,Q as n,We as o,Je as p,cr as q,lr as r};
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.