!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{},t=(new e.Error).stack;t&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[t]="24ec2972-1d32-4bdf-93e3-a9343b082324",e._sentryDebugIdIdentifier="sentry-dbid-24ec2972-1d32-4bdf-93e3-a9343b082324")}catch(e){}}();"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[4344],{24344:(e,t,a)=>{let n,i,r,o;a.d(t,{getAnalytics:()=>ek,isSupported:()=>eS,logEvent:()=>eC});var s=a(89939),l=a(31500),c=a(79940),u=a(93247),d=a(32267);let f="@firebase/installations",p="0.6.13",h=`w:${p}`,g="FIS_v2",m=new c.FA("installations","Installations",{"missing-app-config-values":'Missing App configuration value: "{$valueName}"',"not-registered":"Firebase Installation is not registered.","installation-not-found":"Firebase Installation not found.","request-failed":'{$requestName} request failed with error "{$serverCode} {$serverStatus}: {$serverMessage}"',"app-offline":"Could not process request. Application offline.","delete-pending-registration":"Can't delete installation while there is a pending registration request."});function w(e){return e instanceof c.g&&e.code.includes("request-failed")}function y({projectId:e}){return`https://firebaseinstallations.googleapis.com/v1/projects/${e}/installations`}function b(e){return{token:e.token,requestStatus:2,expiresIn:Number(e.expiresIn.replace("s","000")),creationTime:Date.now()}}async function v(e,t){let a=(await t.json()).error;return m.create("request-failed",{requestName:e,serverCode:a.code,serverMessage:a.message,serverStatus:a.status})}function I({apiKey:e}){return new Headers({"Content-Type":"application/json",Accept:"application/json","x-goog-api-key":e})}function T(e,{refreshToken:t}){var a;let n=I(e);return n.append("Authorization",(a=t,`${g} ${a}`)),n}async function k(e){let t=await e();return t.status>=500&&t.status<600?e():t}async function S({appConfig:e,heartbeatServiceProvider:t},{fid:a}){let n=y(e),i=I(e),r=t.getImmediate({optional:!0});if(r){let e=await r.getHeartbeatsHeader();e&&i.append("x-firebase-client",e)}let o={method:"POST",headers:i,body:JSON.stringify({fid:a,authVersion:g,appId:e.appId,sdkVersion:h})},s=await k(()=>fetch(n,o));if(s.ok){let e=await s.json();return{fid:e.fid||a,registrationStatus:2,refreshToken:e.refreshToken,authToken:b(e.authToken)}}throw await v("Create Installation",s)}function C(e){return new Promise(t=>{setTimeout(t,e)})}let j=/^[cdef][\w-]{21}$/;function D(e){return`${e.appName}!${e.appId}`}let A=new Map;function $(e,t){let a=D(e);F(a,t),function(e,t){let a=function(){return!M&&"BroadcastChannel"in self&&((M=new BroadcastChannel("[Firebase] FID Change")).onmessage=e=>{F(e.data.key,e.data.fid)}),M}();a&&a.postMessage({key:e,fid:t}),function(){0===A.size&&M&&(M.close(),M=null)}()}(a,t)}function F(e,t){let a=A.get(e);if(a)for(let e of a)e(t)}let M=null,P="firebase-installations-store",x=null;function O(){return x||(x=(0,d.P2)("firebase-installations-database",1,{upgrade:(e,t)=>{0===t&&e.createObjectStore(P)}})),x}async function q(e,t){let a=D(e),n=(await O()).transaction(P,"readwrite"),i=n.objectStore(P),r=await i.get(a);return await i.put(t,a),await n.done,r&&r.fid===t.fid||$(e,t.fid),t}async function E(e){let t=D(e),a=(await O()).transaction(P,"readwrite");await a.objectStore(P).delete(t),await a.done}async function z(e,t){let a=D(e),n=(await O()).transaction(P,"readwrite"),i=n.objectStore(P),r=await i.get(a),o=t(r);return void 0===o?await i.delete(a):await i.put(o,a),await n.done,o&&(!r||r.fid!==o.fid)&&$(e,o.fid),o}async function _(e){let t,a=await z(e.appConfig,a=>{let n=function(e,t){if(0===t.registrationStatus){if(!navigator.onLine)return{installationEntry:t,registrationPromise:Promise.reject(m.create("app-offline"))};let a={fid:t.fid,registrationStatus:1,registrationTime:Date.now()},n=N(e,a);return{installationEntry:a,registrationPromise:n}}return 1===t.registrationStatus?{installationEntry:t,registrationPromise:K(e)}:{installationEntry:t}}(e,U(a||{fid:function(){try{var e;let t=new Uint8Array(17);(self.crypto||self.msCrypto).getRandomValues(t),t[0]=112+t[0]%16;let a=(e=t,btoa(String.fromCharCode(...e)).replace(/\+/g,"-").replace(/\//g,"_").substr(0,22));return j.test(a)?a:""}catch(e){return""}}(),registrationStatus:0}));return t=n.registrationPromise,n.installationEntry});return""===a.fid?{installationEntry:await t}:{installationEntry:a,registrationPromise:t}}async function N(e,t){try{let a=await S(e,t);return q(e.appConfig,a)}catch(a){throw w(a)&&409===a.customData.serverCode?await E(e.appConfig):await q(e.appConfig,{fid:t.fid,registrationStatus:0}),a}}async function K(e){let t=await L(e.appConfig);for(;1===t.registrationStatus;)await C(100),t=await L(e.appConfig);if(0===t.registrationStatus){let{installationEntry:t,registrationPromise:a}=await _(e);return a||t}return t}function L(e){return z(e,e=>{if(!e)throw m.create("installation-not-found");return U(e)})}function U(e){var t;return 1===(t=e).registrationStatus&&t.registrationTime+1e4fetch(n,o));if(s.ok)return b(await s.json());throw await v("Generate Auth Token",s)}async function R(e,t=!1){let a,n=await z(e.appConfig,n=>{var i;if(!G(n))throw m.create("not-registered");let r=n.authToken;if(!t&&2===(i=r).requestStatus&&!function(e){let t=Date.now();return t{var t;if(!G(e))throw m.create("not-registered");return 1===(t=e.authToken).requestStatus&&t.requestTime+1e4{let t=e.getProvider("app").getImmediate(),a=function(e){if(!e||!e.options)throw Y("App Configuration");if(!e.name)throw Y("App Name");for(let t of["projectId","apiKey","appId"])if(!e.options[t])throw Y(t);return{appName:e.name,projectId:e.options.projectId,apiKey:e.options.apiKey,appId:e.options.appId}}(t),n=(0,s.j6)(t,"heartbeat");return{app:t,appConfig:a,heartbeatServiceProvider:n,_delete:()=>Promise.resolve()}},"PUBLIC")),(0,s.om)(new u.uA("installations-internal",e=>{let t=e.getProvider("app").getImmediate(),a=(0,s.j6)(t,Z).getImmediate();return{getId:()=>J(a),getToken:e=>X(a,e)}},"PRIVATE")),(0,s.KO)(f,p),(0,s.KO)(f,p,"esm2017");let ee="analytics",et="https://www.googletagmanager.com/gtag/js",ea=new l.Vy("@firebase/analytics"),en=new c.FA("analytics","Analytics",{"already-exists":"A Firebase Analytics instance with the appId {$id} already exists. Only one Firebase Analytics instance can be created for each appId.","already-initialized":"initializeAnalytics() cannot be called again with different options than those it was initially called with. It can be called again with the same options to return the existing instance, or getAnalytics() can be used to get a reference to the already-initialized instance.","already-initialized-settings":"Firebase Analytics has already been initialized.settings() must be called before initializing any Analytics instanceor it will have no effect.","interop-component-reg-failed":"Firebase Analytics Interop Component failed to instantiate: {$reason}","invalid-analytics-context":"Firebase Analytics is not supported in this environment. Wrap initialization of analytics in analytics.isSupported() to prevent initialization in unsupported environments. Details: {$errorInfo}","indexeddb-unavailable":"IndexedDB unavailable or restricted in this environment. Wrap initialization of analytics in analytics.isSupported() to prevent initialization in unsupported environments. Details: {$errorInfo}","fetch-throttle":"The config fetch request timed out while in an exponential backoff state. Unix timestamp in milliseconds when fetch request throttling ends: {$throttleEndTimeMillis}.","config-fetch-failed":"Dynamic config fetch failed: [{$httpStatus}] {$responseMessage}","no-api-key":'The "apiKey" field is empty in the local Firebase config. Firebase Analytics requires this field tocontain a valid API key.',"no-app-id":'The "appId" field is empty in the local Firebase config. Firebase Analytics requires this field tocontain a valid app ID.',"no-client-id":'The "client_id" field is empty.',"invalid-gtag-resource":"Trusted Types detected an invalid gtag resource: {$gtagURL}."});function ei(e){if(!e.startsWith(et)){let t=en.create("invalid-gtag-resource",{gtagURL:e});return ea.warn(t.message),""}return e}function er(e){return Promise.all(e.map(e=>e.catch(e=>e)))}async function eo(e,t,a,n,i,r){let o=n[i];try{if(o)await t[o];else{let e=(await er(a)).find(e=>e.measurementId===i);e&&await t[e.appId]}}catch(e){ea.error(e)}e("config",i,r)}async function es(e,t,a,n,i){try{let r=[];if(i&&i.send_to){let e=i.send_to;Array.isArray(e)||(e=[e]);let n=await er(a);for(let a of e){let e=n.find(e=>e.measurementId===a),i=e&&t[e.appId];if(i)r.push(i);else{r=[];break}}}0===r.length&&(r=Object.values(t)),await Promise.all(r),e("event",n,i||{})}catch(e){ea.error(e)}}class el{constructor(e={},t=1e3){this.throttleMetadata=e,this.intervalMillis=t}getThrottleMetadata(e){return this.throttleMetadata[e]}setThrottleMetadata(e,t){this.throttleMetadata[e]=t}deleteThrottleMetadata(e){delete this.throttleMetadata[e]}}let ec=new el;async function eu(e){var t;let{appId:a,apiKey:n}=e,i={method:"GET",headers:new Headers({Accept:"application/json","x-goog-api-key":n})},r="https://firebase.googleapis.com/v1alpha/projects/-/apps/{app-id}/webConfig".replace("{app-id}",a),o=await fetch(r,i);if(200!==o.status&&304!==o.status){let e="";try{let a=await o.json();(null==(t=a.error)?void 0:t.message)&&(e=a.error.message)}catch(e){}throw en.create("config-fetch-failed",{httpStatus:o.status,responseMessage:e})}return o.json()}async function ed(e,t=ec,a){let{appId:n,apiKey:i,measurementId:r}=e.options;if(!n)throw en.create("no-app-id");if(!i){if(r)return{measurementId:r,appId:n};throw en.create("no-api-key")}let o=t.getThrottleMetadata(n)||{backoffCount:0,throttleEndTimeMillis:Date.now()},s=new ep;return setTimeout(async()=>{s.abort()},void 0!==a?a:6e4),ef({appId:n,apiKey:i,measurementId:r},o,s,t)}async function ef(e,{throttleEndTimeMillis:t,backoffCount:a},n,i=ec){var r,o,s;let{appId:l,measurementId:u}=e;try{await (o=n,s=t,new Promise((e,t)=>{let a=setTimeout(e,Math.max(s-Date.now(),0));o.addEventListener(()=>{clearTimeout(a),t(en.create("fetch-throttle",{throttleEndTimeMillis:s}))})}))}catch(e){if(u)return ea.warn(`Timed out fetching this Firebase app's measurement ID from the server. Falling back to the measurement ID ${u} provided in the "measurementId" field in the local Firebase config. [${null==e?void 0:e.message}]`),{appId:l,measurementId:u};throw e}try{let t=await eu(e);return i.deleteThrottleMetadata(l),t}catch(s){if(!function(e){if(!(e instanceof c.g)||!e.customData)return!1;let t=Number(e.customData.httpStatus);return 429===t||500===t||503===t||504===t}(s)){if(i.deleteThrottleMetadata(l),u)return ea.warn(`Failed to fetch this Firebase app's measurement ID from the server. Falling back to the measurement ID ${u} provided in the "measurementId" field in the local Firebase config. [${null==s?void 0:s.message}]`),{appId:l,measurementId:u};throw s}let t=503===Number(null==(r=null==s?void 0:s.customData)?void 0:r.httpStatus)?(0,c.p9)(a,i.intervalMillis,30):(0,c.p9)(a,i.intervalMillis),o={throttleEndTimeMillis:Date.now()+t,backoffCount:a+1};return i.setThrottleMetadata(l,o),ea.debug(`Calling attemptFetch again in ${t} millis`),ef(e,o,n,i)}}class ep{constructor(){this.listeners=[]}addEventListener(e){this.listeners.push(e)}abort(){this.listeners.forEach(e=>e())}}async function eh(e,t,a,n,i){if(i&&i.global)return void e("event",a,n);{let i=await t;e("event",a,Object.assign(Object.assign({},n),{send_to:i}))}}async function eg(){if(!(0,c.zW)())return ea.warn(en.create("indexeddb-unavailable",{errorInfo:"IndexedDB is not available in this environment."}).message),!1;try{await (0,c.eX)()}catch(e){return ea.warn(en.create("indexeddb-unavailable",{errorInfo:null==e?void 0:e.toString()}).message),!1}return!0}async function em(e,t,a,r,o,s,l){var c;let u=ed(e);u.then(t=>{a[t.measurementId]=t.appId,e.options.measurementId&&t.measurementId!==e.options.measurementId&&ea.warn(`The measurement ID in the local Firebase config (${e.options.measurementId}) does not match the measurement ID fetched from the server (${t.measurementId}). To ensure analytics events are always sent to the correct Analytics property, update the measurement ID field in the local config or remove it from the local config.`)}).catch(e=>ea.error(e)),t.push(u);let d=eg().then(e=>e?r.getId():void 0),[f,p]=await Promise.all([u,d]);!function(e){for(let t of Object.values(window.document.getElementsByTagName("script")))if(t.src&&t.src.includes(et)&&t.src.includes(e))return t;return null}(s)&&function(e,t){var a,n;let i,r=(a="firebase-js-sdk-policy",n={createScriptURL:ei},window.trustedTypes&&(i=window.trustedTypes.createPolicy(a,n)),i),o=document.createElement("script"),s=`${et}?l=${e}&id=${t}`;o.src=r?null==r?void 0:r.createScriptURL(s):s,o.async=!0,document.head.appendChild(o)}(s,f.measurementId),i&&(o("consent","default",i),i=void 0),o("js",new Date);let h=null!=(c=null==l?void 0:l.config)?c:{};return h.origin="firebase",h.update=!0,null!=p&&(h.firebase_id=p),o("config",f.measurementId,h),n&&(o("set",n),n=void 0),f.measurementId}class ew{constructor(e){this.app=e}_delete(){return delete ey[this.app.options.appId],Promise.resolve()}}let ey={},eb=[],ev={},eI="dataLayer",eT=!1;function ek(e=(0,s.Sx)()){e=(0,c.Ku)(e);let t=(0,s.j6)(e,ee);return t.isInitialized()?t.getImmediate():function(e,t={}){let a=(0,s.j6)(e,ee);if(a.isInitialized()){let e=a.getImmediate();if((0,c.bD)(t,a.getOptions()))return e;throw en.create("already-initialized")}return a.initialize({options:t})}(e)}async function eS(){if((0,c.sr)()||!(0,c.dM)()||!(0,c.zW)())return!1;try{return await (0,c.eX)()}catch(e){return!1}}function eC(e,t,a,n){e=(0,c.Ku)(e),eh(o,ey[e.app.options.appId],t,a,n).catch(e=>ea.error(e))}let ej="@firebase/analytics",eD="0.10.12";(0,s.om)(new u.uA(ee,(e,{options:t})=>(function(e,t,a){let n=[];if((0,c.sr)()&&n.push("This is a browser extension environment."),(0,c.dM)()||n.push("Cookies are not available."),n.length>0){let e=n.map((e,t)=>`(${t+1}) ${e}`).join(" "),t=en.create("invalid-analytics-context",{errorInfo:e});ea.warn(t.message)}let i=e.options.appId;if(!i)throw en.create("no-app-id");if(!e.options.apiKey)if(e.options.measurementId)ea.warn(`The "apiKey" field is empty in the local Firebase config. This is needed to fetch the latest measurement ID for this Firebase app. Falling back to the measurement ID ${e.options.measurementId} provided in the "measurementId" field in the local Firebase config.`);else throw en.create("no-api-key");if(null!=ey[i])throw en.create("already-exists",{id:i});if(!eT){var s,l;let e,t;e=[],Array.isArray(window[eI])?e=window[eI]:window[eI]=e;let{wrappedGtag:a,gtagCore:n}=(s="gtag",t=function(...e){window[eI].push(arguments)},window[s]&&"function"==typeof window[s]&&(t=window[s]),window[s]=(l=t,async function(e,...t){try{if("event"===e){let[e,a]=t;await es(l,ey,eb,e,a)}else if("config"===e){let[e,a]=t;await eo(l,ey,eb,ev,e,a)}else if("consent"===e){let[e,a]=t;l("consent",e,a)}else if("get"===e){let[e,a,n]=t;l("get",e,a,n)}else if("set"===e){let[e]=t;l("set",e)}else l(e,...t)}catch(e){ea.error(e)}}),{gtagCore:t,wrappedGtag:window[s]});o=a,r=n,eT=!0}return ey[i]=em(e,eb,ev,t,r,eI,a),new ew(e)})(e.getProvider("app").getImmediate(),e.getProvider("installations-internal").getImmediate(),t),"PUBLIC")),(0,s.om)(new u.uA("analytics-internal",function(e){try{let t=e.getProvider(ee).getImmediate();return{logEvent:(e,a,n)=>eC(t,e,a,n)}}catch(e){throw en.create("interop-component-reg-failed",{reason:e})}},"PRIVATE")),(0,s.KO)(ej,eD),(0,s.KO)(ej,eD,"esm2017")}}]);