diff --git a/dist/bundle.js b/dist/bundle.js index 439f5c0..e0af2d2 100644 --- a/dist/bundle.js +++ b/dist/bundle.js @@ -1,2 +1,2 @@ /*! For license information please see bundle.js.LICENSE.txt */ -(()=>{"use strict";var e={};function t(){document.getElementById("loading").style.display="none"}function n(){document.getElementById("loading").style.display="block"}e.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}();const s=e=>{document.getElementById("verifyUPDATE").href=e},r=e=>Date.parse(e)-198e5;function i(e,t){var n=36e5,s=864e5,r=2592e6,i=31536e6,o=e-t;return o<6e4?Math.round(o/1e3)+" seconds ago":o>6|192,t[n++]=63&r|128):55296==(64512&r)&&s+1>18|240,t[n++]=r>>12&63|128,t[n++]=r>>6&63|128,t[n++]=63&r|128):(t[n++]=r>>12|224,t[n++]=r>>6&63|128,t[n++]=63&r|128)}return t},c={byteToCharMap_:null,charToByteMap_:null,byteToCharMapWebSafe_:null,charToByteMapWebSafe_:null,ENCODED_VALS_BASE:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789",get ENCODED_VALS(){return this.ENCODED_VALS_BASE+"+/="},get ENCODED_VALS_WEBSAFE(){return this.ENCODED_VALS_BASE+"-_."},HAS_NATIVE_SUPPORT:"function"==typeof atob,encodeByteArray(e,t){if(!Array.isArray(e))throw Error("encodeByteArray takes an array as a parameter");this.init_();const n=t?this.byteToCharMapWebSafe_:this.byteToCharMap_,s=[];for(let t=0;t>2,l=(3&r)<<4|o>>4;let h=(15&o)<<2|c>>6,d=63&c;a||(d=64,i||(h=64)),s.push(n[u],n[l],n[h],n[d])}return s.join("")},encodeString(e,t){return this.HAS_NATIVE_SUPPORT&&!t?btoa(e):this.encodeByteArray(a(e),t)},decodeString(e,t){return this.HAS_NATIVE_SUPPORT&&!t?atob(e):function(e){const t=[];let n=0,s=0;for(;n191&&r<224){const i=e[n++];t[s++]=String.fromCharCode((31&r)<<6|63&i)}else if(r>239&&r<365){const i=((7&r)<<18|(63&e[n++])<<12|(63&e[n++])<<6|63&e[n++])-65536;t[s++]=String.fromCharCode(55296+(i>>10)),t[s++]=String.fromCharCode(56320+(1023&i))}else{const i=e[n++],o=e[n++];t[s++]=String.fromCharCode((15&r)<<12|(63&i)<<6|63&o)}}return t.join("")}(this.decodeStringToByteArray(e,t))},decodeStringToByteArray(e,t){this.init_();const n=t?this.charToByteMapWebSafe_:this.charToByteMap_,s=[];for(let t=0;t>4;if(s.push(c),64!==o){const e=i<<4&240|o>>2;if(s.push(e),64!==a){const e=o<<6&192|a;s.push(e)}}}return s},init_(){if(!this.byteToCharMap_){this.byteToCharMap_={},this.charToByteMap_={},this.byteToCharMapWebSafe_={},this.charToByteMapWebSafe_={};for(let e=0;e=this.ENCODED_VALS_BASE.length&&(this.charToByteMap_[this.ENCODED_VALS_WEBSAFE.charAt(e)]=e,this.charToByteMapWebSafe_[this.ENCODED_VALS.charAt(e)]=e)}}},u=function(e){return function(e){const t=a(e);return c.encodeByteArray(t,!0)}(e).replace(/\./g,"")},l=function(e){try{return c.decodeString(e,!0)}catch(e){console.error("base64Decode failed: ",e)}return null};function h(){return"undefined"!=typeof navigator&&"string"==typeof navigator.userAgent?navigator.userAgent:""}const d=()=>{try{return function(){if("undefined"!=typeof self)return self;if("undefined"!=typeof window)return window;if(void 0!==e.g)return e.g;throw new Error("Unable to locate global object.")}().__FIREBASE_DEFAULTS__||(()=>{if("undefined"==typeof process||void 0===process.env)return;const e=process.env.__FIREBASE_DEFAULTS__;return e?JSON.parse(e):void 0})()||(()=>{if("undefined"==typeof document)return;let e;try{e=document.cookie.match(/__FIREBASE_DEFAULTS__=([^;]+)/)}catch(e){return}const t=e&&l(e[1]);return t&&JSON.parse(t)})()}catch(e){return void console.info(`Unable to get __FIREBASE_DEFAULTS__ due to: ${e}`)}},f=e=>{var t,n;return null===(n=null===(t=d())||void 0===t?void 0:t.emulatorHosts)||void 0===n?void 0:n[e]},p=e=>{const t=f(e);if(!t)return;const n=t.lastIndexOf(":");if(n<=0||n+1===t.length)throw new Error(`Invalid host ${t} with no separate hostname and port!`);const s=parseInt(t.substring(n+1),10);return"["===t[0]?[t.substring(1,n-1),s]:[t.substring(0,n),s]},m=e=>{var t;return null===(t=d())||void 0===t?void 0:t[`_${e}`]};class g{constructor(){this.reject=()=>{},this.resolve=()=>{},this.promise=new Promise(((e,t)=>{this.resolve=e,this.reject=t}))}wrapCallback(e){return(t,n)=>{t?this.reject(t):this.resolve(n),"function"==typeof e&&(this.promise.catch((()=>{})),1===e.length?e(t):e(t,n))}}}function y(e,t){if(e.uid)throw new Error('The "uid" field is no longer supported by mockUserToken. Please use "sub" instead for Firebase Auth User ID.');const n=t||"demo-project",s=e.iat||0,r=e.sub||e.user_id;if(!r)throw new Error("mockUserToken must contain 'sub' or 'user_id' field!");const i=Object.assign({iss:`https://securetoken.google.com/${n}`,aud:n,iat:s,exp:s+3600,auth_time:s,sub:r,user_id:r,firebase:{sign_in_provider:"custom",identities:{}}},e);return[u(JSON.stringify({alg:"none",type:"JWT"})),u(JSON.stringify(i)),""].join(".")}class v extends Error{constructor(e,t,n){super(t),this.code=e,this.customData=n,this.name="FirebaseError",Object.setPrototypeOf(this,v.prototype),Error.captureStackTrace&&Error.captureStackTrace(this,w.prototype.create)}}class w{constructor(e,t,n){this.service=e,this.serviceName=t,this.errors=n}create(e,...t){const n=t[0]||{},s=`${this.service}/${e}`,r=this.errors[e],i=r?function(e,t){return e.replace(_,((e,n)=>{const s=t[n];return null!=s?String(s):`<${n}?>`}))}(r,n):"Error",o=`${this.serviceName}: ${i} (${s}).`;return new v(s,o,n)}}const _=/\{\$([^}]+)}/g;function b(e,t){if(e===t)return!0;const n=Object.keys(e),s=Object.keys(t);for(const r of n){if(!s.includes(r))return!1;const n=e[r],i=t[r];if(T(n)&&T(i)){if(!b(n,i))return!1}else if(n!==i)return!1}for(const e of s)if(!n.includes(e))return!1;return!0}function T(e){return null!==e&&"object"==typeof e}function E(e){const t=[];for(const[n,s]of Object.entries(e))Array.isArray(s)?s.forEach((e=>{t.push(encodeURIComponent(n)+"="+encodeURIComponent(e))})):t.push(encodeURIComponent(n)+"="+encodeURIComponent(s));return t.length?"&"+t.join("&"):""}function I(e){const t={};return e.replace(/^\?/,"").split("&").forEach((e=>{if(e){const[n,s]=e.split("=");t[decodeURIComponent(n)]=decodeURIComponent(s)}})),t}function k(e){const t=e.indexOf("?");if(!t)return"";const n=e.indexOf("#",t);return e.substring(t,n>0?n:void 0)}class S{constructor(e,t){this.observers=[],this.unsubscribes=[],this.observerCount=0,this.task=Promise.resolve(),this.finalized=!1,this.onNoObservers=t,this.task.then((()=>{e(this)})).catch((e=>{this.error(e)}))}next(e){this.forEachObserver((t=>{t.next(e)}))}error(e){this.forEachObserver((t=>{t.error(e)})),this.close(e)}complete(){this.forEachObserver((e=>{e.complete()})),this.close()}subscribe(e,t,n){let s;if(void 0===e&&void 0===t&&void 0===n)throw new Error("Missing Observer.");s=function(e,t){if("object"!=typeof e||null===e)return!1;for(const t of["next","error","complete"])if(t in e&&"function"==typeof e[t])return!0;return!1}(e)?e:{next:e,error:t,complete:n},void 0===s.next&&(s.next=C),void 0===s.error&&(s.error=C),void 0===s.complete&&(s.complete=C);const r=this.unsubscribeOne.bind(this,this.observers.length);return this.finalized&&this.task.then((()=>{try{this.finalError?s.error(this.finalError):s.complete()}catch(e){}})),this.observers.push(s),r}unsubscribeOne(e){void 0!==this.observers&&void 0!==this.observers[e]&&(delete this.observers[e],this.observerCount-=1,0===this.observerCount&&void 0!==this.onNoObservers&&this.onNoObservers(this))}forEachObserver(e){if(!this.finalized)for(let t=0;t{if(void 0!==this.observers&&void 0!==this.observers[e])try{t(this.observers[e])}catch(e){"undefined"!=typeof console&&console.error&&console.error(e)}}))}close(e){this.finalized||(this.finalized=!0,void 0!==e&&(this.finalError=e),this.task.then((()=>{this.observers=void 0,this.onNoObservers=void 0})))}}function C(){}function A(e){return e&&e._delegate?e._delegate:e}class R{constructor(e,t,n){this.name=e,this.instanceFactory=t,this.type=n,this.multipleInstances=!1,this.serviceProps={},this.instantiationMode="LAZY",this.onInstanceCreated=null}setInstantiationMode(e){return this.instantiationMode=e,this}setMultipleInstances(e){return this.multipleInstances=e,this}setServiceProps(e){return this.serviceProps=e,this}setInstanceCreatedCallback(e){return this.onInstanceCreated=e,this}}const D="[DEFAULT]";class N{constructor(e,t){this.name=e,this.container=t,this.component=null,this.instances=new Map,this.instancesDeferred=new Map,this.instancesOptions=new Map,this.onInitCallbacks=new Map}get(e){const t=this.normalizeInstanceIdentifier(e);if(!this.instancesDeferred.has(t)){const e=new g;if(this.instancesDeferred.set(t,e),this.isInitialized(t)||this.shouldAutoInitialize())try{const n=this.getOrInitializeService({instanceIdentifier:t});n&&e.resolve(n)}catch(e){}}return this.instancesDeferred.get(t).promise}getImmediate(e){var t;const n=this.normalizeInstanceIdentifier(null==e?void 0:e.identifier),s=null!==(t=null==e?void 0:e.optional)&&void 0!==t&&t;if(!this.isInitialized(n)&&!this.shouldAutoInitialize()){if(s)return null;throw Error(`Service ${this.name} is not available`)}try{return this.getOrInitializeService({instanceIdentifier:n})}catch(e){if(s)return null;throw e}}getComponent(){return this.component}setComponent(e){if(e.name!==this.name)throw Error(`Mismatching Component ${e.name} for Provider ${this.name}.`);if(this.component)throw Error(`Component for ${this.name} has already been provided`);if(this.component=e,this.shouldAutoInitialize()){if(function(e){return"EAGER"===e.instantiationMode}(e))try{this.getOrInitializeService({instanceIdentifier:D})}catch(e){}for(const[e,t]of this.instancesDeferred.entries()){const n=this.normalizeInstanceIdentifier(e);try{const e=this.getOrInitializeService({instanceIdentifier:n});t.resolve(e)}catch(e){}}}}clearInstance(e="[DEFAULT]"){this.instancesDeferred.delete(e),this.instancesOptions.delete(e),this.instances.delete(e)}async delete(){const e=Array.from(this.instances.values());await Promise.all([...e.filter((e=>"INTERNAL"in e)).map((e=>e.INTERNAL.delete())),...e.filter((e=>"_delete"in e)).map((e=>e._delete()))])}isComponentSet(){return null!=this.component}isInitialized(e="[DEFAULT]"){return this.instances.has(e)}getOptions(e="[DEFAULT]"){return this.instancesOptions.get(e)||{}}initialize(e={}){const{options:t={}}=e,n=this.normalizeInstanceIdentifier(e.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 s=this.getOrInitializeService({instanceIdentifier:n,options:t});for(const[e,t]of this.instancesDeferred.entries())n===this.normalizeInstanceIdentifier(e)&&t.resolve(s);return s}onInit(e,t){var n;const s=this.normalizeInstanceIdentifier(t),r=null!==(n=this.onInitCallbacks.get(s))&&void 0!==n?n:new Set;r.add(e),this.onInitCallbacks.set(s,r);const i=this.instances.get(s);return i&&e(i,s),()=>{r.delete(e)}}invokeOnInitCallbacks(e,t){const n=this.onInitCallbacks.get(t);if(n)for(const s of n)try{s(e,t)}catch(e){}}getOrInitializeService({instanceIdentifier:e,options:t={}}){let n=this.instances.get(e);if(!n&&this.component&&(n=this.component.instanceFactory(this.container,{instanceIdentifier:(s=e,s===D?void 0:s),options:t}),this.instances.set(e,n),this.instancesOptions.set(e,t),this.invokeOnInitCallbacks(n,e),this.component.onInstanceCreated))try{this.component.onInstanceCreated(this.container,e,n)}catch(e){}var s;return n||null}normalizeInstanceIdentifier(e="[DEFAULT]"){return this.component?this.component.multipleInstances?e:D:e}shouldAutoInitialize(){return!!this.component&&"EXPLICIT"!==this.component.instantiationMode}}class O{constructor(e){this.name=e,this.providers=new Map}addComponent(e){const t=this.getProvider(e.name);if(t.isComponentSet())throw new Error(`Component ${e.name} has already been registered with ${this.name}`);t.setComponent(e)}addOrOverwriteComponent(e){this.getProvider(e.name).isComponentSet()&&this.providers.delete(e.name),this.addComponent(e)}getProvider(e){if(this.providers.has(e))return this.providers.get(e);const t=new N(e,this);return this.providers.set(e,t),t}getProviders(){return Array.from(this.providers.values())}}const L=[];var x,P;(P=x||(x={}))[P.DEBUG=0]="DEBUG",P[P.VERBOSE=1]="VERBOSE",P[P.INFO=2]="INFO",P[P.WARN=3]="WARN",P[P.ERROR=4]="ERROR",P[P.SILENT=5]="SILENT";const M={debug:x.DEBUG,verbose:x.VERBOSE,info:x.INFO,warn:x.WARN,error:x.ERROR,silent:x.SILENT},U=x.INFO,F={[x.DEBUG]:"log",[x.VERBOSE]:"log",[x.INFO]:"info",[x.WARN]:"warn",[x.ERROR]:"error"},V=(e,t,...n)=>{if(t(e[t]=n,!0),has:(e,t)=>e instanceof IDBTransaction&&("done"===t||"store"===t)||t in e};function X(e){return"function"==typeof e?(t=e)!==IDBDatabase.prototype.transaction||"objectStoreNames"in IDBTransaction.prototype?(q||(q=[IDBCursor.prototype.advance,IDBCursor.prototype.continue,IDBCursor.prototype.continuePrimaryKey])).includes(t)?function(...e){return t.apply(J(this),e),Y(z.get(this))}:function(...e){return Y(t.apply(J(this),e))}:function(e,...n){const s=t.call(J(this),e,...n);return K.set(s,e.sort?e.sort():[e]),Y(s)}:(e instanceof IDBTransaction&&function(e){if(H.has(e))return;const t=new Promise(((t,n)=>{const s=()=>{e.removeEventListener("complete",r),e.removeEventListener("error",i),e.removeEventListener("abort",i)},r=()=>{t(),s()},i=()=>{n(e.error||new DOMException("AbortError","AbortError")),s()};e.addEventListener("complete",r),e.addEventListener("error",i),e.addEventListener("abort",i)}));H.set(e,t)}(e),n=e,(j||(j=[IDBDatabase,IDBObjectStore,IDBIndex,IDBCursor,IDBTransaction])).some((e=>n instanceof e))?new Proxy(e,Q):e);var t,n}function Y(e){if(e instanceof IDBRequest)return function(e){const t=new Promise(((t,n)=>{const s=()=>{e.removeEventListener("success",r),e.removeEventListener("error",i)},r=()=>{t(Y(e.result)),s()},i=()=>{n(e.error),s()};e.addEventListener("success",r),e.addEventListener("error",i)}));return t.then((t=>{t instanceof IDBCursor&&z.set(t,e)})).catch((()=>{})),W.set(t,e),t}(e);if(G.has(e))return G.get(e);const t=X(e);return t!==e&&(G.set(e,t),W.set(t,e)),t}const J=e=>W.get(e),Z=["get","getKey","getAll","getAllKeys","count"],ee=["put","add","delete","clear"],te=new Map;function ne(e,t){if(!(e instanceof IDBDatabase)||t in e||"string"!=typeof t)return;if(te.get(t))return te.get(t);const n=t.replace(/FromIndex$/,""),s=t!==n,r=ee.includes(n);if(!(n in(s?IDBIndex:IDBObjectStore).prototype)||!r&&!Z.includes(n))return;const i=async function(e,...t){const i=this.transaction(e,r?"readwrite":"readonly");let o=i.store;return s&&(o=o.index(t.shift())),(await Promise.all([o[n](...t),r&&i.done]))[0]};return te.set(t,i),i}var se;se=Q,Q={...se,get:(e,t,n)=>ne(e,t)||se.get(e,t,n),has:(e,t)=>!!ne(e,t)||se.has(e,t)};class re{constructor(e){this.container=e}getPlatformInfoString(){return this.container.getProviders().map((e=>{if(function(e){const t=e.getComponent();return"VERSION"===(null==t?void 0:t.type)}(e)){const t=e.getImmediate();return`${t.library}/${t.version}`}return null})).filter((e=>e)).join(" ")}}const ie="@firebase/app",oe="0.8.4",ae=new B("@firebase/app"),ce="[DEFAULT]",ue={[ie]:"fire-core","@firebase/app-compat":"fire-core-compat","@firebase/analytics":"fire-analytics","@firebase/analytics-compat":"fire-analytics-compat","@firebase/app-check":"fire-app-check","@firebase/app-check-compat":"fire-app-check-compat","@firebase/auth":"fire-auth","@firebase/auth-compat":"fire-auth-compat","@firebase/database":"fire-rtdb","@firebase/database-compat":"fire-rtdb-compat","@firebase/functions":"fire-fn","@firebase/functions-compat":"fire-fn-compat","@firebase/installations":"fire-iid","@firebase/installations-compat":"fire-iid-compat","@firebase/messaging":"fire-fcm","@firebase/messaging-compat":"fire-fcm-compat","@firebase/performance":"fire-perf","@firebase/performance-compat":"fire-perf-compat","@firebase/remote-config":"fire-rc","@firebase/remote-config-compat":"fire-rc-compat","@firebase/storage":"fire-gcs","@firebase/storage-compat":"fire-gcs-compat","@firebase/firestore":"fire-fst","@firebase/firestore-compat":"fire-fst-compat","fire-js":"fire-js",firebase:"fire-js-all"},le=new Map,he=new Map;function de(e,t){try{e.container.addComponent(t)}catch(n){ae.debug(`Component ${t.name} failed to register with FirebaseApp ${e.name}`,n)}}function fe(e){const t=e.name;if(he.has(t))return ae.debug(`There were multiple attempts to register component ${t}.`),!1;he.set(t,e);for(const t of le.values())de(t,e);return!0}function pe(e,t){const n=e.container.getProvider("heartbeat").getImmediate({optional:!0});return n&&n.triggerHeartbeat(),e.container.getProvider(t)}const me=new w("app","Firebase",{"no-app":"No Firebase App '{$appName}' has been created - call Firebase App.initializeApp()","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}."});class ge{constructor(e,t,n){this._isDeleted=!1,this._options=Object.assign({},e),this._config=Object.assign({},t),this._name=t.name,this._automaticDataCollectionEnabled=t.automaticDataCollectionEnabled,this._container=n,this.container.addComponent(new R("app",(()=>this),"PUBLIC"))}get automaticDataCollectionEnabled(){return this.checkDestroyed(),this._automaticDataCollectionEnabled}set automaticDataCollectionEnabled(e){this.checkDestroyed(),this._automaticDataCollectionEnabled=e}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(e){this._isDeleted=e}checkDestroyed(){if(this.isDeleted)throw me.create("app-deleted",{appName:this._name})}}const ye="9.14.0";function ve(e,t={}){let n=e;"object"!=typeof t&&(t={name:t});const s=Object.assign({name:ce,automaticDataCollectionEnabled:!1},t),r=s.name;if("string"!=typeof r||!r)throw me.create("bad-app-name",{appName:String(r)});if(n||(n=(()=>{var e;return null===(e=d())||void 0===e?void 0:e.config})()),!n)throw me.create("no-options");const i=le.get(r);if(i){if(b(n,i.options)&&b(s,i.config))return i;throw me.create("duplicate-app",{appName:r})}const o=new O(r);for(const e of he.values())o.addComponent(e);const a=new ge(n,s,o);return le.set(r,a),a}function we(e="[DEFAULT]"){const t=le.get(e);if(!t&&e===ce)return ve();if(!t)throw me.create("no-app",{appName:e});return t}function _e(e,t,n){var s;let r=null!==(s=ue[e])&&void 0!==s?s:e;n&&(r+=`-${n}`);const i=r.match(/\s|\//),o=t.match(/\s|\//);if(i||o){const e=[`Unable to register library "${r}" with version "${t}":`];return i&&e.push(`library name "${r}" contains illegal characters (whitespace or "/")`),i&&o&&e.push("and"),o&&e.push(`version name "${t}" contains illegal characters (whitespace or "/")`),void ae.warn(e.join(" "))}fe(new R(`${r}-version`,(()=>({library:r,version:t})),"VERSION"))}const be="firebase-heartbeat-store";let Te=null;function Ee(){return Te||(Te=function(e,t,{blocked:n,upgrade:s,blocking:r,terminated:i}={}){const o=indexedDB.open(e,t),a=Y(o);return s&&o.addEventListener("upgradeneeded",(e=>{s(Y(o.result),e.oldVersion,e.newVersion,Y(o.transaction))})),n&&o.addEventListener("blocked",(()=>n())),a.then((e=>{i&&e.addEventListener("close",(()=>i())),r&&e.addEventListener("versionchange",(()=>r()))})).catch((()=>{})),a}("firebase-heartbeat-database",1,{upgrade:(e,t)=>{0===t&&e.createObjectStore(be)}}).catch((e=>{throw me.create("idb-open",{originalErrorMessage:e.message})}))),Te}async function Ie(e,t){var n;try{const n=(await Ee()).transaction(be,"readwrite"),s=n.objectStore(be);return await s.put(t,ke(e)),n.done}catch(e){if(e instanceof v)ae.warn(e.message);else{const t=me.create("idb-set",{originalErrorMessage:null===(n=e)||void 0===n?void 0:n.message});ae.warn(t.message)}}}function ke(e){return`${e.name}!${e.options.appId}`}class Se{constructor(e){this.container=e,this._heartbeatsCache=null;const t=this.container.getProvider("app").getImmediate();this._storage=new Ae(t),this._heartbeatsCachePromise=this._storage.read().then((e=>(this._heartbeatsCache=e,e)))}async triggerHeartbeat(){const e=this.container.getProvider("platform-logger").getImmediate().getPlatformInfoString(),t=Ce();if(null===this._heartbeatsCache&&(this._heartbeatsCache=await this._heartbeatsCachePromise),this._heartbeatsCache.lastSentHeartbeatDate!==t&&!this._heartbeatsCache.heartbeats.some((e=>e.date===t)))return this._heartbeatsCache.heartbeats.push({date:t,agent:e}),this._heartbeatsCache.heartbeats=this._heartbeatsCache.heartbeats.filter((e=>{const t=new Date(e.date).valueOf();return Date.now()-t<=2592e6})),this._storage.overwrite(this._heartbeatsCache)}async getHeartbeatsHeader(){if(null===this._heartbeatsCache&&await this._heartbeatsCachePromise,null===this._heartbeatsCache||0===this._heartbeatsCache.heartbeats.length)return"";const e=Ce(),{heartbeatsToSend:t,unsentEntries:n}=function(e,t=1024){const n=[];let s=e.slice();for(const r of e){const e=n.find((e=>e.agent===r.agent));if(e){if(e.dates.push(r.date),Re(n)>t){e.dates.pop();break}}else if(n.push({agent:r.agent,dates:[r.date]}),Re(n)>t){n.pop();break}s=s.slice(1)}return{heartbeatsToSend:n,unsentEntries:s}}(this._heartbeatsCache.heartbeats),s=u(JSON.stringify({version:2,heartbeats:t}));return this._heartbeatsCache.lastSentHeartbeatDate=e,n.length>0?(this._heartbeatsCache.heartbeats=n,await this._storage.overwrite(this._heartbeatsCache)):(this._heartbeatsCache.heartbeats=[],this._storage.overwrite(this._heartbeatsCache)),s}}function Ce(){return(new Date).toISOString().substring(0,10)}class Ae{constructor(e){this.app=e,this._canUseIndexedDBPromise=this.runIndexedDBEnvironmentCheck()}async runIndexedDBEnvironmentCheck(){return"object"==typeof indexedDB&&new Promise(((e,t)=>{try{let n=!0;const s="validate-browser-context-for-indexeddb-analytics-module",r=self.indexedDB.open(s);r.onsuccess=()=>{r.result.close(),n||self.indexedDB.deleteDatabase(s),e(!0)},r.onupgradeneeded=()=>{n=!1},r.onerror=()=>{var e;t((null===(e=r.error)||void 0===e?void 0:e.message)||"")}}catch(e){t(e)}})).then((()=>!0)).catch((()=>!1))}async read(){if(await this._canUseIndexedDBPromise){const e=await async function(e){var t;try{return(await Ee()).transaction(be).objectStore(be).get(ke(e))}catch(e){if(e instanceof v)ae.warn(e.message);else{const n=me.create("idb-get",{originalErrorMessage:null===(t=e)||void 0===t?void 0:t.message});ae.warn(n.message)}}}(this.app);return e||{heartbeats:[]}}return{heartbeats:[]}}async overwrite(e){var t;if(await this._canUseIndexedDBPromise){const n=await this.read();return Ie(this.app,{lastSentHeartbeatDate:null!==(t=e.lastSentHeartbeatDate)&&void 0!==t?t:n.lastSentHeartbeatDate,heartbeats:e.heartbeats})}}async add(e){var t;if(await this._canUseIndexedDBPromise){const n=await this.read();return Ie(this.app,{lastSentHeartbeatDate:null!==(t=e.lastSentHeartbeatDate)&&void 0!==t?t:n.lastSentHeartbeatDate,heartbeats:[...n.heartbeats,...e.heartbeats]})}}}function Re(e){return u(JSON.stringify({version:2,heartbeats:e})).length}fe(new R("platform-logger",(e=>new re(e)),"PRIVATE")),fe(new R("heartbeat",(e=>new Se(e)),"PRIVATE")),_e(ie,oe,""),_e(ie,oe,"esm2017"),_e("fire-js","");var De,Ne="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:void 0!==e.g?e.g:"undefined"!=typeof self?self:{},Oe={},Le=Le||{},xe=Ne||self;function Pe(){}function Me(e){var t=typeof e;return"array"==(t="object"!=t?t:e?Array.isArray(e)?"array":t:"null")||"object"==t&&"number"==typeof e.length}function Ue(e){var t=typeof e;return"object"==t&&null!=e||"function"==t}var Fe="closure_uid_"+(1e9*Math.random()>>>0),Ve=0;function Be(e,t,n){return e.call.apply(e.bind,arguments)}function $e(e,t,n){if(!e)throw Error();if(2t?1:0}function et(){var e=xe.navigator;return e&&(e=e.userAgent)?e:""}function tt(e){return-1!=et().indexOf(e)}function nt(e){return nt[" "](e),e}nt[" "]=Pe;var st,rt,it=tt("Opera"),ot=tt("Trident")||tt("MSIE"),at=tt("Edge"),ct=at||ot,ut=tt("Gecko")&&!(-1!=et().toLowerCase().indexOf("webkit")&&!tt("Edge"))&&!(tt("Trident")||tt("MSIE"))&&!tt("Edge"),lt=-1!=et().toLowerCase().indexOf("webkit")&&!tt("Edge");function ht(){var e=xe.document;return e?e.documentMode:void 0}e:{var dt="",ft=(rt=et(),ut?/rv:([^\);]+)(\)|;)/.exec(rt):at?/Edge\/([\d\.]+)/.exec(rt):ot?/\b(?:MSIE|rv)[: ]([^\);]+)(\)|;)/.exec(rt):lt?/WebKit\/(\S+)/.exec(rt):it?/(?:Version)[ \/]?(\S+)/.exec(rt):void 0);if(ft&&(dt=ft?ft[1]:""),ot){var pt=ht();if(null!=pt&&pt>parseFloat(dt)){st=String(pt);break e}}st=dt}var mt,gt={};function yt(){return function(e){var t=gt;return Object.prototype.hasOwnProperty.call(t,9)?t[9]:t[9]=function(){let e=0;const t=Je(String(st)).split("."),n=Je("9").split("."),s=Math.max(t.length,n.length);for(let o=0;0==e&&o>>0);function qt(e){return"function"==typeof e?e:(e[jt]||(e[jt]=function(t){return e.handleEvent(t)}),e[jt])}function zt(){He.call(this),this.i=new Rt(this),this.P=this,this.I=null}function Ht(e,t){var n,s=e.I;if(s)for(n=[];s;s=s.I)n.push(s);if(e=e.P,s=t.type||t,"string"==typeof t)t=new Qe(t,e);else if(t instanceof Qe)t.target=t.target||e;else{var r=t;At(t=new Qe(s,e),r)}if(r=!0,n)for(var i=n.length-1;0<=i;i--){var o=t.g=n[i];r=Kt(o,s,!0,t)&&r}if(r=Kt(o=t.g=e,s,!0,t)&&r,r=Kt(o,s,!1,t)&&r,n)for(i=0;inew Yt),(e=>e.reset()));class Yt{constructor(){this.next=this.g=this.h=null}set(e,t){this.h=e,this.g=t,this.next=null}reset(){this.next=this.g=this.h=null}}function Jt(e){xe.setTimeout((()=>{throw e}),0)}function Zt(e,t){Qt||function(){var e=xe.Promise.resolve(void 0);Qt=function(){e.then(nn)}}(),en||(Qt(),en=!0),tn.add(e,t)}var en=!1,tn=new class{constructor(){this.h=this.g=null}add(e,t){const n=Xt.get();n.set(e,t),this.h?this.h.next=n:this.g=n,this.h=n}};function nn(){for(var e;e=Wt();){try{e.h.call(e.g)}catch(e){Jt(e)}var t=Xt;t.j(e),100>t.h&&(t.h++,e.next=t.g,t.g=e)}en=!1}function sn(e,t){zt.call(this),this.h=e||1,this.g=t||xe,this.j=je(this.lb,this),this.l=Date.now()}function rn(e){e.ca=!1,e.R&&(e.g.clearTimeout(e.R),e.R=null)}function on(e,t,n){if("function"==typeof e)n&&(e=je(e,n));else{if(!e||"function"!=typeof e.handleEvent)throw Error("Invalid listener argument");e=je(e.handleEvent,e)}return 2147483647{e.g=null,e.i&&(e.i=!1,an(e))}),e.j);const t=e.h;e.h=null,e.m.apply(null,t)}ze(sn,zt),(De=sn.prototype).ca=!1,De.R=null,De.lb=function(){if(this.ca){var e=Date.now()-this.l;0s.length)){var r=s[1];if(Array.isArray(r)&&!(1>r.length)){var i=r[0];if("noop"!=i&&"stop"!=i&&"close"!=i)for(var o=1;ot.length?Fn:(t=t.substr(s,n),e.C=s+n,t))}function zn(e){e.V=Date.now()+e.O,Hn(e,e.O)}function Hn(e,t){if(null!=e.B)throw Error("WatchDog timer not null");e.B=En(je(e.gb,e),t)}function Kn(e){e.B&&(xe.clearTimeout(e.B),e.B=null)}function Gn(e){0==e.l.G||e.I||hr(e.l,e)}function Wn(e){Kn(e);var t=e.L;t&&"function"==typeof t.na&&t.na(),e.L=null,rn(e.T),dn(e.S),e.g&&(t=e.g,e.g=null,t.abort(),t.na())}function Qn(e,t){try{var n=e.l;if(0!=n.G&&(n.g==e||Es(n.h,e)))if(!e.J&&Es(n.h,e)&&3==n.G){try{var s=n.Fa.g.parse(t)}catch(e){s=null}if(Array.isArray(s)&&3==s.length){var r=s;if(0==r[0]){e:if(!n.u){if(n.g){if(!(n.g.F+3e3r[2]&&n.L&&0==n.A&&!n.v&&(n.v=En(je(n.cb,n),6e3));if(1>=Ts(n.h)&&n.ja){try{n.ja()}catch(e){}n.ja=void 0}}else fr(n,11)}else if((e.J||n.g==e)&&lr(n),!Ye(t))for(r=n.Fa.g.parse(t),t=0;tl)&&(3!=l||ct||this.g&&(this.h.h||this.g.fa()||Ws(this.g)))){this.I||4!=l||7==t||wn(),Kn(this);var n=this.g.aa();this.Y=n;t:if($n(this)){var s=Ws(this.g);e="";var r=s.length,i=4==Gs(this.g);if(!this.h.i){if("undefined"==typeof TextDecoder){Wn(this),Gn(this);var o="";break t}this.h.i=new xe.TextDecoder}for(t=0;tt)throw Error("Bad port number "+t);e.m=t}else e.m=null}function ns(e,t,n){t instanceof fs?(e.i=t,function(e,t){t&&!e.j&&(ps(e),e.i=null,e.g.forEach((function(e,t){var n=t.toLowerCase();t!=n&&(ms(this,t),ys(this,n,e))}),e)),e.j=t}(e.i,e.h)):(n||(t=os(t,hs)),e.i=new fs(t,e.h))}function ss(e,t,n){e.i.set(t,n)}function rs(e){return ss(e,"zx",Math.floor(2147483648*Math.random()).toString(36)+Math.abs(Math.floor(2147483648*Math.random())^Date.now()).toString(36)),e}function is(e,t){return e?t?decodeURI(e.replace(/%25/g,"%2525")):decodeURIComponent(e):""}function os(e,t,n){return"string"==typeof e?(e=encodeURI(e).replace(t,as),n&&(e=e.replace(/%25([0-9a-fA-F]{2})/g,"%$1")),e):null}function as(e){return"%"+((e=e.charCodeAt(0))>>4&15).toString(16)+(15&e).toString(16)}Jn.prototype.toString=function(){var e=[],t=this.j;t&&e.push(os(t,cs,!0),":");var n=this.g;return(n||"file"==t)&&(e.push("//"),(t=this.s)&&e.push(os(t,cs,!0),"@"),e.push(encodeURIComponent(String(n)).replace(/%25([0-9a-fA-F]{2})/g,"%$1")),null!=(n=this.m)&&e.push(":",String(n))),(n=this.l)&&(this.g&&"/"!=n.charAt(0)&&e.push("/"),e.push(os(n,"/"==n.charAt(0)?ls:us,!0))),(n=this.i.toString())&&e.push("?",n),(n=this.o)&&e.push("#",os(n,ds)),e.join("")};var cs=/[#\/\?@]/g,us=/[#\?:]/g,ls=/[#\?]/g,hs=/[#\?@]/g,ds=/#/g;function fs(e,t){this.h=this.g=null,this.i=e||null,this.j=!!t}function ps(e){e.g||(e.g=new Map,e.h=0,e.i&&function(e,t){if(e){e=e.split("&");for(var n=0;n=e.j}function Ts(e){return e.h?1:e.g?e.g.size:0}function Es(e,t){return e.h?e.h==t:!!e.g&&e.g.has(t)}function Is(e,t){e.g?e.g.add(t):e.h=t}function ks(e,t){e.h&&e.h==t?e.h=null:e.g&&e.g.has(t)&&e.g.delete(t)}function Ss(e){if(null!=e.h)return e.i.concat(e.h.D);if(null!=e.g&&0!==e.g.size){let t=e.i;for(const n of e.g.values())t=t.concat(n.D);return t}return Ge(e.i)}function Cs(){}function As(){this.g=new Cs}function Rs(e,t,n){const s=n||"";try{Xn(e,(function(e,n){let r=e;Ue(e)&&(r=Gt(e)),t.push(s+n+"="+encodeURIComponent(r))}))}catch(e){throw t.push(s+"type="+encodeURIComponent("_badmap")),e}}function Ds(e,t,n,s,r){try{t.onload=null,t.onerror=null,t.onabort=null,t.ontimeout=null,r(s)}catch(e){}}function Ns(e){this.l=e.ac||null,this.j=e.jb||!1}function Os(e,t){zt.call(this),this.D=e,this.u=t,this.m=void 0,this.readyState=Ls,this.status=0,this.responseType=this.responseText=this.response=this.statusText="",this.onreadystatechange=null,this.v=new Headers,this.h=null,this.C="GET",this.B="",this.g=!1,this.A=this.j=this.l=null}ws.prototype.cancel=function(){if(this.i=Ss(this),this.h)this.h.cancel(),this.h=null;else if(this.g&&0!==this.g.size){for(const e of this.g.values())e.cancel();this.g.clear()}},Cs.prototype.stringify=function(e){return xe.JSON.stringify(e,void 0)},Cs.prototype.parse=function(e){return xe.JSON.parse(e,void 0)},ze(Ns,Sn),Ns.prototype.g=function(){return new Os(this.l,this.j)},Ns.prototype.i=function(e){return function(){return e}}({}),ze(Os,zt);var Ls=0;function xs(e){e.j.read().then(e.Ta.bind(e)).catch(e.ga.bind(e))}function Ps(e){e.readyState=4,e.l=null,e.j=null,e.A=null,Ms(e)}function Ms(e){e.onreadystatechange&&e.onreadystatechange.call(e)}(De=Os.prototype).open=function(e,t){if(this.readyState!=Ls)throw this.abort(),Error("Error reopening a connection");this.C=e,this.B=t,this.readyState=1,Ms(this)},De.send=function(e){if(1!=this.readyState)throw this.abort(),Error("need to call open() first. ");this.g=!0;const t={headers:this.v,method:this.C,credentials:this.m,cache:void 0};e&&(t.body=e),(this.D||xe).fetch(new Request(this.B,t)).then(this.Wa.bind(this),this.ga.bind(this))},De.abort=function(){this.response=this.responseText="",this.v=new Headers,this.status=0,this.j&&this.j.cancel("Request was aborted.").catch((()=>{})),1<=this.readyState&&this.g&&4!=this.readyState&&(this.g=!1,Ps(this)),this.readyState=Ls},De.Wa=function(e){if(this.g&&(this.l=e,this.h||(this.status=this.l.status,this.statusText=this.l.statusText,this.h=e.headers,this.readyState=2,Ms(this)),this.g&&(this.readyState=3,Ms(this),this.g)))if("arraybuffer"===this.responseType)e.arrayBuffer().then(this.Ua.bind(this),this.ga.bind(this));else if(void 0!==xe.ReadableStream&&"body"in e){if(this.j=e.body.getReader(),this.u){if(this.responseType)throw Error('responseType must be empty for "streamBinaryChunks" mode responses.');this.response=[]}else this.response=this.responseText="",this.A=new TextDecoder;xs(this)}else e.text().then(this.Va.bind(this),this.ga.bind(this))},De.Ta=function(e){if(this.g){if(this.u&&e.value)this.response.push(e.value);else if(!this.u){var t=e.value?e.value:new Uint8Array(0);(t=this.A.decode(t,{stream:!e.done}))&&(this.response=this.responseText+=t)}e.done?Ps(this):Ms(this),3==this.readyState&&xs(this)}},De.Va=function(e){this.g&&(this.response=this.responseText=e,Ps(this))},De.Ua=function(e){this.g&&(this.response=e,Ps(this))},De.ga=function(){this.g&&Ps(this)},De.setRequestHeader=function(e,t){this.v.append(e,t)},De.getResponseHeader=function(e){return this.h&&this.h.get(e.toLowerCase())||""},De.getAllResponseHeaders=function(){if(!this.h)return"";const e=[],t=this.h.entries();for(var n=t.next();!n.done;)n=n.value,e.push(n[0]+": "+n[1]),n=t.next();return e.join("\r\n")},Object.defineProperty(Os.prototype,"withCredentials",{get:function(){return"include"===this.m},set:function(e){this.m=e?"include":"same-origin"}});var Us=xe.JSON.parse;function Fs(e){zt.call(this),this.headers=new Map,this.u=e||null,this.h=!1,this.C=this.g=null,this.H="",this.m=0,this.j="",this.l=this.F=this.v=this.D=!1,this.B=0,this.A=null,this.J=Vs,this.K=this.L=!1}ze(Fs,zt);var Vs="",Bs=/^https?$/i,$s=["POST","PUT"];function js(e,t){e.h=!1,e.g&&(e.l=!0,e.g.abort(),e.l=!1),e.j=t,e.m=5,qs(e),Hs(e)}function qs(e){e.D||(e.D=!0,Ht(e,"complete"),Ht(e,"error"))}function zs(e){if(e.h&&void 0!==Le&&(!e.C[1]||4!=Gs(e)||2!=e.aa()))if(e.v&&4==Gs(e))on(e.Ha,0,e);else if(Ht(e,"readystatechange"),4==Gs(e)){e.h=!1;try{const a=e.aa();e:switch(a){case 200:case 201:case 202:case 204:case 206:case 304:case 1223:var t=!0;break e;default:t=!1}var n;if(!(n=t)){var s;if(s=0===a){var r=String(e.H).match(Yn)[1]||null;if(!r&&xe.self&&xe.self.location){var i=xe.self.location.protocol;r=i.substr(0,i.length-1)}s=!Bs.test(r?r.toLowerCase():"")}n=s}if(n)Ht(e,"complete"),Ht(e,"success");else{e.m=6;try{var o=2n)t=Math.max(0,r[o].h-100),i=!1;else try{Rs(a,e,"req"+n+"_")}catch(e){s&&s(a)}}if(i){s=e.join("&");break e}}}return e=e.i.splice(0,n),t.D=e,s}function or(e){e.g||e.u||(e.Z=1,Zt(e.Ia,e),e.A=0)}function ar(e){return!(e.g||e.u||3<=e.A||(e.Z++,e.u=En(je(e.Ia,e),dr(e,e.A)),e.A++,0))}function cr(e){null!=e.B&&(xe.clearTimeout(e.B),e.B=null)}function ur(e){e.g=new xn(e,e.j,"rpc",e.Z),null===e.o&&(e.g.H=e.s),e.g.N=0;var t=Zn(e.sa);ss(t,"RID","rpc"),ss(t,"SID",e.I),ss(t,"CI",e.L?"0":"1"),ss(t,"AID",e.T),ss(t,"TYPE","xmlhttp"),rr(e,t),e.o&&e.s&&Xs(t,e.o,e.s),e.J&&e.g.setTimeout(e.J);var n=e.g;e=e.ka,n.K=1,n.v=rs(Zn(t)),n.s=null,n.P=!0,Bn(n,e)}function lr(e){null!=e.v&&(xe.clearTimeout(e.v),e.v=null)}function hr(e,t){var n=null;if(e.g==t){lr(e),cr(e),e.g=null;var s=2}else{if(!Es(e.h,t))return;n=t.D,ks(e.h,t),s=1}if(0!=e.G)if(e.pa=t.Y,t.i)if(1==s){n=t.s?t.s.length:0,t=Date.now()-t.F;var r=e.C;Ht(s=yn(),new Tn(s,n)),nr(e)}else or(e);else if(3==(r=t.o)||0==r&&0=e.h.j-(e.m?1:0)||(e.m?(e.i=t.D.concat(e.i),0):1==e.G||2==e.G||e.C>=(e.Za?0:e.$a)||(e.m=En(je(e.Ja,e,t),dr(e,e.C)),e.C++,0)))}(e,t)||2==s&&ar(e)))switch(n&&0"content-type"==e.toLowerCase())),r=xe.FormData&&e instanceof xe.FormData,!(0<=Ke($s,t))||s||r||n.set("Content-Type","application/x-www-form-urlencoded;charset=utf-8");for(const[e,t]of n)this.g.setRequestHeader(e,t);this.J&&(this.g.responseType=this.J),"withCredentials"in this.g&&this.g.withCredentials!==this.L&&(this.g.withCredentials=this.L);try{Ks(this),0=this.P)){var e=2*this.P;this.j.info("BP detection timer enabled: "+e),this.B=En(je(this.eb,this),e)}},De.eb=function(){this.B&&(this.B=null,this.j.info("BP detection timeout reached."),this.j.info("Buffering proxy detected and switch to long-polling!"),this.L=!1,this.K=!0,bn(10),er(this),ur(this))},De.cb=function(){null!=this.v&&(this.v=null,er(this),ar(this),bn(19))},De.kb=function(e){e?(this.j.info("Successfully pinged google.com"),bn(2)):(this.j.info("Failed to ping google.com"),bn(1))},(De=yr.prototype).xa=function(){},De.wa=function(){},De.va=function(){},De.ua=function(){},De.Ra=function(){},vr.prototype.g=function(e,t){return new wr(e,t)},ze(wr,zt),wr.prototype.m=function(){this.g.l=this.j,this.A&&(this.g.H=!0);var e=this.g,t=this.l,n=this.h||void 0;bn(0),e.V=t,e.ia=n||{},e.L=e.Y,e.F=mr(e,null,e.V),nr(e)},wr.prototype.close=function(){Zs(this.g)},wr.prototype.u=function(e){var t=this.g;if("string"==typeof e){var n={};n.__data__=e,e=n}else this.v&&((n={}).__data__=Gt(e),e=n);t.i.push(new class{constructor(e,t){this.h=e,this.g=t}}(t.ab++,e)),3==t.G&&nr(t)},wr.prototype.M=function(){this.g.l=null,delete this.j,Zs(this.g),delete this.g,wr.X.M.call(this)},ze(_r,Nn),ze(br,On),ze(Tr,yr),Tr.prototype.xa=function(){Ht(this.g,"a")},Tr.prototype.wa=function(e){Ht(this.g,new _r(e))},Tr.prototype.va=function(e){Ht(this.g,new br)},Tr.prototype.ua=function(){Ht(this.g,"b")},vr.prototype.createWebChannel=vr.prototype.g,wr.prototype.send=wr.prototype.u,wr.prototype.open=wr.prototype.m,wr.prototype.close=wr.prototype.close,In.NO_ERROR=0,In.TIMEOUT=8,In.HTTP_ERROR=6,kn.COMPLETE="complete",An.EventType=Dn,Dn.OPEN="a",Dn.CLOSE="b",Dn.ERROR="c",Dn.MESSAGE="d",zt.prototype.listen=zt.prototype.N,Fs.prototype.listenOnce=Fs.prototype.O,Fs.prototype.getLastError=Fs.prototype.Oa,Fs.prototype.getLastErrorCode=Fs.prototype.Ea,Fs.prototype.getStatus=Fs.prototype.aa,Fs.prototype.getResponseJson=Fs.prototype.Sa,Fs.prototype.getResponseText=Fs.prototype.fa,Fs.prototype.send=Fs.prototype.da,Fs.prototype.setWithCredentials=Fs.prototype.Ka;var Er=Oe.createWebChannelTransport=function(){return new vr},Ir=Oe.getStatEventTarget=function(){return yn()},kr=Oe.ErrorCode=In,Sr=Oe.EventType=kn,Cr=Oe.Event=mn,Ar=Oe.Stat={sb:0,vb:1,wb:2,Pb:3,Ub:4,Rb:5,Sb:6,Qb:7,Ob:8,Tb:9,PROXY:10,NOPROXY:11,Mb:12,Ib:13,Jb:14,Hb:15,Kb:16,Lb:17,ob:18,nb:19,pb:20},Rr=Oe.FetchXmlHttpFactory=Ns,Dr=Oe.WebChannel=An,Nr=Oe.XhrIo=Fs;const Or="@firebase/firestore";class Lr{constructor(e){this.uid=e}isAuthenticated(){return null!=this.uid}toKey(){return this.isAuthenticated()?"uid:"+this.uid:"anonymous-user"}isEqual(e){return e.uid===this.uid}}Lr.UNAUTHENTICATED=new Lr(null),Lr.GOOGLE_CREDENTIALS=new Lr("google-credentials-uid"),Lr.FIRST_PARTY=new Lr("first-party-uid"),Lr.MOCK_USER=new Lr("mock-user");let xr="9.14.0";const Pr=new B("@firebase/firestore");function Mr(){return Pr.logLevel}function Ur(e,...t){if(Pr.logLevel<=x.DEBUG){const n=t.map(Br);Pr.debug(`Firestore (${xr}): ${e}`,...n)}}function Fr(e,...t){if(Pr.logLevel<=x.ERROR){const n=t.map(Br);Pr.error(`Firestore (${xr}): ${e}`,...n)}}function Vr(e,...t){if(Pr.logLevel<=x.WARN){const n=t.map(Br);Pr.warn(`Firestore (${xr}): ${e}`,...n)}}function Br(e){if("string"==typeof e)return e;try{return t=e,JSON.stringify(t)}catch(t){return e}var t}function $r(e="Unexpected state"){const t=`FIRESTORE (${xr}) INTERNAL ASSERTION FAILED: `+e;throw Fr(t),new Error(t)}function jr(e,t){e||$r()}function qr(e,t){return e}const zr={OK:"ok",CANCELLED:"cancelled",UNKNOWN:"unknown",INVALID_ARGUMENT:"invalid-argument",DEADLINE_EXCEEDED:"deadline-exceeded",NOT_FOUND:"not-found",ALREADY_EXISTS:"already-exists",PERMISSION_DENIED:"permission-denied",UNAUTHENTICATED:"unauthenticated",RESOURCE_EXHAUSTED:"resource-exhausted",FAILED_PRECONDITION:"failed-precondition",ABORTED:"aborted",OUT_OF_RANGE:"out-of-range",UNIMPLEMENTED:"unimplemented",INTERNAL:"internal",UNAVAILABLE:"unavailable",DATA_LOSS:"data-loss"};class Hr extends v{constructor(e,t){super(e,t),this.code=e,this.message=t,this.toString=()=>`${this.name}: [code=${this.code}]: ${this.message}`}}class Kr{constructor(){this.promise=new Promise(((e,t)=>{this.resolve=e,this.reject=t}))}}class Gr{constructor(e,t){this.user=t,this.type="OAuth",this.headers=new Map,this.headers.set("Authorization",`Bearer ${e}`)}}class Wr{getToken(){return Promise.resolve(null)}invalidateToken(){}start(e,t){e.enqueueRetryable((()=>t(Lr.UNAUTHENTICATED)))}shutdown(){}}class Qr{constructor(e){this.token=e,this.changeListener=null}getToken(){return Promise.resolve(this.token)}invalidateToken(){}start(e,t){this.changeListener=t,e.enqueueRetryable((()=>t(this.token.user)))}shutdown(){this.changeListener=null}}class Xr{constructor(e){this.t=e,this.currentUser=Lr.UNAUTHENTICATED,this.i=0,this.forceRefresh=!1,this.auth=null}start(e,t){let n=this.i;const s=e=>this.i!==n?(n=this.i,t(e)):Promise.resolve();let r=new Kr;this.o=()=>{this.i++,this.currentUser=this.u(),r.resolve(),r=new Kr,e.enqueueRetryable((()=>s(this.currentUser)))};const i=()=>{const t=r;e.enqueueRetryable((async()=>{await t.promise,await s(this.currentUser)}))},o=e=>{Ur("FirebaseAuthCredentialsProvider","Auth detected"),this.auth=e,this.auth.addAuthTokenListener(this.o),i()};this.t.onInit((e=>o(e))),setTimeout((()=>{if(!this.auth){const e=this.t.getImmediate({optional:!0});e?o(e):(Ur("FirebaseAuthCredentialsProvider","Auth not yet detected"),r.resolve(),r=new Kr)}}),0),i()}getToken(){const e=this.i,t=this.forceRefresh;return this.forceRefresh=!1,this.auth?this.auth.getToken(t).then((t=>this.i!==e?(Ur("FirebaseAuthCredentialsProvider","getToken aborted due to token change."),this.getToken()):t?(jr("string"==typeof t.accessToken),new Gr(t.accessToken,this.currentUser)):null)):Promise.resolve(null)}invalidateToken(){this.forceRefresh=!0}shutdown(){this.auth&&this.auth.removeAuthTokenListener(this.o)}u(){const e=this.auth&&this.auth.getUid();return jr(null===e||"string"==typeof e),new Lr(e)}}class Yr{constructor(e,t,n,s){this.h=e,this.l=t,this.m=n,this.g=s,this.type="FirstParty",this.user=Lr.FIRST_PARTY,this.p=new Map}I(){return this.g?this.g():(jr(!("object"!=typeof this.h||null===this.h||!this.h.auth||!this.h.auth.getAuthHeaderValueForFirstParty)),this.h.auth.getAuthHeaderValueForFirstParty([]))}get headers(){this.p.set("X-Goog-AuthUser",this.l);const e=this.I();return e&&this.p.set("Authorization",e),this.m&&this.p.set("X-Goog-Iam-Authorization-Token",this.m),this.p}}class Jr{constructor(e,t,n,s){this.h=e,this.l=t,this.m=n,this.g=s}getToken(){return Promise.resolve(new Yr(this.h,this.l,this.m,this.g))}start(e,t){e.enqueueRetryable((()=>t(Lr.FIRST_PARTY)))}shutdown(){}invalidateToken(){}}class Zr{constructor(e){this.value=e,this.type="AppCheck",this.headers=new Map,e&&e.length>0&&this.headers.set("x-firebase-appcheck",this.value)}}class ei{constructor(e){this.T=e,this.forceRefresh=!1,this.appCheck=null,this.A=null}start(e,t){const n=e=>{null!=e.error&&Ur("FirebaseAppCheckTokenProvider",`Error getting App Check token; using placeholder token instead. Error: ${e.error.message}`);const n=e.token!==this.A;return this.A=e.token,Ur("FirebaseAppCheckTokenProvider",`Received ${n?"new":"existing"} token.`),n?t(e.token):Promise.resolve()};this.o=t=>{e.enqueueRetryable((()=>n(t)))};const s=e=>{Ur("FirebaseAppCheckTokenProvider","AppCheck detected"),this.appCheck=e,this.appCheck.addTokenListener(this.o)};this.T.onInit((e=>s(e))),setTimeout((()=>{if(!this.appCheck){const e=this.T.getImmediate({optional:!0});e?s(e):Ur("FirebaseAppCheckTokenProvider","AppCheck not yet detected")}}),0)}getToken(){const e=this.forceRefresh;return this.forceRefresh=!1,this.appCheck?this.appCheck.getToken(e).then((e=>e?(jr("string"==typeof e.token),this.A=e.token,new Zr(e.token)):null)):Promise.resolve(null)}invalidateToken(){this.forceRefresh=!0}shutdown(){this.appCheck&&this.appCheck.removeTokenListener(this.o)}}function ti(e){const t="undefined"!=typeof self&&(self.crypto||self.msCrypto),n=new Uint8Array(e);if(t&&"function"==typeof t.getRandomValues)t.getRandomValues(n);else for(let t=0;tt?1:0}function ri(e,t,n){return e.length===t.length&&e.every(((e,s)=>n(e,t[s])))}class ii{constructor(e,t){if(this.seconds=e,this.nanoseconds=t,t<0)throw new Hr(zr.INVALID_ARGUMENT,"Timestamp nanoseconds out of range: "+t);if(t>=1e9)throw new Hr(zr.INVALID_ARGUMENT,"Timestamp nanoseconds out of range: "+t);if(e<-62135596800)throw new Hr(zr.INVALID_ARGUMENT,"Timestamp seconds out of range: "+e);if(e>=253402300800)throw new Hr(zr.INVALID_ARGUMENT,"Timestamp seconds out of range: "+e)}static now(){return ii.fromMillis(Date.now())}static fromDate(e){return ii.fromMillis(e.getTime())}static fromMillis(e){const t=Math.floor(e/1e3),n=Math.floor(1e6*(e-1e3*t));return new ii(t,n)}toDate(){return new Date(this.toMillis())}toMillis(){return 1e3*this.seconds+this.nanoseconds/1e6}_compareTo(e){return this.seconds===e.seconds?si(this.nanoseconds,e.nanoseconds):si(this.seconds,e.seconds)}isEqual(e){return e.seconds===this.seconds&&e.nanoseconds===this.nanoseconds}toString(){return"Timestamp(seconds="+this.seconds+", nanoseconds="+this.nanoseconds+")"}toJSON(){return{seconds:this.seconds,nanoseconds:this.nanoseconds}}valueOf(){const e=this.seconds- -62135596800;return String(e).padStart(12,"0")+"."+String(this.nanoseconds).padStart(9,"0")}}class oi{constructor(e){this.timestamp=e}static fromTimestamp(e){return new oi(e)}static min(){return new oi(new ii(0,0))}static max(){return new oi(new ii(253402300799,999999999))}compareTo(e){return this.timestamp._compareTo(e.timestamp)}isEqual(e){return this.timestamp.isEqual(e.timestamp)}toMicroseconds(){return 1e6*this.timestamp.seconds+this.timestamp.nanoseconds/1e3}toString(){return"SnapshotVersion("+this.timestamp.toString()+")"}toTimestamp(){return this.timestamp}}class ai{constructor(e,t,n){void 0===t?t=0:t>e.length&&$r(),void 0===n?n=e.length-t:n>e.length-t&&$r(),this.segments=e,this.offset=t,this.len=n}get length(){return this.len}isEqual(e){return 0===ai.comparator(this,e)}child(e){const t=this.segments.slice(this.offset,this.limit());return e instanceof ai?e.forEach((e=>{t.push(e)})):t.push(e),this.construct(t)}limit(){return this.offset+this.length}popFirst(e){return e=void 0===e?1:e,this.construct(this.segments,this.offset+e,this.length-e)}popLast(){return this.construct(this.segments,this.offset,this.length-1)}firstSegment(){return this.segments[this.offset]}lastSegment(){return this.get(this.length-1)}get(e){return this.segments[this.offset+e]}isEmpty(){return 0===this.length}isPrefixOf(e){if(e.lengthr)return 1}return e.lengtht.length?1:0}}class ci extends ai{construct(e,t,n){return new ci(e,t,n)}canonicalString(){return this.toArray().join("/")}toString(){return this.canonicalString()}static fromString(...e){const t=[];for(const n of e){if(n.indexOf("//")>=0)throw new Hr(zr.INVALID_ARGUMENT,`Invalid segment (${n}). Paths must not contain // in them.`);t.push(...n.split("/").filter((e=>e.length>0)))}return new ci(t)}static emptyPath(){return new ci([])}}const ui=/^[_a-zA-Z][_a-zA-Z0-9]*$/;class li extends ai{construct(e,t,n){return new li(e,t,n)}static isValidIdentifier(e){return ui.test(e)}canonicalString(){return this.toArray().map((e=>(e=e.replace(/\\/g,"\\\\").replace(/`/g,"\\`"),li.isValidIdentifier(e)||(e="`"+e+"`"),e))).join(".")}toString(){return this.canonicalString()}isKeyField(){return 1===this.length&&"__name__"===this.get(0)}static keyField(){return new li(["__name__"])}static fromServerFormat(e){const t=[];let n="",s=0;const r=()=>{if(0===n.length)throw new Hr(zr.INVALID_ARGUMENT,`Invalid field path (${e}). Paths must not be empty, begin with '.', end with '.', or contain '..'`);t.push(n),n=""};let i=!1;for(;s=2&&this.path.get(this.path.length-2)===e}getCollectionGroup(){return this.path.get(this.path.length-2)}getCollectionPath(){return this.path.popLast()}isEqual(e){return null!==e&&0===ci.comparator(this.path,e.path)}toString(){return this.path.toString()}static comparator(e,t){return ci.comparator(e.path,t.path)}static isDocumentKey(e){return e.length%2==0}static fromSegments(e){return new hi(new ci(e.slice()))}}function di(e){return new fi(e.readTime,e.key,-1)}class fi{constructor(e,t,n){this.readTime=e,this.documentKey=t,this.largestBatchId=n}static min(){return new fi(oi.min(),hi.empty(),-1)}static max(){return new fi(oi.max(),hi.empty(),-1)}}function pi(e,t){let n=e.readTime.compareTo(t.readTime);return 0!==n?n:(n=hi.comparator(e.documentKey,t.documentKey),0!==n?n:si(e.largestBatchId,t.largestBatchId))}class mi{constructor(){this.onCommittedListeners=[]}addOnCommittedListener(e){this.onCommittedListeners.push(e)}raiseOnCommittedEvent(){this.onCommittedListeners.forEach((e=>e()))}}async function gi(e){if(e.code!==zr.FAILED_PRECONDITION||"The current tab is not in the required state to perform this operation. It might be necessary to refresh the browser tab."!==e.message)throw e;Ur("LocalStore","Unexpectedly lost primary lease")}class yi{constructor(e){this.nextCallback=null,this.catchCallback=null,this.result=void 0,this.error=void 0,this.isDone=!1,this.callbackAttached=!1,e((e=>{this.isDone=!0,this.result=e,this.nextCallback&&this.nextCallback(e)}),(e=>{this.isDone=!0,this.error=e,this.catchCallback&&this.catchCallback(e)}))}catch(e){return this.next(void 0,e)}next(e,t){return this.callbackAttached&&$r(),this.callbackAttached=!0,this.isDone?this.error?this.wrapFailure(t,this.error):this.wrapSuccess(e,this.result):new yi(((n,s)=>{this.nextCallback=t=>{this.wrapSuccess(e,t).next(n,s)},this.catchCallback=e=>{this.wrapFailure(t,e).next(n,s)}}))}toPromise(){return new Promise(((e,t)=>{this.next(e,t)}))}wrapUserFunction(e){try{const t=e();return t instanceof yi?t:yi.resolve(t)}catch(e){return yi.reject(e)}}wrapSuccess(e,t){return e?this.wrapUserFunction((()=>e(t))):yi.resolve(t)}wrapFailure(e,t){return e?this.wrapUserFunction((()=>e(t))):yi.reject(t)}static resolve(e){return new yi(((t,n)=>{t(e)}))}static reject(e){return new yi(((t,n)=>{n(e)}))}static waitFor(e){return new yi(((t,n)=>{let s=0,r=0,i=!1;e.forEach((e=>{++s,e.next((()=>{++r,i&&r===s&&t()}),(e=>n(e)))})),i=!0,r===s&&t()}))}static or(e){let t=yi.resolve(!1);for(const n of e)t=t.next((e=>e?yi.resolve(e):n()));return t}static forEach(e,t){const n=[];return e.forEach(((e,s)=>{n.push(t.call(this,e,s))})),this.waitFor(n)}static mapArray(e,t){return new yi(((n,s)=>{const r=e.length,i=new Array(r);let o=0;for(let a=0;a{i[c]=e,++o,o===r&&n(i)}),(e=>s(e)))}}))}static doWhile(e,t){return new yi(((n,s)=>{const r=()=>{!0===e()?t().next((()=>{r()}),s):n()};r()}))}}function vi(e){return"IndexedDbTransactionError"===e.name}class wi{constructor(e,t){this.previousValue=e,t&&(t.sequenceNumberHandler=e=>this.ut(e),this.ct=e=>t.writeSequenceNumber(e))}ut(e){return this.previousValue=Math.max(e,this.previousValue),this.previousValue}next(){const e=++this.previousValue;return this.ct&&this.ct(e),e}}function _i(e){let t=0;for(const n in e)Object.prototype.hasOwnProperty.call(e,n)&&t++;return t}function bi(e,t){for(const n in e)Object.prototype.hasOwnProperty.call(e,n)&&t(n,e[n])}function Ti(e){for(const t in e)if(Object.prototype.hasOwnProperty.call(e,t))return!1;return!0}wi.at=-1;class Ei{constructor(e,t){this.comparator=e,this.root=t||ki.EMPTY}insert(e,t){return new Ei(this.comparator,this.root.insert(e,t,this.comparator).copy(null,null,ki.BLACK,null,null))}remove(e){return new Ei(this.comparator,this.root.remove(e,this.comparator).copy(null,null,ki.BLACK,null,null))}get(e){let t=this.root;for(;!t.isEmpty();){const n=this.comparator(e,t.key);if(0===n)return t.value;n<0?t=t.left:n>0&&(t=t.right)}return null}indexOf(e){let t=0,n=this.root;for(;!n.isEmpty();){const s=this.comparator(e,n.key);if(0===s)return t+n.left.size;s<0?n=n.left:(t+=n.left.size+1,n=n.right)}return-1}isEmpty(){return this.root.isEmpty()}get size(){return this.root.size}minKey(){return this.root.minKey()}maxKey(){return this.root.maxKey()}inorderTraversal(e){return this.root.inorderTraversal(e)}forEach(e){this.inorderTraversal(((t,n)=>(e(t,n),!1)))}toString(){const e=[];return this.inorderTraversal(((t,n)=>(e.push(`${t}:${n}`),!1))),`{${e.join(", ")}}`}reverseTraversal(e){return this.root.reverseTraversal(e)}getIterator(){return new Ii(this.root,null,this.comparator,!1)}getIteratorFrom(e){return new Ii(this.root,e,this.comparator,!1)}getReverseIterator(){return new Ii(this.root,null,this.comparator,!0)}getReverseIteratorFrom(e){return new Ii(this.root,e,this.comparator,!0)}}class Ii{constructor(e,t,n,s){this.isReverse=s,this.nodeStack=[];let r=1;for(;!e.isEmpty();)if(r=t?n(e.key,t):1,t&&s&&(r*=-1),r<0)e=this.isReverse?e.left:e.right;else{if(0===r){this.nodeStack.push(e);break}this.nodeStack.push(e),e=this.isReverse?e.right:e.left}}getNext(){let e=this.nodeStack.pop();const t={key:e.key,value:e.value};if(this.isReverse)for(e=e.left;!e.isEmpty();)this.nodeStack.push(e),e=e.right;else for(e=e.right;!e.isEmpty();)this.nodeStack.push(e),e=e.left;return t}hasNext(){return this.nodeStack.length>0}peek(){if(0===this.nodeStack.length)return null;const e=this.nodeStack[this.nodeStack.length-1];return{key:e.key,value:e.value}}}class ki{constructor(e,t,n,s,r){this.key=e,this.value=t,this.color=null!=n?n:ki.RED,this.left=null!=s?s:ki.EMPTY,this.right=null!=r?r:ki.EMPTY,this.size=this.left.size+1+this.right.size}copy(e,t,n,s,r){return new ki(null!=e?e:this.key,null!=t?t:this.value,null!=n?n:this.color,null!=s?s:this.left,null!=r?r:this.right)}isEmpty(){return!1}inorderTraversal(e){return this.left.inorderTraversal(e)||e(this.key,this.value)||this.right.inorderTraversal(e)}reverseTraversal(e){return this.right.reverseTraversal(e)||e(this.key,this.value)||this.left.reverseTraversal(e)}min(){return this.left.isEmpty()?this:this.left.min()}minKey(){return this.min().key}maxKey(){return this.right.isEmpty()?this.key:this.right.maxKey()}insert(e,t,n){let s=this;const r=n(e,s.key);return s=r<0?s.copy(null,null,null,s.left.insert(e,t,n),null):0===r?s.copy(null,t,null,null,null):s.copy(null,null,null,null,s.right.insert(e,t,n)),s.fixUp()}removeMin(){if(this.left.isEmpty())return ki.EMPTY;let e=this;return e.left.isRed()||e.left.left.isRed()||(e=e.moveRedLeft()),e=e.copy(null,null,null,e.left.removeMin(),null),e.fixUp()}remove(e,t){let n,s=this;if(t(e,s.key)<0)s.left.isEmpty()||s.left.isRed()||s.left.left.isRed()||(s=s.moveRedLeft()),s=s.copy(null,null,null,s.left.remove(e,t),null);else{if(s.left.isRed()&&(s=s.rotateRight()),s.right.isEmpty()||s.right.isRed()||s.right.left.isRed()||(s=s.moveRedRight()),0===t(e,s.key)){if(s.right.isEmpty())return ki.EMPTY;n=s.right.min(),s=s.copy(n.key,n.value,null,null,s.right.removeMin())}s=s.copy(null,null,null,null,s.right.remove(e,t))}return s.fixUp()}isRed(){return this.color}fixUp(){let e=this;return e.right.isRed()&&!e.left.isRed()&&(e=e.rotateLeft()),e.left.isRed()&&e.left.left.isRed()&&(e=e.rotateRight()),e.left.isRed()&&e.right.isRed()&&(e=e.colorFlip()),e}moveRedLeft(){let e=this.colorFlip();return e.right.left.isRed()&&(e=e.copy(null,null,null,null,e.right.rotateRight()),e=e.rotateLeft(),e=e.colorFlip()),e}moveRedRight(){let e=this.colorFlip();return e.left.left.isRed()&&(e=e.rotateRight(),e=e.colorFlip()),e}rotateLeft(){const e=this.copy(null,null,ki.RED,null,this.right.left);return this.right.copy(null,null,this.color,e,null)}rotateRight(){const e=this.copy(null,null,ki.RED,this.left.right,null);return this.left.copy(null,null,this.color,null,e)}colorFlip(){const e=this.left.copy(null,null,!this.left.color,null,null),t=this.right.copy(null,null,!this.right.color,null,null);return this.copy(null,null,!this.color,e,t)}checkMaxDepth(){const e=this.check();return Math.pow(2,e)<=this.size+1}check(){if(this.isRed()&&this.left.isRed())throw $r();if(this.right.isRed())throw $r();const e=this.left.check();if(e!==this.right.check())throw $r();return e+(this.isRed()?0:1)}}ki.EMPTY=null,ki.RED=!0,ki.BLACK=!1,ki.EMPTY=new class{constructor(){this.size=0}get key(){throw $r()}get value(){throw $r()}get color(){throw $r()}get left(){throw $r()}get right(){throw $r()}copy(e,t,n,s,r){return this}insert(e,t,n){return new ki(e,t)}remove(e,t){return this}isEmpty(){return!0}inorderTraversal(e){return!1}reverseTraversal(e){return!1}minKey(){return null}maxKey(){return null}isRed(){return!1}checkMaxDepth(){return!0}check(){return 0}};class Si{constructor(e){this.comparator=e,this.data=new Ei(this.comparator)}has(e){return null!==this.data.get(e)}first(){return this.data.minKey()}last(){return this.data.maxKey()}get size(){return this.data.size}indexOf(e){return this.data.indexOf(e)}forEach(e){this.data.inorderTraversal(((t,n)=>(e(t),!1)))}forEachInRange(e,t){const n=this.data.getIteratorFrom(e[0]);for(;n.hasNext();){const s=n.getNext();if(this.comparator(s.key,e[1])>=0)return;t(s.key)}}forEachWhile(e,t){let n;for(n=void 0!==t?this.data.getIteratorFrom(t):this.data.getIterator();n.hasNext();)if(!e(n.getNext().key))return}firstAfterOrEqual(e){const t=this.data.getIteratorFrom(e);return t.hasNext()?t.getNext().key:null}getIterator(){return new Ci(this.data.getIterator())}getIteratorFrom(e){return new Ci(this.data.getIteratorFrom(e))}add(e){return this.copy(this.data.remove(e).insert(e,!0))}delete(e){return this.has(e)?this.copy(this.data.remove(e)):this}isEmpty(){return this.data.isEmpty()}unionWith(e){let t=this;return t.size{t=t.add(e)})),t}isEqual(e){if(!(e instanceof Si))return!1;if(this.size!==e.size)return!1;const t=this.data.getIterator(),n=e.data.getIterator();for(;t.hasNext();){const e=t.getNext().key,s=n.getNext().key;if(0!==this.comparator(e,s))return!1}return!0}toArray(){const e=[];return this.forEach((t=>{e.push(t)})),e}toString(){const e=[];return this.forEach((t=>e.push(t))),"SortedSet("+e.toString()+")"}copy(e){const t=new Si(this.comparator);return t.data=e,t}}class Ci{constructor(e){this.iter=e}getNext(){return this.iter.getNext().key}hasNext(){return this.iter.hasNext()}}class Ai{constructor(e){this.fields=e,e.sort(li.comparator)}static empty(){return new Ai([])}unionWith(e){let t=new Si(li.comparator);for(const e of this.fields)t=t.add(e);for(const n of e)t=t.add(n);return new Ai(t.toArray())}covers(e){for(const t of this.fields)if(t.isPrefixOf(e))return!0;return!1}isEqual(e){return ri(this.fields,e.fields,((e,t)=>e.isEqual(t)))}}class Ri{constructor(e){this.binaryString=e}static fromBase64String(e){const t=atob(e);return new Ri(t)}static fromUint8Array(e){const t=function(e){let t="";for(let n=0;neqi(e,t)))}function Hi(e,t){if(e===t)return 0;const n=ji(e),s=ji(t);if(n!==s)return si(n,s);switch(n){case 0:case 9007199254740991:return 0;case 1:return si(e.booleanValue,t.booleanValue);case 2:return function(e,t){const n=Oi(e.integerValue||e.doubleValue),s=Oi(t.integerValue||t.doubleValue);return ns?1:n===s?0:isNaN(n)?isNaN(s)?0:-1:1}(e,t);case 3:return Ki(e.timestampValue,t.timestampValue);case 4:return Ki(Mi(e),Mi(t));case 5:return si(e.stringValue,t.stringValue);case 6:return function(e,t){const n=Li(e),s=Li(t);return n.compareTo(s)}(e.bytesValue,t.bytesValue);case 7:return function(e,t){const n=e.split("/"),s=t.split("/");for(let e=0;et.mapValue.fields[e]=eo(n))),t}if(e.arrayValue){const t={arrayValue:{values:[]}};for(let n=0;n<(e.arrayValue.values||[]).length;++n)t.arrayValue.values[n]=eo(e.arrayValue.values[n]);return t}return Object.assign({},e)}function to(e){return"__max__"===(((e.mapValue||{}).fields||{}).__type__||{}).stringValue}class no{constructor(e){this.value=e}static empty(){return new no({mapValue:{}})}field(e){if(e.isEmpty())return this.value;{let t=this.value;for(let n=0;n{if(!t.isImmediateParentOf(r)){const e=this.getFieldsMap(t);this.applyChanges(e,n,s),n={},s=[],t=r.popLast()}e?n[r.lastSegment()]=eo(e):s.push(r.lastSegment())}));const r=this.getFieldsMap(t);this.applyChanges(r,n,s)}delete(e){const t=this.field(e.popLast());Zi(t)&&t.mapValue.fields&&delete t.mapValue.fields[e.lastSegment()]}isEqual(e){return qi(this.value,e.value)}getFieldsMap(e){let t=this.value;t.mapValue.fields||(t.mapValue={fields:{}});for(let n=0;ne[t]=n));for(const t of n)delete e[t]}clone(){return new no(eo(this.value))}}function so(e){const t=[];return bi(e.fields,((e,n)=>{const s=new li([e]);if(Zi(n)){const e=so(n.mapValue).fields;if(0===e.length)t.push(s);else for(const n of e)t.push(s.child(n))}else t.push(s)})),new Ai(t)}class ro{constructor(e,t,n,s,r,i){this.key=e,this.documentType=t,this.version=n,this.readTime=s,this.data=r,this.documentState=i}static newInvalidDocument(e){return new ro(e,0,oi.min(),oi.min(),no.empty(),0)}static newFoundDocument(e,t,n){return new ro(e,1,t,oi.min(),n,0)}static newNoDocument(e,t){return new ro(e,2,t,oi.min(),no.empty(),0)}static newUnknownDocument(e,t){return new ro(e,3,t,oi.min(),no.empty(),2)}convertToFoundDocument(e,t){return this.version=e,this.documentType=1,this.data=t,this.documentState=0,this}convertToNoDocument(e){return this.version=e,this.documentType=2,this.data=no.empty(),this.documentState=0,this}convertToUnknownDocument(e){return this.version=e,this.documentType=3,this.data=no.empty(),this.documentState=2,this}setHasCommittedMutations(){return this.documentState=2,this}setHasLocalMutations(){return this.documentState=1,this.version=oi.min(),this}setReadTime(e){return this.readTime=e,this}get hasLocalMutations(){return 1===this.documentState}get hasCommittedMutations(){return 2===this.documentState}get hasPendingWrites(){return this.hasLocalMutations||this.hasCommittedMutations}isValidDocument(){return 0!==this.documentType}isFoundDocument(){return 1===this.documentType}isNoDocument(){return 2===this.documentType}isUnknownDocument(){return 3===this.documentType}isEqual(e){return e instanceof ro&&this.key.isEqual(e.key)&&this.version.isEqual(e.version)&&this.documentType===e.documentType&&this.documentState===e.documentState&&this.data.isEqual(e.data)}mutableCopy(){return new ro(this.key,this.documentType,this.version,this.readTime,this.data.clone(),this.documentState)}toString(){return`Document(${this.key}, ${this.version}, ${JSON.stringify(this.data.value)}, {documentType: ${this.documentType}}), {documentState: ${this.documentState}})`}}class io{constructor(e,t=null,n=[],s=[],r=null,i=null,o=null){this.path=e,this.collectionGroup=t,this.orderBy=n,this.filters=s,this.limit=r,this.startAt=i,this.endAt=o,this.ht=null}}function oo(e,t=null,n=[],s=[],r=null,i=null,o=null){return new io(e,t,n,s,r,i,o)}function ao(e){const t=qr(e);if(null===t.ht){let e=t.path.canonicalString();null!==t.collectionGroup&&(e+="|cg:"+t.collectionGroup),e+="|f:",e+=t.filters.map((e=>{return(t=e).field.canonicalString()+t.op.toString()+Gi(t.value);var t})).join(","),e+="|ob:",e+=t.orderBy.map((e=>function(e){return e.field.canonicalString()+e.dir}(e))).join(","),Vi(t.limit)||(e+="|l:",e+=t.limit),t.startAt&&(e+="|lb:",e+=t.startAt.inclusive?"b:":"a:",e+=t.startAt.position.map((e=>Gi(e))).join(",")),t.endAt&&(e+="|ub:",e+=t.endAt.inclusive?"a:":"b:",e+=t.endAt.position.map((e=>Gi(e))).join(",")),t.ht=e}return t.ht}function co(e,t){if(e.limit!==t.limit)return!1;if(e.orderBy.length!==t.orderBy.length)return!1;for(let n=0;n":return e>0;case">=":return e>=0;default:return $r()}}dt(){return["<","<=",">",">=","!=","not-in"].indexOf(this.op)>=0}}class ho extends lo{constructor(e,t,n){super(e,t,n),this.key=hi.fromName(n.referenceValue)}matches(e){const t=hi.comparator(e.key,this.key);return this.ft(t)}}class fo extends lo{constructor(e,t){super(e,"in",t),this.keys=mo(0,t)}matches(e){return this.keys.some((t=>t.isEqual(e.key)))}}class po extends lo{constructor(e,t){super(e,"not-in",t),this.keys=mo(0,t)}matches(e){return!this.keys.some((t=>t.isEqual(e.key)))}}function mo(e,t){var n;return((null===(n=t.arrayValue)||void 0===n?void 0:n.values)||[]).map((e=>hi.fromName(e.referenceValue)))}class go extends lo{constructor(e,t){super(e,"array-contains",t)}matches(e){const t=e.data.field(this.field);return Xi(t)&&zi(t.arrayValue,this.value)}}class yo extends lo{constructor(e,t){super(e,"in",t)}matches(e){const t=e.data.field(this.field);return null!==t&&zi(this.value.arrayValue,t)}}class vo extends lo{constructor(e,t){super(e,"not-in",t)}matches(e){if(zi(this.value.arrayValue,{nullValue:"NULL_VALUE"}))return!1;const t=e.data.field(this.field);return null!==t&&!zi(this.value.arrayValue,t)}}class wo extends lo{constructor(e,t){super(e,"array-contains-any",t)}matches(e){const t=e.data.field(this.field);return!(!Xi(t)||!t.arrayValue.values)&&t.arrayValue.values.some((e=>zi(this.value.arrayValue,e)))}}class _o{constructor(e,t){this.position=e,this.inclusive=t}}class bo{constructor(e,t="asc"){this.field=e,this.dir=t}}function To(e,t){return e.dir===t.dir&&e.field.isEqual(t.field)}function Eo(e,t,n){let s=0;for(let r=0;r0?e.explicitOrderBy[0].field:null}function Ro(e){for(const t of e.filters)if(t.dt())return t.field;return null}function Do(e){const t=qr(e);if(null===t._t){t._t=[];const e=Ro(t),n=Ao(t);if(null!==e&&null===n)e.isKeyField()||t._t.push(new bo(e)),t._t.push(new bo(li.keyField(),"asc"));else{let e=!1;for(const n of t.explicitOrderBy)t._t.push(n),n.field.isKeyField()&&(e=!0);if(!e){const e=t.explicitOrderBy.length>0?t.explicitOrderBy[t.explicitOrderBy.length-1].dir:"asc";t._t.push(new bo(li.keyField(),e))}}}return t._t}function No(e){const t=qr(e);if(!t.wt)if("F"===t.limitType)t.wt=oo(t.path,t.collectionGroup,Do(t),t.filters,t.limit,t.startAt,t.endAt);else{const e=[];for(const n of Do(t)){const t="desc"===n.dir?"asc":"desc";e.push(new bo(n.field,t))}const n=t.endAt?new _o(t.endAt.position,t.endAt.inclusive):null,s=t.startAt?new _o(t.startAt.position,t.startAt.inclusive):null;t.wt=oo(t.path,t.collectionGroup,e,t.filters,t.limit,n,s)}return t.wt}function Oo(e,t,n){return new ko(e.path,e.collectionGroup,e.explicitOrderBy.slice(),e.filters.slice(),t,n,e.startAt,e.endAt)}function Lo(e,t){return co(No(e),No(t))&&e.limitType===t.limitType}function xo(e){return`${ao(No(e))}|lt:${e.limitType}`}function Po(e){return`Query(target=${function(e){let t=e.path.canonicalString();return null!==e.collectionGroup&&(t+=" collectionGroup="+e.collectionGroup),e.filters.length>0&&(t+=`, filters: [${e.filters.map((e=>{return`${(t=e).field.canonicalString()} ${t.op} ${Gi(t.value)}`;var t})).join(", ")}]`),Vi(e.limit)||(t+=", limit: "+e.limit),e.orderBy.length>0&&(t+=`, orderBy: [${e.orderBy.map((e=>function(e){return`${e.field.canonicalString()} (${e.dir})`}(e))).join(", ")}]`),e.startAt&&(t+=", startAt: ",t+=e.startAt.inclusive?"b:":"a:",t+=e.startAt.position.map((e=>Gi(e))).join(",")),e.endAt&&(t+=", endAt: ",t+=e.endAt.inclusive?"a:":"b:",t+=e.endAt.position.map((e=>Gi(e))).join(",")),`Target(${t})`}(No(e))}; limitType=${e.limitType})`}function Mo(e,t){return t.isFoundDocument()&&function(e,t){const n=t.key.path;return null!==e.collectionGroup?t.key.hasCollectionId(e.collectionGroup)&&e.path.isPrefixOf(n):hi.isDocumentKey(e.path)?e.path.isEqual(n):e.path.isImmediateParentOf(n)}(e,t)&&function(e,t){for(const n of e.explicitOrderBy)if(!n.field.isKeyField()&&null===t.data.field(n.field))return!1;return!0}(e,t)&&function(e,t){for(const n of e.filters)if(!n.matches(t))return!1;return!0}(e,t)&&function(e,t){return!(e.startAt&&!function(e,t,n){const s=Eo(e,t,n);return e.inclusive?s<=0:s<0}(e.startAt,Do(e),t)||e.endAt&&!function(e,t,n){const s=Eo(e,t,n);return e.inclusive?s>=0:s>0}(e.endAt,Do(e),t))}(e,t)}function Uo(e){return(t,n)=>{let s=!1;for(const r of Do(e)){const e=Fo(r,t,n);if(0!==e)return e;s=s||r.field.isKeyField()}return 0}}function Fo(e,t,n){const s=e.field.isKeyField()?hi.comparator(t.key,n.key):function(e,t,n){const s=t.data.field(e),r=n.data.field(e);return null!==s&&null!==r?Hi(s,r):$r()}(e.field,t,n);switch(e.dir){case"asc":return s;case"desc":return-1*s;default:return $r()}}function Vo(e,t){if(e.gt){if(isNaN(t))return{doubleValue:"NaN"};if(t===1/0)return{doubleValue:"Infinity"};if(t===-1/0)return{doubleValue:"-Infinity"}}return{doubleValue:Bi(t)?"-0":t}}function Bo(e){return{integerValue:""+e}}function $o(e,t){return function(e){return"number"==typeof e&&Number.isInteger(e)&&!Bi(e)&&e<=Number.MAX_SAFE_INTEGER&&e>=Number.MIN_SAFE_INTEGER}(t)?Bo(t):Vo(e,t)}class jo{constructor(){this._=void 0}}function qo(e,t,n){return e instanceof Ko?function(e,t){const n={fields:{__type__:{stringValue:"server_timestamp"},__local_write_time__:{timestampValue:{seconds:e.seconds,nanos:e.nanoseconds}}}};return t&&(n.fields.__previous_value__=t),{mapValue:n}}(n,t):e instanceof Go?Wo(e,t):e instanceof Qo?Xo(e,t):function(e,t){const n=Ho(e,t),s=Jo(n)+Jo(e.yt);return Qi(n)&&Qi(e.yt)?Bo(s):Vo(e.It,s)}(e,t)}function zo(e,t,n){return e instanceof Go?Wo(e,t):e instanceof Qo?Xo(e,t):n}function Ho(e,t){return e instanceof Yo?Qi(n=t)||function(e){return!!e&&"doubleValue"in e}(n)?t:{integerValue:0}:null;var n}class Ko extends jo{}class Go extends jo{constructor(e){super(),this.elements=e}}function Wo(e,t){const n=Zo(t);for(const t of e.elements)n.some((e=>qi(e,t)))||n.push(t);return{arrayValue:{values:n}}}class Qo extends jo{constructor(e){super(),this.elements=e}}function Xo(e,t){let n=Zo(t);for(const t of e.elements)n=n.filter((e=>!qi(e,t)));return{arrayValue:{values:n}}}class Yo extends jo{constructor(e,t){super(),this.It=e,this.yt=t}}function Jo(e){return Oi(e.integerValue||e.doubleValue)}function Zo(e){return Xi(e)&&e.arrayValue.values?e.arrayValue.values.slice():[]}class ea{constructor(e,t){this.version=e,this.transformResults=t}}class ta{constructor(e,t){this.updateTime=e,this.exists=t}static none(){return new ta}static exists(e){return new ta(void 0,e)}static updateTime(e){return new ta(e)}get isNone(){return void 0===this.updateTime&&void 0===this.exists}isEqual(e){return this.exists===e.exists&&(this.updateTime?!!e.updateTime&&this.updateTime.isEqual(e.updateTime):!e.updateTime)}}function na(e,t){return void 0!==e.updateTime?t.isFoundDocument()&&t.version.isEqual(e.updateTime):void 0===e.exists||e.exists===t.isFoundDocument()}class sa{}function ra(e,t){if(!e.hasLocalMutations||t&&0===t.fields.length)return null;if(null===t)return e.isNoDocument()?new pa(e.key,ta.none()):new ua(e.key,e.data,ta.none());{const n=e.data,s=no.empty();let r=new Si(li.comparator);for(let e of t.fields)if(!r.has(e)){let t=n.field(e);null===t&&e.length>1&&(e=e.popLast(),t=n.field(e)),null===t?s.delete(e):s.set(e,t),r=r.add(e)}return new la(e.key,s,new Ai(r.toArray()),ta.none())}}function ia(e,t,n){e instanceof ua?function(e,t,n){const s=e.value.clone(),r=da(e.fieldTransforms,t,n.transformResults);s.setAll(r),t.convertToFoundDocument(n.version,s).setHasCommittedMutations()}(e,t,n):e instanceof la?function(e,t,n){if(!na(e.precondition,t))return void t.convertToUnknownDocument(n.version);const s=da(e.fieldTransforms,t,n.transformResults),r=t.data;r.setAll(ha(e)),r.setAll(s),t.convertToFoundDocument(n.version,r).setHasCommittedMutations()}(e,t,n):function(e,t,n){t.convertToNoDocument(n.version).setHasCommittedMutations()}(0,t,n)}function oa(e,t,n,s){return e instanceof ua?function(e,t,n,s){if(!na(e.precondition,t))return n;const r=e.value.clone(),i=fa(e.fieldTransforms,s,t);return r.setAll(i),t.convertToFoundDocument(t.version,r).setHasLocalMutations(),null}(e,t,n,s):e instanceof la?function(e,t,n,s){if(!na(e.precondition,t))return n;const r=fa(e.fieldTransforms,s,t),i=t.data;return i.setAll(ha(e)),i.setAll(r),t.convertToFoundDocument(t.version,i).setHasLocalMutations(),null===n?null:n.unionWith(e.fieldMask.fields).unionWith(e.fieldTransforms.map((e=>e.field)))}(e,t,n,s):function(e,t,n){return na(e.precondition,t)?(t.convertToNoDocument(t.version).setHasLocalMutations(),null):n}(e,t,n)}function aa(e,t){let n=null;for(const s of e.fieldTransforms){const e=t.data.field(s.field),r=Ho(s.transform,e||null);null!=r&&(null===n&&(n=no.empty()),n.set(s.field,r))}return n||null}function ca(e,t){return e.type===t.type&&!!e.key.isEqual(t.key)&&!!e.precondition.isEqual(t.precondition)&&!!function(e,t){return void 0===e&&void 0===t||!(!e||!t)&&ri(e,t,((e,t)=>function(e,t){return e.field.isEqual(t.field)&&function(e,t){return e instanceof Go&&t instanceof Go||e instanceof Qo&&t instanceof Qo?ri(e.elements,t.elements,qi):e instanceof Yo&&t instanceof Yo?qi(e.yt,t.yt):e instanceof Ko&&t instanceof Ko}(e.transform,t.transform)}(e,t)))}(e.fieldTransforms,t.fieldTransforms)&&(0===e.type?e.value.isEqual(t.value):1!==e.type||e.data.isEqual(t.data)&&e.fieldMask.isEqual(t.fieldMask))}class ua extends sa{constructor(e,t,n,s=[]){super(),this.key=e,this.value=t,this.precondition=n,this.fieldTransforms=s,this.type=0}getFieldMask(){return null}}class la extends sa{constructor(e,t,n,s,r=[]){super(),this.key=e,this.data=t,this.fieldMask=n,this.precondition=s,this.fieldTransforms=r,this.type=1}getFieldMask(){return this.fieldMask}}function ha(e){const t=new Map;return e.fieldMask.fields.forEach((n=>{if(!n.isEmpty()){const s=e.data.field(n);t.set(n,s)}})),t}function da(e,t,n){const s=new Map;jr(e.length===n.length);for(let r=0;r{for(const[t,s]of n)e(t,s)}))}isEmpty(){return Ti(this.inner)}size(){return this.innerSize}}const ba=new Ei(hi.comparator);function Ta(){return ba}const Ea=new Ei(hi.comparator);function Ia(...e){let t=Ea;for(const n of e)t=t.insert(n.key,n);return t}function ka(e){let t=Ea;return e.forEach(((e,n)=>t=t.insert(e,n.overlayedDocument))),t}function Sa(){return Aa()}function Ca(){return Aa()}function Aa(){return new _a((e=>e.toString()),((e,t)=>e.isEqual(t)))}const Ra=new Ei(hi.comparator),Da=new Si(hi.comparator);function Na(...e){let t=Da;for(const n of e)t=t.add(n);return t}const Oa=new Si(si);function La(){return Oa}class xa{constructor(e,t,n,s,r){this.snapshotVersion=e,this.targetChanges=t,this.targetMismatches=n,this.documentUpdates=s,this.resolvedLimboDocuments=r}static createSynthesizedRemoteEventForCurrentChange(e,t,n){const s=new Map;return s.set(e,Pa.createSynthesizedTargetChangeForCurrentChange(e,t,n)),new xa(oi.min(),s,La(),Ta(),Na())}}class Pa{constructor(e,t,n,s,r){this.resumeToken=e,this.current=t,this.addedDocuments=n,this.modifiedDocuments=s,this.removedDocuments=r}static createSynthesizedTargetChangeForCurrentChange(e,t,n){return new Pa(n,t,Na(),Na(),Na())}}class Ma{constructor(e,t,n,s){this.Tt=e,this.removedTargetIds=t,this.key=n,this.Et=s}}class Ua{constructor(e,t){this.targetId=e,this.At=t}}class Fa{constructor(e,t,n=Ri.EMPTY_BYTE_STRING,s=null){this.state=e,this.targetIds=t,this.resumeToken=n,this.cause=s}}class Va{constructor(){this.Rt=0,this.bt=ja(),this.Pt=Ri.EMPTY_BYTE_STRING,this.vt=!1,this.Vt=!0}get current(){return this.vt}get resumeToken(){return this.Pt}get St(){return 0!==this.Rt}get Dt(){return this.Vt}Ct(e){e.approximateByteSize()>0&&(this.Vt=!0,this.Pt=e)}xt(){let e=Na(),t=Na(),n=Na();return this.bt.forEach(((s,r)=>{switch(r){case 0:e=e.add(s);break;case 2:t=t.add(s);break;case 1:n=n.add(s);break;default:$r()}})),new Pa(this.Pt,this.vt,e,t,n)}Nt(){this.Vt=!1,this.bt=ja()}kt(e,t){this.Vt=!0,this.bt=this.bt.insert(e,t)}Ot(e){this.Vt=!0,this.bt=this.bt.remove(e)}Mt(){this.Rt+=1}Ft(){this.Rt-=1}$t(){this.Vt=!0,this.vt=!0}}class Ba{constructor(e){this.Bt=e,this.Lt=new Map,this.Ut=Ta(),this.qt=$a(),this.Kt=new Si(si)}Gt(e){for(const t of e.Tt)e.Et&&e.Et.isFoundDocument()?this.Qt(t,e.Et):this.jt(t,e.key,e.Et);for(const t of e.removedTargetIds)this.jt(t,e.key,e.Et)}Wt(e){this.forEachTarget(e,(t=>{const n=this.zt(t);switch(e.state){case 0:this.Ht(t)&&n.Ct(e.resumeToken);break;case 1:n.Ft(),n.St||n.Nt(),n.Ct(e.resumeToken);break;case 2:n.Ft(),n.St||this.removeTarget(t);break;case 3:this.Ht(t)&&(n.$t(),n.Ct(e.resumeToken));break;case 4:this.Ht(t)&&(this.Jt(t),n.Ct(e.resumeToken));break;default:$r()}}))}forEachTarget(e,t){e.targetIds.length>0?e.targetIds.forEach(t):this.Lt.forEach(((e,n)=>{this.Ht(n)&&t(n)}))}Yt(e){const t=e.targetId,n=e.At.count,s=this.Xt(t);if(s){const e=s.target;if(uo(e))if(0===n){const n=new hi(e.path);this.jt(t,n,ro.newNoDocument(n,oi.min()))}else jr(1===n);else this.Zt(t)!==n&&(this.Jt(t),this.Kt=this.Kt.add(t))}}te(e){const t=new Map;this.Lt.forEach(((n,s)=>{const r=this.Xt(s);if(r){if(n.current&&uo(r.target)){const t=new hi(r.target.path);null!==this.Ut.get(t)||this.ee(s,t)||this.jt(s,t,ro.newNoDocument(t,e))}n.Dt&&(t.set(s,n.xt()),n.Nt())}}));let n=Na();this.qt.forEach(((e,t)=>{let s=!0;t.forEachWhile((e=>{const t=this.Xt(e);return!t||2===t.purpose||(s=!1,!1)})),s&&(n=n.add(e))})),this.Ut.forEach(((t,n)=>n.setReadTime(e)));const s=new xa(e,t,this.Kt,this.Ut,n);return this.Ut=Ta(),this.qt=$a(),this.Kt=new Si(si),s}Qt(e,t){if(!this.Ht(e))return;const n=this.ee(e,t.key)?2:0;this.zt(e).kt(t.key,n),this.Ut=this.Ut.insert(t.key,t),this.qt=this.qt.insert(t.key,this.ne(t.key).add(e))}jt(e,t,n){if(!this.Ht(e))return;const s=this.zt(e);this.ee(e,t)?s.kt(t,1):s.Ot(t),this.qt=this.qt.insert(t,this.ne(t).delete(e)),n&&(this.Ut=this.Ut.insert(t,n))}removeTarget(e){this.Lt.delete(e)}Zt(e){const t=this.zt(e).xt();return this.Bt.getRemoteKeysForTarget(e).size+t.addedDocuments.size-t.removedDocuments.size}Mt(e){this.zt(e).Mt()}zt(e){let t=this.Lt.get(e);return t||(t=new Va,this.Lt.set(e,t)),t}ne(e){let t=this.qt.get(e);return t||(t=new Si(si),this.qt=this.qt.insert(e,t)),t}Ht(e){const t=null!==this.Xt(e);return t||Ur("WatchChangeAggregator","Detected inactive target",e),t}Xt(e){const t=this.Lt.get(e);return t&&t.St?null:this.Bt.se(e)}Jt(e){this.Lt.set(e,new Va),this.Bt.getRemoteKeysForTarget(e).forEach((t=>{this.jt(e,t,null)}))}ee(e,t){return this.Bt.getRemoteKeysForTarget(e).has(t)}}function $a(){return new Ei(hi.comparator)}function ja(){return new Ei(hi.comparator)}const qa={asc:"ASCENDING",desc:"DESCENDING"},za={"<":"LESS_THAN","<=":"LESS_THAN_OR_EQUAL",">":"GREATER_THAN",">=":"GREATER_THAN_OR_EQUAL","==":"EQUAL","!=":"NOT_EQUAL","array-contains":"ARRAY_CONTAINS",in:"IN","not-in":"NOT_IN","array-contains-any":"ARRAY_CONTAINS_ANY"};class Ha{constructor(e,t){this.databaseId=e,this.gt=t}}function Ka(e,t){return e.gt?`${new Date(1e3*t.seconds).toISOString().replace(/\.\d*/,"").replace("Z","")}.${("000000000"+t.nanoseconds).slice(-9)}Z`:{seconds:""+t.seconds,nanos:t.nanoseconds}}function Ga(e,t){return e.gt?t.toBase64():t.toUint8Array()}function Wa(e,t){return Ka(e,t.toTimestamp())}function Qa(e){return jr(!!e),oi.fromTimestamp(function(e){const t=Ni(e);return new ii(t.seconds,t.nanos)}(e))}function Xa(e,t){return function(e){return new ci(["projects",e.projectId,"databases",e.database])}(e).child("documents").child(t).canonicalString()}function Ya(e){const t=ci.fromString(e);return jr(mc(t)),t}function Ja(e,t){return Xa(e.databaseId,t.path)}function Za(e,t){const n=Ya(t);if(n.get(1)!==e.databaseId.projectId)throw new Hr(zr.INVALID_ARGUMENT,"Tried to deserialize key from different project: "+n.get(1)+" vs "+e.databaseId.projectId);if(n.get(3)!==e.databaseId.database)throw new Hr(zr.INVALID_ARGUMENT,"Tried to deserialize key from different database: "+n.get(3)+" vs "+e.databaseId.database);return new hi(nc(n))}function ec(e,t){return Xa(e.databaseId,t)}function tc(e){return new ci(["projects",e.databaseId.projectId,"databases",e.databaseId.database]).canonicalString()}function nc(e){return jr(e.length>4&&"documents"===e.get(4)),e.popFirst(5)}function sc(e,t,n){return{name:Ja(e,t),fields:n.value.mapValue.fields}}function rc(e,t){return{documents:[ec(e,t.path)]}}function ic(e,t){const n={structuredQuery:{}},s=t.path;null!==t.collectionGroup?(n.parent=ec(e,s),n.structuredQuery.from=[{collectionId:t.collectionGroup,allDescendants:!0}]):(n.parent=ec(e,s.popLast()),n.structuredQuery.from=[{collectionId:s.lastSegment()}]);const r=function(e){if(0===e.length)return;const t=e.map((e=>function(e){if("=="===e.op){if(Ji(e.value))return{unaryFilter:{field:lc(e.field),op:"IS_NAN"}};if(Yi(e.value))return{unaryFilter:{field:lc(e.field),op:"IS_NULL"}}}else if("!="===e.op){if(Ji(e.value))return{unaryFilter:{field:lc(e.field),op:"IS_NOT_NAN"}};if(Yi(e.value))return{unaryFilter:{field:lc(e.field),op:"IS_NOT_NULL"}}}return{fieldFilter:{field:lc(e.field),op:uc(e.op),value:e.value}}}(e)));return 1===t.length?t[0]:{compositeFilter:{op:"AND",filters:t}}}(t.filters);r&&(n.structuredQuery.where=r);const i=function(e){if(0!==e.length)return e.map((e=>function(e){return{field:lc(e.field),direction:cc(e.dir)}}(e)))}(t.orderBy);i&&(n.structuredQuery.orderBy=i);const o=function(e,t){return e.gt||Vi(t)?t:{value:t}}(e,t.limit);var a;return null!==o&&(n.structuredQuery.limit=o),t.startAt&&(n.structuredQuery.startAt={before:(a=t.startAt).inclusive,values:a.position}),t.endAt&&(n.structuredQuery.endAt=function(e){return{before:!e.inclusive,values:e.position}}(t.endAt)),n}function oc(e){let t=function(e){const t=Ya(e);return 4===t.length?ci.emptyPath():nc(t)}(e.parent);const n=e.structuredQuery,s=n.from?n.from.length:0;let r=null;if(s>0){jr(1===s);const e=n.from[0];e.allDescendants?r=e.collectionId:t=t.child(e.collectionId)}let i=[];n.where&&(i=ac(n.where));let o=[];n.orderBy&&(o=n.orderBy.map((e=>function(e){return new bo(hc(e.field),function(e){switch(e){case"ASCENDING":return"asc";case"DESCENDING":return"desc";default:return}}(e.direction))}(e))));let a=null;n.limit&&(a=function(e){let t;return t="object"==typeof e?e.value:e,Vi(t)?null:t}(n.limit));let c=null;n.startAt&&(c=function(e){const t=!!e.before,n=e.values||[];return new _o(n,t)}(n.startAt));let u=null;return n.endAt&&(u=function(e){const t=!e.before,n=e.values||[];return new _o(n,t)}(n.endAt)),function(e,t,n,s,r,i,o,a){return new ko(e,t,n,s,r,i,o,a)}(t,r,o,i,a,"F",c,u)}function ac(e){return e?void 0!==e.unaryFilter?[fc(e)]:void 0!==e.fieldFilter?[dc(e)]:void 0!==e.compositeFilter?e.compositeFilter.filters.map((e=>ac(e))).reduce(((e,t)=>e.concat(t))):$r():[]}function cc(e){return qa[e]}function uc(e){return za[e]}function lc(e){return{fieldPath:e.canonicalString()}}function hc(e){return li.fromServerFormat(e.fieldPath)}function dc(e){return lo.create(hc(e.fieldFilter.field),function(e){switch(e){case"EQUAL":return"==";case"NOT_EQUAL":return"!=";case"GREATER_THAN":return">";case"GREATER_THAN_OR_EQUAL":return">=";case"LESS_THAN":return"<";case"LESS_THAN_OR_EQUAL":return"<=";case"ARRAY_CONTAINS":return"array-contains";case"IN":return"in";case"NOT_IN":return"not-in";case"ARRAY_CONTAINS_ANY":return"array-contains-any";default:return $r()}}(e.fieldFilter.op),e.fieldFilter.value)}function fc(e){switch(e.unaryFilter.op){case"IS_NAN":const t=hc(e.unaryFilter.field);return lo.create(t,"==",{doubleValue:NaN});case"IS_NULL":const n=hc(e.unaryFilter.field);return lo.create(n,"==",{nullValue:"NULL_VALUE"});case"IS_NOT_NAN":const s=hc(e.unaryFilter.field);return lo.create(s,"!=",{doubleValue:NaN});case"IS_NOT_NULL":const r=hc(e.unaryFilter.field);return lo.create(r,"!=",{nullValue:"NULL_VALUE"});default:return $r()}}function pc(e){const t=[];return e.fields.forEach((e=>t.push(e.canonicalString()))),{fieldPaths:t}}function mc(e){return e.length>=4&&"projects"===e.get(0)&&"databases"===e.get(2)}class gc{constructor(e,t,n,s){this.batchId=e,this.localWriteTime=t,this.baseMutations=n,this.mutations=s}applyToRemoteDocument(e,t){const n=t.mutationResults;for(let t=0;t{const r=e.get(s.key),i=r.overlayedDocument;let o=this.applyToLocalView(i,r.mutatedFields);o=t.has(s.key)?null:o;const a=ra(i,o);null!==a&&n.set(s.key,a),i.isValidDocument()||i.convertToNoDocument(oi.min())})),n}keys(){return this.mutations.reduce(((e,t)=>e.add(t.key)),Na())}isEqual(e){return this.batchId===e.batchId&&ri(this.mutations,e.mutations,((e,t)=>ca(e,t)))&&ri(this.baseMutations,e.baseMutations,((e,t)=>ca(e,t)))}}class yc{constructor(e,t,n,s){this.batch=e,this.commitVersion=t,this.mutationResults=n,this.docVersions=s}static from(e,t,n){jr(e.mutations.length===n.length);let s=Ra;const r=e.mutations;for(let e=0;e{this.le(t,60),this.Ie(e,t)}))}le(e,t){e.fe(t)}we(e){e.fe(2)}}Tc.Te=new Tc;class Ec{constructor(){this.Ye=new Ic}addToCollectionParentIndex(e,t){return this.Ye.add(t),yi.resolve()}getCollectionParents(e,t){return yi.resolve(this.Ye.getEntries(t))}addFieldIndex(e,t){return yi.resolve()}deleteFieldIndex(e,t){return yi.resolve()}getDocumentsMatchingTarget(e,t){return yi.resolve(null)}getIndexType(e,t){return yi.resolve(0)}getFieldIndexes(e,t){return yi.resolve([])}getNextCollectionGroupToUpdate(e){return yi.resolve(null)}getMinOffset(e,t){return yi.resolve(fi.min())}getMinOffsetFromCollectionGroup(e,t){return yi.resolve(fi.min())}updateCollectionGroup(e,t,n){return yi.resolve()}updateIndexEntries(e,t){return yi.resolve()}}class Ic{constructor(){this.index={}}add(e){const t=e.lastSegment(),n=e.popLast(),s=this.index[t]||new Si(ci.comparator),r=!s.has(n);return this.index[t]=s.add(n),r}has(e){const t=e.lastSegment(),n=e.popLast(),s=this.index[t];return s&&s.has(n)}getEntries(e){return(this.index[e]||new Si(ci.comparator)).toArray()}}new Uint8Array(0);class kc{constructor(e,t,n){this.cacheSizeCollectionThreshold=e,this.percentileToCollect=t,this.maximumSequenceNumbersToCollect=n}static withCacheSize(e){return new kc(e,kc.DEFAULT_COLLECTION_PERCENTILE,kc.DEFAULT_MAX_SEQUENCE_NUMBERS_TO_COLLECT)}}kc.DEFAULT_COLLECTION_PERCENTILE=10,kc.DEFAULT_MAX_SEQUENCE_NUMBERS_TO_COLLECT=1e3,kc.DEFAULT=new kc(41943040,kc.DEFAULT_COLLECTION_PERCENTILE,kc.DEFAULT_MAX_SEQUENCE_NUMBERS_TO_COLLECT),kc.DISABLED=new kc(-1,0,0);class Sc{constructor(e){this.bn=e}next(){return this.bn+=2,this.bn}static Pn(){return new Sc(0)}static vn(){return new Sc(-1)}}class Cc{constructor(){this.changes=new _a((e=>e.toString()),((e,t)=>e.isEqual(t))),this.changesApplied=!1}addEntry(e){this.assertNotApplied(),this.changes.set(e.key,e)}removeEntry(e,t){this.assertNotApplied(),this.changes.set(e,ro.newInvalidDocument(e).setReadTime(t))}getEntry(e,t){this.assertNotApplied();const n=this.changes.get(t);return void 0!==n?yi.resolve(n):this.getFromCache(e,t)}getEntries(e,t){return this.getAllFromCache(e,t)}apply(e){return this.assertNotApplied(),this.changesApplied=!0,this.applyChanges(e)}assertNotApplied(){}}class Ac{constructor(e,t){this.overlayedDocument=e,this.mutatedFields=t}}class Rc{constructor(e,t,n,s){this.remoteDocumentCache=e,this.mutationQueue=t,this.documentOverlayCache=n,this.indexManager=s}getDocument(e,t){let n=null;return this.documentOverlayCache.getOverlay(e,t).next((s=>(n=s,this.getBaseDocument(e,t,n)))).next((e=>(null!==n&&oa(n.mutation,e,Ai.empty(),ii.now()),e)))}getDocuments(e,t){return this.remoteDocumentCache.getEntries(e,t).next((t=>this.getLocalViewOfDocuments(e,t,Na()).next((()=>t))))}getLocalViewOfDocuments(e,t,n=Na()){const s=Sa();return this.populateOverlays(e,s,t).next((()=>this.computeViews(e,t,s,n).next((e=>{let t=Ia();return e.forEach(((e,n)=>{t=t.insert(e,n.overlayedDocument)})),t}))))}getOverlayedDocuments(e,t){const n=Sa();return this.populateOverlays(e,n,t).next((()=>this.computeViews(e,t,n,Na())))}populateOverlays(e,t,n){const s=[];return n.forEach((e=>{t.has(e)||s.push(e)})),this.documentOverlayCache.getOverlays(e,s).next((e=>{e.forEach(((e,n)=>{t.set(e,n)}))}))}computeViews(e,t,n,s){let r=Ta();const i=Aa(),o=Aa();return t.forEach(((e,t)=>{const o=n.get(t.key);s.has(t.key)&&(void 0===o||o.mutation instanceof la)?r=r.insert(t.key,t):void 0!==o&&(i.set(t.key,o.mutation.getFieldMask()),oa(o.mutation,t,o.mutation.getFieldMask(),ii.now()))})),this.recalculateAndSaveOverlays(e,r).next((e=>(e.forEach(((e,t)=>i.set(e,t))),t.forEach(((e,t)=>{var n;return o.set(e,new Ac(t,null!==(n=i.get(e))&&void 0!==n?n:null))})),o)))}recalculateAndSaveOverlays(e,t){const n=Aa();let s=new Ei(((e,t)=>e-t)),r=Na();return this.mutationQueue.getAllMutationBatchesAffectingDocumentKeys(e,t).next((e=>{for(const r of e)r.keys().forEach((e=>{const i=t.get(e);if(null===i)return;let o=n.get(e)||Ai.empty();o=r.applyToLocalView(i,o),n.set(e,o);const a=(s.get(r.batchId)||Na()).add(e);s=s.insert(r.batchId,a)}))})).next((()=>{const i=[],o=s.getReverseIterator();for(;o.hasNext();){const s=o.getNext(),a=s.key,c=s.value,u=Ca();c.forEach((e=>{if(!r.has(e)){const s=ra(t.get(e),n.get(e));null!==s&&u.set(e,s),r=r.add(e)}})),i.push(this.documentOverlayCache.saveOverlays(e,a,u))}return yi.waitFor(i)})).next((()=>n))}recalculateAndSaveOverlaysForDocumentKeys(e,t){return this.remoteDocumentCache.getEntries(e,t).next((t=>this.recalculateAndSaveOverlays(e,t)))}getDocumentsMatchingQuery(e,t,n){return function(e){return hi.isDocumentKey(e.path)&&null===e.collectionGroup&&0===e.filters.length}(t)?this.getDocumentsMatchingDocumentQuery(e,t.path):function(e){return null!==e.collectionGroup}(t)?this.getDocumentsMatchingCollectionGroupQuery(e,t,n):this.getDocumentsMatchingCollectionQuery(e,t,n)}getNextDocuments(e,t,n,s){return this.remoteDocumentCache.getAllFromCollectionGroup(e,t,n,s).next((r=>{const i=s-r.size>0?this.documentOverlayCache.getOverlaysForCollectionGroup(e,t,n.largestBatchId,s-r.size):yi.resolve(Sa());let o=-1,a=r;return i.next((t=>yi.forEach(t,((t,n)=>(o{a=a.insert(t,e)}))))).next((()=>this.populateOverlays(e,t,r))).next((()=>this.computeViews(e,a,t,Na()))).next((e=>({batchId:o,changes:ka(e)})))))}))}getDocumentsMatchingDocumentQuery(e,t){return this.getDocument(e,new hi(t)).next((e=>{let t=Ia();return e.isFoundDocument()&&(t=t.insert(e.key,e)),t}))}getDocumentsMatchingCollectionGroupQuery(e,t,n){const s=t.collectionGroup;let r=Ia();return this.indexManager.getCollectionParents(e,s).next((i=>yi.forEach(i,(i=>{const o=function(e,t){return new ko(t,null,e.explicitOrderBy.slice(),e.filters.slice(),e.limit,e.limitType,e.startAt,e.endAt)}(t,i.child(s));return this.getDocumentsMatchingCollectionQuery(e,o,n).next((e=>{e.forEach(((e,t)=>{r=r.insert(e,t)}))}))})).next((()=>r))))}getDocumentsMatchingCollectionQuery(e,t,n){let s;return this.remoteDocumentCache.getAllFromCollection(e,t.path,n).next((r=>(s=r,this.documentOverlayCache.getOverlaysForCollection(e,t.path,n.largestBatchId)))).next((e=>{e.forEach(((e,t)=>{const n=t.getKey();null===s.get(n)&&(s=s.insert(n,ro.newInvalidDocument(n)))}));let n=Ia();return s.forEach(((s,r)=>{const i=e.get(s);void 0!==i&&oa(i.mutation,r,Ai.empty(),ii.now()),Mo(t,r)&&(n=n.insert(s,r))})),n}))}getBaseDocument(e,t,n){return null===n||1===n.mutation.type?this.remoteDocumentCache.getEntry(e,t):yi.resolve(ro.newInvalidDocument(t))}}class Dc{constructor(e){this.It=e,this.Zn=new Map,this.ts=new Map}getBundleMetadata(e,t){return yi.resolve(this.Zn.get(t))}saveBundleMetadata(e,t){var n;return this.Zn.set(t.id,{id:(n=t).id,version:n.version,createTime:Qa(n.createTime)}),yi.resolve()}getNamedQuery(e,t){return yi.resolve(this.ts.get(t))}saveNamedQuery(e,t){return this.ts.set(t.name,function(e){return{name:e.name,query:bc(e.bundledQuery),readTime:Qa(e.readTime)}}(t)),yi.resolve()}}class Nc{constructor(){this.overlays=new Ei(hi.comparator),this.es=new Map}getOverlay(e,t){return yi.resolve(this.overlays.get(t))}getOverlays(e,t){const n=Sa();return yi.forEach(t,(t=>this.getOverlay(e,t).next((e=>{null!==e&&n.set(t,e)})))).next((()=>n))}saveOverlays(e,t,n){return n.forEach(((n,s)=>{this.ue(e,t,s)})),yi.resolve()}removeOverlaysForBatchId(e,t,n){const s=this.es.get(n);return void 0!==s&&(s.forEach((e=>this.overlays=this.overlays.remove(e))),this.es.delete(n)),yi.resolve()}getOverlaysForCollection(e,t,n){const s=Sa(),r=t.length+1,i=new hi(t.child("")),o=this.overlays.getIteratorFrom(i);for(;o.hasNext();){const e=o.getNext().value,i=e.getKey();if(!t.isPrefixOf(i.path))break;i.path.length===r&&e.largestBatchId>n&&s.set(e.getKey(),e)}return yi.resolve(s)}getOverlaysForCollectionGroup(e,t,n,s){let r=new Ei(((e,t)=>e-t));const i=this.overlays.getIterator();for(;i.hasNext();){const e=i.getNext().value;if(e.getKey().getCollectionGroup()===t&&e.largestBatchId>n){let t=r.get(e.largestBatchId);null===t&&(t=Sa(),r=r.insert(e.largestBatchId,t)),t.set(e.getKey(),e)}}const o=Sa(),a=r.getIterator();for(;a.hasNext()&&(a.getNext().value.forEach(((e,t)=>o.set(e,t))),!(o.size()>=s)););return yi.resolve(o)}ue(e,t,n){const s=this.overlays.get(n.key);if(null!==s){const e=this.es.get(s.largestBatchId).delete(n.key);this.es.set(s.largestBatchId,e)}this.overlays=this.overlays.insert(n.key,new vc(t,n));let r=this.es.get(t);void 0===r&&(r=Na(),this.es.set(t,r)),this.es.set(t,r.add(n.key))}}class Oc{constructor(){this.ns=new Si(Lc.ss),this.rs=new Si(Lc.os)}isEmpty(){return this.ns.isEmpty()}addReference(e,t){const n=new Lc(e,t);this.ns=this.ns.add(n),this.rs=this.rs.add(n)}us(e,t){e.forEach((e=>this.addReference(e,t)))}removeReference(e,t){this.cs(new Lc(e,t))}hs(e,t){e.forEach((e=>this.removeReference(e,t)))}ls(e){const t=new hi(new ci([])),n=new Lc(t,e),s=new Lc(t,e+1),r=[];return this.rs.forEachInRange([n,s],(e=>{this.cs(e),r.push(e.key)})),r}fs(){this.ns.forEach((e=>this.cs(e)))}cs(e){this.ns=this.ns.delete(e),this.rs=this.rs.delete(e)}ds(e){const t=new hi(new ci([])),n=new Lc(t,e),s=new Lc(t,e+1);let r=Na();return this.rs.forEachInRange([n,s],(e=>{r=r.add(e.key)})),r}containsKey(e){const t=new Lc(e,0),n=this.ns.firstAfterOrEqual(t);return null!==n&&e.isEqual(n.key)}}class Lc{constructor(e,t){this.key=e,this._s=t}static ss(e,t){return hi.comparator(e.key,t.key)||si(e._s,t._s)}static os(e,t){return si(e._s,t._s)||hi.comparator(e.key,t.key)}}class xc{constructor(e,t){this.indexManager=e,this.referenceDelegate=t,this.mutationQueue=[],this.ws=1,this.gs=new Si(Lc.ss)}checkEmpty(e){return yi.resolve(0===this.mutationQueue.length)}addMutationBatch(e,t,n,s){const r=this.ws;this.ws++,this.mutationQueue.length>0&&this.mutationQueue[this.mutationQueue.length-1];const i=new gc(r,t,n,s);this.mutationQueue.push(i);for(const t of s)this.gs=this.gs.add(new Lc(t.key,r)),this.indexManager.addToCollectionParentIndex(e,t.key.path.popLast());return yi.resolve(i)}lookupMutationBatch(e,t){return yi.resolve(this.ys(t))}getNextMutationBatchAfterBatchId(e,t){const n=t+1,s=this.ps(n),r=s<0?0:s;return yi.resolve(this.mutationQueue.length>r?this.mutationQueue[r]:null)}getHighestUnacknowledgedBatchId(){return yi.resolve(0===this.mutationQueue.length?-1:this.ws-1)}getAllMutationBatches(e){return yi.resolve(this.mutationQueue.slice())}getAllMutationBatchesAffectingDocumentKey(e,t){const n=new Lc(t,0),s=new Lc(t,Number.POSITIVE_INFINITY),r=[];return this.gs.forEachInRange([n,s],(e=>{const t=this.ys(e._s);r.push(t)})),yi.resolve(r)}getAllMutationBatchesAffectingDocumentKeys(e,t){let n=new Si(si);return t.forEach((e=>{const t=new Lc(e,0),s=new Lc(e,Number.POSITIVE_INFINITY);this.gs.forEachInRange([t,s],(e=>{n=n.add(e._s)}))})),yi.resolve(this.Is(n))}getAllMutationBatchesAffectingQuery(e,t){const n=t.path,s=n.length+1;let r=n;hi.isDocumentKey(r)||(r=r.child(""));const i=new Lc(new hi(r),0);let o=new Si(si);return this.gs.forEachWhile((e=>{const t=e.key.path;return!!n.isPrefixOf(t)&&(t.length===s&&(o=o.add(e._s)),!0)}),i),yi.resolve(this.Is(o))}Is(e){const t=[];return e.forEach((e=>{const n=this.ys(e);null!==n&&t.push(n)})),t}removeMutationBatch(e,t){jr(0===this.Ts(t.batchId,"removed")),this.mutationQueue.shift();let n=this.gs;return yi.forEach(t.mutations,(s=>{const r=new Lc(s.key,t.batchId);return n=n.delete(r),this.referenceDelegate.markPotentiallyOrphaned(e,s.key)})).next((()=>{this.gs=n}))}An(e){}containsKey(e,t){const n=new Lc(t,0),s=this.gs.firstAfterOrEqual(n);return yi.resolve(t.isEqual(s&&s.key))}performConsistencyCheck(e){return this.mutationQueue.length,yi.resolve()}Ts(e,t){return this.ps(e)}ps(e){return 0===this.mutationQueue.length?0:e-this.mutationQueue[0].batchId}ys(e){const t=this.ps(e);return t<0||t>=this.mutationQueue.length?null:this.mutationQueue[t]}}class Pc{constructor(e){this.Es=e,this.docs=new Ei(hi.comparator),this.size=0}setIndexManager(e){this.indexManager=e}addEntry(e,t){const n=t.key,s=this.docs.get(n),r=s?s.size:0,i=this.Es(t);return this.docs=this.docs.insert(n,{document:t.mutableCopy(),size:i}),this.size+=i-r,this.indexManager.addToCollectionParentIndex(e,n.path.popLast())}removeEntry(e){const t=this.docs.get(e);t&&(this.docs=this.docs.remove(e),this.size-=t.size)}getEntry(e,t){const n=this.docs.get(t);return yi.resolve(n?n.document.mutableCopy():ro.newInvalidDocument(t))}getEntries(e,t){let n=Ta();return t.forEach((e=>{const t=this.docs.get(e);n=n.insert(e,t?t.document.mutableCopy():ro.newInvalidDocument(e))})),yi.resolve(n)}getAllFromCollection(e,t,n){let s=Ta();const r=new hi(t.child("")),i=this.docs.getIteratorFrom(r);for(;i.hasNext();){const{key:e,value:{document:r}}=i.getNext();if(!t.isPrefixOf(e.path))break;e.path.length>t.length+1||pi(di(r),n)<=0||(s=s.insert(r.key,r.mutableCopy()))}return yi.resolve(s)}getAllFromCollectionGroup(e,t,n,s){$r()}As(e,t){return yi.forEach(this.docs,(e=>t(e)))}newChangeBuffer(e){return new Mc(this)}getSize(e){return yi.resolve(this.size)}}class Mc extends Cc{constructor(e){super(),this.Yn=e}applyChanges(e){const t=[];return this.changes.forEach(((n,s)=>{s.isValidDocument()?t.push(this.Yn.addEntry(e,s)):this.Yn.removeEntry(n)})),yi.waitFor(t)}getFromCache(e,t){return this.Yn.getEntry(e,t)}getAllFromCache(e,t){return this.Yn.getEntries(e,t)}}class Uc{constructor(e){this.persistence=e,this.Rs=new _a((e=>ao(e)),co),this.lastRemoteSnapshotVersion=oi.min(),this.highestTargetId=0,this.bs=0,this.Ps=new Oc,this.targetCount=0,this.vs=Sc.Pn()}forEachTarget(e,t){return this.Rs.forEach(((e,n)=>t(n))),yi.resolve()}getLastRemoteSnapshotVersion(e){return yi.resolve(this.lastRemoteSnapshotVersion)}getHighestSequenceNumber(e){return yi.resolve(this.bs)}allocateTargetId(e){return this.highestTargetId=this.vs.next(),yi.resolve(this.highestTargetId)}setTargetsMetadata(e,t,n){return n&&(this.lastRemoteSnapshotVersion=n),t>this.bs&&(this.bs=t),yi.resolve()}Dn(e){this.Rs.set(e.target,e);const t=e.targetId;t>this.highestTargetId&&(this.vs=new Sc(t),this.highestTargetId=t),e.sequenceNumber>this.bs&&(this.bs=e.sequenceNumber)}addTargetData(e,t){return this.Dn(t),this.targetCount+=1,yi.resolve()}updateTargetData(e,t){return this.Dn(t),yi.resolve()}removeTargetData(e,t){return this.Rs.delete(t.target),this.Ps.ls(t.targetId),this.targetCount-=1,yi.resolve()}removeTargets(e,t,n){let s=0;const r=[];return this.Rs.forEach(((i,o)=>{o.sequenceNumber<=t&&null===n.get(o.targetId)&&(this.Rs.delete(i),r.push(this.removeMatchingKeysForTargetId(e,o.targetId)),s++)})),yi.waitFor(r).next((()=>s))}getTargetCount(e){return yi.resolve(this.targetCount)}getTargetData(e,t){const n=this.Rs.get(t)||null;return yi.resolve(n)}addMatchingKeys(e,t,n){return this.Ps.us(t,n),yi.resolve()}removeMatchingKeys(e,t,n){this.Ps.hs(t,n);const s=this.persistence.referenceDelegate,r=[];return s&&t.forEach((t=>{r.push(s.markPotentiallyOrphaned(e,t))})),yi.waitFor(r)}removeMatchingKeysForTargetId(e,t){return this.Ps.ls(t),yi.resolve()}getMatchingKeysForTargetId(e,t){const n=this.Ps.ds(t);return yi.resolve(n)}containsKey(e,t){return yi.resolve(this.Ps.containsKey(t))}}class Fc{constructor(e,t){this.Vs={},this.overlays={},this.Ss=new wi(0),this.Ds=!1,this.Ds=!0,this.referenceDelegate=e(this),this.Cs=new Uc(this),this.indexManager=new Ec,this.remoteDocumentCache=function(e){return new Pc(e)}((e=>this.referenceDelegate.xs(e))),this.It=new _c(t),this.Ns=new Dc(this.It)}start(){return Promise.resolve()}shutdown(){return this.Ds=!1,Promise.resolve()}get started(){return this.Ds}setDatabaseDeletedListener(){}setNetworkEnabled(){}getIndexManager(e){return this.indexManager}getDocumentOverlayCache(e){let t=this.overlays[e.toKey()];return t||(t=new Nc,this.overlays[e.toKey()]=t),t}getMutationQueue(e,t){let n=this.Vs[e.toKey()];return n||(n=new xc(t,this.referenceDelegate),this.Vs[e.toKey()]=n),n}getTargetCache(){return this.Cs}getRemoteDocumentCache(){return this.remoteDocumentCache}getBundleCache(){return this.Ns}runTransaction(e,t,n){Ur("MemoryPersistence","Starting transaction:",e);const s=new Vc(this.Ss.next());return this.referenceDelegate.ks(),n(s).next((e=>this.referenceDelegate.Os(s).next((()=>e)))).toPromise().then((e=>(s.raiseOnCommittedEvent(),e)))}Ms(e,t){return yi.or(Object.values(this.Vs).map((n=>()=>n.containsKey(e,t))))}}class Vc extends mi{constructor(e){super(),this.currentSequenceNumber=e}}class Bc{constructor(e){this.persistence=e,this.Fs=new Oc,this.$s=null}static Bs(e){return new Bc(e)}get Ls(){if(this.$s)return this.$s;throw $r()}addReference(e,t,n){return this.Fs.addReference(n,t),this.Ls.delete(n.toString()),yi.resolve()}removeReference(e,t,n){return this.Fs.removeReference(n,t),this.Ls.add(n.toString()),yi.resolve()}markPotentiallyOrphaned(e,t){return this.Ls.add(t.toString()),yi.resolve()}removeTarget(e,t){this.Fs.ls(t.targetId).forEach((e=>this.Ls.add(e.toString())));const n=this.persistence.getTargetCache();return n.getMatchingKeysForTargetId(e,t.targetId).next((e=>{e.forEach((e=>this.Ls.add(e.toString())))})).next((()=>n.removeTargetData(e,t)))}ks(){this.$s=new Set}Os(e){const t=this.persistence.getRemoteDocumentCache().newChangeBuffer();return yi.forEach(this.Ls,(n=>{const s=hi.fromPath(n);return this.Us(e,s).next((e=>{e||t.removeEntry(s,oi.min())}))})).next((()=>(this.$s=null,t.apply(e))))}updateLimboDocument(e,t){return this.Us(e,t).next((e=>{e?this.Ls.delete(t.toString()):this.Ls.add(t.toString())}))}xs(e){return 0}Us(e,t){return yi.or([()=>yi.resolve(this.Fs.containsKey(t)),()=>this.persistence.getTargetCache().containsKey(e,t),()=>this.persistence.Ms(e,t)])}}class $c{constructor(e,t,n,s){this.targetId=e,this.fromCache=t,this.Si=n,this.Di=s}static Ci(e,t){let n=Na(),s=Na();for(const e of t.docChanges)switch(e.type){case 0:n=n.add(e.doc.key);break;case 1:s=s.add(e.doc.key)}return new $c(e,t.fromCache,n,s)}}class jc{constructor(){this.xi=!1}initialize(e,t){this.Ni=e,this.indexManager=t,this.xi=!0}getDocumentsMatchingQuery(e,t,n,s){return this.ki(e,t).next((r=>r||this.Oi(e,t,s,n))).next((n=>n||this.Mi(e,t)))}ki(e,t){if(Co(t))return yi.resolve(null);let n=No(t);return this.indexManager.getIndexType(e,n).next((s=>0===s?null:(null!==t.limit&&1===s&&(t=Oo(t,null,"F"),n=No(t)),this.indexManager.getDocumentsMatchingTarget(e,n).next((s=>{const r=Na(...s);return this.Ni.getDocuments(e,r).next((s=>this.indexManager.getMinOffset(e,n).next((n=>{const i=this.Fi(t,s);return this.$i(t,i,r,n.readTime)?this.ki(e,Oo(t,null,"F")):this.Bi(e,i,t,n)}))))})))))}Oi(e,t,n,s){return Co(t)||s.isEqual(oi.min())?this.Mi(e,t):this.Ni.getDocuments(e,n).next((r=>{const i=this.Fi(t,r);return this.$i(t,i,n,s)?this.Mi(e,t):(Mr()<=x.DEBUG&&Ur("QueryEngine","Re-using previous result from %s to execute query: %s",s.toString(),Po(t)),this.Bi(e,i,t,function(e,t){const n=e.toTimestamp().seconds,s=e.toTimestamp().nanoseconds+1,r=oi.fromTimestamp(1e9===s?new ii(n+1,0):new ii(n,s));return new fi(r,hi.empty(),t)}(s,-1)))}))}Fi(e,t){let n=new Si(Uo(e));return t.forEach(((t,s)=>{Mo(e,s)&&(n=n.add(s))})),n}$i(e,t,n,s){if(null===e.limit)return!1;if(n.size!==t.size)return!0;const r="F"===e.limitType?t.last():t.first();return!!r&&(r.hasPendingWrites||r.version.compareTo(s)>0)}Mi(e,t){return Mr()<=x.DEBUG&&Ur("QueryEngine","Using full collection scan to execute query:",Po(t)),this.Ni.getDocumentsMatchingQuery(e,t,fi.min())}Bi(e,t,n,s){return this.Ni.getDocumentsMatchingQuery(e,n,s).next((e=>(t.forEach((t=>{e=e.insert(t.key,t)})),e)))}}class qc{constructor(e,t,n,s){this.persistence=e,this.Li=t,this.It=s,this.Ui=new Ei(si),this.qi=new _a((e=>ao(e)),co),this.Ki=new Map,this.Gi=e.getRemoteDocumentCache(),this.Cs=e.getTargetCache(),this.Ns=e.getBundleCache(),this.Qi(n)}Qi(e){this.documentOverlayCache=this.persistence.getDocumentOverlayCache(e),this.indexManager=this.persistence.getIndexManager(e),this.mutationQueue=this.persistence.getMutationQueue(e,this.indexManager),this.localDocuments=new Rc(this.Gi,this.mutationQueue,this.documentOverlayCache,this.indexManager),this.Gi.setIndexManager(this.indexManager),this.Li.initialize(this.localDocuments,this.indexManager)}collectGarbage(e){return this.persistence.runTransaction("Collect garbage","readwrite-primary",(t=>e.collect(t,this.Ui)))}}async function zc(e,t){const n=qr(e);return await n.persistence.runTransaction("Handle user change","readonly",(e=>{let s;return n.mutationQueue.getAllMutationBatches(e).next((r=>(s=r,n.Qi(t),n.mutationQueue.getAllMutationBatches(e)))).next((t=>{const r=[],i=[];let o=Na();for(const e of s){r.push(e.batchId);for(const t of e.mutations)o=o.add(t.key)}for(const e of t){i.push(e.batchId);for(const t of e.mutations)o=o.add(t.key)}return n.localDocuments.getDocuments(e,o).next((e=>({ji:e,removedBatchIds:r,addedBatchIds:i})))}))}))}function Hc(e){const t=qr(e);return t.persistence.runTransaction("Get last remote snapshot version","readonly",(e=>t.Cs.getLastRemoteSnapshotVersion(e)))}function Kc(e,t){const n=qr(e);return n.persistence.runTransaction("Get next mutation batch","readonly",(e=>(void 0===t&&(t=-1),n.mutationQueue.getNextMutationBatchAfterBatchId(e,t))))}async function Gc(e,t,n){const s=qr(e),r=s.Ui.get(t),i=n?"readwrite":"readwrite-primary";try{n||await s.persistence.runTransaction("Release target",i,(e=>s.persistence.referenceDelegate.removeTarget(e,r)))}catch(e){if(!vi(e))throw e;Ur("LocalStore",`Failed to update sequence numbers for target ${t}: ${e}`)}s.Ui=s.Ui.remove(t),s.qi.delete(r.target)}function Wc(e,t,n){const s=qr(e);let r=oi.min(),i=Na();return s.persistence.runTransaction("Execute query","readonly",(e=>function(e,t,n){const s=qr(e),r=s.qi.get(n);return void 0!==r?yi.resolve(s.Ui.get(r)):s.Cs.getTargetData(t,n)}(s,e,No(t)).next((t=>{if(t)return r=t.lastLimboFreeSnapshotVersion,s.Cs.getMatchingKeysForTargetId(e,t.targetId).next((e=>{i=e}))})).next((()=>s.Li.getDocumentsMatchingQuery(e,t,n?r:oi.min(),n?i:Na()))).next((e=>(function(e,t,n){let s=e.Ki.get(t)||oi.min();n.forEach(((e,t)=>{t.readTime.compareTo(s)>0&&(s=t.readTime)})),e.Ki.set(t,s)}(s,function(e){return e.collectionGroup||(e.path.length%2==1?e.path.lastSegment():e.path.get(e.path.length-2))}(t),e),{documents:e,Hi:i})))))}class Qc{constructor(){this.activeTargetIds=La()}er(e){this.activeTargetIds=this.activeTargetIds.add(e)}nr(e){this.activeTargetIds=this.activeTargetIds.delete(e)}tr(){const e={activeTargetIds:this.activeTargetIds.toArray(),updateTimeMs:Date.now()};return JSON.stringify(e)}}class Xc{constructor(){this.Lr=new Qc,this.Ur={},this.onlineStateHandler=null,this.sequenceNumberHandler=null}addPendingMutation(e){}updateMutationState(e,t,n){}addLocalQueryTarget(e){return this.Lr.er(e),this.Ur[e]||"not-current"}updateQueryState(e,t,n){this.Ur[e]=t}removeLocalQueryTarget(e){this.Lr.nr(e)}isLocalQueryTarget(e){return this.Lr.activeTargetIds.has(e)}clearQueryState(e){delete this.Ur[e]}getAllActiveQueryTargets(){return this.Lr.activeTargetIds}isActiveQueryTarget(e){return this.Lr.activeTargetIds.has(e)}start(){return this.Lr=new Qc,Promise.resolve()}handleUserChange(e,t,n){}setOnlineState(e){}shutdown(){}writeSequenceNumber(e){}notifyBundleLoaded(e){}}class Yc{qr(e){}shutdown(){}}class Jc{constructor(){this.Kr=()=>this.Gr(),this.Qr=()=>this.jr(),this.Wr=[],this.zr()}qr(e){this.Wr.push(e)}shutdown(){window.removeEventListener("online",this.Kr),window.removeEventListener("offline",this.Qr)}zr(){window.addEventListener("online",this.Kr),window.addEventListener("offline",this.Qr)}Gr(){Ur("ConnectivityMonitor","Network connectivity changed: AVAILABLE");for(const e of this.Wr)e(0)}jr(){Ur("ConnectivityMonitor","Network connectivity changed: UNAVAILABLE");for(const e of this.Wr)e(1)}static C(){return"undefined"!=typeof window&&void 0!==window.addEventListener&&void 0!==window.removeEventListener}}const Zc={BatchGetDocuments:"batchGet",Commit:"commit",RunQuery:"runQuery",RunAggregationQuery:"runAggregationQuery"};class eu{constructor(e){this.Hr=e.Hr,this.Jr=e.Jr}Yr(e){this.Xr=e}Zr(e){this.eo=e}onMessage(e){this.no=e}close(){this.Jr()}send(e){this.Hr(e)}so(){this.Xr()}io(e){this.eo(e)}ro(e){this.no(e)}}class tu extends class{constructor(e){this.databaseInfo=e,this.databaseId=e.databaseId;const t=e.ssl?"https":"http";this.oo=t+"://"+e.host,this.uo="projects/"+this.databaseId.projectId+"/databases/"+this.databaseId.database+"/documents"}get co(){return!1}ao(e,t,n,s,r){const i=this.ho(e,t);Ur("RestConnection","Sending: ",i,n);const o={};return this.lo(o,s,r),this.fo(e,i,o,n).then((e=>(Ur("RestConnection","Received: ",e),e)),(t=>{throw Vr("RestConnection",`${e} failed with error: `,t,"url: ",i,"request:",n),t}))}_o(e,t,n,s,r,i){return this.ao(e,t,n,s,r)}lo(e,t,n){e["X-Goog-Api-Client"]="gl-js/ fire/"+xr,e["Content-Type"]="text/plain",this.databaseInfo.appId&&(e["X-Firebase-GMPID"]=this.databaseInfo.appId),t&&t.headers.forEach(((t,n)=>e[n]=t)),n&&n.headers.forEach(((t,n)=>e[n]=t))}ho(e,t){const n=Zc[e];return`${this.oo}/v1/${t}:${n}`}}{constructor(e){super(e),this.forceLongPolling=e.forceLongPolling,this.autoDetectLongPolling=e.autoDetectLongPolling,this.useFetchStreams=e.useFetchStreams}fo(e,t,n,s){return new Promise(((r,i)=>{const o=new Nr;o.setWithCredentials(!0),o.listenOnce(Sr.COMPLETE,(()=>{var t;try{switch(o.getLastErrorCode()){case kr.NO_ERROR:const n=o.getResponseJson();Ur("Connection","XHR received:",JSON.stringify(n)),r(n);break;case kr.TIMEOUT:Ur("Connection",'RPC "'+e+'" timed out'),i(new Hr(zr.DEADLINE_EXCEEDED,"Request time out"));break;case kr.HTTP_ERROR:const s=o.getStatus();if(Ur("Connection",'RPC "'+e+'" failed with status:',s,"response text:",o.getResponseText()),s>0){let e=o.getResponseJson();Array.isArray(e)&&(e=e[0]);const n=null===(t=e)||void 0===t?void 0:t.error;if(n&&n.status&&n.message){const e=function(e){const t=e.toLowerCase().replace(/_/g,"-");return Object.values(zr).indexOf(t)>=0?t:zr.UNKNOWN}(n.status);i(new Hr(e,n.message))}else i(new Hr(zr.UNKNOWN,"Server responded with status "+o.getStatus()))}else i(new Hr(zr.UNAVAILABLE,"Connection failed."));break;default:$r()}}finally{Ur("Connection",'RPC "'+e+'" completed.')}}));const a=JSON.stringify(s);o.send(t,"POST",a,n,15)}))}wo(e,t,n){const s=[this.oo,"/","google.firestore.v1.Firestore","/",e,"/channel"],r=Er(),i=Ir(),o={httpSessionIdParam:"gsessionid",initMessageHeaders:{},messageUrlParams:{database:`projects/${this.databaseId.projectId}/databases/${this.databaseId.database}`},sendRawJson:!0,supportsCrossDomainXhr:!0,internalChannelParams:{forwardChannelRequestTimeoutMs:6e5},forceLongPolling:this.forceLongPolling,detectBufferingProxy:this.autoDetectLongPolling};this.useFetchStreams&&(o.xmlHttpFactory=new Rr({})),this.lo(o.initMessageHeaders,t,n),o.encodeInitMessageHeaders=!0;const a=s.join("");Ur("Connection","Creating WebChannel: "+a,o);const c=r.createWebChannel(a,o);let u=!1,l=!1;const h=new eu({Hr:e=>{l?Ur("Connection","Not sending because WebChannel is closed:",e):(u||(Ur("Connection","Opening WebChannel transport."),c.open(),u=!0),Ur("Connection","WebChannel sending:",e),c.send(e))},Jr:()=>c.close()}),d=(e,t,n)=>{e.listen(t,(e=>{try{n(e)}catch(e){setTimeout((()=>{throw e}),0)}}))};return d(c,Dr.EventType.OPEN,(()=>{l||Ur("Connection","WebChannel transport opened.")})),d(c,Dr.EventType.CLOSE,(()=>{l||(l=!0,Ur("Connection","WebChannel transport closed"),h.io())})),d(c,Dr.EventType.ERROR,(e=>{l||(l=!0,Vr("Connection","WebChannel transport errored:",e),h.io(new Hr(zr.UNAVAILABLE,"The operation could not be completed")))})),d(c,Dr.EventType.MESSAGE,(e=>{var t;if(!l){const n=e.data[0];jr(!!n);const s=n,r=s.error||(null===(t=s[0])||void 0===t?void 0:t.error);if(r){Ur("Connection","WebChannel received error:",r);const e=r.status;let t=function(e){const t=ya[e];if(void 0!==t)return wa(t)}(e),n=r.message;void 0===t&&(t=zr.INTERNAL,n="Unknown error status: "+e+" with message "+r.message),l=!0,h.io(new Hr(t,n)),c.close()}else Ur("Connection","WebChannel received:",n),h.ro(n)}})),d(i,Cr.STAT_EVENT,(e=>{e.stat===Ar.PROXY?Ur("Connection","Detected buffering proxy"):e.stat===Ar.NOPROXY&&Ur("Connection","Detected no buffering proxy")})),setTimeout((()=>{h.so()}),0),h}}function nu(){return"undefined"!=typeof document?document:null}function su(e){return new Ha(e,!0)}class ru{constructor(e,t,n=1e3,s=1.5,r=6e4){this.Hs=e,this.timerId=t,this.mo=n,this.yo=s,this.po=r,this.Io=0,this.To=null,this.Eo=Date.now(),this.reset()}reset(){this.Io=0}Ao(){this.Io=this.po}Ro(e){this.cancel();const t=Math.floor(this.Io+this.bo()),n=Math.max(0,Date.now()-this.Eo),s=Math.max(0,t-n);s>0&&Ur("ExponentialBackoff",`Backing off for ${s} ms (base delay: ${this.Io} ms, delay with jitter: ${t} ms, last attempt: ${n} ms ago)`),this.To=this.Hs.enqueueAfterDelay(this.timerId,s,(()=>(this.Eo=Date.now(),e()))),this.Io*=this.yo,this.Iothis.po&&(this.Io=this.po)}Po(){null!==this.To&&(this.To.skipDelay(),this.To=null)}cancel(){null!==this.To&&(this.To.cancel(),this.To=null)}bo(){return(Math.random()-.5)*this.Io}}class iu{constructor(e,t,n,s,r,i,o,a){this.Hs=e,this.vo=n,this.Vo=s,this.connection=r,this.authCredentialsProvider=i,this.appCheckCredentialsProvider=o,this.listener=a,this.state=0,this.So=0,this.Do=null,this.Co=null,this.stream=null,this.xo=new ru(e,t)}No(){return 1===this.state||5===this.state||this.ko()}ko(){return 2===this.state||3===this.state}start(){4!==this.state?this.auth():this.Oo()}async stop(){this.No()&&await this.close(0)}Mo(){this.state=0,this.xo.reset()}Fo(){this.ko()&&null===this.Do&&(this.Do=this.Hs.enqueueAfterDelay(this.vo,6e4,(()=>this.$o())))}Bo(e){this.Lo(),this.stream.send(e)}async $o(){if(this.ko())return this.close(0)}Lo(){this.Do&&(this.Do.cancel(),this.Do=null)}Uo(){this.Co&&(this.Co.cancel(),this.Co=null)}async close(e,t){this.Lo(),this.Uo(),this.xo.cancel(),this.So++,4!==e?this.xo.reset():t&&t.code===zr.RESOURCE_EXHAUSTED?(Fr(t.toString()),Fr("Using maximum backoff delay to prevent overloading the backend."),this.xo.Ao()):t&&t.code===zr.UNAUTHENTICATED&&3!==this.state&&(this.authCredentialsProvider.invalidateToken(),this.appCheckCredentialsProvider.invalidateToken()),null!==this.stream&&(this.qo(),this.stream.close(),this.stream=null),this.state=e,await this.listener.Zr(t)}qo(){}auth(){this.state=1;const e=this.Ko(this.So),t=this.So;Promise.all([this.authCredentialsProvider.getToken(),this.appCheckCredentialsProvider.getToken()]).then((([e,n])=>{this.So===t&&this.Go(e,n)}),(t=>{e((()=>{const e=new Hr(zr.UNKNOWN,"Fetching auth token failed: "+t.message);return this.Qo(e)}))}))}Go(e,t){const n=this.Ko(this.So);this.stream=this.jo(e,t),this.stream.Yr((()=>{n((()=>(this.state=2,this.Co=this.Hs.enqueueAfterDelay(this.Vo,1e4,(()=>(this.ko()&&(this.state=3),Promise.resolve()))),this.listener.Yr())))})),this.stream.Zr((e=>{n((()=>this.Qo(e)))})),this.stream.onMessage((e=>{n((()=>this.onMessage(e)))}))}Oo(){this.state=5,this.xo.Ro((async()=>{this.state=0,this.start()}))}Qo(e){return Ur("PersistentStream",`close with error: ${e}`),this.stream=null,this.close(4,e)}Ko(e){return t=>{this.Hs.enqueueAndForget((()=>this.So===e?t():(Ur("PersistentStream","stream callback skipped by getCloseGuardedDispatcher."),Promise.resolve())))}}}class ou extends iu{constructor(e,t,n,s,r,i){super(e,"listen_stream_connection_backoff","listen_stream_idle","health_check_timeout",t,n,s,i),this.It=r}jo(e,t){return this.connection.wo("Listen",e,t)}onMessage(e){this.xo.reset();const t=function(e,t){let n;if("targetChange"in t){t.targetChange;const s=function(e){return"NO_CHANGE"===e?0:"ADD"===e?1:"REMOVE"===e?2:"CURRENT"===e?3:"RESET"===e?4:$r()}(t.targetChange.targetChangeType||"NO_CHANGE"),r=t.targetChange.targetIds||[],i=function(e,t){return e.gt?(jr(void 0===t||"string"==typeof t),Ri.fromBase64String(t||"")):(jr(void 0===t||t instanceof Uint8Array),Ri.fromUint8Array(t||new Uint8Array))}(e,t.targetChange.resumeToken),o=t.targetChange.cause,a=o&&function(e){const t=void 0===e.code?zr.UNKNOWN:wa(e.code);return new Hr(t,e.message||"")}(o);n=new Fa(s,r,i,a||null)}else if("documentChange"in t){t.documentChange;const s=t.documentChange;s.document,s.document.name,s.document.updateTime;const r=Za(e,s.document.name),i=Qa(s.document.updateTime),o=new no({mapValue:{fields:s.document.fields}}),a=ro.newFoundDocument(r,i,o),c=s.targetIds||[],u=s.removedTargetIds||[];n=new Ma(c,u,a.key,a)}else if("documentDelete"in t){t.documentDelete;const s=t.documentDelete;s.document;const r=Za(e,s.document),i=s.readTime?Qa(s.readTime):oi.min(),o=ro.newNoDocument(r,i),a=s.removedTargetIds||[];n=new Ma([],a,o.key,o)}else if("documentRemove"in t){t.documentRemove;const s=t.documentRemove;s.document;const r=Za(e,s.document),i=s.removedTargetIds||[];n=new Ma([],i,r,null)}else{if(!("filter"in t))return $r();{t.filter;const e=t.filter;e.targetId;const s=e.count||0,r=new ga(s),i=e.targetId;n=new Ua(i,r)}}return n}(this.It,e),n=function(e){if(!("targetChange"in e))return oi.min();const t=e.targetChange;return t.targetIds&&t.targetIds.length?oi.min():t.readTime?Qa(t.readTime):oi.min()}(e);return this.listener.Wo(t,n)}zo(e){const t={};t.database=tc(this.It),t.addTarget=function(e,t){let n;const s=t.target;return n=uo(s)?{documents:rc(e,s)}:{query:ic(e,s)},n.targetId=t.targetId,t.resumeToken.approximateByteSize()>0?n.resumeToken=Ga(e,t.resumeToken):t.snapshotVersion.compareTo(oi.min())>0&&(n.readTime=Ka(e,t.snapshotVersion.toTimestamp())),n}(this.It,e);const n=function(e,t){const n=function(e,t){switch(t){case 0:return null;case 1:return"existence-filter-mismatch";case 2:return"limbo-document";default:return $r()}}(0,t.purpose);return null==n?null:{"goog-listen-tags":n}}(this.It,e);n&&(t.labels=n),this.Bo(t)}Ho(e){const t={};t.database=tc(this.It),t.removeTarget=e,this.Bo(t)}}class au extends iu{constructor(e,t,n,s,r,i){super(e,"write_stream_connection_backoff","write_stream_idle","health_check_timeout",t,n,s,i),this.It=r,this.Jo=!1}get Yo(){return this.Jo}start(){this.Jo=!1,this.lastStreamToken=void 0,super.start()}qo(){this.Jo&&this.Xo([])}jo(e,t){return this.connection.wo("Write",e,t)}onMessage(e){if(jr(!!e.streamToken),this.lastStreamToken=e.streamToken,this.Jo){this.xo.reset();const t=function(e,t){return e&&e.length>0?(jr(void 0!==t),e.map((e=>function(e,t){let n=e.updateTime?Qa(e.updateTime):Qa(t);return n.isEqual(oi.min())&&(n=Qa(t)),new ea(n,e.transformResults||[])}(e,t)))):[]}(e.writeResults,e.commitTime),n=Qa(e.commitTime);return this.listener.Zo(n,t)}return jr(!e.writeResults||0===e.writeResults.length),this.Jo=!0,this.listener.tu()}eu(){const e={};e.database=tc(this.It),this.Bo(e)}Xo(e){const t={streamToken:this.lastStreamToken,writes:e.map((e=>function(e,t){let n;if(t instanceof ua)n={update:sc(e,t.key,t.value)};else if(t instanceof pa)n={delete:Ja(e,t.key)};else if(t instanceof la)n={update:sc(e,t.key,t.data),updateMask:pc(t.fieldMask)};else{if(!(t instanceof ma))return $r();n={verify:Ja(e,t.key)}}return t.fieldTransforms.length>0&&(n.updateTransforms=t.fieldTransforms.map((e=>function(e,t){const n=t.transform;if(n instanceof Ko)return{fieldPath:t.field.canonicalString(),setToServerValue:"REQUEST_TIME"};if(n instanceof Go)return{fieldPath:t.field.canonicalString(),appendMissingElements:{values:n.elements}};if(n instanceof Qo)return{fieldPath:t.field.canonicalString(),removeAllFromArray:{values:n.elements}};if(n instanceof Yo)return{fieldPath:t.field.canonicalString(),increment:n.yt};throw $r()}(0,e)))),t.precondition.isNone||(n.currentDocument=function(e,t){return void 0!==t.updateTime?{updateTime:Wa(e,t.updateTime)}:void 0!==t.exists?{exists:t.exists}:$r()}(e,t.precondition)),n}(this.It,e)))};this.Bo(t)}}class cu extends class{}{constructor(e,t,n,s){super(),this.authCredentials=e,this.appCheckCredentials=t,this.connection=n,this.It=s,this.nu=!1}su(){if(this.nu)throw new Hr(zr.FAILED_PRECONDITION,"The client has already been terminated.")}ao(e,t,n){return this.su(),Promise.all([this.authCredentials.getToken(),this.appCheckCredentials.getToken()]).then((([s,r])=>this.connection.ao(e,t,n,s,r))).catch((e=>{throw"FirebaseError"===e.name?(e.code===zr.UNAUTHENTICATED&&(this.authCredentials.invalidateToken(),this.appCheckCredentials.invalidateToken()),e):new Hr(zr.UNKNOWN,e.toString())}))}_o(e,t,n,s){return this.su(),Promise.all([this.authCredentials.getToken(),this.appCheckCredentials.getToken()]).then((([r,i])=>this.connection._o(e,t,n,r,i,s))).catch((e=>{throw"FirebaseError"===e.name?(e.code===zr.UNAUTHENTICATED&&(this.authCredentials.invalidateToken(),this.appCheckCredentials.invalidateToken()),e):new Hr(zr.UNKNOWN,e.toString())}))}terminate(){this.nu=!0}}class uu{constructor(e,t){this.asyncQueue=e,this.onlineStateHandler=t,this.state="Unknown",this.iu=0,this.ru=null,this.ou=!0}uu(){0===this.iu&&(this.cu("Unknown"),this.ru=this.asyncQueue.enqueueAfterDelay("online_state_timeout",1e4,(()=>(this.ru=null,this.au("Backend didn't respond within 10 seconds."),this.cu("Offline"),Promise.resolve()))))}hu(e){"Online"===this.state?this.cu("Unknown"):(this.iu++,this.iu>=1&&(this.lu(),this.au(`Connection failed 1 times. Most recent error: ${e.toString()}`),this.cu("Offline")))}set(e){this.lu(),this.iu=0,"Online"===e&&(this.ou=!1),this.cu(e)}cu(e){e!==this.state&&(this.state=e,this.onlineStateHandler(e))}au(e){const t=`Could not reach Cloud Firestore backend. ${e}\nThis typically indicates that your device does not have a healthy Internet connection at the moment. The client will operate in offline mode until it is able to successfully connect to the backend.`;this.ou?(Fr(t),this.ou=!1):Ur("OnlineStateTracker",t)}lu(){null!==this.ru&&(this.ru.cancel(),this.ru=null)}}class lu{constructor(e,t,n,s,r){this.localStore=e,this.datastore=t,this.asyncQueue=n,this.remoteSyncer={},this.fu=[],this.du=new Map,this._u=new Set,this.wu=[],this.mu=r,this.mu.qr((e=>{n.enqueueAndForget((async()=>{wu(this)&&(Ur("RemoteStore","Restarting streams for network reachability change."),await async function(e){const t=qr(e);t._u.add(4),await du(t),t.gu.set("Unknown"),t._u.delete(4),await hu(t)}(this))}))})),this.gu=new uu(n,s)}}async function hu(e){if(wu(e))for(const t of e.wu)await t(!0)}async function du(e){for(const t of e.wu)await t(!1)}function fu(e,t){const n=qr(e);n.du.has(t.targetId)||(n.du.set(t.targetId,t),vu(n)?yu(n):Mu(n).ko()&&mu(n,t))}function pu(e,t){const n=qr(e),s=Mu(n);n.du.delete(t),s.ko()&&gu(n,t),0===n.du.size&&(s.ko()?s.Fo():wu(n)&&n.gu.set("Unknown"))}function mu(e,t){e.yu.Mt(t.targetId),Mu(e).zo(t)}function gu(e,t){e.yu.Mt(t),Mu(e).Ho(t)}function yu(e){e.yu=new Ba({getRemoteKeysForTarget:t=>e.remoteSyncer.getRemoteKeysForTarget(t),se:t=>e.du.get(t)||null}),Mu(e).start(),e.gu.uu()}function vu(e){return wu(e)&&!Mu(e).No()&&e.du.size>0}function wu(e){return 0===qr(e)._u.size}function _u(e){e.yu=void 0}async function bu(e){e.du.forEach(((t,n)=>{mu(e,t)}))}async function Tu(e,t){_u(e),vu(e)?(e.gu.hu(t),yu(e)):e.gu.set("Unknown")}async function Eu(e,t,n){if(e.gu.set("Online"),t instanceof Fa&&2===t.state&&t.cause)try{await async function(e,t){const n=t.cause;for(const s of t.targetIds)e.du.has(s)&&(await e.remoteSyncer.rejectListen(s,n),e.du.delete(s),e.yu.removeTarget(s))}(e,t)}catch(n){Ur("RemoteStore","Failed to remove targets %s: %s ",t.targetIds.join(","),n),await Iu(e,n)}else if(t instanceof Ma?e.yu.Gt(t):t instanceof Ua?e.yu.Yt(t):e.yu.Wt(t),!n.isEqual(oi.min()))try{const t=await Hc(e.localStore);n.compareTo(t)>=0&&await function(e,t){const n=e.yu.te(t);return n.targetChanges.forEach(((n,s)=>{if(n.resumeToken.approximateByteSize()>0){const r=e.du.get(s);r&&e.du.set(s,r.withResumeToken(n.resumeToken,t))}})),n.targetMismatches.forEach((t=>{const n=e.du.get(t);if(!n)return;e.du.set(t,n.withResumeToken(Ri.EMPTY_BYTE_STRING,n.snapshotVersion)),gu(e,t);const s=new wc(n.target,t,1,n.sequenceNumber);mu(e,s)})),e.remoteSyncer.applyRemoteEvent(n)}(e,n)}catch(t){Ur("RemoteStore","Failed to raise snapshot:",t),await Iu(e,t)}}async function Iu(e,t,n){if(!vi(t))throw t;e._u.add(1),await du(e),e.gu.set("Offline"),n||(n=()=>Hc(e.localStore)),e.asyncQueue.enqueueRetryable((async()=>{Ur("RemoteStore","Retrying IndexedDB access"),await n(),e._u.delete(1),await hu(e)}))}function ku(e,t){return t().catch((n=>Iu(e,n,t)))}async function Su(e){const t=qr(e),n=Uu(t);let s=t.fu.length>0?t.fu[t.fu.length-1].batchId:-1;for(;Cu(t);)try{const e=await Kc(t.localStore,s);if(null===e){0===t.fu.length&&n.Fo();break}s=e.batchId,Au(t,e)}catch(e){await Iu(t,e)}Ru(t)&&Du(t)}function Cu(e){return wu(e)&&e.fu.length<10}function Au(e,t){e.fu.push(t);const n=Uu(e);n.ko()&&n.Yo&&n.Xo(t.mutations)}function Ru(e){return wu(e)&&!Uu(e).No()&&e.fu.length>0}function Du(e){Uu(e).start()}async function Nu(e){Uu(e).eu()}async function Ou(e){const t=Uu(e);for(const n of e.fu)t.Xo(n.mutations)}async function Lu(e,t,n){const s=e.fu.shift(),r=yc.from(s,t,n);await ku(e,(()=>e.remoteSyncer.applySuccessfulWrite(r))),await Su(e)}async function xu(e,t){t&&Uu(e).Yo&&await async function(e,t){if(function(e){switch(e){default:return $r();case zr.CANCELLED:case zr.UNKNOWN:case zr.DEADLINE_EXCEEDED:case zr.RESOURCE_EXHAUSTED:case zr.INTERNAL:case zr.UNAVAILABLE:case zr.UNAUTHENTICATED:return!1;case zr.INVALID_ARGUMENT:case zr.NOT_FOUND:case zr.ALREADY_EXISTS:case zr.PERMISSION_DENIED:case zr.FAILED_PRECONDITION:case zr.ABORTED:case zr.OUT_OF_RANGE:case zr.UNIMPLEMENTED:case zr.DATA_LOSS:return!0}}(n=t.code)&&n!==zr.ABORTED){const n=e.fu.shift();Uu(e).Mo(),await ku(e,(()=>e.remoteSyncer.rejectFailedWrite(n.batchId,t))),await Su(e)}var n}(e,t),Ru(e)&&Du(e)}async function Pu(e,t){const n=qr(e);n.asyncQueue.verifyOperationInProgress(),Ur("RemoteStore","RemoteStore received new credentials");const s=wu(n);n._u.add(3),await du(n),s&&n.gu.set("Unknown"),await n.remoteSyncer.handleCredentialChange(t),n._u.delete(3),await hu(n)}function Mu(e){return e.pu||(e.pu=function(e,t,n){const s=qr(e);return s.su(),new ou(t,s.connection,s.authCredentials,s.appCheckCredentials,s.It,n)}(e.datastore,e.asyncQueue,{Yr:bu.bind(null,e),Zr:Tu.bind(null,e),Wo:Eu.bind(null,e)}),e.wu.push((async t=>{t?(e.pu.Mo(),vu(e)?yu(e):e.gu.set("Unknown")):(await e.pu.stop(),_u(e))}))),e.pu}function Uu(e){return e.Iu||(e.Iu=function(e,t,n){const s=qr(e);return s.su(),new au(t,s.connection,s.authCredentials,s.appCheckCredentials,s.It,n)}(e.datastore,e.asyncQueue,{Yr:Nu.bind(null,e),Zr:xu.bind(null,e),tu:Ou.bind(null,e),Zo:Lu.bind(null,e)}),e.wu.push((async t=>{t?(e.Iu.Mo(),await Su(e)):(await e.Iu.stop(),e.fu.length>0&&(Ur("RemoteStore",`Stopping write stream with ${e.fu.length} pending writes`),e.fu=[]))}))),e.Iu}class Fu{constructor(e,t,n,s,r){this.asyncQueue=e,this.timerId=t,this.targetTimeMs=n,this.op=s,this.removalCallback=r,this.deferred=new Kr,this.then=this.deferred.promise.then.bind(this.deferred.promise),this.deferred.promise.catch((e=>{}))}static createAndSchedule(e,t,n,s,r){const i=Date.now()+n,o=new Fu(e,t,i,s,r);return o.start(n),o}start(e){this.timerHandle=setTimeout((()=>this.handleDelayElapsed()),e)}skipDelay(){return this.handleDelayElapsed()}cancel(e){null!==this.timerHandle&&(this.clearTimeout(),this.deferred.reject(new Hr(zr.CANCELLED,"Operation cancelled"+(e?": "+e:""))))}handleDelayElapsed(){this.asyncQueue.enqueueAndForget((()=>null!==this.timerHandle?(this.clearTimeout(),this.op().then((e=>this.deferred.resolve(e)))):Promise.resolve()))}clearTimeout(){null!==this.timerHandle&&(this.removalCallback(this),clearTimeout(this.timerHandle),this.timerHandle=null)}}function Vu(e,t){if(Fr("AsyncQueue",`${t}: ${e}`),vi(e))return new Hr(zr.UNAVAILABLE,`${t}: ${e}`);throw e}class Bu{constructor(e){this.comparator=e?(t,n)=>e(t,n)||hi.comparator(t.key,n.key):(e,t)=>hi.comparator(e.key,t.key),this.keyedMap=Ia(),this.sortedSet=new Ei(this.comparator)}static emptySet(e){return new Bu(e.comparator)}has(e){return null!=this.keyedMap.get(e)}get(e){return this.keyedMap.get(e)}first(){return this.sortedSet.minKey()}last(){return this.sortedSet.maxKey()}isEmpty(){return this.sortedSet.isEmpty()}indexOf(e){const t=this.keyedMap.get(e);return t?this.sortedSet.indexOf(t):-1}get size(){return this.sortedSet.size}forEach(e){this.sortedSet.inorderTraversal(((t,n)=>(e(t),!1)))}add(e){const t=this.delete(e.key);return t.copy(t.keyedMap.insert(e.key,e),t.sortedSet.insert(e,null))}delete(e){const t=this.get(e);return t?this.copy(this.keyedMap.remove(e),this.sortedSet.remove(t)):this}isEqual(e){if(!(e instanceof Bu))return!1;if(this.size!==e.size)return!1;const t=this.sortedSet.getIterator(),n=e.sortedSet.getIterator();for(;t.hasNext();){const e=t.getNext().key,s=n.getNext().key;if(!e.isEqual(s))return!1}return!0}toString(){const e=[];return this.forEach((t=>{e.push(t.toString())})),0===e.length?"DocumentSet ()":"DocumentSet (\n "+e.join(" \n")+"\n)"}copy(e,t){const n=new Bu;return n.comparator=this.comparator,n.keyedMap=e,n.sortedSet=t,n}}class $u{constructor(){this.Tu=new Ei(hi.comparator)}track(e){const t=e.doc.key,n=this.Tu.get(t);n?0!==e.type&&3===n.type?this.Tu=this.Tu.insert(t,e):3===e.type&&1!==n.type?this.Tu=this.Tu.insert(t,{type:n.type,doc:e.doc}):2===e.type&&2===n.type?this.Tu=this.Tu.insert(t,{type:2,doc:e.doc}):2===e.type&&0===n.type?this.Tu=this.Tu.insert(t,{type:0,doc:e.doc}):1===e.type&&0===n.type?this.Tu=this.Tu.remove(t):1===e.type&&2===n.type?this.Tu=this.Tu.insert(t,{type:1,doc:n.doc}):0===e.type&&1===n.type?this.Tu=this.Tu.insert(t,{type:2,doc:e.doc}):$r():this.Tu=this.Tu.insert(t,e)}Eu(){const e=[];return this.Tu.inorderTraversal(((t,n)=>{e.push(n)})),e}}class ju{constructor(e,t,n,s,r,i,o,a,c){this.query=e,this.docs=t,this.oldDocs=n,this.docChanges=s,this.mutatedKeys=r,this.fromCache=i,this.syncStateChanged=o,this.excludesMetadataChanges=a,this.hasCachedResults=c}static fromInitialDocuments(e,t,n,s,r){const i=[];return t.forEach((e=>{i.push({type:0,doc:e})})),new ju(e,t,Bu.emptySet(t),i,n,s,!0,!1,r)}get hasPendingWrites(){return!this.mutatedKeys.isEmpty()}isEqual(e){if(!(this.fromCache===e.fromCache&&this.hasCachedResults===e.hasCachedResults&&this.syncStateChanged===e.syncStateChanged&&this.mutatedKeys.isEqual(e.mutatedKeys)&&Lo(this.query,e.query)&&this.docs.isEqual(e.docs)&&this.oldDocs.isEqual(e.oldDocs)))return!1;const t=this.docChanges,n=e.docChanges;if(t.length!==n.length)return!1;for(let e=0;exo(e)),Lo),this.onlineState="Unknown",this.Ru=new Set}}function Hu(e,t){const n=qr(e);let s=!1;for(const e of t){const t=e.query,r=n.queries.get(t);if(r){for(const t of r.listeners)t.Pu(e)&&(s=!0);r.Au=e}}s&&Gu(n)}function Ku(e,t,n){const s=qr(e),r=s.queries.get(t);if(r)for(const e of r.listeners)e.onError(n);s.queries.delete(t)}function Gu(e){e.Ru.forEach((e=>{e.next()}))}class Wu{constructor(e,t,n){this.query=e,this.vu=t,this.Vu=!1,this.Su=null,this.onlineState="Unknown",this.options=n||{}}Pu(e){if(!this.options.includeMetadataChanges){const t=[];for(const n of e.docChanges)3!==n.type&&t.push(n);e=new ju(e.query,e.docs,e.oldDocs,t,e.mutatedKeys,e.fromCache,e.syncStateChanged,!0,e.hasCachedResults)}let t=!1;return this.Vu?this.Du(e)&&(this.vu.next(e),t=!0):this.Cu(e,this.onlineState)&&(this.xu(e),t=!0),this.Su=e,t}onError(e){this.vu.error(e)}bu(e){this.onlineState=e;let t=!1;return this.Su&&!this.Vu&&this.Cu(this.Su,e)&&(this.xu(this.Su),t=!0),t}Cu(e,t){if(!e.fromCache)return!0;const n="Offline"!==t;return(!this.options.Nu||!n)&&(!e.docs.isEmpty()||e.hasCachedResults||"Offline"===t)}Du(e){if(e.docChanges.length>0)return!0;const t=this.Su&&this.Su.hasPendingWrites!==e.hasPendingWrites;return!(!e.syncStateChanged&&!t)&&!0===this.options.includeMetadataChanges}xu(e){e=ju.fromInitialDocuments(e.query,e.docs,e.mutatedKeys,e.fromCache,e.hasCachedResults),this.Vu=!0,this.vu.next(e)}}class Qu{constructor(e){this.key=e}}class Xu{constructor(e){this.key=e}}class Yu{constructor(e,t){this.query=e,this.Uu=t,this.qu=null,this.hasCachedResults=!1,this.current=!1,this.Ku=Na(),this.mutatedKeys=Na(),this.Gu=Uo(e),this.Qu=new Bu(this.Gu)}get ju(){return this.Uu}Wu(e,t){const n=t?t.zu:new $u,s=t?t.Qu:this.Qu;let r=t?t.mutatedKeys:this.mutatedKeys,i=s,o=!1;const a="F"===this.query.limitType&&s.size===this.query.limit?s.last():null,c="L"===this.query.limitType&&s.size===this.query.limit?s.first():null;if(e.inorderTraversal(((e,t)=>{const u=s.get(e),l=Mo(this.query,t)?t:null,h=!!u&&this.mutatedKeys.has(u.key),d=!!l&&(l.hasLocalMutations||this.mutatedKeys.has(l.key)&&l.hasCommittedMutations);let f=!1;u&&l?u.data.isEqual(l.data)?h!==d&&(n.track({type:3,doc:l}),f=!0):this.Hu(u,l)||(n.track({type:2,doc:l}),f=!0,(a&&this.Gu(l,a)>0||c&&this.Gu(l,c)<0)&&(o=!0)):!u&&l?(n.track({type:0,doc:l}),f=!0):u&&!l&&(n.track({type:1,doc:u}),f=!0,(a||c)&&(o=!0)),f&&(l?(i=i.add(l),r=d?r.add(e):r.delete(e)):(i=i.delete(e),r=r.delete(e)))})),null!==this.query.limit)for(;i.size>this.query.limit;){const e="F"===this.query.limitType?i.last():i.first();i=i.delete(e.key),r=r.delete(e.key),n.track({type:1,doc:e})}return{Qu:i,zu:n,$i:o,mutatedKeys:r}}Hu(e,t){return e.hasLocalMutations&&t.hasCommittedMutations&&!t.hasLocalMutations}applyChanges(e,t,n){const s=this.Qu;this.Qu=e.Qu,this.mutatedKeys=e.mutatedKeys;const r=e.zu.Eu();r.sort(((e,t)=>function(e,t){const n=e=>{switch(e){case 0:return 1;case 2:case 3:return 2;case 1:return 0;default:return $r()}};return n(e)-n(t)}(e.type,t.type)||this.Gu(e.doc,t.doc))),this.Ju(n);const i=t?this.Yu():[],o=0===this.Ku.size&&this.current?1:0,a=o!==this.qu;return this.qu=o,0!==r.length||a?{snapshot:new ju(this.query,e.Qu,s,r,e.mutatedKeys,0===o,a,!1,!!n&&n.resumeToken.approximateByteSize()>0),Xu:i}:{Xu:i}}bu(e){return this.current&&"Offline"===e?(this.current=!1,this.applyChanges({Qu:this.Qu,zu:new $u,mutatedKeys:this.mutatedKeys,$i:!1},!1)):{Xu:[]}}Zu(e){return!this.Uu.has(e)&&!!this.Qu.has(e)&&!this.Qu.get(e).hasLocalMutations}Ju(e){e&&(e.addedDocuments.forEach((e=>this.Uu=this.Uu.add(e))),e.modifiedDocuments.forEach((e=>{})),e.removedDocuments.forEach((e=>this.Uu=this.Uu.delete(e))),this.current=e.current)}Yu(){if(!this.current)return[];const e=this.Ku;this.Ku=Na(),this.Qu.forEach((e=>{this.Zu(e.key)&&(this.Ku=this.Ku.add(e.key))}));const t=[];return e.forEach((e=>{this.Ku.has(e)||t.push(new Xu(e))})),this.Ku.forEach((n=>{e.has(n)||t.push(new Qu(n))})),t}tc(e){this.Uu=e.Hi,this.Ku=Na();const t=this.Wu(e.documents);return this.applyChanges(t,!0)}ec(){return ju.fromInitialDocuments(this.query,this.Qu,this.mutatedKeys,0===this.qu,this.hasCachedResults)}}class Ju{constructor(e,t,n){this.query=e,this.targetId=t,this.view=n}}class Zu{constructor(e){this.key=e,this.nc=!1}}class el{constructor(e,t,n,s,r,i){this.localStore=e,this.remoteStore=t,this.eventManager=n,this.sharedClientState=s,this.currentUser=r,this.maxConcurrentLimboResolutions=i,this.sc={},this.ic=new _a((e=>xo(e)),Lo),this.rc=new Map,this.oc=new Set,this.uc=new Ei(hi.comparator),this.cc=new Map,this.ac=new Oc,this.hc={},this.lc=new Map,this.fc=Sc.vn(),this.onlineState="Unknown",this.dc=void 0}get isPrimaryClient(){return!0===this.dc}}async function tl(e,t){const n=function(e){const t=qr(e);return t.remoteStore.remoteSyncer.applyRemoteEvent=sl.bind(null,t),t.remoteStore.remoteSyncer.getRemoteKeysForTarget=yl.bind(null,t),t.remoteStore.remoteSyncer.rejectListen=il.bind(null,t),t.sc.Wo=Hu.bind(null,t.eventManager),t.sc.wc=Ku.bind(null,t.eventManager),t}(e);let s,r;const i=n.ic.get(t);if(i)s=i.targetId,n.sharedClientState.addLocalQueryTarget(s),r=i.view.ec();else{const e=await function(e,t){const n=qr(e);return n.persistence.runTransaction("Allocate target","readwrite",(e=>{let s;return n.Cs.getTargetData(e,t).next((r=>r?(s=r,yi.resolve(s)):n.Cs.allocateTargetId(e).next((r=>(s=new wc(t,r,0,e.currentSequenceNumber),n.Cs.addTargetData(e,s).next((()=>s)))))))})).then((e=>{const s=n.Ui.get(e.targetId);return(null===s||e.snapshotVersion.compareTo(s.snapshotVersion)>0)&&(n.Ui=n.Ui.insert(e.targetId,e),n.qi.set(t,e.targetId)),e}))}(n.localStore,No(t));n.isPrimaryClient&&fu(n.remoteStore,e);const i=n.sharedClientState.addLocalQueryTarget(e.targetId);s=e.targetId,r=await async function(e,t,n,s,r){e._c=(t,n,s)=>async function(e,t,n,s){let r=t.view.Wu(n);r.$i&&(r=await Wc(e.localStore,t.query,!1).then((({documents:e})=>t.view.Wu(e,r))));const i=s&&s.targetChanges.get(t.targetId),o=t.view.applyChanges(r,e.isPrimaryClient,i);return dl(e,t.targetId,o.Xu),o.snapshot}(e,t,n,s);const i=await Wc(e.localStore,t,!0),o=new Yu(t,i.Hi),a=o.Wu(i.documents),c=Pa.createSynthesizedTargetChangeForCurrentChange(n,s&&"Offline"!==e.onlineState,r),u=o.applyChanges(a,e.isPrimaryClient,c);dl(e,n,u.Xu);const l=new Ju(t,n,o);return e.ic.set(t,l),e.rc.has(n)?e.rc.get(n).push(t):e.rc.set(n,[t]),u.snapshot}(n,t,s,"current"===i,e.resumeToken)}return r}async function nl(e,t){const n=qr(e),s=n.ic.get(t),r=n.rc.get(s.targetId);if(r.length>1)return n.rc.set(s.targetId,r.filter((e=>!Lo(e,t)))),void n.ic.delete(t);n.isPrimaryClient?(n.sharedClientState.removeLocalQueryTarget(s.targetId),n.sharedClientState.isActiveQueryTarget(s.targetId)||await Gc(n.localStore,s.targetId,!1).then((()=>{n.sharedClientState.clearQueryState(s.targetId),pu(n.remoteStore,s.targetId),ll(n,s.targetId)})).catch(gi)):(ll(n,s.targetId),await Gc(n.localStore,s.targetId,!0))}async function sl(e,t){const n=qr(e);try{const e=await function(e,t){const n=qr(e),s=t.snapshotVersion;let r=n.Ui;return n.persistence.runTransaction("Apply remote event","readwrite-primary",(e=>{const i=n.Gi.newChangeBuffer({trackRemovals:!0});r=n.Ui;const o=[];t.targetChanges.forEach(((i,a)=>{const c=r.get(a);if(!c)return;o.push(n.Cs.removeMatchingKeys(e,i.removedDocuments,a).next((()=>n.Cs.addMatchingKeys(e,i.addedDocuments,a))));let u=c.withSequenceNumber(e.currentSequenceNumber);t.targetMismatches.has(a)?u=u.withResumeToken(Ri.EMPTY_BYTE_STRING,oi.min()).withLastLimboFreeSnapshotVersion(oi.min()):i.resumeToken.approximateByteSize()>0&&(u=u.withResumeToken(i.resumeToken,s)),r=r.insert(a,u),function(e,t,n){return 0===e.resumeToken.approximateByteSize()||t.snapshotVersion.toMicroseconds()-e.snapshotVersion.toMicroseconds()>=3e8||n.addedDocuments.size+n.modifiedDocuments.size+n.removedDocuments.size>0}(c,u,i)&&o.push(n.Cs.updateTargetData(e,u))}));let a=Ta(),c=Na();if(t.documentUpdates.forEach((s=>{t.resolvedLimboDocuments.has(s)&&o.push(n.persistence.referenceDelegate.updateLimboDocument(e,s))})),o.push(function(e,t,n){let s=Na(),r=Na();return n.forEach((e=>s=s.add(e))),t.getEntries(e,s).next((e=>{let s=Ta();return n.forEach(((n,i)=>{const o=e.get(n);i.isFoundDocument()!==o.isFoundDocument()&&(r=r.add(n)),i.isNoDocument()&&i.version.isEqual(oi.min())?(t.removeEntry(n,i.readTime),s=s.insert(n,i)):!o.isValidDocument()||i.version.compareTo(o.version)>0||0===i.version.compareTo(o.version)&&o.hasPendingWrites?(t.addEntry(i),s=s.insert(n,i)):Ur("LocalStore","Ignoring outdated watch update for ",n,". Current version:",o.version," Watch version:",i.version)})),{Wi:s,zi:r}}))}(e,i,t.documentUpdates).next((e=>{a=e.Wi,c=e.zi}))),!s.isEqual(oi.min())){const t=n.Cs.getLastRemoteSnapshotVersion(e).next((t=>n.Cs.setTargetsMetadata(e,e.currentSequenceNumber,s)));o.push(t)}return yi.waitFor(o).next((()=>i.apply(e))).next((()=>n.localDocuments.getLocalViewOfDocuments(e,a,c))).next((()=>a))})).then((e=>(n.Ui=r,e)))}(n.localStore,t);t.targetChanges.forEach(((e,t)=>{const s=n.cc.get(t);s&&(jr(e.addedDocuments.size+e.modifiedDocuments.size+e.removedDocuments.size<=1),e.addedDocuments.size>0?s.nc=!0:e.modifiedDocuments.size>0?jr(s.nc):e.removedDocuments.size>0&&(jr(s.nc),s.nc=!1))})),await ml(n,e,t)}catch(e){await gi(e)}}function rl(e,t,n){const s=qr(e);if(s.isPrimaryClient&&0===n||!s.isPrimaryClient&&1===n){const e=[];s.ic.forEach(((n,s)=>{const r=s.view.bu(t);r.snapshot&&e.push(r.snapshot)})),function(e,t){const n=qr(e);n.onlineState=t;let s=!1;n.queries.forEach(((e,n)=>{for(const e of n.listeners)e.bu(t)&&(s=!0)})),s&&Gu(n)}(s.eventManager,t),e.length&&s.sc.Wo(e),s.onlineState=t,s.isPrimaryClient&&s.sharedClientState.setOnlineState(t)}}async function il(e,t,n){const s=qr(e);s.sharedClientState.updateQueryState(t,"rejected",n);const r=s.cc.get(t),i=r&&r.key;if(i){let e=new Ei(hi.comparator);e=e.insert(i,ro.newNoDocument(i,oi.min()));const n=Na().add(i),r=new xa(oi.min(),new Map,new Si(si),e,n);await sl(s,r),s.uc=s.uc.remove(i),s.cc.delete(t),pl(s)}else await Gc(s.localStore,t,!1).then((()=>ll(s,t,n))).catch(gi)}async function ol(e,t){const n=qr(e),s=t.batch.batchId;try{const e=await function(e,t){const n=qr(e);return n.persistence.runTransaction("Acknowledge batch","readwrite-primary",(e=>{const s=t.batch.keys(),r=n.Gi.newChangeBuffer({trackRemovals:!0});return function(e,t,n,s){const r=n.batch,i=r.keys();let o=yi.resolve();return i.forEach((e=>{o=o.next((()=>s.getEntry(t,e))).next((t=>{const i=n.docVersions.get(e);jr(null!==i),t.version.compareTo(i)<0&&(r.applyToRemoteDocument(t,n),t.isValidDocument()&&(t.setReadTime(n.commitVersion),s.addEntry(t)))}))})),o.next((()=>e.mutationQueue.removeMutationBatch(t,r)))}(n,e,t,r).next((()=>r.apply(e))).next((()=>n.mutationQueue.performConsistencyCheck(e))).next((()=>n.documentOverlayCache.removeOverlaysForBatchId(e,s,t.batch.batchId))).next((()=>n.localDocuments.recalculateAndSaveOverlaysForDocumentKeys(e,function(e){let t=Na();for(let n=0;n0&&(t=t.add(e.batch.mutations[n].key));return t}(t)))).next((()=>n.localDocuments.getDocuments(e,s)))}))}(n.localStore,t);ul(n,s,null),cl(n,s),n.sharedClientState.updateMutationState(s,"acknowledged"),await ml(n,e)}catch(e){await gi(e)}}async function al(e,t,n){const s=qr(e);try{const e=await function(e,t){const n=qr(e);return n.persistence.runTransaction("Reject batch","readwrite-primary",(e=>{let s;return n.mutationQueue.lookupMutationBatch(e,t).next((t=>(jr(null!==t),s=t.keys(),n.mutationQueue.removeMutationBatch(e,t)))).next((()=>n.mutationQueue.performConsistencyCheck(e))).next((()=>n.documentOverlayCache.removeOverlaysForBatchId(e,s,t))).next((()=>n.localDocuments.recalculateAndSaveOverlaysForDocumentKeys(e,s))).next((()=>n.localDocuments.getDocuments(e,s)))}))}(s.localStore,t);ul(s,t,n),cl(s,t),s.sharedClientState.updateMutationState(t,"rejected",n),await ml(s,e)}catch(n){await gi(n)}}function cl(e,t){(e.lc.get(t)||[]).forEach((e=>{e.resolve()})),e.lc.delete(t)}function ul(e,t,n){const s=qr(e);let r=s.hc[s.currentUser.toKey()];if(r){const e=r.get(t);e&&(n?e.reject(n):e.resolve(),r=r.remove(t)),s.hc[s.currentUser.toKey()]=r}}function ll(e,t,n=null){e.sharedClientState.removeLocalQueryTarget(t);for(const s of e.rc.get(t))e.ic.delete(s),n&&e.sc.wc(s,n);e.rc.delete(t),e.isPrimaryClient&&e.ac.ls(t).forEach((t=>{e.ac.containsKey(t)||hl(e,t)}))}function hl(e,t){e.oc.delete(t.path.canonicalString());const n=e.uc.get(t);null!==n&&(pu(e.remoteStore,n),e.uc=e.uc.remove(t),e.cc.delete(n),pl(e))}function dl(e,t,n){for(const s of n)s instanceof Qu?(e.ac.addReference(s.key,t),fl(e,s)):s instanceof Xu?(Ur("SyncEngine","Document no longer in limbo: "+s.key),e.ac.removeReference(s.key,t),e.ac.containsKey(s.key)||hl(e,s.key)):$r()}function fl(e,t){const n=t.key,s=n.path.canonicalString();e.uc.get(n)||e.oc.has(s)||(Ur("SyncEngine","New document in limbo: "+n),e.oc.add(s),pl(e))}function pl(e){for(;e.oc.size>0&&e.uc.size{o.push(s._c(a,t,n).then((e=>{if((e||n)&&s.isPrimaryClient&&s.sharedClientState.updateQueryState(a.targetId,(null==e?void 0:e.fromCache)?"not-current":"current"),e){r.push(e);const t=$c.Ci(a.targetId,e);i.push(t)}})))})),await Promise.all(o),s.sc.Wo(r),await async function(e,t){const n=qr(e);try{await n.persistence.runTransaction("notifyLocalViewChanges","readwrite",(e=>yi.forEach(t,(t=>yi.forEach(t.Si,(s=>n.persistence.referenceDelegate.addReference(e,t.targetId,s))).next((()=>yi.forEach(t.Di,(s=>n.persistence.referenceDelegate.removeReference(e,t.targetId,s)))))))))}catch(e){if(!vi(e))throw e;Ur("LocalStore","Failed to update sequence numbers: "+e)}for(const e of t){const t=e.targetId;if(!e.fromCache){const e=n.Ui.get(t),s=e.snapshotVersion,r=e.withLastLimboFreeSnapshotVersion(s);n.Ui=n.Ui.insert(t,r)}}}(s.localStore,i))}async function gl(e,t){const n=qr(e);if(!n.currentUser.isEqual(t)){Ur("SyncEngine","User change. New user:",t.toKey());const e=await zc(n.localStore,t);n.currentUser=t,function(e,t){e.lc.forEach((e=>{e.forEach((e=>{e.reject(new Hr(zr.CANCELLED,"'waitForPendingWrites' promise is rejected due to a user change."))}))})),e.lc.clear()}(n),n.sharedClientState.handleUserChange(t,e.removedBatchIds,e.addedBatchIds),await ml(n,e.ji)}}function yl(e,t){const n=qr(e),s=n.cc.get(t);if(s&&s.nc)return Na().add(s.key);{let e=Na();const s=n.rc.get(t);if(!s)return e;for(const t of s){const s=n.ic.get(t);e=e.unionWith(s.view.ju)}return e}}function vl(e){const t=qr(e);return t.remoteStore.remoteSyncer.applySuccessfulWrite=ol.bind(null,t),t.remoteStore.remoteSyncer.rejectFailedWrite=al.bind(null,t),t}class wl{constructor(){this.synchronizeTabs=!1}async initialize(e){this.It=su(e.databaseInfo.databaseId),this.sharedClientState=this.gc(e),this.persistence=this.yc(e),await this.persistence.start(),this.localStore=this.Ic(e),this.gcScheduler=this.Tc(e,this.localStore),this.indexBackfillerScheduler=this.Ec(e,this.localStore)}Tc(e,t){return null}Ec(e,t){return null}Ic(e){return function(e,t,n,s){return new qc(e,t,n,s)}(this.persistence,new jc,e.initialUser,this.It)}yc(e){return new Fc(Bc.Bs,this.It)}gc(e){return new Xc}async terminate(){this.gcScheduler&&this.gcScheduler.stop(),await this.sharedClientState.shutdown(),await this.persistence.shutdown()}}class _l{async initialize(e,t){this.localStore||(this.localStore=e.localStore,this.sharedClientState=e.sharedClientState,this.datastore=this.createDatastore(t),this.remoteStore=this.createRemoteStore(t),this.eventManager=this.createEventManager(t),this.syncEngine=this.createSyncEngine(t,!e.synchronizeTabs),this.sharedClientState.onlineStateHandler=e=>rl(this.syncEngine,e,1),this.remoteStore.remoteSyncer.handleCredentialChange=gl.bind(null,this.syncEngine),await async function(e,t){const n=qr(e);t?(n._u.delete(2),await hu(n)):t||(n._u.add(2),await du(n),n.gu.set("Unknown"))}(this.remoteStore,this.syncEngine.isPrimaryClient))}createEventManager(e){return new zu}createDatastore(e){const t=su(e.databaseInfo.databaseId),n=(s=e.databaseInfo,new tu(s));var s;return function(e,t,n,s){return new cu(e,t,n,s)}(e.authCredentials,e.appCheckCredentials,n,t)}createRemoteStore(e){return t=this.localStore,n=this.datastore,s=e.asyncQueue,r=e=>rl(this.syncEngine,e,0),i=Jc.C()?new Jc:new Yc,new lu(t,n,s,r,i);var t,n,s,r,i}createSyncEngine(e,t){return function(e,t,n,s,r,i,o){const a=new el(e,t,n,s,r,i);return o&&(a.dc=!0),a}(this.localStore,this.remoteStore,this.eventManager,this.sharedClientState,e.initialUser,e.maxConcurrentLimboResolutions,t)}terminate(){return async function(e){const t=qr(e);Ur("RemoteStore","RemoteStore shutting down."),t._u.add(5),await du(t),t.mu.shutdown(),t.gu.set("Unknown")}(this.remoteStore)}}function bl(e,t,n){if(!n)throw new Hr(zr.INVALID_ARGUMENT,`Function ${e}() cannot be called with an empty ${t}.`)}function Tl(e){if(!hi.isDocumentKey(e))throw new Hr(zr.INVALID_ARGUMENT,`Invalid document reference. Document references must have an even number of segments, but ${e} has ${e.length}.`)}function El(e){if(hi.isDocumentKey(e))throw new Hr(zr.INVALID_ARGUMENT,`Invalid collection reference. Collection references must have an odd number of segments, but ${e} has ${e.length}.`)}function Il(e){if(void 0===e)return"undefined";if(null===e)return"null";if("string"==typeof e)return e.length>20&&(e=`${e.substring(0,20)}...`),JSON.stringify(e);if("number"==typeof e||"boolean"==typeof e)return""+e;if("object"==typeof e){if(e instanceof Array)return"an array";{const t=function(e){return e.constructor?e.constructor.name:null}(e);return t?`a custom ${t} object`:"an object"}}return"function"==typeof e?"a function":$r()}function kl(e,t){if("_delegate"in e&&(e=e._delegate),!(e instanceof t)){if(t.name===e.constructor.name)throw new Hr(zr.INVALID_ARGUMENT,"Type does not match the expected instance. Did you pass a reference from a different Firestore SDK?");{const n=Il(e);throw new Hr(zr.INVALID_ARGUMENT,`Expected type '${t.name}', but it was: ${n}`)}}return e}const Sl=new Map;class Cl{constructor(e){var t;if(void 0===e.host){if(void 0!==e.ssl)throw new Hr(zr.INVALID_ARGUMENT,"Can't provide ssl option if host option is not set");this.host="firestore.googleapis.com",this.ssl=!0}else this.host=e.host,this.ssl=null===(t=e.ssl)||void 0===t||t;if(this.credentials=e.credentials,this.ignoreUndefinedProperties=!!e.ignoreUndefinedProperties,void 0===e.cacheSizeBytes)this.cacheSizeBytes=41943040;else{if(-1!==e.cacheSizeBytes&&e.cacheSizeBytes<1048576)throw new Hr(zr.INVALID_ARGUMENT,"cacheSizeBytes must be at least 1048576");this.cacheSizeBytes=e.cacheSizeBytes}this.experimentalForceLongPolling=!!e.experimentalForceLongPolling,this.experimentalAutoDetectLongPolling=!!e.experimentalAutoDetectLongPolling,this.useFetchStreams=!!e.useFetchStreams,function(e,t,n,s){if(!0===t&&!0===s)throw new Hr(zr.INVALID_ARGUMENT,"experimentalForceLongPolling and experimentalAutoDetectLongPolling cannot be used together.")}(0,e.experimentalForceLongPolling,0,e.experimentalAutoDetectLongPolling)}isEqual(e){return this.host===e.host&&this.ssl===e.ssl&&this.credentials===e.credentials&&this.cacheSizeBytes===e.cacheSizeBytes&&this.experimentalForceLongPolling===e.experimentalForceLongPolling&&this.experimentalAutoDetectLongPolling===e.experimentalAutoDetectLongPolling&&this.ignoreUndefinedProperties===e.ignoreUndefinedProperties&&this.useFetchStreams===e.useFetchStreams}}class Al{constructor(e,t,n,s){this._authCredentials=e,this._appCheckCredentials=t,this._databaseId=n,this._app=s,this.type="firestore-lite",this._persistenceKey="(lite)",this._settings=new Cl({}),this._settingsFrozen=!1}get app(){if(!this._app)throw new Hr(zr.FAILED_PRECONDITION,"Firestore was not initialized using the Firebase SDK. 'app' is not available");return this._app}get _initialized(){return this._settingsFrozen}get _terminated(){return void 0!==this._terminateTask}_setSettings(e){if(this._settingsFrozen)throw new Hr(zr.FAILED_PRECONDITION,"Firestore has already been started and its settings can no longer be changed. You can only modify settings before calling any other methods on a Firestore object.");this._settings=new Cl(e),void 0!==e.credentials&&(this._authCredentials=function(e){if(!e)return new Wr;switch(e.type){case"gapi":const t=e.client;return new Jr(t,e.sessionIndex||"0",e.iamToken||null,e.authTokenFactory||null);case"provider":return e.client;default:throw new Hr(zr.INVALID_ARGUMENT,"makeAuthCredentialsProvider failed due to invalid credential type")}}(e.credentials))}_getSettings(){return this._settings}_freezeSettings(){return this._settingsFrozen=!0,this._settings}_delete(){return this._terminateTask||(this._terminateTask=this._terminate()),this._terminateTask}toJSON(){return{app:this._app,databaseId:this._databaseId,settings:this._settings}}_terminate(){return function(e){const t=Sl.get(e);t&&(Ur("ComponentProvider","Removing Datastore"),Sl.delete(e),t.terminate())}(this),Promise.resolve()}}class Rl{constructor(e,t,n){this.converter=t,this._key=n,this.type="document",this.firestore=e}get _path(){return this._key.path}get id(){return this._key.path.lastSegment()}get path(){return this._key.path.canonicalString()}get parent(){return new Nl(this.firestore,this.converter,this._key.path.popLast())}withConverter(e){return new Rl(this.firestore,e,this._key)}}class Dl{constructor(e,t,n){this.converter=t,this._query=n,this.type="query",this.firestore=e}withConverter(e){return new Dl(this.firestore,e,this._query)}}class Nl extends Dl{constructor(e,t,n){super(e,t,So(n)),this._path=n,this.type="collection"}get id(){return this._query.path.lastSegment()}get path(){return this._query.path.canonicalString()}get parent(){const e=this._path.popLast();return e.isEmpty()?null:new Rl(this.firestore,null,new hi(e))}withConverter(e){return new Nl(this.firestore,e,this._path)}}function Ol(e,t,...n){if(e=A(e),bl("collection","path",t),e instanceof Al){const s=ci.fromString(t,...n);return El(s),new Nl(e,null,s)}{if(!(e instanceof Rl||e instanceof Nl))throw new Hr(zr.INVALID_ARGUMENT,"Expected first argument to collection() to be a CollectionReference, a DocumentReference or FirebaseFirestore");const s=e._path.child(ci.fromString(t,...n));return El(s),new Nl(e.firestore,null,s)}}class Ll{constructor(e){this.observer=e,this.muted=!1}next(e){this.observer.next&&this.Rc(this.observer.next,e)}error(e){this.observer.error?this.Rc(this.observer.error,e):Fr("Uncaught Error in snapshot listener:",e.toString())}bc(){this.muted=!0}Rc(e,t){this.muted||setTimeout((()=>{this.muted||e(t)}),0)}}class xl{constructor(e,t,n,s){this.authCredentials=e,this.appCheckCredentials=t,this.asyncQueue=n,this.databaseInfo=s,this.user=Lr.UNAUTHENTICATED,this.clientId=ni.R(),this.authCredentialListener=()=>Promise.resolve(),this.appCheckCredentialListener=()=>Promise.resolve(),this.authCredentials.start(n,(async e=>{Ur("FirestoreClient","Received user=",e.uid),await this.authCredentialListener(e),this.user=e})),this.appCheckCredentials.start(n,(e=>(Ur("FirestoreClient","Received new app check token=",e),this.appCheckCredentialListener(e,this.user))))}async getConfiguration(){return{asyncQueue:this.asyncQueue,databaseInfo:this.databaseInfo,clientId:this.clientId,authCredentials:this.authCredentials,appCheckCredentials:this.appCheckCredentials,initialUser:this.user,maxConcurrentLimboResolutions:100}}setCredentialChangeListener(e){this.authCredentialListener=e}setAppCheckTokenChangeListener(e){this.appCheckCredentialListener=e}verifyNotTerminated(){if(this.asyncQueue.isShuttingDown)throw new Hr(zr.FAILED_PRECONDITION,"The client has already been terminated.")}terminate(){this.asyncQueue.enterRestrictedMode();const e=new Kr;return this.asyncQueue.enqueueAndForgetEvenWhileRestricted((async()=>{try{this.onlineComponents&&await this.onlineComponents.terminate(),this.offlineComponents&&await this.offlineComponents.terminate(),this.authCredentials.shutdown(),this.appCheckCredentials.shutdown(),e.resolve()}catch(t){const n=Vu(t,"Failed to shutdown persistence");e.reject(n)}})),e.promise}}async function Pl(e,t){e.asyncQueue.verifyOperationInProgress();const n=await async function(e){return e.offlineComponents||(Ur("FirestoreClient","Using default OfflineComponentProvider"),await async function(e,t){e.asyncQueue.verifyOperationInProgress(),Ur("FirestoreClient","Initializing OfflineComponentProvider");const n=await e.getConfiguration();await t.initialize(n);let s=n.initialUser;e.setCredentialChangeListener((async e=>{s.isEqual(e)||(await zc(t.localStore,e),s=e)})),t.persistence.setDatabaseDeletedListener((()=>e.terminate())),e.offlineComponents=t}(e,new wl)),e.offlineComponents}(e);Ur("FirestoreClient","Initializing OnlineComponentProvider");const s=await e.getConfiguration();await t.initialize(n,s),e.setCredentialChangeListener((e=>Pu(t.remoteStore,e))),e.setAppCheckTokenChangeListener(((e,n)=>Pu(t.remoteStore,n))),e.onlineComponents=t}async function Ml(e){return e.onlineComponents||(Ur("FirestoreClient","Using default OnlineComponentProvider"),await Pl(e,new _l)),e.onlineComponents}async function Ul(e){const t=await Ml(e),n=t.eventManager;return n.onListen=tl.bind(null,t.syncEngine),n.onUnlisten=nl.bind(null,t.syncEngine),n}function Fl(e,t,n={}){const s=new Kr;return e.asyncQueue.enqueueAndForget((async()=>function(e,t,n,s,r){const i=new Ll({next:n=>{t.enqueueAndForget((()=>async function(e,t){const n=qr(e),s=t.query;let r=!1;const i=n.queries.get(s);if(i){const e=i.listeners.indexOf(t);e>=0&&(i.listeners.splice(e,1),r=0===i.listeners.length)}if(r)return n.queries.delete(s),n.onUnlisten(s)}(e,o))),n.fromCache&&"server"===s.source?r.reject(new Hr(zr.UNAVAILABLE,'Failed to get documents from server. (However, these documents may exist in the local cache. Run again without setting source to "server" to retrieve the cached documents.)')):r.resolve(n)},error:e=>r.reject(e)}),o=new Wu(n,i,{includeMetadataChanges:!0,Nu:!0});return async function(e,t){const n=qr(e),s=t.query;let r=!1,i=n.queries.get(s);if(i||(r=!0,i=new qu),r)try{i.Au=await n.onListen(s)}catch(e){const n=Vu(e,`Initialization of query '${Po(t.query)}' failed`);return void t.onError(n)}n.queries.set(s,i),i.listeners.push(t),t.bu(n.onlineState),i.Au&&t.Pu(i.Au)&&Gu(n)}(e,o)}(await Ul(e),e.asyncQueue,t,n,s))),s.promise}class Vl{constructor(){this.Bc=Promise.resolve(),this.Lc=[],this.Uc=!1,this.qc=[],this.Kc=null,this.Gc=!1,this.Qc=!1,this.jc=[],this.xo=new ru(this,"async_queue_retry"),this.Wc=()=>{const e=nu();e&&Ur("AsyncQueue","Visibility state changed to "+e.visibilityState),this.xo.Po()};const e=nu();e&&"function"==typeof e.addEventListener&&e.addEventListener("visibilitychange",this.Wc)}get isShuttingDown(){return this.Uc}enqueueAndForget(e){this.enqueue(e)}enqueueAndForgetEvenWhileRestricted(e){this.zc(),this.Hc(e)}enterRestrictedMode(e){if(!this.Uc){this.Uc=!0,this.Qc=e||!1;const t=nu();t&&"function"==typeof t.removeEventListener&&t.removeEventListener("visibilitychange",this.Wc)}}enqueue(e){if(this.zc(),this.Uc)return new Promise((()=>{}));const t=new Kr;return this.Hc((()=>this.Uc&&this.Qc?Promise.resolve():(e().then(t.resolve,t.reject),t.promise))).then((()=>t.promise))}enqueueRetryable(e){this.enqueueAndForget((()=>(this.Lc.push(e),this.Jc())))}async Jc(){if(0!==this.Lc.length){try{await this.Lc[0](),this.Lc.shift(),this.xo.reset()}catch(e){if(!vi(e))throw e;Ur("AsyncQueue","Operation failed with retryable error: "+e)}this.Lc.length>0&&this.xo.Ro((()=>this.Jc()))}}Hc(e){const t=this.Bc.then((()=>(this.Gc=!0,e().catch((e=>{this.Kc=e,this.Gc=!1;const t=function(e){let t=e.message||"";return e.stack&&(t=e.stack.includes(e.message)?e.stack:e.message+"\n"+e.stack),t}(e);throw Fr("INTERNAL UNHANDLED ERROR: ",t),e})).then((e=>(this.Gc=!1,e))))));return this.Bc=t,t}enqueueAfterDelay(e,t,n){this.zc(),this.jc.indexOf(e)>-1&&(t=0);const s=Fu.createAndSchedule(this,e,t,n,(e=>this.Yc(e)));return this.qc.push(s),s}zc(){this.Kc&&$r()}verifyOperationInProgress(){}async Xc(){let e;do{e=this.Bc,await e}while(e!==this.Bc)}Zc(e){for(const t of this.qc)if(t.timerId===e)return!0;return!1}ta(e){return this.Xc().then((()=>{this.qc.sort(((e,t)=>e.targetTimeMs-t.targetTimeMs));for(const t of this.qc)if(t.skipDelay(),"all"!==e&&t.timerId===e)break;return this.Xc()}))}ea(e){this.jc.push(e)}Yc(e){const t=this.qc.indexOf(e);this.qc.splice(t,1)}}class Bl extends Al{constructor(e,t,n,s){super(e,t,n,s),this.type="firestore",this._queue=new Vl,this._persistenceKey=(null==s?void 0:s.name)||"[DEFAULT]"}_terminate(){return this._firestoreClient||jl(this),this._firestoreClient.terminate()}}function $l(e){return e._firestoreClient||jl(e),e._firestoreClient.verifyNotTerminated(),e._firestoreClient}function jl(e){var t;const n=e._freezeSettings(),s=function(e,t,n,s){return new Ui(e,t,n,s.host,s.ssl,s.experimentalForceLongPolling,s.experimentalAutoDetectLongPolling,s.useFetchStreams)}(e._databaseId,(null===(t=e._app)||void 0===t?void 0:t.options.appId)||"",e._persistenceKey,n);e._firestoreClient=new xl(e._authCredentials,e._appCheckCredentials,e._queue,s)}class ql{constructor(e){this._byteString=e}static fromBase64String(e){try{return new ql(Ri.fromBase64String(e))}catch(e){throw new Hr(zr.INVALID_ARGUMENT,"Failed to construct data from Base64 string: "+e)}}static fromUint8Array(e){return new ql(Ri.fromUint8Array(e))}toBase64(){return this._byteString.toBase64()}toUint8Array(){return this._byteString.toUint8Array()}toString(){return"Bytes(base64: "+this.toBase64()+")"}isEqual(e){return this._byteString.isEqual(e._byteString)}}class zl{constructor(...e){for(let t=0;t90)throw new Hr(zr.INVALID_ARGUMENT,"Latitude must be a number between -90 and 90, but was: "+e);if(!isFinite(t)||t<-180||t>180)throw new Hr(zr.INVALID_ARGUMENT,"Longitude must be a number between -180 and 180, but was: "+t);this._lat=e,this._long=t}get latitude(){return this._lat}get longitude(){return this._long}isEqual(e){return this._lat===e._lat&&this._long===e._long}toJSON(){return{latitude:this._lat,longitude:this._long}}_compareTo(e){return si(this._lat,e._lat)||si(this._long,e._long)}}const Gl=/^__.*__$/;class Wl{constructor(e,t,n){this.data=e,this.fieldMask=t,this.fieldTransforms=n}toMutation(e,t){return null!==this.fieldMask?new la(e,this.data,this.fieldMask,t,this.fieldTransforms):new ua(e,this.data,t,this.fieldTransforms)}}function Ql(e){switch(e){case 0:case 2:case 1:return!0;case 3:case 4:return!1;default:throw $r()}}class Xl{constructor(e,t,n,s,r,i){this.settings=e,this.databaseId=t,this.It=n,this.ignoreUndefinedProperties=s,void 0===r&&this.na(),this.fieldTransforms=r||[],this.fieldMask=i||[]}get path(){return this.settings.path}get sa(){return this.settings.sa}ia(e){return new Xl(Object.assign(Object.assign({},this.settings),e),this.databaseId,this.It,this.ignoreUndefinedProperties,this.fieldTransforms,this.fieldMask)}ra(e){var t;const n=null===(t=this.path)||void 0===t?void 0:t.child(e),s=this.ia({path:n,oa:!1});return s.ua(e),s}ca(e){var t;const n=null===(t=this.path)||void 0===t?void 0:t.child(e),s=this.ia({path:n,oa:!1});return s.na(),s}aa(e){return this.ia({path:void 0,oa:!0})}ha(e){return ah(e,this.settings.methodName,this.settings.la||!1,this.path,this.settings.fa)}contains(e){return void 0!==this.fieldMask.find((t=>e.isPrefixOf(t)))||void 0!==this.fieldTransforms.find((t=>e.isPrefixOf(t.field)))}na(){if(this.path)for(let e=0;ec.covers(e.field)))}else c=null,u=o.fieldTransforms;return new Wl(new no(a),c,u)}function eh(e,t){if(nh(e=A(e)))return sh("Unsupported field value:",t,e),th(e,t);if(e instanceof Hl)return function(e,t){if(!Ql(t.sa))throw t.ha(`${e._methodName}() can only be used with update() and set()`);if(!t.path)throw t.ha(`${e._methodName}() is not currently supported inside arrays`);const n=e._toFieldTransform(t);n&&t.fieldTransforms.push(n)}(e,t),null;if(void 0===e&&t.ignoreUndefinedProperties)return null;if(t.path&&t.fieldMask.push(t.path),e instanceof Array){if(t.settings.oa&&4!==t.sa)throw t.ha("Nested arrays are not supported");return function(e,t){const n=[];let s=0;for(const r of e){let e=eh(r,t.aa(s));null==e&&(e={nullValue:"NULL_VALUE"}),n.push(e),s++}return{arrayValue:{values:n}}}(e,t)}return function(e,t){if(null===(e=A(e)))return{nullValue:"NULL_VALUE"};if("number"==typeof e)return $o(t.It,e);if("boolean"==typeof e)return{booleanValue:e};if("string"==typeof e)return{stringValue:e};if(e instanceof Date){const n=ii.fromDate(e);return{timestampValue:Ka(t.It,n)}}if(e instanceof ii){const n=new ii(e.seconds,1e3*Math.floor(e.nanoseconds/1e3));return{timestampValue:Ka(t.It,n)}}if(e instanceof Kl)return{geoPointValue:{latitude:e.latitude,longitude:e.longitude}};if(e instanceof ql)return{bytesValue:Ga(t.It,e._byteString)};if(e instanceof Rl){const n=t.databaseId,s=e.firestore._databaseId;if(!s.isEqual(n))throw t.ha(`Document reference is for database ${s.projectId}/${s.database} but should be for database ${n.projectId}/${n.database}`);return{referenceValue:Xa(e.firestore._databaseId||t.databaseId,e._key.path)}}throw t.ha(`Unsupported field value: ${Il(e)}`)}(e,t)}function th(e,t){const n={};return Ti(e)?t.path&&t.path.length>0&&t.fieldMask.push(t.path):bi(e,((e,s)=>{const r=eh(s,t.ra(e));null!=r&&(n[e]=r)})),{mapValue:{fields:n}}}function nh(e){return!("object"!=typeof e||null===e||e instanceof Array||e instanceof Date||e instanceof ii||e instanceof Kl||e instanceof ql||e instanceof Rl||e instanceof Hl)}function sh(e,t,n){if(!nh(n)||!function(e){return"object"==typeof e&&null!==e&&(Object.getPrototypeOf(e)===Object.prototype||null===Object.getPrototypeOf(e))}(n)){const s=Il(n);throw"an object"===s?t.ha(e+" a custom object"):t.ha(e+" "+s)}}function rh(e,t,n){if((t=A(t))instanceof zl)return t._internalPath;if("string"==typeof t)return oh(e,t);throw ah("Field path arguments must be of type string or ",e,!1,void 0,n)}const ih=new RegExp("[~\\*/\\[\\]]");function oh(e,t,n){if(t.search(ih)>=0)throw ah(`Invalid field path (${t}). Paths must not contain '~', '*', '/', '[', or ']'`,e,!1,void 0,n);try{return new zl(...t.split("."))._internalPath}catch(s){throw ah(`Invalid field path (${t}). Paths must not be empty, begin with '.', end with '.', or contain '..'`,e,!1,void 0,n)}}function ah(e,t,n,s,r){const i=s&&!s.isEmpty(),o=void 0!==r;let a=`Function ${t}() called with invalid data`;n&&(a+=" (via `toFirestore()`)"),a+=". ";let c="";return(i||o)&&(c+=" (found",i&&(c+=` in field ${s}`),o&&(c+=` in document ${r}`),c+=")"),new Hr(zr.INVALID_ARGUMENT,a+e+c)}function ch(e,t){return e.some((e=>e.isEqual(t)))}class uh{constructor(e,t,n,s,r){this._firestore=e,this._userDataWriter=t,this._key=n,this._document=s,this._converter=r}get id(){return this._key.path.lastSegment()}get ref(){return new Rl(this._firestore,this._converter,this._key)}exists(){return null!==this._document}data(){if(this._document){if(this._converter){const e=new lh(this._firestore,this._userDataWriter,this._key,this._document,null);return this._converter.fromFirestore(e)}return this._userDataWriter.convertValue(this._document.data.value)}}get(e){if(this._document){const t=this._document.data.field(hh("DocumentSnapshot.get",e));if(null!==t)return this._userDataWriter.convertValue(t)}}}class lh extends uh{data(){return super.data()}}function hh(e,t){return"string"==typeof t?oh(e,t):t instanceof zl?t._internalPath:t._delegate._internalPath}class dh{}function fh(e,...t){for(const n of t)e=n._apply(e);return e}class ph extends dh{constructor(e,t){super(),this.ma=e,this.pa=t,this.type="orderBy"}_apply(e){const t=function(e,t,n){if(null!==e.startAt)throw new Hr(zr.INVALID_ARGUMENT,"Invalid query. You must not call startAt() or startAfter() before calling orderBy().");if(null!==e.endAt)throw new Hr(zr.INVALID_ARGUMENT,"Invalid query. You must not call endAt() or endBefore() before calling orderBy().");const s=new bo(t,n);return function(e,t){if(null===Ao(e)){const n=Ro(e);null!==n&&function(e,t,n){if(!n.isEqual(t))throw new Hr(zr.INVALID_ARGUMENT,`Invalid query. You have a where filter with an inequality (<, <=, !=, not-in, >, or >=) on field '${t.toString()}' and so you must also use '${t.toString()}' as your first argument to orderBy(), but your first orderBy() is on field '${n.toString()}' instead.`)}(0,n,t.field)}}(e,s),s}(e._query,this.ma,this.pa);return new Dl(e.firestore,e.converter,function(e,t){const n=e.explicitOrderBy.concat([t]);return new ko(e.path,e.collectionGroup,n,e.filters.slice(),e.limit,e.limitType,e.startAt,e.endAt)}(e._query,t))}}function mh(e,t="asc"){const n=t,s=hh("orderBy",e);return new ph(s,n)}class gh extends dh{constructor(e,t,n){super(),this.type=e,this.Ia=t,this.Ta=n}_apply(e){return new Dl(e.firestore,e.converter,Oo(e._query,this.Ia,this.Ta))}}class yh{convertValue(e,t="none"){switch(ji(e)){case 0:return null;case 1:return e.booleanValue;case 2:return Oi(e.integerValue||e.doubleValue);case 3:return this.convertTimestamp(e.timestampValue);case 4:return this.convertServerTimestamp(e,t);case 5:return e.stringValue;case 6:return this.convertBytes(Li(e.bytesValue));case 7:return this.convertReference(e.referenceValue);case 8:return this.convertGeoPoint(e.geoPointValue);case 9:return this.convertArray(e.arrayValue,t);case 10:return this.convertObject(e.mapValue,t);default:throw $r()}}convertObject(e,t){const n={};return bi(e.fields,((e,s)=>{n[e]=this.convertValue(s,t)})),n}convertGeoPoint(e){return new Kl(Oi(e.latitude),Oi(e.longitude))}convertArray(e,t){return(e.values||[]).map((e=>this.convertValue(e,t)))}convertServerTimestamp(e,t){switch(t){case"previous":const n=Pi(e);return null==n?null:this.convertValue(n,t);case"estimate":return this.convertTimestamp(Mi(e));default:return null}}convertTimestamp(e){const t=Ni(e);return new ii(t.seconds,t.nanos)}convertDocumentKey(e,t){const n=ci.fromString(e);jr(mc(n));const s=new Fi(n.get(1),n.get(3)),r=new hi(n.popFirst(5));return s.isEqual(t)||Fr(`Document ${r} contains a document reference within a different database (${s.projectId}/${s.database}) which is not supported. It will be treated as a reference in the current database (${t.projectId}/${t.database}) instead.`),r}}class vh{constructor(e,t){this.hasPendingWrites=e,this.fromCache=t}isEqual(e){return this.hasPendingWrites===e.hasPendingWrites&&this.fromCache===e.fromCache}}class wh extends uh{constructor(e,t,n,s,r,i){super(e,t,n,s,i),this._firestore=e,this._firestoreImpl=e,this.metadata=r}exists(){return super.exists()}data(e={}){if(this._document){if(this._converter){const t=new _h(this._firestore,this._userDataWriter,this._key,this._document,this.metadata,null);return this._converter.fromFirestore(t,e)}return this._userDataWriter.convertValue(this._document.data.value,e.serverTimestamps)}}get(e,t={}){if(this._document){const n=this._document.data.field(hh("DocumentSnapshot.get",e));if(null!==n)return this._userDataWriter.convertValue(n,t.serverTimestamps)}}}class _h extends wh{data(e={}){return super.data(e)}}class bh{constructor(e,t,n,s){this._firestore=e,this._userDataWriter=t,this._snapshot=s,this.metadata=new vh(s.hasPendingWrites,s.fromCache),this.query=n}get docs(){const e=[];return this.forEach((t=>e.push(t))),e}get size(){return this._snapshot.docs.size}get empty(){return 0===this.size}forEach(e,t){this._snapshot.docs.forEach((n=>{e.call(t,new _h(this._firestore,this._userDataWriter,n.key,n,new vh(this._snapshot.mutatedKeys.has(n.key),this._snapshot.fromCache),this.query.converter))}))}docChanges(e={}){const t=!!e.includeMetadataChanges;if(t&&this._snapshot.excludesMetadataChanges)throw new Hr(zr.INVALID_ARGUMENT,"To include metadata changes with your document changes, you must also pass { includeMetadataChanges:true } to onSnapshot().");return this._cachedChanges&&this._cachedChangesIncludeMetadataChanges===t||(this._cachedChanges=function(e,t){if(e._snapshot.oldDocs.isEmpty()){let t=0;return e._snapshot.docChanges.map((n=>{const s=new _h(e._firestore,e._userDataWriter,n.doc.key,n.doc,new vh(e._snapshot.mutatedKeys.has(n.doc.key),e._snapshot.fromCache),e.query.converter);return n.doc,{type:"added",doc:s,oldIndex:-1,newIndex:t++}}))}{let n=e._snapshot.oldDocs;return e._snapshot.docChanges.filter((e=>t||3!==e.type)).map((t=>{const s=new _h(e._firestore,e._userDataWriter,t.doc.key,t.doc,new vh(e._snapshot.mutatedKeys.has(t.doc.key),e._snapshot.fromCache),e.query.converter);let r=-1,i=-1;return 0!==t.type&&(r=n.indexOf(t.doc.key),n=n.delete(t.doc.key)),1!==t.type&&(n=n.add(t.doc),i=n.indexOf(t.doc.key)),{type:Th(t.type),doc:s,oldIndex:r,newIndex:i}}))}}(this,t),this._cachedChangesIncludeMetadataChanges=t),this._cachedChanges}}function Th(e){switch(e){case 0:return"added";case 2:case 3:return"modified";case 1:return"removed";default:return $r()}}class Eh extends yh{constructor(e){super(),this.firestore=e}convertBytes(e){return new ql(e)}convertReference(e){const t=this.convertDocumentKey(e,this.firestore._databaseId);return new Rl(this.firestore,null,t)}}function Ih(e){e=kl(e,Dl);const t=kl(e.firestore,Bl),n=$l(t),s=new Eh(t);return function(e){if("L"===e.limitType&&0===e.explicitOrderBy.length)throw new Hr(zr.UNIMPLEMENTED,"limitToLast() queries require specifying at least one orderBy() clause")}(e._query),Fl(n,e._query).then((n=>new bh(t,s,e,n)))}function kh(e,t){const n=kl(e.firestore,Bl),s=function(e,t,...n){if(e=A(e),1===arguments.length&&(t=ni.R()),bl("doc","path",t),e instanceof Al){const s=ci.fromString(t,...n);return Tl(s),new Rl(e,null,new hi(s))}{if(!(e instanceof Rl||e instanceof Nl))throw new Hr(zr.INVALID_ARGUMENT,"Expected first argument to collection() to be a CollectionReference, a DocumentReference or FirebaseFirestore");const s=e._path.child(ci.fromString(t,...n));return Tl(s),new Rl(e.firestore,e instanceof Nl?e.converter:null,new hi(s))}}(e),r=function(e,t,n){let s;return s=e?n&&(n.merge||n.mergeFields)?e.toFirestore(t,n):e.toFirestore(t):t,s}(e.converter,t);return function(e,t){return function(e,t){const n=new Kr;return e.asyncQueue.enqueueAndForget((async()=>async function(e,t,n){const s=vl(e);try{const e=await function(e,t){const n=qr(e),s=ii.now(),r=t.reduce(((e,t)=>e.add(t.key)),Na());let i,o;return n.persistence.runTransaction("Locally write mutations","readwrite",(e=>{let a=Ta(),c=Na();return n.Gi.getEntries(e,r).next((e=>{a=e,a.forEach(((e,t)=>{t.isValidDocument()||(c=c.add(e))}))})).next((()=>n.localDocuments.getOverlayedDocuments(e,a))).next((r=>{i=r;const o=[];for(const e of t){const t=aa(e,i.get(e.key).overlayedDocument);null!=t&&o.push(new la(e.key,t,so(t.value.mapValue),ta.exists(!0)))}return n.mutationQueue.addMutationBatch(e,s,o,t)})).next((t=>{o=t;const s=t.applyToLocalDocumentSet(i,c);return n.documentOverlayCache.saveOverlays(e,t.batchId,s)}))})).then((()=>({batchId:o.batchId,changes:ka(i)})))}(s.localStore,t);s.sharedClientState.addPendingMutation(e.batchId),function(e,t,n){let s=e.hc[e.currentUser.toKey()];s||(s=new Ei(si)),s=s.insert(t,n),e.hc[e.currentUser.toKey()]=s}(s,e.batchId,n),await ml(s,e.changes),await Su(s.remoteStore)}catch(e){const t=Vu(e,"Failed to persist write");n.reject(t)}}(await function(e){return Ml(e).then((e=>e.syncEngine))}(e),t,n))),n.promise}($l(e),t)}(n,[Zl(Jl(e.firestore),"addDoc",s._key,r,null!==e.converter,{}).toMutation(s._key,ta.exists(!1))]).then((()=>s))}!function(e,t=!0){xr="9.14.0",fe(new R("firestore",((e,{instanceIdentifier:n,options:s})=>{const r=e.getProvider("app").getImmediate(),i=new Bl(new Xr(e.getProvider("auth-internal")),new ei(e.getProvider("app-check-internal")),function(e,t){if(!Object.prototype.hasOwnProperty.apply(e.options,["projectId"]))throw new Hr(zr.INVALID_ARGUMENT,'"projectId" not provided in firebase.initializeApp.');return new Fi(e.options.projectId,t)}(r,n),r);return s=Object.assign({useFetchStreams:t},s),i._setSettings(s),i}),"PUBLIC").setMultipleInstances(!0)),_e(Or,"3.7.3",e),_e(Or,"3.7.3","esm2017")}();const Sh="firebasestorage.googleapis.com";class Ch extends v{constructor(e,t,n=0){super(Ah(e),`Firebase Storage: ${t} (${Ah(e)})`),this.status_=n,this.customData={serverResponse:null},this._baseMessage=this.message,Object.setPrototypeOf(this,Ch.prototype)}get status(){return this.status_}set status(e){this.status_=e}_codeEquals(e){return Ah(e)===this.code}get serverResponse(){return this.customData.serverResponse}set serverResponse(e){this.customData.serverResponse=e,this.customData.serverResponse?this.message=`${this._baseMessage}\n${this.customData.serverResponse}`:this.message=this._baseMessage}}function Ah(e){return"storage/"+e}function Rh(){return new Ch("unknown","An unknown error occurred, please check the error payload for server response.")}function Dh(){return new Ch("retry-limit-exceeded","Max retry time for operation exceeded, please try again.")}function Nh(){return new Ch("canceled","User canceled the upload/download.")}function Oh(){return new Ch("cannot-slice-blob","Cannot slice blob for upload. Please retry the upload.")}function Lh(e){return new Ch("invalid-argument",e)}function xh(){return new Ch("app-deleted","The Firebase app was deleted.")}function Ph(e,t){return new Ch("invalid-format","String does not match format '"+e+"': "+t)}function Mh(e){throw new Ch("internal-error","Internal error: "+e)}class Uh{constructor(e,t){this.bucket=e,this.path_=t}get path(){return this.path_}get isRoot(){return 0===this.path.length}fullServerUrl(){const e=encodeURIComponent;return"/b/"+e(this.bucket)+"/o/"+e(this.path)}bucketOnlyServerUrl(){return"/b/"+encodeURIComponent(this.bucket)+"/o"}static makeFromBucketSpec(e,t){let n;try{n=Uh.makeFromUrl(e,t)}catch(t){return new Uh(e,"")}if(""===n.path)return n;throw new Ch("invalid-default-bucket","Invalid default bucket '"+e+"'.")}static makeFromUrl(e,t){let n=null;const s="([A-Za-z0-9.\\-_]+)",r=new RegExp("^gs://"+s+"(/(.*))?$","i");function i(e){e.path_=decodeURIComponent(e.path)}const o=t.replace(/[.]/g,"\\."),a=[{regex:r,indices:{bucket:1,path:3},postModify:function(e){"/"===e.path.charAt(e.path.length-1)&&(e.path_=e.path_.slice(0,-1))}},{regex:new RegExp(`^https?://${o}/v[A-Za-z0-9_]+/b/${s}/o(/([^?#]*).*)?$`,"i"),indices:{bucket:1,path:3},postModify:i},{regex:new RegExp(`^https?://${t===Sh?"(?:storage.googleapis.com|storage.cloud.google.com)":t}/${s}/([^?#]*)`,"i"),indices:{bucket:1,path:2},postModify:i}];for(let t=0;tn)throw Lh(`Invalid value for '${e}'. Expected ${n} or less.`)}function qh(e,t,n){let s=t;return null==n&&(s=`https://${t}`),`${n}://${s}/v0${e}`}function zh(e){const t=encodeURIComponent;let n="?";for(const s in e)e.hasOwnProperty(s)&&(n=n+(t(s)+"=")+t(e[s])+"&");return n=n.slice(0,-1),n}var Hh;function Kh(e,t){const n=e>=500&&e<600,s=-1!==[408,429].indexOf(e),r=-1!==t.indexOf(e);return n||s||r}!function(e){e[e.NO_ERROR=0]="NO_ERROR",e[e.NETWORK_ERROR=1]="NETWORK_ERROR",e[e.ABORT=2]="ABORT"}(Hh||(Hh={}));class Gh{constructor(e,t,n,s,r,i,o,a,c,u,l,h=!0){this.url_=e,this.method_=t,this.headers_=n,this.body_=s,this.successCodes_=r,this.additionalRetryCodes_=i,this.callback_=o,this.errorCallback_=a,this.timeout_=c,this.progressCallback_=u,this.connectionFactory_=l,this.retry=h,this.pendingConnection_=null,this.backoffId_=null,this.canceled_=!1,this.appDelete_=!1,this.promise_=new Promise(((e,t)=>{this.resolve_=e,this.reject_=t,this.start_()}))}start_(){const e=(e,t)=>{const n=this.resolve_,s=this.reject_,r=t.connection;if(t.wasSuccessCode)try{const e=this.callback_(r,r.getResponse());!function(e){return void 0!==e}(e)?n():n(e)}catch(e){s(e)}else if(null!==r){const e=Rh();e.serverResponse=r.getErrorText(),this.errorCallback_?s(this.errorCallback_(r,e)):s(e)}else t.canceled?s(this.appDelete_?xh():Nh()):s(Dh())};this.canceled_?e(0,new Wh(!1,null,!0)):this.backoffId_=function(e,t,n){let s=1,r=null,i=null,o=!1,a=0;function c(){return 2===a}let u=!1;function l(...e){u||(u=!0,t.apply(null,e))}function h(t){r=setTimeout((()=>{r=null,e(f,c())}),t)}function d(){i&&clearTimeout(i)}function f(e,...t){if(u)return void d();if(e)return d(),void l.call(null,e,...t);if(c()||o)return d(),void l.call(null,e,...t);let n;s<64&&(s*=2),1===a?(a=2,n=0):n=1e3*(s+Math.random()),h(n)}let p=!1;function m(e){p||(p=!0,d(),u||(null!==r?(e||(a=2),clearTimeout(r),h(0)):e||(a=1)))}return h(0),i=setTimeout((()=>{o=!0,m(!0)}),n),m}(((e,t)=>{if(t)return void e(!1,new Wh(!1,null,!0));const n=this.connectionFactory_();this.pendingConnection_=n;const s=e=>{const t=e.loaded,n=e.lengthComputable?e.total:-1;null!==this.progressCallback_&&this.progressCallback_(t,n)};null!==this.progressCallback_&&n.addUploadProgressListener(s),n.send(this.url_,this.method_,this.body_,this.headers_).then((()=>{null!==this.progressCallback_&&n.removeUploadProgressListener(s),this.pendingConnection_=null;const t=n.getErrorCode()===Hh.NO_ERROR,r=n.getStatus();if((!t||Kh(r,this.additionalRetryCodes_))&&this.retry){const t=n.getErrorCode()===Hh.ABORT;return void e(!1,new Wh(!1,null,t))}const i=-1!==this.successCodes_.indexOf(r);e(!0,new Wh(i,n))}))}),e,this.timeout_)}getPromise(){return this.promise_}cancel(e){this.canceled_=!0,this.appDelete_=e||!1,null!==this.backoffId_&&function(e){e(!1)}(this.backoffId_),null!==this.pendingConnection_&&this.pendingConnection_.abort()}}class Wh{constructor(e,t,n){this.wasSuccessCode=e,this.connection=t,this.canceled=!!n}}function Qh(){return"undefined"!=typeof BlobBuilder?BlobBuilder:"undefined"!=typeof WebKitBlobBuilder?WebKitBlobBuilder:void 0}function Xh(...e){const t=Qh();if(void 0!==t){const n=new t;for(let t=0;t>6,128|63&s):55296==(64512&s)?n>18,128|s>>12&63,128|s>>6&63,128|63&s)):t.push(239,191,189):56320==(64512&s)?t.push(239,191,189):t.push(224|s>>12,128|s>>6&63,128|63&s)}return new Uint8Array(t)}function nd(e,t){switch(e){case Yh:{const n=-1!==t.indexOf("-"),s=-1!==t.indexOf("_");if(n||s)throw Ph(e,"Invalid character '"+(n?"-":"_")+"' found: is it base64url encoded?");break}case Jh:{const n=-1!==t.indexOf("+"),s=-1!==t.indexOf("/");if(n||s)throw Ph(e,"Invalid character '"+(n?"+":"/")+"' found: is it base64 encoded?");t=t.replace(/-/g,"+").replace(/_/g,"/");break}}let n;try{n=function(e){if("undefined"==typeof atob)throw new Ch("unsupported-environment","base-64 is missing. Make sure to install the required polyfills. See https://firebase.google.com/docs/web/environments-js-sdk#polyfills for more information.");return atob(e)}(t)}catch(t){if(t.message.includes("polyfill"))throw t;throw Ph(e,"Invalid character found")}const s=new Uint8Array(n.length);for(let e=0;e][;base64],");const n=t[1]||null;var s,r;null!=n&&(this.base64=(r=";base64",(s=n).length>=r.length&&s.substring(s.length-r.length)===r),this.contentType=this.base64?n.substring(0,n.length-";base64".length):n),this.rest=e.substring(e.indexOf(",")+1)}}class rd{constructor(e,t){let n=0,s="";Bh(e)?(this.data_=e,n=e.size,s=e.type):e instanceof ArrayBuffer?(t?this.data_=new Uint8Array(e):(this.data_=new Uint8Array(e.byteLength),this.data_.set(new Uint8Array(e))),n=this.data_.length):e instanceof Uint8Array&&(t?this.data_=e:(this.data_=new Uint8Array(e.length),this.data_.set(e)),n=e.length),this.size_=n,this.type_=s}size(){return this.size_}type(){return this.type_}slice(e,t){if(Bh(this.data_)){const i=(n=this.data_,s=e,r=t,n.webkitSlice?n.webkitSlice(s,r):n.mozSlice?n.mozSlice(s,r):n.slice?n.slice(s,r):null);return null===i?null:new rd(i)}var n,s,r;{const n=new Uint8Array(this.data_.buffer,e,t-e);return new rd(n,!0)}}static getBlob(...e){if($h()){const t=e.map((e=>e instanceof rd?e.data_:e));return new rd(Xh.apply(null,t))}{const t=e.map((e=>Vh(e)?function(e,t){switch(e){case"raw":return new ed(td(t));case Yh:case Jh:return new ed(nd(e,t));case Zh:return new ed(function(e){const t=new sd(e);return t.base64?nd(Yh,t.rest):function(e){let t;try{t=decodeURIComponent(e)}catch(e){throw Ph(Zh,"Malformed data URL.")}return td(t)}(t.rest)}(t),new sd(t).contentType)}throw Rh()}("raw",e).data:e.data_));let n=0;t.forEach((e=>{n+=e.byteLength}));const s=new Uint8Array(n);let r=0;return t.forEach((e=>{for(let t=0;t{Promise.resolve().then((()=>e(...t)))}}class Dd{constructor(){this.sent_=!1,this.xhr_=new XMLHttpRequest,this.initXhr(),this.errorCode_=Hh.NO_ERROR,this.sendPromise_=new Promise((e=>{this.xhr_.addEventListener("abort",(()=>{this.errorCode_=Hh.ABORT,e()})),this.xhr_.addEventListener("error",(()=>{this.errorCode_=Hh.NETWORK_ERROR,e()})),this.xhr_.addEventListener("load",(()=>{e()}))}))}send(e,t,n,s){if(this.sent_)throw Mh("cannot .send() more than once");if(this.sent_=!0,this.xhr_.open(t,e,!0),void 0!==s)for(const e in s)s.hasOwnProperty(e)&&this.xhr_.setRequestHeader(e,s[e].toString());return void 0!==n?this.xhr_.send(n):this.xhr_.send(),this.sendPromise_}getErrorCode(){if(!this.sent_)throw Mh("cannot .getErrorCode() before sending");return this.errorCode_}getStatus(){if(!this.sent_)throw Mh("cannot .getStatus() before sending");try{return this.xhr_.status}catch(e){return-1}}getResponse(){if(!this.sent_)throw Mh("cannot .getResponse() before sending");return this.xhr_.response}getErrorText(){if(!this.sent_)throw Mh("cannot .getErrorText() before sending");return this.xhr_.statusText}abort(){this.xhr_.abort()}getResponseHeader(e){return this.xhr_.getResponseHeader(e)}addUploadProgressListener(e){null!=this.xhr_.upload&&this.xhr_.upload.addEventListener("progress",e)}removeUploadProgressListener(e){null!=this.xhr_.upload&&this.xhr_.upload.removeEventListener("progress",e)}}class Nd extends Dd{initXhr(){this.xhr_.responseType="text"}}function Od(){return new Nd}class Ld{constructor(e,t,n=null){this._transferred=0,this._needToFetchStatus=!1,this._needToFetchMetadata=!1,this._observers=[],this._error=void 0,this._uploadUrl=void 0,this._request=void 0,this._chunkMultiplier=1,this._resolve=void 0,this._reject=void 0,this._ref=e,this._blob=t,this._metadata=n,this._mappings=ld(),this._resumable=this._shouldDoResumable(this._blob),this._state="running",this._errorHandler=e=>{if(this._request=void 0,this._chunkMultiplier=1,e._codeEquals("canceled"))this._needToFetchStatus=!0,this.completeTransitions_();else{const t=this.isExponentialBackoffExpired();if(Kh(e.status,[])){if(!t)return this.sleepTime=Math.max(2*this.sleepTime,1e3),this._needToFetchStatus=!0,void this.completeTransitions_();e=Dh()}this._error=e,this._transition("error")}},this._metadataErrorHandler=e=>{this._request=void 0,e._codeEquals("canceled")?this.completeTransitions_():(this._error=e,this._transition("error"))},this.sleepTime=0,this.maxSleepTime=this._ref.storage.maxUploadRetryTime,this._promise=new Promise(((e,t)=>{this._resolve=e,this._reject=t,this._start()})),this._promise.then(null,(()=>{}))}isExponentialBackoffExpired(){return this.sleepTime>this.maxSleepTime}_makeProgressCallback(){const e=this._transferred;return t=>this._updateProgress(e+t)}_shouldDoResumable(e){return e.size()>262144}_start(){"running"===this._state&&void 0===this._request&&(this._resumable?void 0===this._uploadUrl?this._createResumable():this._needToFetchStatus?this._fetchStatus():this._needToFetchMetadata?this._fetchMetadata():this.pendingTimeout=setTimeout((()=>{this.pendingTimeout=void 0,this._continueUpload()}),this.sleepTime):this._oneShotUpload())}_resolveToken(e){Promise.all([this._ref.storage._getAuthToken(),this._ref.storage._getAppCheckToken()]).then((([t,n])=>{switch(this._state){case"running":e(t,n);break;case"canceling":this._transition("canceled");break;case"pausing":this._transition("paused")}}))}_createResumable(){this._resolveToken(((e,t)=>{const n=function(e,t,n,s,r){const i=t.bucketOnlyServerUrl(),o=vd(t,s,r),a={name:o.fullPath},c=qh(i,e.host,e._protocol),u={"X-Goog-Upload-Protocol":"resumable","X-Goog-Upload-Command":"start","X-Goog-Upload-Header-Content-Length":`${s.size()}`,"X-Goog-Upload-Header-Content-Type":o.contentType,"Content-Type":"application/json; charset=utf-8"},l=dd(o,n),h=e.maxUploadRetryTime,d=new fd(c,"POST",(function(e){let t;_d(e);try{t=e.getResponseHeader("X-Goog-Upload-URL")}catch(e){pd(!1)}return pd(Vh(t)),t}),h);return d.urlParams=a,d.headers=u,d.body=l,d.errorHandler=gd(t),d}(this._ref.storage,this._ref._location,this._mappings,this._blob,this._metadata),s=this._ref.storage._makeRequest(n,Od,e,t);this._request=s,s.getPromise().then((e=>{this._request=void 0,this._uploadUrl=e,this._needToFetchStatus=!1,this.completeTransitions_()}),this._errorHandler)}))}_fetchStatus(){const e=this._uploadUrl;this._resolveToken(((t,n)=>{const s=function(e,t,n,s){const r=e.maxUploadRetryTime,i=new fd(n,"POST",(function(e){const t=_d(e,["active","final"]);let n=null;try{n=e.getResponseHeader("X-Goog-Upload-Size-Received")}catch(e){pd(!1)}n||pd(!1);const r=Number(n);return pd(!isNaN(r)),new wd(r,s.size(),"final"===t)}),r);return i.headers={"X-Goog-Upload-Command":"query"},i.errorHandler=gd(t),i}(this._ref.storage,this._ref._location,e,this._blob),r=this._ref.storage._makeRequest(s,Od,t,n);this._request=r,r.getPromise().then((e=>{this._request=void 0,this._updateProgress(e.current),this._needToFetchStatus=!1,e.finalized&&(this._needToFetchMetadata=!0),this.completeTransitions_()}),this._errorHandler)}))}_continueUpload(){const e=bd*this._chunkMultiplier,t=new wd(this._transferred,this._blob.size()),n=this._uploadUrl;this._resolveToken(((s,r)=>{let i;try{i=function(e,t,n,s,r,i,o,a){const c=new wd(0,0);if(o?(c.current=o.current,c.total=o.total):(c.current=0,c.total=s.size()),s.size()!==c.total)throw new Ch("server-file-wrong-size","Server recorded incorrect upload file size, please retry the upload.");const u=c.total-c.current;let l=u;r>0&&(l=Math.min(l,r));const h=c.current,d=h+l;let f="";f=0===l?"finalize":u===l?"upload, finalize":"upload";const p={"X-Goog-Upload-Command":f,"X-Goog-Upload-Offset":`${c.current}`},m=s.slice(h,d);if(null===m)throw Oh();const g=t.maxUploadRetryTime,y=new fd(n,"POST",(function(e,n){const r=_d(e,["active","final"]),o=c.current+l,a=s.size();let u;return u="final"===r?md(t,i)(e,n):null,new wd(o,a,"final"===r,u)}),g);return y.headers=p,y.body=m.uploadData(),y.progressCallback=a||null,y.errorHandler=gd(e),y}(this._ref._location,this._ref.storage,n,this._blob,e,this._mappings,t,this._makeProgressCallback())}catch(e){return this._error=e,void this._transition("error")}const o=this._ref.storage._makeRequest(i,Od,s,r,!1);this._request=o,o.getPromise().then((e=>{this._increaseMultiplier(),this._request=void 0,this._updateProgress(e.current),e.finalized?(this._metadata=e.metadata,this._transition("success")):this.completeTransitions_()}),this._errorHandler)}))}_increaseMultiplier(){bd*this._chunkMultiplier*2<33554432&&(this._chunkMultiplier*=2)}_fetchMetadata(){this._resolveToken(((e,t)=>{const n=function(e,t,n){const s=qh(t.fullServerUrl(),e.host,e._protocol),r=e.maxOperationRetryTime,i=new fd(s,"GET",md(e,n),r);return i.errorHandler=yd(t),i}(this._ref.storage,this._ref._location,this._mappings),s=this._ref.storage._makeRequest(n,Od,e,t);this._request=s,s.getPromise().then((e=>{this._request=void 0,this._metadata=e,this._transition("success")}),this._metadataErrorHandler)}))}_oneShotUpload(){this._resolveToken(((e,t)=>{const n=function(e,t,n,s,r){const i=t.bucketOnlyServerUrl(),o={"X-Goog-Upload-Protocol":"multipart"},a=function(){let e="";for(let t=0;t<2;t++)e+=Math.random().toString().slice(2);return e}();o["Content-Type"]="multipart/related; boundary="+a;const c=vd(t,s,r),u="--"+a+"\r\nContent-Type: application/json; charset=utf-8\r\n\r\n"+dd(c,n)+"\r\n--"+a+"\r\nContent-Type: "+c.contentType+"\r\n\r\n",l="\r\n--"+a+"--",h=rd.getBlob(u,s,l);if(null===h)throw Oh();const d={name:c.fullPath},f=qh(i,e.host,e._protocol),p=e.maxUploadRetryTime,m=new fd(f,"POST",md(e,n),p);return m.urlParams=d,m.headers=o,m.body=h.uploadData(),m.errorHandler=gd(t),m}(this._ref.storage,this._ref._location,this._mappings,this._blob,this._metadata),s=this._ref.storage._makeRequest(n,Od,e,t);this._request=s,s.getPromise().then((e=>{this._request=void 0,this._metadata=e,this._updateProgress(this._blob.size()),this._transition("success")}),this._errorHandler)}))}_updateProgress(e){const t=this._transferred;this._transferred=e,this._transferred!==t&&this._notifyObservers()}_transition(e){if(this._state!==e)switch(e){case"canceling":case"pausing":this._state=e,void 0!==this._request?this._request.cancel():this.pendingTimeout&&(clearTimeout(this.pendingTimeout),this.pendingTimeout=void 0,this.completeTransitions_());break;case"running":const t="paused"===this._state;this._state=e,t&&(this._notifyObservers(),this._start());break;case"paused":case"error":case"success":this._state=e,this._notifyObservers();break;case"canceled":this._error=Nh(),this._state=e,this._notifyObservers()}}completeTransitions_(){switch(this._state){case"pausing":this._transition("paused");break;case"canceling":this._transition("canceled");break;case"running":this._start()}}get snapshot(){const e=Cd(this._state);return{bytesTransferred:this._transferred,totalBytes:this._blob.size(),state:e,metadata:this._metadata,task:this,ref:this._ref}}on(e,t,n,s){const r=new Ad(t||void 0,n||void 0,s||void 0);return this._addObserver(r),()=>{this._removeObserver(r)}}then(e,t){return this._promise.then(e,t)}catch(e){return this.then(null,e)}_addObserver(e){this._observers.push(e),this._notifyObserver(e)}_removeObserver(e){const t=this._observers.indexOf(e);-1!==t&&this._observers.splice(t,1)}_notifyObservers(){this._finishPromise(),this._observers.slice().forEach((e=>{this._notifyObserver(e)}))}_finishPromise(){if(void 0!==this._resolve){let e=!0;switch(Cd(this._state)){case Id:Rd(this._resolve.bind(null,this.snapshot))();break;case kd:case Sd:Rd(this._reject.bind(null,this._error))();break;default:e=!1}e&&(this._resolve=void 0,this._reject=void 0)}}_notifyObserver(e){switch(Cd(this._state)){case Td:case Ed:e.next&&Rd(e.next.bind(e,this.snapshot))();break;case Id:e.complete&&Rd(e.complete.bind(e))();break;default:e.error&&Rd(e.error.bind(e,this._error))()}}resume(){const e="paused"===this._state||"pausing"===this._state;return e&&this._transition("running"),e}pause(){const e="running"===this._state;return e&&this._transition("pausing"),e}cancel(){const e="running"===this._state||"pausing"===this._state;return e&&this._transition("canceling"),e}}class xd{constructor(e,t){this._service=e,this._location=t instanceof Uh?t:Uh.makeFromUrl(t,e.host)}toString(){return"gs://"+this._location.bucket+"/"+this._location.path}_newRef(e,t){return new xd(e,t)}get root(){const e=new Uh(this._location.bucket,"");return this._newRef(this._service,e)}get bucket(){return this._location.bucket}get fullPath(){return this._location.path}get name(){return od(this._location.path)}get storage(){return this._service}get parent(){const e=function(e){if(0===e.length)return null;const t=e.lastIndexOf("/");return-1===t?"":e.slice(0,t)}(this._location.path);if(null===e)return null;const t=new Uh(this._location.bucket,e);return new xd(this._service,t)}_throwIfRoot(e){if(""===this._location.path)throw function(e){return new Ch("invalid-root-operation","The operation '"+e+"' cannot be performed on a root reference, create a non-root reference using child, such as .child('file.png').")}(e)}}function Pd(e){e._throwIfRoot("getDownloadURL");const t=function(e,t,n){const s=qh(t.fullServerUrl(),e.host,e._protocol),r=e.maxOperationRetryTime,i=new fd(s,"GET",function(e,t){return function(n,s){const r=hd(e,s,t);return pd(null!==r),function(e,t,n,s){const r=id(t);if(null===r)return null;if(!Vh(r.downloadTokens))return null;const i=r.downloadTokens;if(0===i.length)return null;const o=encodeURIComponent;return i.split(",").map((t=>{const r=e.bucket,i=e.fullPath;return qh("/b/"+o(r)+"/o/"+o(i),n,s)+zh({alt:"media",token:t})}))[0]}(r,s,e.host,e._protocol)}}(e,n),r);return i.errorHandler=yd(t),i}(e.storage,e._location,ld());return e.storage.makeRequestWithTokens(t,Od).then((e=>{if(null===e)throw new Ch("no-download-url","The given file does not have any download URLs.");return e}))}function Md(e,t){if(e instanceof Fd){const n=e;if(null==n._bucket)throw new Ch("no-default-bucket","No default bucket found. Did you set the 'storageBucket' property when initializing the app?");const s=new xd(n,n._bucket);return null!=t?Md(s,t):s}return void 0!==t?function(e,t){const n=function(e,t){const n=t.split("/").filter((e=>e.length>0)).join("/");return 0===e.length?n:e+"/"+n}(e._location.path,t),s=new Uh(e._location.bucket,n);return new xd(e.storage,s)}(e,t):e}function Ud(e,t){const n=null==t?void 0:t.storageBucket;return null==n?null:Uh.makeFromBucketSpec(n,e)}class Fd{constructor(e,t,n,s,r){this.app=e,this._authProvider=t,this._appCheckProvider=n,this._url=s,this._firebaseVersion=r,this._bucket=null,this._host=Sh,this._protocol="https",this._appId=null,this._deleted=!1,this._maxOperationRetryTime=12e4,this._maxUploadRetryTime=6e5,this._requests=new Set,this._bucket=null!=s?Uh.makeFromBucketSpec(s,this._host):Ud(this._host,this.app.options)}get host(){return this._host}set host(e){this._host=e,null!=this._url?this._bucket=Uh.makeFromBucketSpec(this._url,e):this._bucket=Ud(e,this.app.options)}get maxUploadRetryTime(){return this._maxUploadRetryTime}set maxUploadRetryTime(e){jh("time",0,Number.POSITIVE_INFINITY,e),this._maxUploadRetryTime=e}get maxOperationRetryTime(){return this._maxOperationRetryTime}set maxOperationRetryTime(e){jh("time",0,Number.POSITIVE_INFINITY,e),this._maxOperationRetryTime=e}async _getAuthToken(){if(this._overrideAuthToken)return this._overrideAuthToken;const e=this._authProvider.getImmediate({optional:!0});if(e){const t=await e.getToken();if(null!==t)return t.accessToken}return null}async _getAppCheckToken(){const e=this._appCheckProvider.getImmediate({optional:!0});return e?(await e.getToken()).token:null}_delete(){return this._deleted||(this._deleted=!0,this._requests.forEach((e=>e.cancel())),this._requests.clear()),Promise.resolve()}_makeStorageReference(e){return new xd(this,e)}_makeRequest(e,t,n,s,r=!0){if(this._deleted)return new Fh(xh());{const i=function(e,t,n,s,r,i,o=!0){const a=zh(e.urlParams),c=e.url+a,u=Object.assign({},e.headers);return function(e,t){t&&(e["X-Firebase-GMPID"]=t)}(u,t),function(e,t){null!==t&&t.length>0&&(e.Authorization="Firebase "+t)}(u,n),function(e,t){e["X-Firebase-Storage-Version"]="webjs/"+(null!=t?t:"AppManager")}(u,i),function(e,t){null!==t&&(e["X-Firebase-AppCheck"]=t)}(u,s),new Gh(c,e.method,u,e.body,e.successCodes,e.additionalRetryCodes,e.handler,e.errorHandler,e.timeout,e.progressCallback,r,o)}(e,this._appId,n,s,t,this._firebaseVersion,r);return this._requests.add(i),i.getPromise().then((()=>this._requests.delete(i)),(()=>this._requests.delete(i))),i}}async makeRequestWithTokens(e,t){const[n,s]=await Promise.all([this._getAuthToken(),this._getAppCheckToken()]);return this._makeRequest(e,t,n,s).getPromise()}}const Vd="@firebase/storage",Bd="0.9.14",$d="storage";fe(new R($d,(function(e,{instanceIdentifier:t}){const n=e.getProvider("app").getImmediate(),s=e.getProvider("auth-internal"),r=e.getProvider("app-check-internal");return new Fd(n,s,r,t,ye)}),"PUBLIC").setMultipleInstances(!0)),_e(Vd,Bd,""),_e(Vd,Bd,"esm2017");const jd=(e,t,n,s)=>new Promise(((r,i)=>{var o;const a=function(e,t,n){return function(e,t,n){return e._throwIfRoot("uploadBytesResumable"),new Ld(e,new rd(t),n)}(e=A(e),t,n)}((o=e+"/"+n,function(e,t){if(t&&/^[A-Za-z]+:\/\//.test(t)){if(e instanceof Fd)return new xd(e,t);throw Lh("To use ref(service, url), the first argument must be a Storage instance.")}return Md(e,t)}(A(Um),o)),t,s);a.on("state_changed",(e=>{}),(e=>{switch(e.code){case"storage/unauthorized":case"storage/canceled":case"storage/unknown":i("Uploading Error")}}),(()=>{var e;(e=a.snapshot.ref,Pd(e=A(e))).then((e=>{r(e)}))}))}));function qd(e,t){let n=e.querySelector(".drop-zone__thumb");if(e.querySelector(".drop-zone__prompt")&&e.querySelector(".drop-zone__prompt").remove(),n||(n=document.createElement("div"),n.classList.add("drop-zone__thumb"),e.appendChild(n)),n.dataset.label=t.name,t.type.startsWith("image/")){const e=new FileReader;e.readAsDataURL(t),e.onload=()=>{n.style.backgroundImage=`url('${e.result}')`,console.log("done background change")}}else n.style.backgroundImage=null,console.log("not done background change")}const zd={contentType:"image/jpeg",author:"IEDC-SJCET-Palai"};var Hd,Kd,Gd;const Wd={contentType:"image/jpeg",author:"IEDC-SJCET-Palai"};var Qd,Xd,Yd;const Jd=async()=>{const e=document.getElementById("formHead"),t=fh(Ol(Mm,"FORMS"),mh("TimeStamp","desc"),(function(e,t){if(t<=0)throw new Hr(zr.INVALID_ARGUMENT,`Function ${e}() requires a positive number, but it was: ${t}.`)}("limit",1),new gh("limit",1,"F")));(await Ih(t)).forEach((t=>{let n=t.data();console.log(n),e.innerHTML+=function(e){let t=new Date(e.FormEndsAt)>new Date?'Live ':'Closed ',n=new Date(e.FormEndsAt)>new Date?`Form ends in ${o(new Date,new Date(e.FormEndsAt))}`:`Form ended ${i(new Date,new Date(e.FormEndsAt))}`,s=new Date(e.EventStartAt)>new Date?`Event starts in ${o(new Date,new Date(e.EventStartAt))}`:`Event started ${i(new Date,new Date(e.EventStartAt))}`;return`
\n \n
\n

${e.EventName}

\n ${t} \n \n
\n
\n
\n x\n
\n
\n ${n}\n
\n
\n ${s}\n
\n
\n \n
`}(n);let s="empty"===n.extQ1,r="empty"===n.extQ2,a="empty"===n.extQ3;const c=fh(Ol(Mm,n.collectionName),mh("TimeStamp","desc"));document.getElementById("responcesTable").innerHTML+=`\n TimeStamp\n Name\n Email\n Whatsapp\n Dept\n Year\n College\n \n ${s?"":`${n.extQ1}`}\n ${r?"":`${n.extQ2}`}\n ${a?"":`${n.extQ3}`}\n \n Source\n Message\n `;const u=document.getElementById("responcesTableBody");Zd(c,u,s,r,a),document.getElementById("refreshBTN").addEventListener("click",(e=>{e.preventDefault(),Zd(c,u,s,r,a)}))}))};async function Zd(e,t,n,s,r){t.innerHTML="";const o=await Ih(e);let a=0;o.forEach((e=>{let o=e.data();console.log(o),t.innerHTML+=function(e,t,n,s){let r=`\n ${i(new Date,new Date(e.TimeStamp))}\n ${e.Name}\n ${e.Email}\n ${e.WhatsappNumber}\n ${e.branch}\n ${e.currentYear}\n ${e.institutionName}`;return t||(r+=`${e.extQ1}`),n||(r+=`${e.extQ2}`),s||(r+=`${e.extQ3}`),r+`${e.ads}\n ${e.message}`}(o,n,s,r),a++})),document.getElementById("noRes").innerHTML=a}async function ef(e,t){t.innerHTML="";const n=await Ih(e);let s=0;n.forEach((e=>{let n=e.data();var r;t.innerHTML+=`\n ${(r=n)?.UploadTimeStamp?i(new Date,new Date(r.UploadTimeStamp)):"-"}\n ${r.member1.name}\n ${r.member1.branch}\n ${r.member1.year}\n\n ${r.member1Email||""}\n ${r.member1Phone||""}\n\n ${r.member2.name||""}\n ${r.member2.branch||""}\n ${r.member2.year||""}\n\n ${r.member3.name||""}\n ${r.member3.branch||""}\n ${r.member3.year||""}\n\n ${r.member4.name||""}\n ${r.member4.branch||""}\n ${r.member4.year||""}\n\n ${r.member5.name||""}\n ${r.member5.branch||""}\n ${r.member5.year||""}\n\n ${r.member6.name||""}\n ${r.member6.branch||""}\n ${r.member6.year||""}\n \n \n ${r.describe||""}\n ${r.psTitle||""}\n ${r.psCode||""}\n ${r.dependency||""}\n ${r.techStack||""}\n ${r.theme||""}\n ${r.useCase||""}\n \n \n \n ${tf(r.url)}\n \n\n `,s++})),document.getElementById("noRes").innerHTML=s}function tf(e){return e.includes("http")?e:`https://${e}`}async function nf(e,t){t.innerHTML="";const n=await Ih(e);let s=0;n.forEach((e=>{let n=e.data(),r=e.id;t.innerHTML+=function(e,t){return`\n ${e?.UploadTimeStamp?i(new Date,new Date(e.UploadTimeStamp)):"-"}\n ${e.teamLeader.studentName}\n ${e.teamLeader.branch}\n ${e.teamLeader.currentYear}\n ${e.teamLeader.studentEmail}\n ${e.teamLeader.studentPhone}\n ${e.teamLeader.linkedin?`${e.teamLeader.linkedin}`:""}\n ${e.teamLeader.portfolio?`${e.teamLeader.portfolio}`:""}\n ${e.teamLeader.foodPreference||""} \x3c!-- Food Preference --\x3e\n\n ${e.members[0]?.member2Name||""}\n ${e.members[0]?.member2Branch||""}\n ${e.members[0]?.member2Year||""}\n ${e.members[0]?.member2FoodPreference||""}\n\n ${e.members[1]?.member3Name||""}\n ${e.members[1]?.member3Branch||""}\n ${e.members[1]?.member3Year||""}\n ${e.members[1]?.member3FoodPreference||""}\n\n ${e.members[2]?.member4Name||""}\n ${e.members[2]?.member4Branch||""}\n ${e.members[2]?.member4Year||""}\n ${e.members[2]?.member4FoodPreference||""}\n\n ${e.members[3]?.member5Name||""}\n ${e.members[3]?.member5Branch||""}\n ${e.members[3]?.member5Year||""}\n ${e.members[3]?.member5FoodPreference||""}\n\n ${e.members[4]?.member6Name||""}\n ${e.members[4]?.member6Branch||""}\n ${e.members[4]?.member6Year||""}\n ${e.members[4]?.member6FoodPreference||""}\n\n ${t||""} \n ${e.teamName||""} \n ${e.categoryOfProduct||""} \n ${e.countOfMembers||""} \n\n ${e.describe||""}\n ${e.psTitle||""}\n ${e.psCode||""}\n ${e.dependency||""}\n ${e.techStack.split(",").join(" ")||""}\n ${e.theme||""}\n ${e.useCase||""}\n \n \n \n \n \n ${e.url?sf(e.url):"No URL provided"}\n \n\n `}(n,r),s++})),document.getElementById("noRes").innerHTML=s}function sf(e){return e?e.includes("http")?e:`https://${e}`:"#"}function rf(){document.getElementById("authLogoutBTN").addEventListener("click",(e=>{e.preventDefault(),function(e){return A(e).signOut()}(Fm).then((()=>{console.log("user signed out"),alert("user signed out"),Vm()})).catch((e=>{console.log(e.message),alert(e.message)}))})),document.getElementById("addEventsBTN").addEventListener("click",(e=>{e.preventDefault(),$("#app").load("forms/upload.html",(()=>{(()=>{const e=document.getElementById("uploadform"),i=Ol(Mm,"EVENTS");e.addEventListener("submit",(o=>{o.preventDefault(),n(),console.log("upLoading IMG"),Xd=e.name.value.replace(/ +/g,""),jd("EVENTS",Qd,Xd,Wd).then((n=>{Yd=n,kh(i,{EventName:e.name.value,RedirectLink:e.link.value,EventStartsAt:r(e.dateS.value),LinkExpireAt:r(e.dateE.value),Description:e.message.value,EventVenue:e.venue.value,IMG_URL:Yd,UploadTimeStamp:Date.now()}).then((()=>{e.reset(),console.log("Event Submited"),$("#app").load("forms/successfull.html",(()=>{s(Yd),t()}))}))})).catch((e=>{console.log(e),$("#app").load("forms/failed.html",(()=>{s("."),t()}))}))})),document.querySelectorAll(".drop-zone__input").forEach((e=>{const t=e.closest(".drop-zone");t.addEventListener("click",(t=>{e.click()})),e.addEventListener("change",(n=>{e.files.length&&(console.log("added file"),Qd=n.target.files[0],Xd=Qd.name,console.log(Xd),qd(t,Qd))})),t.addEventListener("dragover",(e=>{e.preventDefault(),t.classList.add("drop-zone--over")})),["dragleave","dragend"].forEach((e=>{t.addEventListener(e,(e=>{t.classList.remove("drop-zone--over")}))})),t.addEventListener("drop",(n=>{n.preventDefault(),n.dataTransfer.files.length&&(e.files=n.dataTransfer.files,console.log("added file"),Qd=n.dataTransfer.files[0],Xd=Qd.name,console.log(Xd),qd(t,Qd)),t.classList.remove("drop-zone--over")}))}))})(),of()}))})),document.getElementById("createFormBTN").addEventListener("click",(e=>{e.preventDefault(),console.log("auto form loading"),$("#app").load("forms/autoFORM.html",(()=>{(()=>{const e=document.getElementById("autoForm"),i=Ol(Mm,"FORMS");e.addEventListener("submit",(o=>{o.preventDefault(),n(),Kd=e.EventName.value.replace(/ +/g,""),jd("FORM",Hd,Kd,zd).then((n=>{Gd=n;let o=""===e.extQ1.value?"empty":e.extQ1.value,a=""===e.extQ2.value?"empty":e.extQ2.value,c=""===e.extQ3.value?"empty":e.extQ3.value,u=""===e.extText.value?"empty":e.extText.value,l=e.EventName.value.replace(/ +/g,"");kh(i,{EventName:e.EventName.value,EventDescription:e.EventDes.value,EventStartAt:r(e.eventStartsAt.value),FormEndsAt:r(e.formEndsAt.value),TimeStamp:Date.now(),ImgURL:Gd,extText:u,extQ1:o,extQ2:a,extQ3:c,collectionName:l}).then((()=>{e.reset(),console.log("Form Created"),$("#app").load("forms/successfull.html",(()=>{s(Gd),t()}))})).catch((e=>{console.log(e),$("#app").load("forms/failed.html",(()=>{s(Gd),t()}))}))})).catch((e=>{console.log(e),$("#app").load("forms/failed.html",(()=>{s("."),t()}))}))})),document.querySelectorAll(".drop-zone__input").forEach((e=>{const t=e.closest(".drop-zone");t.addEventListener("click",(t=>{e.click()})),e.addEventListener("change",(n=>{e.files.length&&(console.log("added file"),Hd=n.target.files[0],Kd=Hd.name,console.log(Kd),qd(t,Hd))})),t.addEventListener("dragover",(e=>{e.preventDefault(),t.classList.add("drop-zone--over")})),["dragleave","dragend"].forEach((e=>{t.addEventListener(e,(e=>{t.classList.remove("drop-zone--over")}))})),t.addEventListener("drop",(n=>{n.preventDefault(),n.dataTransfer.files.length&&(e.files=n.dataTransfer.files,console.log("added file"),Hd=n.dataTransfer.files[0],Kd=Hd.name,console.log(Kd),qd(t,Hd)),t.classList.remove("drop-zone--over")}))}))})(),of()}))})),document.getElementById("viewFormBTN").addEventListener("click",(e=>{e.preventDefault(),$("#app").load("forms/viewFormResponce.html",(()=>{Jd(),setTimeout((()=>{of()}),6e3)}))})),document.getElementById("viewFeedbackBTN").addEventListener("click",(e=>{e.preventDefault(),$("#app").load("forms/viewFeedbacks.html",(()=>{(async()=>{const e=document.getElementById("formContainer"),t=fh(Ol(Mm,"FEEDBACK"),mh("UploadTimeStamp","desc"));let n=new Date;(await Ih(t)).forEach((t=>{let s=t.data();e.innerHTML+=((e,t)=>`\n ${i(t,e.UploadTimeStamp)}\n ${e.name}\n ${e.email}\n ${e.feedback}\n `)(s,n)}))})(),of()}))})),document.getElementById("viewCustomForm").addEventListener("click",(e=>{e.preventDefault(),$("#app").load("forms/startup.html",(()=>{(async()=>{const e=fh(Ol(Mm,"smart-india-hackathon")),t=document.getElementById("responcesTableBody");ef(e,t),document.getElementById("refreshBTN").addEventListener("click",(n=>{n.preventDefault(),ef(e,t)}))})(),of()}))})),document.getElementById("viewSIH24Form").addEventListener("click",(e=>{e.preventDefault(),$("#app").load("forms/sih24.html",(()=>{(async()=>{const e=fh(Ol(Mm,"sih-hackathon-24"),mh("UploadTimeStamp","desc")),t=document.getElementById("responcesTableBody");await nf(e,t),document.getElementById("refreshBTN").addEventListener("click",(n=>{n.preventDefault(),nf(e,t)}))})(),of()}))}))}function of(){document.getElementById("backBTN").addEventListener("click",(e=>{e.preventDefault(),$("#app").load("forms/options.html",(()=>{rf()}))}))}function af(e,t){var n={};for(var s in e)Object.prototype.hasOwnProperty.call(e,s)&&t.indexOf(s)<0&&(n[s]=e[s]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var r=0;for(s=Object.getOwnPropertySymbols(e);re,"Short delay should be less than long delay!"),this.isMobile="undefined"!=typeof window&&!!(window.cordova||window.phonegap||window.PhoneGap)&&/ios|iphone|ipod|ipad|android|blackberry|iemobile/i.test(h())||"object"==typeof navigator&&"ReactNative"===navigator.product}get(){return Tf()?this.isMobile?this.longDelay:this.shortDelay:Math.min(5e3,this.shortDelay)}}function If(e,t){yf(e.emulator,"Emulator should always be set here");const{url:n}=e.emulator;return t?`${n}${t.startsWith("/")?t.slice(1):t}`:n}class kf{static initialize(e,t,n){this.fetchImpl=e,t&&(this.headersImpl=t),n&&(this.responseImpl=n)}static fetch(){return this.fetchImpl?this.fetchImpl:"undefined"!=typeof self&&"fetch"in self?self.fetch:void gf("Could not find fetch implementation, make sure you call FetchProvider.initialize() with an appropriate polyfill")}static headers(){return this.headersImpl?this.headersImpl:"undefined"!=typeof self&&"Headers"in self?self.Headers:void gf("Could not find Headers implementation, make sure you call FetchProvider.initialize() with an appropriate polyfill")}static response(){return this.responseImpl?this.responseImpl:"undefined"!=typeof self&&"Response"in self?self.Response:void gf("Could not find Response implementation, make sure you call FetchProvider.initialize() with an appropriate polyfill")}}const Sf={CREDENTIAL_MISMATCH:"custom-token-mismatch",MISSING_CUSTOM_TOKEN:"internal-error",INVALID_IDENTIFIER:"invalid-email",MISSING_CONTINUE_URI:"internal-error",INVALID_PASSWORD:"wrong-password",MISSING_PASSWORD:"internal-error",EMAIL_EXISTS:"email-already-in-use",PASSWORD_LOGIN_DISABLED:"operation-not-allowed",INVALID_IDP_RESPONSE:"invalid-credential",INVALID_PENDING_TOKEN:"invalid-credential",FEDERATED_USER_ID_ALREADY_LINKED:"credential-already-in-use",MISSING_REQ_TYPE:"internal-error",EMAIL_NOT_FOUND:"user-not-found",RESET_PASSWORD_EXCEED_LIMIT:"too-many-requests",EXPIRED_OOB_CODE:"expired-action-code",INVALID_OOB_CODE:"invalid-action-code",MISSING_OOB_CODE:"internal-error",CREDENTIAL_TOO_OLD_LOGIN_AGAIN:"requires-recent-login",INVALID_ID_TOKEN:"invalid-user-token",TOKEN_EXPIRED:"user-token-expired",USER_NOT_FOUND:"user-token-expired",TOO_MANY_ATTEMPTS_TRY_LATER:"too-many-requests",INVALID_CODE:"invalid-verification-code",INVALID_SESSION_INFO:"invalid-verification-id",INVALID_TEMPORARY_PROOF:"invalid-credential",MISSING_SESSION_INFO:"missing-verification-id",SESSION_EXPIRED:"code-expired",MISSING_ANDROID_PACKAGE_NAME:"missing-android-pkg-name",UNAUTHORIZED_DOMAIN:"unauthorized-continue-uri",INVALID_OAUTH_CLIENT_ID:"invalid-oauth-client-id",ADMIN_ONLY_OPERATION:"admin-restricted-operation",INVALID_MFA_PENDING_CREDENTIAL:"invalid-multi-factor-session",MFA_ENROLLMENT_NOT_FOUND:"multi-factor-info-not-found",MISSING_MFA_ENROLLMENT_ID:"missing-multi-factor-info",MISSING_MFA_PENDING_CREDENTIAL:"missing-multi-factor-session",SECOND_FACTOR_EXISTS:"second-factor-already-in-use",SECOND_FACTOR_LIMIT_EXCEEDED:"maximum-second-factor-count-exceeded",BLOCKING_FUNCTION_ERROR_RESPONSE:"internal-error"},Cf=new Ef(3e4,6e4);function Af(e,t){return e.tenantId&&!t.tenantId?Object.assign(Object.assign({},t),{tenantId:e.tenantId}):t}async function Rf(e,t,n,s,r={}){return Df(e,r,(async()=>{let r={},i={};s&&("GET"===t?i=s:r={body:JSON.stringify(s)});const o=E(Object.assign({key:e.config.apiKey},i)).slice(1),a=await e._getAdditionalHeaders();return a["Content-Type"]="application/json",e.languageCode&&(a["X-Firebase-Locale"]=e.languageCode),kf.fetch()(Of(e,e.config.apiHost,n,o),Object.assign({method:t,headers:a,referrerPolicy:"no-referrer"},r))}))}async function Df(e,t,n){e._canInitEmulator=!1;const s=Object.assign(Object.assign({},Sf),t);try{const t=new Lf(e),r=await Promise.race([n(),t.promise]);t.clearNetworkTimeout();const i=await r.json();if("needConfirmation"in i)throw xf(e,"account-exists-with-different-credential",i);if(r.ok&&!("errorMessage"in i))return i;{const t=r.ok?i.errorMessage:i.error.message,[n,o]=t.split(" : ");if("FEDERATED_USER_ID_ALREADY_LINKED"===n)throw xf(e,"credential-already-in-use",i);if("EMAIL_EXISTS"===n)throw xf(e,"email-already-in-use",i);if("USER_DISABLED"===n)throw xf(e,"user-disabled",i);const a=s[n]||n.toLowerCase().replace(/[_\s]+/g,"-");if(o)throw function(e,t,n){const s=Object.assign(Object.assign({},cf()),{[t]:n});return new w("auth","Firebase",s).create(t,{appName:e.name})}(e,a,o);df(e,a)}}catch(t){if(t instanceof v)throw t;df(e,"network-request-failed")}}async function Nf(e,t,n,s,r={}){const i=await Rf(e,t,n,s,r);return"mfaPendingCredential"in i&&df(e,"multi-factor-auth-required",{_serverResponse:i}),i}function Of(e,t,n,s){const r=`${t}${n}?${s}`;return e.config.emulator?If(e.config,r):`${e.config.apiScheme}://${r}`}class Lf{constructor(e){this.auth=e,this.timer=null,this.promise=new Promise(((e,t)=>{this.timer=setTimeout((()=>t(ff(this.auth,"network-request-failed"))),Cf.get())}))}clearNetworkTimeout(){clearTimeout(this.timer)}}function xf(e,t,n){const s={appName:e.name};n.email&&(s.email=n.email),n.phoneNumber&&(s.phoneNumber=n.phoneNumber);const r=ff(e,t,s);return r.customData._tokenResponse=n,r}function Pf(e){if(e)try{const t=new Date(Number(e));if(!isNaN(t.getTime()))return t.toUTCString()}catch(e){}}function Mf(e){return 1e3*Number(e)}function Uf(e){var t;const[n,s,r]=e.split(".");if(void 0===n||void 0===s||void 0===r)return hf("JWT malformed, contained fewer than 3 sections"),null;try{const e=l(s);return e?JSON.parse(e):(hf("Failed to decode base64 JWT payload"),null)}catch(e){return hf("Caught error parsing JWT payload as JSON",null===(t=e)||void 0===t?void 0:t.toString()),null}}async function Ff(e,t,n=!1){if(n)return t;try{return await t}catch(t){throw t instanceof v&&function({code:e}){return"auth/user-disabled"===e||"auth/user-token-expired"===e}(t)&&e.auth.currentUser===e&&await e.auth.signOut(),t}}class Vf{constructor(e){this.user=e,this.isRunning=!1,this.timerId=null,this.errorBackoff=3e4}_start(){this.isRunning||(this.isRunning=!0,this.schedule())}_stop(){this.isRunning&&(this.isRunning=!1,null!==this.timerId&&clearTimeout(this.timerId))}getInterval(e){var t;if(e){const e=this.errorBackoff;return this.errorBackoff=Math.min(2*this.errorBackoff,96e4),e}{this.errorBackoff=3e4;const e=(null!==(t=this.user.stsTokenManager.expirationTime)&&void 0!==t?t:0)-Date.now()-3e5;return Math.max(0,e)}}schedule(e=!1){if(!this.isRunning)return;const t=this.getInterval(e);this.timerId=setTimeout((async()=>{await this.iteration()}),t)}async iteration(){var e;try{await this.user.getIdToken(!0)}catch(t){return void("auth/network-request-failed"===(null===(e=t)||void 0===e?void 0:e.code)&&this.schedule(!0))}this.schedule()}}class Bf{constructor(e,t){this.createdAt=e,this.lastLoginAt=t,this._initializeTime()}_initializeTime(){this.lastSignInTime=Pf(this.lastLoginAt),this.creationTime=Pf(this.createdAt)}_copy(e){this.createdAt=e.createdAt,this.lastLoginAt=e.lastLoginAt,this._initializeTime()}toJSON(){return{createdAt:this.createdAt,lastLoginAt:this.lastLoginAt}}}async function $f(e){var t;const n=e.auth,s=await e.getIdToken(),r=await Ff(e,async function(e,t){return Rf(e,"POST","/v1/accounts:lookup",t)}(n,{idToken:s}));mf(null==r?void 0:r.users.length,n,"internal-error");const i=r.users[0];e._notifyReloadListener(i);const o=(null===(t=i.providerUserInfo)||void 0===t?void 0:t.length)?i.providerUserInfo.map((e=>{var{providerId:t}=e,n=af(e,["providerId"]);return{providerId:t,uid:n.rawId||"",displayName:n.displayName||null,email:n.email||null,phoneNumber:n.phoneNumber||null,photoURL:n.photoUrl||null}})):[],a=(c=e.providerData,u=o,[...c.filter((e=>!u.some((t=>t.providerId===e.providerId)))),...u]);var c,u;const l=e.isAnonymous,h=!(e.email&&i.passwordHash||(null==a?void 0:a.length)),d=!!l&&h,f={uid:i.localId,displayName:i.displayName||null,photoURL:i.photoUrl||null,email:i.email||null,emailVerified:i.emailVerified||!1,phoneNumber:i.phoneNumber||null,tenantId:i.tenantId||null,providerData:a,metadata:new Bf(i.createdAt,i.lastLoginAt),isAnonymous:d};Object.assign(e,f)}class jf{constructor(){this.refreshToken=null,this.accessToken=null,this.expirationTime=null}get isExpired(){return!this.expirationTime||Date.now()>this.expirationTime-3e4}updateFromServerResponse(e){mf(e.idToken,"internal-error"),mf(void 0!==e.idToken,"internal-error"),mf(void 0!==e.refreshToken,"internal-error");const t="expiresIn"in e&&void 0!==e.expiresIn?Number(e.expiresIn):function(e){const t=Uf(e);return mf(t,"internal-error"),mf(void 0!==t.exp,"internal-error"),mf(void 0!==t.iat,"internal-error"),Number(t.exp)-Number(t.iat)}(e.idToken);this.updateTokensAndExpiration(e.idToken,e.refreshToken,t)}async getToken(e,t=!1){return mf(!this.accessToken||this.refreshToken,e,"user-token-expired"),t||!this.accessToken||this.isExpired?this.refreshToken?(await this.refresh(e,this.refreshToken),this.accessToken):null:this.accessToken}clearRefreshToken(){this.refreshToken=null}async refresh(e,t){const{accessToken:n,refreshToken:s,expiresIn:r}=await async function(e,t){const n=await Df(e,{},(async()=>{const n=E({grant_type:"refresh_token",refresh_token:t}).slice(1),{tokenApiHost:s,apiKey:r}=e.config,i=Of(e,s,"/v1/token",`key=${r}`),o=await e._getAdditionalHeaders();return o["Content-Type"]="application/x-www-form-urlencoded",kf.fetch()(i,{method:"POST",headers:o,body:n})}));return{accessToken:n.access_token,expiresIn:n.expires_in,refreshToken:n.refresh_token}}(e,t);this.updateTokensAndExpiration(n,s,Number(r))}updateTokensAndExpiration(e,t,n){this.refreshToken=t||null,this.accessToken=e||null,this.expirationTime=Date.now()+1e3*n}static fromJSON(e,t){const{refreshToken:n,accessToken:s,expirationTime:r}=t,i=new jf;return n&&(mf("string"==typeof n,"internal-error",{appName:e}),i.refreshToken=n),s&&(mf("string"==typeof s,"internal-error",{appName:e}),i.accessToken=s),r&&(mf("number"==typeof r,"internal-error",{appName:e}),i.expirationTime=r),i}toJSON(){return{refreshToken:this.refreshToken,accessToken:this.accessToken,expirationTime:this.expirationTime}}_assign(e){this.accessToken=e.accessToken,this.refreshToken=e.refreshToken,this.expirationTime=e.expirationTime}_clone(){return Object.assign(new jf,this.toJSON())}_performRefresh(){return gf("not implemented")}}function qf(e,t){mf("string"==typeof e||void 0===e,"internal-error",{appName:t})}class zf{constructor(e){var{uid:t,auth:n,stsTokenManager:s}=e,r=af(e,["uid","auth","stsTokenManager"]);this.providerId="firebase",this.proactiveRefresh=new Vf(this),this.reloadUserInfo=null,this.reloadListener=null,this.uid=t,this.auth=n,this.stsTokenManager=s,this.accessToken=s.accessToken,this.displayName=r.displayName||null,this.email=r.email||null,this.emailVerified=r.emailVerified||!1,this.phoneNumber=r.phoneNumber||null,this.photoURL=r.photoURL||null,this.isAnonymous=r.isAnonymous||!1,this.tenantId=r.tenantId||null,this.providerData=r.providerData?[...r.providerData]:[],this.metadata=new Bf(r.createdAt||void 0,r.lastLoginAt||void 0)}async getIdToken(e){const t=await Ff(this,this.stsTokenManager.getToken(this.auth,e));return mf(t,this.auth,"internal-error"),this.accessToken!==t&&(this.accessToken=t,await this.auth._persistUserIfCurrent(this),this.auth._notifyListenersIfCurrent(this)),t}getIdTokenResult(e){return async function(e,t=!1){const n=A(e),s=await n.getIdToken(t),r=Uf(s);mf(r&&r.exp&&r.auth_time&&r.iat,n.auth,"internal-error");const i="object"==typeof r.firebase?r.firebase:void 0,o=null==i?void 0:i.sign_in_provider;return{claims:r,token:s,authTime:Pf(Mf(r.auth_time)),issuedAtTime:Pf(Mf(r.iat)),expirationTime:Pf(Mf(r.exp)),signInProvider:o||null,signInSecondFactor:(null==i?void 0:i.sign_in_second_factor)||null}}(this,e)}reload(){return async function(e){const t=A(e);await $f(t),await t.auth._persistUserIfCurrent(t),t.auth._notifyListenersIfCurrent(t)}(this)}_assign(e){this!==e&&(mf(this.uid===e.uid,this.auth,"internal-error"),this.displayName=e.displayName,this.photoURL=e.photoURL,this.email=e.email,this.emailVerified=e.emailVerified,this.phoneNumber=e.phoneNumber,this.isAnonymous=e.isAnonymous,this.tenantId=e.tenantId,this.providerData=e.providerData.map((e=>Object.assign({},e))),this.metadata._copy(e.metadata),this.stsTokenManager._assign(e.stsTokenManager))}_clone(e){return new zf(Object.assign(Object.assign({},this),{auth:e,stsTokenManager:this.stsTokenManager._clone()}))}_onReload(e){mf(!this.reloadListener,this.auth,"internal-error"),this.reloadListener=e,this.reloadUserInfo&&(this._notifyReloadListener(this.reloadUserInfo),this.reloadUserInfo=null)}_notifyReloadListener(e){this.reloadListener?this.reloadListener(e):this.reloadUserInfo=e}_startProactiveRefresh(){this.proactiveRefresh._start()}_stopProactiveRefresh(){this.proactiveRefresh._stop()}async _updateTokensIfNecessary(e,t=!1){let n=!1;e.idToken&&e.idToken!==this.stsTokenManager.accessToken&&(this.stsTokenManager.updateFromServerResponse(e),n=!0),t&&await $f(this),await this.auth._persistUserIfCurrent(this),n&&this.auth._notifyListenersIfCurrent(this)}async delete(){const e=await this.getIdToken();return await Ff(this,async function(e,t){return Rf(e,"POST","/v1/accounts:delete",t)}(this.auth,{idToken:e})),this.stsTokenManager.clearRefreshToken(),this.auth.signOut()}toJSON(){return Object.assign(Object.assign({uid:this.uid,email:this.email||void 0,emailVerified:this.emailVerified,displayName:this.displayName||void 0,isAnonymous:this.isAnonymous,photoURL:this.photoURL||void 0,phoneNumber:this.phoneNumber||void 0,tenantId:this.tenantId||void 0,providerData:this.providerData.map((e=>Object.assign({},e))),stsTokenManager:this.stsTokenManager.toJSON(),_redirectEventId:this._redirectEventId},this.metadata.toJSON()),{apiKey:this.auth.config.apiKey,appName:this.auth.name})}get refreshToken(){return this.stsTokenManager.refreshToken||""}static _fromJSON(e,t){var n,s,r,i,o,a,c,u;const l=null!==(n=t.displayName)&&void 0!==n?n:void 0,h=null!==(s=t.email)&&void 0!==s?s:void 0,d=null!==(r=t.phoneNumber)&&void 0!==r?r:void 0,f=null!==(i=t.photoURL)&&void 0!==i?i:void 0,p=null!==(o=t.tenantId)&&void 0!==o?o:void 0,m=null!==(a=t._redirectEventId)&&void 0!==a?a:void 0,g=null!==(c=t.createdAt)&&void 0!==c?c:void 0,y=null!==(u=t.lastLoginAt)&&void 0!==u?u:void 0,{uid:v,emailVerified:w,isAnonymous:_,providerData:b,stsTokenManager:T}=t;mf(v&&T,e,"internal-error");const E=jf.fromJSON(this.name,T);mf("string"==typeof v,e,"internal-error"),qf(l,e.name),qf(h,e.name),mf("boolean"==typeof w,e,"internal-error"),mf("boolean"==typeof _,e,"internal-error"),qf(d,e.name),qf(f,e.name),qf(p,e.name),qf(m,e.name),qf(g,e.name),qf(y,e.name);const I=new zf({uid:v,auth:e,email:h,emailVerified:w,displayName:l,isAnonymous:_,photoURL:f,phoneNumber:d,tenantId:p,stsTokenManager:E,createdAt:g,lastLoginAt:y});return b&&Array.isArray(b)&&(I.providerData=b.map((e=>Object.assign({},e)))),m&&(I._redirectEventId=m),I}static async _fromIdTokenResponse(e,t,n=!1){const s=new jf;s.updateFromServerResponse(t);const r=new zf({uid:t.localId,auth:e,stsTokenManager:s,isAnonymous:n});return await $f(r),r}}class Hf{constructor(){this.type="NONE",this.storage={}}async _isAvailable(){return!0}async _set(e,t){this.storage[e]=t}async _get(e){const t=this.storage[e];return void 0===t?null:t}async _remove(e){delete this.storage[e]}_addListener(e,t){}_removeListener(e,t){}}Hf.type="NONE";const Kf=Hf;function Gf(e,t,n){return`firebase:${e}:${t}:${n}`}class Wf{constructor(e,t,n){this.persistence=e,this.auth=t,this.userKey=n;const{config:s,name:r}=this.auth;this.fullUserKey=Gf(this.userKey,s.apiKey,r),this.fullPersistenceKey=Gf("persistence",s.apiKey,r),this.boundEventHandler=t._onStorageEvent.bind(t),this.persistence._addListener(this.fullUserKey,this.boundEventHandler)}setCurrentUser(e){return this.persistence._set(this.fullUserKey,e.toJSON())}async getCurrentUser(){const e=await this.persistence._get(this.fullUserKey);return e?zf._fromJSON(this.auth,e):null}removeCurrentUser(){return this.persistence._remove(this.fullUserKey)}savePersistenceForRedirect(){return this.persistence._set(this.fullPersistenceKey,this.persistence.type)}async setPersistence(e){if(this.persistence===e)return;const t=await this.getCurrentUser();return await this.removeCurrentUser(),this.persistence=e,t?this.setCurrentUser(t):void 0}delete(){this.persistence._removeListener(this.fullUserKey,this.boundEventHandler)}static async create(e,t,n="authUser"){if(!t.length)return new Wf(wf(Kf),e,n);const s=(await Promise.all(t.map((async e=>{if(await e._isAvailable())return e})))).filter((e=>e));let r=s[0]||wf(Kf);const i=Gf(n,e.config.apiKey,e.name);let o=null;for(const n of t)try{const t=await n._get(i);if(t){const s=zf._fromJSON(e,t);n!==r&&(o=s),r=n;break}}catch(e){}const a=s.filter((e=>e._shouldAllowMigration));return r._shouldAllowMigration&&a.length?(r=a[0],o&&await r._set(i,o.toJSON()),await Promise.all(t.map((async e=>{if(e!==r)try{await e._remove(i)}catch(e){}}))),new Wf(r,e,n)):new Wf(r,e,n)}}function Qf(e){const t=e.toLowerCase();if(t.includes("opera/")||t.includes("opr/")||t.includes("opios/"))return"Opera";if(Zf(t))return"IEMobile";if(t.includes("msie")||t.includes("trident/"))return"IE";if(t.includes("edge/"))return"Edge";if(Xf(t))return"Firefox";if(t.includes("silk/"))return"Silk";if(tp(t))return"Blackberry";if(np(t))return"Webos";if(Yf(t))return"Safari";if((t.includes("chrome/")||Jf(t))&&!t.includes("edge/"))return"Chrome";if(ep(t))return"Android";{const t=/([a-zA-Z\d\.]+)\/[a-zA-Z\d\.]*$/,n=e.match(t);if(2===(null==n?void 0:n.length))return n[1]}return"Other"}function Xf(e=h()){return/firefox\//i.test(e)}function Yf(e=h()){const t=e.toLowerCase();return t.includes("safari/")&&!t.includes("chrome/")&&!t.includes("crios/")&&!t.includes("android")}function Jf(e=h()){return/crios\//i.test(e)}function Zf(e=h()){return/iemobile/i.test(e)}function ep(e=h()){return/android/i.test(e)}function tp(e=h()){return/blackberry/i.test(e)}function np(e=h()){return/webos/i.test(e)}function sp(e=h()){return/iphone|ipad|ipod/i.test(e)||/macintosh/i.test(e)&&/mobile/i.test(e)}function rp(e=h()){return sp(e)||ep(e)||np(e)||tp(e)||/windows phone/i.test(e)||Zf(e)}function ip(e,t=[]){let n;switch(e){case"Browser":n=Qf(h());break;case"Worker":n=`${Qf(h())}-${e}`;break;default:n=e}return`${n}/JsCore/9.14.0/${t.length?t.join(","):"FirebaseCore-web"}`}class op{constructor(e){this.auth=e,this.queue=[]}pushCallback(e,t){const n=t=>new Promise(((n,s)=>{try{n(e(t))}catch(e){s(e)}}));n.onAbort=t,this.queue.push(n);const s=this.queue.length-1;return()=>{this.queue[s]=()=>Promise.resolve()}}async runMiddleware(e){var t;if(this.auth.currentUser===e)return;const n=[];try{for(const t of this.queue)await t(e),t.onAbort&&n.push(t.onAbort)}catch(e){n.reverse();for(const e of n)try{e()}catch(e){}throw this.auth._errorFactory.create("login-blocked",{originalMessage:null===(t=e)||void 0===t?void 0:t.message})}}}class ap{constructor(e,t,n){this.app=e,this.heartbeatServiceProvider=t,this.config=n,this.currentUser=null,this.emulatorConfig=null,this.operations=Promise.resolve(),this.authStateSubscription=new up(this),this.idTokenSubscription=new up(this),this.beforeStateQueue=new op(this),this.redirectUser=null,this.isProactiveRefreshEnabled=!1,this._canInitEmulator=!0,this._isInitialized=!1,this._deleted=!1,this._initializationPromise=null,this._popupRedirectResolver=null,this._errorFactory=uf,this.lastNotifiedUid=void 0,this.languageCode=null,this.tenantId=null,this.settings={appVerificationDisabledForTesting:!1},this.frameworks=[],this.name=e.name,this.clientVersion=n.sdkClientVersion}_initializeWithPersistence(e,t){return t&&(this._popupRedirectResolver=wf(t)),this._initializationPromise=this.queue((async()=>{var n,s;if(!this._deleted&&(this.persistenceManager=await Wf.create(this,e),!this._deleted)){if(null===(n=this._popupRedirectResolver)||void 0===n?void 0:n._shouldInitProactively)try{await this._popupRedirectResolver._initialize(this)}catch(e){}await this.initializeCurrentUser(t),this.lastNotifiedUid=(null===(s=this.currentUser)||void 0===s?void 0:s.uid)||null,this._deleted||(this._isInitialized=!0)}})),this._initializationPromise}async _onStorageEvent(){if(this._deleted)return;const e=await this.assertedPersistence.getCurrentUser();return this.currentUser||e?this.currentUser&&e&&this.currentUser.uid===e.uid?(this._currentUser._assign(e),void await this.currentUser.getIdToken()):void await this._updateCurrentUser(e,!0):void 0}async initializeCurrentUser(e){var t;const n=await this.assertedPersistence.getCurrentUser();let s=n,r=!1;if(e&&this.config.authDomain){await this.getOrInitRedirectPersistenceManager();const n=null===(t=this.redirectUser)||void 0===t?void 0:t._redirectEventId,i=null==s?void 0:s._redirectEventId,o=await this.tryRedirectSignIn(e);n&&n!==i||!(null==o?void 0:o.user)||(s=o.user,r=!0)}if(!s)return this.directlySetCurrentUser(null);if(!s._redirectEventId){if(r)try{await this.beforeStateQueue.runMiddleware(s)}catch(e){s=n,this._popupRedirectResolver._overrideRedirectResult(this,(()=>Promise.reject(e)))}return s?this.reloadAndSetCurrentUserOrClear(s):this.directlySetCurrentUser(null)}return mf(this._popupRedirectResolver,this,"argument-error"),await this.getOrInitRedirectPersistenceManager(),this.redirectUser&&this.redirectUser._redirectEventId===s._redirectEventId?this.directlySetCurrentUser(s):this.reloadAndSetCurrentUserOrClear(s)}async tryRedirectSignIn(e){let t=null;try{t=await this._popupRedirectResolver._completeRedirectFn(this,e,!0)}catch(e){await this._setRedirectUser(null)}return t}async reloadAndSetCurrentUserOrClear(e){var t;try{await $f(e)}catch(e){if("auth/network-request-failed"!==(null===(t=e)||void 0===t?void 0:t.code))return this.directlySetCurrentUser(null)}return this.directlySetCurrentUser(e)}useDeviceLanguage(){this.languageCode=function(){if("undefined"==typeof navigator)return null;const e=navigator;return e.languages&&e.languages[0]||e.language||null}()}async _delete(){this._deleted=!0}async updateCurrentUser(e){const t=e?A(e):null;return t&&mf(t.auth.config.apiKey===this.config.apiKey,this,"invalid-user-token"),this._updateCurrentUser(t&&t._clone(this))}async _updateCurrentUser(e,t=!1){if(!this._deleted)return e&&mf(this.tenantId===e.tenantId,this,"tenant-id-mismatch"),t||await this.beforeStateQueue.runMiddleware(e),this.queue((async()=>{await this.directlySetCurrentUser(e),this.notifyAuthListeners()}))}async signOut(){return await this.beforeStateQueue.runMiddleware(null),(this.redirectPersistenceManager||this._popupRedirectResolver)&&await this._setRedirectUser(null),this._updateCurrentUser(null,!0)}setPersistence(e){return this.queue((async()=>{await this.assertedPersistence.setPersistence(wf(e))}))}_getPersistence(){return this.assertedPersistence.persistence.type}_updateErrorMap(e){this._errorFactory=new w("auth","Firebase",e())}onAuthStateChanged(e,t,n){return this.registerStateListener(this.authStateSubscription,e,t,n)}beforeAuthStateChanged(e,t){return this.beforeStateQueue.pushCallback(e,t)}onIdTokenChanged(e,t,n){return this.registerStateListener(this.idTokenSubscription,e,t,n)}toJSON(){var e;return{apiKey:this.config.apiKey,authDomain:this.config.authDomain,appName:this.name,currentUser:null===(e=this._currentUser)||void 0===e?void 0:e.toJSON()}}async _setRedirectUser(e,t){const n=await this.getOrInitRedirectPersistenceManager(t);return null===e?n.removeCurrentUser():n.setCurrentUser(e)}async getOrInitRedirectPersistenceManager(e){if(!this.redirectPersistenceManager){const t=e&&wf(e)||this._popupRedirectResolver;mf(t,this,"argument-error"),this.redirectPersistenceManager=await Wf.create(this,[wf(t._redirectPersistence)],"redirectUser"),this.redirectUser=await this.redirectPersistenceManager.getCurrentUser()}return this.redirectPersistenceManager}async _redirectUserForId(e){var t,n;return this._isInitialized&&await this.queue((async()=>{})),(null===(t=this._currentUser)||void 0===t?void 0:t._redirectEventId)===e?this._currentUser:(null===(n=this.redirectUser)||void 0===n?void 0:n._redirectEventId)===e?this.redirectUser:null}async _persistUserIfCurrent(e){if(e===this.currentUser)return this.queue((async()=>this.directlySetCurrentUser(e)))}_notifyListenersIfCurrent(e){e===this.currentUser&&this.notifyAuthListeners()}_key(){return`${this.config.authDomain}:${this.config.apiKey}:${this.name}`}_startProactiveRefresh(){this.isProactiveRefreshEnabled=!0,this.currentUser&&this._currentUser._startProactiveRefresh()}_stopProactiveRefresh(){this.isProactiveRefreshEnabled=!1,this.currentUser&&this._currentUser._stopProactiveRefresh()}get _currentUser(){return this.currentUser}notifyAuthListeners(){var e,t;if(!this._isInitialized)return;this.idTokenSubscription.next(this.currentUser);const n=null!==(t=null===(e=this.currentUser)||void 0===e?void 0:e.uid)&&void 0!==t?t:null;this.lastNotifiedUid!==n&&(this.lastNotifiedUid=n,this.authStateSubscription.next(this.currentUser))}registerStateListener(e,t,n,s){if(this._deleted)return()=>{};const r="function"==typeof t?t:t.next.bind(t),i=this._isInitialized?Promise.resolve():this._initializationPromise;return mf(i,this,"internal-error"),i.then((()=>r(this.currentUser))),"function"==typeof t?e.addObserver(t,n,s):e.addObserver(t)}async directlySetCurrentUser(e){this.currentUser&&this.currentUser!==e&&this._currentUser._stopProactiveRefresh(),e&&this.isProactiveRefreshEnabled&&e._startProactiveRefresh(),this.currentUser=e,e?await this.assertedPersistence.setCurrentUser(e):await this.assertedPersistence.removeCurrentUser()}queue(e){return this.operations=this.operations.then(e,e),this.operations}get assertedPersistence(){return mf(this.persistenceManager,this,"internal-error"),this.persistenceManager}_logFramework(e){e&&!this.frameworks.includes(e)&&(this.frameworks.push(e),this.frameworks.sort(),this.clientVersion=ip(this.config.clientPlatform,this._getFrameworks()))}_getFrameworks(){return this.frameworks}async _getAdditionalHeaders(){var e;const t={"X-Client-Version":this.clientVersion};this.app.options.appId&&(t["X-Firebase-gmpid"]=this.app.options.appId);const n=await(null===(e=this.heartbeatServiceProvider.getImmediate({optional:!0}))||void 0===e?void 0:e.getHeartbeatsHeader());return n&&(t["X-Firebase-Client"]=n),t}}function cp(e){return A(e)}class up{constructor(e){this.auth=e,this.observer=null,this.addObserver=function(e,t){const n=new S(e,void 0);return n.subscribe.bind(n)}((e=>this.observer=e))}get next(){return mf(this.observer,this.auth,"internal-error"),this.observer.next.bind(this.observer)}}function lp(e){const t=e.indexOf(":");return t<0?"":e.substr(0,t+1)}function hp(e){if(!e)return null;const t=Number(e);return isNaN(t)?null:t}class dp{constructor(e,t){this.providerId=e,this.signInMethod=t}toJSON(){return gf("not implemented")}_getIdTokenResponse(e){return gf("not implemented")}_linkToIdToken(e,t){return gf("not implemented")}_getReauthenticationResolver(e){return gf("not implemented")}}class fp extends dp{constructor(e,t,n,s=null){super("password",n),this._email=e,this._password=t,this._tenantId=s}static _fromEmailAndPassword(e,t){return new fp(e,t,"password")}static _fromEmailAndCode(e,t,n=null){return new fp(e,t,"emailLink",n)}toJSON(){return{email:this._email,password:this._password,signInMethod:this.signInMethod,tenantId:this._tenantId}}static fromJSON(e){const t="string"==typeof e?JSON.parse(e):e;if((null==t?void 0:t.email)&&(null==t?void 0:t.password)){if("password"===t.signInMethod)return this._fromEmailAndPassword(t.email,t.password);if("emailLink"===t.signInMethod)return this._fromEmailAndCode(t.email,t.password,t.tenantId)}return null}async _getIdTokenResponse(e){switch(this.signInMethod){case"password":return async function(e,t){return Nf(e,"POST","/v1/accounts:signInWithPassword",Af(e,t))}(e,{returnSecureToken:!0,email:this._email,password:this._password});case"emailLink":return async function(e,t){return Nf(e,"POST","/v1/accounts:signInWithEmailLink",Af(e,t))}(e,{email:this._email,oobCode:this._password});default:df(e,"internal-error")}}async _linkToIdToken(e,t){switch(this.signInMethod){case"password":return async function(e,t){return Rf(e,"POST","/v1/accounts:update",t)}(e,{idToken:t,returnSecureToken:!0,email:this._email,password:this._password});case"emailLink":return async function(e,t){return Nf(e,"POST","/v1/accounts:signInWithEmailLink",Af(e,t))}(e,{idToken:t,email:this._email,oobCode:this._password});default:df(e,"internal-error")}}_getReauthenticationResolver(e){return this._getIdTokenResponse(e)}}async function pp(e,t){return Nf(e,"POST","/v1/accounts:signInWithIdp",Af(e,t))}class mp extends dp{constructor(){super(...arguments),this.pendingToken=null}static _fromParams(e){const t=new mp(e.providerId,e.signInMethod);return e.idToken||e.accessToken?(e.idToken&&(t.idToken=e.idToken),e.accessToken&&(t.accessToken=e.accessToken),e.nonce&&!e.pendingToken&&(t.nonce=e.nonce),e.pendingToken&&(t.pendingToken=e.pendingToken)):e.oauthToken&&e.oauthTokenSecret?(t.accessToken=e.oauthToken,t.secret=e.oauthTokenSecret):df("argument-error"),t}toJSON(){return{idToken:this.idToken,accessToken:this.accessToken,secret:this.secret,nonce:this.nonce,pendingToken:this.pendingToken,providerId:this.providerId,signInMethod:this.signInMethod}}static fromJSON(e){const t="string"==typeof e?JSON.parse(e):e,{providerId:n,signInMethod:s}=t,r=af(t,["providerId","signInMethod"]);if(!n||!s)return null;const i=new mp(n,s);return i.idToken=r.idToken||void 0,i.accessToken=r.accessToken||void 0,i.secret=r.secret,i.nonce=r.nonce,i.pendingToken=r.pendingToken||null,i}_getIdTokenResponse(e){return pp(e,this.buildRequest())}_linkToIdToken(e,t){const n=this.buildRequest();return n.idToken=t,pp(e,n)}_getReauthenticationResolver(e){const t=this.buildRequest();return t.autoCreate=!1,pp(e,t)}buildRequest(){const e={requestUri:"http://localhost",returnSecureToken:!0};if(this.pendingToken)e.pendingToken=this.pendingToken;else{const t={};this.idToken&&(t.id_token=this.idToken),this.accessToken&&(t.access_token=this.accessToken),this.secret&&(t.oauth_token_secret=this.secret),t.providerId=this.providerId,this.nonce&&!this.pendingToken&&(t.nonce=this.nonce),e.postBody=E(t)}return e}}const gp={USER_NOT_FOUND:"user-not-found"};class yp extends dp{constructor(e){super("phone","phone"),this.params=e}static _fromVerification(e,t){return new yp({verificationId:e,verificationCode:t})}static _fromTokenResponse(e,t){return new yp({phoneNumber:e,temporaryProof:t})}_getIdTokenResponse(e){return async function(e,t){return Nf(e,"POST","/v1/accounts:signInWithPhoneNumber",Af(e,t))}(e,this._makeVerificationRequest())}_linkToIdToken(e,t){return async function(e,t){const n=await Nf(e,"POST","/v1/accounts:signInWithPhoneNumber",Af(e,t));if(n.temporaryProof)throw xf(e,"account-exists-with-different-credential",n);return n}(e,Object.assign({idToken:t},this._makeVerificationRequest()))}_getReauthenticationResolver(e){return async function(e,t){return Nf(e,"POST","/v1/accounts:signInWithPhoneNumber",Af(e,Object.assign(Object.assign({},t),{operation:"REAUTH"})),gp)}(e,this._makeVerificationRequest())}_makeVerificationRequest(){const{temporaryProof:e,phoneNumber:t,verificationId:n,verificationCode:s}=this.params;return e&&t?{temporaryProof:e,phoneNumber:t}:{sessionInfo:n,code:s}}toJSON(){const e={providerId:this.providerId};return this.params.phoneNumber&&(e.phoneNumber=this.params.phoneNumber),this.params.temporaryProof&&(e.temporaryProof=this.params.temporaryProof),this.params.verificationCode&&(e.verificationCode=this.params.verificationCode),this.params.verificationId&&(e.verificationId=this.params.verificationId),e}static fromJSON(e){"string"==typeof e&&(e=JSON.parse(e));const{verificationId:t,verificationCode:n,phoneNumber:s,temporaryProof:r}=e;return n||t||s||r?new yp({verificationId:t,verificationCode:n,phoneNumber:s,temporaryProof:r}):null}}class vp{constructor(e){var t,n,s,r,i,o;const a=I(k(e)),c=null!==(t=a.apiKey)&&void 0!==t?t:null,u=null!==(n=a.oobCode)&&void 0!==n?n:null,l=function(e){switch(e){case"recoverEmail":return"RECOVER_EMAIL";case"resetPassword":return"PASSWORD_RESET";case"signIn":return"EMAIL_SIGNIN";case"verifyEmail":return"VERIFY_EMAIL";case"verifyAndChangeEmail":return"VERIFY_AND_CHANGE_EMAIL";case"revertSecondFactorAddition":return"REVERT_SECOND_FACTOR_ADDITION";default:return null}}(null!==(s=a.mode)&&void 0!==s?s:null);mf(c&&u&&l,"argument-error"),this.apiKey=c,this.operation=l,this.code=u,this.continueUrl=null!==(r=a.continueUrl)&&void 0!==r?r:null,this.languageCode=null!==(i=a.languageCode)&&void 0!==i?i:null,this.tenantId=null!==(o=a.tenantId)&&void 0!==o?o:null}static parseLink(e){const t=function(e){const t=I(k(e)).link,n=t?I(k(t)).deep_link_id:null,s=I(k(e)).deep_link_id;return(s?I(k(s)).link:null)||s||n||t||e}(e);try{return new vp(t)}catch(e){return null}}}class wp{constructor(){this.providerId=wp.PROVIDER_ID}static credential(e,t){return fp._fromEmailAndPassword(e,t)}static credentialWithLink(e,t){const n=vp.parseLink(t);return mf(n,"argument-error"),fp._fromEmailAndCode(e,n.code,n.tenantId)}}wp.PROVIDER_ID="password",wp.EMAIL_PASSWORD_SIGN_IN_METHOD="password",wp.EMAIL_LINK_SIGN_IN_METHOD="emailLink";class _p{constructor(e){this.providerId=e,this.defaultLanguageCode=null,this.customParameters={}}setDefaultLanguage(e){this.defaultLanguageCode=e}setCustomParameters(e){return this.customParameters=e,this}getCustomParameters(){return this.customParameters}}class bp extends _p{constructor(){super(...arguments),this.scopes=[]}addScope(e){return this.scopes.includes(e)||this.scopes.push(e),this}getScopes(){return[...this.scopes]}}class Tp extends bp{constructor(){super("facebook.com")}static credential(e){return mp._fromParams({providerId:Tp.PROVIDER_ID,signInMethod:Tp.FACEBOOK_SIGN_IN_METHOD,accessToken:e})}static credentialFromResult(e){return Tp.credentialFromTaggedObject(e)}static credentialFromError(e){return Tp.credentialFromTaggedObject(e.customData||{})}static credentialFromTaggedObject({_tokenResponse:e}){if(!e||!("oauthAccessToken"in e))return null;if(!e.oauthAccessToken)return null;try{return Tp.credential(e.oauthAccessToken)}catch(e){return null}}}Tp.FACEBOOK_SIGN_IN_METHOD="facebook.com",Tp.PROVIDER_ID="facebook.com";class Ep extends bp{constructor(){super("google.com"),this.addScope("profile")}static credential(e,t){return mp._fromParams({providerId:Ep.PROVIDER_ID,signInMethod:Ep.GOOGLE_SIGN_IN_METHOD,idToken:e,accessToken:t})}static credentialFromResult(e){return Ep.credentialFromTaggedObject(e)}static credentialFromError(e){return Ep.credentialFromTaggedObject(e.customData||{})}static credentialFromTaggedObject({_tokenResponse:e}){if(!e)return null;const{oauthIdToken:t,oauthAccessToken:n}=e;if(!t&&!n)return null;try{return Ep.credential(t,n)}catch(e){return null}}}Ep.GOOGLE_SIGN_IN_METHOD="google.com",Ep.PROVIDER_ID="google.com";class Ip extends bp{constructor(){super("github.com")}static credential(e){return mp._fromParams({providerId:Ip.PROVIDER_ID,signInMethod:Ip.GITHUB_SIGN_IN_METHOD,accessToken:e})}static credentialFromResult(e){return Ip.credentialFromTaggedObject(e)}static credentialFromError(e){return Ip.credentialFromTaggedObject(e.customData||{})}static credentialFromTaggedObject({_tokenResponse:e}){if(!e||!("oauthAccessToken"in e))return null;if(!e.oauthAccessToken)return null;try{return Ip.credential(e.oauthAccessToken)}catch(e){return null}}}Ip.GITHUB_SIGN_IN_METHOD="github.com",Ip.PROVIDER_ID="github.com";class kp extends bp{constructor(){super("twitter.com")}static credential(e,t){return mp._fromParams({providerId:kp.PROVIDER_ID,signInMethod:kp.TWITTER_SIGN_IN_METHOD,oauthToken:e,oauthTokenSecret:t})}static credentialFromResult(e){return kp.credentialFromTaggedObject(e)}static credentialFromError(e){return kp.credentialFromTaggedObject(e.customData||{})}static credentialFromTaggedObject({_tokenResponse:e}){if(!e)return null;const{oauthAccessToken:t,oauthTokenSecret:n}=e;if(!t||!n)return null;try{return kp.credential(t,n)}catch(e){return null}}}kp.TWITTER_SIGN_IN_METHOD="twitter.com",kp.PROVIDER_ID="twitter.com";class Sp{constructor(e){this.user=e.user,this.providerId=e.providerId,this._tokenResponse=e._tokenResponse,this.operationType=e.operationType}static async _fromIdTokenResponse(e,t,n,s=!1){const r=await zf._fromIdTokenResponse(e,n,s),i=Cp(n);return new Sp({user:r,providerId:i,_tokenResponse:n,operationType:t})}static async _forOperation(e,t,n){await e._updateTokensIfNecessary(n,!0);const s=Cp(n);return new Sp({user:e,providerId:s,_tokenResponse:n,operationType:t})}}function Cp(e){return e.providerId?e.providerId:"phoneNumber"in e?"phone":null}class Ap extends v{constructor(e,t,n,s){var r;super(t.code,t.message),this.operationType=n,this.user=s,Object.setPrototypeOf(this,Ap.prototype),this.customData={appName:e.name,tenantId:null!==(r=e.tenantId)&&void 0!==r?r:void 0,_serverResponse:t.customData._serverResponse,operationType:n}}static _fromErrorAndOperation(e,t,n,s){return new Ap(e,t,n,s)}}function Rp(e,t,n,s){return("reauthenticate"===t?n._getReauthenticationResolver(e):n._getIdTokenResponse(e)).catch((n=>{if("auth/multi-factor-auth-required"===n.code)throw Ap._fromErrorAndOperation(e,n,t,s);throw n}))}async function Dp(e,t,n=!1){const s="signIn",r=await Rp(e,s,t),i=await Sp._fromIdTokenResponse(e,s,r);return n||await e._updateCurrentUser(i.user),i}new WeakMap;const Np="__sak";class Op{constructor(e,t){this.storageRetriever=e,this.type=t}_isAvailable(){try{return this.storage?(this.storage.setItem(Np,"1"),this.storage.removeItem(Np),Promise.resolve(!0)):Promise.resolve(!1)}catch(e){return Promise.resolve(!1)}}_set(e,t){return this.storage.setItem(e,JSON.stringify(t)),Promise.resolve()}_get(e){const t=this.storage.getItem(e);return Promise.resolve(t?JSON.parse(t):null)}_remove(e){return this.storage.removeItem(e),Promise.resolve()}get storage(){return this.storageRetriever()}}class Lp extends Op{constructor(){super((()=>window.localStorage),"LOCAL"),this.boundEventHandler=(e,t)=>this.onStorageEvent(e,t),this.listeners={},this.localCache={},this.pollTimer=null,this.safariLocalStorageNotSynced=function(){const e=h();return Yf(e)||sp(e)}()&&function(){try{return!(!window||window===window.top)}catch(e){return!1}}(),this.fallbackToPolling=rp(),this._shouldAllowMigration=!0}forAllChangedKeys(e){for(const t of Object.keys(this.listeners)){const n=this.storage.getItem(t),s=this.localCache[t];n!==s&&e(t,s,n)}}onStorageEvent(e,t=!1){if(!e.key)return void this.forAllChangedKeys(((e,t,n)=>{this.notifyListeners(e,n)}));const n=e.key;if(t?this.detachListener():this.stopPolling(),this.safariLocalStorageNotSynced){const s=this.storage.getItem(n);if(e.newValue!==s)null!==e.newValue?this.storage.setItem(n,e.newValue):this.storage.removeItem(n);else if(this.localCache[n]===e.newValue&&!t)return}const s=()=>{const e=this.storage.getItem(n);(t||this.localCache[n]!==e)&&this.notifyListeners(n,e)},r=this.storage.getItem(n);!function(){const e=h();return e.indexOf("MSIE ")>=0||e.indexOf("Trident/")>=0}()||10!==document.documentMode||r===e.newValue||e.newValue===e.oldValue?s():setTimeout(s,10)}notifyListeners(e,t){this.localCache[e]=t;const n=this.listeners[e];if(n)for(const e of Array.from(n))e(t?JSON.parse(t):t)}startPolling(){this.stopPolling(),this.pollTimer=setInterval((()=>{this.forAllChangedKeys(((e,t,n)=>{this.onStorageEvent(new StorageEvent("storage",{key:e,oldValue:t,newValue:n}),!0)}))}),1e3)}stopPolling(){this.pollTimer&&(clearInterval(this.pollTimer),this.pollTimer=null)}attachListener(){window.addEventListener("storage",this.boundEventHandler)}detachListener(){window.removeEventListener("storage",this.boundEventHandler)}_addListener(e,t){0===Object.keys(this.listeners).length&&(this.fallbackToPolling?this.startPolling():this.attachListener()),this.listeners[e]||(this.listeners[e]=new Set,this.localCache[e]=this.storage.getItem(e)),this.listeners[e].add(t)}_removeListener(e,t){this.listeners[e]&&(this.listeners[e].delete(t),0===this.listeners[e].size&&delete this.listeners[e]),0===Object.keys(this.listeners).length&&(this.detachListener(),this.stopPolling())}async _set(e,t){await super._set(e,t),this.localCache[e]=JSON.stringify(t)}async _get(e){const t=await super._get(e);return this.localCache[e]=JSON.stringify(t),t}async _remove(e){await super._remove(e),delete this.localCache[e]}}Lp.type="LOCAL";const xp=Lp;class Pp extends Op{constructor(){super((()=>window.sessionStorage),"SESSION")}_addListener(e,t){}_removeListener(e,t){}}Pp.type="SESSION";const Mp=Pp;class Up{constructor(e){this.eventTarget=e,this.handlersMap={},this.boundEventHandler=this.handleEvent.bind(this)}static _getInstance(e){const t=this.receivers.find((t=>t.isListeningto(e)));if(t)return t;const n=new Up(e);return this.receivers.push(n),n}isListeningto(e){return this.eventTarget===e}async handleEvent(e){const t=e,{eventId:n,eventType:s,data:r}=t.data,i=this.handlersMap[s];if(!(null==i?void 0:i.size))return;t.ports[0].postMessage({status:"ack",eventId:n,eventType:s});const o=Array.from(i).map((async e=>e(t.origin,r))),a=await function(e){return Promise.all(e.map((async e=>{try{return{fulfilled:!0,value:await e}}catch(e){return{fulfilled:!1,reason:e}}})))}(o);t.ports[0].postMessage({status:"done",eventId:n,eventType:s,response:a})}_subscribe(e,t){0===Object.keys(this.handlersMap).length&&this.eventTarget.addEventListener("message",this.boundEventHandler),this.handlersMap[e]||(this.handlersMap[e]=new Set),this.handlersMap[e].add(t)}_unsubscribe(e,t){this.handlersMap[e]&&t&&this.handlersMap[e].delete(t),t&&0!==this.handlersMap[e].size||delete this.handlersMap[e],0===Object.keys(this.handlersMap).length&&this.eventTarget.removeEventListener("message",this.boundEventHandler)}}function Fp(e="",t=10){let n="";for(let e=0;e{const c=Fp("",20);s.port1.start();const u=setTimeout((()=>{a(new Error("unsupported_event"))}),n);i={messageChannel:s,onMessage(e){const t=e;if(t.data.eventId===c)switch(t.data.status){case"ack":clearTimeout(u),r=setTimeout((()=>{a(new Error("timeout"))}),3e3);break;case"done":clearTimeout(r),o(t.data.response);break;default:clearTimeout(u),clearTimeout(r),a(new Error("invalid_response"))}}},this.handlers.add(i),s.port1.addEventListener("message",i.onMessage),this.target.postMessage({eventType:e,eventId:c,data:t},[s.port2])})).finally((()=>{i&&this.removeMessageHandler(i)}))}}function Bp(){return window}function $p(){return void 0!==Bp().WorkerGlobalScope&&"function"==typeof Bp().importScripts}const jp="firebaseLocalStorageDb",qp="firebaseLocalStorage",zp="fbase_key";class Hp{constructor(e){this.request=e}toPromise(){return new Promise(((e,t)=>{this.request.addEventListener("success",(()=>{e(this.request.result)})),this.request.addEventListener("error",(()=>{t(this.request.error)}))}))}}function Kp(e,t){return e.transaction([qp],t?"readwrite":"readonly").objectStore(qp)}function Gp(){const e=indexedDB.open(jp,1);return new Promise(((t,n)=>{e.addEventListener("error",(()=>{n(e.error)})),e.addEventListener("upgradeneeded",(()=>{const t=e.result;try{t.createObjectStore(qp,{keyPath:zp})}catch(e){n(e)}})),e.addEventListener("success",(async()=>{const n=e.result;n.objectStoreNames.contains(qp)?t(n):(n.close(),await function(){const e=indexedDB.deleteDatabase(jp);return new Hp(e).toPromise()}(),t(await Gp()))}))}))}async function Wp(e,t,n){const s=Kp(e,!0).put({[zp]:t,value:n});return new Hp(s).toPromise()}function Qp(e,t){const n=Kp(e,!0).delete(t);return new Hp(n).toPromise()}class Xp{constructor(){this.type="LOCAL",this._shouldAllowMigration=!0,this.listeners={},this.localCache={},this.pollTimer=null,this.pendingWrites=0,this.receiver=null,this.sender=null,this.serviceWorkerReceiverAvailable=!1,this.activeServiceWorker=null,this._workerInitializationPromise=this.initializeServiceWorkerMessaging().then((()=>{}),(()=>{}))}async _openDb(){return this.db||(this.db=await Gp()),this.db}async _withRetries(e){let t=0;for(;;)try{const t=await this._openDb();return await e(t)}catch(e){if(t++>3)throw e;this.db&&(this.db.close(),this.db=void 0)}}async initializeServiceWorkerMessaging(){return $p()?this.initializeReceiver():this.initializeSender()}async initializeReceiver(){this.receiver=Up._getInstance($p()?self:null),this.receiver._subscribe("keyChanged",(async(e,t)=>({keyProcessed:(await this._poll()).includes(t.key)}))),this.receiver._subscribe("ping",(async(e,t)=>["keyChanged"]))}async initializeSender(){var e,t;if(this.activeServiceWorker=await async function(){if(!(null===navigator||void 0===navigator?void 0:navigator.serviceWorker))return null;try{return(await navigator.serviceWorker.ready).active}catch(e){return null}}(),!this.activeServiceWorker)return;this.sender=new Vp(this.activeServiceWorker);const n=await this.sender._send("ping",{},800);n&&(null===(e=n[0])||void 0===e?void 0:e.fulfilled)&&(null===(t=n[0])||void 0===t?void 0:t.value.includes("keyChanged"))&&(this.serviceWorkerReceiverAvailable=!0)}async notifyServiceWorker(e){if(this.sender&&this.activeServiceWorker&&function(){var e;return(null===(e=null===navigator||void 0===navigator?void 0:navigator.serviceWorker)||void 0===e?void 0:e.controller)||null}()===this.activeServiceWorker)try{await this.sender._send("keyChanged",{key:e},this.serviceWorkerReceiverAvailable?800:50)}catch(e){}}async _isAvailable(){try{if(!indexedDB)return!1;const e=await Gp();return await Wp(e,Np,"1"),await Qp(e,Np),!0}catch(e){}return!1}async _withPendingWrite(e){this.pendingWrites++;try{await e()}finally{this.pendingWrites--}}async _set(e,t){return this._withPendingWrite((async()=>(await this._withRetries((n=>Wp(n,e,t))),this.localCache[e]=t,this.notifyServiceWorker(e))))}async _get(e){const t=await this._withRetries((t=>async function(e,t){const n=Kp(e,!1).get(t),s=await new Hp(n).toPromise();return void 0===s?null:s.value}(t,e)));return this.localCache[e]=t,t}async _remove(e){return this._withPendingWrite((async()=>(await this._withRetries((t=>Qp(t,e))),delete this.localCache[e],this.notifyServiceWorker(e))))}async _poll(){const e=await this._withRetries((e=>{const t=Kp(e,!1).getAll();return new Hp(t).toPromise()}));if(!e)return[];if(0!==this.pendingWrites)return[];const t=[],n=new Set;for(const{fbase_key:s,value:r}of e)n.add(s),JSON.stringify(this.localCache[s])!==JSON.stringify(r)&&(this.notifyListeners(s,r),t.push(s));for(const e of Object.keys(this.localCache))this.localCache[e]&&!n.has(e)&&(this.notifyListeners(e,null),t.push(e));return t}notifyListeners(e,t){this.localCache[e]=t;const n=this.listeners[e];if(n)for(const e of Array.from(n))e(t)}startPolling(){this.stopPolling(),this.pollTimer=setInterval((async()=>this._poll()),800)}stopPolling(){this.pollTimer&&(clearInterval(this.pollTimer),this.pollTimer=null)}_addListener(e,t){0===Object.keys(this.listeners).length&&this.startPolling(),this.listeners[e]||(this.listeners[e]=new Set,this._get(e)),this.listeners[e].add(t)}_removeListener(e,t){this.listeners[e]&&(this.listeners[e].delete(t),0===this.listeners[e].size&&delete this.listeners[e]),0===Object.keys(this.listeners).length&&this.stopPolling()}}Xp.type="LOCAL";const Yp=Xp;function Jp(e){return`__${e}${Math.floor(1e6*Math.random())}`}Jp("rcb"),new Ef(3e4,6e4);class Zp{constructor(e){this.providerId=Zp.PROVIDER_ID,this.auth=cp(e)}verifyPhoneNumber(e,t){return async function(e,t,n){var s;const r=await n.verify();try{let i;if(mf("string"==typeof r,e,"argument-error"),mf("recaptcha"===n.type,e,"argument-error"),i="string"==typeof t?{phoneNumber:t}:t,"session"in i){const t=i.session;if("phoneNumber"in i){mf("enroll"===t.type,e,"internal-error");const n=await function(e,t){return Rf(e,"POST","/v2/accounts/mfaEnrollment:start",Af(e,t))}(e,{idToken:t.credential,phoneEnrollmentInfo:{phoneNumber:i.phoneNumber,recaptchaToken:r}});return n.phoneSessionInfo.sessionInfo}{mf("signin"===t.type,e,"internal-error");const n=(null===(s=i.multiFactorHint)||void 0===s?void 0:s.uid)||i.multiFactorUid;mf(n,e,"missing-multi-factor-info");const o=await function(e,t){return Rf(e,"POST","/v2/accounts/mfaSignIn:start",Af(e,t))}(e,{mfaPendingCredential:t.credential,mfaEnrollmentId:n,phoneSignInInfo:{recaptchaToken:r}});return o.phoneResponseInfo.sessionInfo}}{const{sessionInfo:t}=await async function(e,t){return Rf(e,"POST","/v1/accounts:sendVerificationCode",Af(e,t))}(e,{phoneNumber:i.phoneNumber,recaptchaToken:r});return t}}finally{n._reset()}}(this.auth,e,A(t))}static credential(e,t){return yp._fromVerification(e,t)}static credentialFromResult(e){const t=e;return Zp.credentialFromTaggedObject(t)}static credentialFromError(e){return Zp.credentialFromTaggedObject(e.customData||{})}static credentialFromTaggedObject({_tokenResponse:e}){if(!e)return null;const{phoneNumber:t,temporaryProof:n}=e;return t&&n?yp._fromTokenResponse(t,n):null}}Zp.PROVIDER_ID="phone",Zp.PHONE_SIGN_IN_METHOD="phone";class em extends dp{constructor(e){super("custom","custom"),this.params=e}_getIdTokenResponse(e){return pp(e,this._buildIdpRequest())}_linkToIdToken(e,t){return pp(e,this._buildIdpRequest(t))}_getReauthenticationResolver(e){return pp(e,this._buildIdpRequest())}_buildIdpRequest(e){const t={requestUri:this.params.requestUri,sessionId:this.params.sessionId,postBody:this.params.postBody,tenantId:this.params.tenantId,pendingToken:this.params.pendingToken,returnSecureToken:!0,returnIdpCredential:!0};return e&&(t.idToken=e),t}}function tm(e){return Dp(e.auth,new em(e),e.bypassAuthState)}function nm(e){const{auth:t,user:n}=e;return mf(n,t,"internal-error"),async function(e,t,n=!1){var s;const{auth:r}=e,i="reauthenticate";try{const s=await Ff(e,Rp(r,i,t,e),n);mf(s.idToken,r,"internal-error");const o=Uf(s.idToken);mf(o,r,"internal-error");const{sub:a}=o;return mf(e.uid===a,r,"user-mismatch"),Sp._forOperation(e,i,s)}catch(e){throw"auth/user-not-found"===(null===(s=e)||void 0===s?void 0:s.code)&&df(r,"user-mismatch"),e}}(n,new em(e),e.bypassAuthState)}async function sm(e){const{auth:t,user:n}=e;return mf(n,t,"internal-error"),async function(e,t,n=!1){const s=await Ff(e,t._linkToIdToken(e.auth,await e.getIdToken()),n);return Sp._forOperation(e,"link",s)}(n,new em(e),e.bypassAuthState)}class rm{constructor(e,t,n,s,r=!1){this.auth=e,this.resolver=n,this.user=s,this.bypassAuthState=r,this.pendingPromise=null,this.eventManager=null,this.filter=Array.isArray(t)?t:[t]}execute(){return new Promise((async(e,t)=>{this.pendingPromise={resolve:e,reject:t};try{this.eventManager=await this.resolver._initialize(this.auth),await this.onExecution(),this.eventManager.registerConsumer(this)}catch(e){this.reject(e)}}))}async onAuthEvent(e){const{urlResponse:t,sessionId:n,postBody:s,tenantId:r,error:i,type:o}=e;if(i)return void this.reject(i);const a={auth:this.auth,requestUri:t,sessionId:n,tenantId:r||void 0,postBody:s||void 0,user:this.user,bypassAuthState:this.bypassAuthState};try{this.resolve(await this.getIdpTask(o)(a))}catch(e){this.reject(e)}}onError(e){this.reject(e)}getIdpTask(e){switch(e){case"signInViaPopup":case"signInViaRedirect":return tm;case"linkViaPopup":case"linkViaRedirect":return sm;case"reauthViaPopup":case"reauthViaRedirect":return nm;default:df(this.auth,"internal-error")}}resolve(e){yf(this.pendingPromise,"Pending promise was never set"),this.pendingPromise.resolve(e),this.unregisterAndCleanUp()}reject(e){yf(this.pendingPromise,"Pending promise was never set"),this.pendingPromise.reject(e),this.unregisterAndCleanUp()}unregisterAndCleanUp(){this.eventManager&&this.eventManager.unregisterConsumer(this),this.pendingPromise=null,this.cleanUp()}}const im=new Ef(2e3,1e4);class om extends rm{constructor(e,t,n,s,r){super(e,t,s,r),this.provider=n,this.authWindow=null,this.pollId=null,om.currentPopupAction&&om.currentPopupAction.cancel(),om.currentPopupAction=this}async executeNotNull(){const e=await this.execute();return mf(e,this.auth,"internal-error"),e}async onExecution(){yf(1===this.filter.length,"Popup operations only handle one event");const e=Fp();this.authWindow=await this.resolver._openPopup(this.auth,this.provider,this.filter[0],e),this.authWindow.associatedEvent=e,this.resolver._originValidation(this.auth).catch((e=>{this.reject(e)})),this.resolver._isIframeWebStorageSupported(this.auth,(e=>{e||this.reject(ff(this.auth,"web-storage-unsupported"))})),this.pollUserCancellation()}get eventId(){var e;return(null===(e=this.authWindow)||void 0===e?void 0:e.associatedEvent)||null}cancel(){this.reject(ff(this.auth,"cancelled-popup-request"))}cleanUp(){this.authWindow&&this.authWindow.close(),this.pollId&&window.clearTimeout(this.pollId),this.authWindow=null,this.pollId=null,om.currentPopupAction=null}pollUserCancellation(){const e=()=>{var t,n;(null===(n=null===(t=this.authWindow)||void 0===t?void 0:t.window)||void 0===n?void 0:n.closed)?this.pollId=window.setTimeout((()=>{this.pollId=null,this.reject(ff(this.auth,"popup-closed-by-user"))}),2e3):this.pollId=window.setTimeout(e,im.get())};e()}}om.currentPopupAction=null;const am=new Map;class cm extends rm{constructor(e,t,n=!1){super(e,["signInViaRedirect","linkViaRedirect","reauthViaRedirect","unknown"],t,void 0,n),this.eventId=null}async execute(){let e=am.get(this.auth._key());if(!e){try{const t=await async function(e,t){const n=function(e){return Gf("pendingRedirect",e.config.apiKey,e.name)}(t),s=function(e){return wf(e._redirectPersistence)}(e);if(!await s._isAvailable())return!1;const r="true"===await s._get(n);return await s._remove(n),r}(this.resolver,this.auth),n=t?await super.execute():null;e=()=>Promise.resolve(n)}catch(t){e=()=>Promise.reject(t)}am.set(this.auth._key(),e)}return this.bypassAuthState||am.set(this.auth._key(),(()=>Promise.resolve(null))),e()}async onAuthEvent(e){if("signInViaRedirect"===e.type)return super.onAuthEvent(e);if("unknown"!==e.type){if(e.eventId){const t=await this.auth._redirectUserForId(e.eventId);if(t)return this.user=t,super.onAuthEvent(e);this.resolve(null)}}else this.resolve(null)}async onExecution(){}cleanUp(){}}function um(e,t){am.set(e._key(),t)}async function lm(e,t,n=!1){const s=cp(e),r=function(e,t){return t?wf(t):(mf(e._popupRedirectResolver,e,"argument-error"),e._popupRedirectResolver)}(s,t),i=new cm(s,r,n),o=await i.execute();return o&&!n&&(delete o.user._redirectEventId,await s._persistUserIfCurrent(o.user),await s._setRedirectUser(null,t)),o}class hm{constructor(e){this.auth=e,this.cachedEventUids=new Set,this.consumers=new Set,this.queuedRedirectEvent=null,this.hasHandledPotentialRedirect=!1,this.lastProcessedEventTime=Date.now()}registerConsumer(e){this.consumers.add(e),this.queuedRedirectEvent&&this.isEventForConsumer(this.queuedRedirectEvent,e)&&(this.sendToConsumer(this.queuedRedirectEvent,e),this.saveEventToCache(this.queuedRedirectEvent),this.queuedRedirectEvent=null)}unregisterConsumer(e){this.consumers.delete(e)}onEvent(e){if(this.hasEventBeenHandled(e))return!1;let t=!1;return this.consumers.forEach((n=>{this.isEventForConsumer(e,n)&&(t=!0,this.sendToConsumer(e,n),this.saveEventToCache(e))})),this.hasHandledPotentialRedirect||!function(e){switch(e.type){case"signInViaRedirect":case"linkViaRedirect":case"reauthViaRedirect":return!0;case"unknown":return fm(e);default:return!1}}(e)||(this.hasHandledPotentialRedirect=!0,t||(this.queuedRedirectEvent=e,t=!0)),t}sendToConsumer(e,t){var n;if(e.error&&!fm(e)){const s=(null===(n=e.error.code)||void 0===n?void 0:n.split("auth/")[1])||"internal-error";t.onError(ff(this.auth,s))}else t.onAuthEvent(e)}isEventForConsumer(e,t){const n=null===t.eventId||!!e.eventId&&e.eventId===t.eventId;return t.filter.includes(e.type)&&n}hasEventBeenHandled(e){return Date.now()-this.lastProcessedEventTime>=6e5&&this.cachedEventUids.clear(),this.cachedEventUids.has(dm(e))}saveEventToCache(e){this.cachedEventUids.add(dm(e)),this.lastProcessedEventTime=Date.now()}}function dm(e){return[e.type,e.eventId,e.sessionId,e.tenantId].filter((e=>e)).join("-")}function fm({type:e,error:t}){return"unknown"===e&&"auth/no-auth-event"===(null==t?void 0:t.code)}const pm=/^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$/,mm=/^https?/;function gm(e){const t=_f(),{protocol:n,hostname:s}=new URL(t);if(e.startsWith("chrome-extension://")){const r=new URL(e);return""===r.hostname&&""===s?"chrome-extension:"===n&&e.replace("chrome-extension://","")===t.replace("chrome-extension://",""):"chrome-extension:"===n&&r.hostname===s}if(!mm.test(n))return!1;if(pm.test(e))return s===e;const r=e.replace(/\./g,"\\.");return new RegExp("^(.+\\."+r+"|"+r+")$","i").test(s)}const ym=new Ef(3e4,6e4);function vm(){const e=Bp().___jsl;if(null==e?void 0:e.H)for(const t of Object.keys(e.H))if(e.H[t].r=e.H[t].r||[],e.H[t].L=e.H[t].L||[],e.H[t].r=[...e.H[t].L],e.CP)for(let t=0;t{var s,r,i,o;function a(){vm(),gapi.load("gapi.iframes",{callback:()=>{t(gapi.iframes.getContext())},ontimeout:()=>{vm(),n(ff(e,"network-request-failed"))},timeout:ym.get()})}if(null===(r=null===(s=Bp().gapi)||void 0===s?void 0:s.iframes)||void 0===r?void 0:r.Iframe)t(gapi.iframes.getContext());else{if(!(null===(i=Bp().gapi)||void 0===i?void 0:i.load)){const t=Jp("iframefcb");return Bp()[t]=()=>{gapi.load?a():n(ff(e,"network-request-failed"))},(o=`https://apis.google.com/js/api.js?onload=${t}`,new Promise(((e,t)=>{const n=document.createElement("script");n.setAttribute("src",o),n.onload=e,n.onerror=e=>{const n=ff("internal-error");n.customData=e,t(n)},n.type="text/javascript",n.charset="UTF-8",function(){var e,t;return null!==(t=null===(e=document.getElementsByTagName("head"))||void 0===e?void 0:e[0])&&void 0!==t?t:document}().appendChild(n)}))).catch((e=>n(e)))}a()}})).catch((e=>{throw wm=null,e}))}(e),wm}const bm=new Ef(5e3,15e3),Tm={style:{position:"absolute",top:"-100px",width:"1px",height:"1px"},"aria-hidden":"true",tabindex:"-1"},Em=new Map([["identitytoolkit.googleapis.com","p"],["staging-identitytoolkit.sandbox.googleapis.com","s"],["test-identitytoolkit.sandbox.googleapis.com","t"]]);function Im(e){const t=e.config;mf(t.authDomain,e,"auth-domain-config-required");const n=t.emulator?If(t,"emulator/auth/iframe"):`https://${e.config.authDomain}/__/auth/iframe`,s={apiKey:t.apiKey,appName:e.name,v:ye},r=Em.get(e.config.apiHost);r&&(s.eid=r);const i=e._getFrameworks();return i.length&&(s.fw=i.join(",")),`${n}?${E(s).slice(1)}`}const km={location:"yes",resizable:"yes",statusbar:"yes",toolbar:"no"};class Sm{constructor(e){this.window=e,this.associatedEvent=null}close(){if(this.window)try{this.window.close()}catch(e){}}}function Cm(e,t,n,s,r,i){mf(e.config.authDomain,e,"auth-domain-config-required"),mf(e.config.apiKey,e,"invalid-api-key");const o={apiKey:e.config.apiKey,appName:e.name,authType:n,redirectUrl:s,v:ye,eventId:r};if(t instanceof _p){t.setDefaultLanguage(e.languageCode),o.providerId=t.providerId||"",function(e){for(const t in e)if(Object.prototype.hasOwnProperty.call(e,t))return!1;return!0}(t.getCustomParameters())||(o.customParameters=JSON.stringify(t.getCustomParameters()));for(const[e,t]of Object.entries(i||{}))o[e]=t}if(t instanceof bp){const e=t.getScopes().filter((e=>""!==e));e.length>0&&(o.scopes=e.join(","))}e.tenantId&&(o.tid=e.tenantId);const a=o;for(const e of Object.keys(a))void 0===a[e]&&delete a[e];return`${function({config:e}){return e.emulator?If(e,"emulator/auth/handler"):`https://${e.authDomain}/__/auth/handler`}(e)}?${E(a).slice(1)}`}const Am="webStorageSupport",Rm=class{constructor(){this.eventManagers={},this.iframes={},this.originValidationPromises={},this._redirectPersistence=Mp,this._completeRedirectFn=lm,this._overrideRedirectResult=um}async _openPopup(e,t,n,s){var r;return yf(null===(r=this.eventManagers[e._key()])||void 0===r?void 0:r.manager,"_initialize() not called before _openPopup()"),function(e,t,n,s=500,r=600){const i=Math.max((window.screen.availHeight-r)/2,0).toString(),o=Math.max((window.screen.availWidth-s)/2,0).toString();let a="";const c=Object.assign(Object.assign({},km),{width:s.toString(),height:r.toString(),top:i,left:o}),u=h().toLowerCase();n&&(a=Jf(u)?"_blank":n),Xf(u)&&(t=t||"http://localhost",c.scrollbars="yes");const l=Object.entries(c).reduce(((e,[t,n])=>`${e}${t}=${n},`),"");if(function(e=h()){var t;return sp(e)&&!!(null===(t=window.navigator)||void 0===t?void 0:t.standalone)}(u)&&"_self"!==a)return function(e,t){const n=document.createElement("a");n.href=e,n.target=t;const s=document.createEvent("MouseEvent");s.initMouseEvent("click",!0,!0,window,1,0,0,0,0,!1,!1,!1,!1,1,null),n.dispatchEvent(s)}(t||"",a),new Sm(null);const d=window.open(t||"",a,l);mf(d,e,"popup-blocked");try{d.focus()}catch(e){}return new Sm(d)}(e,Cm(e,t,n,_f(),s),Fp())}async _openRedirect(e,t,n,s){var r;return await this._originValidation(e),r=Cm(e,t,n,_f(),s),Bp().location.href=r,new Promise((()=>{}))}_initialize(e){const t=e._key();if(this.eventManagers[t]){const{manager:e,promise:n}=this.eventManagers[t];return e?Promise.resolve(e):(yf(n,"If manager is not set, promise should be"),n)}const n=this.initAndGetManager(e);return this.eventManagers[t]={promise:n},n.catch((()=>{delete this.eventManagers[t]})),n}async initAndGetManager(e){const t=await async function(e){const t=await _m(e),n=Bp().gapi;return mf(n,e,"internal-error"),t.open({where:document.body,url:Im(e),messageHandlersFilter:n.iframes.CROSS_ORIGIN_IFRAMES_FILTER,attributes:Tm,dontclear:!0},(t=>new Promise((async(n,s)=>{await t.restyle({setHideOnLeave:!1});const r=ff(e,"network-request-failed"),i=Bp().setTimeout((()=>{s(r)}),bm.get());function o(){Bp().clearTimeout(i),n(t)}t.ping(o).then(o,(()=>{s(r)}))}))))}(e),n=new hm(e);return t.register("authEvent",(t=>(mf(null==t?void 0:t.authEvent,e,"invalid-auth-event"),{status:n.onEvent(t.authEvent)?"ACK":"ERROR"})),gapi.iframes.CROSS_ORIGIN_IFRAMES_FILTER),this.eventManagers[e._key()]={manager:n},this.iframes[e._key()]=t,n}_isIframeWebStorageSupported(e,t){this.iframes[e._key()].send(Am,{type:Am},(n=>{var s;const r=null===(s=null==n?void 0:n[0])||void 0===s?void 0:s.webStorageSupport;void 0!==r&&t(!!r),df(e,"internal-error")}),gapi.iframes.CROSS_ORIGIN_IFRAMES_FILTER)}_originValidation(e){const t=e._key();return this.originValidationPromises[t]||(this.originValidationPromises[t]=async function(e){if(e.config.emulator)return;const{authorizedDomains:t}=await async function(e,t={}){return Rf(e,"GET","/v1/projects",t)}(e);for(const e of t)try{if(gm(e))return}catch(e){}df(e,"unauthorized-domain")}(e)),this.originValidationPromises[t]}get _shouldInitProactively(){return rp()||Yf()||sp()}};var Dm="@firebase/auth",Nm="0.20.11";class Om{constructor(e){this.auth=e,this.internalListeners=new Map}getUid(){var e;return this.assertAuthConfigured(),(null===(e=this.auth.currentUser)||void 0===e?void 0:e.uid)||null}async getToken(e){return this.assertAuthConfigured(),await this.auth._initializationPromise,this.auth.currentUser?{accessToken:await this.auth.currentUser.getIdToken(e)}:null}addAuthTokenListener(e){if(this.assertAuthConfigured(),this.internalListeners.has(e))return;const t=this.auth.onIdTokenChanged((t=>{var n;e((null===(n=t)||void 0===n?void 0:n.stsTokenManager.accessToken)||null)}));this.internalListeners.set(e,t),this.updateProactiveRefresh()}removeAuthTokenListener(e){this.assertAuthConfigured();const t=this.internalListeners.get(e);t&&(this.internalListeners.delete(e),t(),this.updateProactiveRefresh())}assertAuthConfigured(){mf(this.auth._initializationPromise,"dependent-sdk-initialized-before-auth")}updateProactiveRefresh(){this.internalListeners.size>0?this.auth._startProactiveRefresh():this.auth._stopProactiveRefresh()}}const Lm=m("authIdTokenMaxAge")||300;let xm=null;var Pm;Pm="Browser",fe(new R("auth",((e,{options:t})=>{const n=e.getProvider("app").getImmediate(),s=e.getProvider("heartbeat"),{apiKey:r,authDomain:i}=n.options;return((e,n)=>{mf(r&&!r.includes(":"),"invalid-api-key",{appName:e.name}),mf(!(null==i?void 0:i.includes(":")),"argument-error",{appName:e.name});const s={apiKey:r,authDomain:i,clientPlatform:Pm,apiHost:"identitytoolkit.googleapis.com",tokenApiHost:"securetoken.googleapis.com",apiScheme:"https",sdkClientVersion:ip(Pm)},o=new ap(e,n,s);return function(e,t){const n=(null==t?void 0:t.persistence)||[],s=(Array.isArray(n)?n:[n]).map(wf);(null==t?void 0:t.errorMap)&&e._updateErrorMap(t.errorMap),e._initializeWithPersistence(s,null==t?void 0:t.popupRedirectResolver)}(o,t),o})(n,s)}),"PUBLIC").setInstantiationMode("EXPLICIT").setInstanceCreatedCallback(((e,t,n)=>{e.getProvider("auth-internal").initialize()}))),fe(new R("auth-internal",(e=>(e=>new Om(e))(cp(e.getProvider("auth").getImmediate()))),"PRIVATE").setInstantiationMode("EXPLICIT")),_e(Dm,Nm,void 0),_e(Dm,Nm,"esm2017"),ve({apiKey:"AIzaSyCNbmkHVo6YAOk69h9OgMGbQJBUlW5xz4c",authDomain:"iedc-admin.firebaseapp.com",projectId:"iedc-admin",storageBucket:"iedc-admin.appspot.com",messagingSenderId:"200933316108",appId:"1:200933316108:web:8b5d08b6295d0962ec8029"});const Mm=function(e,t){const n=pe(we(),"firestore").getImmediate({identifier:"(default)"});if(!n._initialized){const e=p("firestore");e&&function(e,t,n,s={}){var r;const i=(e=kl(e,Al))._getSettings();if("firestore.googleapis.com"!==i.host&&i.host!==t&&Vr("Host has been set in both settings() and useEmulator(), emulator host will be used"),e._setSettings(Object.assign(Object.assign({},i),{host:`${t}:${n}`,ssl:!1})),s.mockUserToken){let t,n;if("string"==typeof s.mockUserToken)t=s.mockUserToken,n=Lr.MOCK_USER;else{t=y(s.mockUserToken,null===(r=e._app)||void 0===r?void 0:r.options.projectId);const i=s.mockUserToken.sub||s.mockUserToken.user_id;if(!i)throw new Hr(zr.INVALID_ARGUMENT,"mockUserToken must contain 'sub' or 'user_id' field!");n=new Lr(i)}e._authCredentials=new Qr(new Gr(t,n))}}(n,...e)}return n}(),Um=function(e=we(),t){const n=pe(e=A(e),$d).getImmediate({identifier:t}),s=p("storage");return s&&function(e,t,n,s={}){!function(e,t,n,s={}){e.host=`${t}:${n}`,e._protocol="http";const{mockUserToken:r}=s;r&&(e._overrideAuthToken="string"==typeof r?r:y(r,e.app.options.projectId))}(e,t,n,s)}(n,...s),n}(),Fm=function(e=we()){const t=pe(e,"auth");if(t.isInitialized())return t.getImmediate();const n=function(e,t){const n=pe(e,"auth");if(n.isInitialized()){const e=n.getImmediate();if(b(n.getOptions(),null!=t?t:{}))return e;df(e,"already-initialized")}return n.initialize({options:t})}(e,{popupRedirectResolver:Rm,persistence:[Yp,xp,Mp]}),s=m("authTokenSyncURL");if(s){const e=(r=s,async e=>{const t=e&&await e.getIdTokenResult(),n=t&&((new Date).getTime()-Date.parse(t.issuedAtTime))/1e3;if(n&&n>Lm)return;const s=null==t?void 0:t.token;xm!==s&&(xm=s,await fetch(r,{method:s?"POST":"DELETE",headers:s?{Authorization:`Bearer ${s}`}:{}}))});!function(e,t,n){A(e).beforeAuthStateChanged(t,n)}(n,e,(()=>e(n.currentUser))),function(t,n,s,r){A(t).onIdTokenChanged((t=>e(t)),void 0,void 0)}(n)}var r;const i=f("auth");return i&&function(e,t,n){const s=cp(e);mf(s._canInitEmulator,s,"emulator-config-failed"),mf(/^https?:\/\//.test(t),s,"invalid-emulator-scheme");const r=!!(null==n?void 0:n.disableWarnings),i=lp(t),{host:o,port:a}=function(e){const t=lp(e),n=/(\/\/)?([^?#/]+)/.exec(e.substr(t.length));if(!n)return{host:"",port:null};const s=n[2].split("@").pop()||"",r=/^(\[[^\]]+\])(:|$)/.exec(s);if(r){const e=r[1];return{host:e,port:hp(s.substr(e.length+1))}}{const[e,t]=s.split(":");return{host:e,port:hp(t)}}}(t),c=null===a?"":`:${a}`;s.config.emulator={url:`${i}//${o}${c}/`},s.settings.appVerificationDisabledForTesting=!0,s.emulatorConfig=Object.freeze({host:o,port:a,protocol:i.replace(":",""),options:Object.freeze({disableWarnings:r})}),r||function(){function e(){const e=document.createElement("p"),t=e.style;e.innerText="Running in emulator mode. Do not use with production credentials.",t.position="fixed",t.width="100%",t.backgroundColor="#ffffff",t.border=".1em solid #000000",t.color="#b50000",t.bottom="0px",t.left="0px",t.margin="0px",t.zIndex="10000",t.textAlign="center",e.classList.add("firebase-emulator-warning"),document.body.appendChild(e)}"undefined"!=typeof console&&"function"==typeof console.info&&console.info("WARNING: You are using the Auth Emulator, which is intended for local testing only. Do not use with production credentials."),"undefined"!=typeof window&&"undefined"!=typeof document&&("loading"===document.readyState?window.addEventListener("DOMContentLoaded",e):e())}()}(n,`http://${i}`),n}();function Vm(){n(),$("#app").load("forms/login.html",(()=>{console.log("login page loaded");const e=document.getElementById("loginform");e.addEventListener("submit",(t=>{t.preventDefault(),console.log("pre auth");const n=e.email.value,s=e.password.value;console.log(s),function(e,t,n){return async function(e,t){return Dp(cp(e),t)}(A(e),wp.credential(t,n))}(Fm,n,s).then((t=>{console.log("user logined in:",t.user),e.reset(),$("#app").load("forms/options.html",(()=>{rf()}))})).catch((e=>{console.log("auth is not done brww, just try again"),console.log(e),document.getElementById("password").value=""}))})),t()}))}!function(e,s,r,i){A(e).onAuthStateChanged((e=>{e?(console.log("user logged in: ",e.email),n(),$("#app").load("forms/options.html",(()=>{rf(),t()}))):(console.log("user logged out or no user at all"),Vm())}),void 0,void 0)}(Fm),window.addEventListener("load",(e=>{t()}))})(); \ No newline at end of file +(()=>{"use strict";var e={};function t(){document.getElementById("loading").style.display="none"}function n(){document.getElementById("loading").style.display="block"}e.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}();const s=e=>{document.getElementById("verifyUPDATE").href=e},r=e=>Date.parse(e)-198e5;function i(e,t){var n=36e5,s=864e5,r=2592e6,i=31536e6,o=e-t;return o<6e4?Math.round(o/1e3)+" seconds ago":o>6|192,t[n++]=63&r|128):55296==(64512&r)&&s+1>18|240,t[n++]=r>>12&63|128,t[n++]=r>>6&63|128,t[n++]=63&r|128):(t[n++]=r>>12|224,t[n++]=r>>6&63|128,t[n++]=63&r|128)}return t},c={byteToCharMap_:null,charToByteMap_:null,byteToCharMapWebSafe_:null,charToByteMapWebSafe_:null,ENCODED_VALS_BASE:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789",get ENCODED_VALS(){return this.ENCODED_VALS_BASE+"+/="},get ENCODED_VALS_WEBSAFE(){return this.ENCODED_VALS_BASE+"-_."},HAS_NATIVE_SUPPORT:"function"==typeof atob,encodeByteArray(e,t){if(!Array.isArray(e))throw Error("encodeByteArray takes an array as a parameter");this.init_();const n=t?this.byteToCharMapWebSafe_:this.byteToCharMap_,s=[];for(let t=0;t>2,l=(3&r)<<4|o>>4;let h=(15&o)<<2|c>>6,d=63&c;a||(d=64,i||(h=64)),s.push(n[u],n[l],n[h],n[d])}return s.join("")},encodeString(e,t){return this.HAS_NATIVE_SUPPORT&&!t?btoa(e):this.encodeByteArray(a(e),t)},decodeString(e,t){return this.HAS_NATIVE_SUPPORT&&!t?atob(e):function(e){const t=[];let n=0,s=0;for(;n191&&r<224){const i=e[n++];t[s++]=String.fromCharCode((31&r)<<6|63&i)}else if(r>239&&r<365){const i=((7&r)<<18|(63&e[n++])<<12|(63&e[n++])<<6|63&e[n++])-65536;t[s++]=String.fromCharCode(55296+(i>>10)),t[s++]=String.fromCharCode(56320+(1023&i))}else{const i=e[n++],o=e[n++];t[s++]=String.fromCharCode((15&r)<<12|(63&i)<<6|63&o)}}return t.join("")}(this.decodeStringToByteArray(e,t))},decodeStringToByteArray(e,t){this.init_();const n=t?this.charToByteMapWebSafe_:this.charToByteMap_,s=[];for(let t=0;t>4;if(s.push(c),64!==o){const e=i<<4&240|o>>2;if(s.push(e),64!==a){const e=o<<6&192|a;s.push(e)}}}return s},init_(){if(!this.byteToCharMap_){this.byteToCharMap_={},this.charToByteMap_={},this.byteToCharMapWebSafe_={},this.charToByteMapWebSafe_={};for(let e=0;e=this.ENCODED_VALS_BASE.length&&(this.charToByteMap_[this.ENCODED_VALS_WEBSAFE.charAt(e)]=e,this.charToByteMapWebSafe_[this.ENCODED_VALS.charAt(e)]=e)}}},u=function(e){return function(e){const t=a(e);return c.encodeByteArray(t,!0)}(e).replace(/\./g,"")},l=function(e){try{return c.decodeString(e,!0)}catch(e){console.error("base64Decode failed: ",e)}return null};function h(){return"undefined"!=typeof navigator&&"string"==typeof navigator.userAgent?navigator.userAgent:""}const d=()=>{try{return function(){if("undefined"!=typeof self)return self;if("undefined"!=typeof window)return window;if(void 0!==e.g)return e.g;throw new Error("Unable to locate global object.")}().__FIREBASE_DEFAULTS__||(()=>{if("undefined"==typeof process||void 0===process.env)return;const e=process.env.__FIREBASE_DEFAULTS__;return e?JSON.parse(e):void 0})()||(()=>{if("undefined"==typeof document)return;let e;try{e=document.cookie.match(/__FIREBASE_DEFAULTS__=([^;]+)/)}catch(e){return}const t=e&&l(e[1]);return t&&JSON.parse(t)})()}catch(e){return void console.info(`Unable to get __FIREBASE_DEFAULTS__ due to: ${e}`)}},f=e=>{var t,n;return null===(n=null===(t=d())||void 0===t?void 0:t.emulatorHosts)||void 0===n?void 0:n[e]},p=e=>{const t=f(e);if(!t)return;const n=t.lastIndexOf(":");if(n<=0||n+1===t.length)throw new Error(`Invalid host ${t} with no separate hostname and port!`);const s=parseInt(t.substring(n+1),10);return"["===t[0]?[t.substring(1,n-1),s]:[t.substring(0,n),s]},m=e=>{var t;return null===(t=d())||void 0===t?void 0:t[`_${e}`]};class g{constructor(){this.reject=()=>{},this.resolve=()=>{},this.promise=new Promise(((e,t)=>{this.resolve=e,this.reject=t}))}wrapCallback(e){return(t,n)=>{t?this.reject(t):this.resolve(n),"function"==typeof e&&(this.promise.catch((()=>{})),1===e.length?e(t):e(t,n))}}}function y(e,t){if(e.uid)throw new Error('The "uid" field is no longer supported by mockUserToken. Please use "sub" instead for Firebase Auth User ID.');const n=t||"demo-project",s=e.iat||0,r=e.sub||e.user_id;if(!r)throw new Error("mockUserToken must contain 'sub' or 'user_id' field!");const i=Object.assign({iss:`https://securetoken.google.com/${n}`,aud:n,iat:s,exp:s+3600,auth_time:s,sub:r,user_id:r,firebase:{sign_in_provider:"custom",identities:{}}},e);return[u(JSON.stringify({alg:"none",type:"JWT"})),u(JSON.stringify(i)),""].join(".")}class v extends Error{constructor(e,t,n){super(t),this.code=e,this.customData=n,this.name="FirebaseError",Object.setPrototypeOf(this,v.prototype),Error.captureStackTrace&&Error.captureStackTrace(this,w.prototype.create)}}class w{constructor(e,t,n){this.service=e,this.serviceName=t,this.errors=n}create(e,...t){const n=t[0]||{},s=`${this.service}/${e}`,r=this.errors[e],i=r?function(e,t){return e.replace(_,((e,n)=>{const s=t[n];return null!=s?String(s):`<${n}?>`}))}(r,n):"Error",o=`${this.serviceName}: ${i} (${s}).`;return new v(s,o,n)}}const _=/\{\$([^}]+)}/g;function b(e,t){if(e===t)return!0;const n=Object.keys(e),s=Object.keys(t);for(const r of n){if(!s.includes(r))return!1;const n=e[r],i=t[r];if(T(n)&&T(i)){if(!b(n,i))return!1}else if(n!==i)return!1}for(const e of s)if(!n.includes(e))return!1;return!0}function T(e){return null!==e&&"object"==typeof e}function E(e){const t=[];for(const[n,s]of Object.entries(e))Array.isArray(s)?s.forEach((e=>{t.push(encodeURIComponent(n)+"="+encodeURIComponent(e))})):t.push(encodeURIComponent(n)+"="+encodeURIComponent(s));return t.length?"&"+t.join("&"):""}function I(e){const t={};return e.replace(/^\?/,"").split("&").forEach((e=>{if(e){const[n,s]=e.split("=");t[decodeURIComponent(n)]=decodeURIComponent(s)}})),t}function k(e){const t=e.indexOf("?");if(!t)return"";const n=e.indexOf("#",t);return e.substring(t,n>0?n:void 0)}class S{constructor(e,t){this.observers=[],this.unsubscribes=[],this.observerCount=0,this.task=Promise.resolve(),this.finalized=!1,this.onNoObservers=t,this.task.then((()=>{e(this)})).catch((e=>{this.error(e)}))}next(e){this.forEachObserver((t=>{t.next(e)}))}error(e){this.forEachObserver((t=>{t.error(e)})),this.close(e)}complete(){this.forEachObserver((e=>{e.complete()})),this.close()}subscribe(e,t,n){let s;if(void 0===e&&void 0===t&&void 0===n)throw new Error("Missing Observer.");s=function(e,t){if("object"!=typeof e||null===e)return!1;for(const t of["next","error","complete"])if(t in e&&"function"==typeof e[t])return!0;return!1}(e)?e:{next:e,error:t,complete:n},void 0===s.next&&(s.next=C),void 0===s.error&&(s.error=C),void 0===s.complete&&(s.complete=C);const r=this.unsubscribeOne.bind(this,this.observers.length);return this.finalized&&this.task.then((()=>{try{this.finalError?s.error(this.finalError):s.complete()}catch(e){}})),this.observers.push(s),r}unsubscribeOne(e){void 0!==this.observers&&void 0!==this.observers[e]&&(delete this.observers[e],this.observerCount-=1,0===this.observerCount&&void 0!==this.onNoObservers&&this.onNoObservers(this))}forEachObserver(e){if(!this.finalized)for(let t=0;t{if(void 0!==this.observers&&void 0!==this.observers[e])try{t(this.observers[e])}catch(e){"undefined"!=typeof console&&console.error&&console.error(e)}}))}close(e){this.finalized||(this.finalized=!0,void 0!==e&&(this.finalError=e),this.task.then((()=>{this.observers=void 0,this.onNoObservers=void 0})))}}function C(){}function A(e){return e&&e._delegate?e._delegate:e}class R{constructor(e,t,n){this.name=e,this.instanceFactory=t,this.type=n,this.multipleInstances=!1,this.serviceProps={},this.instantiationMode="LAZY",this.onInstanceCreated=null}setInstantiationMode(e){return this.instantiationMode=e,this}setMultipleInstances(e){return this.multipleInstances=e,this}setServiceProps(e){return this.serviceProps=e,this}setInstanceCreatedCallback(e){return this.onInstanceCreated=e,this}}const D="[DEFAULT]";class N{constructor(e,t){this.name=e,this.container=t,this.component=null,this.instances=new Map,this.instancesDeferred=new Map,this.instancesOptions=new Map,this.onInitCallbacks=new Map}get(e){const t=this.normalizeInstanceIdentifier(e);if(!this.instancesDeferred.has(t)){const e=new g;if(this.instancesDeferred.set(t,e),this.isInitialized(t)||this.shouldAutoInitialize())try{const n=this.getOrInitializeService({instanceIdentifier:t});n&&e.resolve(n)}catch(e){}}return this.instancesDeferred.get(t).promise}getImmediate(e){var t;const n=this.normalizeInstanceIdentifier(null==e?void 0:e.identifier),s=null!==(t=null==e?void 0:e.optional)&&void 0!==t&&t;if(!this.isInitialized(n)&&!this.shouldAutoInitialize()){if(s)return null;throw Error(`Service ${this.name} is not available`)}try{return this.getOrInitializeService({instanceIdentifier:n})}catch(e){if(s)return null;throw e}}getComponent(){return this.component}setComponent(e){if(e.name!==this.name)throw Error(`Mismatching Component ${e.name} for Provider ${this.name}.`);if(this.component)throw Error(`Component for ${this.name} has already been provided`);if(this.component=e,this.shouldAutoInitialize()){if(function(e){return"EAGER"===e.instantiationMode}(e))try{this.getOrInitializeService({instanceIdentifier:D})}catch(e){}for(const[e,t]of this.instancesDeferred.entries()){const n=this.normalizeInstanceIdentifier(e);try{const e=this.getOrInitializeService({instanceIdentifier:n});t.resolve(e)}catch(e){}}}}clearInstance(e="[DEFAULT]"){this.instancesDeferred.delete(e),this.instancesOptions.delete(e),this.instances.delete(e)}async delete(){const e=Array.from(this.instances.values());await Promise.all([...e.filter((e=>"INTERNAL"in e)).map((e=>e.INTERNAL.delete())),...e.filter((e=>"_delete"in e)).map((e=>e._delete()))])}isComponentSet(){return null!=this.component}isInitialized(e="[DEFAULT]"){return this.instances.has(e)}getOptions(e="[DEFAULT]"){return this.instancesOptions.get(e)||{}}initialize(e={}){const{options:t={}}=e,n=this.normalizeInstanceIdentifier(e.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 s=this.getOrInitializeService({instanceIdentifier:n,options:t});for(const[e,t]of this.instancesDeferred.entries())n===this.normalizeInstanceIdentifier(e)&&t.resolve(s);return s}onInit(e,t){var n;const s=this.normalizeInstanceIdentifier(t),r=null!==(n=this.onInitCallbacks.get(s))&&void 0!==n?n:new Set;r.add(e),this.onInitCallbacks.set(s,r);const i=this.instances.get(s);return i&&e(i,s),()=>{r.delete(e)}}invokeOnInitCallbacks(e,t){const n=this.onInitCallbacks.get(t);if(n)for(const s of n)try{s(e,t)}catch(e){}}getOrInitializeService({instanceIdentifier:e,options:t={}}){let n=this.instances.get(e);if(!n&&this.component&&(n=this.component.instanceFactory(this.container,{instanceIdentifier:(s=e,s===D?void 0:s),options:t}),this.instances.set(e,n),this.instancesOptions.set(e,t),this.invokeOnInitCallbacks(n,e),this.component.onInstanceCreated))try{this.component.onInstanceCreated(this.container,e,n)}catch(e){}var s;return n||null}normalizeInstanceIdentifier(e="[DEFAULT]"){return this.component?this.component.multipleInstances?e:D:e}shouldAutoInitialize(){return!!this.component&&"EXPLICIT"!==this.component.instantiationMode}}class O{constructor(e){this.name=e,this.providers=new Map}addComponent(e){const t=this.getProvider(e.name);if(t.isComponentSet())throw new Error(`Component ${e.name} has already been registered with ${this.name}`);t.setComponent(e)}addOrOverwriteComponent(e){this.getProvider(e.name).isComponentSet()&&this.providers.delete(e.name),this.addComponent(e)}getProvider(e){if(this.providers.has(e))return this.providers.get(e);const t=new N(e,this);return this.providers.set(e,t),t}getProviders(){return Array.from(this.providers.values())}}const L=[];var x,P;(P=x||(x={}))[P.DEBUG=0]="DEBUG",P[P.VERBOSE=1]="VERBOSE",P[P.INFO=2]="INFO",P[P.WARN=3]="WARN",P[P.ERROR=4]="ERROR",P[P.SILENT=5]="SILENT";const M={debug:x.DEBUG,verbose:x.VERBOSE,info:x.INFO,warn:x.WARN,error:x.ERROR,silent:x.SILENT},U=x.INFO,F={[x.DEBUG]:"log",[x.VERBOSE]:"log",[x.INFO]:"info",[x.WARN]:"warn",[x.ERROR]:"error"},V=(e,t,...n)=>{if(t(e[t]=n,!0),has:(e,t)=>e instanceof IDBTransaction&&("done"===t||"store"===t)||t in e};function X(e){return"function"==typeof e?(t=e)!==IDBDatabase.prototype.transaction||"objectStoreNames"in IDBTransaction.prototype?(q||(q=[IDBCursor.prototype.advance,IDBCursor.prototype.continue,IDBCursor.prototype.continuePrimaryKey])).includes(t)?function(...e){return t.apply(J(this),e),Y(z.get(this))}:function(...e){return Y(t.apply(J(this),e))}:function(e,...n){const s=t.call(J(this),e,...n);return K.set(s,e.sort?e.sort():[e]),Y(s)}:(e instanceof IDBTransaction&&function(e){if(H.has(e))return;const t=new Promise(((t,n)=>{const s=()=>{e.removeEventListener("complete",r),e.removeEventListener("error",i),e.removeEventListener("abort",i)},r=()=>{t(),s()},i=()=>{n(e.error||new DOMException("AbortError","AbortError")),s()};e.addEventListener("complete",r),e.addEventListener("error",i),e.addEventListener("abort",i)}));H.set(e,t)}(e),n=e,(j||(j=[IDBDatabase,IDBObjectStore,IDBIndex,IDBCursor,IDBTransaction])).some((e=>n instanceof e))?new Proxy(e,Q):e);var t,n}function Y(e){if(e instanceof IDBRequest)return function(e){const t=new Promise(((t,n)=>{const s=()=>{e.removeEventListener("success",r),e.removeEventListener("error",i)},r=()=>{t(Y(e.result)),s()},i=()=>{n(e.error),s()};e.addEventListener("success",r),e.addEventListener("error",i)}));return t.then((t=>{t instanceof IDBCursor&&z.set(t,e)})).catch((()=>{})),W.set(t,e),t}(e);if(G.has(e))return G.get(e);const t=X(e);return t!==e&&(G.set(e,t),W.set(t,e)),t}const J=e=>W.get(e),Z=["get","getKey","getAll","getAllKeys","count"],ee=["put","add","delete","clear"],te=new Map;function ne(e,t){if(!(e instanceof IDBDatabase)||t in e||"string"!=typeof t)return;if(te.get(t))return te.get(t);const n=t.replace(/FromIndex$/,""),s=t!==n,r=ee.includes(n);if(!(n in(s?IDBIndex:IDBObjectStore).prototype)||!r&&!Z.includes(n))return;const i=async function(e,...t){const i=this.transaction(e,r?"readwrite":"readonly");let o=i.store;return s&&(o=o.index(t.shift())),(await Promise.all([o[n](...t),r&&i.done]))[0]};return te.set(t,i),i}var se;se=Q,Q={...se,get:(e,t,n)=>ne(e,t)||se.get(e,t,n),has:(e,t)=>!!ne(e,t)||se.has(e,t)};class re{constructor(e){this.container=e}getPlatformInfoString(){return this.container.getProviders().map((e=>{if(function(e){const t=e.getComponent();return"VERSION"===(null==t?void 0:t.type)}(e)){const t=e.getImmediate();return`${t.library}/${t.version}`}return null})).filter((e=>e)).join(" ")}}const ie="@firebase/app",oe="0.8.4",ae=new B("@firebase/app"),ce="[DEFAULT]",ue={[ie]:"fire-core","@firebase/app-compat":"fire-core-compat","@firebase/analytics":"fire-analytics","@firebase/analytics-compat":"fire-analytics-compat","@firebase/app-check":"fire-app-check","@firebase/app-check-compat":"fire-app-check-compat","@firebase/auth":"fire-auth","@firebase/auth-compat":"fire-auth-compat","@firebase/database":"fire-rtdb","@firebase/database-compat":"fire-rtdb-compat","@firebase/functions":"fire-fn","@firebase/functions-compat":"fire-fn-compat","@firebase/installations":"fire-iid","@firebase/installations-compat":"fire-iid-compat","@firebase/messaging":"fire-fcm","@firebase/messaging-compat":"fire-fcm-compat","@firebase/performance":"fire-perf","@firebase/performance-compat":"fire-perf-compat","@firebase/remote-config":"fire-rc","@firebase/remote-config-compat":"fire-rc-compat","@firebase/storage":"fire-gcs","@firebase/storage-compat":"fire-gcs-compat","@firebase/firestore":"fire-fst","@firebase/firestore-compat":"fire-fst-compat","fire-js":"fire-js",firebase:"fire-js-all"},le=new Map,he=new Map;function de(e,t){try{e.container.addComponent(t)}catch(n){ae.debug(`Component ${t.name} failed to register with FirebaseApp ${e.name}`,n)}}function fe(e){const t=e.name;if(he.has(t))return ae.debug(`There were multiple attempts to register component ${t}.`),!1;he.set(t,e);for(const t of le.values())de(t,e);return!0}function pe(e,t){const n=e.container.getProvider("heartbeat").getImmediate({optional:!0});return n&&n.triggerHeartbeat(),e.container.getProvider(t)}const me=new w("app","Firebase",{"no-app":"No Firebase App '{$appName}' has been created - call Firebase App.initializeApp()","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}."});class ge{constructor(e,t,n){this._isDeleted=!1,this._options=Object.assign({},e),this._config=Object.assign({},t),this._name=t.name,this._automaticDataCollectionEnabled=t.automaticDataCollectionEnabled,this._container=n,this.container.addComponent(new R("app",(()=>this),"PUBLIC"))}get automaticDataCollectionEnabled(){return this.checkDestroyed(),this._automaticDataCollectionEnabled}set automaticDataCollectionEnabled(e){this.checkDestroyed(),this._automaticDataCollectionEnabled=e}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(e){this._isDeleted=e}checkDestroyed(){if(this.isDeleted)throw me.create("app-deleted",{appName:this._name})}}const ye="9.14.0";function ve(e,t={}){let n=e;"object"!=typeof t&&(t={name:t});const s=Object.assign({name:ce,automaticDataCollectionEnabled:!1},t),r=s.name;if("string"!=typeof r||!r)throw me.create("bad-app-name",{appName:String(r)});if(n||(n=(()=>{var e;return null===(e=d())||void 0===e?void 0:e.config})()),!n)throw me.create("no-options");const i=le.get(r);if(i){if(b(n,i.options)&&b(s,i.config))return i;throw me.create("duplicate-app",{appName:r})}const o=new O(r);for(const e of he.values())o.addComponent(e);const a=new ge(n,s,o);return le.set(r,a),a}function we(e="[DEFAULT]"){const t=le.get(e);if(!t&&e===ce)return ve();if(!t)throw me.create("no-app",{appName:e});return t}function _e(e,t,n){var s;let r=null!==(s=ue[e])&&void 0!==s?s:e;n&&(r+=`-${n}`);const i=r.match(/\s|\//),o=t.match(/\s|\//);if(i||o){const e=[`Unable to register library "${r}" with version "${t}":`];return i&&e.push(`library name "${r}" contains illegal characters (whitespace or "/")`),i&&o&&e.push("and"),o&&e.push(`version name "${t}" contains illegal characters (whitespace or "/")`),void ae.warn(e.join(" "))}fe(new R(`${r}-version`,(()=>({library:r,version:t})),"VERSION"))}const be="firebase-heartbeat-store";let Te=null;function Ee(){return Te||(Te=function(e,t,{blocked:n,upgrade:s,blocking:r,terminated:i}={}){const o=indexedDB.open(e,t),a=Y(o);return s&&o.addEventListener("upgradeneeded",(e=>{s(Y(o.result),e.oldVersion,e.newVersion,Y(o.transaction))})),n&&o.addEventListener("blocked",(()=>n())),a.then((e=>{i&&e.addEventListener("close",(()=>i())),r&&e.addEventListener("versionchange",(()=>r()))})).catch((()=>{})),a}("firebase-heartbeat-database",1,{upgrade:(e,t)=>{0===t&&e.createObjectStore(be)}}).catch((e=>{throw me.create("idb-open",{originalErrorMessage:e.message})}))),Te}async function Ie(e,t){var n;try{const n=(await Ee()).transaction(be,"readwrite"),s=n.objectStore(be);return await s.put(t,ke(e)),n.done}catch(e){if(e instanceof v)ae.warn(e.message);else{const t=me.create("idb-set",{originalErrorMessage:null===(n=e)||void 0===n?void 0:n.message});ae.warn(t.message)}}}function ke(e){return`${e.name}!${e.options.appId}`}class Se{constructor(e){this.container=e,this._heartbeatsCache=null;const t=this.container.getProvider("app").getImmediate();this._storage=new Ae(t),this._heartbeatsCachePromise=this._storage.read().then((e=>(this._heartbeatsCache=e,e)))}async triggerHeartbeat(){const e=this.container.getProvider("platform-logger").getImmediate().getPlatformInfoString(),t=Ce();if(null===this._heartbeatsCache&&(this._heartbeatsCache=await this._heartbeatsCachePromise),this._heartbeatsCache.lastSentHeartbeatDate!==t&&!this._heartbeatsCache.heartbeats.some((e=>e.date===t)))return this._heartbeatsCache.heartbeats.push({date:t,agent:e}),this._heartbeatsCache.heartbeats=this._heartbeatsCache.heartbeats.filter((e=>{const t=new Date(e.date).valueOf();return Date.now()-t<=2592e6})),this._storage.overwrite(this._heartbeatsCache)}async getHeartbeatsHeader(){if(null===this._heartbeatsCache&&await this._heartbeatsCachePromise,null===this._heartbeatsCache||0===this._heartbeatsCache.heartbeats.length)return"";const e=Ce(),{heartbeatsToSend:t,unsentEntries:n}=function(e,t=1024){const n=[];let s=e.slice();for(const r of e){const e=n.find((e=>e.agent===r.agent));if(e){if(e.dates.push(r.date),Re(n)>t){e.dates.pop();break}}else if(n.push({agent:r.agent,dates:[r.date]}),Re(n)>t){n.pop();break}s=s.slice(1)}return{heartbeatsToSend:n,unsentEntries:s}}(this._heartbeatsCache.heartbeats),s=u(JSON.stringify({version:2,heartbeats:t}));return this._heartbeatsCache.lastSentHeartbeatDate=e,n.length>0?(this._heartbeatsCache.heartbeats=n,await this._storage.overwrite(this._heartbeatsCache)):(this._heartbeatsCache.heartbeats=[],this._storage.overwrite(this._heartbeatsCache)),s}}function Ce(){return(new Date).toISOString().substring(0,10)}class Ae{constructor(e){this.app=e,this._canUseIndexedDBPromise=this.runIndexedDBEnvironmentCheck()}async runIndexedDBEnvironmentCheck(){return"object"==typeof indexedDB&&new Promise(((e,t)=>{try{let n=!0;const s="validate-browser-context-for-indexeddb-analytics-module",r=self.indexedDB.open(s);r.onsuccess=()=>{r.result.close(),n||self.indexedDB.deleteDatabase(s),e(!0)},r.onupgradeneeded=()=>{n=!1},r.onerror=()=>{var e;t((null===(e=r.error)||void 0===e?void 0:e.message)||"")}}catch(e){t(e)}})).then((()=>!0)).catch((()=>!1))}async read(){if(await this._canUseIndexedDBPromise){const e=await async function(e){var t;try{return(await Ee()).transaction(be).objectStore(be).get(ke(e))}catch(e){if(e instanceof v)ae.warn(e.message);else{const n=me.create("idb-get",{originalErrorMessage:null===(t=e)||void 0===t?void 0:t.message});ae.warn(n.message)}}}(this.app);return e||{heartbeats:[]}}return{heartbeats:[]}}async overwrite(e){var t;if(await this._canUseIndexedDBPromise){const n=await this.read();return Ie(this.app,{lastSentHeartbeatDate:null!==(t=e.lastSentHeartbeatDate)&&void 0!==t?t:n.lastSentHeartbeatDate,heartbeats:e.heartbeats})}}async add(e){var t;if(await this._canUseIndexedDBPromise){const n=await this.read();return Ie(this.app,{lastSentHeartbeatDate:null!==(t=e.lastSentHeartbeatDate)&&void 0!==t?t:n.lastSentHeartbeatDate,heartbeats:[...n.heartbeats,...e.heartbeats]})}}}function Re(e){return u(JSON.stringify({version:2,heartbeats:e})).length}fe(new R("platform-logger",(e=>new re(e)),"PRIVATE")),fe(new R("heartbeat",(e=>new Se(e)),"PRIVATE")),_e(ie,oe,""),_e(ie,oe,"esm2017"),_e("fire-js","");var De,Ne="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:void 0!==e.g?e.g:"undefined"!=typeof self?self:{},Oe={},Le=Le||{},xe=Ne||self;function Pe(){}function Me(e){var t=typeof e;return"array"==(t="object"!=t?t:e?Array.isArray(e)?"array":t:"null")||"object"==t&&"number"==typeof e.length}function Ue(e){var t=typeof e;return"object"==t&&null!=e||"function"==t}var Fe="closure_uid_"+(1e9*Math.random()>>>0),Ve=0;function Be(e,t,n){return e.call.apply(e.bind,arguments)}function $e(e,t,n){if(!e)throw Error();if(2t?1:0}function et(){var e=xe.navigator;return e&&(e=e.userAgent)?e:""}function tt(e){return-1!=et().indexOf(e)}function nt(e){return nt[" "](e),e}nt[" "]=Pe;var st,rt,it=tt("Opera"),ot=tt("Trident")||tt("MSIE"),at=tt("Edge"),ct=at||ot,ut=tt("Gecko")&&!(-1!=et().toLowerCase().indexOf("webkit")&&!tt("Edge"))&&!(tt("Trident")||tt("MSIE"))&&!tt("Edge"),lt=-1!=et().toLowerCase().indexOf("webkit")&&!tt("Edge");function ht(){var e=xe.document;return e?e.documentMode:void 0}e:{var dt="",ft=(rt=et(),ut?/rv:([^\);]+)(\)|;)/.exec(rt):at?/Edge\/([\d\.]+)/.exec(rt):ot?/\b(?:MSIE|rv)[: ]([^\);]+)(\)|;)/.exec(rt):lt?/WebKit\/(\S+)/.exec(rt):it?/(?:Version)[ \/]?(\S+)/.exec(rt):void 0);if(ft&&(dt=ft?ft[1]:""),ot){var pt=ht();if(null!=pt&&pt>parseFloat(dt)){st=String(pt);break e}}st=dt}var mt,gt={};function yt(){return function(e){var t=gt;return Object.prototype.hasOwnProperty.call(t,9)?t[9]:t[9]=function(){let e=0;const t=Je(String(st)).split("."),n=Je("9").split("."),s=Math.max(t.length,n.length);for(let o=0;0==e&&o>>0);function qt(e){return"function"==typeof e?e:(e[jt]||(e[jt]=function(t){return e.handleEvent(t)}),e[jt])}function zt(){He.call(this),this.i=new Rt(this),this.P=this,this.I=null}function Ht(e,t){var n,s=e.I;if(s)for(n=[];s;s=s.I)n.push(s);if(e=e.P,s=t.type||t,"string"==typeof t)t=new Qe(t,e);else if(t instanceof Qe)t.target=t.target||e;else{var r=t;At(t=new Qe(s,e),r)}if(r=!0,n)for(var i=n.length-1;0<=i;i--){var o=t.g=n[i];r=Kt(o,s,!0,t)&&r}if(r=Kt(o=t.g=e,s,!0,t)&&r,r=Kt(o,s,!1,t)&&r,n)for(i=0;inew Yt),(e=>e.reset()));class Yt{constructor(){this.next=this.g=this.h=null}set(e,t){this.h=e,this.g=t,this.next=null}reset(){this.next=this.g=this.h=null}}function Jt(e){xe.setTimeout((()=>{throw e}),0)}function Zt(e,t){Qt||function(){var e=xe.Promise.resolve(void 0);Qt=function(){e.then(nn)}}(),en||(Qt(),en=!0),tn.add(e,t)}var en=!1,tn=new class{constructor(){this.h=this.g=null}add(e,t){const n=Xt.get();n.set(e,t),this.h?this.h.next=n:this.g=n,this.h=n}};function nn(){for(var e;e=Wt();){try{e.h.call(e.g)}catch(e){Jt(e)}var t=Xt;t.j(e),100>t.h&&(t.h++,e.next=t.g,t.g=e)}en=!1}function sn(e,t){zt.call(this),this.h=e||1,this.g=t||xe,this.j=je(this.lb,this),this.l=Date.now()}function rn(e){e.ca=!1,e.R&&(e.g.clearTimeout(e.R),e.R=null)}function on(e,t,n){if("function"==typeof e)n&&(e=je(e,n));else{if(!e||"function"!=typeof e.handleEvent)throw Error("Invalid listener argument");e=je(e.handleEvent,e)}return 2147483647{e.g=null,e.i&&(e.i=!1,an(e))}),e.j);const t=e.h;e.h=null,e.m.apply(null,t)}ze(sn,zt),(De=sn.prototype).ca=!1,De.R=null,De.lb=function(){if(this.ca){var e=Date.now()-this.l;0s.length)){var r=s[1];if(Array.isArray(r)&&!(1>r.length)){var i=r[0];if("noop"!=i&&"stop"!=i&&"close"!=i)for(var o=1;ot.length?Fn:(t=t.substr(s,n),e.C=s+n,t))}function zn(e){e.V=Date.now()+e.O,Hn(e,e.O)}function Hn(e,t){if(null!=e.B)throw Error("WatchDog timer not null");e.B=En(je(e.gb,e),t)}function Kn(e){e.B&&(xe.clearTimeout(e.B),e.B=null)}function Gn(e){0==e.l.G||e.I||hr(e.l,e)}function Wn(e){Kn(e);var t=e.L;t&&"function"==typeof t.na&&t.na(),e.L=null,rn(e.T),dn(e.S),e.g&&(t=e.g,e.g=null,t.abort(),t.na())}function Qn(e,t){try{var n=e.l;if(0!=n.G&&(n.g==e||Es(n.h,e)))if(!e.J&&Es(n.h,e)&&3==n.G){try{var s=n.Fa.g.parse(t)}catch(e){s=null}if(Array.isArray(s)&&3==s.length){var r=s;if(0==r[0]){e:if(!n.u){if(n.g){if(!(n.g.F+3e3r[2]&&n.L&&0==n.A&&!n.v&&(n.v=En(je(n.cb,n),6e3));if(1>=Ts(n.h)&&n.ja){try{n.ja()}catch(e){}n.ja=void 0}}else fr(n,11)}else if((e.J||n.g==e)&&lr(n),!Ye(t))for(r=n.Fa.g.parse(t),t=0;tl)&&(3!=l||ct||this.g&&(this.h.h||this.g.fa()||Ws(this.g)))){this.I||4!=l||7==t||wn(),Kn(this);var n=this.g.aa();this.Y=n;t:if($n(this)){var s=Ws(this.g);e="";var r=s.length,i=4==Gs(this.g);if(!this.h.i){if("undefined"==typeof TextDecoder){Wn(this),Gn(this);var o="";break t}this.h.i=new xe.TextDecoder}for(t=0;tt)throw Error("Bad port number "+t);e.m=t}else e.m=null}function ns(e,t,n){t instanceof fs?(e.i=t,function(e,t){t&&!e.j&&(ps(e),e.i=null,e.g.forEach((function(e,t){var n=t.toLowerCase();t!=n&&(ms(this,t),ys(this,n,e))}),e)),e.j=t}(e.i,e.h)):(n||(t=os(t,hs)),e.i=new fs(t,e.h))}function ss(e,t,n){e.i.set(t,n)}function rs(e){return ss(e,"zx",Math.floor(2147483648*Math.random()).toString(36)+Math.abs(Math.floor(2147483648*Math.random())^Date.now()).toString(36)),e}function is(e,t){return e?t?decodeURI(e.replace(/%25/g,"%2525")):decodeURIComponent(e):""}function os(e,t,n){return"string"==typeof e?(e=encodeURI(e).replace(t,as),n&&(e=e.replace(/%25([0-9a-fA-F]{2})/g,"%$1")),e):null}function as(e){return"%"+((e=e.charCodeAt(0))>>4&15).toString(16)+(15&e).toString(16)}Jn.prototype.toString=function(){var e=[],t=this.j;t&&e.push(os(t,cs,!0),":");var n=this.g;return(n||"file"==t)&&(e.push("//"),(t=this.s)&&e.push(os(t,cs,!0),"@"),e.push(encodeURIComponent(String(n)).replace(/%25([0-9a-fA-F]{2})/g,"%$1")),null!=(n=this.m)&&e.push(":",String(n))),(n=this.l)&&(this.g&&"/"!=n.charAt(0)&&e.push("/"),e.push(os(n,"/"==n.charAt(0)?ls:us,!0))),(n=this.i.toString())&&e.push("?",n),(n=this.o)&&e.push("#",os(n,ds)),e.join("")};var cs=/[#\/\?@]/g,us=/[#\?:]/g,ls=/[#\?]/g,hs=/[#\?@]/g,ds=/#/g;function fs(e,t){this.h=this.g=null,this.i=e||null,this.j=!!t}function ps(e){e.g||(e.g=new Map,e.h=0,e.i&&function(e,t){if(e){e=e.split("&");for(var n=0;n=e.j}function Ts(e){return e.h?1:e.g?e.g.size:0}function Es(e,t){return e.h?e.h==t:!!e.g&&e.g.has(t)}function Is(e,t){e.g?e.g.add(t):e.h=t}function ks(e,t){e.h&&e.h==t?e.h=null:e.g&&e.g.has(t)&&e.g.delete(t)}function Ss(e){if(null!=e.h)return e.i.concat(e.h.D);if(null!=e.g&&0!==e.g.size){let t=e.i;for(const n of e.g.values())t=t.concat(n.D);return t}return Ge(e.i)}function Cs(){}function As(){this.g=new Cs}function Rs(e,t,n){const s=n||"";try{Xn(e,(function(e,n){let r=e;Ue(e)&&(r=Gt(e)),t.push(s+n+"="+encodeURIComponent(r))}))}catch(e){throw t.push(s+"type="+encodeURIComponent("_badmap")),e}}function Ds(e,t,n,s,r){try{t.onload=null,t.onerror=null,t.onabort=null,t.ontimeout=null,r(s)}catch(e){}}function Ns(e){this.l=e.ac||null,this.j=e.jb||!1}function Os(e,t){zt.call(this),this.D=e,this.u=t,this.m=void 0,this.readyState=Ls,this.status=0,this.responseType=this.responseText=this.response=this.statusText="",this.onreadystatechange=null,this.v=new Headers,this.h=null,this.C="GET",this.B="",this.g=!1,this.A=this.j=this.l=null}ws.prototype.cancel=function(){if(this.i=Ss(this),this.h)this.h.cancel(),this.h=null;else if(this.g&&0!==this.g.size){for(const e of this.g.values())e.cancel();this.g.clear()}},Cs.prototype.stringify=function(e){return xe.JSON.stringify(e,void 0)},Cs.prototype.parse=function(e){return xe.JSON.parse(e,void 0)},ze(Ns,Sn),Ns.prototype.g=function(){return new Os(this.l,this.j)},Ns.prototype.i=function(e){return function(){return e}}({}),ze(Os,zt);var Ls=0;function xs(e){e.j.read().then(e.Ta.bind(e)).catch(e.ga.bind(e))}function Ps(e){e.readyState=4,e.l=null,e.j=null,e.A=null,Ms(e)}function Ms(e){e.onreadystatechange&&e.onreadystatechange.call(e)}(De=Os.prototype).open=function(e,t){if(this.readyState!=Ls)throw this.abort(),Error("Error reopening a connection");this.C=e,this.B=t,this.readyState=1,Ms(this)},De.send=function(e){if(1!=this.readyState)throw this.abort(),Error("need to call open() first. ");this.g=!0;const t={headers:this.v,method:this.C,credentials:this.m,cache:void 0};e&&(t.body=e),(this.D||xe).fetch(new Request(this.B,t)).then(this.Wa.bind(this),this.ga.bind(this))},De.abort=function(){this.response=this.responseText="",this.v=new Headers,this.status=0,this.j&&this.j.cancel("Request was aborted.").catch((()=>{})),1<=this.readyState&&this.g&&4!=this.readyState&&(this.g=!1,Ps(this)),this.readyState=Ls},De.Wa=function(e){if(this.g&&(this.l=e,this.h||(this.status=this.l.status,this.statusText=this.l.statusText,this.h=e.headers,this.readyState=2,Ms(this)),this.g&&(this.readyState=3,Ms(this),this.g)))if("arraybuffer"===this.responseType)e.arrayBuffer().then(this.Ua.bind(this),this.ga.bind(this));else if(void 0!==xe.ReadableStream&&"body"in e){if(this.j=e.body.getReader(),this.u){if(this.responseType)throw Error('responseType must be empty for "streamBinaryChunks" mode responses.');this.response=[]}else this.response=this.responseText="",this.A=new TextDecoder;xs(this)}else e.text().then(this.Va.bind(this),this.ga.bind(this))},De.Ta=function(e){if(this.g){if(this.u&&e.value)this.response.push(e.value);else if(!this.u){var t=e.value?e.value:new Uint8Array(0);(t=this.A.decode(t,{stream:!e.done}))&&(this.response=this.responseText+=t)}e.done?Ps(this):Ms(this),3==this.readyState&&xs(this)}},De.Va=function(e){this.g&&(this.response=this.responseText=e,Ps(this))},De.Ua=function(e){this.g&&(this.response=e,Ps(this))},De.ga=function(){this.g&&Ps(this)},De.setRequestHeader=function(e,t){this.v.append(e,t)},De.getResponseHeader=function(e){return this.h&&this.h.get(e.toLowerCase())||""},De.getAllResponseHeaders=function(){if(!this.h)return"";const e=[],t=this.h.entries();for(var n=t.next();!n.done;)n=n.value,e.push(n[0]+": "+n[1]),n=t.next();return e.join("\r\n")},Object.defineProperty(Os.prototype,"withCredentials",{get:function(){return"include"===this.m},set:function(e){this.m=e?"include":"same-origin"}});var Us=xe.JSON.parse;function Fs(e){zt.call(this),this.headers=new Map,this.u=e||null,this.h=!1,this.C=this.g=null,this.H="",this.m=0,this.j="",this.l=this.F=this.v=this.D=!1,this.B=0,this.A=null,this.J=Vs,this.K=this.L=!1}ze(Fs,zt);var Vs="",Bs=/^https?$/i,$s=["POST","PUT"];function js(e,t){e.h=!1,e.g&&(e.l=!0,e.g.abort(),e.l=!1),e.j=t,e.m=5,qs(e),Hs(e)}function qs(e){e.D||(e.D=!0,Ht(e,"complete"),Ht(e,"error"))}function zs(e){if(e.h&&void 0!==Le&&(!e.C[1]||4!=Gs(e)||2!=e.aa()))if(e.v&&4==Gs(e))on(e.Ha,0,e);else if(Ht(e,"readystatechange"),4==Gs(e)){e.h=!1;try{const a=e.aa();e:switch(a){case 200:case 201:case 202:case 204:case 206:case 304:case 1223:var t=!0;break e;default:t=!1}var n;if(!(n=t)){var s;if(s=0===a){var r=String(e.H).match(Yn)[1]||null;if(!r&&xe.self&&xe.self.location){var i=xe.self.location.protocol;r=i.substr(0,i.length-1)}s=!Bs.test(r?r.toLowerCase():"")}n=s}if(n)Ht(e,"complete"),Ht(e,"success");else{e.m=6;try{var o=2n)t=Math.max(0,r[o].h-100),i=!1;else try{Rs(a,e,"req"+n+"_")}catch(e){s&&s(a)}}if(i){s=e.join("&");break e}}}return e=e.i.splice(0,n),t.D=e,s}function or(e){e.g||e.u||(e.Z=1,Zt(e.Ia,e),e.A=0)}function ar(e){return!(e.g||e.u||3<=e.A||(e.Z++,e.u=En(je(e.Ia,e),dr(e,e.A)),e.A++,0))}function cr(e){null!=e.B&&(xe.clearTimeout(e.B),e.B=null)}function ur(e){e.g=new xn(e,e.j,"rpc",e.Z),null===e.o&&(e.g.H=e.s),e.g.N=0;var t=Zn(e.sa);ss(t,"RID","rpc"),ss(t,"SID",e.I),ss(t,"CI",e.L?"0":"1"),ss(t,"AID",e.T),ss(t,"TYPE","xmlhttp"),rr(e,t),e.o&&e.s&&Xs(t,e.o,e.s),e.J&&e.g.setTimeout(e.J);var n=e.g;e=e.ka,n.K=1,n.v=rs(Zn(t)),n.s=null,n.P=!0,Bn(n,e)}function lr(e){null!=e.v&&(xe.clearTimeout(e.v),e.v=null)}function hr(e,t){var n=null;if(e.g==t){lr(e),cr(e),e.g=null;var s=2}else{if(!Es(e.h,t))return;n=t.D,ks(e.h,t),s=1}if(0!=e.G)if(e.pa=t.Y,t.i)if(1==s){n=t.s?t.s.length:0,t=Date.now()-t.F;var r=e.C;Ht(s=yn(),new Tn(s,n)),nr(e)}else or(e);else if(3==(r=t.o)||0==r&&0=e.h.j-(e.m?1:0)||(e.m?(e.i=t.D.concat(e.i),0):1==e.G||2==e.G||e.C>=(e.Za?0:e.$a)||(e.m=En(je(e.Ja,e,t),dr(e,e.C)),e.C++,0)))}(e,t)||2==s&&ar(e)))switch(n&&0"content-type"==e.toLowerCase())),r=xe.FormData&&e instanceof xe.FormData,!(0<=Ke($s,t))||s||r||n.set("Content-Type","application/x-www-form-urlencoded;charset=utf-8");for(const[e,t]of n)this.g.setRequestHeader(e,t);this.J&&(this.g.responseType=this.J),"withCredentials"in this.g&&this.g.withCredentials!==this.L&&(this.g.withCredentials=this.L);try{Ks(this),0=this.P)){var e=2*this.P;this.j.info("BP detection timer enabled: "+e),this.B=En(je(this.eb,this),e)}},De.eb=function(){this.B&&(this.B=null,this.j.info("BP detection timeout reached."),this.j.info("Buffering proxy detected and switch to long-polling!"),this.L=!1,this.K=!0,bn(10),er(this),ur(this))},De.cb=function(){null!=this.v&&(this.v=null,er(this),ar(this),bn(19))},De.kb=function(e){e?(this.j.info("Successfully pinged google.com"),bn(2)):(this.j.info("Failed to ping google.com"),bn(1))},(De=yr.prototype).xa=function(){},De.wa=function(){},De.va=function(){},De.ua=function(){},De.Ra=function(){},vr.prototype.g=function(e,t){return new wr(e,t)},ze(wr,zt),wr.prototype.m=function(){this.g.l=this.j,this.A&&(this.g.H=!0);var e=this.g,t=this.l,n=this.h||void 0;bn(0),e.V=t,e.ia=n||{},e.L=e.Y,e.F=mr(e,null,e.V),nr(e)},wr.prototype.close=function(){Zs(this.g)},wr.prototype.u=function(e){var t=this.g;if("string"==typeof e){var n={};n.__data__=e,e=n}else this.v&&((n={}).__data__=Gt(e),e=n);t.i.push(new class{constructor(e,t){this.h=e,this.g=t}}(t.ab++,e)),3==t.G&&nr(t)},wr.prototype.M=function(){this.g.l=null,delete this.j,Zs(this.g),delete this.g,wr.X.M.call(this)},ze(_r,Nn),ze(br,On),ze(Tr,yr),Tr.prototype.xa=function(){Ht(this.g,"a")},Tr.prototype.wa=function(e){Ht(this.g,new _r(e))},Tr.prototype.va=function(e){Ht(this.g,new br)},Tr.prototype.ua=function(){Ht(this.g,"b")},vr.prototype.createWebChannel=vr.prototype.g,wr.prototype.send=wr.prototype.u,wr.prototype.open=wr.prototype.m,wr.prototype.close=wr.prototype.close,In.NO_ERROR=0,In.TIMEOUT=8,In.HTTP_ERROR=6,kn.COMPLETE="complete",An.EventType=Dn,Dn.OPEN="a",Dn.CLOSE="b",Dn.ERROR="c",Dn.MESSAGE="d",zt.prototype.listen=zt.prototype.N,Fs.prototype.listenOnce=Fs.prototype.O,Fs.prototype.getLastError=Fs.prototype.Oa,Fs.prototype.getLastErrorCode=Fs.prototype.Ea,Fs.prototype.getStatus=Fs.prototype.aa,Fs.prototype.getResponseJson=Fs.prototype.Sa,Fs.prototype.getResponseText=Fs.prototype.fa,Fs.prototype.send=Fs.prototype.da,Fs.prototype.setWithCredentials=Fs.prototype.Ka;var Er=Oe.createWebChannelTransport=function(){return new vr},Ir=Oe.getStatEventTarget=function(){return yn()},kr=Oe.ErrorCode=In,Sr=Oe.EventType=kn,Cr=Oe.Event=mn,Ar=Oe.Stat={sb:0,vb:1,wb:2,Pb:3,Ub:4,Rb:5,Sb:6,Qb:7,Ob:8,Tb:9,PROXY:10,NOPROXY:11,Mb:12,Ib:13,Jb:14,Hb:15,Kb:16,Lb:17,ob:18,nb:19,pb:20},Rr=Oe.FetchXmlHttpFactory=Ns,Dr=Oe.WebChannel=An,Nr=Oe.XhrIo=Fs;const Or="@firebase/firestore";class Lr{constructor(e){this.uid=e}isAuthenticated(){return null!=this.uid}toKey(){return this.isAuthenticated()?"uid:"+this.uid:"anonymous-user"}isEqual(e){return e.uid===this.uid}}Lr.UNAUTHENTICATED=new Lr(null),Lr.GOOGLE_CREDENTIALS=new Lr("google-credentials-uid"),Lr.FIRST_PARTY=new Lr("first-party-uid"),Lr.MOCK_USER=new Lr("mock-user");let xr="9.14.0";const Pr=new B("@firebase/firestore");function Mr(){return Pr.logLevel}function Ur(e,...t){if(Pr.logLevel<=x.DEBUG){const n=t.map(Br);Pr.debug(`Firestore (${xr}): ${e}`,...n)}}function Fr(e,...t){if(Pr.logLevel<=x.ERROR){const n=t.map(Br);Pr.error(`Firestore (${xr}): ${e}`,...n)}}function Vr(e,...t){if(Pr.logLevel<=x.WARN){const n=t.map(Br);Pr.warn(`Firestore (${xr}): ${e}`,...n)}}function Br(e){if("string"==typeof e)return e;try{return t=e,JSON.stringify(t)}catch(t){return e}var t}function $r(e="Unexpected state"){const t=`FIRESTORE (${xr}) INTERNAL ASSERTION FAILED: `+e;throw Fr(t),new Error(t)}function jr(e,t){e||$r()}function qr(e,t){return e}const zr={OK:"ok",CANCELLED:"cancelled",UNKNOWN:"unknown",INVALID_ARGUMENT:"invalid-argument",DEADLINE_EXCEEDED:"deadline-exceeded",NOT_FOUND:"not-found",ALREADY_EXISTS:"already-exists",PERMISSION_DENIED:"permission-denied",UNAUTHENTICATED:"unauthenticated",RESOURCE_EXHAUSTED:"resource-exhausted",FAILED_PRECONDITION:"failed-precondition",ABORTED:"aborted",OUT_OF_RANGE:"out-of-range",UNIMPLEMENTED:"unimplemented",INTERNAL:"internal",UNAVAILABLE:"unavailable",DATA_LOSS:"data-loss"};class Hr extends v{constructor(e,t){super(e,t),this.code=e,this.message=t,this.toString=()=>`${this.name}: [code=${this.code}]: ${this.message}`}}class Kr{constructor(){this.promise=new Promise(((e,t)=>{this.resolve=e,this.reject=t}))}}class Gr{constructor(e,t){this.user=t,this.type="OAuth",this.headers=new Map,this.headers.set("Authorization",`Bearer ${e}`)}}class Wr{getToken(){return Promise.resolve(null)}invalidateToken(){}start(e,t){e.enqueueRetryable((()=>t(Lr.UNAUTHENTICATED)))}shutdown(){}}class Qr{constructor(e){this.token=e,this.changeListener=null}getToken(){return Promise.resolve(this.token)}invalidateToken(){}start(e,t){this.changeListener=t,e.enqueueRetryable((()=>t(this.token.user)))}shutdown(){this.changeListener=null}}class Xr{constructor(e){this.t=e,this.currentUser=Lr.UNAUTHENTICATED,this.i=0,this.forceRefresh=!1,this.auth=null}start(e,t){let n=this.i;const s=e=>this.i!==n?(n=this.i,t(e)):Promise.resolve();let r=new Kr;this.o=()=>{this.i++,this.currentUser=this.u(),r.resolve(),r=new Kr,e.enqueueRetryable((()=>s(this.currentUser)))};const i=()=>{const t=r;e.enqueueRetryable((async()=>{await t.promise,await s(this.currentUser)}))},o=e=>{Ur("FirebaseAuthCredentialsProvider","Auth detected"),this.auth=e,this.auth.addAuthTokenListener(this.o),i()};this.t.onInit((e=>o(e))),setTimeout((()=>{if(!this.auth){const e=this.t.getImmediate({optional:!0});e?o(e):(Ur("FirebaseAuthCredentialsProvider","Auth not yet detected"),r.resolve(),r=new Kr)}}),0),i()}getToken(){const e=this.i,t=this.forceRefresh;return this.forceRefresh=!1,this.auth?this.auth.getToken(t).then((t=>this.i!==e?(Ur("FirebaseAuthCredentialsProvider","getToken aborted due to token change."),this.getToken()):t?(jr("string"==typeof t.accessToken),new Gr(t.accessToken,this.currentUser)):null)):Promise.resolve(null)}invalidateToken(){this.forceRefresh=!0}shutdown(){this.auth&&this.auth.removeAuthTokenListener(this.o)}u(){const e=this.auth&&this.auth.getUid();return jr(null===e||"string"==typeof e),new Lr(e)}}class Yr{constructor(e,t,n,s){this.h=e,this.l=t,this.m=n,this.g=s,this.type="FirstParty",this.user=Lr.FIRST_PARTY,this.p=new Map}I(){return this.g?this.g():(jr(!("object"!=typeof this.h||null===this.h||!this.h.auth||!this.h.auth.getAuthHeaderValueForFirstParty)),this.h.auth.getAuthHeaderValueForFirstParty([]))}get headers(){this.p.set("X-Goog-AuthUser",this.l);const e=this.I();return e&&this.p.set("Authorization",e),this.m&&this.p.set("X-Goog-Iam-Authorization-Token",this.m),this.p}}class Jr{constructor(e,t,n,s){this.h=e,this.l=t,this.m=n,this.g=s}getToken(){return Promise.resolve(new Yr(this.h,this.l,this.m,this.g))}start(e,t){e.enqueueRetryable((()=>t(Lr.FIRST_PARTY)))}shutdown(){}invalidateToken(){}}class Zr{constructor(e){this.value=e,this.type="AppCheck",this.headers=new Map,e&&e.length>0&&this.headers.set("x-firebase-appcheck",this.value)}}class ei{constructor(e){this.T=e,this.forceRefresh=!1,this.appCheck=null,this.A=null}start(e,t){const n=e=>{null!=e.error&&Ur("FirebaseAppCheckTokenProvider",`Error getting App Check token; using placeholder token instead. Error: ${e.error.message}`);const n=e.token!==this.A;return this.A=e.token,Ur("FirebaseAppCheckTokenProvider",`Received ${n?"new":"existing"} token.`),n?t(e.token):Promise.resolve()};this.o=t=>{e.enqueueRetryable((()=>n(t)))};const s=e=>{Ur("FirebaseAppCheckTokenProvider","AppCheck detected"),this.appCheck=e,this.appCheck.addTokenListener(this.o)};this.T.onInit((e=>s(e))),setTimeout((()=>{if(!this.appCheck){const e=this.T.getImmediate({optional:!0});e?s(e):Ur("FirebaseAppCheckTokenProvider","AppCheck not yet detected")}}),0)}getToken(){const e=this.forceRefresh;return this.forceRefresh=!1,this.appCheck?this.appCheck.getToken(e).then((e=>e?(jr("string"==typeof e.token),this.A=e.token,new Zr(e.token)):null)):Promise.resolve(null)}invalidateToken(){this.forceRefresh=!0}shutdown(){this.appCheck&&this.appCheck.removeTokenListener(this.o)}}function ti(e){const t="undefined"!=typeof self&&(self.crypto||self.msCrypto),n=new Uint8Array(e);if(t&&"function"==typeof t.getRandomValues)t.getRandomValues(n);else for(let t=0;tt?1:0}function ri(e,t,n){return e.length===t.length&&e.every(((e,s)=>n(e,t[s])))}class ii{constructor(e,t){if(this.seconds=e,this.nanoseconds=t,t<0)throw new Hr(zr.INVALID_ARGUMENT,"Timestamp nanoseconds out of range: "+t);if(t>=1e9)throw new Hr(zr.INVALID_ARGUMENT,"Timestamp nanoseconds out of range: "+t);if(e<-62135596800)throw new Hr(zr.INVALID_ARGUMENT,"Timestamp seconds out of range: "+e);if(e>=253402300800)throw new Hr(zr.INVALID_ARGUMENT,"Timestamp seconds out of range: "+e)}static now(){return ii.fromMillis(Date.now())}static fromDate(e){return ii.fromMillis(e.getTime())}static fromMillis(e){const t=Math.floor(e/1e3),n=Math.floor(1e6*(e-1e3*t));return new ii(t,n)}toDate(){return new Date(this.toMillis())}toMillis(){return 1e3*this.seconds+this.nanoseconds/1e6}_compareTo(e){return this.seconds===e.seconds?si(this.nanoseconds,e.nanoseconds):si(this.seconds,e.seconds)}isEqual(e){return e.seconds===this.seconds&&e.nanoseconds===this.nanoseconds}toString(){return"Timestamp(seconds="+this.seconds+", nanoseconds="+this.nanoseconds+")"}toJSON(){return{seconds:this.seconds,nanoseconds:this.nanoseconds}}valueOf(){const e=this.seconds- -62135596800;return String(e).padStart(12,"0")+"."+String(this.nanoseconds).padStart(9,"0")}}class oi{constructor(e){this.timestamp=e}static fromTimestamp(e){return new oi(e)}static min(){return new oi(new ii(0,0))}static max(){return new oi(new ii(253402300799,999999999))}compareTo(e){return this.timestamp._compareTo(e.timestamp)}isEqual(e){return this.timestamp.isEqual(e.timestamp)}toMicroseconds(){return 1e6*this.timestamp.seconds+this.timestamp.nanoseconds/1e3}toString(){return"SnapshotVersion("+this.timestamp.toString()+")"}toTimestamp(){return this.timestamp}}class ai{constructor(e,t,n){void 0===t?t=0:t>e.length&&$r(),void 0===n?n=e.length-t:n>e.length-t&&$r(),this.segments=e,this.offset=t,this.len=n}get length(){return this.len}isEqual(e){return 0===ai.comparator(this,e)}child(e){const t=this.segments.slice(this.offset,this.limit());return e instanceof ai?e.forEach((e=>{t.push(e)})):t.push(e),this.construct(t)}limit(){return this.offset+this.length}popFirst(e){return e=void 0===e?1:e,this.construct(this.segments,this.offset+e,this.length-e)}popLast(){return this.construct(this.segments,this.offset,this.length-1)}firstSegment(){return this.segments[this.offset]}lastSegment(){return this.get(this.length-1)}get(e){return this.segments[this.offset+e]}isEmpty(){return 0===this.length}isPrefixOf(e){if(e.lengthr)return 1}return e.lengtht.length?1:0}}class ci extends ai{construct(e,t,n){return new ci(e,t,n)}canonicalString(){return this.toArray().join("/")}toString(){return this.canonicalString()}static fromString(...e){const t=[];for(const n of e){if(n.indexOf("//")>=0)throw new Hr(zr.INVALID_ARGUMENT,`Invalid segment (${n}). Paths must not contain // in them.`);t.push(...n.split("/").filter((e=>e.length>0)))}return new ci(t)}static emptyPath(){return new ci([])}}const ui=/^[_a-zA-Z][_a-zA-Z0-9]*$/;class li extends ai{construct(e,t,n){return new li(e,t,n)}static isValidIdentifier(e){return ui.test(e)}canonicalString(){return this.toArray().map((e=>(e=e.replace(/\\/g,"\\\\").replace(/`/g,"\\`"),li.isValidIdentifier(e)||(e="`"+e+"`"),e))).join(".")}toString(){return this.canonicalString()}isKeyField(){return 1===this.length&&"__name__"===this.get(0)}static keyField(){return new li(["__name__"])}static fromServerFormat(e){const t=[];let n="",s=0;const r=()=>{if(0===n.length)throw new Hr(zr.INVALID_ARGUMENT,`Invalid field path (${e}). Paths must not be empty, begin with '.', end with '.', or contain '..'`);t.push(n),n=""};let i=!1;for(;s=2&&this.path.get(this.path.length-2)===e}getCollectionGroup(){return this.path.get(this.path.length-2)}getCollectionPath(){return this.path.popLast()}isEqual(e){return null!==e&&0===ci.comparator(this.path,e.path)}toString(){return this.path.toString()}static comparator(e,t){return ci.comparator(e.path,t.path)}static isDocumentKey(e){return e.length%2==0}static fromSegments(e){return new hi(new ci(e.slice()))}}function di(e){return new fi(e.readTime,e.key,-1)}class fi{constructor(e,t,n){this.readTime=e,this.documentKey=t,this.largestBatchId=n}static min(){return new fi(oi.min(),hi.empty(),-1)}static max(){return new fi(oi.max(),hi.empty(),-1)}}function pi(e,t){let n=e.readTime.compareTo(t.readTime);return 0!==n?n:(n=hi.comparator(e.documentKey,t.documentKey),0!==n?n:si(e.largestBatchId,t.largestBatchId))}class mi{constructor(){this.onCommittedListeners=[]}addOnCommittedListener(e){this.onCommittedListeners.push(e)}raiseOnCommittedEvent(){this.onCommittedListeners.forEach((e=>e()))}}async function gi(e){if(e.code!==zr.FAILED_PRECONDITION||"The current tab is not in the required state to perform this operation. It might be necessary to refresh the browser tab."!==e.message)throw e;Ur("LocalStore","Unexpectedly lost primary lease")}class yi{constructor(e){this.nextCallback=null,this.catchCallback=null,this.result=void 0,this.error=void 0,this.isDone=!1,this.callbackAttached=!1,e((e=>{this.isDone=!0,this.result=e,this.nextCallback&&this.nextCallback(e)}),(e=>{this.isDone=!0,this.error=e,this.catchCallback&&this.catchCallback(e)}))}catch(e){return this.next(void 0,e)}next(e,t){return this.callbackAttached&&$r(),this.callbackAttached=!0,this.isDone?this.error?this.wrapFailure(t,this.error):this.wrapSuccess(e,this.result):new yi(((n,s)=>{this.nextCallback=t=>{this.wrapSuccess(e,t).next(n,s)},this.catchCallback=e=>{this.wrapFailure(t,e).next(n,s)}}))}toPromise(){return new Promise(((e,t)=>{this.next(e,t)}))}wrapUserFunction(e){try{const t=e();return t instanceof yi?t:yi.resolve(t)}catch(e){return yi.reject(e)}}wrapSuccess(e,t){return e?this.wrapUserFunction((()=>e(t))):yi.resolve(t)}wrapFailure(e,t){return e?this.wrapUserFunction((()=>e(t))):yi.reject(t)}static resolve(e){return new yi(((t,n)=>{t(e)}))}static reject(e){return new yi(((t,n)=>{n(e)}))}static waitFor(e){return new yi(((t,n)=>{let s=0,r=0,i=!1;e.forEach((e=>{++s,e.next((()=>{++r,i&&r===s&&t()}),(e=>n(e)))})),i=!0,r===s&&t()}))}static or(e){let t=yi.resolve(!1);for(const n of e)t=t.next((e=>e?yi.resolve(e):n()));return t}static forEach(e,t){const n=[];return e.forEach(((e,s)=>{n.push(t.call(this,e,s))})),this.waitFor(n)}static mapArray(e,t){return new yi(((n,s)=>{const r=e.length,i=new Array(r);let o=0;for(let a=0;a{i[c]=e,++o,o===r&&n(i)}),(e=>s(e)))}}))}static doWhile(e,t){return new yi(((n,s)=>{const r=()=>{!0===e()?t().next((()=>{r()}),s):n()};r()}))}}function vi(e){return"IndexedDbTransactionError"===e.name}class wi{constructor(e,t){this.previousValue=e,t&&(t.sequenceNumberHandler=e=>this.ut(e),this.ct=e=>t.writeSequenceNumber(e))}ut(e){return this.previousValue=Math.max(e,this.previousValue),this.previousValue}next(){const e=++this.previousValue;return this.ct&&this.ct(e),e}}function _i(e){let t=0;for(const n in e)Object.prototype.hasOwnProperty.call(e,n)&&t++;return t}function bi(e,t){for(const n in e)Object.prototype.hasOwnProperty.call(e,n)&&t(n,e[n])}function Ti(e){for(const t in e)if(Object.prototype.hasOwnProperty.call(e,t))return!1;return!0}wi.at=-1;class Ei{constructor(e,t){this.comparator=e,this.root=t||ki.EMPTY}insert(e,t){return new Ei(this.comparator,this.root.insert(e,t,this.comparator).copy(null,null,ki.BLACK,null,null))}remove(e){return new Ei(this.comparator,this.root.remove(e,this.comparator).copy(null,null,ki.BLACK,null,null))}get(e){let t=this.root;for(;!t.isEmpty();){const n=this.comparator(e,t.key);if(0===n)return t.value;n<0?t=t.left:n>0&&(t=t.right)}return null}indexOf(e){let t=0,n=this.root;for(;!n.isEmpty();){const s=this.comparator(e,n.key);if(0===s)return t+n.left.size;s<0?n=n.left:(t+=n.left.size+1,n=n.right)}return-1}isEmpty(){return this.root.isEmpty()}get size(){return this.root.size}minKey(){return this.root.minKey()}maxKey(){return this.root.maxKey()}inorderTraversal(e){return this.root.inorderTraversal(e)}forEach(e){this.inorderTraversal(((t,n)=>(e(t,n),!1)))}toString(){const e=[];return this.inorderTraversal(((t,n)=>(e.push(`${t}:${n}`),!1))),`{${e.join(", ")}}`}reverseTraversal(e){return this.root.reverseTraversal(e)}getIterator(){return new Ii(this.root,null,this.comparator,!1)}getIteratorFrom(e){return new Ii(this.root,e,this.comparator,!1)}getReverseIterator(){return new Ii(this.root,null,this.comparator,!0)}getReverseIteratorFrom(e){return new Ii(this.root,e,this.comparator,!0)}}class Ii{constructor(e,t,n,s){this.isReverse=s,this.nodeStack=[];let r=1;for(;!e.isEmpty();)if(r=t?n(e.key,t):1,t&&s&&(r*=-1),r<0)e=this.isReverse?e.left:e.right;else{if(0===r){this.nodeStack.push(e);break}this.nodeStack.push(e),e=this.isReverse?e.right:e.left}}getNext(){let e=this.nodeStack.pop();const t={key:e.key,value:e.value};if(this.isReverse)for(e=e.left;!e.isEmpty();)this.nodeStack.push(e),e=e.right;else for(e=e.right;!e.isEmpty();)this.nodeStack.push(e),e=e.left;return t}hasNext(){return this.nodeStack.length>0}peek(){if(0===this.nodeStack.length)return null;const e=this.nodeStack[this.nodeStack.length-1];return{key:e.key,value:e.value}}}class ki{constructor(e,t,n,s,r){this.key=e,this.value=t,this.color=null!=n?n:ki.RED,this.left=null!=s?s:ki.EMPTY,this.right=null!=r?r:ki.EMPTY,this.size=this.left.size+1+this.right.size}copy(e,t,n,s,r){return new ki(null!=e?e:this.key,null!=t?t:this.value,null!=n?n:this.color,null!=s?s:this.left,null!=r?r:this.right)}isEmpty(){return!1}inorderTraversal(e){return this.left.inorderTraversal(e)||e(this.key,this.value)||this.right.inorderTraversal(e)}reverseTraversal(e){return this.right.reverseTraversal(e)||e(this.key,this.value)||this.left.reverseTraversal(e)}min(){return this.left.isEmpty()?this:this.left.min()}minKey(){return this.min().key}maxKey(){return this.right.isEmpty()?this.key:this.right.maxKey()}insert(e,t,n){let s=this;const r=n(e,s.key);return s=r<0?s.copy(null,null,null,s.left.insert(e,t,n),null):0===r?s.copy(null,t,null,null,null):s.copy(null,null,null,null,s.right.insert(e,t,n)),s.fixUp()}removeMin(){if(this.left.isEmpty())return ki.EMPTY;let e=this;return e.left.isRed()||e.left.left.isRed()||(e=e.moveRedLeft()),e=e.copy(null,null,null,e.left.removeMin(),null),e.fixUp()}remove(e,t){let n,s=this;if(t(e,s.key)<0)s.left.isEmpty()||s.left.isRed()||s.left.left.isRed()||(s=s.moveRedLeft()),s=s.copy(null,null,null,s.left.remove(e,t),null);else{if(s.left.isRed()&&(s=s.rotateRight()),s.right.isEmpty()||s.right.isRed()||s.right.left.isRed()||(s=s.moveRedRight()),0===t(e,s.key)){if(s.right.isEmpty())return ki.EMPTY;n=s.right.min(),s=s.copy(n.key,n.value,null,null,s.right.removeMin())}s=s.copy(null,null,null,null,s.right.remove(e,t))}return s.fixUp()}isRed(){return this.color}fixUp(){let e=this;return e.right.isRed()&&!e.left.isRed()&&(e=e.rotateLeft()),e.left.isRed()&&e.left.left.isRed()&&(e=e.rotateRight()),e.left.isRed()&&e.right.isRed()&&(e=e.colorFlip()),e}moveRedLeft(){let e=this.colorFlip();return e.right.left.isRed()&&(e=e.copy(null,null,null,null,e.right.rotateRight()),e=e.rotateLeft(),e=e.colorFlip()),e}moveRedRight(){let e=this.colorFlip();return e.left.left.isRed()&&(e=e.rotateRight(),e=e.colorFlip()),e}rotateLeft(){const e=this.copy(null,null,ki.RED,null,this.right.left);return this.right.copy(null,null,this.color,e,null)}rotateRight(){const e=this.copy(null,null,ki.RED,this.left.right,null);return this.left.copy(null,null,this.color,null,e)}colorFlip(){const e=this.left.copy(null,null,!this.left.color,null,null),t=this.right.copy(null,null,!this.right.color,null,null);return this.copy(null,null,!this.color,e,t)}checkMaxDepth(){const e=this.check();return Math.pow(2,e)<=this.size+1}check(){if(this.isRed()&&this.left.isRed())throw $r();if(this.right.isRed())throw $r();const e=this.left.check();if(e!==this.right.check())throw $r();return e+(this.isRed()?0:1)}}ki.EMPTY=null,ki.RED=!0,ki.BLACK=!1,ki.EMPTY=new class{constructor(){this.size=0}get key(){throw $r()}get value(){throw $r()}get color(){throw $r()}get left(){throw $r()}get right(){throw $r()}copy(e,t,n,s,r){return this}insert(e,t,n){return new ki(e,t)}remove(e,t){return this}isEmpty(){return!0}inorderTraversal(e){return!1}reverseTraversal(e){return!1}minKey(){return null}maxKey(){return null}isRed(){return!1}checkMaxDepth(){return!0}check(){return 0}};class Si{constructor(e){this.comparator=e,this.data=new Ei(this.comparator)}has(e){return null!==this.data.get(e)}first(){return this.data.minKey()}last(){return this.data.maxKey()}get size(){return this.data.size}indexOf(e){return this.data.indexOf(e)}forEach(e){this.data.inorderTraversal(((t,n)=>(e(t),!1)))}forEachInRange(e,t){const n=this.data.getIteratorFrom(e[0]);for(;n.hasNext();){const s=n.getNext();if(this.comparator(s.key,e[1])>=0)return;t(s.key)}}forEachWhile(e,t){let n;for(n=void 0!==t?this.data.getIteratorFrom(t):this.data.getIterator();n.hasNext();)if(!e(n.getNext().key))return}firstAfterOrEqual(e){const t=this.data.getIteratorFrom(e);return t.hasNext()?t.getNext().key:null}getIterator(){return new Ci(this.data.getIterator())}getIteratorFrom(e){return new Ci(this.data.getIteratorFrom(e))}add(e){return this.copy(this.data.remove(e).insert(e,!0))}delete(e){return this.has(e)?this.copy(this.data.remove(e)):this}isEmpty(){return this.data.isEmpty()}unionWith(e){let t=this;return t.size{t=t.add(e)})),t}isEqual(e){if(!(e instanceof Si))return!1;if(this.size!==e.size)return!1;const t=this.data.getIterator(),n=e.data.getIterator();for(;t.hasNext();){const e=t.getNext().key,s=n.getNext().key;if(0!==this.comparator(e,s))return!1}return!0}toArray(){const e=[];return this.forEach((t=>{e.push(t)})),e}toString(){const e=[];return this.forEach((t=>e.push(t))),"SortedSet("+e.toString()+")"}copy(e){const t=new Si(this.comparator);return t.data=e,t}}class Ci{constructor(e){this.iter=e}getNext(){return this.iter.getNext().key}hasNext(){return this.iter.hasNext()}}class Ai{constructor(e){this.fields=e,e.sort(li.comparator)}static empty(){return new Ai([])}unionWith(e){let t=new Si(li.comparator);for(const e of this.fields)t=t.add(e);for(const n of e)t=t.add(n);return new Ai(t.toArray())}covers(e){for(const t of this.fields)if(t.isPrefixOf(e))return!0;return!1}isEqual(e){return ri(this.fields,e.fields,((e,t)=>e.isEqual(t)))}}class Ri{constructor(e){this.binaryString=e}static fromBase64String(e){const t=atob(e);return new Ri(t)}static fromUint8Array(e){const t=function(e){let t="";for(let n=0;neqi(e,t)))}function Hi(e,t){if(e===t)return 0;const n=ji(e),s=ji(t);if(n!==s)return si(n,s);switch(n){case 0:case 9007199254740991:return 0;case 1:return si(e.booleanValue,t.booleanValue);case 2:return function(e,t){const n=Oi(e.integerValue||e.doubleValue),s=Oi(t.integerValue||t.doubleValue);return ns?1:n===s?0:isNaN(n)?isNaN(s)?0:-1:1}(e,t);case 3:return Ki(e.timestampValue,t.timestampValue);case 4:return Ki(Mi(e),Mi(t));case 5:return si(e.stringValue,t.stringValue);case 6:return function(e,t){const n=Li(e),s=Li(t);return n.compareTo(s)}(e.bytesValue,t.bytesValue);case 7:return function(e,t){const n=e.split("/"),s=t.split("/");for(let e=0;et.mapValue.fields[e]=eo(n))),t}if(e.arrayValue){const t={arrayValue:{values:[]}};for(let n=0;n<(e.arrayValue.values||[]).length;++n)t.arrayValue.values[n]=eo(e.arrayValue.values[n]);return t}return Object.assign({},e)}function to(e){return"__max__"===(((e.mapValue||{}).fields||{}).__type__||{}).stringValue}class no{constructor(e){this.value=e}static empty(){return new no({mapValue:{}})}field(e){if(e.isEmpty())return this.value;{let t=this.value;for(let n=0;n{if(!t.isImmediateParentOf(r)){const e=this.getFieldsMap(t);this.applyChanges(e,n,s),n={},s=[],t=r.popLast()}e?n[r.lastSegment()]=eo(e):s.push(r.lastSegment())}));const r=this.getFieldsMap(t);this.applyChanges(r,n,s)}delete(e){const t=this.field(e.popLast());Zi(t)&&t.mapValue.fields&&delete t.mapValue.fields[e.lastSegment()]}isEqual(e){return qi(this.value,e.value)}getFieldsMap(e){let t=this.value;t.mapValue.fields||(t.mapValue={fields:{}});for(let n=0;ne[t]=n));for(const t of n)delete e[t]}clone(){return new no(eo(this.value))}}function so(e){const t=[];return bi(e.fields,((e,n)=>{const s=new li([e]);if(Zi(n)){const e=so(n.mapValue).fields;if(0===e.length)t.push(s);else for(const n of e)t.push(s.child(n))}else t.push(s)})),new Ai(t)}class ro{constructor(e,t,n,s,r,i){this.key=e,this.documentType=t,this.version=n,this.readTime=s,this.data=r,this.documentState=i}static newInvalidDocument(e){return new ro(e,0,oi.min(),oi.min(),no.empty(),0)}static newFoundDocument(e,t,n){return new ro(e,1,t,oi.min(),n,0)}static newNoDocument(e,t){return new ro(e,2,t,oi.min(),no.empty(),0)}static newUnknownDocument(e,t){return new ro(e,3,t,oi.min(),no.empty(),2)}convertToFoundDocument(e,t){return this.version=e,this.documentType=1,this.data=t,this.documentState=0,this}convertToNoDocument(e){return this.version=e,this.documentType=2,this.data=no.empty(),this.documentState=0,this}convertToUnknownDocument(e){return this.version=e,this.documentType=3,this.data=no.empty(),this.documentState=2,this}setHasCommittedMutations(){return this.documentState=2,this}setHasLocalMutations(){return this.documentState=1,this.version=oi.min(),this}setReadTime(e){return this.readTime=e,this}get hasLocalMutations(){return 1===this.documentState}get hasCommittedMutations(){return 2===this.documentState}get hasPendingWrites(){return this.hasLocalMutations||this.hasCommittedMutations}isValidDocument(){return 0!==this.documentType}isFoundDocument(){return 1===this.documentType}isNoDocument(){return 2===this.documentType}isUnknownDocument(){return 3===this.documentType}isEqual(e){return e instanceof ro&&this.key.isEqual(e.key)&&this.version.isEqual(e.version)&&this.documentType===e.documentType&&this.documentState===e.documentState&&this.data.isEqual(e.data)}mutableCopy(){return new ro(this.key,this.documentType,this.version,this.readTime,this.data.clone(),this.documentState)}toString(){return`Document(${this.key}, ${this.version}, ${JSON.stringify(this.data.value)}, {documentType: ${this.documentType}}), {documentState: ${this.documentState}})`}}class io{constructor(e,t=null,n=[],s=[],r=null,i=null,o=null){this.path=e,this.collectionGroup=t,this.orderBy=n,this.filters=s,this.limit=r,this.startAt=i,this.endAt=o,this.ht=null}}function oo(e,t=null,n=[],s=[],r=null,i=null,o=null){return new io(e,t,n,s,r,i,o)}function ao(e){const t=qr(e);if(null===t.ht){let e=t.path.canonicalString();null!==t.collectionGroup&&(e+="|cg:"+t.collectionGroup),e+="|f:",e+=t.filters.map((e=>{return(t=e).field.canonicalString()+t.op.toString()+Gi(t.value);var t})).join(","),e+="|ob:",e+=t.orderBy.map((e=>function(e){return e.field.canonicalString()+e.dir}(e))).join(","),Vi(t.limit)||(e+="|l:",e+=t.limit),t.startAt&&(e+="|lb:",e+=t.startAt.inclusive?"b:":"a:",e+=t.startAt.position.map((e=>Gi(e))).join(",")),t.endAt&&(e+="|ub:",e+=t.endAt.inclusive?"a:":"b:",e+=t.endAt.position.map((e=>Gi(e))).join(",")),t.ht=e}return t.ht}function co(e,t){if(e.limit!==t.limit)return!1;if(e.orderBy.length!==t.orderBy.length)return!1;for(let n=0;n":return e>0;case">=":return e>=0;default:return $r()}}dt(){return["<","<=",">",">=","!=","not-in"].indexOf(this.op)>=0}}class ho extends lo{constructor(e,t,n){super(e,t,n),this.key=hi.fromName(n.referenceValue)}matches(e){const t=hi.comparator(e.key,this.key);return this.ft(t)}}class fo extends lo{constructor(e,t){super(e,"in",t),this.keys=mo(0,t)}matches(e){return this.keys.some((t=>t.isEqual(e.key)))}}class po extends lo{constructor(e,t){super(e,"not-in",t),this.keys=mo(0,t)}matches(e){return!this.keys.some((t=>t.isEqual(e.key)))}}function mo(e,t){var n;return((null===(n=t.arrayValue)||void 0===n?void 0:n.values)||[]).map((e=>hi.fromName(e.referenceValue)))}class go extends lo{constructor(e,t){super(e,"array-contains",t)}matches(e){const t=e.data.field(this.field);return Xi(t)&&zi(t.arrayValue,this.value)}}class yo extends lo{constructor(e,t){super(e,"in",t)}matches(e){const t=e.data.field(this.field);return null!==t&&zi(this.value.arrayValue,t)}}class vo extends lo{constructor(e,t){super(e,"not-in",t)}matches(e){if(zi(this.value.arrayValue,{nullValue:"NULL_VALUE"}))return!1;const t=e.data.field(this.field);return null!==t&&!zi(this.value.arrayValue,t)}}class wo extends lo{constructor(e,t){super(e,"array-contains-any",t)}matches(e){const t=e.data.field(this.field);return!(!Xi(t)||!t.arrayValue.values)&&t.arrayValue.values.some((e=>zi(this.value.arrayValue,e)))}}class _o{constructor(e,t){this.position=e,this.inclusive=t}}class bo{constructor(e,t="asc"){this.field=e,this.dir=t}}function To(e,t){return e.dir===t.dir&&e.field.isEqual(t.field)}function Eo(e,t,n){let s=0;for(let r=0;r0?e.explicitOrderBy[0].field:null}function Ro(e){for(const t of e.filters)if(t.dt())return t.field;return null}function Do(e){const t=qr(e);if(null===t._t){t._t=[];const e=Ro(t),n=Ao(t);if(null!==e&&null===n)e.isKeyField()||t._t.push(new bo(e)),t._t.push(new bo(li.keyField(),"asc"));else{let e=!1;for(const n of t.explicitOrderBy)t._t.push(n),n.field.isKeyField()&&(e=!0);if(!e){const e=t.explicitOrderBy.length>0?t.explicitOrderBy[t.explicitOrderBy.length-1].dir:"asc";t._t.push(new bo(li.keyField(),e))}}}return t._t}function No(e){const t=qr(e);if(!t.wt)if("F"===t.limitType)t.wt=oo(t.path,t.collectionGroup,Do(t),t.filters,t.limit,t.startAt,t.endAt);else{const e=[];for(const n of Do(t)){const t="desc"===n.dir?"asc":"desc";e.push(new bo(n.field,t))}const n=t.endAt?new _o(t.endAt.position,t.endAt.inclusive):null,s=t.startAt?new _o(t.startAt.position,t.startAt.inclusive):null;t.wt=oo(t.path,t.collectionGroup,e,t.filters,t.limit,n,s)}return t.wt}function Oo(e,t,n){return new ko(e.path,e.collectionGroup,e.explicitOrderBy.slice(),e.filters.slice(),t,n,e.startAt,e.endAt)}function Lo(e,t){return co(No(e),No(t))&&e.limitType===t.limitType}function xo(e){return`${ao(No(e))}|lt:${e.limitType}`}function Po(e){return`Query(target=${function(e){let t=e.path.canonicalString();return null!==e.collectionGroup&&(t+=" collectionGroup="+e.collectionGroup),e.filters.length>0&&(t+=`, filters: [${e.filters.map((e=>{return`${(t=e).field.canonicalString()} ${t.op} ${Gi(t.value)}`;var t})).join(", ")}]`),Vi(e.limit)||(t+=", limit: "+e.limit),e.orderBy.length>0&&(t+=`, orderBy: [${e.orderBy.map((e=>function(e){return`${e.field.canonicalString()} (${e.dir})`}(e))).join(", ")}]`),e.startAt&&(t+=", startAt: ",t+=e.startAt.inclusive?"b:":"a:",t+=e.startAt.position.map((e=>Gi(e))).join(",")),e.endAt&&(t+=", endAt: ",t+=e.endAt.inclusive?"a:":"b:",t+=e.endAt.position.map((e=>Gi(e))).join(",")),`Target(${t})`}(No(e))}; limitType=${e.limitType})`}function Mo(e,t){return t.isFoundDocument()&&function(e,t){const n=t.key.path;return null!==e.collectionGroup?t.key.hasCollectionId(e.collectionGroup)&&e.path.isPrefixOf(n):hi.isDocumentKey(e.path)?e.path.isEqual(n):e.path.isImmediateParentOf(n)}(e,t)&&function(e,t){for(const n of e.explicitOrderBy)if(!n.field.isKeyField()&&null===t.data.field(n.field))return!1;return!0}(e,t)&&function(e,t){for(const n of e.filters)if(!n.matches(t))return!1;return!0}(e,t)&&function(e,t){return!(e.startAt&&!function(e,t,n){const s=Eo(e,t,n);return e.inclusive?s<=0:s<0}(e.startAt,Do(e),t)||e.endAt&&!function(e,t,n){const s=Eo(e,t,n);return e.inclusive?s>=0:s>0}(e.endAt,Do(e),t))}(e,t)}function Uo(e){return(t,n)=>{let s=!1;for(const r of Do(e)){const e=Fo(r,t,n);if(0!==e)return e;s=s||r.field.isKeyField()}return 0}}function Fo(e,t,n){const s=e.field.isKeyField()?hi.comparator(t.key,n.key):function(e,t,n){const s=t.data.field(e),r=n.data.field(e);return null!==s&&null!==r?Hi(s,r):$r()}(e.field,t,n);switch(e.dir){case"asc":return s;case"desc":return-1*s;default:return $r()}}function Vo(e,t){if(e.gt){if(isNaN(t))return{doubleValue:"NaN"};if(t===1/0)return{doubleValue:"Infinity"};if(t===-1/0)return{doubleValue:"-Infinity"}}return{doubleValue:Bi(t)?"-0":t}}function Bo(e){return{integerValue:""+e}}function $o(e,t){return function(e){return"number"==typeof e&&Number.isInteger(e)&&!Bi(e)&&e<=Number.MAX_SAFE_INTEGER&&e>=Number.MIN_SAFE_INTEGER}(t)?Bo(t):Vo(e,t)}class jo{constructor(){this._=void 0}}function qo(e,t,n){return e instanceof Ko?function(e,t){const n={fields:{__type__:{stringValue:"server_timestamp"},__local_write_time__:{timestampValue:{seconds:e.seconds,nanos:e.nanoseconds}}}};return t&&(n.fields.__previous_value__=t),{mapValue:n}}(n,t):e instanceof Go?Wo(e,t):e instanceof Qo?Xo(e,t):function(e,t){const n=Ho(e,t),s=Jo(n)+Jo(e.yt);return Qi(n)&&Qi(e.yt)?Bo(s):Vo(e.It,s)}(e,t)}function zo(e,t,n){return e instanceof Go?Wo(e,t):e instanceof Qo?Xo(e,t):n}function Ho(e,t){return e instanceof Yo?Qi(n=t)||function(e){return!!e&&"doubleValue"in e}(n)?t:{integerValue:0}:null;var n}class Ko extends jo{}class Go extends jo{constructor(e){super(),this.elements=e}}function Wo(e,t){const n=Zo(t);for(const t of e.elements)n.some((e=>qi(e,t)))||n.push(t);return{arrayValue:{values:n}}}class Qo extends jo{constructor(e){super(),this.elements=e}}function Xo(e,t){let n=Zo(t);for(const t of e.elements)n=n.filter((e=>!qi(e,t)));return{arrayValue:{values:n}}}class Yo extends jo{constructor(e,t){super(),this.It=e,this.yt=t}}function Jo(e){return Oi(e.integerValue||e.doubleValue)}function Zo(e){return Xi(e)&&e.arrayValue.values?e.arrayValue.values.slice():[]}class ea{constructor(e,t){this.version=e,this.transformResults=t}}class ta{constructor(e,t){this.updateTime=e,this.exists=t}static none(){return new ta}static exists(e){return new ta(void 0,e)}static updateTime(e){return new ta(e)}get isNone(){return void 0===this.updateTime&&void 0===this.exists}isEqual(e){return this.exists===e.exists&&(this.updateTime?!!e.updateTime&&this.updateTime.isEqual(e.updateTime):!e.updateTime)}}function na(e,t){return void 0!==e.updateTime?t.isFoundDocument()&&t.version.isEqual(e.updateTime):void 0===e.exists||e.exists===t.isFoundDocument()}class sa{}function ra(e,t){if(!e.hasLocalMutations||t&&0===t.fields.length)return null;if(null===t)return e.isNoDocument()?new pa(e.key,ta.none()):new ua(e.key,e.data,ta.none());{const n=e.data,s=no.empty();let r=new Si(li.comparator);for(let e of t.fields)if(!r.has(e)){let t=n.field(e);null===t&&e.length>1&&(e=e.popLast(),t=n.field(e)),null===t?s.delete(e):s.set(e,t),r=r.add(e)}return new la(e.key,s,new Ai(r.toArray()),ta.none())}}function ia(e,t,n){e instanceof ua?function(e,t,n){const s=e.value.clone(),r=da(e.fieldTransforms,t,n.transformResults);s.setAll(r),t.convertToFoundDocument(n.version,s).setHasCommittedMutations()}(e,t,n):e instanceof la?function(e,t,n){if(!na(e.precondition,t))return void t.convertToUnknownDocument(n.version);const s=da(e.fieldTransforms,t,n.transformResults),r=t.data;r.setAll(ha(e)),r.setAll(s),t.convertToFoundDocument(n.version,r).setHasCommittedMutations()}(e,t,n):function(e,t,n){t.convertToNoDocument(n.version).setHasCommittedMutations()}(0,t,n)}function oa(e,t,n,s){return e instanceof ua?function(e,t,n,s){if(!na(e.precondition,t))return n;const r=e.value.clone(),i=fa(e.fieldTransforms,s,t);return r.setAll(i),t.convertToFoundDocument(t.version,r).setHasLocalMutations(),null}(e,t,n,s):e instanceof la?function(e,t,n,s){if(!na(e.precondition,t))return n;const r=fa(e.fieldTransforms,s,t),i=t.data;return i.setAll(ha(e)),i.setAll(r),t.convertToFoundDocument(t.version,i).setHasLocalMutations(),null===n?null:n.unionWith(e.fieldMask.fields).unionWith(e.fieldTransforms.map((e=>e.field)))}(e,t,n,s):function(e,t,n){return na(e.precondition,t)?(t.convertToNoDocument(t.version).setHasLocalMutations(),null):n}(e,t,n)}function aa(e,t){let n=null;for(const s of e.fieldTransforms){const e=t.data.field(s.field),r=Ho(s.transform,e||null);null!=r&&(null===n&&(n=no.empty()),n.set(s.field,r))}return n||null}function ca(e,t){return e.type===t.type&&!!e.key.isEqual(t.key)&&!!e.precondition.isEqual(t.precondition)&&!!function(e,t){return void 0===e&&void 0===t||!(!e||!t)&&ri(e,t,((e,t)=>function(e,t){return e.field.isEqual(t.field)&&function(e,t){return e instanceof Go&&t instanceof Go||e instanceof Qo&&t instanceof Qo?ri(e.elements,t.elements,qi):e instanceof Yo&&t instanceof Yo?qi(e.yt,t.yt):e instanceof Ko&&t instanceof Ko}(e.transform,t.transform)}(e,t)))}(e.fieldTransforms,t.fieldTransforms)&&(0===e.type?e.value.isEqual(t.value):1!==e.type||e.data.isEqual(t.data)&&e.fieldMask.isEqual(t.fieldMask))}class ua extends sa{constructor(e,t,n,s=[]){super(),this.key=e,this.value=t,this.precondition=n,this.fieldTransforms=s,this.type=0}getFieldMask(){return null}}class la extends sa{constructor(e,t,n,s,r=[]){super(),this.key=e,this.data=t,this.fieldMask=n,this.precondition=s,this.fieldTransforms=r,this.type=1}getFieldMask(){return this.fieldMask}}function ha(e){const t=new Map;return e.fieldMask.fields.forEach((n=>{if(!n.isEmpty()){const s=e.data.field(n);t.set(n,s)}})),t}function da(e,t,n){const s=new Map;jr(e.length===n.length);for(let r=0;r{for(const[t,s]of n)e(t,s)}))}isEmpty(){return Ti(this.inner)}size(){return this.innerSize}}const ba=new Ei(hi.comparator);function Ta(){return ba}const Ea=new Ei(hi.comparator);function Ia(...e){let t=Ea;for(const n of e)t=t.insert(n.key,n);return t}function ka(e){let t=Ea;return e.forEach(((e,n)=>t=t.insert(e,n.overlayedDocument))),t}function Sa(){return Aa()}function Ca(){return Aa()}function Aa(){return new _a((e=>e.toString()),((e,t)=>e.isEqual(t)))}const Ra=new Ei(hi.comparator),Da=new Si(hi.comparator);function Na(...e){let t=Da;for(const n of e)t=t.add(n);return t}const Oa=new Si(si);function La(){return Oa}class xa{constructor(e,t,n,s,r){this.snapshotVersion=e,this.targetChanges=t,this.targetMismatches=n,this.documentUpdates=s,this.resolvedLimboDocuments=r}static createSynthesizedRemoteEventForCurrentChange(e,t,n){const s=new Map;return s.set(e,Pa.createSynthesizedTargetChangeForCurrentChange(e,t,n)),new xa(oi.min(),s,La(),Ta(),Na())}}class Pa{constructor(e,t,n,s,r){this.resumeToken=e,this.current=t,this.addedDocuments=n,this.modifiedDocuments=s,this.removedDocuments=r}static createSynthesizedTargetChangeForCurrentChange(e,t,n){return new Pa(n,t,Na(),Na(),Na())}}class Ma{constructor(e,t,n,s){this.Tt=e,this.removedTargetIds=t,this.key=n,this.Et=s}}class Ua{constructor(e,t){this.targetId=e,this.At=t}}class Fa{constructor(e,t,n=Ri.EMPTY_BYTE_STRING,s=null){this.state=e,this.targetIds=t,this.resumeToken=n,this.cause=s}}class Va{constructor(){this.Rt=0,this.bt=ja(),this.Pt=Ri.EMPTY_BYTE_STRING,this.vt=!1,this.Vt=!0}get current(){return this.vt}get resumeToken(){return this.Pt}get St(){return 0!==this.Rt}get Dt(){return this.Vt}Ct(e){e.approximateByteSize()>0&&(this.Vt=!0,this.Pt=e)}xt(){let e=Na(),t=Na(),n=Na();return this.bt.forEach(((s,r)=>{switch(r){case 0:e=e.add(s);break;case 2:t=t.add(s);break;case 1:n=n.add(s);break;default:$r()}})),new Pa(this.Pt,this.vt,e,t,n)}Nt(){this.Vt=!1,this.bt=ja()}kt(e,t){this.Vt=!0,this.bt=this.bt.insert(e,t)}Ot(e){this.Vt=!0,this.bt=this.bt.remove(e)}Mt(){this.Rt+=1}Ft(){this.Rt-=1}$t(){this.Vt=!0,this.vt=!0}}class Ba{constructor(e){this.Bt=e,this.Lt=new Map,this.Ut=Ta(),this.qt=$a(),this.Kt=new Si(si)}Gt(e){for(const t of e.Tt)e.Et&&e.Et.isFoundDocument()?this.Qt(t,e.Et):this.jt(t,e.key,e.Et);for(const t of e.removedTargetIds)this.jt(t,e.key,e.Et)}Wt(e){this.forEachTarget(e,(t=>{const n=this.zt(t);switch(e.state){case 0:this.Ht(t)&&n.Ct(e.resumeToken);break;case 1:n.Ft(),n.St||n.Nt(),n.Ct(e.resumeToken);break;case 2:n.Ft(),n.St||this.removeTarget(t);break;case 3:this.Ht(t)&&(n.$t(),n.Ct(e.resumeToken));break;case 4:this.Ht(t)&&(this.Jt(t),n.Ct(e.resumeToken));break;default:$r()}}))}forEachTarget(e,t){e.targetIds.length>0?e.targetIds.forEach(t):this.Lt.forEach(((e,n)=>{this.Ht(n)&&t(n)}))}Yt(e){const t=e.targetId,n=e.At.count,s=this.Xt(t);if(s){const e=s.target;if(uo(e))if(0===n){const n=new hi(e.path);this.jt(t,n,ro.newNoDocument(n,oi.min()))}else jr(1===n);else this.Zt(t)!==n&&(this.Jt(t),this.Kt=this.Kt.add(t))}}te(e){const t=new Map;this.Lt.forEach(((n,s)=>{const r=this.Xt(s);if(r){if(n.current&&uo(r.target)){const t=new hi(r.target.path);null!==this.Ut.get(t)||this.ee(s,t)||this.jt(s,t,ro.newNoDocument(t,e))}n.Dt&&(t.set(s,n.xt()),n.Nt())}}));let n=Na();this.qt.forEach(((e,t)=>{let s=!0;t.forEachWhile((e=>{const t=this.Xt(e);return!t||2===t.purpose||(s=!1,!1)})),s&&(n=n.add(e))})),this.Ut.forEach(((t,n)=>n.setReadTime(e)));const s=new xa(e,t,this.Kt,this.Ut,n);return this.Ut=Ta(),this.qt=$a(),this.Kt=new Si(si),s}Qt(e,t){if(!this.Ht(e))return;const n=this.ee(e,t.key)?2:0;this.zt(e).kt(t.key,n),this.Ut=this.Ut.insert(t.key,t),this.qt=this.qt.insert(t.key,this.ne(t.key).add(e))}jt(e,t,n){if(!this.Ht(e))return;const s=this.zt(e);this.ee(e,t)?s.kt(t,1):s.Ot(t),this.qt=this.qt.insert(t,this.ne(t).delete(e)),n&&(this.Ut=this.Ut.insert(t,n))}removeTarget(e){this.Lt.delete(e)}Zt(e){const t=this.zt(e).xt();return this.Bt.getRemoteKeysForTarget(e).size+t.addedDocuments.size-t.removedDocuments.size}Mt(e){this.zt(e).Mt()}zt(e){let t=this.Lt.get(e);return t||(t=new Va,this.Lt.set(e,t)),t}ne(e){let t=this.qt.get(e);return t||(t=new Si(si),this.qt=this.qt.insert(e,t)),t}Ht(e){const t=null!==this.Xt(e);return t||Ur("WatchChangeAggregator","Detected inactive target",e),t}Xt(e){const t=this.Lt.get(e);return t&&t.St?null:this.Bt.se(e)}Jt(e){this.Lt.set(e,new Va),this.Bt.getRemoteKeysForTarget(e).forEach((t=>{this.jt(e,t,null)}))}ee(e,t){return this.Bt.getRemoteKeysForTarget(e).has(t)}}function $a(){return new Ei(hi.comparator)}function ja(){return new Ei(hi.comparator)}const qa={asc:"ASCENDING",desc:"DESCENDING"},za={"<":"LESS_THAN","<=":"LESS_THAN_OR_EQUAL",">":"GREATER_THAN",">=":"GREATER_THAN_OR_EQUAL","==":"EQUAL","!=":"NOT_EQUAL","array-contains":"ARRAY_CONTAINS",in:"IN","not-in":"NOT_IN","array-contains-any":"ARRAY_CONTAINS_ANY"};class Ha{constructor(e,t){this.databaseId=e,this.gt=t}}function Ka(e,t){return e.gt?`${new Date(1e3*t.seconds).toISOString().replace(/\.\d*/,"").replace("Z","")}.${("000000000"+t.nanoseconds).slice(-9)}Z`:{seconds:""+t.seconds,nanos:t.nanoseconds}}function Ga(e,t){return e.gt?t.toBase64():t.toUint8Array()}function Wa(e,t){return Ka(e,t.toTimestamp())}function Qa(e){return jr(!!e),oi.fromTimestamp(function(e){const t=Ni(e);return new ii(t.seconds,t.nanos)}(e))}function Xa(e,t){return function(e){return new ci(["projects",e.projectId,"databases",e.database])}(e).child("documents").child(t).canonicalString()}function Ya(e){const t=ci.fromString(e);return jr(mc(t)),t}function Ja(e,t){return Xa(e.databaseId,t.path)}function Za(e,t){const n=Ya(t);if(n.get(1)!==e.databaseId.projectId)throw new Hr(zr.INVALID_ARGUMENT,"Tried to deserialize key from different project: "+n.get(1)+" vs "+e.databaseId.projectId);if(n.get(3)!==e.databaseId.database)throw new Hr(zr.INVALID_ARGUMENT,"Tried to deserialize key from different database: "+n.get(3)+" vs "+e.databaseId.database);return new hi(nc(n))}function ec(e,t){return Xa(e.databaseId,t)}function tc(e){return new ci(["projects",e.databaseId.projectId,"databases",e.databaseId.database]).canonicalString()}function nc(e){return jr(e.length>4&&"documents"===e.get(4)),e.popFirst(5)}function sc(e,t,n){return{name:Ja(e,t),fields:n.value.mapValue.fields}}function rc(e,t){return{documents:[ec(e,t.path)]}}function ic(e,t){const n={structuredQuery:{}},s=t.path;null!==t.collectionGroup?(n.parent=ec(e,s),n.structuredQuery.from=[{collectionId:t.collectionGroup,allDescendants:!0}]):(n.parent=ec(e,s.popLast()),n.structuredQuery.from=[{collectionId:s.lastSegment()}]);const r=function(e){if(0===e.length)return;const t=e.map((e=>function(e){if("=="===e.op){if(Ji(e.value))return{unaryFilter:{field:lc(e.field),op:"IS_NAN"}};if(Yi(e.value))return{unaryFilter:{field:lc(e.field),op:"IS_NULL"}}}else if("!="===e.op){if(Ji(e.value))return{unaryFilter:{field:lc(e.field),op:"IS_NOT_NAN"}};if(Yi(e.value))return{unaryFilter:{field:lc(e.field),op:"IS_NOT_NULL"}}}return{fieldFilter:{field:lc(e.field),op:uc(e.op),value:e.value}}}(e)));return 1===t.length?t[0]:{compositeFilter:{op:"AND",filters:t}}}(t.filters);r&&(n.structuredQuery.where=r);const i=function(e){if(0!==e.length)return e.map((e=>function(e){return{field:lc(e.field),direction:cc(e.dir)}}(e)))}(t.orderBy);i&&(n.structuredQuery.orderBy=i);const o=function(e,t){return e.gt||Vi(t)?t:{value:t}}(e,t.limit);var a;return null!==o&&(n.structuredQuery.limit=o),t.startAt&&(n.structuredQuery.startAt={before:(a=t.startAt).inclusive,values:a.position}),t.endAt&&(n.structuredQuery.endAt=function(e){return{before:!e.inclusive,values:e.position}}(t.endAt)),n}function oc(e){let t=function(e){const t=Ya(e);return 4===t.length?ci.emptyPath():nc(t)}(e.parent);const n=e.structuredQuery,s=n.from?n.from.length:0;let r=null;if(s>0){jr(1===s);const e=n.from[0];e.allDescendants?r=e.collectionId:t=t.child(e.collectionId)}let i=[];n.where&&(i=ac(n.where));let o=[];n.orderBy&&(o=n.orderBy.map((e=>function(e){return new bo(hc(e.field),function(e){switch(e){case"ASCENDING":return"asc";case"DESCENDING":return"desc";default:return}}(e.direction))}(e))));let a=null;n.limit&&(a=function(e){let t;return t="object"==typeof e?e.value:e,Vi(t)?null:t}(n.limit));let c=null;n.startAt&&(c=function(e){const t=!!e.before,n=e.values||[];return new _o(n,t)}(n.startAt));let u=null;return n.endAt&&(u=function(e){const t=!e.before,n=e.values||[];return new _o(n,t)}(n.endAt)),function(e,t,n,s,r,i,o,a){return new ko(e,t,n,s,r,i,o,a)}(t,r,o,i,a,"F",c,u)}function ac(e){return e?void 0!==e.unaryFilter?[fc(e)]:void 0!==e.fieldFilter?[dc(e)]:void 0!==e.compositeFilter?e.compositeFilter.filters.map((e=>ac(e))).reduce(((e,t)=>e.concat(t))):$r():[]}function cc(e){return qa[e]}function uc(e){return za[e]}function lc(e){return{fieldPath:e.canonicalString()}}function hc(e){return li.fromServerFormat(e.fieldPath)}function dc(e){return lo.create(hc(e.fieldFilter.field),function(e){switch(e){case"EQUAL":return"==";case"NOT_EQUAL":return"!=";case"GREATER_THAN":return">";case"GREATER_THAN_OR_EQUAL":return">=";case"LESS_THAN":return"<";case"LESS_THAN_OR_EQUAL":return"<=";case"ARRAY_CONTAINS":return"array-contains";case"IN":return"in";case"NOT_IN":return"not-in";case"ARRAY_CONTAINS_ANY":return"array-contains-any";default:return $r()}}(e.fieldFilter.op),e.fieldFilter.value)}function fc(e){switch(e.unaryFilter.op){case"IS_NAN":const t=hc(e.unaryFilter.field);return lo.create(t,"==",{doubleValue:NaN});case"IS_NULL":const n=hc(e.unaryFilter.field);return lo.create(n,"==",{nullValue:"NULL_VALUE"});case"IS_NOT_NAN":const s=hc(e.unaryFilter.field);return lo.create(s,"!=",{doubleValue:NaN});case"IS_NOT_NULL":const r=hc(e.unaryFilter.field);return lo.create(r,"!=",{nullValue:"NULL_VALUE"});default:return $r()}}function pc(e){const t=[];return e.fields.forEach((e=>t.push(e.canonicalString()))),{fieldPaths:t}}function mc(e){return e.length>=4&&"projects"===e.get(0)&&"databases"===e.get(2)}class gc{constructor(e,t,n,s){this.batchId=e,this.localWriteTime=t,this.baseMutations=n,this.mutations=s}applyToRemoteDocument(e,t){const n=t.mutationResults;for(let t=0;t{const r=e.get(s.key),i=r.overlayedDocument;let o=this.applyToLocalView(i,r.mutatedFields);o=t.has(s.key)?null:o;const a=ra(i,o);null!==a&&n.set(s.key,a),i.isValidDocument()||i.convertToNoDocument(oi.min())})),n}keys(){return this.mutations.reduce(((e,t)=>e.add(t.key)),Na())}isEqual(e){return this.batchId===e.batchId&&ri(this.mutations,e.mutations,((e,t)=>ca(e,t)))&&ri(this.baseMutations,e.baseMutations,((e,t)=>ca(e,t)))}}class yc{constructor(e,t,n,s){this.batch=e,this.commitVersion=t,this.mutationResults=n,this.docVersions=s}static from(e,t,n){jr(e.mutations.length===n.length);let s=Ra;const r=e.mutations;for(let e=0;e{this.le(t,60),this.Ie(e,t)}))}le(e,t){e.fe(t)}we(e){e.fe(2)}}Tc.Te=new Tc;class Ec{constructor(){this.Ye=new Ic}addToCollectionParentIndex(e,t){return this.Ye.add(t),yi.resolve()}getCollectionParents(e,t){return yi.resolve(this.Ye.getEntries(t))}addFieldIndex(e,t){return yi.resolve()}deleteFieldIndex(e,t){return yi.resolve()}getDocumentsMatchingTarget(e,t){return yi.resolve(null)}getIndexType(e,t){return yi.resolve(0)}getFieldIndexes(e,t){return yi.resolve([])}getNextCollectionGroupToUpdate(e){return yi.resolve(null)}getMinOffset(e,t){return yi.resolve(fi.min())}getMinOffsetFromCollectionGroup(e,t){return yi.resolve(fi.min())}updateCollectionGroup(e,t,n){return yi.resolve()}updateIndexEntries(e,t){return yi.resolve()}}class Ic{constructor(){this.index={}}add(e){const t=e.lastSegment(),n=e.popLast(),s=this.index[t]||new Si(ci.comparator),r=!s.has(n);return this.index[t]=s.add(n),r}has(e){const t=e.lastSegment(),n=e.popLast(),s=this.index[t];return s&&s.has(n)}getEntries(e){return(this.index[e]||new Si(ci.comparator)).toArray()}}new Uint8Array(0);class kc{constructor(e,t,n){this.cacheSizeCollectionThreshold=e,this.percentileToCollect=t,this.maximumSequenceNumbersToCollect=n}static withCacheSize(e){return new kc(e,kc.DEFAULT_COLLECTION_PERCENTILE,kc.DEFAULT_MAX_SEQUENCE_NUMBERS_TO_COLLECT)}}kc.DEFAULT_COLLECTION_PERCENTILE=10,kc.DEFAULT_MAX_SEQUENCE_NUMBERS_TO_COLLECT=1e3,kc.DEFAULT=new kc(41943040,kc.DEFAULT_COLLECTION_PERCENTILE,kc.DEFAULT_MAX_SEQUENCE_NUMBERS_TO_COLLECT),kc.DISABLED=new kc(-1,0,0);class Sc{constructor(e){this.bn=e}next(){return this.bn+=2,this.bn}static Pn(){return new Sc(0)}static vn(){return new Sc(-1)}}class Cc{constructor(){this.changes=new _a((e=>e.toString()),((e,t)=>e.isEqual(t))),this.changesApplied=!1}addEntry(e){this.assertNotApplied(),this.changes.set(e.key,e)}removeEntry(e,t){this.assertNotApplied(),this.changes.set(e,ro.newInvalidDocument(e).setReadTime(t))}getEntry(e,t){this.assertNotApplied();const n=this.changes.get(t);return void 0!==n?yi.resolve(n):this.getFromCache(e,t)}getEntries(e,t){return this.getAllFromCache(e,t)}apply(e){return this.assertNotApplied(),this.changesApplied=!0,this.applyChanges(e)}assertNotApplied(){}}class Ac{constructor(e,t){this.overlayedDocument=e,this.mutatedFields=t}}class Rc{constructor(e,t,n,s){this.remoteDocumentCache=e,this.mutationQueue=t,this.documentOverlayCache=n,this.indexManager=s}getDocument(e,t){let n=null;return this.documentOverlayCache.getOverlay(e,t).next((s=>(n=s,this.getBaseDocument(e,t,n)))).next((e=>(null!==n&&oa(n.mutation,e,Ai.empty(),ii.now()),e)))}getDocuments(e,t){return this.remoteDocumentCache.getEntries(e,t).next((t=>this.getLocalViewOfDocuments(e,t,Na()).next((()=>t))))}getLocalViewOfDocuments(e,t,n=Na()){const s=Sa();return this.populateOverlays(e,s,t).next((()=>this.computeViews(e,t,s,n).next((e=>{let t=Ia();return e.forEach(((e,n)=>{t=t.insert(e,n.overlayedDocument)})),t}))))}getOverlayedDocuments(e,t){const n=Sa();return this.populateOverlays(e,n,t).next((()=>this.computeViews(e,t,n,Na())))}populateOverlays(e,t,n){const s=[];return n.forEach((e=>{t.has(e)||s.push(e)})),this.documentOverlayCache.getOverlays(e,s).next((e=>{e.forEach(((e,n)=>{t.set(e,n)}))}))}computeViews(e,t,n,s){let r=Ta();const i=Aa(),o=Aa();return t.forEach(((e,t)=>{const o=n.get(t.key);s.has(t.key)&&(void 0===o||o.mutation instanceof la)?r=r.insert(t.key,t):void 0!==o&&(i.set(t.key,o.mutation.getFieldMask()),oa(o.mutation,t,o.mutation.getFieldMask(),ii.now()))})),this.recalculateAndSaveOverlays(e,r).next((e=>(e.forEach(((e,t)=>i.set(e,t))),t.forEach(((e,t)=>{var n;return o.set(e,new Ac(t,null!==(n=i.get(e))&&void 0!==n?n:null))})),o)))}recalculateAndSaveOverlays(e,t){const n=Aa();let s=new Ei(((e,t)=>e-t)),r=Na();return this.mutationQueue.getAllMutationBatchesAffectingDocumentKeys(e,t).next((e=>{for(const r of e)r.keys().forEach((e=>{const i=t.get(e);if(null===i)return;let o=n.get(e)||Ai.empty();o=r.applyToLocalView(i,o),n.set(e,o);const a=(s.get(r.batchId)||Na()).add(e);s=s.insert(r.batchId,a)}))})).next((()=>{const i=[],o=s.getReverseIterator();for(;o.hasNext();){const s=o.getNext(),a=s.key,c=s.value,u=Ca();c.forEach((e=>{if(!r.has(e)){const s=ra(t.get(e),n.get(e));null!==s&&u.set(e,s),r=r.add(e)}})),i.push(this.documentOverlayCache.saveOverlays(e,a,u))}return yi.waitFor(i)})).next((()=>n))}recalculateAndSaveOverlaysForDocumentKeys(e,t){return this.remoteDocumentCache.getEntries(e,t).next((t=>this.recalculateAndSaveOverlays(e,t)))}getDocumentsMatchingQuery(e,t,n){return function(e){return hi.isDocumentKey(e.path)&&null===e.collectionGroup&&0===e.filters.length}(t)?this.getDocumentsMatchingDocumentQuery(e,t.path):function(e){return null!==e.collectionGroup}(t)?this.getDocumentsMatchingCollectionGroupQuery(e,t,n):this.getDocumentsMatchingCollectionQuery(e,t,n)}getNextDocuments(e,t,n,s){return this.remoteDocumentCache.getAllFromCollectionGroup(e,t,n,s).next((r=>{const i=s-r.size>0?this.documentOverlayCache.getOverlaysForCollectionGroup(e,t,n.largestBatchId,s-r.size):yi.resolve(Sa());let o=-1,a=r;return i.next((t=>yi.forEach(t,((t,n)=>(o{a=a.insert(t,e)}))))).next((()=>this.populateOverlays(e,t,r))).next((()=>this.computeViews(e,a,t,Na()))).next((e=>({batchId:o,changes:ka(e)})))))}))}getDocumentsMatchingDocumentQuery(e,t){return this.getDocument(e,new hi(t)).next((e=>{let t=Ia();return e.isFoundDocument()&&(t=t.insert(e.key,e)),t}))}getDocumentsMatchingCollectionGroupQuery(e,t,n){const s=t.collectionGroup;let r=Ia();return this.indexManager.getCollectionParents(e,s).next((i=>yi.forEach(i,(i=>{const o=function(e,t){return new ko(t,null,e.explicitOrderBy.slice(),e.filters.slice(),e.limit,e.limitType,e.startAt,e.endAt)}(t,i.child(s));return this.getDocumentsMatchingCollectionQuery(e,o,n).next((e=>{e.forEach(((e,t)=>{r=r.insert(e,t)}))}))})).next((()=>r))))}getDocumentsMatchingCollectionQuery(e,t,n){let s;return this.remoteDocumentCache.getAllFromCollection(e,t.path,n).next((r=>(s=r,this.documentOverlayCache.getOverlaysForCollection(e,t.path,n.largestBatchId)))).next((e=>{e.forEach(((e,t)=>{const n=t.getKey();null===s.get(n)&&(s=s.insert(n,ro.newInvalidDocument(n)))}));let n=Ia();return s.forEach(((s,r)=>{const i=e.get(s);void 0!==i&&oa(i.mutation,r,Ai.empty(),ii.now()),Mo(t,r)&&(n=n.insert(s,r))})),n}))}getBaseDocument(e,t,n){return null===n||1===n.mutation.type?this.remoteDocumentCache.getEntry(e,t):yi.resolve(ro.newInvalidDocument(t))}}class Dc{constructor(e){this.It=e,this.Zn=new Map,this.ts=new Map}getBundleMetadata(e,t){return yi.resolve(this.Zn.get(t))}saveBundleMetadata(e,t){var n;return this.Zn.set(t.id,{id:(n=t).id,version:n.version,createTime:Qa(n.createTime)}),yi.resolve()}getNamedQuery(e,t){return yi.resolve(this.ts.get(t))}saveNamedQuery(e,t){return this.ts.set(t.name,function(e){return{name:e.name,query:bc(e.bundledQuery),readTime:Qa(e.readTime)}}(t)),yi.resolve()}}class Nc{constructor(){this.overlays=new Ei(hi.comparator),this.es=new Map}getOverlay(e,t){return yi.resolve(this.overlays.get(t))}getOverlays(e,t){const n=Sa();return yi.forEach(t,(t=>this.getOverlay(e,t).next((e=>{null!==e&&n.set(t,e)})))).next((()=>n))}saveOverlays(e,t,n){return n.forEach(((n,s)=>{this.ue(e,t,s)})),yi.resolve()}removeOverlaysForBatchId(e,t,n){const s=this.es.get(n);return void 0!==s&&(s.forEach((e=>this.overlays=this.overlays.remove(e))),this.es.delete(n)),yi.resolve()}getOverlaysForCollection(e,t,n){const s=Sa(),r=t.length+1,i=new hi(t.child("")),o=this.overlays.getIteratorFrom(i);for(;o.hasNext();){const e=o.getNext().value,i=e.getKey();if(!t.isPrefixOf(i.path))break;i.path.length===r&&e.largestBatchId>n&&s.set(e.getKey(),e)}return yi.resolve(s)}getOverlaysForCollectionGroup(e,t,n,s){let r=new Ei(((e,t)=>e-t));const i=this.overlays.getIterator();for(;i.hasNext();){const e=i.getNext().value;if(e.getKey().getCollectionGroup()===t&&e.largestBatchId>n){let t=r.get(e.largestBatchId);null===t&&(t=Sa(),r=r.insert(e.largestBatchId,t)),t.set(e.getKey(),e)}}const o=Sa(),a=r.getIterator();for(;a.hasNext()&&(a.getNext().value.forEach(((e,t)=>o.set(e,t))),!(o.size()>=s)););return yi.resolve(o)}ue(e,t,n){const s=this.overlays.get(n.key);if(null!==s){const e=this.es.get(s.largestBatchId).delete(n.key);this.es.set(s.largestBatchId,e)}this.overlays=this.overlays.insert(n.key,new vc(t,n));let r=this.es.get(t);void 0===r&&(r=Na(),this.es.set(t,r)),this.es.set(t,r.add(n.key))}}class Oc{constructor(){this.ns=new Si(Lc.ss),this.rs=new Si(Lc.os)}isEmpty(){return this.ns.isEmpty()}addReference(e,t){const n=new Lc(e,t);this.ns=this.ns.add(n),this.rs=this.rs.add(n)}us(e,t){e.forEach((e=>this.addReference(e,t)))}removeReference(e,t){this.cs(new Lc(e,t))}hs(e,t){e.forEach((e=>this.removeReference(e,t)))}ls(e){const t=new hi(new ci([])),n=new Lc(t,e),s=new Lc(t,e+1),r=[];return this.rs.forEachInRange([n,s],(e=>{this.cs(e),r.push(e.key)})),r}fs(){this.ns.forEach((e=>this.cs(e)))}cs(e){this.ns=this.ns.delete(e),this.rs=this.rs.delete(e)}ds(e){const t=new hi(new ci([])),n=new Lc(t,e),s=new Lc(t,e+1);let r=Na();return this.rs.forEachInRange([n,s],(e=>{r=r.add(e.key)})),r}containsKey(e){const t=new Lc(e,0),n=this.ns.firstAfterOrEqual(t);return null!==n&&e.isEqual(n.key)}}class Lc{constructor(e,t){this.key=e,this._s=t}static ss(e,t){return hi.comparator(e.key,t.key)||si(e._s,t._s)}static os(e,t){return si(e._s,t._s)||hi.comparator(e.key,t.key)}}class xc{constructor(e,t){this.indexManager=e,this.referenceDelegate=t,this.mutationQueue=[],this.ws=1,this.gs=new Si(Lc.ss)}checkEmpty(e){return yi.resolve(0===this.mutationQueue.length)}addMutationBatch(e,t,n,s){const r=this.ws;this.ws++,this.mutationQueue.length>0&&this.mutationQueue[this.mutationQueue.length-1];const i=new gc(r,t,n,s);this.mutationQueue.push(i);for(const t of s)this.gs=this.gs.add(new Lc(t.key,r)),this.indexManager.addToCollectionParentIndex(e,t.key.path.popLast());return yi.resolve(i)}lookupMutationBatch(e,t){return yi.resolve(this.ys(t))}getNextMutationBatchAfterBatchId(e,t){const n=t+1,s=this.ps(n),r=s<0?0:s;return yi.resolve(this.mutationQueue.length>r?this.mutationQueue[r]:null)}getHighestUnacknowledgedBatchId(){return yi.resolve(0===this.mutationQueue.length?-1:this.ws-1)}getAllMutationBatches(e){return yi.resolve(this.mutationQueue.slice())}getAllMutationBatchesAffectingDocumentKey(e,t){const n=new Lc(t,0),s=new Lc(t,Number.POSITIVE_INFINITY),r=[];return this.gs.forEachInRange([n,s],(e=>{const t=this.ys(e._s);r.push(t)})),yi.resolve(r)}getAllMutationBatchesAffectingDocumentKeys(e,t){let n=new Si(si);return t.forEach((e=>{const t=new Lc(e,0),s=new Lc(e,Number.POSITIVE_INFINITY);this.gs.forEachInRange([t,s],(e=>{n=n.add(e._s)}))})),yi.resolve(this.Is(n))}getAllMutationBatchesAffectingQuery(e,t){const n=t.path,s=n.length+1;let r=n;hi.isDocumentKey(r)||(r=r.child(""));const i=new Lc(new hi(r),0);let o=new Si(si);return this.gs.forEachWhile((e=>{const t=e.key.path;return!!n.isPrefixOf(t)&&(t.length===s&&(o=o.add(e._s)),!0)}),i),yi.resolve(this.Is(o))}Is(e){const t=[];return e.forEach((e=>{const n=this.ys(e);null!==n&&t.push(n)})),t}removeMutationBatch(e,t){jr(0===this.Ts(t.batchId,"removed")),this.mutationQueue.shift();let n=this.gs;return yi.forEach(t.mutations,(s=>{const r=new Lc(s.key,t.batchId);return n=n.delete(r),this.referenceDelegate.markPotentiallyOrphaned(e,s.key)})).next((()=>{this.gs=n}))}An(e){}containsKey(e,t){const n=new Lc(t,0),s=this.gs.firstAfterOrEqual(n);return yi.resolve(t.isEqual(s&&s.key))}performConsistencyCheck(e){return this.mutationQueue.length,yi.resolve()}Ts(e,t){return this.ps(e)}ps(e){return 0===this.mutationQueue.length?0:e-this.mutationQueue[0].batchId}ys(e){const t=this.ps(e);return t<0||t>=this.mutationQueue.length?null:this.mutationQueue[t]}}class Pc{constructor(e){this.Es=e,this.docs=new Ei(hi.comparator),this.size=0}setIndexManager(e){this.indexManager=e}addEntry(e,t){const n=t.key,s=this.docs.get(n),r=s?s.size:0,i=this.Es(t);return this.docs=this.docs.insert(n,{document:t.mutableCopy(),size:i}),this.size+=i-r,this.indexManager.addToCollectionParentIndex(e,n.path.popLast())}removeEntry(e){const t=this.docs.get(e);t&&(this.docs=this.docs.remove(e),this.size-=t.size)}getEntry(e,t){const n=this.docs.get(t);return yi.resolve(n?n.document.mutableCopy():ro.newInvalidDocument(t))}getEntries(e,t){let n=Ta();return t.forEach((e=>{const t=this.docs.get(e);n=n.insert(e,t?t.document.mutableCopy():ro.newInvalidDocument(e))})),yi.resolve(n)}getAllFromCollection(e,t,n){let s=Ta();const r=new hi(t.child("")),i=this.docs.getIteratorFrom(r);for(;i.hasNext();){const{key:e,value:{document:r}}=i.getNext();if(!t.isPrefixOf(e.path))break;e.path.length>t.length+1||pi(di(r),n)<=0||(s=s.insert(r.key,r.mutableCopy()))}return yi.resolve(s)}getAllFromCollectionGroup(e,t,n,s){$r()}As(e,t){return yi.forEach(this.docs,(e=>t(e)))}newChangeBuffer(e){return new Mc(this)}getSize(e){return yi.resolve(this.size)}}class Mc extends Cc{constructor(e){super(),this.Yn=e}applyChanges(e){const t=[];return this.changes.forEach(((n,s)=>{s.isValidDocument()?t.push(this.Yn.addEntry(e,s)):this.Yn.removeEntry(n)})),yi.waitFor(t)}getFromCache(e,t){return this.Yn.getEntry(e,t)}getAllFromCache(e,t){return this.Yn.getEntries(e,t)}}class Uc{constructor(e){this.persistence=e,this.Rs=new _a((e=>ao(e)),co),this.lastRemoteSnapshotVersion=oi.min(),this.highestTargetId=0,this.bs=0,this.Ps=new Oc,this.targetCount=0,this.vs=Sc.Pn()}forEachTarget(e,t){return this.Rs.forEach(((e,n)=>t(n))),yi.resolve()}getLastRemoteSnapshotVersion(e){return yi.resolve(this.lastRemoteSnapshotVersion)}getHighestSequenceNumber(e){return yi.resolve(this.bs)}allocateTargetId(e){return this.highestTargetId=this.vs.next(),yi.resolve(this.highestTargetId)}setTargetsMetadata(e,t,n){return n&&(this.lastRemoteSnapshotVersion=n),t>this.bs&&(this.bs=t),yi.resolve()}Dn(e){this.Rs.set(e.target,e);const t=e.targetId;t>this.highestTargetId&&(this.vs=new Sc(t),this.highestTargetId=t),e.sequenceNumber>this.bs&&(this.bs=e.sequenceNumber)}addTargetData(e,t){return this.Dn(t),this.targetCount+=1,yi.resolve()}updateTargetData(e,t){return this.Dn(t),yi.resolve()}removeTargetData(e,t){return this.Rs.delete(t.target),this.Ps.ls(t.targetId),this.targetCount-=1,yi.resolve()}removeTargets(e,t,n){let s=0;const r=[];return this.Rs.forEach(((i,o)=>{o.sequenceNumber<=t&&null===n.get(o.targetId)&&(this.Rs.delete(i),r.push(this.removeMatchingKeysForTargetId(e,o.targetId)),s++)})),yi.waitFor(r).next((()=>s))}getTargetCount(e){return yi.resolve(this.targetCount)}getTargetData(e,t){const n=this.Rs.get(t)||null;return yi.resolve(n)}addMatchingKeys(e,t,n){return this.Ps.us(t,n),yi.resolve()}removeMatchingKeys(e,t,n){this.Ps.hs(t,n);const s=this.persistence.referenceDelegate,r=[];return s&&t.forEach((t=>{r.push(s.markPotentiallyOrphaned(e,t))})),yi.waitFor(r)}removeMatchingKeysForTargetId(e,t){return this.Ps.ls(t),yi.resolve()}getMatchingKeysForTargetId(e,t){const n=this.Ps.ds(t);return yi.resolve(n)}containsKey(e,t){return yi.resolve(this.Ps.containsKey(t))}}class Fc{constructor(e,t){this.Vs={},this.overlays={},this.Ss=new wi(0),this.Ds=!1,this.Ds=!0,this.referenceDelegate=e(this),this.Cs=new Uc(this),this.indexManager=new Ec,this.remoteDocumentCache=function(e){return new Pc(e)}((e=>this.referenceDelegate.xs(e))),this.It=new _c(t),this.Ns=new Dc(this.It)}start(){return Promise.resolve()}shutdown(){return this.Ds=!1,Promise.resolve()}get started(){return this.Ds}setDatabaseDeletedListener(){}setNetworkEnabled(){}getIndexManager(e){return this.indexManager}getDocumentOverlayCache(e){let t=this.overlays[e.toKey()];return t||(t=new Nc,this.overlays[e.toKey()]=t),t}getMutationQueue(e,t){let n=this.Vs[e.toKey()];return n||(n=new xc(t,this.referenceDelegate),this.Vs[e.toKey()]=n),n}getTargetCache(){return this.Cs}getRemoteDocumentCache(){return this.remoteDocumentCache}getBundleCache(){return this.Ns}runTransaction(e,t,n){Ur("MemoryPersistence","Starting transaction:",e);const s=new Vc(this.Ss.next());return this.referenceDelegate.ks(),n(s).next((e=>this.referenceDelegate.Os(s).next((()=>e)))).toPromise().then((e=>(s.raiseOnCommittedEvent(),e)))}Ms(e,t){return yi.or(Object.values(this.Vs).map((n=>()=>n.containsKey(e,t))))}}class Vc extends mi{constructor(e){super(),this.currentSequenceNumber=e}}class Bc{constructor(e){this.persistence=e,this.Fs=new Oc,this.$s=null}static Bs(e){return new Bc(e)}get Ls(){if(this.$s)return this.$s;throw $r()}addReference(e,t,n){return this.Fs.addReference(n,t),this.Ls.delete(n.toString()),yi.resolve()}removeReference(e,t,n){return this.Fs.removeReference(n,t),this.Ls.add(n.toString()),yi.resolve()}markPotentiallyOrphaned(e,t){return this.Ls.add(t.toString()),yi.resolve()}removeTarget(e,t){this.Fs.ls(t.targetId).forEach((e=>this.Ls.add(e.toString())));const n=this.persistence.getTargetCache();return n.getMatchingKeysForTargetId(e,t.targetId).next((e=>{e.forEach((e=>this.Ls.add(e.toString())))})).next((()=>n.removeTargetData(e,t)))}ks(){this.$s=new Set}Os(e){const t=this.persistence.getRemoteDocumentCache().newChangeBuffer();return yi.forEach(this.Ls,(n=>{const s=hi.fromPath(n);return this.Us(e,s).next((e=>{e||t.removeEntry(s,oi.min())}))})).next((()=>(this.$s=null,t.apply(e))))}updateLimboDocument(e,t){return this.Us(e,t).next((e=>{e?this.Ls.delete(t.toString()):this.Ls.add(t.toString())}))}xs(e){return 0}Us(e,t){return yi.or([()=>yi.resolve(this.Fs.containsKey(t)),()=>this.persistence.getTargetCache().containsKey(e,t),()=>this.persistence.Ms(e,t)])}}class $c{constructor(e,t,n,s){this.targetId=e,this.fromCache=t,this.Si=n,this.Di=s}static Ci(e,t){let n=Na(),s=Na();for(const e of t.docChanges)switch(e.type){case 0:n=n.add(e.doc.key);break;case 1:s=s.add(e.doc.key)}return new $c(e,t.fromCache,n,s)}}class jc{constructor(){this.xi=!1}initialize(e,t){this.Ni=e,this.indexManager=t,this.xi=!0}getDocumentsMatchingQuery(e,t,n,s){return this.ki(e,t).next((r=>r||this.Oi(e,t,s,n))).next((n=>n||this.Mi(e,t)))}ki(e,t){if(Co(t))return yi.resolve(null);let n=No(t);return this.indexManager.getIndexType(e,n).next((s=>0===s?null:(null!==t.limit&&1===s&&(t=Oo(t,null,"F"),n=No(t)),this.indexManager.getDocumentsMatchingTarget(e,n).next((s=>{const r=Na(...s);return this.Ni.getDocuments(e,r).next((s=>this.indexManager.getMinOffset(e,n).next((n=>{const i=this.Fi(t,s);return this.$i(t,i,r,n.readTime)?this.ki(e,Oo(t,null,"F")):this.Bi(e,i,t,n)}))))})))))}Oi(e,t,n,s){return Co(t)||s.isEqual(oi.min())?this.Mi(e,t):this.Ni.getDocuments(e,n).next((r=>{const i=this.Fi(t,r);return this.$i(t,i,n,s)?this.Mi(e,t):(Mr()<=x.DEBUG&&Ur("QueryEngine","Re-using previous result from %s to execute query: %s",s.toString(),Po(t)),this.Bi(e,i,t,function(e,t){const n=e.toTimestamp().seconds,s=e.toTimestamp().nanoseconds+1,r=oi.fromTimestamp(1e9===s?new ii(n+1,0):new ii(n,s));return new fi(r,hi.empty(),t)}(s,-1)))}))}Fi(e,t){let n=new Si(Uo(e));return t.forEach(((t,s)=>{Mo(e,s)&&(n=n.add(s))})),n}$i(e,t,n,s){if(null===e.limit)return!1;if(n.size!==t.size)return!0;const r="F"===e.limitType?t.last():t.first();return!!r&&(r.hasPendingWrites||r.version.compareTo(s)>0)}Mi(e,t){return Mr()<=x.DEBUG&&Ur("QueryEngine","Using full collection scan to execute query:",Po(t)),this.Ni.getDocumentsMatchingQuery(e,t,fi.min())}Bi(e,t,n,s){return this.Ni.getDocumentsMatchingQuery(e,n,s).next((e=>(t.forEach((t=>{e=e.insert(t.key,t)})),e)))}}class qc{constructor(e,t,n,s){this.persistence=e,this.Li=t,this.It=s,this.Ui=new Ei(si),this.qi=new _a((e=>ao(e)),co),this.Ki=new Map,this.Gi=e.getRemoteDocumentCache(),this.Cs=e.getTargetCache(),this.Ns=e.getBundleCache(),this.Qi(n)}Qi(e){this.documentOverlayCache=this.persistence.getDocumentOverlayCache(e),this.indexManager=this.persistence.getIndexManager(e),this.mutationQueue=this.persistence.getMutationQueue(e,this.indexManager),this.localDocuments=new Rc(this.Gi,this.mutationQueue,this.documentOverlayCache,this.indexManager),this.Gi.setIndexManager(this.indexManager),this.Li.initialize(this.localDocuments,this.indexManager)}collectGarbage(e){return this.persistence.runTransaction("Collect garbage","readwrite-primary",(t=>e.collect(t,this.Ui)))}}async function zc(e,t){const n=qr(e);return await n.persistence.runTransaction("Handle user change","readonly",(e=>{let s;return n.mutationQueue.getAllMutationBatches(e).next((r=>(s=r,n.Qi(t),n.mutationQueue.getAllMutationBatches(e)))).next((t=>{const r=[],i=[];let o=Na();for(const e of s){r.push(e.batchId);for(const t of e.mutations)o=o.add(t.key)}for(const e of t){i.push(e.batchId);for(const t of e.mutations)o=o.add(t.key)}return n.localDocuments.getDocuments(e,o).next((e=>({ji:e,removedBatchIds:r,addedBatchIds:i})))}))}))}function Hc(e){const t=qr(e);return t.persistence.runTransaction("Get last remote snapshot version","readonly",(e=>t.Cs.getLastRemoteSnapshotVersion(e)))}function Kc(e,t){const n=qr(e);return n.persistence.runTransaction("Get next mutation batch","readonly",(e=>(void 0===t&&(t=-1),n.mutationQueue.getNextMutationBatchAfterBatchId(e,t))))}async function Gc(e,t,n){const s=qr(e),r=s.Ui.get(t),i=n?"readwrite":"readwrite-primary";try{n||await s.persistence.runTransaction("Release target",i,(e=>s.persistence.referenceDelegate.removeTarget(e,r)))}catch(e){if(!vi(e))throw e;Ur("LocalStore",`Failed to update sequence numbers for target ${t}: ${e}`)}s.Ui=s.Ui.remove(t),s.qi.delete(r.target)}function Wc(e,t,n){const s=qr(e);let r=oi.min(),i=Na();return s.persistence.runTransaction("Execute query","readonly",(e=>function(e,t,n){const s=qr(e),r=s.qi.get(n);return void 0!==r?yi.resolve(s.Ui.get(r)):s.Cs.getTargetData(t,n)}(s,e,No(t)).next((t=>{if(t)return r=t.lastLimboFreeSnapshotVersion,s.Cs.getMatchingKeysForTargetId(e,t.targetId).next((e=>{i=e}))})).next((()=>s.Li.getDocumentsMatchingQuery(e,t,n?r:oi.min(),n?i:Na()))).next((e=>(function(e,t,n){let s=e.Ki.get(t)||oi.min();n.forEach(((e,t)=>{t.readTime.compareTo(s)>0&&(s=t.readTime)})),e.Ki.set(t,s)}(s,function(e){return e.collectionGroup||(e.path.length%2==1?e.path.lastSegment():e.path.get(e.path.length-2))}(t),e),{documents:e,Hi:i})))))}class Qc{constructor(){this.activeTargetIds=La()}er(e){this.activeTargetIds=this.activeTargetIds.add(e)}nr(e){this.activeTargetIds=this.activeTargetIds.delete(e)}tr(){const e={activeTargetIds:this.activeTargetIds.toArray(),updateTimeMs:Date.now()};return JSON.stringify(e)}}class Xc{constructor(){this.Lr=new Qc,this.Ur={},this.onlineStateHandler=null,this.sequenceNumberHandler=null}addPendingMutation(e){}updateMutationState(e,t,n){}addLocalQueryTarget(e){return this.Lr.er(e),this.Ur[e]||"not-current"}updateQueryState(e,t,n){this.Ur[e]=t}removeLocalQueryTarget(e){this.Lr.nr(e)}isLocalQueryTarget(e){return this.Lr.activeTargetIds.has(e)}clearQueryState(e){delete this.Ur[e]}getAllActiveQueryTargets(){return this.Lr.activeTargetIds}isActiveQueryTarget(e){return this.Lr.activeTargetIds.has(e)}start(){return this.Lr=new Qc,Promise.resolve()}handleUserChange(e,t,n){}setOnlineState(e){}shutdown(){}writeSequenceNumber(e){}notifyBundleLoaded(e){}}class Yc{qr(e){}shutdown(){}}class Jc{constructor(){this.Kr=()=>this.Gr(),this.Qr=()=>this.jr(),this.Wr=[],this.zr()}qr(e){this.Wr.push(e)}shutdown(){window.removeEventListener("online",this.Kr),window.removeEventListener("offline",this.Qr)}zr(){window.addEventListener("online",this.Kr),window.addEventListener("offline",this.Qr)}Gr(){Ur("ConnectivityMonitor","Network connectivity changed: AVAILABLE");for(const e of this.Wr)e(0)}jr(){Ur("ConnectivityMonitor","Network connectivity changed: UNAVAILABLE");for(const e of this.Wr)e(1)}static C(){return"undefined"!=typeof window&&void 0!==window.addEventListener&&void 0!==window.removeEventListener}}const Zc={BatchGetDocuments:"batchGet",Commit:"commit",RunQuery:"runQuery",RunAggregationQuery:"runAggregationQuery"};class eu{constructor(e){this.Hr=e.Hr,this.Jr=e.Jr}Yr(e){this.Xr=e}Zr(e){this.eo=e}onMessage(e){this.no=e}close(){this.Jr()}send(e){this.Hr(e)}so(){this.Xr()}io(e){this.eo(e)}ro(e){this.no(e)}}class tu extends class{constructor(e){this.databaseInfo=e,this.databaseId=e.databaseId;const t=e.ssl?"https":"http";this.oo=t+"://"+e.host,this.uo="projects/"+this.databaseId.projectId+"/databases/"+this.databaseId.database+"/documents"}get co(){return!1}ao(e,t,n,s,r){const i=this.ho(e,t);Ur("RestConnection","Sending: ",i,n);const o={};return this.lo(o,s,r),this.fo(e,i,o,n).then((e=>(Ur("RestConnection","Received: ",e),e)),(t=>{throw Vr("RestConnection",`${e} failed with error: `,t,"url: ",i,"request:",n),t}))}_o(e,t,n,s,r,i){return this.ao(e,t,n,s,r)}lo(e,t,n){e["X-Goog-Api-Client"]="gl-js/ fire/"+xr,e["Content-Type"]="text/plain",this.databaseInfo.appId&&(e["X-Firebase-GMPID"]=this.databaseInfo.appId),t&&t.headers.forEach(((t,n)=>e[n]=t)),n&&n.headers.forEach(((t,n)=>e[n]=t))}ho(e,t){const n=Zc[e];return`${this.oo}/v1/${t}:${n}`}}{constructor(e){super(e),this.forceLongPolling=e.forceLongPolling,this.autoDetectLongPolling=e.autoDetectLongPolling,this.useFetchStreams=e.useFetchStreams}fo(e,t,n,s){return new Promise(((r,i)=>{const o=new Nr;o.setWithCredentials(!0),o.listenOnce(Sr.COMPLETE,(()=>{var t;try{switch(o.getLastErrorCode()){case kr.NO_ERROR:const n=o.getResponseJson();Ur("Connection","XHR received:",JSON.stringify(n)),r(n);break;case kr.TIMEOUT:Ur("Connection",'RPC "'+e+'" timed out'),i(new Hr(zr.DEADLINE_EXCEEDED,"Request time out"));break;case kr.HTTP_ERROR:const s=o.getStatus();if(Ur("Connection",'RPC "'+e+'" failed with status:',s,"response text:",o.getResponseText()),s>0){let e=o.getResponseJson();Array.isArray(e)&&(e=e[0]);const n=null===(t=e)||void 0===t?void 0:t.error;if(n&&n.status&&n.message){const e=function(e){const t=e.toLowerCase().replace(/_/g,"-");return Object.values(zr).indexOf(t)>=0?t:zr.UNKNOWN}(n.status);i(new Hr(e,n.message))}else i(new Hr(zr.UNKNOWN,"Server responded with status "+o.getStatus()))}else i(new Hr(zr.UNAVAILABLE,"Connection failed."));break;default:$r()}}finally{Ur("Connection",'RPC "'+e+'" completed.')}}));const a=JSON.stringify(s);o.send(t,"POST",a,n,15)}))}wo(e,t,n){const s=[this.oo,"/","google.firestore.v1.Firestore","/",e,"/channel"],r=Er(),i=Ir(),o={httpSessionIdParam:"gsessionid",initMessageHeaders:{},messageUrlParams:{database:`projects/${this.databaseId.projectId}/databases/${this.databaseId.database}`},sendRawJson:!0,supportsCrossDomainXhr:!0,internalChannelParams:{forwardChannelRequestTimeoutMs:6e5},forceLongPolling:this.forceLongPolling,detectBufferingProxy:this.autoDetectLongPolling};this.useFetchStreams&&(o.xmlHttpFactory=new Rr({})),this.lo(o.initMessageHeaders,t,n),o.encodeInitMessageHeaders=!0;const a=s.join("");Ur("Connection","Creating WebChannel: "+a,o);const c=r.createWebChannel(a,o);let u=!1,l=!1;const h=new eu({Hr:e=>{l?Ur("Connection","Not sending because WebChannel is closed:",e):(u||(Ur("Connection","Opening WebChannel transport."),c.open(),u=!0),Ur("Connection","WebChannel sending:",e),c.send(e))},Jr:()=>c.close()}),d=(e,t,n)=>{e.listen(t,(e=>{try{n(e)}catch(e){setTimeout((()=>{throw e}),0)}}))};return d(c,Dr.EventType.OPEN,(()=>{l||Ur("Connection","WebChannel transport opened.")})),d(c,Dr.EventType.CLOSE,(()=>{l||(l=!0,Ur("Connection","WebChannel transport closed"),h.io())})),d(c,Dr.EventType.ERROR,(e=>{l||(l=!0,Vr("Connection","WebChannel transport errored:",e),h.io(new Hr(zr.UNAVAILABLE,"The operation could not be completed")))})),d(c,Dr.EventType.MESSAGE,(e=>{var t;if(!l){const n=e.data[0];jr(!!n);const s=n,r=s.error||(null===(t=s[0])||void 0===t?void 0:t.error);if(r){Ur("Connection","WebChannel received error:",r);const e=r.status;let t=function(e){const t=ya[e];if(void 0!==t)return wa(t)}(e),n=r.message;void 0===t&&(t=zr.INTERNAL,n="Unknown error status: "+e+" with message "+r.message),l=!0,h.io(new Hr(t,n)),c.close()}else Ur("Connection","WebChannel received:",n),h.ro(n)}})),d(i,Cr.STAT_EVENT,(e=>{e.stat===Ar.PROXY?Ur("Connection","Detected buffering proxy"):e.stat===Ar.NOPROXY&&Ur("Connection","Detected no buffering proxy")})),setTimeout((()=>{h.so()}),0),h}}function nu(){return"undefined"!=typeof document?document:null}function su(e){return new Ha(e,!0)}class ru{constructor(e,t,n=1e3,s=1.5,r=6e4){this.Hs=e,this.timerId=t,this.mo=n,this.yo=s,this.po=r,this.Io=0,this.To=null,this.Eo=Date.now(),this.reset()}reset(){this.Io=0}Ao(){this.Io=this.po}Ro(e){this.cancel();const t=Math.floor(this.Io+this.bo()),n=Math.max(0,Date.now()-this.Eo),s=Math.max(0,t-n);s>0&&Ur("ExponentialBackoff",`Backing off for ${s} ms (base delay: ${this.Io} ms, delay with jitter: ${t} ms, last attempt: ${n} ms ago)`),this.To=this.Hs.enqueueAfterDelay(this.timerId,s,(()=>(this.Eo=Date.now(),e()))),this.Io*=this.yo,this.Iothis.po&&(this.Io=this.po)}Po(){null!==this.To&&(this.To.skipDelay(),this.To=null)}cancel(){null!==this.To&&(this.To.cancel(),this.To=null)}bo(){return(Math.random()-.5)*this.Io}}class iu{constructor(e,t,n,s,r,i,o,a){this.Hs=e,this.vo=n,this.Vo=s,this.connection=r,this.authCredentialsProvider=i,this.appCheckCredentialsProvider=o,this.listener=a,this.state=0,this.So=0,this.Do=null,this.Co=null,this.stream=null,this.xo=new ru(e,t)}No(){return 1===this.state||5===this.state||this.ko()}ko(){return 2===this.state||3===this.state}start(){4!==this.state?this.auth():this.Oo()}async stop(){this.No()&&await this.close(0)}Mo(){this.state=0,this.xo.reset()}Fo(){this.ko()&&null===this.Do&&(this.Do=this.Hs.enqueueAfterDelay(this.vo,6e4,(()=>this.$o())))}Bo(e){this.Lo(),this.stream.send(e)}async $o(){if(this.ko())return this.close(0)}Lo(){this.Do&&(this.Do.cancel(),this.Do=null)}Uo(){this.Co&&(this.Co.cancel(),this.Co=null)}async close(e,t){this.Lo(),this.Uo(),this.xo.cancel(),this.So++,4!==e?this.xo.reset():t&&t.code===zr.RESOURCE_EXHAUSTED?(Fr(t.toString()),Fr("Using maximum backoff delay to prevent overloading the backend."),this.xo.Ao()):t&&t.code===zr.UNAUTHENTICATED&&3!==this.state&&(this.authCredentialsProvider.invalidateToken(),this.appCheckCredentialsProvider.invalidateToken()),null!==this.stream&&(this.qo(),this.stream.close(),this.stream=null),this.state=e,await this.listener.Zr(t)}qo(){}auth(){this.state=1;const e=this.Ko(this.So),t=this.So;Promise.all([this.authCredentialsProvider.getToken(),this.appCheckCredentialsProvider.getToken()]).then((([e,n])=>{this.So===t&&this.Go(e,n)}),(t=>{e((()=>{const e=new Hr(zr.UNKNOWN,"Fetching auth token failed: "+t.message);return this.Qo(e)}))}))}Go(e,t){const n=this.Ko(this.So);this.stream=this.jo(e,t),this.stream.Yr((()=>{n((()=>(this.state=2,this.Co=this.Hs.enqueueAfterDelay(this.Vo,1e4,(()=>(this.ko()&&(this.state=3),Promise.resolve()))),this.listener.Yr())))})),this.stream.Zr((e=>{n((()=>this.Qo(e)))})),this.stream.onMessage((e=>{n((()=>this.onMessage(e)))}))}Oo(){this.state=5,this.xo.Ro((async()=>{this.state=0,this.start()}))}Qo(e){return Ur("PersistentStream",`close with error: ${e}`),this.stream=null,this.close(4,e)}Ko(e){return t=>{this.Hs.enqueueAndForget((()=>this.So===e?t():(Ur("PersistentStream","stream callback skipped by getCloseGuardedDispatcher."),Promise.resolve())))}}}class ou extends iu{constructor(e,t,n,s,r,i){super(e,"listen_stream_connection_backoff","listen_stream_idle","health_check_timeout",t,n,s,i),this.It=r}jo(e,t){return this.connection.wo("Listen",e,t)}onMessage(e){this.xo.reset();const t=function(e,t){let n;if("targetChange"in t){t.targetChange;const s=function(e){return"NO_CHANGE"===e?0:"ADD"===e?1:"REMOVE"===e?2:"CURRENT"===e?3:"RESET"===e?4:$r()}(t.targetChange.targetChangeType||"NO_CHANGE"),r=t.targetChange.targetIds||[],i=function(e,t){return e.gt?(jr(void 0===t||"string"==typeof t),Ri.fromBase64String(t||"")):(jr(void 0===t||t instanceof Uint8Array),Ri.fromUint8Array(t||new Uint8Array))}(e,t.targetChange.resumeToken),o=t.targetChange.cause,a=o&&function(e){const t=void 0===e.code?zr.UNKNOWN:wa(e.code);return new Hr(t,e.message||"")}(o);n=new Fa(s,r,i,a||null)}else if("documentChange"in t){t.documentChange;const s=t.documentChange;s.document,s.document.name,s.document.updateTime;const r=Za(e,s.document.name),i=Qa(s.document.updateTime),o=new no({mapValue:{fields:s.document.fields}}),a=ro.newFoundDocument(r,i,o),c=s.targetIds||[],u=s.removedTargetIds||[];n=new Ma(c,u,a.key,a)}else if("documentDelete"in t){t.documentDelete;const s=t.documentDelete;s.document;const r=Za(e,s.document),i=s.readTime?Qa(s.readTime):oi.min(),o=ro.newNoDocument(r,i),a=s.removedTargetIds||[];n=new Ma([],a,o.key,o)}else if("documentRemove"in t){t.documentRemove;const s=t.documentRemove;s.document;const r=Za(e,s.document),i=s.removedTargetIds||[];n=new Ma([],i,r,null)}else{if(!("filter"in t))return $r();{t.filter;const e=t.filter;e.targetId;const s=e.count||0,r=new ga(s),i=e.targetId;n=new Ua(i,r)}}return n}(this.It,e),n=function(e){if(!("targetChange"in e))return oi.min();const t=e.targetChange;return t.targetIds&&t.targetIds.length?oi.min():t.readTime?Qa(t.readTime):oi.min()}(e);return this.listener.Wo(t,n)}zo(e){const t={};t.database=tc(this.It),t.addTarget=function(e,t){let n;const s=t.target;return n=uo(s)?{documents:rc(e,s)}:{query:ic(e,s)},n.targetId=t.targetId,t.resumeToken.approximateByteSize()>0?n.resumeToken=Ga(e,t.resumeToken):t.snapshotVersion.compareTo(oi.min())>0&&(n.readTime=Ka(e,t.snapshotVersion.toTimestamp())),n}(this.It,e);const n=function(e,t){const n=function(e,t){switch(t){case 0:return null;case 1:return"existence-filter-mismatch";case 2:return"limbo-document";default:return $r()}}(0,t.purpose);return null==n?null:{"goog-listen-tags":n}}(this.It,e);n&&(t.labels=n),this.Bo(t)}Ho(e){const t={};t.database=tc(this.It),t.removeTarget=e,this.Bo(t)}}class au extends iu{constructor(e,t,n,s,r,i){super(e,"write_stream_connection_backoff","write_stream_idle","health_check_timeout",t,n,s,i),this.It=r,this.Jo=!1}get Yo(){return this.Jo}start(){this.Jo=!1,this.lastStreamToken=void 0,super.start()}qo(){this.Jo&&this.Xo([])}jo(e,t){return this.connection.wo("Write",e,t)}onMessage(e){if(jr(!!e.streamToken),this.lastStreamToken=e.streamToken,this.Jo){this.xo.reset();const t=function(e,t){return e&&e.length>0?(jr(void 0!==t),e.map((e=>function(e,t){let n=e.updateTime?Qa(e.updateTime):Qa(t);return n.isEqual(oi.min())&&(n=Qa(t)),new ea(n,e.transformResults||[])}(e,t)))):[]}(e.writeResults,e.commitTime),n=Qa(e.commitTime);return this.listener.Zo(n,t)}return jr(!e.writeResults||0===e.writeResults.length),this.Jo=!0,this.listener.tu()}eu(){const e={};e.database=tc(this.It),this.Bo(e)}Xo(e){const t={streamToken:this.lastStreamToken,writes:e.map((e=>function(e,t){let n;if(t instanceof ua)n={update:sc(e,t.key,t.value)};else if(t instanceof pa)n={delete:Ja(e,t.key)};else if(t instanceof la)n={update:sc(e,t.key,t.data),updateMask:pc(t.fieldMask)};else{if(!(t instanceof ma))return $r();n={verify:Ja(e,t.key)}}return t.fieldTransforms.length>0&&(n.updateTransforms=t.fieldTransforms.map((e=>function(e,t){const n=t.transform;if(n instanceof Ko)return{fieldPath:t.field.canonicalString(),setToServerValue:"REQUEST_TIME"};if(n instanceof Go)return{fieldPath:t.field.canonicalString(),appendMissingElements:{values:n.elements}};if(n instanceof Qo)return{fieldPath:t.field.canonicalString(),removeAllFromArray:{values:n.elements}};if(n instanceof Yo)return{fieldPath:t.field.canonicalString(),increment:n.yt};throw $r()}(0,e)))),t.precondition.isNone||(n.currentDocument=function(e,t){return void 0!==t.updateTime?{updateTime:Wa(e,t.updateTime)}:void 0!==t.exists?{exists:t.exists}:$r()}(e,t.precondition)),n}(this.It,e)))};this.Bo(t)}}class cu extends class{}{constructor(e,t,n,s){super(),this.authCredentials=e,this.appCheckCredentials=t,this.connection=n,this.It=s,this.nu=!1}su(){if(this.nu)throw new Hr(zr.FAILED_PRECONDITION,"The client has already been terminated.")}ao(e,t,n){return this.su(),Promise.all([this.authCredentials.getToken(),this.appCheckCredentials.getToken()]).then((([s,r])=>this.connection.ao(e,t,n,s,r))).catch((e=>{throw"FirebaseError"===e.name?(e.code===zr.UNAUTHENTICATED&&(this.authCredentials.invalidateToken(),this.appCheckCredentials.invalidateToken()),e):new Hr(zr.UNKNOWN,e.toString())}))}_o(e,t,n,s){return this.su(),Promise.all([this.authCredentials.getToken(),this.appCheckCredentials.getToken()]).then((([r,i])=>this.connection._o(e,t,n,r,i,s))).catch((e=>{throw"FirebaseError"===e.name?(e.code===zr.UNAUTHENTICATED&&(this.authCredentials.invalidateToken(),this.appCheckCredentials.invalidateToken()),e):new Hr(zr.UNKNOWN,e.toString())}))}terminate(){this.nu=!0}}class uu{constructor(e,t){this.asyncQueue=e,this.onlineStateHandler=t,this.state="Unknown",this.iu=0,this.ru=null,this.ou=!0}uu(){0===this.iu&&(this.cu("Unknown"),this.ru=this.asyncQueue.enqueueAfterDelay("online_state_timeout",1e4,(()=>(this.ru=null,this.au("Backend didn't respond within 10 seconds."),this.cu("Offline"),Promise.resolve()))))}hu(e){"Online"===this.state?this.cu("Unknown"):(this.iu++,this.iu>=1&&(this.lu(),this.au(`Connection failed 1 times. Most recent error: ${e.toString()}`),this.cu("Offline")))}set(e){this.lu(),this.iu=0,"Online"===e&&(this.ou=!1),this.cu(e)}cu(e){e!==this.state&&(this.state=e,this.onlineStateHandler(e))}au(e){const t=`Could not reach Cloud Firestore backend. ${e}\nThis typically indicates that your device does not have a healthy Internet connection at the moment. The client will operate in offline mode until it is able to successfully connect to the backend.`;this.ou?(Fr(t),this.ou=!1):Ur("OnlineStateTracker",t)}lu(){null!==this.ru&&(this.ru.cancel(),this.ru=null)}}class lu{constructor(e,t,n,s,r){this.localStore=e,this.datastore=t,this.asyncQueue=n,this.remoteSyncer={},this.fu=[],this.du=new Map,this._u=new Set,this.wu=[],this.mu=r,this.mu.qr((e=>{n.enqueueAndForget((async()=>{wu(this)&&(Ur("RemoteStore","Restarting streams for network reachability change."),await async function(e){const t=qr(e);t._u.add(4),await du(t),t.gu.set("Unknown"),t._u.delete(4),await hu(t)}(this))}))})),this.gu=new uu(n,s)}}async function hu(e){if(wu(e))for(const t of e.wu)await t(!0)}async function du(e){for(const t of e.wu)await t(!1)}function fu(e,t){const n=qr(e);n.du.has(t.targetId)||(n.du.set(t.targetId,t),vu(n)?yu(n):Mu(n).ko()&&mu(n,t))}function pu(e,t){const n=qr(e),s=Mu(n);n.du.delete(t),s.ko()&&gu(n,t),0===n.du.size&&(s.ko()?s.Fo():wu(n)&&n.gu.set("Unknown"))}function mu(e,t){e.yu.Mt(t.targetId),Mu(e).zo(t)}function gu(e,t){e.yu.Mt(t),Mu(e).Ho(t)}function yu(e){e.yu=new Ba({getRemoteKeysForTarget:t=>e.remoteSyncer.getRemoteKeysForTarget(t),se:t=>e.du.get(t)||null}),Mu(e).start(),e.gu.uu()}function vu(e){return wu(e)&&!Mu(e).No()&&e.du.size>0}function wu(e){return 0===qr(e)._u.size}function _u(e){e.yu=void 0}async function bu(e){e.du.forEach(((t,n)=>{mu(e,t)}))}async function Tu(e,t){_u(e),vu(e)?(e.gu.hu(t),yu(e)):e.gu.set("Unknown")}async function Eu(e,t,n){if(e.gu.set("Online"),t instanceof Fa&&2===t.state&&t.cause)try{await async function(e,t){const n=t.cause;for(const s of t.targetIds)e.du.has(s)&&(await e.remoteSyncer.rejectListen(s,n),e.du.delete(s),e.yu.removeTarget(s))}(e,t)}catch(n){Ur("RemoteStore","Failed to remove targets %s: %s ",t.targetIds.join(","),n),await Iu(e,n)}else if(t instanceof Ma?e.yu.Gt(t):t instanceof Ua?e.yu.Yt(t):e.yu.Wt(t),!n.isEqual(oi.min()))try{const t=await Hc(e.localStore);n.compareTo(t)>=0&&await function(e,t){const n=e.yu.te(t);return n.targetChanges.forEach(((n,s)=>{if(n.resumeToken.approximateByteSize()>0){const r=e.du.get(s);r&&e.du.set(s,r.withResumeToken(n.resumeToken,t))}})),n.targetMismatches.forEach((t=>{const n=e.du.get(t);if(!n)return;e.du.set(t,n.withResumeToken(Ri.EMPTY_BYTE_STRING,n.snapshotVersion)),gu(e,t);const s=new wc(n.target,t,1,n.sequenceNumber);mu(e,s)})),e.remoteSyncer.applyRemoteEvent(n)}(e,n)}catch(t){Ur("RemoteStore","Failed to raise snapshot:",t),await Iu(e,t)}}async function Iu(e,t,n){if(!vi(t))throw t;e._u.add(1),await du(e),e.gu.set("Offline"),n||(n=()=>Hc(e.localStore)),e.asyncQueue.enqueueRetryable((async()=>{Ur("RemoteStore","Retrying IndexedDB access"),await n(),e._u.delete(1),await hu(e)}))}function ku(e,t){return t().catch((n=>Iu(e,n,t)))}async function Su(e){const t=qr(e),n=Uu(t);let s=t.fu.length>0?t.fu[t.fu.length-1].batchId:-1;for(;Cu(t);)try{const e=await Kc(t.localStore,s);if(null===e){0===t.fu.length&&n.Fo();break}s=e.batchId,Au(t,e)}catch(e){await Iu(t,e)}Ru(t)&&Du(t)}function Cu(e){return wu(e)&&e.fu.length<10}function Au(e,t){e.fu.push(t);const n=Uu(e);n.ko()&&n.Yo&&n.Xo(t.mutations)}function Ru(e){return wu(e)&&!Uu(e).No()&&e.fu.length>0}function Du(e){Uu(e).start()}async function Nu(e){Uu(e).eu()}async function Ou(e){const t=Uu(e);for(const n of e.fu)t.Xo(n.mutations)}async function Lu(e,t,n){const s=e.fu.shift(),r=yc.from(s,t,n);await ku(e,(()=>e.remoteSyncer.applySuccessfulWrite(r))),await Su(e)}async function xu(e,t){t&&Uu(e).Yo&&await async function(e,t){if(function(e){switch(e){default:return $r();case zr.CANCELLED:case zr.UNKNOWN:case zr.DEADLINE_EXCEEDED:case zr.RESOURCE_EXHAUSTED:case zr.INTERNAL:case zr.UNAVAILABLE:case zr.UNAUTHENTICATED:return!1;case zr.INVALID_ARGUMENT:case zr.NOT_FOUND:case zr.ALREADY_EXISTS:case zr.PERMISSION_DENIED:case zr.FAILED_PRECONDITION:case zr.ABORTED:case zr.OUT_OF_RANGE:case zr.UNIMPLEMENTED:case zr.DATA_LOSS:return!0}}(n=t.code)&&n!==zr.ABORTED){const n=e.fu.shift();Uu(e).Mo(),await ku(e,(()=>e.remoteSyncer.rejectFailedWrite(n.batchId,t))),await Su(e)}var n}(e,t),Ru(e)&&Du(e)}async function Pu(e,t){const n=qr(e);n.asyncQueue.verifyOperationInProgress(),Ur("RemoteStore","RemoteStore received new credentials");const s=wu(n);n._u.add(3),await du(n),s&&n.gu.set("Unknown"),await n.remoteSyncer.handleCredentialChange(t),n._u.delete(3),await hu(n)}function Mu(e){return e.pu||(e.pu=function(e,t,n){const s=qr(e);return s.su(),new ou(t,s.connection,s.authCredentials,s.appCheckCredentials,s.It,n)}(e.datastore,e.asyncQueue,{Yr:bu.bind(null,e),Zr:Tu.bind(null,e),Wo:Eu.bind(null,e)}),e.wu.push((async t=>{t?(e.pu.Mo(),vu(e)?yu(e):e.gu.set("Unknown")):(await e.pu.stop(),_u(e))}))),e.pu}function Uu(e){return e.Iu||(e.Iu=function(e,t,n){const s=qr(e);return s.su(),new au(t,s.connection,s.authCredentials,s.appCheckCredentials,s.It,n)}(e.datastore,e.asyncQueue,{Yr:Nu.bind(null,e),Zr:xu.bind(null,e),tu:Ou.bind(null,e),Zo:Lu.bind(null,e)}),e.wu.push((async t=>{t?(e.Iu.Mo(),await Su(e)):(await e.Iu.stop(),e.fu.length>0&&(Ur("RemoteStore",`Stopping write stream with ${e.fu.length} pending writes`),e.fu=[]))}))),e.Iu}class Fu{constructor(e,t,n,s,r){this.asyncQueue=e,this.timerId=t,this.targetTimeMs=n,this.op=s,this.removalCallback=r,this.deferred=new Kr,this.then=this.deferred.promise.then.bind(this.deferred.promise),this.deferred.promise.catch((e=>{}))}static createAndSchedule(e,t,n,s,r){const i=Date.now()+n,o=new Fu(e,t,i,s,r);return o.start(n),o}start(e){this.timerHandle=setTimeout((()=>this.handleDelayElapsed()),e)}skipDelay(){return this.handleDelayElapsed()}cancel(e){null!==this.timerHandle&&(this.clearTimeout(),this.deferred.reject(new Hr(zr.CANCELLED,"Operation cancelled"+(e?": "+e:""))))}handleDelayElapsed(){this.asyncQueue.enqueueAndForget((()=>null!==this.timerHandle?(this.clearTimeout(),this.op().then((e=>this.deferred.resolve(e)))):Promise.resolve()))}clearTimeout(){null!==this.timerHandle&&(this.removalCallback(this),clearTimeout(this.timerHandle),this.timerHandle=null)}}function Vu(e,t){if(Fr("AsyncQueue",`${t}: ${e}`),vi(e))return new Hr(zr.UNAVAILABLE,`${t}: ${e}`);throw e}class Bu{constructor(e){this.comparator=e?(t,n)=>e(t,n)||hi.comparator(t.key,n.key):(e,t)=>hi.comparator(e.key,t.key),this.keyedMap=Ia(),this.sortedSet=new Ei(this.comparator)}static emptySet(e){return new Bu(e.comparator)}has(e){return null!=this.keyedMap.get(e)}get(e){return this.keyedMap.get(e)}first(){return this.sortedSet.minKey()}last(){return this.sortedSet.maxKey()}isEmpty(){return this.sortedSet.isEmpty()}indexOf(e){const t=this.keyedMap.get(e);return t?this.sortedSet.indexOf(t):-1}get size(){return this.sortedSet.size}forEach(e){this.sortedSet.inorderTraversal(((t,n)=>(e(t),!1)))}add(e){const t=this.delete(e.key);return t.copy(t.keyedMap.insert(e.key,e),t.sortedSet.insert(e,null))}delete(e){const t=this.get(e);return t?this.copy(this.keyedMap.remove(e),this.sortedSet.remove(t)):this}isEqual(e){if(!(e instanceof Bu))return!1;if(this.size!==e.size)return!1;const t=this.sortedSet.getIterator(),n=e.sortedSet.getIterator();for(;t.hasNext();){const e=t.getNext().key,s=n.getNext().key;if(!e.isEqual(s))return!1}return!0}toString(){const e=[];return this.forEach((t=>{e.push(t.toString())})),0===e.length?"DocumentSet ()":"DocumentSet (\n "+e.join(" \n")+"\n)"}copy(e,t){const n=new Bu;return n.comparator=this.comparator,n.keyedMap=e,n.sortedSet=t,n}}class $u{constructor(){this.Tu=new Ei(hi.comparator)}track(e){const t=e.doc.key,n=this.Tu.get(t);n?0!==e.type&&3===n.type?this.Tu=this.Tu.insert(t,e):3===e.type&&1!==n.type?this.Tu=this.Tu.insert(t,{type:n.type,doc:e.doc}):2===e.type&&2===n.type?this.Tu=this.Tu.insert(t,{type:2,doc:e.doc}):2===e.type&&0===n.type?this.Tu=this.Tu.insert(t,{type:0,doc:e.doc}):1===e.type&&0===n.type?this.Tu=this.Tu.remove(t):1===e.type&&2===n.type?this.Tu=this.Tu.insert(t,{type:1,doc:n.doc}):0===e.type&&1===n.type?this.Tu=this.Tu.insert(t,{type:2,doc:e.doc}):$r():this.Tu=this.Tu.insert(t,e)}Eu(){const e=[];return this.Tu.inorderTraversal(((t,n)=>{e.push(n)})),e}}class ju{constructor(e,t,n,s,r,i,o,a,c){this.query=e,this.docs=t,this.oldDocs=n,this.docChanges=s,this.mutatedKeys=r,this.fromCache=i,this.syncStateChanged=o,this.excludesMetadataChanges=a,this.hasCachedResults=c}static fromInitialDocuments(e,t,n,s,r){const i=[];return t.forEach((e=>{i.push({type:0,doc:e})})),new ju(e,t,Bu.emptySet(t),i,n,s,!0,!1,r)}get hasPendingWrites(){return!this.mutatedKeys.isEmpty()}isEqual(e){if(!(this.fromCache===e.fromCache&&this.hasCachedResults===e.hasCachedResults&&this.syncStateChanged===e.syncStateChanged&&this.mutatedKeys.isEqual(e.mutatedKeys)&&Lo(this.query,e.query)&&this.docs.isEqual(e.docs)&&this.oldDocs.isEqual(e.oldDocs)))return!1;const t=this.docChanges,n=e.docChanges;if(t.length!==n.length)return!1;for(let e=0;exo(e)),Lo),this.onlineState="Unknown",this.Ru=new Set}}function Hu(e,t){const n=qr(e);let s=!1;for(const e of t){const t=e.query,r=n.queries.get(t);if(r){for(const t of r.listeners)t.Pu(e)&&(s=!0);r.Au=e}}s&&Gu(n)}function Ku(e,t,n){const s=qr(e),r=s.queries.get(t);if(r)for(const e of r.listeners)e.onError(n);s.queries.delete(t)}function Gu(e){e.Ru.forEach((e=>{e.next()}))}class Wu{constructor(e,t,n){this.query=e,this.vu=t,this.Vu=!1,this.Su=null,this.onlineState="Unknown",this.options=n||{}}Pu(e){if(!this.options.includeMetadataChanges){const t=[];for(const n of e.docChanges)3!==n.type&&t.push(n);e=new ju(e.query,e.docs,e.oldDocs,t,e.mutatedKeys,e.fromCache,e.syncStateChanged,!0,e.hasCachedResults)}let t=!1;return this.Vu?this.Du(e)&&(this.vu.next(e),t=!0):this.Cu(e,this.onlineState)&&(this.xu(e),t=!0),this.Su=e,t}onError(e){this.vu.error(e)}bu(e){this.onlineState=e;let t=!1;return this.Su&&!this.Vu&&this.Cu(this.Su,e)&&(this.xu(this.Su),t=!0),t}Cu(e,t){if(!e.fromCache)return!0;const n="Offline"!==t;return(!this.options.Nu||!n)&&(!e.docs.isEmpty()||e.hasCachedResults||"Offline"===t)}Du(e){if(e.docChanges.length>0)return!0;const t=this.Su&&this.Su.hasPendingWrites!==e.hasPendingWrites;return!(!e.syncStateChanged&&!t)&&!0===this.options.includeMetadataChanges}xu(e){e=ju.fromInitialDocuments(e.query,e.docs,e.mutatedKeys,e.fromCache,e.hasCachedResults),this.Vu=!0,this.vu.next(e)}}class Qu{constructor(e){this.key=e}}class Xu{constructor(e){this.key=e}}class Yu{constructor(e,t){this.query=e,this.Uu=t,this.qu=null,this.hasCachedResults=!1,this.current=!1,this.Ku=Na(),this.mutatedKeys=Na(),this.Gu=Uo(e),this.Qu=new Bu(this.Gu)}get ju(){return this.Uu}Wu(e,t){const n=t?t.zu:new $u,s=t?t.Qu:this.Qu;let r=t?t.mutatedKeys:this.mutatedKeys,i=s,o=!1;const a="F"===this.query.limitType&&s.size===this.query.limit?s.last():null,c="L"===this.query.limitType&&s.size===this.query.limit?s.first():null;if(e.inorderTraversal(((e,t)=>{const u=s.get(e),l=Mo(this.query,t)?t:null,h=!!u&&this.mutatedKeys.has(u.key),d=!!l&&(l.hasLocalMutations||this.mutatedKeys.has(l.key)&&l.hasCommittedMutations);let f=!1;u&&l?u.data.isEqual(l.data)?h!==d&&(n.track({type:3,doc:l}),f=!0):this.Hu(u,l)||(n.track({type:2,doc:l}),f=!0,(a&&this.Gu(l,a)>0||c&&this.Gu(l,c)<0)&&(o=!0)):!u&&l?(n.track({type:0,doc:l}),f=!0):u&&!l&&(n.track({type:1,doc:u}),f=!0,(a||c)&&(o=!0)),f&&(l?(i=i.add(l),r=d?r.add(e):r.delete(e)):(i=i.delete(e),r=r.delete(e)))})),null!==this.query.limit)for(;i.size>this.query.limit;){const e="F"===this.query.limitType?i.last():i.first();i=i.delete(e.key),r=r.delete(e.key),n.track({type:1,doc:e})}return{Qu:i,zu:n,$i:o,mutatedKeys:r}}Hu(e,t){return e.hasLocalMutations&&t.hasCommittedMutations&&!t.hasLocalMutations}applyChanges(e,t,n){const s=this.Qu;this.Qu=e.Qu,this.mutatedKeys=e.mutatedKeys;const r=e.zu.Eu();r.sort(((e,t)=>function(e,t){const n=e=>{switch(e){case 0:return 1;case 2:case 3:return 2;case 1:return 0;default:return $r()}};return n(e)-n(t)}(e.type,t.type)||this.Gu(e.doc,t.doc))),this.Ju(n);const i=t?this.Yu():[],o=0===this.Ku.size&&this.current?1:0,a=o!==this.qu;return this.qu=o,0!==r.length||a?{snapshot:new ju(this.query,e.Qu,s,r,e.mutatedKeys,0===o,a,!1,!!n&&n.resumeToken.approximateByteSize()>0),Xu:i}:{Xu:i}}bu(e){return this.current&&"Offline"===e?(this.current=!1,this.applyChanges({Qu:this.Qu,zu:new $u,mutatedKeys:this.mutatedKeys,$i:!1},!1)):{Xu:[]}}Zu(e){return!this.Uu.has(e)&&!!this.Qu.has(e)&&!this.Qu.get(e).hasLocalMutations}Ju(e){e&&(e.addedDocuments.forEach((e=>this.Uu=this.Uu.add(e))),e.modifiedDocuments.forEach((e=>{})),e.removedDocuments.forEach((e=>this.Uu=this.Uu.delete(e))),this.current=e.current)}Yu(){if(!this.current)return[];const e=this.Ku;this.Ku=Na(),this.Qu.forEach((e=>{this.Zu(e.key)&&(this.Ku=this.Ku.add(e.key))}));const t=[];return e.forEach((e=>{this.Ku.has(e)||t.push(new Xu(e))})),this.Ku.forEach((n=>{e.has(n)||t.push(new Qu(n))})),t}tc(e){this.Uu=e.Hi,this.Ku=Na();const t=this.Wu(e.documents);return this.applyChanges(t,!0)}ec(){return ju.fromInitialDocuments(this.query,this.Qu,this.mutatedKeys,0===this.qu,this.hasCachedResults)}}class Ju{constructor(e,t,n){this.query=e,this.targetId=t,this.view=n}}class Zu{constructor(e){this.key=e,this.nc=!1}}class el{constructor(e,t,n,s,r,i){this.localStore=e,this.remoteStore=t,this.eventManager=n,this.sharedClientState=s,this.currentUser=r,this.maxConcurrentLimboResolutions=i,this.sc={},this.ic=new _a((e=>xo(e)),Lo),this.rc=new Map,this.oc=new Set,this.uc=new Ei(hi.comparator),this.cc=new Map,this.ac=new Oc,this.hc={},this.lc=new Map,this.fc=Sc.vn(),this.onlineState="Unknown",this.dc=void 0}get isPrimaryClient(){return!0===this.dc}}async function tl(e,t){const n=function(e){const t=qr(e);return t.remoteStore.remoteSyncer.applyRemoteEvent=sl.bind(null,t),t.remoteStore.remoteSyncer.getRemoteKeysForTarget=yl.bind(null,t),t.remoteStore.remoteSyncer.rejectListen=il.bind(null,t),t.sc.Wo=Hu.bind(null,t.eventManager),t.sc.wc=Ku.bind(null,t.eventManager),t}(e);let s,r;const i=n.ic.get(t);if(i)s=i.targetId,n.sharedClientState.addLocalQueryTarget(s),r=i.view.ec();else{const e=await function(e,t){const n=qr(e);return n.persistence.runTransaction("Allocate target","readwrite",(e=>{let s;return n.Cs.getTargetData(e,t).next((r=>r?(s=r,yi.resolve(s)):n.Cs.allocateTargetId(e).next((r=>(s=new wc(t,r,0,e.currentSequenceNumber),n.Cs.addTargetData(e,s).next((()=>s)))))))})).then((e=>{const s=n.Ui.get(e.targetId);return(null===s||e.snapshotVersion.compareTo(s.snapshotVersion)>0)&&(n.Ui=n.Ui.insert(e.targetId,e),n.qi.set(t,e.targetId)),e}))}(n.localStore,No(t));n.isPrimaryClient&&fu(n.remoteStore,e);const i=n.sharedClientState.addLocalQueryTarget(e.targetId);s=e.targetId,r=await async function(e,t,n,s,r){e._c=(t,n,s)=>async function(e,t,n,s){let r=t.view.Wu(n);r.$i&&(r=await Wc(e.localStore,t.query,!1).then((({documents:e})=>t.view.Wu(e,r))));const i=s&&s.targetChanges.get(t.targetId),o=t.view.applyChanges(r,e.isPrimaryClient,i);return dl(e,t.targetId,o.Xu),o.snapshot}(e,t,n,s);const i=await Wc(e.localStore,t,!0),o=new Yu(t,i.Hi),a=o.Wu(i.documents),c=Pa.createSynthesizedTargetChangeForCurrentChange(n,s&&"Offline"!==e.onlineState,r),u=o.applyChanges(a,e.isPrimaryClient,c);dl(e,n,u.Xu);const l=new Ju(t,n,o);return e.ic.set(t,l),e.rc.has(n)?e.rc.get(n).push(t):e.rc.set(n,[t]),u.snapshot}(n,t,s,"current"===i,e.resumeToken)}return r}async function nl(e,t){const n=qr(e),s=n.ic.get(t),r=n.rc.get(s.targetId);if(r.length>1)return n.rc.set(s.targetId,r.filter((e=>!Lo(e,t)))),void n.ic.delete(t);n.isPrimaryClient?(n.sharedClientState.removeLocalQueryTarget(s.targetId),n.sharedClientState.isActiveQueryTarget(s.targetId)||await Gc(n.localStore,s.targetId,!1).then((()=>{n.sharedClientState.clearQueryState(s.targetId),pu(n.remoteStore,s.targetId),ll(n,s.targetId)})).catch(gi)):(ll(n,s.targetId),await Gc(n.localStore,s.targetId,!0))}async function sl(e,t){const n=qr(e);try{const e=await function(e,t){const n=qr(e),s=t.snapshotVersion;let r=n.Ui;return n.persistence.runTransaction("Apply remote event","readwrite-primary",(e=>{const i=n.Gi.newChangeBuffer({trackRemovals:!0});r=n.Ui;const o=[];t.targetChanges.forEach(((i,a)=>{const c=r.get(a);if(!c)return;o.push(n.Cs.removeMatchingKeys(e,i.removedDocuments,a).next((()=>n.Cs.addMatchingKeys(e,i.addedDocuments,a))));let u=c.withSequenceNumber(e.currentSequenceNumber);t.targetMismatches.has(a)?u=u.withResumeToken(Ri.EMPTY_BYTE_STRING,oi.min()).withLastLimboFreeSnapshotVersion(oi.min()):i.resumeToken.approximateByteSize()>0&&(u=u.withResumeToken(i.resumeToken,s)),r=r.insert(a,u),function(e,t,n){return 0===e.resumeToken.approximateByteSize()||t.snapshotVersion.toMicroseconds()-e.snapshotVersion.toMicroseconds()>=3e8||n.addedDocuments.size+n.modifiedDocuments.size+n.removedDocuments.size>0}(c,u,i)&&o.push(n.Cs.updateTargetData(e,u))}));let a=Ta(),c=Na();if(t.documentUpdates.forEach((s=>{t.resolvedLimboDocuments.has(s)&&o.push(n.persistence.referenceDelegate.updateLimboDocument(e,s))})),o.push(function(e,t,n){let s=Na(),r=Na();return n.forEach((e=>s=s.add(e))),t.getEntries(e,s).next((e=>{let s=Ta();return n.forEach(((n,i)=>{const o=e.get(n);i.isFoundDocument()!==o.isFoundDocument()&&(r=r.add(n)),i.isNoDocument()&&i.version.isEqual(oi.min())?(t.removeEntry(n,i.readTime),s=s.insert(n,i)):!o.isValidDocument()||i.version.compareTo(o.version)>0||0===i.version.compareTo(o.version)&&o.hasPendingWrites?(t.addEntry(i),s=s.insert(n,i)):Ur("LocalStore","Ignoring outdated watch update for ",n,". Current version:",o.version," Watch version:",i.version)})),{Wi:s,zi:r}}))}(e,i,t.documentUpdates).next((e=>{a=e.Wi,c=e.zi}))),!s.isEqual(oi.min())){const t=n.Cs.getLastRemoteSnapshotVersion(e).next((t=>n.Cs.setTargetsMetadata(e,e.currentSequenceNumber,s)));o.push(t)}return yi.waitFor(o).next((()=>i.apply(e))).next((()=>n.localDocuments.getLocalViewOfDocuments(e,a,c))).next((()=>a))})).then((e=>(n.Ui=r,e)))}(n.localStore,t);t.targetChanges.forEach(((e,t)=>{const s=n.cc.get(t);s&&(jr(e.addedDocuments.size+e.modifiedDocuments.size+e.removedDocuments.size<=1),e.addedDocuments.size>0?s.nc=!0:e.modifiedDocuments.size>0?jr(s.nc):e.removedDocuments.size>0&&(jr(s.nc),s.nc=!1))})),await ml(n,e,t)}catch(e){await gi(e)}}function rl(e,t,n){const s=qr(e);if(s.isPrimaryClient&&0===n||!s.isPrimaryClient&&1===n){const e=[];s.ic.forEach(((n,s)=>{const r=s.view.bu(t);r.snapshot&&e.push(r.snapshot)})),function(e,t){const n=qr(e);n.onlineState=t;let s=!1;n.queries.forEach(((e,n)=>{for(const e of n.listeners)e.bu(t)&&(s=!0)})),s&&Gu(n)}(s.eventManager,t),e.length&&s.sc.Wo(e),s.onlineState=t,s.isPrimaryClient&&s.sharedClientState.setOnlineState(t)}}async function il(e,t,n){const s=qr(e);s.sharedClientState.updateQueryState(t,"rejected",n);const r=s.cc.get(t),i=r&&r.key;if(i){let e=new Ei(hi.comparator);e=e.insert(i,ro.newNoDocument(i,oi.min()));const n=Na().add(i),r=new xa(oi.min(),new Map,new Si(si),e,n);await sl(s,r),s.uc=s.uc.remove(i),s.cc.delete(t),pl(s)}else await Gc(s.localStore,t,!1).then((()=>ll(s,t,n))).catch(gi)}async function ol(e,t){const n=qr(e),s=t.batch.batchId;try{const e=await function(e,t){const n=qr(e);return n.persistence.runTransaction("Acknowledge batch","readwrite-primary",(e=>{const s=t.batch.keys(),r=n.Gi.newChangeBuffer({trackRemovals:!0});return function(e,t,n,s){const r=n.batch,i=r.keys();let o=yi.resolve();return i.forEach((e=>{o=o.next((()=>s.getEntry(t,e))).next((t=>{const i=n.docVersions.get(e);jr(null!==i),t.version.compareTo(i)<0&&(r.applyToRemoteDocument(t,n),t.isValidDocument()&&(t.setReadTime(n.commitVersion),s.addEntry(t)))}))})),o.next((()=>e.mutationQueue.removeMutationBatch(t,r)))}(n,e,t,r).next((()=>r.apply(e))).next((()=>n.mutationQueue.performConsistencyCheck(e))).next((()=>n.documentOverlayCache.removeOverlaysForBatchId(e,s,t.batch.batchId))).next((()=>n.localDocuments.recalculateAndSaveOverlaysForDocumentKeys(e,function(e){let t=Na();for(let n=0;n0&&(t=t.add(e.batch.mutations[n].key));return t}(t)))).next((()=>n.localDocuments.getDocuments(e,s)))}))}(n.localStore,t);ul(n,s,null),cl(n,s),n.sharedClientState.updateMutationState(s,"acknowledged"),await ml(n,e)}catch(e){await gi(e)}}async function al(e,t,n){const s=qr(e);try{const e=await function(e,t){const n=qr(e);return n.persistence.runTransaction("Reject batch","readwrite-primary",(e=>{let s;return n.mutationQueue.lookupMutationBatch(e,t).next((t=>(jr(null!==t),s=t.keys(),n.mutationQueue.removeMutationBatch(e,t)))).next((()=>n.mutationQueue.performConsistencyCheck(e))).next((()=>n.documentOverlayCache.removeOverlaysForBatchId(e,s,t))).next((()=>n.localDocuments.recalculateAndSaveOverlaysForDocumentKeys(e,s))).next((()=>n.localDocuments.getDocuments(e,s)))}))}(s.localStore,t);ul(s,t,n),cl(s,t),s.sharedClientState.updateMutationState(t,"rejected",n),await ml(s,e)}catch(n){await gi(n)}}function cl(e,t){(e.lc.get(t)||[]).forEach((e=>{e.resolve()})),e.lc.delete(t)}function ul(e,t,n){const s=qr(e);let r=s.hc[s.currentUser.toKey()];if(r){const e=r.get(t);e&&(n?e.reject(n):e.resolve(),r=r.remove(t)),s.hc[s.currentUser.toKey()]=r}}function ll(e,t,n=null){e.sharedClientState.removeLocalQueryTarget(t);for(const s of e.rc.get(t))e.ic.delete(s),n&&e.sc.wc(s,n);e.rc.delete(t),e.isPrimaryClient&&e.ac.ls(t).forEach((t=>{e.ac.containsKey(t)||hl(e,t)}))}function hl(e,t){e.oc.delete(t.path.canonicalString());const n=e.uc.get(t);null!==n&&(pu(e.remoteStore,n),e.uc=e.uc.remove(t),e.cc.delete(n),pl(e))}function dl(e,t,n){for(const s of n)s instanceof Qu?(e.ac.addReference(s.key,t),fl(e,s)):s instanceof Xu?(Ur("SyncEngine","Document no longer in limbo: "+s.key),e.ac.removeReference(s.key,t),e.ac.containsKey(s.key)||hl(e,s.key)):$r()}function fl(e,t){const n=t.key,s=n.path.canonicalString();e.uc.get(n)||e.oc.has(s)||(Ur("SyncEngine","New document in limbo: "+n),e.oc.add(s),pl(e))}function pl(e){for(;e.oc.size>0&&e.uc.size{o.push(s._c(a,t,n).then((e=>{if((e||n)&&s.isPrimaryClient&&s.sharedClientState.updateQueryState(a.targetId,(null==e?void 0:e.fromCache)?"not-current":"current"),e){r.push(e);const t=$c.Ci(a.targetId,e);i.push(t)}})))})),await Promise.all(o),s.sc.Wo(r),await async function(e,t){const n=qr(e);try{await n.persistence.runTransaction("notifyLocalViewChanges","readwrite",(e=>yi.forEach(t,(t=>yi.forEach(t.Si,(s=>n.persistence.referenceDelegate.addReference(e,t.targetId,s))).next((()=>yi.forEach(t.Di,(s=>n.persistence.referenceDelegate.removeReference(e,t.targetId,s)))))))))}catch(e){if(!vi(e))throw e;Ur("LocalStore","Failed to update sequence numbers: "+e)}for(const e of t){const t=e.targetId;if(!e.fromCache){const e=n.Ui.get(t),s=e.snapshotVersion,r=e.withLastLimboFreeSnapshotVersion(s);n.Ui=n.Ui.insert(t,r)}}}(s.localStore,i))}async function gl(e,t){const n=qr(e);if(!n.currentUser.isEqual(t)){Ur("SyncEngine","User change. New user:",t.toKey());const e=await zc(n.localStore,t);n.currentUser=t,function(e,t){e.lc.forEach((e=>{e.forEach((e=>{e.reject(new Hr(zr.CANCELLED,"'waitForPendingWrites' promise is rejected due to a user change."))}))})),e.lc.clear()}(n),n.sharedClientState.handleUserChange(t,e.removedBatchIds,e.addedBatchIds),await ml(n,e.ji)}}function yl(e,t){const n=qr(e),s=n.cc.get(t);if(s&&s.nc)return Na().add(s.key);{let e=Na();const s=n.rc.get(t);if(!s)return e;for(const t of s){const s=n.ic.get(t);e=e.unionWith(s.view.ju)}return e}}function vl(e){const t=qr(e);return t.remoteStore.remoteSyncer.applySuccessfulWrite=ol.bind(null,t),t.remoteStore.remoteSyncer.rejectFailedWrite=al.bind(null,t),t}class wl{constructor(){this.synchronizeTabs=!1}async initialize(e){this.It=su(e.databaseInfo.databaseId),this.sharedClientState=this.gc(e),this.persistence=this.yc(e),await this.persistence.start(),this.localStore=this.Ic(e),this.gcScheduler=this.Tc(e,this.localStore),this.indexBackfillerScheduler=this.Ec(e,this.localStore)}Tc(e,t){return null}Ec(e,t){return null}Ic(e){return function(e,t,n,s){return new qc(e,t,n,s)}(this.persistence,new jc,e.initialUser,this.It)}yc(e){return new Fc(Bc.Bs,this.It)}gc(e){return new Xc}async terminate(){this.gcScheduler&&this.gcScheduler.stop(),await this.sharedClientState.shutdown(),await this.persistence.shutdown()}}class _l{async initialize(e,t){this.localStore||(this.localStore=e.localStore,this.sharedClientState=e.sharedClientState,this.datastore=this.createDatastore(t),this.remoteStore=this.createRemoteStore(t),this.eventManager=this.createEventManager(t),this.syncEngine=this.createSyncEngine(t,!e.synchronizeTabs),this.sharedClientState.onlineStateHandler=e=>rl(this.syncEngine,e,1),this.remoteStore.remoteSyncer.handleCredentialChange=gl.bind(null,this.syncEngine),await async function(e,t){const n=qr(e);t?(n._u.delete(2),await hu(n)):t||(n._u.add(2),await du(n),n.gu.set("Unknown"))}(this.remoteStore,this.syncEngine.isPrimaryClient))}createEventManager(e){return new zu}createDatastore(e){const t=su(e.databaseInfo.databaseId),n=(s=e.databaseInfo,new tu(s));var s;return function(e,t,n,s){return new cu(e,t,n,s)}(e.authCredentials,e.appCheckCredentials,n,t)}createRemoteStore(e){return t=this.localStore,n=this.datastore,s=e.asyncQueue,r=e=>rl(this.syncEngine,e,0),i=Jc.C()?new Jc:new Yc,new lu(t,n,s,r,i);var t,n,s,r,i}createSyncEngine(e,t){return function(e,t,n,s,r,i,o){const a=new el(e,t,n,s,r,i);return o&&(a.dc=!0),a}(this.localStore,this.remoteStore,this.eventManager,this.sharedClientState,e.initialUser,e.maxConcurrentLimboResolutions,t)}terminate(){return async function(e){const t=qr(e);Ur("RemoteStore","RemoteStore shutting down."),t._u.add(5),await du(t),t.mu.shutdown(),t.gu.set("Unknown")}(this.remoteStore)}}function bl(e,t,n){if(!n)throw new Hr(zr.INVALID_ARGUMENT,`Function ${e}() cannot be called with an empty ${t}.`)}function Tl(e){if(!hi.isDocumentKey(e))throw new Hr(zr.INVALID_ARGUMENT,`Invalid document reference. Document references must have an even number of segments, but ${e} has ${e.length}.`)}function El(e){if(hi.isDocumentKey(e))throw new Hr(zr.INVALID_ARGUMENT,`Invalid collection reference. Collection references must have an odd number of segments, but ${e} has ${e.length}.`)}function Il(e){if(void 0===e)return"undefined";if(null===e)return"null";if("string"==typeof e)return e.length>20&&(e=`${e.substring(0,20)}...`),JSON.stringify(e);if("number"==typeof e||"boolean"==typeof e)return""+e;if("object"==typeof e){if(e instanceof Array)return"an array";{const t=function(e){return e.constructor?e.constructor.name:null}(e);return t?`a custom ${t} object`:"an object"}}return"function"==typeof e?"a function":$r()}function kl(e,t){if("_delegate"in e&&(e=e._delegate),!(e instanceof t)){if(t.name===e.constructor.name)throw new Hr(zr.INVALID_ARGUMENT,"Type does not match the expected instance. Did you pass a reference from a different Firestore SDK?");{const n=Il(e);throw new Hr(zr.INVALID_ARGUMENT,`Expected type '${t.name}', but it was: ${n}`)}}return e}const Sl=new Map;class Cl{constructor(e){var t;if(void 0===e.host){if(void 0!==e.ssl)throw new Hr(zr.INVALID_ARGUMENT,"Can't provide ssl option if host option is not set");this.host="firestore.googleapis.com",this.ssl=!0}else this.host=e.host,this.ssl=null===(t=e.ssl)||void 0===t||t;if(this.credentials=e.credentials,this.ignoreUndefinedProperties=!!e.ignoreUndefinedProperties,void 0===e.cacheSizeBytes)this.cacheSizeBytes=41943040;else{if(-1!==e.cacheSizeBytes&&e.cacheSizeBytes<1048576)throw new Hr(zr.INVALID_ARGUMENT,"cacheSizeBytes must be at least 1048576");this.cacheSizeBytes=e.cacheSizeBytes}this.experimentalForceLongPolling=!!e.experimentalForceLongPolling,this.experimentalAutoDetectLongPolling=!!e.experimentalAutoDetectLongPolling,this.useFetchStreams=!!e.useFetchStreams,function(e,t,n,s){if(!0===t&&!0===s)throw new Hr(zr.INVALID_ARGUMENT,"experimentalForceLongPolling and experimentalAutoDetectLongPolling cannot be used together.")}(0,e.experimentalForceLongPolling,0,e.experimentalAutoDetectLongPolling)}isEqual(e){return this.host===e.host&&this.ssl===e.ssl&&this.credentials===e.credentials&&this.cacheSizeBytes===e.cacheSizeBytes&&this.experimentalForceLongPolling===e.experimentalForceLongPolling&&this.experimentalAutoDetectLongPolling===e.experimentalAutoDetectLongPolling&&this.ignoreUndefinedProperties===e.ignoreUndefinedProperties&&this.useFetchStreams===e.useFetchStreams}}class Al{constructor(e,t,n,s){this._authCredentials=e,this._appCheckCredentials=t,this._databaseId=n,this._app=s,this.type="firestore-lite",this._persistenceKey="(lite)",this._settings=new Cl({}),this._settingsFrozen=!1}get app(){if(!this._app)throw new Hr(zr.FAILED_PRECONDITION,"Firestore was not initialized using the Firebase SDK. 'app' is not available");return this._app}get _initialized(){return this._settingsFrozen}get _terminated(){return void 0!==this._terminateTask}_setSettings(e){if(this._settingsFrozen)throw new Hr(zr.FAILED_PRECONDITION,"Firestore has already been started and its settings can no longer be changed. You can only modify settings before calling any other methods on a Firestore object.");this._settings=new Cl(e),void 0!==e.credentials&&(this._authCredentials=function(e){if(!e)return new Wr;switch(e.type){case"gapi":const t=e.client;return new Jr(t,e.sessionIndex||"0",e.iamToken||null,e.authTokenFactory||null);case"provider":return e.client;default:throw new Hr(zr.INVALID_ARGUMENT,"makeAuthCredentialsProvider failed due to invalid credential type")}}(e.credentials))}_getSettings(){return this._settings}_freezeSettings(){return this._settingsFrozen=!0,this._settings}_delete(){return this._terminateTask||(this._terminateTask=this._terminate()),this._terminateTask}toJSON(){return{app:this._app,databaseId:this._databaseId,settings:this._settings}}_terminate(){return function(e){const t=Sl.get(e);t&&(Ur("ComponentProvider","Removing Datastore"),Sl.delete(e),t.terminate())}(this),Promise.resolve()}}class Rl{constructor(e,t,n){this.converter=t,this._key=n,this.type="document",this.firestore=e}get _path(){return this._key.path}get id(){return this._key.path.lastSegment()}get path(){return this._key.path.canonicalString()}get parent(){return new Nl(this.firestore,this.converter,this._key.path.popLast())}withConverter(e){return new Rl(this.firestore,e,this._key)}}class Dl{constructor(e,t,n){this.converter=t,this._query=n,this.type="query",this.firestore=e}withConverter(e){return new Dl(this.firestore,e,this._query)}}class Nl extends Dl{constructor(e,t,n){super(e,t,So(n)),this._path=n,this.type="collection"}get id(){return this._query.path.lastSegment()}get path(){return this._query.path.canonicalString()}get parent(){const e=this._path.popLast();return e.isEmpty()?null:new Rl(this.firestore,null,new hi(e))}withConverter(e){return new Nl(this.firestore,e,this._path)}}function Ol(e,t,...n){if(e=A(e),bl("collection","path",t),e instanceof Al){const s=ci.fromString(t,...n);return El(s),new Nl(e,null,s)}{if(!(e instanceof Rl||e instanceof Nl))throw new Hr(zr.INVALID_ARGUMENT,"Expected first argument to collection() to be a CollectionReference, a DocumentReference or FirebaseFirestore");const s=e._path.child(ci.fromString(t,...n));return El(s),new Nl(e.firestore,null,s)}}class Ll{constructor(e){this.observer=e,this.muted=!1}next(e){this.observer.next&&this.Rc(this.observer.next,e)}error(e){this.observer.error?this.Rc(this.observer.error,e):Fr("Uncaught Error in snapshot listener:",e.toString())}bc(){this.muted=!0}Rc(e,t){this.muted||setTimeout((()=>{this.muted||e(t)}),0)}}class xl{constructor(e,t,n,s){this.authCredentials=e,this.appCheckCredentials=t,this.asyncQueue=n,this.databaseInfo=s,this.user=Lr.UNAUTHENTICATED,this.clientId=ni.R(),this.authCredentialListener=()=>Promise.resolve(),this.appCheckCredentialListener=()=>Promise.resolve(),this.authCredentials.start(n,(async e=>{Ur("FirestoreClient","Received user=",e.uid),await this.authCredentialListener(e),this.user=e})),this.appCheckCredentials.start(n,(e=>(Ur("FirestoreClient","Received new app check token=",e),this.appCheckCredentialListener(e,this.user))))}async getConfiguration(){return{asyncQueue:this.asyncQueue,databaseInfo:this.databaseInfo,clientId:this.clientId,authCredentials:this.authCredentials,appCheckCredentials:this.appCheckCredentials,initialUser:this.user,maxConcurrentLimboResolutions:100}}setCredentialChangeListener(e){this.authCredentialListener=e}setAppCheckTokenChangeListener(e){this.appCheckCredentialListener=e}verifyNotTerminated(){if(this.asyncQueue.isShuttingDown)throw new Hr(zr.FAILED_PRECONDITION,"The client has already been terminated.")}terminate(){this.asyncQueue.enterRestrictedMode();const e=new Kr;return this.asyncQueue.enqueueAndForgetEvenWhileRestricted((async()=>{try{this.onlineComponents&&await this.onlineComponents.terminate(),this.offlineComponents&&await this.offlineComponents.terminate(),this.authCredentials.shutdown(),this.appCheckCredentials.shutdown(),e.resolve()}catch(t){const n=Vu(t,"Failed to shutdown persistence");e.reject(n)}})),e.promise}}async function Pl(e,t){e.asyncQueue.verifyOperationInProgress();const n=await async function(e){return e.offlineComponents||(Ur("FirestoreClient","Using default OfflineComponentProvider"),await async function(e,t){e.asyncQueue.verifyOperationInProgress(),Ur("FirestoreClient","Initializing OfflineComponentProvider");const n=await e.getConfiguration();await t.initialize(n);let s=n.initialUser;e.setCredentialChangeListener((async e=>{s.isEqual(e)||(await zc(t.localStore,e),s=e)})),t.persistence.setDatabaseDeletedListener((()=>e.terminate())),e.offlineComponents=t}(e,new wl)),e.offlineComponents}(e);Ur("FirestoreClient","Initializing OnlineComponentProvider");const s=await e.getConfiguration();await t.initialize(n,s),e.setCredentialChangeListener((e=>Pu(t.remoteStore,e))),e.setAppCheckTokenChangeListener(((e,n)=>Pu(t.remoteStore,n))),e.onlineComponents=t}async function Ml(e){return e.onlineComponents||(Ur("FirestoreClient","Using default OnlineComponentProvider"),await Pl(e,new _l)),e.onlineComponents}async function Ul(e){const t=await Ml(e),n=t.eventManager;return n.onListen=tl.bind(null,t.syncEngine),n.onUnlisten=nl.bind(null,t.syncEngine),n}function Fl(e,t,n={}){const s=new Kr;return e.asyncQueue.enqueueAndForget((async()=>function(e,t,n,s,r){const i=new Ll({next:n=>{t.enqueueAndForget((()=>async function(e,t){const n=qr(e),s=t.query;let r=!1;const i=n.queries.get(s);if(i){const e=i.listeners.indexOf(t);e>=0&&(i.listeners.splice(e,1),r=0===i.listeners.length)}if(r)return n.queries.delete(s),n.onUnlisten(s)}(e,o))),n.fromCache&&"server"===s.source?r.reject(new Hr(zr.UNAVAILABLE,'Failed to get documents from server. (However, these documents may exist in the local cache. Run again without setting source to "server" to retrieve the cached documents.)')):r.resolve(n)},error:e=>r.reject(e)}),o=new Wu(n,i,{includeMetadataChanges:!0,Nu:!0});return async function(e,t){const n=qr(e),s=t.query;let r=!1,i=n.queries.get(s);if(i||(r=!0,i=new qu),r)try{i.Au=await n.onListen(s)}catch(e){const n=Vu(e,`Initialization of query '${Po(t.query)}' failed`);return void t.onError(n)}n.queries.set(s,i),i.listeners.push(t),t.bu(n.onlineState),i.Au&&t.Pu(i.Au)&&Gu(n)}(e,o)}(await Ul(e),e.asyncQueue,t,n,s))),s.promise}class Vl{constructor(){this.Bc=Promise.resolve(),this.Lc=[],this.Uc=!1,this.qc=[],this.Kc=null,this.Gc=!1,this.Qc=!1,this.jc=[],this.xo=new ru(this,"async_queue_retry"),this.Wc=()=>{const e=nu();e&&Ur("AsyncQueue","Visibility state changed to "+e.visibilityState),this.xo.Po()};const e=nu();e&&"function"==typeof e.addEventListener&&e.addEventListener("visibilitychange",this.Wc)}get isShuttingDown(){return this.Uc}enqueueAndForget(e){this.enqueue(e)}enqueueAndForgetEvenWhileRestricted(e){this.zc(),this.Hc(e)}enterRestrictedMode(e){if(!this.Uc){this.Uc=!0,this.Qc=e||!1;const t=nu();t&&"function"==typeof t.removeEventListener&&t.removeEventListener("visibilitychange",this.Wc)}}enqueue(e){if(this.zc(),this.Uc)return new Promise((()=>{}));const t=new Kr;return this.Hc((()=>this.Uc&&this.Qc?Promise.resolve():(e().then(t.resolve,t.reject),t.promise))).then((()=>t.promise))}enqueueRetryable(e){this.enqueueAndForget((()=>(this.Lc.push(e),this.Jc())))}async Jc(){if(0!==this.Lc.length){try{await this.Lc[0](),this.Lc.shift(),this.xo.reset()}catch(e){if(!vi(e))throw e;Ur("AsyncQueue","Operation failed with retryable error: "+e)}this.Lc.length>0&&this.xo.Ro((()=>this.Jc()))}}Hc(e){const t=this.Bc.then((()=>(this.Gc=!0,e().catch((e=>{this.Kc=e,this.Gc=!1;const t=function(e){let t=e.message||"";return e.stack&&(t=e.stack.includes(e.message)?e.stack:e.message+"\n"+e.stack),t}(e);throw Fr("INTERNAL UNHANDLED ERROR: ",t),e})).then((e=>(this.Gc=!1,e))))));return this.Bc=t,t}enqueueAfterDelay(e,t,n){this.zc(),this.jc.indexOf(e)>-1&&(t=0);const s=Fu.createAndSchedule(this,e,t,n,(e=>this.Yc(e)));return this.qc.push(s),s}zc(){this.Kc&&$r()}verifyOperationInProgress(){}async Xc(){let e;do{e=this.Bc,await e}while(e!==this.Bc)}Zc(e){for(const t of this.qc)if(t.timerId===e)return!0;return!1}ta(e){return this.Xc().then((()=>{this.qc.sort(((e,t)=>e.targetTimeMs-t.targetTimeMs));for(const t of this.qc)if(t.skipDelay(),"all"!==e&&t.timerId===e)break;return this.Xc()}))}ea(e){this.jc.push(e)}Yc(e){const t=this.qc.indexOf(e);this.qc.splice(t,1)}}class Bl extends Al{constructor(e,t,n,s){super(e,t,n,s),this.type="firestore",this._queue=new Vl,this._persistenceKey=(null==s?void 0:s.name)||"[DEFAULT]"}_terminate(){return this._firestoreClient||jl(this),this._firestoreClient.terminate()}}function $l(e){return e._firestoreClient||jl(e),e._firestoreClient.verifyNotTerminated(),e._firestoreClient}function jl(e){var t;const n=e._freezeSettings(),s=function(e,t,n,s){return new Ui(e,t,n,s.host,s.ssl,s.experimentalForceLongPolling,s.experimentalAutoDetectLongPolling,s.useFetchStreams)}(e._databaseId,(null===(t=e._app)||void 0===t?void 0:t.options.appId)||"",e._persistenceKey,n);e._firestoreClient=new xl(e._authCredentials,e._appCheckCredentials,e._queue,s)}class ql{constructor(e){this._byteString=e}static fromBase64String(e){try{return new ql(Ri.fromBase64String(e))}catch(e){throw new Hr(zr.INVALID_ARGUMENT,"Failed to construct data from Base64 string: "+e)}}static fromUint8Array(e){return new ql(Ri.fromUint8Array(e))}toBase64(){return this._byteString.toBase64()}toUint8Array(){return this._byteString.toUint8Array()}toString(){return"Bytes(base64: "+this.toBase64()+")"}isEqual(e){return this._byteString.isEqual(e._byteString)}}class zl{constructor(...e){for(let t=0;t90)throw new Hr(zr.INVALID_ARGUMENT,"Latitude must be a number between -90 and 90, but was: "+e);if(!isFinite(t)||t<-180||t>180)throw new Hr(zr.INVALID_ARGUMENT,"Longitude must be a number between -180 and 180, but was: "+t);this._lat=e,this._long=t}get latitude(){return this._lat}get longitude(){return this._long}isEqual(e){return this._lat===e._lat&&this._long===e._long}toJSON(){return{latitude:this._lat,longitude:this._long}}_compareTo(e){return si(this._lat,e._lat)||si(this._long,e._long)}}const Gl=/^__.*__$/;class Wl{constructor(e,t,n){this.data=e,this.fieldMask=t,this.fieldTransforms=n}toMutation(e,t){return null!==this.fieldMask?new la(e,this.data,this.fieldMask,t,this.fieldTransforms):new ua(e,this.data,t,this.fieldTransforms)}}function Ql(e){switch(e){case 0:case 2:case 1:return!0;case 3:case 4:return!1;default:throw $r()}}class Xl{constructor(e,t,n,s,r,i){this.settings=e,this.databaseId=t,this.It=n,this.ignoreUndefinedProperties=s,void 0===r&&this.na(),this.fieldTransforms=r||[],this.fieldMask=i||[]}get path(){return this.settings.path}get sa(){return this.settings.sa}ia(e){return new Xl(Object.assign(Object.assign({},this.settings),e),this.databaseId,this.It,this.ignoreUndefinedProperties,this.fieldTransforms,this.fieldMask)}ra(e){var t;const n=null===(t=this.path)||void 0===t?void 0:t.child(e),s=this.ia({path:n,oa:!1});return s.ua(e),s}ca(e){var t;const n=null===(t=this.path)||void 0===t?void 0:t.child(e),s=this.ia({path:n,oa:!1});return s.na(),s}aa(e){return this.ia({path:void 0,oa:!0})}ha(e){return ah(e,this.settings.methodName,this.settings.la||!1,this.path,this.settings.fa)}contains(e){return void 0!==this.fieldMask.find((t=>e.isPrefixOf(t)))||void 0!==this.fieldTransforms.find((t=>e.isPrefixOf(t.field)))}na(){if(this.path)for(let e=0;ec.covers(e.field)))}else c=null,u=o.fieldTransforms;return new Wl(new no(a),c,u)}function eh(e,t){if(nh(e=A(e)))return sh("Unsupported field value:",t,e),th(e,t);if(e instanceof Hl)return function(e,t){if(!Ql(t.sa))throw t.ha(`${e._methodName}() can only be used with update() and set()`);if(!t.path)throw t.ha(`${e._methodName}() is not currently supported inside arrays`);const n=e._toFieldTransform(t);n&&t.fieldTransforms.push(n)}(e,t),null;if(void 0===e&&t.ignoreUndefinedProperties)return null;if(t.path&&t.fieldMask.push(t.path),e instanceof Array){if(t.settings.oa&&4!==t.sa)throw t.ha("Nested arrays are not supported");return function(e,t){const n=[];let s=0;for(const r of e){let e=eh(r,t.aa(s));null==e&&(e={nullValue:"NULL_VALUE"}),n.push(e),s++}return{arrayValue:{values:n}}}(e,t)}return function(e,t){if(null===(e=A(e)))return{nullValue:"NULL_VALUE"};if("number"==typeof e)return $o(t.It,e);if("boolean"==typeof e)return{booleanValue:e};if("string"==typeof e)return{stringValue:e};if(e instanceof Date){const n=ii.fromDate(e);return{timestampValue:Ka(t.It,n)}}if(e instanceof ii){const n=new ii(e.seconds,1e3*Math.floor(e.nanoseconds/1e3));return{timestampValue:Ka(t.It,n)}}if(e instanceof Kl)return{geoPointValue:{latitude:e.latitude,longitude:e.longitude}};if(e instanceof ql)return{bytesValue:Ga(t.It,e._byteString)};if(e instanceof Rl){const n=t.databaseId,s=e.firestore._databaseId;if(!s.isEqual(n))throw t.ha(`Document reference is for database ${s.projectId}/${s.database} but should be for database ${n.projectId}/${n.database}`);return{referenceValue:Xa(e.firestore._databaseId||t.databaseId,e._key.path)}}throw t.ha(`Unsupported field value: ${Il(e)}`)}(e,t)}function th(e,t){const n={};return Ti(e)?t.path&&t.path.length>0&&t.fieldMask.push(t.path):bi(e,((e,s)=>{const r=eh(s,t.ra(e));null!=r&&(n[e]=r)})),{mapValue:{fields:n}}}function nh(e){return!("object"!=typeof e||null===e||e instanceof Array||e instanceof Date||e instanceof ii||e instanceof Kl||e instanceof ql||e instanceof Rl||e instanceof Hl)}function sh(e,t,n){if(!nh(n)||!function(e){return"object"==typeof e&&null!==e&&(Object.getPrototypeOf(e)===Object.prototype||null===Object.getPrototypeOf(e))}(n)){const s=Il(n);throw"an object"===s?t.ha(e+" a custom object"):t.ha(e+" "+s)}}function rh(e,t,n){if((t=A(t))instanceof zl)return t._internalPath;if("string"==typeof t)return oh(e,t);throw ah("Field path arguments must be of type string or ",e,!1,void 0,n)}const ih=new RegExp("[~\\*/\\[\\]]");function oh(e,t,n){if(t.search(ih)>=0)throw ah(`Invalid field path (${t}). Paths must not contain '~', '*', '/', '[', or ']'`,e,!1,void 0,n);try{return new zl(...t.split("."))._internalPath}catch(s){throw ah(`Invalid field path (${t}). Paths must not be empty, begin with '.', end with '.', or contain '..'`,e,!1,void 0,n)}}function ah(e,t,n,s,r){const i=s&&!s.isEmpty(),o=void 0!==r;let a=`Function ${t}() called with invalid data`;n&&(a+=" (via `toFirestore()`)"),a+=". ";let c="";return(i||o)&&(c+=" (found",i&&(c+=` in field ${s}`),o&&(c+=` in document ${r}`),c+=")"),new Hr(zr.INVALID_ARGUMENT,a+e+c)}function ch(e,t){return e.some((e=>e.isEqual(t)))}class uh{constructor(e,t,n,s,r){this._firestore=e,this._userDataWriter=t,this._key=n,this._document=s,this._converter=r}get id(){return this._key.path.lastSegment()}get ref(){return new Rl(this._firestore,this._converter,this._key)}exists(){return null!==this._document}data(){if(this._document){if(this._converter){const e=new lh(this._firestore,this._userDataWriter,this._key,this._document,null);return this._converter.fromFirestore(e)}return this._userDataWriter.convertValue(this._document.data.value)}}get(e){if(this._document){const t=this._document.data.field(hh("DocumentSnapshot.get",e));if(null!==t)return this._userDataWriter.convertValue(t)}}}class lh extends uh{data(){return super.data()}}function hh(e,t){return"string"==typeof t?oh(e,t):t instanceof zl?t._internalPath:t._delegate._internalPath}class dh{}function fh(e,...t){for(const n of t)e=n._apply(e);return e}class ph extends dh{constructor(e,t){super(),this.ma=e,this.pa=t,this.type="orderBy"}_apply(e){const t=function(e,t,n){if(null!==e.startAt)throw new Hr(zr.INVALID_ARGUMENT,"Invalid query. You must not call startAt() or startAfter() before calling orderBy().");if(null!==e.endAt)throw new Hr(zr.INVALID_ARGUMENT,"Invalid query. You must not call endAt() or endBefore() before calling orderBy().");const s=new bo(t,n);return function(e,t){if(null===Ao(e)){const n=Ro(e);null!==n&&function(e,t,n){if(!n.isEqual(t))throw new Hr(zr.INVALID_ARGUMENT,`Invalid query. You have a where filter with an inequality (<, <=, !=, not-in, >, or >=) on field '${t.toString()}' and so you must also use '${t.toString()}' as your first argument to orderBy(), but your first orderBy() is on field '${n.toString()}' instead.`)}(0,n,t.field)}}(e,s),s}(e._query,this.ma,this.pa);return new Dl(e.firestore,e.converter,function(e,t){const n=e.explicitOrderBy.concat([t]);return new ko(e.path,e.collectionGroup,n,e.filters.slice(),e.limit,e.limitType,e.startAt,e.endAt)}(e._query,t))}}function mh(e,t="asc"){const n=t,s=hh("orderBy",e);return new ph(s,n)}class gh extends dh{constructor(e,t,n){super(),this.type=e,this.Ia=t,this.Ta=n}_apply(e){return new Dl(e.firestore,e.converter,Oo(e._query,this.Ia,this.Ta))}}class yh{convertValue(e,t="none"){switch(ji(e)){case 0:return null;case 1:return e.booleanValue;case 2:return Oi(e.integerValue||e.doubleValue);case 3:return this.convertTimestamp(e.timestampValue);case 4:return this.convertServerTimestamp(e,t);case 5:return e.stringValue;case 6:return this.convertBytes(Li(e.bytesValue));case 7:return this.convertReference(e.referenceValue);case 8:return this.convertGeoPoint(e.geoPointValue);case 9:return this.convertArray(e.arrayValue,t);case 10:return this.convertObject(e.mapValue,t);default:throw $r()}}convertObject(e,t){const n={};return bi(e.fields,((e,s)=>{n[e]=this.convertValue(s,t)})),n}convertGeoPoint(e){return new Kl(Oi(e.latitude),Oi(e.longitude))}convertArray(e,t){return(e.values||[]).map((e=>this.convertValue(e,t)))}convertServerTimestamp(e,t){switch(t){case"previous":const n=Pi(e);return null==n?null:this.convertValue(n,t);case"estimate":return this.convertTimestamp(Mi(e));default:return null}}convertTimestamp(e){const t=Ni(e);return new ii(t.seconds,t.nanos)}convertDocumentKey(e,t){const n=ci.fromString(e);jr(mc(n));const s=new Fi(n.get(1),n.get(3)),r=new hi(n.popFirst(5));return s.isEqual(t)||Fr(`Document ${r} contains a document reference within a different database (${s.projectId}/${s.database}) which is not supported. It will be treated as a reference in the current database (${t.projectId}/${t.database}) instead.`),r}}class vh{constructor(e,t){this.hasPendingWrites=e,this.fromCache=t}isEqual(e){return this.hasPendingWrites===e.hasPendingWrites&&this.fromCache===e.fromCache}}class wh extends uh{constructor(e,t,n,s,r,i){super(e,t,n,s,i),this._firestore=e,this._firestoreImpl=e,this.metadata=r}exists(){return super.exists()}data(e={}){if(this._document){if(this._converter){const t=new _h(this._firestore,this._userDataWriter,this._key,this._document,this.metadata,null);return this._converter.fromFirestore(t,e)}return this._userDataWriter.convertValue(this._document.data.value,e.serverTimestamps)}}get(e,t={}){if(this._document){const n=this._document.data.field(hh("DocumentSnapshot.get",e));if(null!==n)return this._userDataWriter.convertValue(n,t.serverTimestamps)}}}class _h extends wh{data(e={}){return super.data(e)}}class bh{constructor(e,t,n,s){this._firestore=e,this._userDataWriter=t,this._snapshot=s,this.metadata=new vh(s.hasPendingWrites,s.fromCache),this.query=n}get docs(){const e=[];return this.forEach((t=>e.push(t))),e}get size(){return this._snapshot.docs.size}get empty(){return 0===this.size}forEach(e,t){this._snapshot.docs.forEach((n=>{e.call(t,new _h(this._firestore,this._userDataWriter,n.key,n,new vh(this._snapshot.mutatedKeys.has(n.key),this._snapshot.fromCache),this.query.converter))}))}docChanges(e={}){const t=!!e.includeMetadataChanges;if(t&&this._snapshot.excludesMetadataChanges)throw new Hr(zr.INVALID_ARGUMENT,"To include metadata changes with your document changes, you must also pass { includeMetadataChanges:true } to onSnapshot().");return this._cachedChanges&&this._cachedChangesIncludeMetadataChanges===t||(this._cachedChanges=function(e,t){if(e._snapshot.oldDocs.isEmpty()){let t=0;return e._snapshot.docChanges.map((n=>{const s=new _h(e._firestore,e._userDataWriter,n.doc.key,n.doc,new vh(e._snapshot.mutatedKeys.has(n.doc.key),e._snapshot.fromCache),e.query.converter);return n.doc,{type:"added",doc:s,oldIndex:-1,newIndex:t++}}))}{let n=e._snapshot.oldDocs;return e._snapshot.docChanges.filter((e=>t||3!==e.type)).map((t=>{const s=new _h(e._firestore,e._userDataWriter,t.doc.key,t.doc,new vh(e._snapshot.mutatedKeys.has(t.doc.key),e._snapshot.fromCache),e.query.converter);let r=-1,i=-1;return 0!==t.type&&(r=n.indexOf(t.doc.key),n=n.delete(t.doc.key)),1!==t.type&&(n=n.add(t.doc),i=n.indexOf(t.doc.key)),{type:Th(t.type),doc:s,oldIndex:r,newIndex:i}}))}}(this,t),this._cachedChangesIncludeMetadataChanges=t),this._cachedChanges}}function Th(e){switch(e){case 0:return"added";case 2:case 3:return"modified";case 1:return"removed";default:return $r()}}class Eh extends yh{constructor(e){super(),this.firestore=e}convertBytes(e){return new ql(e)}convertReference(e){const t=this.convertDocumentKey(e,this.firestore._databaseId);return new Rl(this.firestore,null,t)}}function Ih(e){e=kl(e,Dl);const t=kl(e.firestore,Bl),n=$l(t),s=new Eh(t);return function(e){if("L"===e.limitType&&0===e.explicitOrderBy.length)throw new Hr(zr.UNIMPLEMENTED,"limitToLast() queries require specifying at least one orderBy() clause")}(e._query),Fl(n,e._query).then((n=>new bh(t,s,e,n)))}function kh(e,t){const n=kl(e.firestore,Bl),s=function(e,t,...n){if(e=A(e),1===arguments.length&&(t=ni.R()),bl("doc","path",t),e instanceof Al){const s=ci.fromString(t,...n);return Tl(s),new Rl(e,null,new hi(s))}{if(!(e instanceof Rl||e instanceof Nl))throw new Hr(zr.INVALID_ARGUMENT,"Expected first argument to collection() to be a CollectionReference, a DocumentReference or FirebaseFirestore");const s=e._path.child(ci.fromString(t,...n));return Tl(s),new Rl(e.firestore,e instanceof Nl?e.converter:null,new hi(s))}}(e),r=function(e,t,n){let s;return s=e?n&&(n.merge||n.mergeFields)?e.toFirestore(t,n):e.toFirestore(t):t,s}(e.converter,t);return function(e,t){return function(e,t){const n=new Kr;return e.asyncQueue.enqueueAndForget((async()=>async function(e,t,n){const s=vl(e);try{const e=await function(e,t){const n=qr(e),s=ii.now(),r=t.reduce(((e,t)=>e.add(t.key)),Na());let i,o;return n.persistence.runTransaction("Locally write mutations","readwrite",(e=>{let a=Ta(),c=Na();return n.Gi.getEntries(e,r).next((e=>{a=e,a.forEach(((e,t)=>{t.isValidDocument()||(c=c.add(e))}))})).next((()=>n.localDocuments.getOverlayedDocuments(e,a))).next((r=>{i=r;const o=[];for(const e of t){const t=aa(e,i.get(e.key).overlayedDocument);null!=t&&o.push(new la(e.key,t,so(t.value.mapValue),ta.exists(!0)))}return n.mutationQueue.addMutationBatch(e,s,o,t)})).next((t=>{o=t;const s=t.applyToLocalDocumentSet(i,c);return n.documentOverlayCache.saveOverlays(e,t.batchId,s)}))})).then((()=>({batchId:o.batchId,changes:ka(i)})))}(s.localStore,t);s.sharedClientState.addPendingMutation(e.batchId),function(e,t,n){let s=e.hc[e.currentUser.toKey()];s||(s=new Ei(si)),s=s.insert(t,n),e.hc[e.currentUser.toKey()]=s}(s,e.batchId,n),await ml(s,e.changes),await Su(s.remoteStore)}catch(e){const t=Vu(e,"Failed to persist write");n.reject(t)}}(await function(e){return Ml(e).then((e=>e.syncEngine))}(e),t,n))),n.promise}($l(e),t)}(n,[Zl(Jl(e.firestore),"addDoc",s._key,r,null!==e.converter,{}).toMutation(s._key,ta.exists(!1))]).then((()=>s))}!function(e,t=!0){xr="9.14.0",fe(new R("firestore",((e,{instanceIdentifier:n,options:s})=>{const r=e.getProvider("app").getImmediate(),i=new Bl(new Xr(e.getProvider("auth-internal")),new ei(e.getProvider("app-check-internal")),function(e,t){if(!Object.prototype.hasOwnProperty.apply(e.options,["projectId"]))throw new Hr(zr.INVALID_ARGUMENT,'"projectId" not provided in firebase.initializeApp.');return new Fi(e.options.projectId,t)}(r,n),r);return s=Object.assign({useFetchStreams:t},s),i._setSettings(s),i}),"PUBLIC").setMultipleInstances(!0)),_e(Or,"3.7.3",e),_e(Or,"3.7.3","esm2017")}();const Sh="firebasestorage.googleapis.com";class Ch extends v{constructor(e,t,n=0){super(Ah(e),`Firebase Storage: ${t} (${Ah(e)})`),this.status_=n,this.customData={serverResponse:null},this._baseMessage=this.message,Object.setPrototypeOf(this,Ch.prototype)}get status(){return this.status_}set status(e){this.status_=e}_codeEquals(e){return Ah(e)===this.code}get serverResponse(){return this.customData.serverResponse}set serverResponse(e){this.customData.serverResponse=e,this.customData.serverResponse?this.message=`${this._baseMessage}\n${this.customData.serverResponse}`:this.message=this._baseMessage}}function Ah(e){return"storage/"+e}function Rh(){return new Ch("unknown","An unknown error occurred, please check the error payload for server response.")}function Dh(){return new Ch("retry-limit-exceeded","Max retry time for operation exceeded, please try again.")}function Nh(){return new Ch("canceled","User canceled the upload/download.")}function Oh(){return new Ch("cannot-slice-blob","Cannot slice blob for upload. Please retry the upload.")}function Lh(e){return new Ch("invalid-argument",e)}function xh(){return new Ch("app-deleted","The Firebase app was deleted.")}function Ph(e,t){return new Ch("invalid-format","String does not match format '"+e+"': "+t)}function Mh(e){throw new Ch("internal-error","Internal error: "+e)}class Uh{constructor(e,t){this.bucket=e,this.path_=t}get path(){return this.path_}get isRoot(){return 0===this.path.length}fullServerUrl(){const e=encodeURIComponent;return"/b/"+e(this.bucket)+"/o/"+e(this.path)}bucketOnlyServerUrl(){return"/b/"+encodeURIComponent(this.bucket)+"/o"}static makeFromBucketSpec(e,t){let n;try{n=Uh.makeFromUrl(e,t)}catch(t){return new Uh(e,"")}if(""===n.path)return n;throw new Ch("invalid-default-bucket","Invalid default bucket '"+e+"'.")}static makeFromUrl(e,t){let n=null;const s="([A-Za-z0-9.\\-_]+)",r=new RegExp("^gs://"+s+"(/(.*))?$","i");function i(e){e.path_=decodeURIComponent(e.path)}const o=t.replace(/[.]/g,"\\."),a=[{regex:r,indices:{bucket:1,path:3},postModify:function(e){"/"===e.path.charAt(e.path.length-1)&&(e.path_=e.path_.slice(0,-1))}},{regex:new RegExp(`^https?://${o}/v[A-Za-z0-9_]+/b/${s}/o(/([^?#]*).*)?$`,"i"),indices:{bucket:1,path:3},postModify:i},{regex:new RegExp(`^https?://${t===Sh?"(?:storage.googleapis.com|storage.cloud.google.com)":t}/${s}/([^?#]*)`,"i"),indices:{bucket:1,path:2},postModify:i}];for(let t=0;tn)throw Lh(`Invalid value for '${e}'. Expected ${n} or less.`)}function qh(e,t,n){let s=t;return null==n&&(s=`https://${t}`),`${n}://${s}/v0${e}`}function zh(e){const t=encodeURIComponent;let n="?";for(const s in e)e.hasOwnProperty(s)&&(n=n+(t(s)+"=")+t(e[s])+"&");return n=n.slice(0,-1),n}var Hh;function Kh(e,t){const n=e>=500&&e<600,s=-1!==[408,429].indexOf(e),r=-1!==t.indexOf(e);return n||s||r}!function(e){e[e.NO_ERROR=0]="NO_ERROR",e[e.NETWORK_ERROR=1]="NETWORK_ERROR",e[e.ABORT=2]="ABORT"}(Hh||(Hh={}));class Gh{constructor(e,t,n,s,r,i,o,a,c,u,l,h=!0){this.url_=e,this.method_=t,this.headers_=n,this.body_=s,this.successCodes_=r,this.additionalRetryCodes_=i,this.callback_=o,this.errorCallback_=a,this.timeout_=c,this.progressCallback_=u,this.connectionFactory_=l,this.retry=h,this.pendingConnection_=null,this.backoffId_=null,this.canceled_=!1,this.appDelete_=!1,this.promise_=new Promise(((e,t)=>{this.resolve_=e,this.reject_=t,this.start_()}))}start_(){const e=(e,t)=>{const n=this.resolve_,s=this.reject_,r=t.connection;if(t.wasSuccessCode)try{const e=this.callback_(r,r.getResponse());!function(e){return void 0!==e}(e)?n():n(e)}catch(e){s(e)}else if(null!==r){const e=Rh();e.serverResponse=r.getErrorText(),this.errorCallback_?s(this.errorCallback_(r,e)):s(e)}else t.canceled?s(this.appDelete_?xh():Nh()):s(Dh())};this.canceled_?e(0,new Wh(!1,null,!0)):this.backoffId_=function(e,t,n){let s=1,r=null,i=null,o=!1,a=0;function c(){return 2===a}let u=!1;function l(...e){u||(u=!0,t.apply(null,e))}function h(t){r=setTimeout((()=>{r=null,e(f,c())}),t)}function d(){i&&clearTimeout(i)}function f(e,...t){if(u)return void d();if(e)return d(),void l.call(null,e,...t);if(c()||o)return d(),void l.call(null,e,...t);let n;s<64&&(s*=2),1===a?(a=2,n=0):n=1e3*(s+Math.random()),h(n)}let p=!1;function m(e){p||(p=!0,d(),u||(null!==r?(e||(a=2),clearTimeout(r),h(0)):e||(a=1)))}return h(0),i=setTimeout((()=>{o=!0,m(!0)}),n),m}(((e,t)=>{if(t)return void e(!1,new Wh(!1,null,!0));const n=this.connectionFactory_();this.pendingConnection_=n;const s=e=>{const t=e.loaded,n=e.lengthComputable?e.total:-1;null!==this.progressCallback_&&this.progressCallback_(t,n)};null!==this.progressCallback_&&n.addUploadProgressListener(s),n.send(this.url_,this.method_,this.body_,this.headers_).then((()=>{null!==this.progressCallback_&&n.removeUploadProgressListener(s),this.pendingConnection_=null;const t=n.getErrorCode()===Hh.NO_ERROR,r=n.getStatus();if((!t||Kh(r,this.additionalRetryCodes_))&&this.retry){const t=n.getErrorCode()===Hh.ABORT;return void e(!1,new Wh(!1,null,t))}const i=-1!==this.successCodes_.indexOf(r);e(!0,new Wh(i,n))}))}),e,this.timeout_)}getPromise(){return this.promise_}cancel(e){this.canceled_=!0,this.appDelete_=e||!1,null!==this.backoffId_&&function(e){e(!1)}(this.backoffId_),null!==this.pendingConnection_&&this.pendingConnection_.abort()}}class Wh{constructor(e,t,n){this.wasSuccessCode=e,this.connection=t,this.canceled=!!n}}function Qh(){return"undefined"!=typeof BlobBuilder?BlobBuilder:"undefined"!=typeof WebKitBlobBuilder?WebKitBlobBuilder:void 0}function Xh(...e){const t=Qh();if(void 0!==t){const n=new t;for(let t=0;t>6,128|63&s):55296==(64512&s)?n>18,128|s>>12&63,128|s>>6&63,128|63&s)):t.push(239,191,189):56320==(64512&s)?t.push(239,191,189):t.push(224|s>>12,128|s>>6&63,128|63&s)}return new Uint8Array(t)}function nd(e,t){switch(e){case Yh:{const n=-1!==t.indexOf("-"),s=-1!==t.indexOf("_");if(n||s)throw Ph(e,"Invalid character '"+(n?"-":"_")+"' found: is it base64url encoded?");break}case Jh:{const n=-1!==t.indexOf("+"),s=-1!==t.indexOf("/");if(n||s)throw Ph(e,"Invalid character '"+(n?"+":"/")+"' found: is it base64 encoded?");t=t.replace(/-/g,"+").replace(/_/g,"/");break}}let n;try{n=function(e){if("undefined"==typeof atob)throw new Ch("unsupported-environment","base-64 is missing. Make sure to install the required polyfills. See https://firebase.google.com/docs/web/environments-js-sdk#polyfills for more information.");return atob(e)}(t)}catch(t){if(t.message.includes("polyfill"))throw t;throw Ph(e,"Invalid character found")}const s=new Uint8Array(n.length);for(let e=0;e][;base64],");const n=t[1]||null;var s,r;null!=n&&(this.base64=(r=";base64",(s=n).length>=r.length&&s.substring(s.length-r.length)===r),this.contentType=this.base64?n.substring(0,n.length-";base64".length):n),this.rest=e.substring(e.indexOf(",")+1)}}class rd{constructor(e,t){let n=0,s="";Bh(e)?(this.data_=e,n=e.size,s=e.type):e instanceof ArrayBuffer?(t?this.data_=new Uint8Array(e):(this.data_=new Uint8Array(e.byteLength),this.data_.set(new Uint8Array(e))),n=this.data_.length):e instanceof Uint8Array&&(t?this.data_=e:(this.data_=new Uint8Array(e.length),this.data_.set(e)),n=e.length),this.size_=n,this.type_=s}size(){return this.size_}type(){return this.type_}slice(e,t){if(Bh(this.data_)){const i=(n=this.data_,s=e,r=t,n.webkitSlice?n.webkitSlice(s,r):n.mozSlice?n.mozSlice(s,r):n.slice?n.slice(s,r):null);return null===i?null:new rd(i)}var n,s,r;{const n=new Uint8Array(this.data_.buffer,e,t-e);return new rd(n,!0)}}static getBlob(...e){if($h()){const t=e.map((e=>e instanceof rd?e.data_:e));return new rd(Xh.apply(null,t))}{const t=e.map((e=>Vh(e)?function(e,t){switch(e){case"raw":return new ed(td(t));case Yh:case Jh:return new ed(nd(e,t));case Zh:return new ed(function(e){const t=new sd(e);return t.base64?nd(Yh,t.rest):function(e){let t;try{t=decodeURIComponent(e)}catch(e){throw Ph(Zh,"Malformed data URL.")}return td(t)}(t.rest)}(t),new sd(t).contentType)}throw Rh()}("raw",e).data:e.data_));let n=0;t.forEach((e=>{n+=e.byteLength}));const s=new Uint8Array(n);let r=0;return t.forEach((e=>{for(let t=0;t{Promise.resolve().then((()=>e(...t)))}}class Dd{constructor(){this.sent_=!1,this.xhr_=new XMLHttpRequest,this.initXhr(),this.errorCode_=Hh.NO_ERROR,this.sendPromise_=new Promise((e=>{this.xhr_.addEventListener("abort",(()=>{this.errorCode_=Hh.ABORT,e()})),this.xhr_.addEventListener("error",(()=>{this.errorCode_=Hh.NETWORK_ERROR,e()})),this.xhr_.addEventListener("load",(()=>{e()}))}))}send(e,t,n,s){if(this.sent_)throw Mh("cannot .send() more than once");if(this.sent_=!0,this.xhr_.open(t,e,!0),void 0!==s)for(const e in s)s.hasOwnProperty(e)&&this.xhr_.setRequestHeader(e,s[e].toString());return void 0!==n?this.xhr_.send(n):this.xhr_.send(),this.sendPromise_}getErrorCode(){if(!this.sent_)throw Mh("cannot .getErrorCode() before sending");return this.errorCode_}getStatus(){if(!this.sent_)throw Mh("cannot .getStatus() before sending");try{return this.xhr_.status}catch(e){return-1}}getResponse(){if(!this.sent_)throw Mh("cannot .getResponse() before sending");return this.xhr_.response}getErrorText(){if(!this.sent_)throw Mh("cannot .getErrorText() before sending");return this.xhr_.statusText}abort(){this.xhr_.abort()}getResponseHeader(e){return this.xhr_.getResponseHeader(e)}addUploadProgressListener(e){null!=this.xhr_.upload&&this.xhr_.upload.addEventListener("progress",e)}removeUploadProgressListener(e){null!=this.xhr_.upload&&this.xhr_.upload.removeEventListener("progress",e)}}class Nd extends Dd{initXhr(){this.xhr_.responseType="text"}}function Od(){return new Nd}class Ld{constructor(e,t,n=null){this._transferred=0,this._needToFetchStatus=!1,this._needToFetchMetadata=!1,this._observers=[],this._error=void 0,this._uploadUrl=void 0,this._request=void 0,this._chunkMultiplier=1,this._resolve=void 0,this._reject=void 0,this._ref=e,this._blob=t,this._metadata=n,this._mappings=ld(),this._resumable=this._shouldDoResumable(this._blob),this._state="running",this._errorHandler=e=>{if(this._request=void 0,this._chunkMultiplier=1,e._codeEquals("canceled"))this._needToFetchStatus=!0,this.completeTransitions_();else{const t=this.isExponentialBackoffExpired();if(Kh(e.status,[])){if(!t)return this.sleepTime=Math.max(2*this.sleepTime,1e3),this._needToFetchStatus=!0,void this.completeTransitions_();e=Dh()}this._error=e,this._transition("error")}},this._metadataErrorHandler=e=>{this._request=void 0,e._codeEquals("canceled")?this.completeTransitions_():(this._error=e,this._transition("error"))},this.sleepTime=0,this.maxSleepTime=this._ref.storage.maxUploadRetryTime,this._promise=new Promise(((e,t)=>{this._resolve=e,this._reject=t,this._start()})),this._promise.then(null,(()=>{}))}isExponentialBackoffExpired(){return this.sleepTime>this.maxSleepTime}_makeProgressCallback(){const e=this._transferred;return t=>this._updateProgress(e+t)}_shouldDoResumable(e){return e.size()>262144}_start(){"running"===this._state&&void 0===this._request&&(this._resumable?void 0===this._uploadUrl?this._createResumable():this._needToFetchStatus?this._fetchStatus():this._needToFetchMetadata?this._fetchMetadata():this.pendingTimeout=setTimeout((()=>{this.pendingTimeout=void 0,this._continueUpload()}),this.sleepTime):this._oneShotUpload())}_resolveToken(e){Promise.all([this._ref.storage._getAuthToken(),this._ref.storage._getAppCheckToken()]).then((([t,n])=>{switch(this._state){case"running":e(t,n);break;case"canceling":this._transition("canceled");break;case"pausing":this._transition("paused")}}))}_createResumable(){this._resolveToken(((e,t)=>{const n=function(e,t,n,s,r){const i=t.bucketOnlyServerUrl(),o=vd(t,s,r),a={name:o.fullPath},c=qh(i,e.host,e._protocol),u={"X-Goog-Upload-Protocol":"resumable","X-Goog-Upload-Command":"start","X-Goog-Upload-Header-Content-Length":`${s.size()}`,"X-Goog-Upload-Header-Content-Type":o.contentType,"Content-Type":"application/json; charset=utf-8"},l=dd(o,n),h=e.maxUploadRetryTime,d=new fd(c,"POST",(function(e){let t;_d(e);try{t=e.getResponseHeader("X-Goog-Upload-URL")}catch(e){pd(!1)}return pd(Vh(t)),t}),h);return d.urlParams=a,d.headers=u,d.body=l,d.errorHandler=gd(t),d}(this._ref.storage,this._ref._location,this._mappings,this._blob,this._metadata),s=this._ref.storage._makeRequest(n,Od,e,t);this._request=s,s.getPromise().then((e=>{this._request=void 0,this._uploadUrl=e,this._needToFetchStatus=!1,this.completeTransitions_()}),this._errorHandler)}))}_fetchStatus(){const e=this._uploadUrl;this._resolveToken(((t,n)=>{const s=function(e,t,n,s){const r=e.maxUploadRetryTime,i=new fd(n,"POST",(function(e){const t=_d(e,["active","final"]);let n=null;try{n=e.getResponseHeader("X-Goog-Upload-Size-Received")}catch(e){pd(!1)}n||pd(!1);const r=Number(n);return pd(!isNaN(r)),new wd(r,s.size(),"final"===t)}),r);return i.headers={"X-Goog-Upload-Command":"query"},i.errorHandler=gd(t),i}(this._ref.storage,this._ref._location,e,this._blob),r=this._ref.storage._makeRequest(s,Od,t,n);this._request=r,r.getPromise().then((e=>{this._request=void 0,this._updateProgress(e.current),this._needToFetchStatus=!1,e.finalized&&(this._needToFetchMetadata=!0),this.completeTransitions_()}),this._errorHandler)}))}_continueUpload(){const e=bd*this._chunkMultiplier,t=new wd(this._transferred,this._blob.size()),n=this._uploadUrl;this._resolveToken(((s,r)=>{let i;try{i=function(e,t,n,s,r,i,o,a){const c=new wd(0,0);if(o?(c.current=o.current,c.total=o.total):(c.current=0,c.total=s.size()),s.size()!==c.total)throw new Ch("server-file-wrong-size","Server recorded incorrect upload file size, please retry the upload.");const u=c.total-c.current;let l=u;r>0&&(l=Math.min(l,r));const h=c.current,d=h+l;let f="";f=0===l?"finalize":u===l?"upload, finalize":"upload";const p={"X-Goog-Upload-Command":f,"X-Goog-Upload-Offset":`${c.current}`},m=s.slice(h,d);if(null===m)throw Oh();const g=t.maxUploadRetryTime,y=new fd(n,"POST",(function(e,n){const r=_d(e,["active","final"]),o=c.current+l,a=s.size();let u;return u="final"===r?md(t,i)(e,n):null,new wd(o,a,"final"===r,u)}),g);return y.headers=p,y.body=m.uploadData(),y.progressCallback=a||null,y.errorHandler=gd(e),y}(this._ref._location,this._ref.storage,n,this._blob,e,this._mappings,t,this._makeProgressCallback())}catch(e){return this._error=e,void this._transition("error")}const o=this._ref.storage._makeRequest(i,Od,s,r,!1);this._request=o,o.getPromise().then((e=>{this._increaseMultiplier(),this._request=void 0,this._updateProgress(e.current),e.finalized?(this._metadata=e.metadata,this._transition("success")):this.completeTransitions_()}),this._errorHandler)}))}_increaseMultiplier(){bd*this._chunkMultiplier*2<33554432&&(this._chunkMultiplier*=2)}_fetchMetadata(){this._resolveToken(((e,t)=>{const n=function(e,t,n){const s=qh(t.fullServerUrl(),e.host,e._protocol),r=e.maxOperationRetryTime,i=new fd(s,"GET",md(e,n),r);return i.errorHandler=yd(t),i}(this._ref.storage,this._ref._location,this._mappings),s=this._ref.storage._makeRequest(n,Od,e,t);this._request=s,s.getPromise().then((e=>{this._request=void 0,this._metadata=e,this._transition("success")}),this._metadataErrorHandler)}))}_oneShotUpload(){this._resolveToken(((e,t)=>{const n=function(e,t,n,s,r){const i=t.bucketOnlyServerUrl(),o={"X-Goog-Upload-Protocol":"multipart"},a=function(){let e="";for(let t=0;t<2;t++)e+=Math.random().toString().slice(2);return e}();o["Content-Type"]="multipart/related; boundary="+a;const c=vd(t,s,r),u="--"+a+"\r\nContent-Type: application/json; charset=utf-8\r\n\r\n"+dd(c,n)+"\r\n--"+a+"\r\nContent-Type: "+c.contentType+"\r\n\r\n",l="\r\n--"+a+"--",h=rd.getBlob(u,s,l);if(null===h)throw Oh();const d={name:c.fullPath},f=qh(i,e.host,e._protocol),p=e.maxUploadRetryTime,m=new fd(f,"POST",md(e,n),p);return m.urlParams=d,m.headers=o,m.body=h.uploadData(),m.errorHandler=gd(t),m}(this._ref.storage,this._ref._location,this._mappings,this._blob,this._metadata),s=this._ref.storage._makeRequest(n,Od,e,t);this._request=s,s.getPromise().then((e=>{this._request=void 0,this._metadata=e,this._updateProgress(this._blob.size()),this._transition("success")}),this._errorHandler)}))}_updateProgress(e){const t=this._transferred;this._transferred=e,this._transferred!==t&&this._notifyObservers()}_transition(e){if(this._state!==e)switch(e){case"canceling":case"pausing":this._state=e,void 0!==this._request?this._request.cancel():this.pendingTimeout&&(clearTimeout(this.pendingTimeout),this.pendingTimeout=void 0,this.completeTransitions_());break;case"running":const t="paused"===this._state;this._state=e,t&&(this._notifyObservers(),this._start());break;case"paused":case"error":case"success":this._state=e,this._notifyObservers();break;case"canceled":this._error=Nh(),this._state=e,this._notifyObservers()}}completeTransitions_(){switch(this._state){case"pausing":this._transition("paused");break;case"canceling":this._transition("canceled");break;case"running":this._start()}}get snapshot(){const e=Cd(this._state);return{bytesTransferred:this._transferred,totalBytes:this._blob.size(),state:e,metadata:this._metadata,task:this,ref:this._ref}}on(e,t,n,s){const r=new Ad(t||void 0,n||void 0,s||void 0);return this._addObserver(r),()=>{this._removeObserver(r)}}then(e,t){return this._promise.then(e,t)}catch(e){return this.then(null,e)}_addObserver(e){this._observers.push(e),this._notifyObserver(e)}_removeObserver(e){const t=this._observers.indexOf(e);-1!==t&&this._observers.splice(t,1)}_notifyObservers(){this._finishPromise(),this._observers.slice().forEach((e=>{this._notifyObserver(e)}))}_finishPromise(){if(void 0!==this._resolve){let e=!0;switch(Cd(this._state)){case Id:Rd(this._resolve.bind(null,this.snapshot))();break;case kd:case Sd:Rd(this._reject.bind(null,this._error))();break;default:e=!1}e&&(this._resolve=void 0,this._reject=void 0)}}_notifyObserver(e){switch(Cd(this._state)){case Td:case Ed:e.next&&Rd(e.next.bind(e,this.snapshot))();break;case Id:e.complete&&Rd(e.complete.bind(e))();break;default:e.error&&Rd(e.error.bind(e,this._error))()}}resume(){const e="paused"===this._state||"pausing"===this._state;return e&&this._transition("running"),e}pause(){const e="running"===this._state;return e&&this._transition("pausing"),e}cancel(){const e="running"===this._state||"pausing"===this._state;return e&&this._transition("canceling"),e}}class xd{constructor(e,t){this._service=e,this._location=t instanceof Uh?t:Uh.makeFromUrl(t,e.host)}toString(){return"gs://"+this._location.bucket+"/"+this._location.path}_newRef(e,t){return new xd(e,t)}get root(){const e=new Uh(this._location.bucket,"");return this._newRef(this._service,e)}get bucket(){return this._location.bucket}get fullPath(){return this._location.path}get name(){return od(this._location.path)}get storage(){return this._service}get parent(){const e=function(e){if(0===e.length)return null;const t=e.lastIndexOf("/");return-1===t?"":e.slice(0,t)}(this._location.path);if(null===e)return null;const t=new Uh(this._location.bucket,e);return new xd(this._service,t)}_throwIfRoot(e){if(""===this._location.path)throw function(e){return new Ch("invalid-root-operation","The operation '"+e+"' cannot be performed on a root reference, create a non-root reference using child, such as .child('file.png').")}(e)}}function Pd(e){e._throwIfRoot("getDownloadURL");const t=function(e,t,n){const s=qh(t.fullServerUrl(),e.host,e._protocol),r=e.maxOperationRetryTime,i=new fd(s,"GET",function(e,t){return function(n,s){const r=hd(e,s,t);return pd(null!==r),function(e,t,n,s){const r=id(t);if(null===r)return null;if(!Vh(r.downloadTokens))return null;const i=r.downloadTokens;if(0===i.length)return null;const o=encodeURIComponent;return i.split(",").map((t=>{const r=e.bucket,i=e.fullPath;return qh("/b/"+o(r)+"/o/"+o(i),n,s)+zh({alt:"media",token:t})}))[0]}(r,s,e.host,e._protocol)}}(e,n),r);return i.errorHandler=yd(t),i}(e.storage,e._location,ld());return e.storage.makeRequestWithTokens(t,Od).then((e=>{if(null===e)throw new Ch("no-download-url","The given file does not have any download URLs.");return e}))}function Md(e,t){if(e instanceof Fd){const n=e;if(null==n._bucket)throw new Ch("no-default-bucket","No default bucket found. Did you set the 'storageBucket' property when initializing the app?");const s=new xd(n,n._bucket);return null!=t?Md(s,t):s}return void 0!==t?function(e,t){const n=function(e,t){const n=t.split("/").filter((e=>e.length>0)).join("/");return 0===e.length?n:e+"/"+n}(e._location.path,t),s=new Uh(e._location.bucket,n);return new xd(e.storage,s)}(e,t):e}function Ud(e,t){const n=null==t?void 0:t.storageBucket;return null==n?null:Uh.makeFromBucketSpec(n,e)}class Fd{constructor(e,t,n,s,r){this.app=e,this._authProvider=t,this._appCheckProvider=n,this._url=s,this._firebaseVersion=r,this._bucket=null,this._host=Sh,this._protocol="https",this._appId=null,this._deleted=!1,this._maxOperationRetryTime=12e4,this._maxUploadRetryTime=6e5,this._requests=new Set,this._bucket=null!=s?Uh.makeFromBucketSpec(s,this._host):Ud(this._host,this.app.options)}get host(){return this._host}set host(e){this._host=e,null!=this._url?this._bucket=Uh.makeFromBucketSpec(this._url,e):this._bucket=Ud(e,this.app.options)}get maxUploadRetryTime(){return this._maxUploadRetryTime}set maxUploadRetryTime(e){jh("time",0,Number.POSITIVE_INFINITY,e),this._maxUploadRetryTime=e}get maxOperationRetryTime(){return this._maxOperationRetryTime}set maxOperationRetryTime(e){jh("time",0,Number.POSITIVE_INFINITY,e),this._maxOperationRetryTime=e}async _getAuthToken(){if(this._overrideAuthToken)return this._overrideAuthToken;const e=this._authProvider.getImmediate({optional:!0});if(e){const t=await e.getToken();if(null!==t)return t.accessToken}return null}async _getAppCheckToken(){const e=this._appCheckProvider.getImmediate({optional:!0});return e?(await e.getToken()).token:null}_delete(){return this._deleted||(this._deleted=!0,this._requests.forEach((e=>e.cancel())),this._requests.clear()),Promise.resolve()}_makeStorageReference(e){return new xd(this,e)}_makeRequest(e,t,n,s,r=!0){if(this._deleted)return new Fh(xh());{const i=function(e,t,n,s,r,i,o=!0){const a=zh(e.urlParams),c=e.url+a,u=Object.assign({},e.headers);return function(e,t){t&&(e["X-Firebase-GMPID"]=t)}(u,t),function(e,t){null!==t&&t.length>0&&(e.Authorization="Firebase "+t)}(u,n),function(e,t){e["X-Firebase-Storage-Version"]="webjs/"+(null!=t?t:"AppManager")}(u,i),function(e,t){null!==t&&(e["X-Firebase-AppCheck"]=t)}(u,s),new Gh(c,e.method,u,e.body,e.successCodes,e.additionalRetryCodes,e.handler,e.errorHandler,e.timeout,e.progressCallback,r,o)}(e,this._appId,n,s,t,this._firebaseVersion,r);return this._requests.add(i),i.getPromise().then((()=>this._requests.delete(i)),(()=>this._requests.delete(i))),i}}async makeRequestWithTokens(e,t){const[n,s]=await Promise.all([this._getAuthToken(),this._getAppCheckToken()]);return this._makeRequest(e,t,n,s).getPromise()}}const Vd="@firebase/storage",Bd="0.9.14",$d="storage";fe(new R($d,(function(e,{instanceIdentifier:t}){const n=e.getProvider("app").getImmediate(),s=e.getProvider("auth-internal"),r=e.getProvider("app-check-internal");return new Fd(n,s,r,t,ye)}),"PUBLIC").setMultipleInstances(!0)),_e(Vd,Bd,""),_e(Vd,Bd,"esm2017");const jd=(e,t,n,s)=>new Promise(((r,i)=>{var o;const a=function(e,t,n){return function(e,t,n){return e._throwIfRoot("uploadBytesResumable"),new Ld(e,new rd(t),n)}(e=A(e),t,n)}((o=e+"/"+n,function(e,t){if(t&&/^[A-Za-z]+:\/\//.test(t)){if(e instanceof Fd)return new xd(e,t);throw Lh("To use ref(service, url), the first argument must be a Storage instance.")}return Md(e,t)}(A(Um),o)),t,s);a.on("state_changed",(e=>{}),(e=>{switch(e.code){case"storage/unauthorized":case"storage/canceled":case"storage/unknown":i("Uploading Error")}}),(()=>{var e;(e=a.snapshot.ref,Pd(e=A(e))).then((e=>{r(e)}))}))}));function qd(e,t){let n=e.querySelector(".drop-zone__thumb");if(e.querySelector(".drop-zone__prompt")&&e.querySelector(".drop-zone__prompt").remove(),n||(n=document.createElement("div"),n.classList.add("drop-zone__thumb"),e.appendChild(n)),n.dataset.label=t.name,t.type.startsWith("image/")){const e=new FileReader;e.readAsDataURL(t),e.onload=()=>{n.style.backgroundImage=`url('${e.result}')`,console.log("done background change")}}else n.style.backgroundImage=null,console.log("not done background change")}const zd={contentType:"image/jpeg",author:"IEDC-SJCET-Palai"};var Hd,Kd,Gd;const Wd={contentType:"image/jpeg",author:"IEDC-SJCET-Palai"};var Qd,Xd,Yd;const Jd=async()=>{const e=document.getElementById("formHead"),t=fh(Ol(Mm,"FORMS"),mh("TimeStamp","desc"),(function(e,t){if(t<=0)throw new Hr(zr.INVALID_ARGUMENT,`Function ${e}() requires a positive number, but it was: ${t}.`)}("limit",1),new gh("limit",1,"F")));(await Ih(t)).forEach((t=>{let n=t.data();console.log(n),e.innerHTML+=function(e){let t=new Date(e.FormEndsAt)>new Date?'Live ':'Closed ',n=new Date(e.FormEndsAt)>new Date?`Form ends in ${o(new Date,new Date(e.FormEndsAt))}`:`Form ended ${i(new Date,new Date(e.FormEndsAt))}`,s=new Date(e.EventStartAt)>new Date?`Event starts in ${o(new Date,new Date(e.EventStartAt))}`:`Event started ${i(new Date,new Date(e.EventStartAt))}`;return`
\n \n
\n

${e.EventName}

\n ${t} \n \n
\n
\n
\n x\n
\n
\n ${n}\n
\n
\n ${s}\n
\n
\n \n
`}(n);let s="empty"===n.extQ1,r="empty"===n.extQ2,a="empty"===n.extQ3;const c=fh(Ol(Mm,n.collectionName),mh("TimeStamp","desc"));document.getElementById("responcesTable").innerHTML+=`\n TimeStamp\n Name\n Email\n Whatsapp\n Dept\n Year\n College\n \n ${s?"":`${n.extQ1}`}\n ${r?"":`${n.extQ2}`}\n ${a?"":`${n.extQ3}`}\n \n Source\n Message\n `;const u=document.getElementById("responcesTableBody");Zd(c,u,s,r,a),document.getElementById("refreshBTN").addEventListener("click",(e=>{e.preventDefault(),Zd(c,u,s,r,a)}))}))};async function Zd(e,t,n,s,r){t.innerHTML="";const o=await Ih(e);let a=0;o.forEach((e=>{let o=e.data();console.log(o),t.innerHTML+=function(e,t,n,s){let r=`\n ${i(new Date,new Date(e.TimeStamp))}\n ${e.Name}\n ${e.Email}\n ${e.WhatsappNumber}\n ${e.branch}\n ${e.currentYear}\n ${e.institutionName}`;return t||(r+=`${e.extQ1}`),n||(r+=`${e.extQ2}`),s||(r+=`${e.extQ3}`),r+`${e.ads}\n ${e.message}`}(o,n,s,r),a++})),document.getElementById("noRes").innerHTML=a}async function ef(e,t){t.innerHTML="";const n=await Ih(e);let s=0;n.forEach((e=>{let n=e.data();var r;t.innerHTML+=`\n ${(r=n)?.UploadTimeStamp?i(new Date,new Date(r.UploadTimeStamp)):"-"}\n ${r.member1.name}\n ${r.member1.branch}\n ${r.member1.year}\n\n ${r.member1Email||""}\n ${r.member1Phone||""}\n\n ${r.member2.name||""}\n ${r.member2.branch||""}\n ${r.member2.year||""}\n\n ${r.member3.name||""}\n ${r.member3.branch||""}\n ${r.member3.year||""}\n\n ${r.member4.name||""}\n ${r.member4.branch||""}\n ${r.member4.year||""}\n\n ${r.member5.name||""}\n ${r.member5.branch||""}\n ${r.member5.year||""}\n\n ${r.member6.name||""}\n ${r.member6.branch||""}\n ${r.member6.year||""}\n \n \n ${r.describe||""}\n ${r.psTitle||""}\n ${r.psCode||""}\n ${r.dependency||""}\n ${r.techStack||""}\n ${r.theme||""}\n ${r.useCase||""}\n \n \n \n ${tf(r.url)}\n \n\n `,s++})),document.getElementById("noRes").innerHTML=s}function tf(e){return e.includes("http")?e:`https://${e}`}async function nf(e,t){t.innerHTML="";const n=await Ih(e);let s=0;n.forEach((e=>{let n=e.data(),r=e.id;t.innerHTML+=function(e,t){return`\n ${e?.UploadTimeStamp?i(new Date,new Date(e.UploadTimeStamp)):"-"}\n ${e.teamLeader.studentName}\n ${e.teamLeader.branch}\n ${e.teamLeader.currentYear}\n ${e.teamLeader.studentEmail}\n ${e.teamLeader.studentPhone}\n ${e.teamLeader.gender}\n ${e.teamLeader.linkedin?`${e.teamLeader.linkedin}`:""}\n ${e.teamLeader.portfolio?`${e.teamLeader.portfolio}`:""}\n ${e.teamLeader.foodPreference||""} \x3c!-- Food Preference --\x3e\n\n ${e.members[0]?.member2Name||""}\n ${e.members[0]?.member2Email||""}\n ${e.members[0]?.member2Branch||""}\n ${e.members[0]?.member2Year||""}\n ${e.members[0]?.member2FoodPreference||""}\n\n ${e.members[1]?.member3Name||""}\n ${e.members[1]?.member3Email||""}\n ${e.members[1]?.member3Branch||""}\n ${e.members[1]?.member3Year||""}\n ${e.members[1]?.member3FoodPreference||""}\n\n ${e.members[2]?.member4Name||""}\n ${e.members[2]?.member4Email||""}\n ${e.members[2]?.member4Branch||""}\n ${e.members[2]?.member4Year||""}\n ${e.members[2]?.member4FoodPreference||""}\n\n ${e.members[3]?.member5Name||""}\n ${e.members[3]?.member5Email||""}\n ${e.members[3]?.member5Branch||""}\n ${e.members[3]?.member5Year||""}\n ${e.members[3]?.member5FoodPreference||""}\n\n ${e.members[4]?.member6Name||""}\n ${e.members[4]?.member6Email||""}\n ${e.members[4]?.member6Branch||""}\n ${e.members[4]?.member6Year||""}\n ${e.members[4]?.member6FoodPreference||""}\n\n ${t||""} \n ${e.teamName||""} \n ${e.categoryOfProduct||""} \n ${e.countOfMembers||""} \n\n ${e.describe||""}\n ${e.psTitle||""}\n ${e.psCode||""}\n ${e.dependency||""}\n ${e.techStack.split(",").join(";")||""}\n ${e.theme||""}\n ${e.useCase||""}\n \n \n \n \n \n ${e.url?sf(e.url):"No URL provided"}\n \n\n `}(n,r),s++})),document.getElementById("noRes").innerHTML=s}function sf(e){return e?e.includes("http")?e:`https://${e}`:"#"}function rf(){document.getElementById("authLogoutBTN").addEventListener("click",(e=>{e.preventDefault(),function(e){return A(e).signOut()}(Fm).then((()=>{console.log("user signed out"),alert("user signed out"),Vm()})).catch((e=>{console.log(e.message),alert(e.message)}))})),document.getElementById("addEventsBTN").addEventListener("click",(e=>{e.preventDefault(),$("#app").load("forms/upload.html",(()=>{(()=>{const e=document.getElementById("uploadform"),i=Ol(Mm,"EVENTS");e.addEventListener("submit",(o=>{o.preventDefault(),n(),console.log("upLoading IMG"),Xd=e.name.value.replace(/ +/g,""),jd("EVENTS",Qd,Xd,Wd).then((n=>{Yd=n,kh(i,{EventName:e.name.value,RedirectLink:e.link.value,EventStartsAt:r(e.dateS.value),LinkExpireAt:r(e.dateE.value),Description:e.message.value,EventVenue:e.venue.value,IMG_URL:Yd,UploadTimeStamp:Date.now()}).then((()=>{e.reset(),console.log("Event Submited"),$("#app").load("forms/successfull.html",(()=>{s(Yd),t()}))}))})).catch((e=>{console.log(e),$("#app").load("forms/failed.html",(()=>{s("."),t()}))}))})),document.querySelectorAll(".drop-zone__input").forEach((e=>{const t=e.closest(".drop-zone");t.addEventListener("click",(t=>{e.click()})),e.addEventListener("change",(n=>{e.files.length&&(console.log("added file"),Qd=n.target.files[0],Xd=Qd.name,console.log(Xd),qd(t,Qd))})),t.addEventListener("dragover",(e=>{e.preventDefault(),t.classList.add("drop-zone--over")})),["dragleave","dragend"].forEach((e=>{t.addEventListener(e,(e=>{t.classList.remove("drop-zone--over")}))})),t.addEventListener("drop",(n=>{n.preventDefault(),n.dataTransfer.files.length&&(e.files=n.dataTransfer.files,console.log("added file"),Qd=n.dataTransfer.files[0],Xd=Qd.name,console.log(Xd),qd(t,Qd)),t.classList.remove("drop-zone--over")}))}))})(),of()}))})),document.getElementById("createFormBTN").addEventListener("click",(e=>{e.preventDefault(),console.log("auto form loading"),$("#app").load("forms/autoFORM.html",(()=>{(()=>{const e=document.getElementById("autoForm"),i=Ol(Mm,"FORMS");e.addEventListener("submit",(o=>{o.preventDefault(),n(),Kd=e.EventName.value.replace(/ +/g,""),jd("FORM",Hd,Kd,zd).then((n=>{Gd=n;let o=""===e.extQ1.value?"empty":e.extQ1.value,a=""===e.extQ2.value?"empty":e.extQ2.value,c=""===e.extQ3.value?"empty":e.extQ3.value,u=""===e.extText.value?"empty":e.extText.value,l=e.EventName.value.replace(/ +/g,"");kh(i,{EventName:e.EventName.value,EventDescription:e.EventDes.value,EventStartAt:r(e.eventStartsAt.value),FormEndsAt:r(e.formEndsAt.value),TimeStamp:Date.now(),ImgURL:Gd,extText:u,extQ1:o,extQ2:a,extQ3:c,collectionName:l}).then((()=>{e.reset(),console.log("Form Created"),$("#app").load("forms/successfull.html",(()=>{s(Gd),t()}))})).catch((e=>{console.log(e),$("#app").load("forms/failed.html",(()=>{s(Gd),t()}))}))})).catch((e=>{console.log(e),$("#app").load("forms/failed.html",(()=>{s("."),t()}))}))})),document.querySelectorAll(".drop-zone__input").forEach((e=>{const t=e.closest(".drop-zone");t.addEventListener("click",(t=>{e.click()})),e.addEventListener("change",(n=>{e.files.length&&(console.log("added file"),Hd=n.target.files[0],Kd=Hd.name,console.log(Kd),qd(t,Hd))})),t.addEventListener("dragover",(e=>{e.preventDefault(),t.classList.add("drop-zone--over")})),["dragleave","dragend"].forEach((e=>{t.addEventListener(e,(e=>{t.classList.remove("drop-zone--over")}))})),t.addEventListener("drop",(n=>{n.preventDefault(),n.dataTransfer.files.length&&(e.files=n.dataTransfer.files,console.log("added file"),Hd=n.dataTransfer.files[0],Kd=Hd.name,console.log(Kd),qd(t,Hd)),t.classList.remove("drop-zone--over")}))}))})(),of()}))})),document.getElementById("viewFormBTN").addEventListener("click",(e=>{e.preventDefault(),$("#app").load("forms/viewFormResponce.html",(()=>{Jd(),setTimeout((()=>{of()}),6e3)}))})),document.getElementById("viewFeedbackBTN").addEventListener("click",(e=>{e.preventDefault(),$("#app").load("forms/viewFeedbacks.html",(()=>{(async()=>{const e=document.getElementById("formContainer"),t=fh(Ol(Mm,"FEEDBACK"),mh("UploadTimeStamp","desc"));let n=new Date;(await Ih(t)).forEach((t=>{let s=t.data();e.innerHTML+=((e,t)=>`\n ${i(t,e.UploadTimeStamp)}\n ${e.name}\n ${e.email}\n ${e.feedback}\n `)(s,n)}))})(),of()}))})),document.getElementById("viewCustomForm").addEventListener("click",(e=>{e.preventDefault(),$("#app").load("forms/startup.html",(()=>{(async()=>{const e=fh(Ol(Mm,"smart-india-hackathon")),t=document.getElementById("responcesTableBody");ef(e,t),document.getElementById("refreshBTN").addEventListener("click",(n=>{n.preventDefault(),ef(e,t)}))})(),of()}))})),document.getElementById("viewSIH24Form").addEventListener("click",(e=>{e.preventDefault(),$("#app").load("forms/sih24.html",(()=>{(async()=>{const e=fh(Ol(Mm,"sih-hackathon-24"),mh("UploadTimeStamp","desc")),t=document.getElementById("responcesTableBody");await nf(e,t),document.getElementById("refreshBTN").addEventListener("click",(n=>{n.preventDefault(),nf(e,t)}))})(),of()}))}))}function of(){document.getElementById("backBTN").addEventListener("click",(e=>{e.preventDefault(),$("#app").load("forms/options.html",(()=>{rf()}))}))}function af(e,t){var n={};for(var s in e)Object.prototype.hasOwnProperty.call(e,s)&&t.indexOf(s)<0&&(n[s]=e[s]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var r=0;for(s=Object.getOwnPropertySymbols(e);re,"Short delay should be less than long delay!"),this.isMobile="undefined"!=typeof window&&!!(window.cordova||window.phonegap||window.PhoneGap)&&/ios|iphone|ipod|ipad|android|blackberry|iemobile/i.test(h())||"object"==typeof navigator&&"ReactNative"===navigator.product}get(){return Tf()?this.isMobile?this.longDelay:this.shortDelay:Math.min(5e3,this.shortDelay)}}function If(e,t){yf(e.emulator,"Emulator should always be set here");const{url:n}=e.emulator;return t?`${n}${t.startsWith("/")?t.slice(1):t}`:n}class kf{static initialize(e,t,n){this.fetchImpl=e,t&&(this.headersImpl=t),n&&(this.responseImpl=n)}static fetch(){return this.fetchImpl?this.fetchImpl:"undefined"!=typeof self&&"fetch"in self?self.fetch:void gf("Could not find fetch implementation, make sure you call FetchProvider.initialize() with an appropriate polyfill")}static headers(){return this.headersImpl?this.headersImpl:"undefined"!=typeof self&&"Headers"in self?self.Headers:void gf("Could not find Headers implementation, make sure you call FetchProvider.initialize() with an appropriate polyfill")}static response(){return this.responseImpl?this.responseImpl:"undefined"!=typeof self&&"Response"in self?self.Response:void gf("Could not find Response implementation, make sure you call FetchProvider.initialize() with an appropriate polyfill")}}const Sf={CREDENTIAL_MISMATCH:"custom-token-mismatch",MISSING_CUSTOM_TOKEN:"internal-error",INVALID_IDENTIFIER:"invalid-email",MISSING_CONTINUE_URI:"internal-error",INVALID_PASSWORD:"wrong-password",MISSING_PASSWORD:"internal-error",EMAIL_EXISTS:"email-already-in-use",PASSWORD_LOGIN_DISABLED:"operation-not-allowed",INVALID_IDP_RESPONSE:"invalid-credential",INVALID_PENDING_TOKEN:"invalid-credential",FEDERATED_USER_ID_ALREADY_LINKED:"credential-already-in-use",MISSING_REQ_TYPE:"internal-error",EMAIL_NOT_FOUND:"user-not-found",RESET_PASSWORD_EXCEED_LIMIT:"too-many-requests",EXPIRED_OOB_CODE:"expired-action-code",INVALID_OOB_CODE:"invalid-action-code",MISSING_OOB_CODE:"internal-error",CREDENTIAL_TOO_OLD_LOGIN_AGAIN:"requires-recent-login",INVALID_ID_TOKEN:"invalid-user-token",TOKEN_EXPIRED:"user-token-expired",USER_NOT_FOUND:"user-token-expired",TOO_MANY_ATTEMPTS_TRY_LATER:"too-many-requests",INVALID_CODE:"invalid-verification-code",INVALID_SESSION_INFO:"invalid-verification-id",INVALID_TEMPORARY_PROOF:"invalid-credential",MISSING_SESSION_INFO:"missing-verification-id",SESSION_EXPIRED:"code-expired",MISSING_ANDROID_PACKAGE_NAME:"missing-android-pkg-name",UNAUTHORIZED_DOMAIN:"unauthorized-continue-uri",INVALID_OAUTH_CLIENT_ID:"invalid-oauth-client-id",ADMIN_ONLY_OPERATION:"admin-restricted-operation",INVALID_MFA_PENDING_CREDENTIAL:"invalid-multi-factor-session",MFA_ENROLLMENT_NOT_FOUND:"multi-factor-info-not-found",MISSING_MFA_ENROLLMENT_ID:"missing-multi-factor-info",MISSING_MFA_PENDING_CREDENTIAL:"missing-multi-factor-session",SECOND_FACTOR_EXISTS:"second-factor-already-in-use",SECOND_FACTOR_LIMIT_EXCEEDED:"maximum-second-factor-count-exceeded",BLOCKING_FUNCTION_ERROR_RESPONSE:"internal-error"},Cf=new Ef(3e4,6e4);function Af(e,t){return e.tenantId&&!t.tenantId?Object.assign(Object.assign({},t),{tenantId:e.tenantId}):t}async function Rf(e,t,n,s,r={}){return Df(e,r,(async()=>{let r={},i={};s&&("GET"===t?i=s:r={body:JSON.stringify(s)});const o=E(Object.assign({key:e.config.apiKey},i)).slice(1),a=await e._getAdditionalHeaders();return a["Content-Type"]="application/json",e.languageCode&&(a["X-Firebase-Locale"]=e.languageCode),kf.fetch()(Of(e,e.config.apiHost,n,o),Object.assign({method:t,headers:a,referrerPolicy:"no-referrer"},r))}))}async function Df(e,t,n){e._canInitEmulator=!1;const s=Object.assign(Object.assign({},Sf),t);try{const t=new Lf(e),r=await Promise.race([n(),t.promise]);t.clearNetworkTimeout();const i=await r.json();if("needConfirmation"in i)throw xf(e,"account-exists-with-different-credential",i);if(r.ok&&!("errorMessage"in i))return i;{const t=r.ok?i.errorMessage:i.error.message,[n,o]=t.split(" : ");if("FEDERATED_USER_ID_ALREADY_LINKED"===n)throw xf(e,"credential-already-in-use",i);if("EMAIL_EXISTS"===n)throw xf(e,"email-already-in-use",i);if("USER_DISABLED"===n)throw xf(e,"user-disabled",i);const a=s[n]||n.toLowerCase().replace(/[_\s]+/g,"-");if(o)throw function(e,t,n){const s=Object.assign(Object.assign({},cf()),{[t]:n});return new w("auth","Firebase",s).create(t,{appName:e.name})}(e,a,o);df(e,a)}}catch(t){if(t instanceof v)throw t;df(e,"network-request-failed")}}async function Nf(e,t,n,s,r={}){const i=await Rf(e,t,n,s,r);return"mfaPendingCredential"in i&&df(e,"multi-factor-auth-required",{_serverResponse:i}),i}function Of(e,t,n,s){const r=`${t}${n}?${s}`;return e.config.emulator?If(e.config,r):`${e.config.apiScheme}://${r}`}class Lf{constructor(e){this.auth=e,this.timer=null,this.promise=new Promise(((e,t)=>{this.timer=setTimeout((()=>t(ff(this.auth,"network-request-failed"))),Cf.get())}))}clearNetworkTimeout(){clearTimeout(this.timer)}}function xf(e,t,n){const s={appName:e.name};n.email&&(s.email=n.email),n.phoneNumber&&(s.phoneNumber=n.phoneNumber);const r=ff(e,t,s);return r.customData._tokenResponse=n,r}function Pf(e){if(e)try{const t=new Date(Number(e));if(!isNaN(t.getTime()))return t.toUTCString()}catch(e){}}function Mf(e){return 1e3*Number(e)}function Uf(e){var t;const[n,s,r]=e.split(".");if(void 0===n||void 0===s||void 0===r)return hf("JWT malformed, contained fewer than 3 sections"),null;try{const e=l(s);return e?JSON.parse(e):(hf("Failed to decode base64 JWT payload"),null)}catch(e){return hf("Caught error parsing JWT payload as JSON",null===(t=e)||void 0===t?void 0:t.toString()),null}}async function Ff(e,t,n=!1){if(n)return t;try{return await t}catch(t){throw t instanceof v&&function({code:e}){return"auth/user-disabled"===e||"auth/user-token-expired"===e}(t)&&e.auth.currentUser===e&&await e.auth.signOut(),t}}class Vf{constructor(e){this.user=e,this.isRunning=!1,this.timerId=null,this.errorBackoff=3e4}_start(){this.isRunning||(this.isRunning=!0,this.schedule())}_stop(){this.isRunning&&(this.isRunning=!1,null!==this.timerId&&clearTimeout(this.timerId))}getInterval(e){var t;if(e){const e=this.errorBackoff;return this.errorBackoff=Math.min(2*this.errorBackoff,96e4),e}{this.errorBackoff=3e4;const e=(null!==(t=this.user.stsTokenManager.expirationTime)&&void 0!==t?t:0)-Date.now()-3e5;return Math.max(0,e)}}schedule(e=!1){if(!this.isRunning)return;const t=this.getInterval(e);this.timerId=setTimeout((async()=>{await this.iteration()}),t)}async iteration(){var e;try{await this.user.getIdToken(!0)}catch(t){return void("auth/network-request-failed"===(null===(e=t)||void 0===e?void 0:e.code)&&this.schedule(!0))}this.schedule()}}class Bf{constructor(e,t){this.createdAt=e,this.lastLoginAt=t,this._initializeTime()}_initializeTime(){this.lastSignInTime=Pf(this.lastLoginAt),this.creationTime=Pf(this.createdAt)}_copy(e){this.createdAt=e.createdAt,this.lastLoginAt=e.lastLoginAt,this._initializeTime()}toJSON(){return{createdAt:this.createdAt,lastLoginAt:this.lastLoginAt}}}async function $f(e){var t;const n=e.auth,s=await e.getIdToken(),r=await Ff(e,async function(e,t){return Rf(e,"POST","/v1/accounts:lookup",t)}(n,{idToken:s}));mf(null==r?void 0:r.users.length,n,"internal-error");const i=r.users[0];e._notifyReloadListener(i);const o=(null===(t=i.providerUserInfo)||void 0===t?void 0:t.length)?i.providerUserInfo.map((e=>{var{providerId:t}=e,n=af(e,["providerId"]);return{providerId:t,uid:n.rawId||"",displayName:n.displayName||null,email:n.email||null,phoneNumber:n.phoneNumber||null,photoURL:n.photoUrl||null}})):[],a=(c=e.providerData,u=o,[...c.filter((e=>!u.some((t=>t.providerId===e.providerId)))),...u]);var c,u;const l=e.isAnonymous,h=!(e.email&&i.passwordHash||(null==a?void 0:a.length)),d=!!l&&h,f={uid:i.localId,displayName:i.displayName||null,photoURL:i.photoUrl||null,email:i.email||null,emailVerified:i.emailVerified||!1,phoneNumber:i.phoneNumber||null,tenantId:i.tenantId||null,providerData:a,metadata:new Bf(i.createdAt,i.lastLoginAt),isAnonymous:d};Object.assign(e,f)}class jf{constructor(){this.refreshToken=null,this.accessToken=null,this.expirationTime=null}get isExpired(){return!this.expirationTime||Date.now()>this.expirationTime-3e4}updateFromServerResponse(e){mf(e.idToken,"internal-error"),mf(void 0!==e.idToken,"internal-error"),mf(void 0!==e.refreshToken,"internal-error");const t="expiresIn"in e&&void 0!==e.expiresIn?Number(e.expiresIn):function(e){const t=Uf(e);return mf(t,"internal-error"),mf(void 0!==t.exp,"internal-error"),mf(void 0!==t.iat,"internal-error"),Number(t.exp)-Number(t.iat)}(e.idToken);this.updateTokensAndExpiration(e.idToken,e.refreshToken,t)}async getToken(e,t=!1){return mf(!this.accessToken||this.refreshToken,e,"user-token-expired"),t||!this.accessToken||this.isExpired?this.refreshToken?(await this.refresh(e,this.refreshToken),this.accessToken):null:this.accessToken}clearRefreshToken(){this.refreshToken=null}async refresh(e,t){const{accessToken:n,refreshToken:s,expiresIn:r}=await async function(e,t){const n=await Df(e,{},(async()=>{const n=E({grant_type:"refresh_token",refresh_token:t}).slice(1),{tokenApiHost:s,apiKey:r}=e.config,i=Of(e,s,"/v1/token",`key=${r}`),o=await e._getAdditionalHeaders();return o["Content-Type"]="application/x-www-form-urlencoded",kf.fetch()(i,{method:"POST",headers:o,body:n})}));return{accessToken:n.access_token,expiresIn:n.expires_in,refreshToken:n.refresh_token}}(e,t);this.updateTokensAndExpiration(n,s,Number(r))}updateTokensAndExpiration(e,t,n){this.refreshToken=t||null,this.accessToken=e||null,this.expirationTime=Date.now()+1e3*n}static fromJSON(e,t){const{refreshToken:n,accessToken:s,expirationTime:r}=t,i=new jf;return n&&(mf("string"==typeof n,"internal-error",{appName:e}),i.refreshToken=n),s&&(mf("string"==typeof s,"internal-error",{appName:e}),i.accessToken=s),r&&(mf("number"==typeof r,"internal-error",{appName:e}),i.expirationTime=r),i}toJSON(){return{refreshToken:this.refreshToken,accessToken:this.accessToken,expirationTime:this.expirationTime}}_assign(e){this.accessToken=e.accessToken,this.refreshToken=e.refreshToken,this.expirationTime=e.expirationTime}_clone(){return Object.assign(new jf,this.toJSON())}_performRefresh(){return gf("not implemented")}}function qf(e,t){mf("string"==typeof e||void 0===e,"internal-error",{appName:t})}class zf{constructor(e){var{uid:t,auth:n,stsTokenManager:s}=e,r=af(e,["uid","auth","stsTokenManager"]);this.providerId="firebase",this.proactiveRefresh=new Vf(this),this.reloadUserInfo=null,this.reloadListener=null,this.uid=t,this.auth=n,this.stsTokenManager=s,this.accessToken=s.accessToken,this.displayName=r.displayName||null,this.email=r.email||null,this.emailVerified=r.emailVerified||!1,this.phoneNumber=r.phoneNumber||null,this.photoURL=r.photoURL||null,this.isAnonymous=r.isAnonymous||!1,this.tenantId=r.tenantId||null,this.providerData=r.providerData?[...r.providerData]:[],this.metadata=new Bf(r.createdAt||void 0,r.lastLoginAt||void 0)}async getIdToken(e){const t=await Ff(this,this.stsTokenManager.getToken(this.auth,e));return mf(t,this.auth,"internal-error"),this.accessToken!==t&&(this.accessToken=t,await this.auth._persistUserIfCurrent(this),this.auth._notifyListenersIfCurrent(this)),t}getIdTokenResult(e){return async function(e,t=!1){const n=A(e),s=await n.getIdToken(t),r=Uf(s);mf(r&&r.exp&&r.auth_time&&r.iat,n.auth,"internal-error");const i="object"==typeof r.firebase?r.firebase:void 0,o=null==i?void 0:i.sign_in_provider;return{claims:r,token:s,authTime:Pf(Mf(r.auth_time)),issuedAtTime:Pf(Mf(r.iat)),expirationTime:Pf(Mf(r.exp)),signInProvider:o||null,signInSecondFactor:(null==i?void 0:i.sign_in_second_factor)||null}}(this,e)}reload(){return async function(e){const t=A(e);await $f(t),await t.auth._persistUserIfCurrent(t),t.auth._notifyListenersIfCurrent(t)}(this)}_assign(e){this!==e&&(mf(this.uid===e.uid,this.auth,"internal-error"),this.displayName=e.displayName,this.photoURL=e.photoURL,this.email=e.email,this.emailVerified=e.emailVerified,this.phoneNumber=e.phoneNumber,this.isAnonymous=e.isAnonymous,this.tenantId=e.tenantId,this.providerData=e.providerData.map((e=>Object.assign({},e))),this.metadata._copy(e.metadata),this.stsTokenManager._assign(e.stsTokenManager))}_clone(e){return new zf(Object.assign(Object.assign({},this),{auth:e,stsTokenManager:this.stsTokenManager._clone()}))}_onReload(e){mf(!this.reloadListener,this.auth,"internal-error"),this.reloadListener=e,this.reloadUserInfo&&(this._notifyReloadListener(this.reloadUserInfo),this.reloadUserInfo=null)}_notifyReloadListener(e){this.reloadListener?this.reloadListener(e):this.reloadUserInfo=e}_startProactiveRefresh(){this.proactiveRefresh._start()}_stopProactiveRefresh(){this.proactiveRefresh._stop()}async _updateTokensIfNecessary(e,t=!1){let n=!1;e.idToken&&e.idToken!==this.stsTokenManager.accessToken&&(this.stsTokenManager.updateFromServerResponse(e),n=!0),t&&await $f(this),await this.auth._persistUserIfCurrent(this),n&&this.auth._notifyListenersIfCurrent(this)}async delete(){const e=await this.getIdToken();return await Ff(this,async function(e,t){return Rf(e,"POST","/v1/accounts:delete",t)}(this.auth,{idToken:e})),this.stsTokenManager.clearRefreshToken(),this.auth.signOut()}toJSON(){return Object.assign(Object.assign({uid:this.uid,email:this.email||void 0,emailVerified:this.emailVerified,displayName:this.displayName||void 0,isAnonymous:this.isAnonymous,photoURL:this.photoURL||void 0,phoneNumber:this.phoneNumber||void 0,tenantId:this.tenantId||void 0,providerData:this.providerData.map((e=>Object.assign({},e))),stsTokenManager:this.stsTokenManager.toJSON(),_redirectEventId:this._redirectEventId},this.metadata.toJSON()),{apiKey:this.auth.config.apiKey,appName:this.auth.name})}get refreshToken(){return this.stsTokenManager.refreshToken||""}static _fromJSON(e,t){var n,s,r,i,o,a,c,u;const l=null!==(n=t.displayName)&&void 0!==n?n:void 0,h=null!==(s=t.email)&&void 0!==s?s:void 0,d=null!==(r=t.phoneNumber)&&void 0!==r?r:void 0,f=null!==(i=t.photoURL)&&void 0!==i?i:void 0,p=null!==(o=t.tenantId)&&void 0!==o?o:void 0,m=null!==(a=t._redirectEventId)&&void 0!==a?a:void 0,g=null!==(c=t.createdAt)&&void 0!==c?c:void 0,y=null!==(u=t.lastLoginAt)&&void 0!==u?u:void 0,{uid:v,emailVerified:w,isAnonymous:_,providerData:b,stsTokenManager:T}=t;mf(v&&T,e,"internal-error");const E=jf.fromJSON(this.name,T);mf("string"==typeof v,e,"internal-error"),qf(l,e.name),qf(h,e.name),mf("boolean"==typeof w,e,"internal-error"),mf("boolean"==typeof _,e,"internal-error"),qf(d,e.name),qf(f,e.name),qf(p,e.name),qf(m,e.name),qf(g,e.name),qf(y,e.name);const I=new zf({uid:v,auth:e,email:h,emailVerified:w,displayName:l,isAnonymous:_,photoURL:f,phoneNumber:d,tenantId:p,stsTokenManager:E,createdAt:g,lastLoginAt:y});return b&&Array.isArray(b)&&(I.providerData=b.map((e=>Object.assign({},e)))),m&&(I._redirectEventId=m),I}static async _fromIdTokenResponse(e,t,n=!1){const s=new jf;s.updateFromServerResponse(t);const r=new zf({uid:t.localId,auth:e,stsTokenManager:s,isAnonymous:n});return await $f(r),r}}class Hf{constructor(){this.type="NONE",this.storage={}}async _isAvailable(){return!0}async _set(e,t){this.storage[e]=t}async _get(e){const t=this.storage[e];return void 0===t?null:t}async _remove(e){delete this.storage[e]}_addListener(e,t){}_removeListener(e,t){}}Hf.type="NONE";const Kf=Hf;function Gf(e,t,n){return`firebase:${e}:${t}:${n}`}class Wf{constructor(e,t,n){this.persistence=e,this.auth=t,this.userKey=n;const{config:s,name:r}=this.auth;this.fullUserKey=Gf(this.userKey,s.apiKey,r),this.fullPersistenceKey=Gf("persistence",s.apiKey,r),this.boundEventHandler=t._onStorageEvent.bind(t),this.persistence._addListener(this.fullUserKey,this.boundEventHandler)}setCurrentUser(e){return this.persistence._set(this.fullUserKey,e.toJSON())}async getCurrentUser(){const e=await this.persistence._get(this.fullUserKey);return e?zf._fromJSON(this.auth,e):null}removeCurrentUser(){return this.persistence._remove(this.fullUserKey)}savePersistenceForRedirect(){return this.persistence._set(this.fullPersistenceKey,this.persistence.type)}async setPersistence(e){if(this.persistence===e)return;const t=await this.getCurrentUser();return await this.removeCurrentUser(),this.persistence=e,t?this.setCurrentUser(t):void 0}delete(){this.persistence._removeListener(this.fullUserKey,this.boundEventHandler)}static async create(e,t,n="authUser"){if(!t.length)return new Wf(wf(Kf),e,n);const s=(await Promise.all(t.map((async e=>{if(await e._isAvailable())return e})))).filter((e=>e));let r=s[0]||wf(Kf);const i=Gf(n,e.config.apiKey,e.name);let o=null;for(const n of t)try{const t=await n._get(i);if(t){const s=zf._fromJSON(e,t);n!==r&&(o=s),r=n;break}}catch(e){}const a=s.filter((e=>e._shouldAllowMigration));return r._shouldAllowMigration&&a.length?(r=a[0],o&&await r._set(i,o.toJSON()),await Promise.all(t.map((async e=>{if(e!==r)try{await e._remove(i)}catch(e){}}))),new Wf(r,e,n)):new Wf(r,e,n)}}function Qf(e){const t=e.toLowerCase();if(t.includes("opera/")||t.includes("opr/")||t.includes("opios/"))return"Opera";if(Zf(t))return"IEMobile";if(t.includes("msie")||t.includes("trident/"))return"IE";if(t.includes("edge/"))return"Edge";if(Xf(t))return"Firefox";if(t.includes("silk/"))return"Silk";if(tp(t))return"Blackberry";if(np(t))return"Webos";if(Yf(t))return"Safari";if((t.includes("chrome/")||Jf(t))&&!t.includes("edge/"))return"Chrome";if(ep(t))return"Android";{const t=/([a-zA-Z\d\.]+)\/[a-zA-Z\d\.]*$/,n=e.match(t);if(2===(null==n?void 0:n.length))return n[1]}return"Other"}function Xf(e=h()){return/firefox\//i.test(e)}function Yf(e=h()){const t=e.toLowerCase();return t.includes("safari/")&&!t.includes("chrome/")&&!t.includes("crios/")&&!t.includes("android")}function Jf(e=h()){return/crios\//i.test(e)}function Zf(e=h()){return/iemobile/i.test(e)}function ep(e=h()){return/android/i.test(e)}function tp(e=h()){return/blackberry/i.test(e)}function np(e=h()){return/webos/i.test(e)}function sp(e=h()){return/iphone|ipad|ipod/i.test(e)||/macintosh/i.test(e)&&/mobile/i.test(e)}function rp(e=h()){return sp(e)||ep(e)||np(e)||tp(e)||/windows phone/i.test(e)||Zf(e)}function ip(e,t=[]){let n;switch(e){case"Browser":n=Qf(h());break;case"Worker":n=`${Qf(h())}-${e}`;break;default:n=e}return`${n}/JsCore/9.14.0/${t.length?t.join(","):"FirebaseCore-web"}`}class op{constructor(e){this.auth=e,this.queue=[]}pushCallback(e,t){const n=t=>new Promise(((n,s)=>{try{n(e(t))}catch(e){s(e)}}));n.onAbort=t,this.queue.push(n);const s=this.queue.length-1;return()=>{this.queue[s]=()=>Promise.resolve()}}async runMiddleware(e){var t;if(this.auth.currentUser===e)return;const n=[];try{for(const t of this.queue)await t(e),t.onAbort&&n.push(t.onAbort)}catch(e){n.reverse();for(const e of n)try{e()}catch(e){}throw this.auth._errorFactory.create("login-blocked",{originalMessage:null===(t=e)||void 0===t?void 0:t.message})}}}class ap{constructor(e,t,n){this.app=e,this.heartbeatServiceProvider=t,this.config=n,this.currentUser=null,this.emulatorConfig=null,this.operations=Promise.resolve(),this.authStateSubscription=new up(this),this.idTokenSubscription=new up(this),this.beforeStateQueue=new op(this),this.redirectUser=null,this.isProactiveRefreshEnabled=!1,this._canInitEmulator=!0,this._isInitialized=!1,this._deleted=!1,this._initializationPromise=null,this._popupRedirectResolver=null,this._errorFactory=uf,this.lastNotifiedUid=void 0,this.languageCode=null,this.tenantId=null,this.settings={appVerificationDisabledForTesting:!1},this.frameworks=[],this.name=e.name,this.clientVersion=n.sdkClientVersion}_initializeWithPersistence(e,t){return t&&(this._popupRedirectResolver=wf(t)),this._initializationPromise=this.queue((async()=>{var n,s;if(!this._deleted&&(this.persistenceManager=await Wf.create(this,e),!this._deleted)){if(null===(n=this._popupRedirectResolver)||void 0===n?void 0:n._shouldInitProactively)try{await this._popupRedirectResolver._initialize(this)}catch(e){}await this.initializeCurrentUser(t),this.lastNotifiedUid=(null===(s=this.currentUser)||void 0===s?void 0:s.uid)||null,this._deleted||(this._isInitialized=!0)}})),this._initializationPromise}async _onStorageEvent(){if(this._deleted)return;const e=await this.assertedPersistence.getCurrentUser();return this.currentUser||e?this.currentUser&&e&&this.currentUser.uid===e.uid?(this._currentUser._assign(e),void await this.currentUser.getIdToken()):void await this._updateCurrentUser(e,!0):void 0}async initializeCurrentUser(e){var t;const n=await this.assertedPersistence.getCurrentUser();let s=n,r=!1;if(e&&this.config.authDomain){await this.getOrInitRedirectPersistenceManager();const n=null===(t=this.redirectUser)||void 0===t?void 0:t._redirectEventId,i=null==s?void 0:s._redirectEventId,o=await this.tryRedirectSignIn(e);n&&n!==i||!(null==o?void 0:o.user)||(s=o.user,r=!0)}if(!s)return this.directlySetCurrentUser(null);if(!s._redirectEventId){if(r)try{await this.beforeStateQueue.runMiddleware(s)}catch(e){s=n,this._popupRedirectResolver._overrideRedirectResult(this,(()=>Promise.reject(e)))}return s?this.reloadAndSetCurrentUserOrClear(s):this.directlySetCurrentUser(null)}return mf(this._popupRedirectResolver,this,"argument-error"),await this.getOrInitRedirectPersistenceManager(),this.redirectUser&&this.redirectUser._redirectEventId===s._redirectEventId?this.directlySetCurrentUser(s):this.reloadAndSetCurrentUserOrClear(s)}async tryRedirectSignIn(e){let t=null;try{t=await this._popupRedirectResolver._completeRedirectFn(this,e,!0)}catch(e){await this._setRedirectUser(null)}return t}async reloadAndSetCurrentUserOrClear(e){var t;try{await $f(e)}catch(e){if("auth/network-request-failed"!==(null===(t=e)||void 0===t?void 0:t.code))return this.directlySetCurrentUser(null)}return this.directlySetCurrentUser(e)}useDeviceLanguage(){this.languageCode=function(){if("undefined"==typeof navigator)return null;const e=navigator;return e.languages&&e.languages[0]||e.language||null}()}async _delete(){this._deleted=!0}async updateCurrentUser(e){const t=e?A(e):null;return t&&mf(t.auth.config.apiKey===this.config.apiKey,this,"invalid-user-token"),this._updateCurrentUser(t&&t._clone(this))}async _updateCurrentUser(e,t=!1){if(!this._deleted)return e&&mf(this.tenantId===e.tenantId,this,"tenant-id-mismatch"),t||await this.beforeStateQueue.runMiddleware(e),this.queue((async()=>{await this.directlySetCurrentUser(e),this.notifyAuthListeners()}))}async signOut(){return await this.beforeStateQueue.runMiddleware(null),(this.redirectPersistenceManager||this._popupRedirectResolver)&&await this._setRedirectUser(null),this._updateCurrentUser(null,!0)}setPersistence(e){return this.queue((async()=>{await this.assertedPersistence.setPersistence(wf(e))}))}_getPersistence(){return this.assertedPersistence.persistence.type}_updateErrorMap(e){this._errorFactory=new w("auth","Firebase",e())}onAuthStateChanged(e,t,n){return this.registerStateListener(this.authStateSubscription,e,t,n)}beforeAuthStateChanged(e,t){return this.beforeStateQueue.pushCallback(e,t)}onIdTokenChanged(e,t,n){return this.registerStateListener(this.idTokenSubscription,e,t,n)}toJSON(){var e;return{apiKey:this.config.apiKey,authDomain:this.config.authDomain,appName:this.name,currentUser:null===(e=this._currentUser)||void 0===e?void 0:e.toJSON()}}async _setRedirectUser(e,t){const n=await this.getOrInitRedirectPersistenceManager(t);return null===e?n.removeCurrentUser():n.setCurrentUser(e)}async getOrInitRedirectPersistenceManager(e){if(!this.redirectPersistenceManager){const t=e&&wf(e)||this._popupRedirectResolver;mf(t,this,"argument-error"),this.redirectPersistenceManager=await Wf.create(this,[wf(t._redirectPersistence)],"redirectUser"),this.redirectUser=await this.redirectPersistenceManager.getCurrentUser()}return this.redirectPersistenceManager}async _redirectUserForId(e){var t,n;return this._isInitialized&&await this.queue((async()=>{})),(null===(t=this._currentUser)||void 0===t?void 0:t._redirectEventId)===e?this._currentUser:(null===(n=this.redirectUser)||void 0===n?void 0:n._redirectEventId)===e?this.redirectUser:null}async _persistUserIfCurrent(e){if(e===this.currentUser)return this.queue((async()=>this.directlySetCurrentUser(e)))}_notifyListenersIfCurrent(e){e===this.currentUser&&this.notifyAuthListeners()}_key(){return`${this.config.authDomain}:${this.config.apiKey}:${this.name}`}_startProactiveRefresh(){this.isProactiveRefreshEnabled=!0,this.currentUser&&this._currentUser._startProactiveRefresh()}_stopProactiveRefresh(){this.isProactiveRefreshEnabled=!1,this.currentUser&&this._currentUser._stopProactiveRefresh()}get _currentUser(){return this.currentUser}notifyAuthListeners(){var e,t;if(!this._isInitialized)return;this.idTokenSubscription.next(this.currentUser);const n=null!==(t=null===(e=this.currentUser)||void 0===e?void 0:e.uid)&&void 0!==t?t:null;this.lastNotifiedUid!==n&&(this.lastNotifiedUid=n,this.authStateSubscription.next(this.currentUser))}registerStateListener(e,t,n,s){if(this._deleted)return()=>{};const r="function"==typeof t?t:t.next.bind(t),i=this._isInitialized?Promise.resolve():this._initializationPromise;return mf(i,this,"internal-error"),i.then((()=>r(this.currentUser))),"function"==typeof t?e.addObserver(t,n,s):e.addObserver(t)}async directlySetCurrentUser(e){this.currentUser&&this.currentUser!==e&&this._currentUser._stopProactiveRefresh(),e&&this.isProactiveRefreshEnabled&&e._startProactiveRefresh(),this.currentUser=e,e?await this.assertedPersistence.setCurrentUser(e):await this.assertedPersistence.removeCurrentUser()}queue(e){return this.operations=this.operations.then(e,e),this.operations}get assertedPersistence(){return mf(this.persistenceManager,this,"internal-error"),this.persistenceManager}_logFramework(e){e&&!this.frameworks.includes(e)&&(this.frameworks.push(e),this.frameworks.sort(),this.clientVersion=ip(this.config.clientPlatform,this._getFrameworks()))}_getFrameworks(){return this.frameworks}async _getAdditionalHeaders(){var e;const t={"X-Client-Version":this.clientVersion};this.app.options.appId&&(t["X-Firebase-gmpid"]=this.app.options.appId);const n=await(null===(e=this.heartbeatServiceProvider.getImmediate({optional:!0}))||void 0===e?void 0:e.getHeartbeatsHeader());return n&&(t["X-Firebase-Client"]=n),t}}function cp(e){return A(e)}class up{constructor(e){this.auth=e,this.observer=null,this.addObserver=function(e,t){const n=new S(e,void 0);return n.subscribe.bind(n)}((e=>this.observer=e))}get next(){return mf(this.observer,this.auth,"internal-error"),this.observer.next.bind(this.observer)}}function lp(e){const t=e.indexOf(":");return t<0?"":e.substr(0,t+1)}function hp(e){if(!e)return null;const t=Number(e);return isNaN(t)?null:t}class dp{constructor(e,t){this.providerId=e,this.signInMethod=t}toJSON(){return gf("not implemented")}_getIdTokenResponse(e){return gf("not implemented")}_linkToIdToken(e,t){return gf("not implemented")}_getReauthenticationResolver(e){return gf("not implemented")}}class fp extends dp{constructor(e,t,n,s=null){super("password",n),this._email=e,this._password=t,this._tenantId=s}static _fromEmailAndPassword(e,t){return new fp(e,t,"password")}static _fromEmailAndCode(e,t,n=null){return new fp(e,t,"emailLink",n)}toJSON(){return{email:this._email,password:this._password,signInMethod:this.signInMethod,tenantId:this._tenantId}}static fromJSON(e){const t="string"==typeof e?JSON.parse(e):e;if((null==t?void 0:t.email)&&(null==t?void 0:t.password)){if("password"===t.signInMethod)return this._fromEmailAndPassword(t.email,t.password);if("emailLink"===t.signInMethod)return this._fromEmailAndCode(t.email,t.password,t.tenantId)}return null}async _getIdTokenResponse(e){switch(this.signInMethod){case"password":return async function(e,t){return Nf(e,"POST","/v1/accounts:signInWithPassword",Af(e,t))}(e,{returnSecureToken:!0,email:this._email,password:this._password});case"emailLink":return async function(e,t){return Nf(e,"POST","/v1/accounts:signInWithEmailLink",Af(e,t))}(e,{email:this._email,oobCode:this._password});default:df(e,"internal-error")}}async _linkToIdToken(e,t){switch(this.signInMethod){case"password":return async function(e,t){return Rf(e,"POST","/v1/accounts:update",t)}(e,{idToken:t,returnSecureToken:!0,email:this._email,password:this._password});case"emailLink":return async function(e,t){return Nf(e,"POST","/v1/accounts:signInWithEmailLink",Af(e,t))}(e,{idToken:t,email:this._email,oobCode:this._password});default:df(e,"internal-error")}}_getReauthenticationResolver(e){return this._getIdTokenResponse(e)}}async function pp(e,t){return Nf(e,"POST","/v1/accounts:signInWithIdp",Af(e,t))}class mp extends dp{constructor(){super(...arguments),this.pendingToken=null}static _fromParams(e){const t=new mp(e.providerId,e.signInMethod);return e.idToken||e.accessToken?(e.idToken&&(t.idToken=e.idToken),e.accessToken&&(t.accessToken=e.accessToken),e.nonce&&!e.pendingToken&&(t.nonce=e.nonce),e.pendingToken&&(t.pendingToken=e.pendingToken)):e.oauthToken&&e.oauthTokenSecret?(t.accessToken=e.oauthToken,t.secret=e.oauthTokenSecret):df("argument-error"),t}toJSON(){return{idToken:this.idToken,accessToken:this.accessToken,secret:this.secret,nonce:this.nonce,pendingToken:this.pendingToken,providerId:this.providerId,signInMethod:this.signInMethod}}static fromJSON(e){const t="string"==typeof e?JSON.parse(e):e,{providerId:n,signInMethod:s}=t,r=af(t,["providerId","signInMethod"]);if(!n||!s)return null;const i=new mp(n,s);return i.idToken=r.idToken||void 0,i.accessToken=r.accessToken||void 0,i.secret=r.secret,i.nonce=r.nonce,i.pendingToken=r.pendingToken||null,i}_getIdTokenResponse(e){return pp(e,this.buildRequest())}_linkToIdToken(e,t){const n=this.buildRequest();return n.idToken=t,pp(e,n)}_getReauthenticationResolver(e){const t=this.buildRequest();return t.autoCreate=!1,pp(e,t)}buildRequest(){const e={requestUri:"http://localhost",returnSecureToken:!0};if(this.pendingToken)e.pendingToken=this.pendingToken;else{const t={};this.idToken&&(t.id_token=this.idToken),this.accessToken&&(t.access_token=this.accessToken),this.secret&&(t.oauth_token_secret=this.secret),t.providerId=this.providerId,this.nonce&&!this.pendingToken&&(t.nonce=this.nonce),e.postBody=E(t)}return e}}const gp={USER_NOT_FOUND:"user-not-found"};class yp extends dp{constructor(e){super("phone","phone"),this.params=e}static _fromVerification(e,t){return new yp({verificationId:e,verificationCode:t})}static _fromTokenResponse(e,t){return new yp({phoneNumber:e,temporaryProof:t})}_getIdTokenResponse(e){return async function(e,t){return Nf(e,"POST","/v1/accounts:signInWithPhoneNumber",Af(e,t))}(e,this._makeVerificationRequest())}_linkToIdToken(e,t){return async function(e,t){const n=await Nf(e,"POST","/v1/accounts:signInWithPhoneNumber",Af(e,t));if(n.temporaryProof)throw xf(e,"account-exists-with-different-credential",n);return n}(e,Object.assign({idToken:t},this._makeVerificationRequest()))}_getReauthenticationResolver(e){return async function(e,t){return Nf(e,"POST","/v1/accounts:signInWithPhoneNumber",Af(e,Object.assign(Object.assign({},t),{operation:"REAUTH"})),gp)}(e,this._makeVerificationRequest())}_makeVerificationRequest(){const{temporaryProof:e,phoneNumber:t,verificationId:n,verificationCode:s}=this.params;return e&&t?{temporaryProof:e,phoneNumber:t}:{sessionInfo:n,code:s}}toJSON(){const e={providerId:this.providerId};return this.params.phoneNumber&&(e.phoneNumber=this.params.phoneNumber),this.params.temporaryProof&&(e.temporaryProof=this.params.temporaryProof),this.params.verificationCode&&(e.verificationCode=this.params.verificationCode),this.params.verificationId&&(e.verificationId=this.params.verificationId),e}static fromJSON(e){"string"==typeof e&&(e=JSON.parse(e));const{verificationId:t,verificationCode:n,phoneNumber:s,temporaryProof:r}=e;return n||t||s||r?new yp({verificationId:t,verificationCode:n,phoneNumber:s,temporaryProof:r}):null}}class vp{constructor(e){var t,n,s,r,i,o;const a=I(k(e)),c=null!==(t=a.apiKey)&&void 0!==t?t:null,u=null!==(n=a.oobCode)&&void 0!==n?n:null,l=function(e){switch(e){case"recoverEmail":return"RECOVER_EMAIL";case"resetPassword":return"PASSWORD_RESET";case"signIn":return"EMAIL_SIGNIN";case"verifyEmail":return"VERIFY_EMAIL";case"verifyAndChangeEmail":return"VERIFY_AND_CHANGE_EMAIL";case"revertSecondFactorAddition":return"REVERT_SECOND_FACTOR_ADDITION";default:return null}}(null!==(s=a.mode)&&void 0!==s?s:null);mf(c&&u&&l,"argument-error"),this.apiKey=c,this.operation=l,this.code=u,this.continueUrl=null!==(r=a.continueUrl)&&void 0!==r?r:null,this.languageCode=null!==(i=a.languageCode)&&void 0!==i?i:null,this.tenantId=null!==(o=a.tenantId)&&void 0!==o?o:null}static parseLink(e){const t=function(e){const t=I(k(e)).link,n=t?I(k(t)).deep_link_id:null,s=I(k(e)).deep_link_id;return(s?I(k(s)).link:null)||s||n||t||e}(e);try{return new vp(t)}catch(e){return null}}}class wp{constructor(){this.providerId=wp.PROVIDER_ID}static credential(e,t){return fp._fromEmailAndPassword(e,t)}static credentialWithLink(e,t){const n=vp.parseLink(t);return mf(n,"argument-error"),fp._fromEmailAndCode(e,n.code,n.tenantId)}}wp.PROVIDER_ID="password",wp.EMAIL_PASSWORD_SIGN_IN_METHOD="password",wp.EMAIL_LINK_SIGN_IN_METHOD="emailLink";class _p{constructor(e){this.providerId=e,this.defaultLanguageCode=null,this.customParameters={}}setDefaultLanguage(e){this.defaultLanguageCode=e}setCustomParameters(e){return this.customParameters=e,this}getCustomParameters(){return this.customParameters}}class bp extends _p{constructor(){super(...arguments),this.scopes=[]}addScope(e){return this.scopes.includes(e)||this.scopes.push(e),this}getScopes(){return[...this.scopes]}}class Tp extends bp{constructor(){super("facebook.com")}static credential(e){return mp._fromParams({providerId:Tp.PROVIDER_ID,signInMethod:Tp.FACEBOOK_SIGN_IN_METHOD,accessToken:e})}static credentialFromResult(e){return Tp.credentialFromTaggedObject(e)}static credentialFromError(e){return Tp.credentialFromTaggedObject(e.customData||{})}static credentialFromTaggedObject({_tokenResponse:e}){if(!e||!("oauthAccessToken"in e))return null;if(!e.oauthAccessToken)return null;try{return Tp.credential(e.oauthAccessToken)}catch(e){return null}}}Tp.FACEBOOK_SIGN_IN_METHOD="facebook.com",Tp.PROVIDER_ID="facebook.com";class Ep extends bp{constructor(){super("google.com"),this.addScope("profile")}static credential(e,t){return mp._fromParams({providerId:Ep.PROVIDER_ID,signInMethod:Ep.GOOGLE_SIGN_IN_METHOD,idToken:e,accessToken:t})}static credentialFromResult(e){return Ep.credentialFromTaggedObject(e)}static credentialFromError(e){return Ep.credentialFromTaggedObject(e.customData||{})}static credentialFromTaggedObject({_tokenResponse:e}){if(!e)return null;const{oauthIdToken:t,oauthAccessToken:n}=e;if(!t&&!n)return null;try{return Ep.credential(t,n)}catch(e){return null}}}Ep.GOOGLE_SIGN_IN_METHOD="google.com",Ep.PROVIDER_ID="google.com";class Ip extends bp{constructor(){super("github.com")}static credential(e){return mp._fromParams({providerId:Ip.PROVIDER_ID,signInMethod:Ip.GITHUB_SIGN_IN_METHOD,accessToken:e})}static credentialFromResult(e){return Ip.credentialFromTaggedObject(e)}static credentialFromError(e){return Ip.credentialFromTaggedObject(e.customData||{})}static credentialFromTaggedObject({_tokenResponse:e}){if(!e||!("oauthAccessToken"in e))return null;if(!e.oauthAccessToken)return null;try{return Ip.credential(e.oauthAccessToken)}catch(e){return null}}}Ip.GITHUB_SIGN_IN_METHOD="github.com",Ip.PROVIDER_ID="github.com";class kp extends bp{constructor(){super("twitter.com")}static credential(e,t){return mp._fromParams({providerId:kp.PROVIDER_ID,signInMethod:kp.TWITTER_SIGN_IN_METHOD,oauthToken:e,oauthTokenSecret:t})}static credentialFromResult(e){return kp.credentialFromTaggedObject(e)}static credentialFromError(e){return kp.credentialFromTaggedObject(e.customData||{})}static credentialFromTaggedObject({_tokenResponse:e}){if(!e)return null;const{oauthAccessToken:t,oauthTokenSecret:n}=e;if(!t||!n)return null;try{return kp.credential(t,n)}catch(e){return null}}}kp.TWITTER_SIGN_IN_METHOD="twitter.com",kp.PROVIDER_ID="twitter.com";class Sp{constructor(e){this.user=e.user,this.providerId=e.providerId,this._tokenResponse=e._tokenResponse,this.operationType=e.operationType}static async _fromIdTokenResponse(e,t,n,s=!1){const r=await zf._fromIdTokenResponse(e,n,s),i=Cp(n);return new Sp({user:r,providerId:i,_tokenResponse:n,operationType:t})}static async _forOperation(e,t,n){await e._updateTokensIfNecessary(n,!0);const s=Cp(n);return new Sp({user:e,providerId:s,_tokenResponse:n,operationType:t})}}function Cp(e){return e.providerId?e.providerId:"phoneNumber"in e?"phone":null}class Ap extends v{constructor(e,t,n,s){var r;super(t.code,t.message),this.operationType=n,this.user=s,Object.setPrototypeOf(this,Ap.prototype),this.customData={appName:e.name,tenantId:null!==(r=e.tenantId)&&void 0!==r?r:void 0,_serverResponse:t.customData._serverResponse,operationType:n}}static _fromErrorAndOperation(e,t,n,s){return new Ap(e,t,n,s)}}function Rp(e,t,n,s){return("reauthenticate"===t?n._getReauthenticationResolver(e):n._getIdTokenResponse(e)).catch((n=>{if("auth/multi-factor-auth-required"===n.code)throw Ap._fromErrorAndOperation(e,n,t,s);throw n}))}async function Dp(e,t,n=!1){const s="signIn",r=await Rp(e,s,t),i=await Sp._fromIdTokenResponse(e,s,r);return n||await e._updateCurrentUser(i.user),i}new WeakMap;const Np="__sak";class Op{constructor(e,t){this.storageRetriever=e,this.type=t}_isAvailable(){try{return this.storage?(this.storage.setItem(Np,"1"),this.storage.removeItem(Np),Promise.resolve(!0)):Promise.resolve(!1)}catch(e){return Promise.resolve(!1)}}_set(e,t){return this.storage.setItem(e,JSON.stringify(t)),Promise.resolve()}_get(e){const t=this.storage.getItem(e);return Promise.resolve(t?JSON.parse(t):null)}_remove(e){return this.storage.removeItem(e),Promise.resolve()}get storage(){return this.storageRetriever()}}class Lp extends Op{constructor(){super((()=>window.localStorage),"LOCAL"),this.boundEventHandler=(e,t)=>this.onStorageEvent(e,t),this.listeners={},this.localCache={},this.pollTimer=null,this.safariLocalStorageNotSynced=function(){const e=h();return Yf(e)||sp(e)}()&&function(){try{return!(!window||window===window.top)}catch(e){return!1}}(),this.fallbackToPolling=rp(),this._shouldAllowMigration=!0}forAllChangedKeys(e){for(const t of Object.keys(this.listeners)){const n=this.storage.getItem(t),s=this.localCache[t];n!==s&&e(t,s,n)}}onStorageEvent(e,t=!1){if(!e.key)return void this.forAllChangedKeys(((e,t,n)=>{this.notifyListeners(e,n)}));const n=e.key;if(t?this.detachListener():this.stopPolling(),this.safariLocalStorageNotSynced){const s=this.storage.getItem(n);if(e.newValue!==s)null!==e.newValue?this.storage.setItem(n,e.newValue):this.storage.removeItem(n);else if(this.localCache[n]===e.newValue&&!t)return}const s=()=>{const e=this.storage.getItem(n);(t||this.localCache[n]!==e)&&this.notifyListeners(n,e)},r=this.storage.getItem(n);!function(){const e=h();return e.indexOf("MSIE ")>=0||e.indexOf("Trident/")>=0}()||10!==document.documentMode||r===e.newValue||e.newValue===e.oldValue?s():setTimeout(s,10)}notifyListeners(e,t){this.localCache[e]=t;const n=this.listeners[e];if(n)for(const e of Array.from(n))e(t?JSON.parse(t):t)}startPolling(){this.stopPolling(),this.pollTimer=setInterval((()=>{this.forAllChangedKeys(((e,t,n)=>{this.onStorageEvent(new StorageEvent("storage",{key:e,oldValue:t,newValue:n}),!0)}))}),1e3)}stopPolling(){this.pollTimer&&(clearInterval(this.pollTimer),this.pollTimer=null)}attachListener(){window.addEventListener("storage",this.boundEventHandler)}detachListener(){window.removeEventListener("storage",this.boundEventHandler)}_addListener(e,t){0===Object.keys(this.listeners).length&&(this.fallbackToPolling?this.startPolling():this.attachListener()),this.listeners[e]||(this.listeners[e]=new Set,this.localCache[e]=this.storage.getItem(e)),this.listeners[e].add(t)}_removeListener(e,t){this.listeners[e]&&(this.listeners[e].delete(t),0===this.listeners[e].size&&delete this.listeners[e]),0===Object.keys(this.listeners).length&&(this.detachListener(),this.stopPolling())}async _set(e,t){await super._set(e,t),this.localCache[e]=JSON.stringify(t)}async _get(e){const t=await super._get(e);return this.localCache[e]=JSON.stringify(t),t}async _remove(e){await super._remove(e),delete this.localCache[e]}}Lp.type="LOCAL";const xp=Lp;class Pp extends Op{constructor(){super((()=>window.sessionStorage),"SESSION")}_addListener(e,t){}_removeListener(e,t){}}Pp.type="SESSION";const Mp=Pp;class Up{constructor(e){this.eventTarget=e,this.handlersMap={},this.boundEventHandler=this.handleEvent.bind(this)}static _getInstance(e){const t=this.receivers.find((t=>t.isListeningto(e)));if(t)return t;const n=new Up(e);return this.receivers.push(n),n}isListeningto(e){return this.eventTarget===e}async handleEvent(e){const t=e,{eventId:n,eventType:s,data:r}=t.data,i=this.handlersMap[s];if(!(null==i?void 0:i.size))return;t.ports[0].postMessage({status:"ack",eventId:n,eventType:s});const o=Array.from(i).map((async e=>e(t.origin,r))),a=await function(e){return Promise.all(e.map((async e=>{try{return{fulfilled:!0,value:await e}}catch(e){return{fulfilled:!1,reason:e}}})))}(o);t.ports[0].postMessage({status:"done",eventId:n,eventType:s,response:a})}_subscribe(e,t){0===Object.keys(this.handlersMap).length&&this.eventTarget.addEventListener("message",this.boundEventHandler),this.handlersMap[e]||(this.handlersMap[e]=new Set),this.handlersMap[e].add(t)}_unsubscribe(e,t){this.handlersMap[e]&&t&&this.handlersMap[e].delete(t),t&&0!==this.handlersMap[e].size||delete this.handlersMap[e],0===Object.keys(this.handlersMap).length&&this.eventTarget.removeEventListener("message",this.boundEventHandler)}}function Fp(e="",t=10){let n="";for(let e=0;e{const c=Fp("",20);s.port1.start();const u=setTimeout((()=>{a(new Error("unsupported_event"))}),n);i={messageChannel:s,onMessage(e){const t=e;if(t.data.eventId===c)switch(t.data.status){case"ack":clearTimeout(u),r=setTimeout((()=>{a(new Error("timeout"))}),3e3);break;case"done":clearTimeout(r),o(t.data.response);break;default:clearTimeout(u),clearTimeout(r),a(new Error("invalid_response"))}}},this.handlers.add(i),s.port1.addEventListener("message",i.onMessage),this.target.postMessage({eventType:e,eventId:c,data:t},[s.port2])})).finally((()=>{i&&this.removeMessageHandler(i)}))}}function Bp(){return window}function $p(){return void 0!==Bp().WorkerGlobalScope&&"function"==typeof Bp().importScripts}const jp="firebaseLocalStorageDb",qp="firebaseLocalStorage",zp="fbase_key";class Hp{constructor(e){this.request=e}toPromise(){return new Promise(((e,t)=>{this.request.addEventListener("success",(()=>{e(this.request.result)})),this.request.addEventListener("error",(()=>{t(this.request.error)}))}))}}function Kp(e,t){return e.transaction([qp],t?"readwrite":"readonly").objectStore(qp)}function Gp(){const e=indexedDB.open(jp,1);return new Promise(((t,n)=>{e.addEventListener("error",(()=>{n(e.error)})),e.addEventListener("upgradeneeded",(()=>{const t=e.result;try{t.createObjectStore(qp,{keyPath:zp})}catch(e){n(e)}})),e.addEventListener("success",(async()=>{const n=e.result;n.objectStoreNames.contains(qp)?t(n):(n.close(),await function(){const e=indexedDB.deleteDatabase(jp);return new Hp(e).toPromise()}(),t(await Gp()))}))}))}async function Wp(e,t,n){const s=Kp(e,!0).put({[zp]:t,value:n});return new Hp(s).toPromise()}function Qp(e,t){const n=Kp(e,!0).delete(t);return new Hp(n).toPromise()}class Xp{constructor(){this.type="LOCAL",this._shouldAllowMigration=!0,this.listeners={},this.localCache={},this.pollTimer=null,this.pendingWrites=0,this.receiver=null,this.sender=null,this.serviceWorkerReceiverAvailable=!1,this.activeServiceWorker=null,this._workerInitializationPromise=this.initializeServiceWorkerMessaging().then((()=>{}),(()=>{}))}async _openDb(){return this.db||(this.db=await Gp()),this.db}async _withRetries(e){let t=0;for(;;)try{const t=await this._openDb();return await e(t)}catch(e){if(t++>3)throw e;this.db&&(this.db.close(),this.db=void 0)}}async initializeServiceWorkerMessaging(){return $p()?this.initializeReceiver():this.initializeSender()}async initializeReceiver(){this.receiver=Up._getInstance($p()?self:null),this.receiver._subscribe("keyChanged",(async(e,t)=>({keyProcessed:(await this._poll()).includes(t.key)}))),this.receiver._subscribe("ping",(async(e,t)=>["keyChanged"]))}async initializeSender(){var e,t;if(this.activeServiceWorker=await async function(){if(!(null===navigator||void 0===navigator?void 0:navigator.serviceWorker))return null;try{return(await navigator.serviceWorker.ready).active}catch(e){return null}}(),!this.activeServiceWorker)return;this.sender=new Vp(this.activeServiceWorker);const n=await this.sender._send("ping",{},800);n&&(null===(e=n[0])||void 0===e?void 0:e.fulfilled)&&(null===(t=n[0])||void 0===t?void 0:t.value.includes("keyChanged"))&&(this.serviceWorkerReceiverAvailable=!0)}async notifyServiceWorker(e){if(this.sender&&this.activeServiceWorker&&function(){var e;return(null===(e=null===navigator||void 0===navigator?void 0:navigator.serviceWorker)||void 0===e?void 0:e.controller)||null}()===this.activeServiceWorker)try{await this.sender._send("keyChanged",{key:e},this.serviceWorkerReceiverAvailable?800:50)}catch(e){}}async _isAvailable(){try{if(!indexedDB)return!1;const e=await Gp();return await Wp(e,Np,"1"),await Qp(e,Np),!0}catch(e){}return!1}async _withPendingWrite(e){this.pendingWrites++;try{await e()}finally{this.pendingWrites--}}async _set(e,t){return this._withPendingWrite((async()=>(await this._withRetries((n=>Wp(n,e,t))),this.localCache[e]=t,this.notifyServiceWorker(e))))}async _get(e){const t=await this._withRetries((t=>async function(e,t){const n=Kp(e,!1).get(t),s=await new Hp(n).toPromise();return void 0===s?null:s.value}(t,e)));return this.localCache[e]=t,t}async _remove(e){return this._withPendingWrite((async()=>(await this._withRetries((t=>Qp(t,e))),delete this.localCache[e],this.notifyServiceWorker(e))))}async _poll(){const e=await this._withRetries((e=>{const t=Kp(e,!1).getAll();return new Hp(t).toPromise()}));if(!e)return[];if(0!==this.pendingWrites)return[];const t=[],n=new Set;for(const{fbase_key:s,value:r}of e)n.add(s),JSON.stringify(this.localCache[s])!==JSON.stringify(r)&&(this.notifyListeners(s,r),t.push(s));for(const e of Object.keys(this.localCache))this.localCache[e]&&!n.has(e)&&(this.notifyListeners(e,null),t.push(e));return t}notifyListeners(e,t){this.localCache[e]=t;const n=this.listeners[e];if(n)for(const e of Array.from(n))e(t)}startPolling(){this.stopPolling(),this.pollTimer=setInterval((async()=>this._poll()),800)}stopPolling(){this.pollTimer&&(clearInterval(this.pollTimer),this.pollTimer=null)}_addListener(e,t){0===Object.keys(this.listeners).length&&this.startPolling(),this.listeners[e]||(this.listeners[e]=new Set,this._get(e)),this.listeners[e].add(t)}_removeListener(e,t){this.listeners[e]&&(this.listeners[e].delete(t),0===this.listeners[e].size&&delete this.listeners[e]),0===Object.keys(this.listeners).length&&this.stopPolling()}}Xp.type="LOCAL";const Yp=Xp;function Jp(e){return`__${e}${Math.floor(1e6*Math.random())}`}Jp("rcb"),new Ef(3e4,6e4);class Zp{constructor(e){this.providerId=Zp.PROVIDER_ID,this.auth=cp(e)}verifyPhoneNumber(e,t){return async function(e,t,n){var s;const r=await n.verify();try{let i;if(mf("string"==typeof r,e,"argument-error"),mf("recaptcha"===n.type,e,"argument-error"),i="string"==typeof t?{phoneNumber:t}:t,"session"in i){const t=i.session;if("phoneNumber"in i){mf("enroll"===t.type,e,"internal-error");const n=await function(e,t){return Rf(e,"POST","/v2/accounts/mfaEnrollment:start",Af(e,t))}(e,{idToken:t.credential,phoneEnrollmentInfo:{phoneNumber:i.phoneNumber,recaptchaToken:r}});return n.phoneSessionInfo.sessionInfo}{mf("signin"===t.type,e,"internal-error");const n=(null===(s=i.multiFactorHint)||void 0===s?void 0:s.uid)||i.multiFactorUid;mf(n,e,"missing-multi-factor-info");const o=await function(e,t){return Rf(e,"POST","/v2/accounts/mfaSignIn:start",Af(e,t))}(e,{mfaPendingCredential:t.credential,mfaEnrollmentId:n,phoneSignInInfo:{recaptchaToken:r}});return o.phoneResponseInfo.sessionInfo}}{const{sessionInfo:t}=await async function(e,t){return Rf(e,"POST","/v1/accounts:sendVerificationCode",Af(e,t))}(e,{phoneNumber:i.phoneNumber,recaptchaToken:r});return t}}finally{n._reset()}}(this.auth,e,A(t))}static credential(e,t){return yp._fromVerification(e,t)}static credentialFromResult(e){const t=e;return Zp.credentialFromTaggedObject(t)}static credentialFromError(e){return Zp.credentialFromTaggedObject(e.customData||{})}static credentialFromTaggedObject({_tokenResponse:e}){if(!e)return null;const{phoneNumber:t,temporaryProof:n}=e;return t&&n?yp._fromTokenResponse(t,n):null}}Zp.PROVIDER_ID="phone",Zp.PHONE_SIGN_IN_METHOD="phone";class em extends dp{constructor(e){super("custom","custom"),this.params=e}_getIdTokenResponse(e){return pp(e,this._buildIdpRequest())}_linkToIdToken(e,t){return pp(e,this._buildIdpRequest(t))}_getReauthenticationResolver(e){return pp(e,this._buildIdpRequest())}_buildIdpRequest(e){const t={requestUri:this.params.requestUri,sessionId:this.params.sessionId,postBody:this.params.postBody,tenantId:this.params.tenantId,pendingToken:this.params.pendingToken,returnSecureToken:!0,returnIdpCredential:!0};return e&&(t.idToken=e),t}}function tm(e){return Dp(e.auth,new em(e),e.bypassAuthState)}function nm(e){const{auth:t,user:n}=e;return mf(n,t,"internal-error"),async function(e,t,n=!1){var s;const{auth:r}=e,i="reauthenticate";try{const s=await Ff(e,Rp(r,i,t,e),n);mf(s.idToken,r,"internal-error");const o=Uf(s.idToken);mf(o,r,"internal-error");const{sub:a}=o;return mf(e.uid===a,r,"user-mismatch"),Sp._forOperation(e,i,s)}catch(e){throw"auth/user-not-found"===(null===(s=e)||void 0===s?void 0:s.code)&&df(r,"user-mismatch"),e}}(n,new em(e),e.bypassAuthState)}async function sm(e){const{auth:t,user:n}=e;return mf(n,t,"internal-error"),async function(e,t,n=!1){const s=await Ff(e,t._linkToIdToken(e.auth,await e.getIdToken()),n);return Sp._forOperation(e,"link",s)}(n,new em(e),e.bypassAuthState)}class rm{constructor(e,t,n,s,r=!1){this.auth=e,this.resolver=n,this.user=s,this.bypassAuthState=r,this.pendingPromise=null,this.eventManager=null,this.filter=Array.isArray(t)?t:[t]}execute(){return new Promise((async(e,t)=>{this.pendingPromise={resolve:e,reject:t};try{this.eventManager=await this.resolver._initialize(this.auth),await this.onExecution(),this.eventManager.registerConsumer(this)}catch(e){this.reject(e)}}))}async onAuthEvent(e){const{urlResponse:t,sessionId:n,postBody:s,tenantId:r,error:i,type:o}=e;if(i)return void this.reject(i);const a={auth:this.auth,requestUri:t,sessionId:n,tenantId:r||void 0,postBody:s||void 0,user:this.user,bypassAuthState:this.bypassAuthState};try{this.resolve(await this.getIdpTask(o)(a))}catch(e){this.reject(e)}}onError(e){this.reject(e)}getIdpTask(e){switch(e){case"signInViaPopup":case"signInViaRedirect":return tm;case"linkViaPopup":case"linkViaRedirect":return sm;case"reauthViaPopup":case"reauthViaRedirect":return nm;default:df(this.auth,"internal-error")}}resolve(e){yf(this.pendingPromise,"Pending promise was never set"),this.pendingPromise.resolve(e),this.unregisterAndCleanUp()}reject(e){yf(this.pendingPromise,"Pending promise was never set"),this.pendingPromise.reject(e),this.unregisterAndCleanUp()}unregisterAndCleanUp(){this.eventManager&&this.eventManager.unregisterConsumer(this),this.pendingPromise=null,this.cleanUp()}}const im=new Ef(2e3,1e4);class om extends rm{constructor(e,t,n,s,r){super(e,t,s,r),this.provider=n,this.authWindow=null,this.pollId=null,om.currentPopupAction&&om.currentPopupAction.cancel(),om.currentPopupAction=this}async executeNotNull(){const e=await this.execute();return mf(e,this.auth,"internal-error"),e}async onExecution(){yf(1===this.filter.length,"Popup operations only handle one event");const e=Fp();this.authWindow=await this.resolver._openPopup(this.auth,this.provider,this.filter[0],e),this.authWindow.associatedEvent=e,this.resolver._originValidation(this.auth).catch((e=>{this.reject(e)})),this.resolver._isIframeWebStorageSupported(this.auth,(e=>{e||this.reject(ff(this.auth,"web-storage-unsupported"))})),this.pollUserCancellation()}get eventId(){var e;return(null===(e=this.authWindow)||void 0===e?void 0:e.associatedEvent)||null}cancel(){this.reject(ff(this.auth,"cancelled-popup-request"))}cleanUp(){this.authWindow&&this.authWindow.close(),this.pollId&&window.clearTimeout(this.pollId),this.authWindow=null,this.pollId=null,om.currentPopupAction=null}pollUserCancellation(){const e=()=>{var t,n;(null===(n=null===(t=this.authWindow)||void 0===t?void 0:t.window)||void 0===n?void 0:n.closed)?this.pollId=window.setTimeout((()=>{this.pollId=null,this.reject(ff(this.auth,"popup-closed-by-user"))}),2e3):this.pollId=window.setTimeout(e,im.get())};e()}}om.currentPopupAction=null;const am=new Map;class cm extends rm{constructor(e,t,n=!1){super(e,["signInViaRedirect","linkViaRedirect","reauthViaRedirect","unknown"],t,void 0,n),this.eventId=null}async execute(){let e=am.get(this.auth._key());if(!e){try{const t=await async function(e,t){const n=function(e){return Gf("pendingRedirect",e.config.apiKey,e.name)}(t),s=function(e){return wf(e._redirectPersistence)}(e);if(!await s._isAvailable())return!1;const r="true"===await s._get(n);return await s._remove(n),r}(this.resolver,this.auth),n=t?await super.execute():null;e=()=>Promise.resolve(n)}catch(t){e=()=>Promise.reject(t)}am.set(this.auth._key(),e)}return this.bypassAuthState||am.set(this.auth._key(),(()=>Promise.resolve(null))),e()}async onAuthEvent(e){if("signInViaRedirect"===e.type)return super.onAuthEvent(e);if("unknown"!==e.type){if(e.eventId){const t=await this.auth._redirectUserForId(e.eventId);if(t)return this.user=t,super.onAuthEvent(e);this.resolve(null)}}else this.resolve(null)}async onExecution(){}cleanUp(){}}function um(e,t){am.set(e._key(),t)}async function lm(e,t,n=!1){const s=cp(e),r=function(e,t){return t?wf(t):(mf(e._popupRedirectResolver,e,"argument-error"),e._popupRedirectResolver)}(s,t),i=new cm(s,r,n),o=await i.execute();return o&&!n&&(delete o.user._redirectEventId,await s._persistUserIfCurrent(o.user),await s._setRedirectUser(null,t)),o}class hm{constructor(e){this.auth=e,this.cachedEventUids=new Set,this.consumers=new Set,this.queuedRedirectEvent=null,this.hasHandledPotentialRedirect=!1,this.lastProcessedEventTime=Date.now()}registerConsumer(e){this.consumers.add(e),this.queuedRedirectEvent&&this.isEventForConsumer(this.queuedRedirectEvent,e)&&(this.sendToConsumer(this.queuedRedirectEvent,e),this.saveEventToCache(this.queuedRedirectEvent),this.queuedRedirectEvent=null)}unregisterConsumer(e){this.consumers.delete(e)}onEvent(e){if(this.hasEventBeenHandled(e))return!1;let t=!1;return this.consumers.forEach((n=>{this.isEventForConsumer(e,n)&&(t=!0,this.sendToConsumer(e,n),this.saveEventToCache(e))})),this.hasHandledPotentialRedirect||!function(e){switch(e.type){case"signInViaRedirect":case"linkViaRedirect":case"reauthViaRedirect":return!0;case"unknown":return fm(e);default:return!1}}(e)||(this.hasHandledPotentialRedirect=!0,t||(this.queuedRedirectEvent=e,t=!0)),t}sendToConsumer(e,t){var n;if(e.error&&!fm(e)){const s=(null===(n=e.error.code)||void 0===n?void 0:n.split("auth/")[1])||"internal-error";t.onError(ff(this.auth,s))}else t.onAuthEvent(e)}isEventForConsumer(e,t){const n=null===t.eventId||!!e.eventId&&e.eventId===t.eventId;return t.filter.includes(e.type)&&n}hasEventBeenHandled(e){return Date.now()-this.lastProcessedEventTime>=6e5&&this.cachedEventUids.clear(),this.cachedEventUids.has(dm(e))}saveEventToCache(e){this.cachedEventUids.add(dm(e)),this.lastProcessedEventTime=Date.now()}}function dm(e){return[e.type,e.eventId,e.sessionId,e.tenantId].filter((e=>e)).join("-")}function fm({type:e,error:t}){return"unknown"===e&&"auth/no-auth-event"===(null==t?void 0:t.code)}const pm=/^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$/,mm=/^https?/;function gm(e){const t=_f(),{protocol:n,hostname:s}=new URL(t);if(e.startsWith("chrome-extension://")){const r=new URL(e);return""===r.hostname&&""===s?"chrome-extension:"===n&&e.replace("chrome-extension://","")===t.replace("chrome-extension://",""):"chrome-extension:"===n&&r.hostname===s}if(!mm.test(n))return!1;if(pm.test(e))return s===e;const r=e.replace(/\./g,"\\.");return new RegExp("^(.+\\."+r+"|"+r+")$","i").test(s)}const ym=new Ef(3e4,6e4);function vm(){const e=Bp().___jsl;if(null==e?void 0:e.H)for(const t of Object.keys(e.H))if(e.H[t].r=e.H[t].r||[],e.H[t].L=e.H[t].L||[],e.H[t].r=[...e.H[t].L],e.CP)for(let t=0;t{var s,r,i,o;function a(){vm(),gapi.load("gapi.iframes",{callback:()=>{t(gapi.iframes.getContext())},ontimeout:()=>{vm(),n(ff(e,"network-request-failed"))},timeout:ym.get()})}if(null===(r=null===(s=Bp().gapi)||void 0===s?void 0:s.iframes)||void 0===r?void 0:r.Iframe)t(gapi.iframes.getContext());else{if(!(null===(i=Bp().gapi)||void 0===i?void 0:i.load)){const t=Jp("iframefcb");return Bp()[t]=()=>{gapi.load?a():n(ff(e,"network-request-failed"))},(o=`https://apis.google.com/js/api.js?onload=${t}`,new Promise(((e,t)=>{const n=document.createElement("script");n.setAttribute("src",o),n.onload=e,n.onerror=e=>{const n=ff("internal-error");n.customData=e,t(n)},n.type="text/javascript",n.charset="UTF-8",function(){var e,t;return null!==(t=null===(e=document.getElementsByTagName("head"))||void 0===e?void 0:e[0])&&void 0!==t?t:document}().appendChild(n)}))).catch((e=>n(e)))}a()}})).catch((e=>{throw wm=null,e}))}(e),wm}const bm=new Ef(5e3,15e3),Tm={style:{position:"absolute",top:"-100px",width:"1px",height:"1px"},"aria-hidden":"true",tabindex:"-1"},Em=new Map([["identitytoolkit.googleapis.com","p"],["staging-identitytoolkit.sandbox.googleapis.com","s"],["test-identitytoolkit.sandbox.googleapis.com","t"]]);function Im(e){const t=e.config;mf(t.authDomain,e,"auth-domain-config-required");const n=t.emulator?If(t,"emulator/auth/iframe"):`https://${e.config.authDomain}/__/auth/iframe`,s={apiKey:t.apiKey,appName:e.name,v:ye},r=Em.get(e.config.apiHost);r&&(s.eid=r);const i=e._getFrameworks();return i.length&&(s.fw=i.join(",")),`${n}?${E(s).slice(1)}`}const km={location:"yes",resizable:"yes",statusbar:"yes",toolbar:"no"};class Sm{constructor(e){this.window=e,this.associatedEvent=null}close(){if(this.window)try{this.window.close()}catch(e){}}}function Cm(e,t,n,s,r,i){mf(e.config.authDomain,e,"auth-domain-config-required"),mf(e.config.apiKey,e,"invalid-api-key");const o={apiKey:e.config.apiKey,appName:e.name,authType:n,redirectUrl:s,v:ye,eventId:r};if(t instanceof _p){t.setDefaultLanguage(e.languageCode),o.providerId=t.providerId||"",function(e){for(const t in e)if(Object.prototype.hasOwnProperty.call(e,t))return!1;return!0}(t.getCustomParameters())||(o.customParameters=JSON.stringify(t.getCustomParameters()));for(const[e,t]of Object.entries(i||{}))o[e]=t}if(t instanceof bp){const e=t.getScopes().filter((e=>""!==e));e.length>0&&(o.scopes=e.join(","))}e.tenantId&&(o.tid=e.tenantId);const a=o;for(const e of Object.keys(a))void 0===a[e]&&delete a[e];return`${function({config:e}){return e.emulator?If(e,"emulator/auth/handler"):`https://${e.authDomain}/__/auth/handler`}(e)}?${E(a).slice(1)}`}const Am="webStorageSupport",Rm=class{constructor(){this.eventManagers={},this.iframes={},this.originValidationPromises={},this._redirectPersistence=Mp,this._completeRedirectFn=lm,this._overrideRedirectResult=um}async _openPopup(e,t,n,s){var r;return yf(null===(r=this.eventManagers[e._key()])||void 0===r?void 0:r.manager,"_initialize() not called before _openPopup()"),function(e,t,n,s=500,r=600){const i=Math.max((window.screen.availHeight-r)/2,0).toString(),o=Math.max((window.screen.availWidth-s)/2,0).toString();let a="";const c=Object.assign(Object.assign({},km),{width:s.toString(),height:r.toString(),top:i,left:o}),u=h().toLowerCase();n&&(a=Jf(u)?"_blank":n),Xf(u)&&(t=t||"http://localhost",c.scrollbars="yes");const l=Object.entries(c).reduce(((e,[t,n])=>`${e}${t}=${n},`),"");if(function(e=h()){var t;return sp(e)&&!!(null===(t=window.navigator)||void 0===t?void 0:t.standalone)}(u)&&"_self"!==a)return function(e,t){const n=document.createElement("a");n.href=e,n.target=t;const s=document.createEvent("MouseEvent");s.initMouseEvent("click",!0,!0,window,1,0,0,0,0,!1,!1,!1,!1,1,null),n.dispatchEvent(s)}(t||"",a),new Sm(null);const d=window.open(t||"",a,l);mf(d,e,"popup-blocked");try{d.focus()}catch(e){}return new Sm(d)}(e,Cm(e,t,n,_f(),s),Fp())}async _openRedirect(e,t,n,s){var r;return await this._originValidation(e),r=Cm(e,t,n,_f(),s),Bp().location.href=r,new Promise((()=>{}))}_initialize(e){const t=e._key();if(this.eventManagers[t]){const{manager:e,promise:n}=this.eventManagers[t];return e?Promise.resolve(e):(yf(n,"If manager is not set, promise should be"),n)}const n=this.initAndGetManager(e);return this.eventManagers[t]={promise:n},n.catch((()=>{delete this.eventManagers[t]})),n}async initAndGetManager(e){const t=await async function(e){const t=await _m(e),n=Bp().gapi;return mf(n,e,"internal-error"),t.open({where:document.body,url:Im(e),messageHandlersFilter:n.iframes.CROSS_ORIGIN_IFRAMES_FILTER,attributes:Tm,dontclear:!0},(t=>new Promise((async(n,s)=>{await t.restyle({setHideOnLeave:!1});const r=ff(e,"network-request-failed"),i=Bp().setTimeout((()=>{s(r)}),bm.get());function o(){Bp().clearTimeout(i),n(t)}t.ping(o).then(o,(()=>{s(r)}))}))))}(e),n=new hm(e);return t.register("authEvent",(t=>(mf(null==t?void 0:t.authEvent,e,"invalid-auth-event"),{status:n.onEvent(t.authEvent)?"ACK":"ERROR"})),gapi.iframes.CROSS_ORIGIN_IFRAMES_FILTER),this.eventManagers[e._key()]={manager:n},this.iframes[e._key()]=t,n}_isIframeWebStorageSupported(e,t){this.iframes[e._key()].send(Am,{type:Am},(n=>{var s;const r=null===(s=null==n?void 0:n[0])||void 0===s?void 0:s.webStorageSupport;void 0!==r&&t(!!r),df(e,"internal-error")}),gapi.iframes.CROSS_ORIGIN_IFRAMES_FILTER)}_originValidation(e){const t=e._key();return this.originValidationPromises[t]||(this.originValidationPromises[t]=async function(e){if(e.config.emulator)return;const{authorizedDomains:t}=await async function(e,t={}){return Rf(e,"GET","/v1/projects",t)}(e);for(const e of t)try{if(gm(e))return}catch(e){}df(e,"unauthorized-domain")}(e)),this.originValidationPromises[t]}get _shouldInitProactively(){return rp()||Yf()||sp()}};var Dm="@firebase/auth",Nm="0.20.11";class Om{constructor(e){this.auth=e,this.internalListeners=new Map}getUid(){var e;return this.assertAuthConfigured(),(null===(e=this.auth.currentUser)||void 0===e?void 0:e.uid)||null}async getToken(e){return this.assertAuthConfigured(),await this.auth._initializationPromise,this.auth.currentUser?{accessToken:await this.auth.currentUser.getIdToken(e)}:null}addAuthTokenListener(e){if(this.assertAuthConfigured(),this.internalListeners.has(e))return;const t=this.auth.onIdTokenChanged((t=>{var n;e((null===(n=t)||void 0===n?void 0:n.stsTokenManager.accessToken)||null)}));this.internalListeners.set(e,t),this.updateProactiveRefresh()}removeAuthTokenListener(e){this.assertAuthConfigured();const t=this.internalListeners.get(e);t&&(this.internalListeners.delete(e),t(),this.updateProactiveRefresh())}assertAuthConfigured(){mf(this.auth._initializationPromise,"dependent-sdk-initialized-before-auth")}updateProactiveRefresh(){this.internalListeners.size>0?this.auth._startProactiveRefresh():this.auth._stopProactiveRefresh()}}const Lm=m("authIdTokenMaxAge")||300;let xm=null;var Pm;Pm="Browser",fe(new R("auth",((e,{options:t})=>{const n=e.getProvider("app").getImmediate(),s=e.getProvider("heartbeat"),{apiKey:r,authDomain:i}=n.options;return((e,n)=>{mf(r&&!r.includes(":"),"invalid-api-key",{appName:e.name}),mf(!(null==i?void 0:i.includes(":")),"argument-error",{appName:e.name});const s={apiKey:r,authDomain:i,clientPlatform:Pm,apiHost:"identitytoolkit.googleapis.com",tokenApiHost:"securetoken.googleapis.com",apiScheme:"https",sdkClientVersion:ip(Pm)},o=new ap(e,n,s);return function(e,t){const n=(null==t?void 0:t.persistence)||[],s=(Array.isArray(n)?n:[n]).map(wf);(null==t?void 0:t.errorMap)&&e._updateErrorMap(t.errorMap),e._initializeWithPersistence(s,null==t?void 0:t.popupRedirectResolver)}(o,t),o})(n,s)}),"PUBLIC").setInstantiationMode("EXPLICIT").setInstanceCreatedCallback(((e,t,n)=>{e.getProvider("auth-internal").initialize()}))),fe(new R("auth-internal",(e=>(e=>new Om(e))(cp(e.getProvider("auth").getImmediate()))),"PRIVATE").setInstantiationMode("EXPLICIT")),_e(Dm,Nm,void 0),_e(Dm,Nm,"esm2017"),ve({apiKey:"AIzaSyCNbmkHVo6YAOk69h9OgMGbQJBUlW5xz4c",authDomain:"iedc-admin.firebaseapp.com",projectId:"iedc-admin",storageBucket:"iedc-admin.appspot.com",messagingSenderId:"200933316108",appId:"1:200933316108:web:8b5d08b6295d0962ec8029"});const Mm=function(e,t){const n=pe(we(),"firestore").getImmediate({identifier:"(default)"});if(!n._initialized){const e=p("firestore");e&&function(e,t,n,s={}){var r;const i=(e=kl(e,Al))._getSettings();if("firestore.googleapis.com"!==i.host&&i.host!==t&&Vr("Host has been set in both settings() and useEmulator(), emulator host will be used"),e._setSettings(Object.assign(Object.assign({},i),{host:`${t}:${n}`,ssl:!1})),s.mockUserToken){let t,n;if("string"==typeof s.mockUserToken)t=s.mockUserToken,n=Lr.MOCK_USER;else{t=y(s.mockUserToken,null===(r=e._app)||void 0===r?void 0:r.options.projectId);const i=s.mockUserToken.sub||s.mockUserToken.user_id;if(!i)throw new Hr(zr.INVALID_ARGUMENT,"mockUserToken must contain 'sub' or 'user_id' field!");n=new Lr(i)}e._authCredentials=new Qr(new Gr(t,n))}}(n,...e)}return n}(),Um=function(e=we(),t){const n=pe(e=A(e),$d).getImmediate({identifier:t}),s=p("storage");return s&&function(e,t,n,s={}){!function(e,t,n,s={}){e.host=`${t}:${n}`,e._protocol="http";const{mockUserToken:r}=s;r&&(e._overrideAuthToken="string"==typeof r?r:y(r,e.app.options.projectId))}(e,t,n,s)}(n,...s),n}(),Fm=function(e=we()){const t=pe(e,"auth");if(t.isInitialized())return t.getImmediate();const n=function(e,t){const n=pe(e,"auth");if(n.isInitialized()){const e=n.getImmediate();if(b(n.getOptions(),null!=t?t:{}))return e;df(e,"already-initialized")}return n.initialize({options:t})}(e,{popupRedirectResolver:Rm,persistence:[Yp,xp,Mp]}),s=m("authTokenSyncURL");if(s){const e=(r=s,async e=>{const t=e&&await e.getIdTokenResult(),n=t&&((new Date).getTime()-Date.parse(t.issuedAtTime))/1e3;if(n&&n>Lm)return;const s=null==t?void 0:t.token;xm!==s&&(xm=s,await fetch(r,{method:s?"POST":"DELETE",headers:s?{Authorization:`Bearer ${s}`}:{}}))});!function(e,t,n){A(e).beforeAuthStateChanged(t,n)}(n,e,(()=>e(n.currentUser))),function(t,n,s,r){A(t).onIdTokenChanged((t=>e(t)),void 0,void 0)}(n)}var r;const i=f("auth");return i&&function(e,t,n){const s=cp(e);mf(s._canInitEmulator,s,"emulator-config-failed"),mf(/^https?:\/\//.test(t),s,"invalid-emulator-scheme");const r=!!(null==n?void 0:n.disableWarnings),i=lp(t),{host:o,port:a}=function(e){const t=lp(e),n=/(\/\/)?([^?#/]+)/.exec(e.substr(t.length));if(!n)return{host:"",port:null};const s=n[2].split("@").pop()||"",r=/^(\[[^\]]+\])(:|$)/.exec(s);if(r){const e=r[1];return{host:e,port:hp(s.substr(e.length+1))}}{const[e,t]=s.split(":");return{host:e,port:hp(t)}}}(t),c=null===a?"":`:${a}`;s.config.emulator={url:`${i}//${o}${c}/`},s.settings.appVerificationDisabledForTesting=!0,s.emulatorConfig=Object.freeze({host:o,port:a,protocol:i.replace(":",""),options:Object.freeze({disableWarnings:r})}),r||function(){function e(){const e=document.createElement("p"),t=e.style;e.innerText="Running in emulator mode. Do not use with production credentials.",t.position="fixed",t.width="100%",t.backgroundColor="#ffffff",t.border=".1em solid #000000",t.color="#b50000",t.bottom="0px",t.left="0px",t.margin="0px",t.zIndex="10000",t.textAlign="center",e.classList.add("firebase-emulator-warning"),document.body.appendChild(e)}"undefined"!=typeof console&&"function"==typeof console.info&&console.info("WARNING: You are using the Auth Emulator, which is intended for local testing only. Do not use with production credentials."),"undefined"!=typeof window&&"undefined"!=typeof document&&("loading"===document.readyState?window.addEventListener("DOMContentLoaded",e):e())}()}(n,`http://${i}`),n}();function Vm(){n(),$("#app").load("forms/login.html",(()=>{console.log("login page loaded");const e=document.getElementById("loginform");e.addEventListener("submit",(t=>{t.preventDefault(),console.log("pre auth");const n=e.email.value,s=e.password.value;console.log(s),function(e,t,n){return async function(e,t){return Dp(cp(e),t)}(A(e),wp.credential(t,n))}(Fm,n,s).then((t=>{console.log("user logined in:",t.user),e.reset(),$("#app").load("forms/options.html",(()=>{rf()}))})).catch((e=>{console.log("auth is not done brww, just try again"),console.log(e),document.getElementById("password").value=""}))})),t()}))}!function(e,s,r,i){A(e).onAuthStateChanged((e=>{e?(console.log("user logged in: ",e.email),n(),$("#app").load("forms/options.html",(()=>{rf(),t()}))):(console.log("user logged out or no user at all"),Vm())}),void 0,void 0)}(Fm),window.addEventListener("load",(e=>{t()}))})(); \ No newline at end of file diff --git a/dist/forms/sih24.html b/dist/forms/sih24.html index c1608af..8a96705 100644 --- a/dist/forms/sih24.html +++ b/dist/forms/sih24.html @@ -30,12 +30,12 @@

SIH'24

- Team Leader - Member 2 - Member 3 - Member 4 - Member 5 - Member 6 + Team Leader + Member 2 + Member 3 + Member 4 + Member 5 + Member 6 Team Submission Docs @@ -46,31 +46,37 @@

SIH'24

Lead Year Lead Email Lead Phone + Lead Gender Lead LinkedIn Lead Github Lead Food Preference M2 Name + M2 Email M2 Branch M2 Year M2 Food Preference M3 Name + M3 Email M3 Branch M3 Year M3 Food Preference M4 Name + M4 Email M4 Branch M4 Year M4 Food Preference M5 Name + M5 Email M5 Branch M5 Year M5 Food Preference M6 Name + M6 Email M6 Branch M6 Year M6 Food Preference diff --git a/src/script/sih24.js b/src/script/sih24.js index 7bf0333..74a918c 100644 --- a/src/script/sih24.js +++ b/src/script/sih24.js @@ -79,33 +79,47 @@ function bodyTemplate(data, docId) { ${data.teamLeader.currentYear} ${data.teamLeader.studentEmail} ${data.teamLeader.studentPhone} - ${data.teamLeader.linkedin ? `${data.teamLeader.linkedin}` : ``} - ${data.teamLeader.portfolio ? `${data.teamLeader.portfolio}` : ``} + ${data.teamLeader.gender} + ${ + data.teamLeader.linkedin + ? `${data.teamLeader.linkedin}` + : `` + } + ${ + data.teamLeader.portfolio + ? `${data.teamLeader.portfolio}` + : `` + } ${ data.teamLeader.foodPreference || "" } ${data.members[0]?.member2Name || ""} + ${data.members[0]?.member2Email || ""} ${data.members[0]?.member2Branch || ""} ${data.members[0]?.member2Year || ""} ${data.members[0]?.member2FoodPreference || ""} ${data.members[1]?.member3Name || ""} + ${data.members[1]?.member3Email || ""} ${data.members[1]?.member3Branch || ""} ${data.members[1]?.member3Year || ""} ${data.members[1]?.member3FoodPreference || ""} ${data.members[2]?.member4Name || ""} + ${data.members[2]?.member4Email || ""} ${data.members[2]?.member4Branch || ""} ${data.members[2]?.member4Year || ""} ${data.members[2]?.member4FoodPreference || ""} ${data.members[3]?.member5Name || ""} + ${data.members[3]?.member5Email || ""} ${data.members[3]?.member5Branch || ""} ${data.members[3]?.member5Year || ""} ${data.members[3]?.member5FoodPreference || ""} ${data.members[4]?.member6Name || ""} + ${data.members[4]?.member6Email || ""} ${data.members[4]?.member6Branch || ""} ${data.members[4]?.member6Year || ""} ${data.members[4]?.member6FoodPreference || ""}