1"use strict";(self["webpackChunkcrowdbunker"]=self["webpackChunkcrowdbunker"]||[]).push([[2656],{78461:function(t,e,n){n.d(e,{KO:function(){return W},Sx:function(){return G},Wp:function(){return V},j6:function(){return x},om:function(){return B}});var i=n(5125),a=n(63424),s=n(36743),r=n(4297); 2/** 3 * @license 4 * Copyright 2019 Google LLC 5 * 6 * Licensed under the Apache License, Version 2.0 (the "License"); 7 * you may not use this file except in compliance with the License. 8 * You may obtain a copy of the License at 9 * 10 * http://www.apache.org/licenses/LICENSE-2.0 11 * 12 * Unless required by applicable law or agreed to in writing, software 13 * distributed under the License is distributed on an "AS IS" BASIS, 14 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 * See the License for the specific language governing permissions and 16 * limitations under the License. 17 */ 18class o{constructor(t){this.container=t}getPlatformInfoString(){const t=this.container.getProviders();return t.map(t=>{if(c(t)){const e=t.getImmediate();return`${e.library}/${e.version}`}return null}).filter(t=>t).join(" ")}}function c(t){const e=t.getComponent();return"VERSION"===(null===e||void 0===e?void 0:e.type)}const l="@firebase/app",h="0.9.29",u=new a.Vy("@firebase/app"),f="@firebase/app-compat",g="@firebase/analytics-compat",d="@firebase/analytics",p="@firebase/app-check-compat",m="@firebase/app-check",w="@firebase/auth",b="@firebase/auth-compat",v="@firebase/database",C="@firebase/database-compat",I="@firebase/functions",_="@firebase/functions-compat",y="@firebase/installations",S="@firebase/installations-compat",E="@firebase/messaging",T="@firebase/messaging-compat",D="@firebase/performance",O="@firebase/performance-compat",k="@firebase/remote-config",M="@firebase/remote-config-compat",P="@firebase/storage",F="@firebase/storage-compat",A="@firebase/firestore",L="@firebase/firestore-compat",$="firebase",N="[DEFAULT]",j={[l]:"fire-core",[f]:"fire-core-compat",[d]:"fire-analytics",[g]:"fire-analytics-compat",[m]:"fire-app-check",[p]:"fire-app-check-compat",[w]:"fire-auth",[b]:"fire-auth-compat",[v]:"fire-rtdb",[C]:"fire-rtdb-compat",[I]:"fire-fn",[_]:"fire-fn-compat",[y]:"fire-iid",[S]:"fire-iid-compat",[E]:"fire-fcm",[T]:"fire-fcm-compat",[D]:"fire-perf",[O]:"fire-perf-compat",[k]:"fire-rc",[M]:"fire-rc-compat",[P]:"fire-gcs",[F]:"fire-gcs-compat",[A]:"fire-fst",[L]:"fire-fst-compat","fire-js":"fire-js",[$]:"fire-js-all"},R=new Map,H=new Map;function z(t,e){try{t.container.addComponent(e)}catch(n){u.debug(`Component ${e.name} failed to register with FirebaseApp ${t.name}`,n)}}function B(t){const e=t.name;if(H.has(e))return u.debug(`There were multiple attempts to register component ${e}.`),!1;H.set(e,t);for(const n of R.values())z(n,t);return!0}function x(t,e){const n=t.container.getProvider("heartbeat").getImmediate({optional:!0});return n&&n.triggerHeartbeat(),t.container.getProvider(e)} 19/** 20 * @license 21 * Copyright 2019 Google LLC 22 * 23 * Licensed under the Apache License, Version 2.0 (the "License"); 24 * you may not use this file except in compliance with the License. 25 * You may obtain a copy of the License at 26 * 27 * http://www.apache.org/licenses/LICENSE-2.0 28 * 29 * Unless required by applicable law or agreed to in writing, software 30 * distributed under the License is distributed on an "AS IS" BASIS, 31 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 32 * See the License for the specific language governing permissions and 33 * limitations under the License. 34 */ 35const K={["no-app"]:"No Firebase App '{$appName}' has been created - call initializeApp() first",["bad-app-name"]:"Illegal App name: '{$appName}",["duplicate-app"]:"Firebase App named '{$appName}' already exists with different options or config",["app-deleted"]:"Firebase App named '{$appName}' already deleted",["no-options"]:"Need to provide options, when not being deployed to hosting via source.",["invalid-app-argument"]:"firebase.{$appName}() takes either no argument or a Firebase App instance.",["invalid-log-argument"]:"First argument to `onLog` must be null or a function.",["idb-open"]:"Error thrown when opening IndexedDB. Original error: {$originalErrorMessage}.",["idb-get"]:"Error thrown when reading from IndexedDB. Original error: {$originalErrorMessage}.",["idb-set"]:"Error thrown when writing to IndexedDB. Original error: {$originalErrorMessage}.",["idb-delete"]:"Error thrown when deleting from IndexedDB. Original error: {$originalErrorMessage}."}
35,U=new s.FA("app","Firebase",K); 36/** 37 * @license 38 * Copyright 2019 Google LLC 39 * 40 * Licensed under the Apache License, Version 2.0 (the "License"); 41 * you may not use this file except in compliance with the License. 42 * You may obtain a copy of the License at 43 * 44 * http://www.apache.org/licenses/LICENSE-2.0 45 * 46 * Unless required by applicable law or agreed to in writing, software 47 * distributed under the License is distributed on an "AS IS" BASIS, 48 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 49 * See the License for the specific language governing permissions and 50 * limitations under the License. 51 */ 52class q{constructor(t,e,n){this._isDeleted=!1,this._options=Object.assign({},t),this._config=Object.assign({},e),this._name=e.name,this._automaticDataCollectionEnabled=e.automaticDataCollectionEnabled,this._container=n,this.container.addComponent(new i.uA("app",()=>this,"PUBLIC"))}get automaticDataCollectionEnabled(){return this.checkDestroyed(),this._automaticDataCollectionEnabled}set automaticDataCollectionEnabled(t){this.checkDestroyed(),this._automaticDataCollectionEnabled=t}get name(){return this.checkDestroyed(),this._name}get options(){return this.checkDestroyed(),this._options}get config(){return this.checkDestroyed(),this._config}get container(){return this._container}get isDeleted(){return this._isDeleted}set isDeleted(t){this._isDeleted=t}checkDestroyed(){if(this.isDeleted)throw U.create("app-deleted",{appName:this._name})}} 53/** 54 * @license 55 * Copyright 2019 Google LLC 56 * 57 * Licensed under the Apache License, Version 2.0 (the "License"); 58 * you may not use this file except in compliance with the License. 59 * You may obtain a copy of the License at 60 * 61 * http://www.apache.org/licenses/LICENSE-2.0 62 * 63 * Unless required by applicable law or agreed to in writing, software 64 * distributed under the License is distributed on an "AS IS" BASIS, 65 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 66 * See the License for the specific language governing permissions and 67 * limitations under the License. 68 */function V(t,e={}){let n=t;if("object"!==typeof e){const t=e;e={name:t}}const a=Object.assign({name:N,automaticDataCollectionEnabled:!1},e),r=a.name;if("string"!==typeof r||!r)throw U.create("bad-app-name",{appName:String(r)});if(n||(n=(0,s.T9)()),!n)throw U.create("no-options");const o=R.get(r);if(o){if((0,s.bD)(n,o.options)&&(0,s.bD)(a,o.config))return o;throw U.create("duplicate-app",{appName:r})}const c=new i.h1(r);for(const i of H.values())c.addComponent(i);const l=new q(n,a,c);return R.set(r,l),l}function G(t=N){const e=R.get(t);if(!e&&t===N&&(0,s.T9)())return V();if(!e)throw U.create("no-app",{appName:t});return e}function W(t,e,n){var a;let s=null!==(a=j[t])&&void 0!==a?a:t;n&&(s+=`-${n}`);const r=s.match(/\s|\//),o=e.match(/\s|\//);if(r||o){const t=[`Unable to register library "${s}" with version "${e}":`];return r&&t.push(`library name "${s}" contains illegal characters (whitespace or "/")`),r&&o&&t.push("and"),o&&t.push(`version name "${e}" contains illegal characters (whitespace or "/")`),void u.warn(t.join(" "))}B(new i.uA(`${s}-version`,()=>({library:s,version:e}),"VERSION"))} 69/** 70 * @license 71 * Copyright 2021 Google LLC 72 * 73 * Licensed under the Apache License, Version 2.0 (the "License"); 74 * you may not use this file except in compliance with the License. 75 * You may obtain a copy of the License at 76 * 77 * http://www.apache.org/licenses/LICENSE-2.0 78 * 79 * Unless required by applicable law or agreed to in writing, software 80 * distributed under the License is distributed on an "AS IS" BASIS, 81 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 82 * See the License for the specific language governing permissions and 83 * limitations under the License. 84 */ 85const J="firebase-heartbeat-database",Y=1,X="firebase-heartbeat-store";let Q=null;function Z(){return Q||(Q=(0,r.P2)(J,Y,{upgrade:(t,e)=>{switch(e){case 0:try{t.createObjectStore(X)}catch(n){console.warn(n)}}}}).catch(t=>{throw U.create("idb-open",{originalErrorMessage:t.message})})),Q}async function tt(t){try{const e=await Z(),n=e.transaction(X),i=await n.objectStore(X).get(nt(t));return await n.done,i}catch(e){if(e instanceof s.g)u.warn(e.message);else{const t=U.create("idb-get",{originalErrorMessage:null===e||void 0===e?void 0:e.message});u.warn(t.message)}}}async function et(t,e){try{const n=await Z(),i=n.transaction(X,"readwrite"),a=i.objectStore(X);await a.put(e,nt(t)),await i.done}catch(n){if(n instanceof s.g)u.warn(n.message);else{const t=U.create("idb-set",{originalErrorMessage:null===n||void 0===n?void 0:n.message});u.warn(t.message)}}}function nt(t){return`${t.name}!${t.options.appId}`} 86/** 87 * @license 88 * Copyright 2021 Google LLC 89 * 90 * Licensed under the Apache License, Version 2.0 (the "License");
91 * you may not use this file except in compliance with the License. 92 * You may obtain a copy of the License at 93 * 94 * http://www.apache.org/licenses/LICENSE-2.0 95 * 96 * Unless required by applicable law or agreed to in writing, software 97 * distributed under the License is distributed on an "AS IS" BASIS, 98 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 99 * See the License for the specific language governing permissions and 100 * limitations under the License. 101 */const it=1024,at=2592e6;class st{constructor(t){this.container=t,this._heartbeatsCache=null;const e=this.container.getProvider("app").getImmediate();this._storage=new ct(e),this._heartbeatsCachePromise=this._storage.read().then(t=>(this._heartbeatsCache=t,t))}async triggerHeartbeat(){var t,e;const n=this.container.getProvider("platform-logger").getImmediate(),i=n.getPlatformInfoString(),a=rt();if((null!=(null===(t=this._heartbeatsCache)||void 0===t?void 0:t.heartbeats)||(this._heartbeatsCache=await this._heartbeatsCachePromise,null!=(null===(e=this._heartbeatsCache)||void 0===e?void 0:e.heartbeats)))&&this._heartbeatsCache.lastSentHeartbeatDate!==a&&!this._heartbeatsCache.heartbeats.some(t=>t.date===a))return this._heartbeatsCache.heartbeats.push({date:a,agent:i}),this._heartbeatsCache.heartbeats=this._heartbeatsCache.heartbeats.filter(t=>{const e=new Date(t.date).valueOf(),n=Date.now();return n-e<=at}),this._storage.overwrite(this._heartbeatsCache)}async getHeartbeatsHeader(){var t;if(null===this._heartbeatsCache&&await this._heartbeatsCachePromise,null==(null===(t=this._heartbeatsCache)||void 0===t?void 0:t.heartbeats)||0===this._heartbeatsCache.heartbeats.length)return"";const e=rt(),{heartbeatsToSend:n,unsentEntries:i}=ot(this._heartbeatsCache.heartbeats),a=(0,s.Uj)(JSON.stringify({version:2,heartbeats:n}));return this._heartbeatsCache.lastSentHeartbeatDate=e,i.length>0?(this._heartbeatsCache.heartbeats=i,await this._storage.overwrite(this._heartbeatsCache)):(this._heartbeatsCache.heartbeats=[],this._storage.overwrite(this._heartbeatsCache)),a}}function rt(){const t=new Date;return t.toISOString().substring(0,10)}function ot(t,e=it){const n=[];let i=t.slice();for(const a of t){const t=n.find(t=>t.agent===a.agent);if(t){if(t.dates.push(a.date),lt(n)>e){t.dates.pop();break}}else if(n.push({agent:a.agent,dates:[a.date]}),lt(n)>e){n.pop();break}i=i.slice(1)}return{heartbeatsToSend:n,unsentEntries:i}}class ct{constructor(t){this.app=t,this._canUseIndexedDBPromise=this.runIndexedDBEnvironmentCheck()}async runIndexedDBEnvironmentCheck(){return!!(0,s.zW)()&&(0,s.eX)().then(()=>!0).catch(()=>!1)}async read(){const t=await this._canUseIndexedDBPromise;if(t){const t=await tt(this.app);return(null===t||void 0===t?void 0:t.heartbeats)?t:{heartbeats:[]}}return{heartbeats:[]}}async overwrite(t){var e;const n=await this._canUseIndexedDBPromise;if(n){const n=await this.read();return et(this.app,{lastSentHeartbeatDate:null!==(e=t.lastSentHeartbeatDate)&&void 0!==e?e:n.lastSentHeartbeatDate,heartbeats:t.heartbeats})}}async add(t){var e;const n=await this._canUseIndexedDBPromise;if(n){const n=await this.read();return et(this.app,{lastSentHeartbeatDate:null!==(e=t.lastSentHeartbeatDate)&&void 0!==e?e:n.lastSentHeartbeatDate,heartbeats:[...n.heartbeats,...t.heartbeats]})}}}function lt(t){return(0,s.Uj)(JSON.stringify({version:2,heartbeats:t})).length} 102/** 103 * @license 104 * Copyright 2019 Google LLC 105 * 106 * Licensed under the Apache License, Version 2.0 (the "License"); 107 * you may not use this file except in compliance with the License. 108 * You may obtain a copy of the License at 109 * 110 * http://www.apache.org/licenses/LICENSE-2.0 111 * 112 * Unless required by applicable law or agreed to in writing, software 113 * distributed under the License is distributed on an "AS IS" BASIS, 114 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 115 * See the License for the specific language governing permissions and 116 * limitations under the License. 117 */function ht(t){B(new i.uA("platform-logger",t=>new o(t),"PRIVATE")),B(new i.uA("heartbeat",t=>new st(t),"PRIVATE")),W(l,h,t),W(l,h,"esm2017"),W("fire-js","")}ht("")},5125:function(t,e,n){n.d(e,{h1:function(){return l},uA:function(){return a}});var i=n(36743);class a{constructor(t,e,n){this.name=t,this.instanceFactory=e,this.type=n,this.multipleInstances=!1,this.serviceProps={},this.instantiationMode="LAZY",this.onInstanceCreated=null}setInstantiationMode(t){return this.instantiationMode=t,this}setMultipleInstances(t){return this.multipleInstances=t,this}setServiceProps(t){return this.serviceProps=t,this}setInstanceCreatedCallback(t){return this.onInstanceCreated=t,this}} 118/** 119 * @license 120 * Copyright 2019 Google LLC 121 * 122 * Licensed under the Apache License, Version 2.0 (the "License");
123 * you may not use this file except in compliance with the License. 124 * You may obtain a copy of the License at 125 * 126 * http://www.apache.org/licenses/LICENSE-2.0 127 * 128 * Unless required by applicable law or agreed to in writing, software 129 * distributed under the License is distributed on an "AS IS" BASIS, 130 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 131 * See the License for the specific language governing permissions and 132 * limitations under the License. 133 */const s="[DEFAULT]"; 134/** 135 * @license 136 * Copyright 2019 Google LLC 137 * 138 * Licensed under the Apache License, Version 2.0 (the "License"); 139 * you may not use this file except in compliance with the License. 140 * You may obtain a copy of the License at 141 * 142 * http://www.apache.org/licenses/LICENSE-2.0 143 * 144 * Unless required by applicable law or agreed to in writing, software 145 * distributed under the License is distributed on an "AS IS" BASIS, 146 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 147 * See the License for the specific language governing permissions and 148 * limitations under the License. 149 */class r{constructor(t,e){this.name=t,this.container=e,this.component=null,this.instances=new Map,this.instancesDeferred=new Map,this.instancesOptions=new Map,this.onInitCallbacks=new Map}get(t){const e=this.normalizeInstanceIdentifier(t);if(!this.instancesDeferred.has(e)){const t=new i.cY;if(this.instancesDeferred.set(e,t),this.isInitialized(e)||this.shouldAutoInitialize())try{const n=this.getOrInitializeService({instanceIdentifier:e});n&&t.resolve(n)}catch(n){}}return this.instancesDeferred.get(e).promise}getImmediate(t){var e;const n=this.normalizeInstanceIdentifier(null===t||void 0===t?void 0:t.identifier),i=null!==(e=null===t||void 0===t?void 0:t.optional)&&void 0!==e&&e;if(!this.isInitialized(n)&&!this.shouldAutoInitialize()){if(i)return null;throw Error(`Service ${this.name} is not available`)}try{return this.getOrInitializeService({instanceIdentifier:n})}catch(a){if(i)return null;throw a}}getComponent(){return this.component}setComponent(t){if(t.name!==this.name)throw Error(`Mismatching Component ${t.name} for Provider ${this.name}.`);if(this.component)throw Error(`Component for ${this.name} has already been provided`);if(this.component=t,this.shouldAutoInitialize()){if(c(t))try{this.getOrInitializeService({instanceIdentifier:s})}catch(e){}for(const[t,n]of this.instancesDeferred.entries()){const i=this.normalizeInstanceIdentifier(t);try{const t=this.getOrInitializeService({instanceIdentifier:i});n.resolve(t)}catch(e){}}}}clearInstance(t=s){this.instancesDeferred.delete(t),this.instancesOptions.delete(t),this.instances.delete(t)}async delete(){const t=Array.from(this.instances.values());await Promise.all([...t.filter(t=>"INTERNAL"in t).map(t=>t.INTERNAL.delete()),...t.filter(t=>"_delete"in t).map(t=>t._delete())])}isComponentSet(){return null!=this.component}isInitialized(t=s){return this.instances.has(t)}getOptions(t=s){return this.instancesOptions.get(t)||{}}initialize(t={}){const{options:e={}}=t,n=this.normalizeInstanceIdentifier(t.instanceIdentifier);if(this.isInitialized(n))throw Error(`${this.name}(${n}) has already been initialized`);if(!this.isComponentSet())throw Error(`Component ${this.name} has not been registered yet`);const i=this.getOrInitializeService({instanceIdentifier:n,options:e});for(const[a,s]of this.instancesDeferred.entries()){const t=this.normalizeInstanceIdentifier(a);n===t&&s.resolve(i)}return i}onInit(t,e){var n;const i=this.normalizeInstanceIdentifier(e),a=null!==(n=this.onInitCallbacks.get(i))&&void 0!==n?n:new Set;a.add(t),this.onInitCallbacks.set(i,a);const s=this.instances.get(i);return s&&t(s,i),()=>{a.delete(t)}}invokeOnInitCallbacks(t,e){const n=this.onInitCallbacks.get(e);if(n)for(const a of n)try{a(t,e)}catch(i){}}getOrInitializeService({instanceIdentifier:t,options:e={}}){let n=this.instances.get(t);if(!n&&this.component&&(n=this.component.instanceFactory(this.container,{instanceIdentifier:o(t),options:e}),this.instances.set(t,n),this.instancesOptions.set(t,e),this.invokeOnInitCallbacks(n,t),this.component.onInstanceCreated))try{this.component.onInstanceCreated(this.container,t,n)}catch(i){}return n||null}normalizeInstanceIdentifier(t=s){return this.component?this.component.multipleInstances?t:s:t}shouldAutoInitialize(){return!!this.component&&"EXPLICIT"!==this.component.instantiationMode}}function o(t){return t===s?void 0:t}function c(t){return"EAGER"===t.instantiationMode} 150/** 151 * @license 152 * Copyright 2019 Google LLC 153 * 154 * Licensed under the Apache License, Version 2.0 (the "License");
155 * you may not use this file except in compliance with the License. 156 * You may obtain a copy of the License at 157 * 158 * http://www.apache.org/licenses/LICENSE-2.0 159 * 160 * Unless required by applicable law or agreed to in writing, software 161 * distributed under the License is distributed on an "AS IS" BASIS, 162 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 163 * See the License for the specific language governing permissions and 164 * limitations under the License. 165 */class l{constructor(t){this.name=t,this.providers=new Map}addComponent(t){const e=this.getProvider(t.name);if(e.isComponentSet())throw new Error(`Component ${t.name} has already been registered with ${this.name}`);e.setComponent(t)}addOrOverwriteComponent(t){const e=this.getProvider(t.name);e.isComponentSet()&&this.providers.delete(t.name),this.addComponent(t)}getProvider(t){if(this.providers.has(t))return this.providers.get(t);const e=new r(t,this);return this.providers.set(t,e),e}getProviders(){return Array.from(this.providers.values())}}},63424:function(t,e,n){n.d(e,{$b:function(){return a},Vy:function(){return l}}); 166/** 167 * @license 168 * Copyright 2017 Google LLC 169 * 170 * Licensed under the Apache License, Version 2.0 (the "License"); 171 * you may not use this file except in compliance with the License. 172 * You may obtain a copy of the License at 173 * 174 * http://www.apache.org/licenses/LICENSE-2.0 175 * 176 * Unless required by applicable law or agreed to in writing, software 177 * distributed under the License is distributed on an "AS IS" BASIS, 178 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 179 * See the License for the specific language governing permissions and 180 * limitations under the License. 181 */ 182const i=[];var a;(function(t){t[t["DEBUG"]=0]="DEBUG",t[t["VERBOSE"]=1]="VERBOSE",t[t["INFO"]=2]="INFO",t[t["WARN"]=3]="WARN",t[t["ERROR"]=4]="ERROR",t[t["SILENT"]=5]="SILENT"})(a||(a={}));const s={debug:a.DEBUG,verbose:a.VERBOSE,info:a.INFO,warn:a.WARN,error:a.ERROR,silent:a.SILENT},r=a.INFO,o={[a.DEBUG]:"log",[a.VERBOSE]:"log",[a.INFO]:"info",[a.WARN]:"warn",[a.ERROR]:"error"},c=(t,e,...n)=>{if(e<t.logLevel)return;const i=(new Date).toISOString(),a=o[e];if(!a)throw new Error(`Attempted to log a message with an invalid logType (value: ${e})`);console[a](`[${i}] ${t.name}:`,...n)};class l{constructor(t){this.name=t,this._logLevel=r,this._logHandler=c,this._userLogHandler=null,i.push(this)}get logLevel(){return this._logLevel}set logLevel(t){if(!(t in a))throw new TypeError(`Invalid value "${t}" assigned to \`logLevel\``);this._logLevel=t}setLogLevel(t){this._logLevel="string"===typeof t?s[t]:t}get logHandler(){return this._logHandler}set logHandler(t){if("function"!==typeof t)throw new TypeError("Value assigned to `logHandler` must be a function");this._logHandler=t}get userLogHandler(){return this._userLogHandler}set userLogHandler(t){this._userLogHandler=t}debug(...t){this._userLogHandler&&this._userLogHandler(this,a.DEBUG,...t),this._logHandler(this,a.DEBUG,...t)}log(...t){this._userLogHandler&&this._userLogHandler(this,a.VERBOSE,...t),this._logHandler(this,a.VERBOSE,...t)}info(...t){this._userLogHandler&&this._userLogHandler(this,a.INFO,...t),this._logHandler(this,a.INFO,...t)}warn(...t){this._userLogHandler&&this._userLogHandler(this,a.WARN,...t),this._logHandler(this,a.WARN,...t)}error(...t){this._userLogHandler&&this._userLogHandler(this,a.ERROR,...t),this._logHandler(this,a.ERROR,...t)}}},70223:function(t,e,n){n.d(e,{Wp:function(){return i.Wp}});var i=n(78461),a="firebase",s="10.9.0"; 183/** 184 * @license 185 * Copyright 2020 Google LLC 186 * 187 * Licensed under the Apache License, Version 2.0 (the "License"); 188 * you may not use this file except in compliance with the License. 189 * You may obtain a copy of the License at 190 * 191 * http://www.apache.org/licenses/LICENSE-2.0 192 * 193 * Unless required by applicable law or agreed to in writing, software 194 * distributed under the License is distributed on an "AS IS" BASIS, 195 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 196 * See the License for the specific language governing permissions and 197 * limitations under the License. 198 */ 199/** 200 * @license 201 * Copyright 2020 Google LLC 202 * 203 * Licensed under the Apache License, Version 2.0 (the "License");
204 * you may not use this file except in compliance with the License. 205 * You may obtain a copy of the License at 206 * 207 * http://www.apache.org/licenses/LICENSE-2.0 208 * 209 * Unless required by applicable law or agreed to in writing, software 210 * distributed under the License is distributed on an "AS IS" BASIS, 211 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 212 * See the License for the specific language governing permissions and 213 * limitations under the License. 214 */ 215(0,i.KO)(a,s,"app")},22405:function(t,e,n){n.d(e,{P:function(){return i.P},_M:function(){return i._M},doc:function(){return i.H9},getFirestore:function(){return i.aU},onSnapshot:function(){return i.aQ},rJ:function(){return i.rJ}});var i=n(15790)},47782:function(t,e,n){n.d(e,{fetchAndActivate:function(){return re},getRemoteConfig:function(){return Rt},getValue:function(){return xt}});var i=n(78461),a=n(36743),s=n(5125),r=n(63424),o=n(4297);const c="@firebase/installations",l="0.6.5",h=1e4,u=`w:${l}`,f="FIS_v2",g="https://firebaseinstallations.googleapis.com/v1",d=36e5,p="installations",m="Installations",w={["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."},b=new a.FA(p,m,w);function v(t){return t instanceof a.g&&t.code.includes("request-failed")} 216/** 217 * @license 218 * Copyright 2019 Google LLC 219 * 220 * Licensed under the Apache License, Version 2.0 (the "License"); 221 * you may not use this file except in compliance with the License. 222 * You may obtain a copy of the License at 223 * 224 * http://www.apache.org/licenses/LICENSE-2.0 225 * 226 * Unless required by applicable law or agreed to in writing, software 227 * distributed under the License is distributed on an "AS IS" BASIS, 228 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 229 * See the License for the specific language governing permissions and 230 * limitations under the License. 231 */function C({projectId:t}){return`${g}/projects/${t}/installations`}function I(t){return{token:t.token,requestStatus:2,expiresIn:T(t.expiresIn),creationTime:Date.now()}}async function _(t,e){const n=await e.json(),i=n.error;return b.create("request-failed",{requestName:t,serverCode:i.code,serverMessage:i.message,serverStatus:i.status})}function y({apiKey:t}){return new Headers({"Content-Type":"application/json",Accept:"application/json","x-goog-api-key":t})}function S(t,{refreshToken:e}){const n=y(t);return n.append("Authorization",D(e)),n}async function E(t){const e=await t();return e.status>=500&&e.status<600?t():e}function T(t){return Number(t.replace("s","000"))}function D(t){return`${f} ${t}`} 232/** 233 * @license 234 * Copyright 2019 Google LLC 235 * 236 * Licensed under the Apache License, Version 2.0 (the "License"); 237 * you may not use this file except in compliance with the License. 238 * You may obtain a copy of the License at 239 * 240 * http://www.apache.org/licenses/LICENSE-2.0 241 * 242 * Unless required by applicable law or agreed to in writing, software 243 * distributed under the License is distributed on an "AS IS" BASIS, 244 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 245 * See the License for the specific language governing permissions and 246 * limitations under the License. 247 */async function O({appConfig:t,heartbeatServiceProvider:e},{fid:n}){const i=C(t),a=y(t),s=e.getImmediate({optional:!0});if(s){const t=await s.getHeartbeatsHeader();t&&a.append("x-firebase-client",t)}const r={fid:n,authVersion:f,appId:t.appId,sdkVersion:u},o={method:"POST",headers:a,body:JSON.stringify(r)},c=await E(()=>fetch(i,o));if(c.ok){const t=await c.json(),e={fid:t.fid||n,registrationStatus:2,refreshToken:t.refreshToken,authToken:I(t.authToken)};return e}throw await _("Create Installation",c)} 248/** 249 * @license 250 * Copyright 2019 Google LLC 251 * 252 * Licensed under the Apache License, Version 2.0 (the "License");
253 * you may not use this file except in compliance with the License. 254 * You may obtain a copy of the License at 255 * 256 * http://www.apache.org/licenses/LICENSE-2.0 257 * 258 * Unless required by applicable law or agreed to in writing, software 259 * distributed under the License is distributed on an "AS IS" BASIS, 260 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 261 * See the License for the specific language governing permissions and 262 * limitations under the License. 263 */function k(t){return new Promise(e=>{setTimeout(e,t)})} 264/** 265 * @license 266 * Copyright 2019 Google LLC 267 * 268 * Licensed under the Apache License, Version 2.0 (the "License"); 269 * you may not use this file except in compliance with the License. 270 * You may obtain a copy of the License at 271 * 272 * http://www.apache.org/licenses/LICENSE-2.0 273 * 274 * Unless required by applicable law or agreed to in writing, software 275 * distributed under the License is distributed on an "AS IS" BASIS, 276 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 277 * See the License for the specific language governing permissions and 278 * limitations under the License. 279 */function M(t){const e=btoa(String.fromCharCode(...t));return e.replace(/\+/g,"-").replace(/\//g,"_")} 280/** 281 * @license 282 * Copyright 2019 Google LLC 283 * 284 * Licensed under the Apache License, Version 2.0 (the "License"); 285 * you may not use this file except in compliance with the License. 286 * You may obtain a copy of the License at 287 * 288 * http://www.apache.org/licenses/LICENSE-2.0 289 * 290 * Unless required by applicable law or agreed to in writing, software 291 * distributed under the License is distributed on an "AS IS" BASIS, 292 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 293 * See the License for the specific language governing permissions and 294 * limitations under the License. 295 */const P=/^[cdef][\w-]{21}$/,F="";function A(){try{const t=new Uint8Array(17),e=self.crypto||self.msCrypto;e.getRandomValues(t),t[0]=112+t[0]%16;const n=L(t);return P.test(n)?n:F}catch(t){return F}}function L(t){const e=M(t);return e.substr(0,22)} 296/** 297 * @license 298 * Copyright 2019 Google LLC 299 * 300 * Licensed under the Apache License, Version 2.0 (the "License"); 301 * you may not use this file except in compliance with the License. 302 * You may obtain a copy of the License at 303 * 304 * http://www.apache.org/licenses/LICENSE-2.0 305 * 306 * Unless required by applicable law or agreed to in writing, software 307 * distributed under the License is distributed on an "AS IS" BASIS, 308 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 309 * See the License for the specific language governing permissions and 310 * limitations under the License. 311 */function $(t){return`${t.appName}!${t.appId}`} 312/** 313 * @license 314 * Copyright 2019 Google LLC 315 * 316 * Licensed under the Apache License, Version 2.0 (the "License"); 317 * you may not use this file except in compliance with the License. 318 * You may obtain a copy of the License at 319 * 320 * http://www.apache.org/licenses/LICENSE-2.0 321 * 322 * Unless required by applicable law or agreed to in writing, software 323 * distributed under the License is distributed on an "AS IS" BASIS, 324 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 325 * See the License for the specific language governing permissions and 326 * limitations under the License. 327 */const N=new Map;function j(t,e){const n=$(t);R(n,e),H(n,e)}function R(t,e){const n=N.get(t);if(n)for(const i of n)i(e)}function H(t,e){const n=B();n&&n.postMessage({key:t,fid:e}),x()}let z=null;function B(){return!z&&"BroadcastChannel"in self&&(z=new BroadcastChannel("[Firebase] FID Change"),z.onmessage=t=>{R(t.data.key,t.data.fid)}),z}function x(){0===N.size&&z&&(z.close(),z=null)} 328/** 329 * @license 330 * Copyright 2019 Google LLC 331 * 332 * Licensed under the Apache License, Version 2.0 (the "License"); 333 * you may not use this file except in compliance with the License. 334 * You may obtain a copy of the License at 335 * 336 * http://www.apache.org/licenses/LICENSE-2.0 337 * 338 * Unless required by applicable law or agreed to in writing, software 339 * distributed under the License is distributed on an "AS IS" BASIS, 340 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 341 * See the License for the specific language governing permissions and 342 * limitations under the License. 343 */const K="firebase-installations-database",U=1,q="firebase-installations-store";let V=null;function G(){return V||(V=(0,o.P2)(K,U,{upgrade:(t,e)=>{switch(e){case 0:t.createObjectStore(q)}}})),V}async function W(t,e){const n=$(t),i=await G(),a=i.transaction(q,"readwrite"),s=a.objectStore(q),r=await s.get(n);
343return await s.put(e,n),await a.done,r&&r.fid===e.fid||j(t,e.fid),e}async function J(t){const e=$(t),n=await G(),i=n.transaction(q,"readwrite");await i.objectStore(q).delete(e),await i.done}async function Y(t,e){const n=$(t),i=await G(),a=i.transaction(q,"readwrite"),s=a.objectStore(q),r=await s.get(n),o=e(r);return void 0===o?await s.delete(n):await s.put(o,n),await a.done,!o||r&&r.fid===o.fid||j(t,o.fid),o} 344/** 345 * @license 346 * Copyright 2019 Google LLC 347 * 348 * Licensed under the Apache License, Version 2.0 (the "License"); 349 * you may not use this file except in compliance with the License. 350 * You may obtain a copy of the License at 351 * 352 * http://www.apache.org/licenses/LICENSE-2.0 353 * 354 * Unless required by applicable law or agreed to in writing, software 355 * distributed under the License is distributed on an "AS IS" BASIS, 356 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 357 * See the License for the specific language governing permissions and 358 * limitations under the License. 359 */async function X(t){let e;const n=await Y(t.appConfig,n=>{const i=Q(n),a=Z(t,i);return e=a.registrationPromise,a.installationEntry});return n.fid===F?{installationEntry:await e}:{installationEntry:n,registrationPromise:e}}function Q(t){const e=t||{fid:A(),registrationStatus:0};return it(e)}function Z(t,e){if(0===e.registrationStatus){if(!navigator.onLine){const t=Promise.reject(b.create("app-offline"));return{installationEntry:e,registrationPromise:t}}const n={fid:e.fid,registrationStatus:1,registrationTime:Date.now()},i=tt(t,n);return{installationEntry:n,registrationPromise:i}}return 1===e.registrationStatus?{installationEntry:e,registrationPromise:et(t)}:{installationEntry:e}}async function tt(t,e){try{const n=await O(t,e);return W(t.appConfig,n)}catch(n){throw v(n)&&409===n.customData.serverCode?await J(t.appConfig):await W(t.appConfig,{fid:e.fid,registrationStatus:0}),n}}async function et(t){let e=await nt(t.appConfig);while(1===e.registrationStatus)await k(100),e=await nt(t.appConfig);if(0===e.registrationStatus){const{installationEntry:e,registrationPromise:n}=await X(t);return n||e}return e}function nt(t){return Y(t,t=>{if(!t)throw b.create("installation-not-found");return it(t)})}function it(t){return at(t)?{fid:t.fid,registrationStatus:0}:t}function at(t){return 1===t.registrationStatus&&t.registrationTime+h<Date.now()} 360/** 361 * @license 362 * Copyright 2019 Google LLC 363 * 364 * Licensed under the Apache License, Version 2.0 (the "License"); 365 * you may not use this file except in compliance with the License. 366 * You may obtain a copy of the License at 367 * 368 * http://www.apache.org/licenses/LICENSE-2.0 369 * 370 * Unless required by applicable law or agreed to in writing, software 371 * distributed under the License is distributed on an "AS IS" BASIS, 372 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 373 * See the License for the specific language governing permissions and 374 * limitations under the License. 375 */async function st({appConfig:t,heartbeatServiceProvider:e},n){const i=rt(t,n),a=S(t,n),s=e.getImmediate({optional:!0});if(s){const t=await s.getHeartbeatsHeader();t&&a.append("x-firebase-client",t)}const r={installation:{sdkVersion:u,appId:t.appId}},o={method:"POST",headers:a,body:JSON.stringify(r)},c=await E(()=>fetch(i,o));if(c.ok){const t=await c.json(),e=I(t);return e}throw await _("Generate Auth Token",c)}function rt(t,{fid:e}){return`${C(t)}/${e}/authTokens:generate`} 376/** 377 * @license 378 * Copyright 2019 Google LLC 379 * 380 * Licensed under the Apache License, Version 2.0 (the "License"); 381 * you may not use this file except in compliance with the License. 382 * You may obtain a copy of the License at 383 * 384 * http://www.apache.org/licenses/LICENSE-2.0 385 * 386 * Unless required by applicable law or agreed to in writing, software 387 * distributed under the License is distributed on an "AS IS" BASIS, 388 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 389 * See the License for the specific language governing permissions and 390 * limitations under the License. 391 */async function ot(t,e=!1){let n;const i=await Y(t.appConfig,i=>{if(!ut(i))throw b.create("not-registered");const a=i.authToken;if(!e&&ft(a))return i;if(1===a.requestStatus)return n=ct(t,e),i;{if(!navigator.onLine)throw b.create("app-offline");const e=dt(i);return n=ht(t,e),e}}),a=n?await n:i.authToken;return a}
391async function ct(t,e){let n=await lt(t.appConfig);while(1===n.authToken.requestStatus)await k(100),n=await lt(t.appConfig);const i=n.authToken;return 0===i.requestStatus?ot(t,e):i}function lt(t){return Y(t,t=>{if(!ut(t))throw b.create("not-registered");const e=t.authToken;return pt(e)?Object.assign(Object.assign({},t),{authToken:{requestStatus:0}}):t})}async function ht(t,e){try{const n=await st(t,e),i=Object.assign(Object.assign({},e),{authToken:n});return await W(t.appConfig,i),n}catch(n){if(!v(n)||401!==n.customData.serverCode&&404!==n.customData.serverCode){const n=Object.assign(Object.assign({},e),{authToken:{requestStatus:0}});await W(t.appConfig,n)}else await J(t.appConfig);throw n}}function ut(t){return void 0!==t&&2===t.registrationStatus}function ft(t){return 2===t.requestStatus&&!gt(t)}function gt(t){const e=Date.now();return e<t.creationTime||t.creationTime+t.expiresIn<e+d}function dt(t){const e={requestStatus:1,requestTime:Date.now()};return Object.assign(Object.assign({},t),{authToken:e})}function pt(t){return 1===t.requestStatus&&t.requestTime+h<Date.now()} 392/** 393 * @license 394 * Copyright 2019 Google LLC 395 * 396 * Licensed under the Apache License, Version 2.0 (the "License"); 397 * you may not use this file except in compliance with the License. 398 * You may obtain a copy of the License at 399 * 400 * http://www.apache.org/licenses/LICENSE-2.0 401 * 402 * Unless required by applicable law or agreed to in writing, software 403 * distributed under the License is distributed on an "AS IS" BASIS, 404 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 405 * See the License for the specific language governing permissions and 406 * limitations under the License. 407 */async function mt(t){const e=t,{installationEntry:n,registrationPromise:i}=await X(e);return i?i.catch(console.error):ot(e).catch(console.error),n.fid} 408/** 409 * @license 410 * Copyright 2019 Google LLC 411 * 412 * Licensed under the Apache License, Version 2.0 (the "License"); 413 * you may not use this file except in compliance with the License. 414 * You may obtain a copy of the License at 415 * 416 * http://www.apache.org/licenses/LICENSE-2.0 417 * 418 * Unless required by applicable law or agreed to in writing, software 419 * distributed under the License is distributed on an "AS IS" BASIS, 420 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 421 * See the License for the specific language governing permissions and 422 * limitations under the License. 423 */async function wt(t,e=!1){const n=t;await bt(n);const i=await ot(n,e);return i.token}async function bt(t){const{registrationPromise:e}=await X(t);e&&await e} 424/** 425 * @license 426 * Copyright 2019 Google LLC 427 * 428 * Licensed under the Apache License, Version 2.0 (the "License"); 429 * you may not use this file except in compliance with the License. 430 * You may obtain a copy of the License at 431 * 432 * http://www.apache.org/licenses/LICENSE-2.0 433 * 434 * Unless required by applicable law or agreed to in writing, software 435 * distributed under the License is distributed on an "AS IS" BASIS, 436 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 437 * See the License for the specific language governing permissions and 438 * limitations under the License. 439 */ 440/** 441 * @license 442 * Copyright 2019 Google LLC 443 * 444 * Licensed under the Apache License, Version 2.0 (the "License"); 445 * you may not use this file except in compliance with the License. 446 * You may obtain a copy of the License at 447 * 448 * http://www.apache.org/licenses/LICENSE-2.0 449 * 450 * Unless required by applicable law or agreed to in writing, software 451 * distributed under the License is distributed on an "AS IS" BASIS, 452 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 453 * See the License for the specific language governing permissions and 454 * limitations under the License. 455 */ 456function vt(t){if(!t||!t.options)throw Ct("App Configuration");if(!t.name)throw Ct("App Name");const e=["projectId","apiKey","appId"];for(const n of e)if(!t.options[n])throw Ct(n);return{appName:t.name,projectId:t.options.projectId,apiKey:t.options.apiKey,appId:t.options.appId}}function Ct(t){return b.create("missing-app-config-values",{valueName:t})} 457/** 458 * @license 459 * Copyright 2020 Google LLC 460 * 461 * Licensed under the Apache License, Version 2.0 (the "License");
462 * you may not use this file except in compliance with the License. 463 * You may obtain a copy of the License at 464 * 465 * http://www.apache.org/licenses/LICENSE-2.0 466 * 467 * Unless required by applicable law or agreed to in writing, software 468 * distributed under the License is distributed on an "AS IS" BASIS, 469 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 470 * See the License for the specific language governing permissions and 471 * limitations under the License. 472 */const It="installations",_t="installations-internal",yt=t=>{const e=t.getProvider("app").getImmediate(),n=vt(e),a=(0,i.j6)(e,"heartbeat"),s={app:e,appConfig:n,heartbeatServiceProvider:a,_delete:()=>Promise.resolve()};return s},St=t=>{const e=t.getProvider("app").getImmediate(),n=(0,i.j6)(e,It).getImmediate(),a={getId:()=>mt(n),getToken:t=>wt(n,t)};return a};function Et(){(0,i.om)(new s.uA(It,yt,"PUBLIC")),(0,i.om)(new s.uA(_t,St,"PRIVATE"))}Et(),(0,i.KO)(c,l),(0,i.KO)(c,l,"esm2017");const Tt="@firebase/remote-config",Dt="0.4.5"; 473/** 474 * @license 475 * Copyright 2019 Google LLC 476 * 477 * Licensed under the Apache License, Version 2.0 (the "License"); 478 * you may not use this file except in compliance with the License. 479 * You may obtain a copy of the License at 480 * 481 * http://www.apache.org/licenses/LICENSE-2.0 482 * 483 * Unless required by applicable law or agreed to in writing, software 484 * distributed under the License is distributed on an "AS IS" BASIS, 485 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 486 * See the License for the specific language governing permissions and 487 * limitations under the License. 488 */ 489class Ot{constructor(){this.listeners=[]}addEventListener(t){this.listeners.push(t)}abort(){this.listeners.forEach(t=>t())}} 490/** 491 * @license 492 * Copyright 2020 Google LLC 493 * 494 * Licensed under the Apache License, Version 2.0 (the "License"); 495 * you may not use this file except in compliance with the License. 496 * You may obtain a copy of the License at 497 * 498 * http://www.apache.org/licenses/LICENSE-2.0 499 * 500 * Unless required by applicable law or agreed to in writing, software 501 * distributed under the License is distributed on an "AS IS" BASIS, 502 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 503 * See the License for the specific language governing permissions and 504 * limitations under the License. 505 */const kt="remote-config",Mt={["registration-window"]:"Undefined window object. This SDK only supports usage in a browser environment.",["registration-project-id"]:"Undefined project identifier. Check Firebase app initialization.",["registration-api-key"]:"Undefined API key. Check Firebase app initialization.",["registration-app-id"]:"Undefined app identifier. Check Firebase app initialization.",["storage-open"]:"Error thrown when opening storage. Original error: {$originalErrorMessage}.",["storage-get"]:"Error thrown when reading from storage. Original error: {$originalErrorMessage}.",["storage-set"]:"Error thrown when writing to storage. Original error: {$originalErrorMessage}.",["storage-delete"]:"Error thrown when deleting from storage. Original error: {$originalErrorMessage}.",["fetch-client-network"]:"Fetch client failed to connect to a network. Check Internet connection. Original error: {$originalErrorMessage}.",["fetch-timeout"]:'The config fetch request timed out. Configure timeout using "fetchTimeoutMillis" SDK setting.',["fetch-throttle"]:'The config fetch request timed out while in an exponential backoff state. Configure timeout using "fetchTimeoutMillis" SDK setting. Unix timestamp in milliseconds when fetch request throttling ends: {$throttleEndTimeMillis}.',["fetch-client-parse"]:"Fetch client could not parse response. Original error: {$originalErrorMessage}.",["fetch-status"]:"Fetch server returned an HTTP error status. HTTP status: {$httpStatus}.",["indexed-db-unavailable"]:"Indexed DB is not supported by current browser"},Pt=new a.FA("remoteconfig","Remote Config",Mt); 506/** 507 * @license 508 * Copyright 2019 Google LLC 509 * 510 * Licensed under the Apache License, Version 2.0 (the "License");
511 * you may not use this file except in compliance with the License. 512 * You may obtain a copy of the License at 513 * 514 * http://www.apache.org/licenses/LICENSE-2.0 515 * 516 * Unless required by applicable law or agreed to in writing, software 517 * distributed under the License is distributed on an "AS IS" BASIS, 518 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 519 * See the License for the specific language governing permissions and 520 * limitations under the License. 521 */function Ft(t,e){return t instanceof a.g&&-1!==t.code.indexOf(e)} 522/** 523 * @license 524 * Copyright 2019 Google LLC 525 * 526 * Licensed under the Apache License, Version 2.0 (the "License"); 527 * you may not use this file except in compliance with the License. 528 * You may obtain a copy of the License at 529 * 530 * http://www.apache.org/licenses/LICENSE-2.0 531 * 532 * Unless required by applicable law or agreed to in writing, software 533 * distributed under the License is distributed on an "AS IS" BASIS, 534 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 535 * See the License for the specific language governing permissions and 536 * limitations under the License. 537 */const At=!1,Lt="",$t=0,Nt=["1","true","t","yes","y","on"];class jt{constructor(t,e=Lt){this._source=t,this._value=e}asString(){return this._value}asBoolean(){return"static"===this._source?At:Nt.indexOf(this._value.toLowerCase())>=0}asNumber(){if("static"===this._source)return $t;let t=Number(this._value);return isNaN(t)&&(t=$t),t}getSource(){return this._source}} 538/** 539 * @license 540 * Copyright 2020 Google LLC 541 * 542 * Licensed under the Apache License, Version 2.0 (the "License"); 543 * you may not use this file except in compliance with the License. 544 * You may obtain a copy of the License at 545 * 546 * http://www.apache.org/licenses/LICENSE-2.0 547 * 548 * Unless required by applicable law or agreed to in writing, software 549 * distributed under the License is distributed on an "AS IS" BASIS, 550 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 551 * See the License for the specific language governing permissions and 552 * limitations under the License. 553 */function Rt(t=(0,i.Sx)()){t=(0,a.Ku)(t);const e=(0,i.j6)(t,kt);return e.getImmediate()}async function Ht(t){const e=(0,a.Ku)(t),[n,i]=await Promise.all([e._storage.getLastSuccessfulFetchResponse(),e._storage.getActiveConfigEtag()]);return!!(n&&n.config&&n.eTag&&n.eTag!==i)&&(await Promise.all([e._storageCache.setActiveConfig(n.config),e._storage.setActiveConfigEtag(n.eTag)]),!0)}function zt(t){const e=(0,a.Ku)(t);return e._initializePromise||(e._initializePromise=e._storageCache.loadFromStorage().then(()=>{e._isInitializationComplete=!0})),e._initializePromise}async function Bt(t){const e=(0,a.Ku)(t),n=new Ot;setTimeout(async()=>{n.abort()},e.settings.fetchTimeoutMillis);try{await e._client.fetch({cacheMaxAgeMillis:e.settings.minimumFetchIntervalMillis,signal:n}),await e._storageCache.setLastFetchStatus("success")}catch(i){const t=Ft(i,"fetch-throttle")?"throttle":"failure";throw await e._storageCache.setLastFetchStatus(t),i}}function xt(t,e){const n=(0,a.Ku)(t);n._isInitializationComplete||n._logger.debug(`A value was requested for key "${e}" before SDK initialization completed. Await on ensureInitialized if the intent was to get a previously activated value.`);const i=n._storageCache.getActiveConfig();return i&&void 0!==i[e]?new jt("remote",i[e]):n.defaultConfig&&void 0!==n.defaultConfig[e]?new jt("default",String(n.defaultConfig[e])):(n._logger.debug(`Returning static value for key "${e}". Define a default or remote value if this is unintentional.`),new jt("static"))} 554/** 555 * @license 556 * Copyright 2019 Google LLC 557 * 558 * Licensed under the Apache License, Version 2.0 (the "License"); 559 * you may not use this file except in compliance with the License. 560 * You may obtain a copy of the License at 561 * 562 * http://www.apache.org/licenses/LICENSE-2.0 563 * 564 * Unless required by applicable law or agreed to in writing, software 565 * distributed under the License is distributed on an "AS IS" BASIS, 566 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 567 * See the License for the specific language governing permissions and 568 * limitations under the License. 569 */ 570class Kt{constructor(t,e,n,i){this.client=t,this.storage=e,this.storageCache=n,this.logger=i}
570isCachedDataFresh(t,e){if(!e)return this.logger.debug("Config fetch cache check. Cache unpopulated."),!1;const n=Date.now()-e,i=n<=t;return this.logger.debug(`Config fetch cache check. Cache age millis: ${n}. Cache max age millis (minimumFetchIntervalMillis setting): ${t}. Is cache hit: ${i}.`),i}async fetch(t){const[e,n]=await Promise.all([this.storage.getLastSuccessfulFetchTimestampMillis(),this.storage.getLastSuccessfulFetchResponse()]);if(n&&this.isCachedDataFresh(t.cacheMaxAgeMillis,e))return n;t.eTag=n&&n.eTag;const i=await this.client.fetch(t),a=[this.storageCache.setLastSuccessfulFetchTimestampMillis(Date.now())];return 200===i.status&&a.push(this.storage.setLastSuccessfulFetchResponse(i)),await Promise.all(a),i}} 571/** 572 * @license 573 * Copyright 2019 Google LLC 574 * 575 * Licensed under the Apache License, Version 2.0 (the "License"); 576 * you may not use this file except in compliance with the License. 577 * You may obtain a copy of the License at 578 * 579 * http://www.apache.org/licenses/LICENSE-2.0 580 * 581 * Unless required by applicable law or agreed to in writing, software 582 * distributed under the License is distributed on an "AS IS" BASIS, 583 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 584 * See the License for the specific language governing permissions and 585 * limitations under the License. 586 */function Ut(t=navigator){return t.languages&&t.languages[0]||t.language} 587/** 588 * @license 589 * Copyright 2019 Google LLC 590 * 591 * Licensed under the Apache License, Version 2.0 (the "License"); 592 * you may not use this file except in compliance with the License. 593 * You may obtain a copy of the License at 594 * 595 * http://www.apache.org/licenses/LICENSE-2.0 596 * 597 * Unless required by applicable law or agreed to in writing, software 598 * distributed under the License is distributed on an "AS IS" BASIS, 599 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 600 * See the License for the specific language governing permissions and 601 * limitations under the License. 602 */class qt{constructor(t,e,n,i,a,s){this.firebaseInstallations=t,this.sdkVersion=e,this.namespace=n,this.projectId=i,this.apiKey=a,this.appId=s}async fetch(t){const[e,n]=await Promise.all([this.firebaseInstallations.getId(),this.firebaseInstallations.getToken()]),i=window.FIREBASE_REMOTE_CONFIG_URL_BASE||"https://firebaseremoteconfig.googleapis.com",a=`${i}/v1/projects/${this.projectId}/namespaces/${this.namespace}:fetch?key=${this.apiKey}`,s={"Content-Type":"application/json","Content-Encoding":"gzip","If-None-Match":t.eTag||"*"},r={sdk_version:this.sdkVersion,app_instance_id:e,app_instance_id_token:n,app_id:this.appId,language_code:Ut()},o={method:"POST",headers:s,body:JSON.stringify(r)},c=fetch(a,o),l=new Promise((e,n)=>{t.signal.addEventListener(()=>{const t=new Error("The operation was aborted.");t.name="AbortError",n(t)})});let h;try{await Promise.race([c,l]),h=await c}catch(p){let t="fetch-client-network";throw"AbortError"===(null===p||void 0===p?void 0:p.name)&&(t="fetch-timeout"),Pt.create(t,{originalErrorMessage:null===p||void 0===p?void 0:p.message})}let u=h.status;const f=h.headers.get("ETag")||void 0;let g,d;if(200===h.status){let t;try{t=await h.json()}catch(p){throw Pt.create("fetch-client-parse",{originalErrorMessage:null===p||void 0===p?void 0:p.message})}g=t["entries"],d=t["state"]}if("INSTANCE_STATE_UNSPECIFIED"===d?u=500:"NO_CHANGE"===d?u=304:"NO_TEMPLATE"!==d&&"EMPTY_CONFIG"!==d||(g={}),304!==u&&200!==u)throw Pt.create("fetch-status",{httpStatus:u});return{status:u,eTag:f,config:g}}} 603/** 604 * @license 605 * Copyright 2019 Google LLC 606 * 607 * Licensed under the Apache License, Version 2.0 (the "License"); 608 * you may not use this file except in compliance with the License. 609 * You may obtain a copy of the License at 610 * 611 * http://www.apache.org/licenses/LICENSE-2.0 612 * 613 * Unless required by applicable law or agreed to in writing, software 614 * distributed under the License is distributed on an "AS IS" BASIS, 615 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 616 * See the License for the specific language governing permissions and 617 * limitations under the License. 618 */function Vt(t,e){return new Promise((n,i)=>{const a=Math.max(e-Date.now(),0),s=setTimeout(n,a);t.addEventListener(()=>{clearTimeout(s),i(Pt.create("fetch-throttle",{throttleEndTimeMillis:e}))})})}function Gt(t){if(!(t instanceof a.g)||!t.customData)return!1;const e=Number(t.customData["httpStatus"]);return 429===e||500===e||503===e||504===e}class Wt{constructor(t,e){this.client=t,this.storage=e}async fetch(t){const e=await this.storage.getThrottleMetadata()||{backoffCount:0,throttleEndTimeMillis:Date.now()};return this.attemptFetch(t,e)}async attemptFetch(t,{throttleEndTimeMillis:e,backoffCount:n}){await Vt(t.signal,e);try{const e=await this.client.fetch(t);return await this.storage.deleteThrottleMetadata(),e}catch(i){if(!Gt(i))throw i;const e={throttleEndTimeMillis:Date.now()+(0,a.p9)(n),backoffCount:n+1};return await this.storage.setThrottleMetadata(e),this.attemptFetch(t,e)}}} 619/** 620 * @license 621 * Copyright 2019 Google LLC 622 * 623 * Licensed under the Apache License, Version 2.0 (the "License");
624 * you may not use this file except in compliance with the License. 625 * You may obtain a copy of the License at 626 * 627 * http://www.apache.org/licenses/LICENSE-2.0 628 * 629 * Unless required by applicable law or agreed to in writing, software 630 * distributed under the License is distributed on an "AS IS" BASIS, 631 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 632 * See the License for the specific language governing permissions and 633 * limitations under the License. 634 */const Jt=6e4,Yt=432e5;class Xt{constructor(t,e,n,i,a){this.app=t,this._client=e,this._storageCache=n,this._storage=i,this._logger=a,this._isInitializationComplete=!1,this.settings={fetchTimeoutMillis:Jt,minimumFetchIntervalMillis:Yt},this.defaultConfig={}}get fetchTimeMillis(){return this._storageCache.getLastSuccessfulFetchTimestampMillis()||-1}get lastFetchStatus(){return this._storageCache.getLastFetchStatus()||"no-fetch-yet"}} 635/** 636 * @license 637 * Copyright 2019 Google LLC 638 * 639 * Licensed under the Apache License, Version 2.0 (the "License"); 640 * you may not use this file except in compliance with the License. 641 * You may obtain a copy of the License at 642 * 643 * http://www.apache.org/licenses/LICENSE-2.0 644 * 645 * Unless required by applicable law or agreed to in writing, software 646 * distributed under the License is distributed on an "AS IS" BASIS, 647 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 648 * See the License for the specific language governing permissions and 649 * limitations under the License. 650 */function Qt(t,e){const n=t.target.error||void 0;return Pt.create(e,{originalErrorMessage:n&&(null===n||void 0===n?void 0:n.message)})}const Zt="app_namespace_store",te="firebase_remote_config",ee=1;function ne(){return new Promise((t,e)=>{try{const n=indexedDB.open(te,ee);n.onerror=t=>{e(Qt(t,"storage-open"))},n.onsuccess=e=>{t(e.target.result)},n.onupgradeneeded=t=>{const e=t.target.result;switch(t.oldVersion){case 0:e.createObjectStore(Zt,{keyPath:"compositeKey"})}}}catch(n){e(Pt.create("storage-open",{originalErrorMessage:null===n||void 0===n?void 0:n.message}))}})}class ie{constructor(t,e,n,i=ne()){this.appId=t,this.appName=e,this.namespace=n,this.openDbPromise=i}getLastFetchStatus(){return this.get("last_fetch_status")}setLastFetchStatus(t){return this.set("last_fetch_status",t)}getLastSuccessfulFetchTimestampMillis(){return this.get("last_successful_fetch_timestamp_millis")}setLastSuccessfulFetchTimestampMillis(t){return this.set("last_successful_fetch_timestamp_millis",t)}getLastSuccessfulFetchResponse(){return this.get("last_successful_fetch_response")}setLastSuccessfulFetchResponse(t){return this.set("last_successful_fetch_response",t)}getActiveConfig(){return this.get("active_config")}setActiveConfig(t){return this.set("active_config",t)}getActiveConfigEtag(){return this.get("active_config_etag")}setActiveConfigEtag(t){return this.set("active_config_etag",t)}getThrottleMetadata(){return this.get("throttle_metadata")}setThrottleMetadata(t){return this.set("throttle_metadata",t)}deleteThrottleMetadata(){return this.delete("throttle_metadata")}async get(t){const e=await this.openDbPromise;return new Promise((n,i)=>{const a=e.transaction([Zt],"readonly"),s=a.objectStore(Zt),r=this.createCompositeKey(t);try{const t=s.get(r);t.onerror=t=>{i(Qt(t,"storage-get"))},t.onsuccess=t=>{const e=t.target.result;n(e?e.value:void 0)}}catch(o){i(Pt.create("storage-get",{originalErrorMessage:null===o||void 0===o?void 0:o.message}))}})}async set(t,e){const n=await this.openDbPromise;return new Promise((i,a)=>{const s=n.transaction([Zt],"readwrite"),r=s.objectStore(Zt),o=this.createCompositeKey(t);try{const t=r.put({compositeKey:o,value:e});t.onerror=t=>{a(Qt(t,"storage-set"))},t.onsuccess=()=>{i()}}catch(c){a(Pt.create("storage-set",{originalErrorMessage:null===c||void 0===c?void 0:c.message}))}})}async delete(t){const e=await this.openDbPromise;return new Promise((n,i)=>{const a=e.transaction([Zt],"readwrite"),s=a.objectStore(Zt),r=this.createCompositeKey(t);try{const t=s.delete(r);t.onerror=t=>{i(Qt(t,"storage-delete"))},t.onsuccess=()=>{n()}}catch(o){i(Pt.create("storage-delete",{originalErrorMessage:null===o||void 0===o?void 0:o.message}))}})}createCompositeKey(t){return[this.appId,this.appName,this.namespace,t].join()}} 651/** 652 * @license 653 * Copyright 2019 Google LLC 654 * 655 * Licensed under the Apache License, Version 2.0 (the "License");
656 * you may not use this file except in compliance with the License. 657 * You may obtain a copy of the License at 658 * 659 * http://www.apache.org/licenses/LICENSE-2.0 660 * 661 * Unless required by applicable law or agreed to in writing, software 662 * distributed under the License is distributed on an "AS IS" BASIS, 663 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 664 * See the License for the specific language governing permissions and 665 * limitations under the License. 666 */class ae{constructor(t){this.storage=t}getLastFetchStatus(){return this.lastFetchStatus}getLastSuccessfulFetchTimestampMillis(){return this.lastSuccessfulFetchTimestampMillis}getActiveConfig(){return this.activeConfig}async loadFromStorage(){const t=this.storage.getLastFetchStatus(),e=this.storage.getLastSuccessfulFetchTimestampMillis(),n=this.storage.getActiveConfig(),i=await t;i&&(this.lastFetchStatus=i);const a=await e;a&&(this.lastSuccessfulFetchTimestampMillis=a);const s=await n;s&&(this.activeConfig=s)}setLastFetchStatus(t){return this.lastFetchStatus=t,this.storage.setLastFetchStatus(t)}setLastSuccessfulFetchTimestampMillis(t){return this.lastSuccessfulFetchTimestampMillis=t,this.storage.setLastSuccessfulFetchTimestampMillis(t)}setActiveConfig(t){return this.activeConfig=t,this.storage.setActiveConfig(t)}} 667/** 668 * @license 669 * Copyright 2020 Google LLC 670 * 671 * Licensed under the Apache License, Version 2.0 (the "License"); 672 * you may not use this file except in compliance with the License. 673 * You may obtain a copy of the License at 674 * 675 * http://www.apache.org/licenses/LICENSE-2.0 676 * 677 * Unless required by applicable law or agreed to in writing, software 678 * distributed under the License is distributed on an "AS IS" BASIS, 679 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 680 * See the License for the specific language governing permissions and 681 * limitations under the License. 682 */function se(){function t(t,{instanceIdentifier:e}){const n=t.getProvider("app").getImmediate(),i=t.getProvider("installations-internal").getImmediate();if("undefined"===typeof window)throw Pt.create("registration-window");if(!(0,a.zW)())throw Pt.create("indexed-db-unavailable");const{projectId:s,apiKey:o,appId:c}=n.options;if(!s)throw Pt.create("registration-project-id");if(!o)throw Pt.create("registration-api-key");if(!c)throw Pt.create("registration-app-id");e=e||"firebase";const l=new ie(c,n.name,e),h=new ae(l),u=new r.Vy(Tt);u.logLevel=r.$b.ERROR;const f=new qt(i,"10.9.0",e,s,o,c),g=new Wt(f,l),d=new Kt(g,l,h,u),p=new Xt(n,d,h,l,u);return zt(p),p}(0,i.om)(new s.uA(kt,t,"PUBLIC").setMultipleInstances(!0)),(0,i.KO)(Tt,Dt),(0,i.KO)(Tt,Dt,"esm2017")} 683/** 684 * @license 685 * Copyright 2020 Google LLC 686 * 687 * Licensed under the Apache License, Version 2.0 (the "License"); 688 * you may not use this file except in compliance with the License. 689 * You may obtain a copy of the License at 690 * 691 * http://www.apache.org/licenses/LICENSE-2.0 692 * 693 * Unless required by applicable law or agreed to in writing, software 694 * distributed under the License is distributed on an "AS IS" BASIS, 695 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 696 * See the License for the specific language governing permissions and 697 * limitations under the License. 698 */async function re(t){return t=(0,a.Ku)(t),await Bt(t),Ht(t)}se()}}]); 699//# sourceMappingURL=vendor-firebase-6bc75065.22f1071e.js.map
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.