!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e="undefined"!=typeof globalThis?globalThis:e||self).firebase=t()}(this,function(){"use strict";function i(e){var t=n(e);return r.encodeByteArray(t,!0)}const t={NODE_CLIENT:!1,NODE_ADMIN:!1,SDK_VERSION:"${JSCORE_VERSION}"},f=function(e,t){if(!e)throw u(t)},u=function(e){return new Error("Firebase Database ("+t.SDK_VERSION+") INTERNAL ASSERT FAILED: "+e)},n=function(t){const n=[];let r=0;for(let i=0;i>6|192:(55296==(64512&e)&&i+1>18|240,n[r++]=e>>12&63|128):n[r++]=e>>12|224,n[r++]=e>>6&63|128),n[r++]=63&e|128)}return n},r={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(n,e){if(!Array.isArray(n))throw Error("encodeByteArray takes an array as a parameter");this.init_();var r=e?this.byteToCharMapWebSafe_:this.byteToCharMap_;const i=[];for(let u=0;u>6,t=63&l;c||(t=64,a||(e=64)),i.push(r[s>>2],r[(3&s)<<4|o>>4],r[e],r[t])}return i.join("")},encodeString(e,t){return this.HAS_NATIVE_SUPPORT&&!t?btoa(e):this.encodeByteArray(n(e),t)},decodeString(e,t){return this.HAS_NATIVE_SUPPORT&&!t?atob(e):function(e){const t=[];let n=0,r=0;for(;n>10)),t[r++]=String.fromCharCode(56320+(1023&s))):(i=e[n++],s=e[n++],t[r++]=String.fromCharCode((15&a)<<12|(63&i)<<6|63&s))}return t.join("")}(this.decodeStringToByteArray(e,t))},decodeStringToByteArray(e,t){this.init_();var n=t?this.charToByteMapWebSafe_:this.charToByteMap_;const r=[];for(let c=0;c>4),64!==a&&(r.push(s<<4&240|a>>2),64!==o&&r.push(a<<6&192|o))}return r},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)}}},s=function(e){return i(e).replace(/\./g,"")},a=function(e){try{return r.decodeString(e,!0)}catch(e){console.error("base64Decode failed: ",e)}return null};function c(e,t){if(!(t instanceof Object))return t;switch(t.constructor){case Date:const n=t;return new Date(n.getTime());case Object:void 0===e&&(e={});break;case Array:e=[];break;default:return t}for(const r in t)t.hasOwnProperty(r)&&"__proto__"!==r&&(e[r]=c(e[r],t[r]));return e}function o(){if("undefined"!=typeof self)return self;if("undefined"!=typeof window)return window;if("undefined"!=typeof global)return global;throw new Error("Unable to locate global object.")}const e=()=>o().__FIREBASE_DEFAULTS__,l=()=>{if("undefined"!=typeof process&&void 0!==process.env){var e=process.env.__FIREBASE_DEFAULTS__;return e?JSON.parse(e):void 0}},h=()=>{if("undefined"!=typeof document){let e;try{e=document.cookie.match(/__FIREBASE_DEFAULTS__=([^;]+)/)}catch(e){return}var t=e&&a(e[1]);return t&&JSON.parse(t)}},d=()=>{try{return e()||l()||h()}catch(e){return void console.info(`Unable to get __FIREBASE_DEFAULTS__ due to: ${e}`)}},p=()=>{var e;return null===(e=d())||void 0===e?void 0:e.config};var g,m,v;class y{constructor(){this.reject=()=>{},this.resolve=()=>{},this.promise=new Promise((e,t)=>{this.resolve=e,this.reject=t})}wrapCallback(n){return(e,t)=>{e?this.reject(e):this.resolve(t),"function"==typeof n&&(this.promise.catch(()=>{}),1===n.length?n(e):n(e,t))}}}function _(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.');var n=t||"demo-project",r=e.iat||0,i=e.sub||e.user_id;if(!i)throw new Error("mockUserToken must contain 'sub' or 'user_id' field!");i=Object.assign({iss:`https://securetoken.google.com/${n}`,aud:n,iat:r,exp:r+3600,auth_time:r,sub:i,user_id:i,firebase:{sign_in_provider:"custom",identities:{}}},e);return[s(JSON.stringify({alg:"none",type:"JWT"})),s(JSON.stringify(i)),""].join(".")}function w(){return"undefined"!=typeof navigator&&"string"==typeof navigator.userAgent?navigator.userAgent:""}function b(){return"undefined"!=typeof window&&!!(window.cordova||window.phonegap||window.PhoneGap)&&/ios|iphone|ipod|ipad|android|blackberry|iemobile/i.test(w())}function I(){var e=null===(e=d())||void 0===e?void 0:e.forceEnvironment;if("node"===e)return!0;if("browser"===e)return!1;try{return"[object process]"===Object.prototype.toString.call(global.process)}catch(e){return!1}}function T(){var e="object"==typeof chrome?chrome.runtime:"object"==typeof browser?browser.runtime:void 0;return"object"==typeof e&&void 0!==e.id}function E(){return"object"==typeof navigator&&"ReactNative"===navigator.product}function k(){const e=w();return 0<=e.indexOf("MSIE ")||0<=e.indexOf("Trident/")}function S(){return!0===t.NODE_ADMIN}function C(){try{return"object"==typeof indexedDB}catch(e){return!1}}function A(){return new Promise((t,n)=>{try{let e=!0;const r="validate-browser-context-for-indexeddb-analytics-module",i=self.indexedDB.open(r);i.onsuccess=()=>{i.result.close(),e||self.indexedDB.deleteDatabase(r),t(!0)},i.onupgradeneeded=()=>{e=!1},i.onerror=()=>{var e;n((null===(e=i.error)||void 0===e?void 0:e.message)||"")}}catch(e){n(e)}})}function N(){return!("undefined"==typeof navigator||!navigator.cookieEnabled)}class R extends Error{constructor(e,t,n){super(t),this.code=e,this.customData=n,this.name="FirebaseError",Object.setPrototypeOf(this,R.prototype),Error.captureStackTrace&&Error.captureStackTrace(this,x.prototype.create)}}class x{constructor(e,t,n){this.service=e,this.serviceName=t,this.errors=n}create(e,...t){var r,n=t[0]||{},i=`${this.service}/${e}`,s=this.errors[e],s=s?(r=n,s.replace(D,(e,t)=>{var n=r[t];return null!=n?String(n):`<${t}?>`})):"Error",s=`${this.serviceName}: ${s} (${i}).`;return new R(i,s,n)}}const D=/\{\$([^}]+)}/g;function P(e){return JSON.parse(e)}function O(e){return JSON.stringify(e)}function M(e){let t={},n={},r={},i="";try{var s=e.split(".");t=P(a(s[0])||""),n=P(a(s[1])||""),i=s[2],r=n.d||{},delete n.d}catch(e){}return{header:t,claims:n,data:r,signature:i}}function L(e,t){return Object.prototype.hasOwnProperty.call(e,t)}function F(e,t){if(Object.prototype.hasOwnProperty.call(e,t))return e[t]}function U(e){for(const t in e)if(Object.prototype.hasOwnProperty.call(e,t))return!1;return!0}function q(e,t,n){const r={};for(const i in e)Object.prototype.hasOwnProperty.call(e,i)&&(r[i]=t.call(n,e[i],i,e));return r}function V(e,t){if(e===t)return 1;const n=Object.keys(e),r=Object.keys(t);for(const a of n){if(!r.includes(a))return;var i=e[a],s=t[a];if(B(i)&&B(s)){if(!V(i,s))return}else if(i!==s)return}for(const o of r)if(!n.includes(o))return;return 1}function B(e){return null!==e&&"object"==typeof e}function j(e){const t=[];for(const[n,r]of Object.entries(e))Array.isArray(r)?r.forEach(e=>{t.push(encodeURIComponent(n)+"="+encodeURIComponent(e))}):t.push(encodeURIComponent(n)+"="+encodeURIComponent(r));return t.length?"&"+t.join("&"):""}function $(e){const r={},t=e.replace(/^\?/,"").split("&");return t.forEach(e=>{var t,n;e&&([t,n]=e.split("="),r[decodeURIComponent(t)]=decodeURIComponent(n))}),r}function K(e){var t=e.indexOf("?");if(!t)return"";var n=e.indexOf("#",t);return e.substring(t,0>>31)}let t=this.chain_[0],s=this.chain_[1],a=this.chain_[2],o=this.chain_[3],c=this.chain_[4],l,u;for(let p=0;p<80;p++){u=p<40?p<20?(l=o^s&(a^o),1518500249):(l=s^a^o,1859775393):p<60?(l=s&a|o&(s|a),2400959708):(l=s^a^o,3395469782);var h=(t<<5|t>>>27)+l+c+u+i[p]&4294967295;c=o,o=a,a=4294967295&(s<<30|s>>>2),s=t,t=h}this.chain_[0]=this.chain_[0]+t&4294967295,this.chain_[1]=this.chain_[1]+s&4294967295,this.chain_[2]=this.chain_[2]+a&4294967295,this.chain_[3]=this.chain_[3]+o&4294967295,this.chain_[4]=this.chain_[4]+c&4294967295}update(n,r){if(null!=n){var i=(r=void 0===r?n.length:r)-this.blockSize;let e=0;const s=this.buf_;let t=this.inbuf_;for(;e>e&255,++n;return t}}function z(e,t){const n=new G(e,t);return n.subscribe.bind(n)}class G{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(t){this.forEachObserver(e=>{e.next(t)})}error(t){this.forEachObserver(e=>{e.error(t)}),this.close(t)}complete(){this.forEachObserver(e=>{e.complete()}),this.close()}subscribe(e,t,n){let r;if(void 0===e&&void 0===t&&void 0===n)throw new Error("Missing Observer.");r=function(e,t){if("object"!=typeof e||null===e)return!1;for(const n of t)if(n in e&&"function"==typeof e[n])return!0;return!1}(e,["next","error","complete"])?e:{next:e,error:t,complete:n},void 0===r.next&&(r.next=H),void 0===r.error&&(r.error=H),void 0===r.complete&&(r.complete=H);var i=this.unsubscribeOne.bind(this,this.observers.length);return this.finalized&&this.task.then(()=>{try{this.finalError?r.error(this.finalError):r.complete()}catch(e){}}),this.observers.push(r),i}unsubscribeOne(e){void 0!==this.observers&&void 0!==this.observers[e]&&(delete this.observers[e],--this.observerCount,0===this.observerCount&&void 0!==this.onNoObservers&&this.onNoObservers(this))}forEachObserver(t){if(!this.finalized)for(let e=0;e{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 H(){}function Q(e,t,n,r){let i;if(r{const t=16*Math.random()|0,n="x"===e?t:3&t|8;return n.toString(16)})}const ee=function(e){let t=0;for(let r=0;r"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=ce){return this.instances.has(e)}getOptions(e=ce){return this.instancesOptions.get(e)||{}}initialize(e={}){var{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`);var r,i,s=this.getOrInitializeService({instanceIdentifier:n,options:t});for([r,i]of this.instancesDeferred.entries())n===this.normalizeInstanceIdentifier(r)&&i.resolve(s);return s}onInit(e,t){var n=this.normalizeInstanceIdentifier(t);const r=null!==(i=this.onInitCallbacks.get(n))&&void 0!==i?i:new Set;r.add(e),this.onInitCallbacks.set(n,r);var i=this.instances.get(n);return i&&e(i,n),()=>{r.delete(e)}}invokeOnInitCallbacks(e,t){var n=this.onInitCallbacks.get(t);if(n)for(const r of n)try{r(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:(r=e)===ce?void 0:r,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 r;return n||null}normalizeInstanceIdentifier(e=ce){return!this.component||this.component.multipleInstances?e:ce}shouldAutoInitialize(){return!!this.component&&"EXPLICIT"!==this.component.instantiationMode}}class ue{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){const t=this.getProvider(e.name);t.isComponentSet()&&this.providers.delete(e.name),this.addComponent(e)}getProvider(e){if(this.providers.has(e))return this.providers.get(e);var t=new le(e,this);return this.providers.set(e,t),t}getProviders(){return Array.from(this.providers.values())}}const he=[];(m=g=g||{})[m.DEBUG=0]="DEBUG",m[m.VERBOSE=1]="VERBOSE",m[m.INFO=2]="INFO",m[m.WARN=3]="WARN",m[m.ERROR=4]="ERROR",m[m.SILENT=5]="SILENT";const de={debug:g.DEBUG,verbose:g.VERBOSE,info:g.INFO,warn:g.WARN,error:g.ERROR,silent:g.SILENT},pe=g.INFO,fe={[g.DEBUG]:"log",[g.VERBOSE]:"log",[g.INFO]:"info",[g.WARN]:"warn",[g.ERROR]:"error"},ge=(e,t,...n)=>{if(!(te.some(e=>t instanceof e);let ye,_e;const we=new WeakMap,be=new WeakMap,Ie=new WeakMap,Te=new WeakMap,Ee=new WeakMap;let ke={get(e,t,n){if(e instanceof IDBTransaction){if("done"===t)return be.get(e);if("objectStoreNames"===t)return e.objectStoreNames||Ie.get(e);if("store"===t)return n.objectStoreNames[1]?void 0:n.objectStore(n.objectStoreNames[0])}return Ae(e[t])},set(e,t,n){return e[t]=n,!0},has(e,t){return e instanceof IDBTransaction&&("done"===t||"store"===t)||t in e}};function Se(r){return r!==IDBDatabase.prototype.transaction||"objectStoreNames"in IDBTransaction.prototype?(_e=_e||[IDBCursor.prototype.advance,IDBCursor.prototype.continue,IDBCursor.prototype.continuePrimaryKey]).includes(r)?function(...e){return r.apply(Ne(this),e),Ae(we.get(this))}:function(...e){return Ae(r.apply(Ne(this),e))}:function(e,...t){var n=r.call(Ne(this),e,...t);return Ie.set(n,e.sort?e.sort():[e]),Ae(n)}}function Ce(e){return"function"==typeof e?Se(e):(e instanceof IDBTransaction&&(s=e,be.has(s)||(t=new Promise((e,t)=>{const n=()=>{s.removeEventListener("complete",r),s.removeEventListener("error",i),s.removeEventListener("abort",i)},r=()=>{e(),n()},i=()=>{t(s.error||new DOMException("AbortError","AbortError")),n()};s.addEventListener("complete",r),s.addEventListener("error",i),s.addEventListener("abort",i)}),be.set(s,t))),ve(e,ye=ye||[IDBDatabase,IDBObjectStore,IDBIndex,IDBCursor,IDBTransaction])?new Proxy(e,ke):e);var s,t}function Ae(e){if(e instanceof IDBRequest)return function(s){const e=new Promise((e,t)=>{const n=()=>{s.removeEventListener("success",r),s.removeEventListener("error",i)},r=()=>{e(Ae(s.result)),n()},i=()=>{t(s.error),n()};s.addEventListener("success",r),s.addEventListener("error",i)});return e.then(e=>{e instanceof IDBCursor&&we.set(e,s)}).catch(()=>{}),Ee.set(e,s),e}(e);if(Te.has(e))return Te.get(e);var t=Ce(e);return t!==e&&(Te.set(e,t),Ee.set(t,e)),t}const Ne=e=>Ee.get(e);function Re(e,t,{blocked:n,upgrade:r,blocking:i,terminated:s}={}){const a=indexedDB.open(e,t),o=Ae(a);return r&&a.addEventListener("upgradeneeded",e=>{r(Ae(a.result),e.oldVersion,e.newVersion,Ae(a.transaction))}),n&&a.addEventListener("blocked",()=>n()),o.then(e=>{s&&e.addEventListener("close",()=>s()),i&&e.addEventListener("versionchange",()=>i())}).catch(()=>{}),o}function xe(e,{blocked:t}={}){const n=indexedDB.deleteDatabase(e);return t&&n.addEventListener("blocked",()=>t()),Ae(n).then(()=>{})}const De=["get","getKey","getAll","getAllKeys","count"],Pe=["put","add","delete","clear"],Oe=new Map;function Me(e,t){if(e instanceof IDBDatabase&&!(t in e)&&"string"==typeof t){if(Oe.get(t))return Oe.get(t);const i=t.replace(/FromIndex$/,""),s=t!==i,a=Pe.includes(i);if(i in(s?IDBIndex:IDBObjectStore).prototype&&(a||De.includes(i))){var n=async function(e,...t){var n=this.transaction(e,a?"readwrite":"readonly");let r=n.store;return s&&(r=r.index(t.shift())),(await Promise.all([r[i](...t),a&&n.done]))[0]};return Oe.set(t,n),n}}}ke={...v=ke,get:(e,t,n)=>Me(e,t)||v.get(e,t,n),has:(e,t)=>!!Me(e,t)||v.has(e,t)};class Le{constructor(e){this.container=e}getPlatformInfoString(){const e=this.container.getProviders();return e.map(e=>{if("VERSION"!==(null==(t=e.getComponent())?void 0:t.type))return null;var t,t=e.getImmediate();return`${t.library}/${t.version}`}).filter(e=>e).join(" ")}}const Fe="@firebase/app",Ue=new me("@firebase/app");var qe;const Ve="[DEFAULT]",Be={"@firebase/app":"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"},je=new Map,$e=new Map;function Ke(t,n){try{t.container.addComponent(n)}catch(e){Ue.debug(`Component ${n.name} failed to register with FirebaseApp ${t.name}`,e)}}function We(e,t){e.container.addOrOverwriteComponent(t)}function ze(e){var t=e.name;if($e.has(t))return Ue.debug(`There were multiple attempts to register component ${t}.`),!1;$e.set(t,e);for(const n of je.values())Ke(n,e);return!0}function Ge(e,t){const n=e.container.getProvider("heartbeat").getImmediate({optional:!0});return n&&n.triggerHeartbeat(),e.container.getProvider(t)}const He=new x("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 Qe{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 oe("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 He.create("app-deleted",{appName:this._name})}}const Ye="9.16.0";function Je(e,t={}){let n=e;if("object"!=typeof t){const i=t;t={name:i}}var r=Object.assign({name:Ve,automaticDataCollectionEnabled:!1},t);const i=r.name;if("string"!=typeof i||!i)throw He.create("bad-app-name",{appName:String(i)});if(n=n||p(),!n)throw He.create("no-options");var s=je.get(i);if(s){if(V(n,s.options)&&V(r,s.config))return s;throw He.create("duplicate-app",{appName:i})}const a=new ue(i);for(const o of $e.values())a.addComponent(o);r=new Qe(n,r,a);return je.set(i,r),r}function Xe(e=Ve){var t=je.get(e);if(!t&&e===Ve)return Je();if(!t)throw He.create("no-app",{appName:e});return t}async function Ze(e){var t=e.name;je.has(t)&&(je.delete(t),await Promise.all(e.container.getProviders().map(e=>e.delete())),e.isDeleted=!0)}function et(e,t,n){let r=null!==(s=Be[e])&&void 0!==s?s:e;n&&(r+=`-${n}`);var i=r.match(/\s|\//),s=t.match(/\s|\//);if(i||s){const a=[`Unable to register library "${r}" with version "${t}":`];return i&&a.push(`library name "${r}" contains illegal characters (whitespace or "/")`),i&&s&&a.push("and"),s&&a.push(`version name "${t}" contains illegal characters (whitespace or "/")`),void Ue.warn(a.join(" "))}ze(new oe(`${r}-version`,()=>({library:r,version:t}),"VERSION"))}function tt(e,t){if(null!==e&&"function"!=typeof e)throw He.create("invalid-log-argument");!function(s,e){for(const t of he){let i=null;e&&e.level&&(i=de[e.level]),t.userLogHandler=null===s?null:(e,t,...n)=>{var r=n.map(e=>{if(null==e)return null;if("string"==typeof e)return e;if("number"==typeof e||"boolean"==typeof e)return e.toString();if(e instanceof Error)return e.message;try{return JSON.stringify(e)}catch(e){return null}}).filter(e=>e).join(" ");t>=(null!==i&&void 0!==i?i:e.logLevel)&&s({level:g[t].toLowerCase(),message:r,args:n,type:e.name})}}}(e,t)}function nt(e){var t;t=e,he.forEach(e=>{e.setLogLevel(t)})}const rt="firebase-heartbeat-database",it=1,st="firebase-heartbeat-store";let at=null;function ot(){return at=at||Re(rt,it,{upgrade:(e,t)=>{0===t&&e.createObjectStore(st)}}).catch(e=>{throw He.create("idb-open",{originalErrorMessage:e.message})}),at}async function ct(e,t){try{const r=await ot(),i=r.transaction(st,"readwrite"),s=i.objectStore(st);return await s.put(t,lt(e)),i.done}catch(e){var n;e instanceof R?Ue.warn(e.message):(n=He.create("idb-set",{originalErrorMessage:null==e?void 0:e.message}),Ue.warn(n.message))}}function lt(e){return`${e.name}!${e.options.appId}`}class ut{constructor(e){this.container=e,this._heartbeatsCache=null;var t=this.container.getProvider("app").getImmediate();this._storage=new dt(t),this._heartbeatsCachePromise=this._storage.read().then(e=>this._heartbeatsCache=e)}async triggerHeartbeat(){const e=this.container.getProvider("platform-logger").getImmediate();var t=e.getPlatformInfoString();const n=ht();if(null===this._heartbeatsCache&&(this._heartbeatsCache=await this._heartbeatsCachePromise),this._heartbeatsCache.lastSentHeartbeatDate!==n&&!this._heartbeatsCache.heartbeats.some(e=>e.date===n))return this._heartbeatsCache.heartbeats.push({date:n,agent:t}),this._heartbeatsCache.heartbeats=this._heartbeatsCache.heartbeats.filter(e=>{var 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"";var e=ht(),{heartbeatsToSend:t,unsentEntries:n}=function(e,t=1024){const n=[];let r=e.slice();for(const i of e){const s=n.find(e=>e.agent===i.agent);if(s){if(s.dates.push(i.date),pt(n)>t){s.dates.pop();break}}else if(n.push({agent:i.agent,dates:[i.date]}),pt(n)>t){n.pop();break}r=r.slice(1)}return{heartbeatsToSend:n,unsentEntries:r}}(this._heartbeatsCache.heartbeats),t=s(JSON.stringify({version:2,heartbeats:t}));return this._heartbeatsCache.lastSentHeartbeatDate=e,0!0).catch(()=>!1)}async read(){return await this._canUseIndexedDBPromise&&await async function(e){try{const n=await ot();return n.transaction(st).objectStore(st).get(lt(e))}catch(e){var t;e instanceof R?Ue.warn(e.message):(t=He.create("idb-get",{originalErrorMessage:null==e?void 0:e.message}),Ue.warn(t.message))}}(this.app)||{heartbeats:[]}}async overwrite(e){var t;if(await this._canUseIndexedDBPromise){var n=await this.read();return ct(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){var n=await this.read();return ct(this.app,{lastSentHeartbeatDate:null!==(t=e.lastSentHeartbeatDate)&&void 0!==t?t:n.lastSentHeartbeatDate,heartbeats:[...n.heartbeats,...e.heartbeats]})}}}function pt(e){return s(JSON.stringify({version:2,heartbeats:e})).length}qe="",ze(new oe("platform-logger",e=>new Le(e),"PRIVATE")),ze(new oe("heartbeat",e=>new ut(e),"PRIVATE")),et(Fe,"0.9.1",qe),et(Fe,"0.9.1","esm2017"),et("fire-js","");var ft=Object.freeze({__proto__:null,SDK_VERSION:Ye,_DEFAULT_ENTRY_NAME:Ve,_addComponent:Ke,_addOrOverwriteComponent:We,_apps:je,_clearComponents:function(){$e.clear()},_components:$e,_getProvider:Ge,_registerComponent:ze,_removeServiceInstance:function(e,t,n=Ve){Ge(e,t).clearInstance(n)},deleteApp:Ze,getApp:Xe,getApps:function(){return Array.from(je.values())},initializeApp:Je,onLog:tt,registerVersion:et,setLogLevel:nt,FirebaseError:R});class gt{constructor(e,t){this._delegate=e,this.firebase=t,Ke(e,new oe("app-compat",()=>this,"PUBLIC")),this.container=e.container}get automaticDataCollectionEnabled(){return this._delegate.automaticDataCollectionEnabled}set automaticDataCollectionEnabled(e){this._delegate.automaticDataCollectionEnabled=e}get name(){return this._delegate.name}get options(){return this._delegate.options}delete(){return new Promise(e=>{this._delegate.checkDestroyed(),e()}).then(()=>(this.firebase.INTERNAL.removeApp(this.name),Ze(this._delegate)))}_getService(e,t=Ve){var n;this._delegate.checkDestroyed();const r=this._delegate.container.getProvider(e);return r.isInitialized()||"EXPLICIT"!==(null===(n=r.getComponent())||void 0===n?void 0:n.instantiationMode)||r.initialize(),r.getImmediate({identifier:t})}_removeServiceInstance(e,t=Ve){this._delegate.container.getProvider(e).clearInstance(t)}_addComponent(e){Ke(this._delegate,e)}_addOrOverwriteComponent(e){We(this._delegate,e)}toJSON(){return{name:this.name,automaticDataCollectionEnabled:this.automaticDataCollectionEnabled,options:this.options}}}const mt=new x("app-compat","Firebase",{"no-app":"No Firebase App '{$appName}' has been created - call Firebase App.initializeApp()","invalid-app-argument":"firebase.{$appName}() takes either no argument or a Firebase App instance."});function vt(i){const s={},a={__esModule:!0,initializeApp:function(e,t={}){var n=Je(e,t);if(L(s,n.name))return s[n.name];var r=new i(n,a);return s[n.name]=r},app:o,registerVersion:et,setLogLevel:nt,onLog:tt,apps:null,SDK_VERSION:Ye,INTERNAL:{registerComponent:function(n){const r=n.name,t=r.replace("-compat","");{var e;ze(n)&&"PUBLIC"===n.type&&(e=(e=o())=>{if("function"!=typeof e[t])throw mt.create("invalid-app-argument",{appName:r});return e[t]()},void 0!==n.serviceProps&&c(e,n.serviceProps),a[t]=e,i.prototype[t]=function(...e){const t=this._getService.bind(this,r);return t.apply(this,n.multipleInstances?e:[])})}return"PUBLIC"===n.type?a[t]:null},removeApp:function(e){delete s[e]},useAsService:function(e,t){if("serverAuth"===t)return null;var n=t;return n},modularAPIs:ft}};function o(e){if(e=e||Ve,!L(s,e))throw mt.create("no-app",{appName:e});return s[e]}return a.default=a,Object.defineProperty(a,"apps",{get:function(){return Object.keys(s).map(e=>s[e])}}),o.App=i,a}var yt=function e(){const t=vt(gt);return t.INTERNAL=Object.assign(Object.assign({},t.INTERNAL),{createFirebaseNamespace:e,extendNamespace:function(e){c(t,e)},createSubscribe:z,ErrorFactory:x,deepExtend:c}),t}();const _t=new me("@firebase/app-compat");if("object"==typeof self&&self.self===self&&void 0!==self.firebase){_t.warn(` Warning: Firebase is already defined in the global scope. Please make sure Firebase library is only loaded once. `);const nO=self.firebase.SDK_VERSION;nO&&0<=nO.indexOf("LITE")&&_t.warn(` Warning: You are trying to load Firebase while using Firebase Performance standalone script. You should load Firebase Performance with this instance of Firebase to avoid loading duplicate code. `)}const wt=yt;et("@firebase/app-compat","0.2.1",void 0);wt.registerVersion("firebase","9.16.0","app-compat");var bt="@firebase/installations",It="0.6.1";const Tt=1e4,Et="w:0.6.1",kt="FIS_v2",St="https://firebaseinstallations.googleapis.com/v1",Ct=36e5;const At=new x("installations","Installations",{"missing-app-config-values":'Missing App configuration value: "{$valueName}"',"not-registered":"Firebase Installation is not registered.","installation-not-found":"Firebase Installation not found.","request-failed":'{$requestName} request failed with error "{$serverCode} {$serverStatus}: {$serverMessage}"',"app-offline":"Could not process request. Application offline.","delete-pending-registration":"Can't delete installation while there is a pending registration request."});function Nt(e){return e instanceof R&&e.code.includes("request-failed")}function Rt({projectId:e}){return`${St}/projects/${e}/installations`}function xt(e){return{token:e.token,requestStatus:2,expiresIn:(e=e.expiresIn,Number(e.replace("s","000"))),creationTime:Date.now()}}async function Dt(e,t){var n=(await t.json()).error;return At.create("request-failed",{requestName:e,serverCode:n.code,serverMessage:n.message,serverStatus:n.status})}function Pt({apiKey:e}){return new Headers({"Content-Type":"application/json",Accept:"application/json","x-goog-api-key":e})}function Ot(e,{refreshToken:t}){const n=Pt(e);return n.append("Authorization",(t=t,`${kt} ${t}`)),n}async function Mt(e){var t=await e();return 500<=t.status&&t.status<600?e():t}function Lt(t){return new Promise(e=>{setTimeout(e,t)})}const Ft=/^[cdef][\w-]{21}$/,Ut="";function qt(){try{const t=new Uint8Array(17),n=self.crypto||self.msCrypto;n.getRandomValues(t),t[0]=112+t[0]%16;var e=function(e){const t=function(e){const t=btoa(String.fromCharCode(...e));return t.replace(/\+/g,"-").replace(/\//g,"_")}(e);return t.substr(0,22)}(t);return Ft.test(e)?e:Ut}catch(e){return Ut}}function Vt(e){return`${e.appName}!${e.appId}`}const Bt=new Map;function jt(e,t){var n=Vt(e);$t(n,t),function(e,t){const n=function(){!Kt&&"BroadcastChannel"in self&&(Kt=new BroadcastChannel("[Firebase] FID Change"),Kt.onmessage=e=>{$t(e.data.key,e.data.fid)});return Kt}();n&&n.postMessage({key:e,fid:t});0===Bt.size&&Kt&&(Kt.close(),Kt=null)}(n,t)}function $t(e,t){var n=Bt.get(e);if(n)for(const r of n)r(t)}let Kt=null;const Wt="firebase-installations-store";let zt=null;function Gt(){return zt=zt||Re("firebase-installations-database",1,{upgrade:(e,t)=>{0===t&&e.createObjectStore(Wt)}}),zt}async function Ht(e,t){var n=Vt(e);const r=await Gt(),i=r.transaction(Wt,"readwrite"),s=i.objectStore(Wt);var a=await s.get(n);return await s.put(t,n),await i.done,a&&a.fid===t.fid||jt(e,t.fid),t}async function Qt(e){var t=Vt(e);const n=await Gt(),r=n.transaction(Wt,"readwrite");await r.objectStore(Wt).delete(t),await r.done}async function Yt(e,t){var n=Vt(e);const r=await Gt(),i=r.transaction(Wt,"readwrite"),s=i.objectStore(Wt);var a=await s.get(n),o=t(a);return void 0===o?await s.delete(n):await s.put(o,n),await i.done,!o||a&&a.fid===o.fid||jt(e,o.fid),o}async function Jt(n){let r;var e=await Yt(n.appConfig,e=>{var t=Zt(e||{fid:qt(),registrationStatus:0}),t=function(e,t){{if(0!==t.registrationStatus)return 1===t.registrationStatus?{installationEntry:t,registrationPromise:async function(e){let t=await Xt(e.appConfig);for(;1===t.registrationStatus;)await Lt(100),t=await Xt(e.appConfig);if(0!==t.registrationStatus)return t;{var{installationEntry:n,registrationPromise:r}=await Jt(e);return r||n}}(e)}:{installationEntry:t};if(!navigator.onLine){var n=Promise.reject(At.create("app-offline"));return{installationEntry:t,registrationPromise:n}}var r={fid:t.fid,registrationStatus:1,registrationTime:Date.now()},n=async function(t,n){try{var e=await async function({appConfig:e,heartbeatServiceProvider:t},{fid:n}){const r=Rt(e),i=Pt(e),s=t.getImmediate({optional:!0});!s||(a=await s.getHeartbeatsHeader())&&i.append("x-firebase-client",a);var a={fid:n,authVersion:kt,appId:e.appId,sdkVersion:Et};const o={method:"POST",headers:i,body:JSON.stringify(a)},c=await Mt(()=>fetch(r,o));if(c.ok){a=await c.json();return{fid:a.fid||n,registrationStatus:2,refreshToken:a.refreshToken,authToken:xt(a.authToken)}}throw await Dt("Create Installation",c)}(t,n);return Ht(t.appConfig,e)}catch(e){throw Nt(e)&&409===e.customData.serverCode?await Qt(t.appConfig):await Ht(t.appConfig,{fid:n.fid,registrationStatus:0}),e}}(e,r);return{installationEntry:r,registrationPromise:n}}}(n,t);return r=t.registrationPromise,t.installationEntry});return e.fid===Ut?{installationEntry:await r}:{installationEntry:e,registrationPromise:r}}function Xt(e){return Yt(e,e=>{if(!e)throw At.create("installation-not-found");return Zt(e)})}function Zt(e){return 1===(t=e).registrationStatus&&t.registrationTime+Ttfetch(r,l));if(u.ok)return xt(await u.json());throw await Dt("Generate Auth Token",u)}async function tn(r,i=!1){let s;var e=await Yt(r.appConfig,e=>{if(!rn(e))throw At.create("not-registered");var t,n=e.authToken;if(i||2!==(t=n).requestStatus||function(e){var t=Date.now();return t{if(!rn(e))throw At.create("not-registered");var t,n=e.authToken;return 1===(t=n).requestStatus&&t.requestTime+Tt{var t=e.getProvider("app").getImmediate();return{app:t,appConfig:function(e){if(!e||!e.options)throw an("App Configuration");if(!e.name)throw an("App Name");for(const t of["projectId","apiKey","appId"])if(!e.options[t])throw an(t);return{appName:e.name,projectId:e.options.projectId,apiKey:e.options.apiKey,appId:e.options.appId}}(t),heartbeatServiceProvider:Ge(t,"heartbeat"),_delete:()=>Promise.resolve()}},ln=e=>{const t=Ge(e.getProvider("app").getImmediate(),on).getImmediate();return{getId:()=>async function(e){var t=e;const{installationEntry:n,registrationPromise:r}=await Jt(t);return(r||tn(t)).catch(console.error),n.fid}(t),getToken:e=>sn(t,e)}};ze(new oe(on,cn,"PUBLIC")),ze(new oe("installations-internal",ln,"PRIVATE")),et(bt,It),et(bt,It,"esm2017");const un="analytics",hn="firebase_id",dn="origin",pn="https://firebase.googleapis.com/v1alpha/projects/-/apps/{app-id}/webConfig",fn="https://www.googletagmanager.com/gtag/js",gn=new me("@firebase/analytics");function mn(e){return Promise.all(e.map(e=>e.catch(e=>e)))}function vn(r,i,s,a){return async function(e,t,n){try{"event"===e?await async function(e,n,r,i,s){try{let t=[];if(s&&s.send_to){let e=s.send_to;Array.isArray(e)||(e=[e]);const c=await mn(r);for(const l of e){var a=c.find(e=>e.measurementId===l),o=a&&n[a.appId];if(!o){t=[];break}t.push(o)}}0===t.length&&(t=Object.values(n)),await Promise.all(t),e("event",i,s||{})}catch(e){gn.error(e)}}(r,i,s,t,n):"config"===e?await async function(e,t,n,r,i,s){var a=r[i];try{if(a)await t[a];else{const c=await mn(n);var o=c.find(e=>e.measurementId===i);o&&await t[o.appId]}}catch(e){gn.error(e)}e("config",i,s)}(r,i,s,a,t,n):"consent"===e?r("consent","update",n):r("set",t)}catch(e){gn.error(e)}}}const yn=new x("analytics","Analytics",{"already-exists":"A Firebase Analytics instance with the appId {$id} already exists. Only one Firebase Analytics instance can be created for each appId.","already-initialized":"initializeAnalytics() cannot be called again with different options than those it was initially called with. It can be called again with the same options to return the existing instance, or getAnalytics() can be used to get a reference to the already-intialized instance.","already-initialized-settings":"Firebase Analytics has already been initialized.settings() must be called before initializing any Analytics instanceor it will have no effect.","interop-component-reg-failed":"Firebase Analytics Interop Component failed to instantiate: {$reason}","invalid-analytics-context":"Firebase Analytics is not supported in this environment. Wrap initialization of analytics in analytics.isSupported() to prevent initialization in unsupported environments. Details: {$errorInfo}","indexeddb-unavailable":"IndexedDB unavailable or restricted in this environment. Wrap initialization of analytics in analytics.isSupported() to prevent initialization in unsupported environments. Details: {$errorInfo}","fetch-throttle":"The config fetch request timed out while in an exponential backoff state. Unix timestamp in milliseconds when fetch request throttling ends: {$throttleEndTimeMillis}.","config-fetch-failed":"Dynamic config fetch failed: [{$httpStatus}] {$responseMessage}","no-api-key":'The "apiKey" field is empty in the local Firebase config. Firebase Analytics requires this field tocontain a valid API key.',"no-app-id":'The "appId" field is empty in the local Firebase config. Firebase Analytics requires this field tocontain a valid app ID.'}),_n=30;const wn=new class{constructor(e={},t=1e3){this.throttleMetadata=e,this.intervalMillis=t}getThrottleMetadata(e){return this.throttleMetadata[e]}setThrottleMetadata(e,t){this.throttleMetadata[e]=t}deleteThrottleMetadata(e){delete this.throttleMetadata[e]}};async function bn(e){var t,{appId:n,apiKey:r}=e,r={method:"GET",headers:new Headers({Accept:"application/json","x-goog-api-key":r})},n=pn.replace("{app-id}",n);const i=await fetch(n,r);if(200===i.status||304===i.status)return i.json();{let e="";try{var s=await i.json();null!==(t=s.error)&&void 0!==t&&t.message&&(e=s.error.message)}catch(e){}throw yn.create("config-fetch-failed",{httpStatus:i.status,responseMessage:e})}}async function In(e,t=wn,n){var{appId:r,apiKey:i,measurementId:s}=e.options;if(!r)throw yn.create("no-app-id");if(!i){if(s)return{measurementId:s,appId:r};throw yn.create("no-api-key")}var a=t.getThrottleMetadata(r)||{backoffCount:0,throttleEndTimeMillis:Date.now()};const o=new kn;return setTimeout(async()=>{o.abort()},void 0!==n?n:6e4),async function t(n,{throttleEndTimeMillis:e,backoffCount:r},i,s=wn){var a;const{appId:o,measurementId:c}=n;try{await Tn(i,e)}catch(e){if(c)return gn.warn("Timed out fetching this Firebase app's measurement ID from the server."+` Falling back to the measurement ID ${c}`+` provided in the "measurementId" field in the local Firebase config. [${null==e?void 0:e.message}]`),{appId:o,measurementId:c};throw e}try{const l=await bn(n);return s.deleteThrottleMetadata(o),l}catch(e){const u=e;if(!En(u)){if(s.deleteThrottleMetadata(o),c)return gn.warn("Failed to fetch this Firebase app's measurement ID from the server."+` Falling back to the measurement ID ${c}`+` provided in the "measurementId" field in the local Firebase config. [${null===u||void 0===u?void 0:u.message}]`),{appId:o,measurementId:c};throw e}const h=503===Number(null===(a=null===u||void 0===u?void 0:u.customData)||void 0===a?void 0:a.httpStatus)?se(r,s.intervalMillis,_n):se(r,s.intervalMillis),d={throttleEndTimeMillis:Date.now()+h,backoffCount:r+1};return s.setThrottleMetadata(o,d),gn.debug(`Calling attemptFetch again in ${h} millis`),t(n,d,i,s)}}({appId:r,apiKey:i,measurementId:s},a,o,t)}function Tn(i,s){return new Promise((e,t)=>{var n=Math.max(s-Date.now(),0);const r=setTimeout(e,n);i.addEventListener(()=>{clearTimeout(r),t(yn.create("fetch-throttle",{throttleEndTimeMillis:s}))})})}function En(e){if(!(e instanceof R&&e.customData))return!1;var t=Number(e.customData.httpStatus);return 429===t||500===t||503===t||504===t}class kn{constructor(){this.listeners=[]}addEventListener(e){this.listeners.push(e)}abort(){this.listeners.forEach(e=>e())}}async function Sn(t,e,n,r,i,s,a){const o=In(t);o.then(e=>{n[e.measurementId]=e.appId,t.options.measurementId&&e.measurementId!==t.options.measurementId&&gn.warn(`The measurement ID in the local Firebase config (${t.options.measurementId})`+` does not match the measurement ID fetched from the server (${e.measurementId}).`+" To ensure analytics events are always sent to the correct Analytics property, update the measurement ID field in the local config or remove it from the local config.")}).catch(e=>gn.error(e)),e.push(o);var c=async function(){if(!C())return gn.warn(yn.create("indexeddb-unavailable",{errorInfo:"IndexedDB is not available in this environment."}).message),!1;try{await A()}catch(e){return gn.warn(yn.create("indexeddb-unavailable",{errorInfo:null==e?void 0:e.toString()}).message),!1}return!0}().then(e=>{if(e)return r.getId()}),[l,u]=await Promise.all([o,c]);!function(e){var t=window.document.getElementsByTagName("script");for(const n of Object.values(t))if(n.src&&n.src.includes(fn)&&n.src.includes(e))return n}(s)&&function(e,t){const n=document.createElement("script");n.src=`${fn}?l=${e}&id=${t}`,n.async=!0,document.head.appendChild(n)}(s,l.measurementId),i("js",new Date);const h=null!==(c=null==a?void 0:a.config)&&void 0!==c?c:{};return h[dn]="firebase",h.update=!0,null!=u&&(h[hn]=u),i("config",l.measurementId,h),l.measurementId}class Cn{constructor(e){this.app=e}_delete(){return delete An[this.app.options.appId],Promise.resolve()}}let An={},Nn=[];const Rn={};let xn="dataLayer",Dn="gtag",Pn,On,Mn=!1;function Ln(e){if(Mn)throw yn.create("already-initialized");e.dataLayerName&&(xn=e.dataLayerName),e.gtagName&&(Dn=e.gtagName)}function Fn(e,t,n){!function(){const e=[];var t;T()&&e.push("This is a browser extension environment."),N()||e.push("Cookies are not available."),0`(${t+1}) ${e}`).join(" "),t=yn.create("invalid-analytics-context",{errorInfo:t}),gn.warn(t.message))}();var r,i,s=e.options.appId;if(!s)throw yn.create("no-app-id");if(!e.options.apiKey){if(!e.options.measurementId)throw yn.create("no-api-key");gn.warn('The "apiKey" field is empty in the local Firebase config. This is needed to fetch the latest'+` measurement ID for this Firebase app. Falling back to the measurement ID ${e.options.measurementId}`+' provided in the "measurementId" field in the local Firebase config.')}if(null!=An[s])throw yn.create("already-exists",{id:s});return Mn||(function(e){let t=[];Array.isArray(window[e])?t=window[e]:window[e]=t,t}(xn),{wrappedGtag:r,gtagCore:i}=function(e,t,n,r,i){let s=function(){window[r].push(arguments)};return window[i]&&"function"==typeof window[i]&&(s=window[i]),window[i]=vn(s,e,t,n),{gtagCore:s,wrappedGtag:window[i]}}(An,Nn,Rn,xn,Dn),On=r,Pn=i,Mn=!0),An[s]=Sn(e,Nn,Rn,t,Pn,xn,n),new Cn(e)}async function Un(){if(T())return!1;if(!N())return!1;if(!C())return!1;try{return await A()}catch(e){return!1}}function qn(e,t,n){e=ae(e),async function(e,t,n,r){if(r&&r.global)return e("set",{screen_name:n}),Promise.resolve();e("config",await t,{update:!0,screen_name:n})}(On,An[e.app.options.appId],t,n).catch(e=>gn.error(e))}function Vn(e,t,n){e=ae(e),async function(e,t,n,r){if(r&&r.global)return e("set",{user_id:n}),Promise.resolve();e("config",await t,{update:!0,user_id:n})}(On,An[e.app.options.appId],t,n).catch(e=>gn.error(e))}function Bn(e,t,n){e=ae(e),async function(e,t,n,r){if(r&&r.global){const i={};for(const s of Object.keys(n))i[`user_properties.${s}`]=n[s];return e("set",i),Promise.resolve()}e("config",await t,{update:!0,user_properties:n})}(On,An[e.app.options.appId],t,n).catch(e=>gn.error(e))}function jn(e,t){e=ae(e),async function(e,t){var n=await e;window[`ga-disable-${n}`]=!t}(An[e.app.options.appId],t).catch(e=>gn.error(e))}function $n(e,t,n,r){e=ae(e),async function(e,t,n,r,i){var s;i&&i.global?e("event",n,r):(s=await t,e("event",n,Object.assign(Object.assign({},r),{send_to:s})))}(On,An[e.app.options.appId],t,n,r).catch(e=>gn.error(e))}const Kn="@firebase/analytics";ze(new oe(un,(e,{options:t})=>{return Fn(e.getProvider("app").getImmediate(),e.getProvider("installations-internal").getImmediate(),t)},"PUBLIC")),ze(new oe("analytics-internal",function(e){try{const r=e.getProvider(un).getImmediate();return{logEvent:(e,t,n)=>$n(r,e,t,n)}}catch(e){throw yn.create("interop-component-reg-failed",{reason:e})}},"PRIVATE")),et(Kn,"0.9.1"),et(Kn,"0.9.1","esm2017");var Wn,zn;class Gn{constructor(e,t){this.app=e,this._delegate=t}logEvent(e,t,n){$n(this._delegate,e,t,n)}setCurrentScreen(e,t){qn(this._delegate,e,t)}setUserId(e,t){Vn(this._delegate,e,t)}setUserProperties(e,t){Bn(this._delegate,e,t)}setAnalyticsCollectionEnabled(e){jn(this._delegate,e)}}(XS=Wn=Wn||{}).ADD_SHIPPING_INFO="add_shipping_info",XS.ADD_PAYMENT_INFO="add_payment_info",XS.ADD_TO_CART="add_to_cart",XS.ADD_TO_WISHLIST="add_to_wishlist",XS.BEGIN_CHECKOUT="begin_checkout",XS.CHECKOUT_PROGRESS="checkout_progress",XS.EXCEPTION="exception",XS.GENERATE_LEAD="generate_lead",XS.LOGIN="login",XS.PAGE_VIEW="page_view",XS.PURCHASE="purchase",XS.REFUND="refund",XS.REMOVE_FROM_CART="remove_from_cart",XS.SCREEN_VIEW="screen_view",XS.SEARCH="search",XS.SELECT_CONTENT="select_content",XS.SELECT_ITEM="select_item",XS.SELECT_PROMOTION="select_promotion",XS.SET_CHECKOUT_OPTION="set_checkout_option",XS.SHARE="share",XS.SIGN_UP="sign_up",XS.TIMING_COMPLETE="timing_complete",XS.VIEW_CART="view_cart",XS.VIEW_ITEM="view_item",XS.VIEW_ITEM_LIST="view_item_list",XS.VIEW_PROMOTION="view_promotion",XS.VIEW_SEARCH_RESULTS="view_search_results";const Hn=e=>{var t=e.getProvider("app-compat").getImmediate(),n=e.getProvider("analytics").getImmediate();return new Gn(t,n)};zn={Analytics:Gn,settings:Ln,isSupported:Un,EventName:Wn},wt.INTERNAL.registerComponent(new oe("analytics-compat",Hn,"PUBLIC").setServiceProps(zn).setMultipleInstances(!0)),wt.registerVersion("@firebase/analytics-compat","0.2.1");const Qn=new Map,Yn={activated:!1,tokenObservers:[]},Jn={initialized:!1,enabled:!1};function Xn(e){return Qn.get(e)||Object.assign({},Yn)}const Zn="https://content-firebaseappcheck.googleapis.com/v1",er="exchangeDebugToken",tr={OFFSET_DURATION:3e5,RETRIAL_MIN_WAIT:3e4,RETRIAL_MAX_WAIT:96e4};class nr{constructor(e,t,n,r,i){if(this.operation=e,this.retryPolicy=t,this.getWaitDuration=n,this.lowerBound=r,this.upperBound=i,this.pending=null,i<(this.nextErrorWaitInterval=r))throw new Error("Proactive refresh lower bound greater than upper bound!")}start(){this.nextErrorWaitInterval=this.lowerBound,this.process(!0).catch(()=>{})}stop(){this.pending&&(this.pending.reject("cancelled"),this.pending=null)}isRunning(){return!!this.pending}async process(e){this.stop();try{this.pending=new y,t=this.getNextRun(e),await new Promise(e=>{setTimeout(e,t)}),this.pending.resolve(),await this.pending.promise,this.pending=new y,await this.operation(),this.pending.resolve(),await this.pending.promise,this.process(!0).catch(()=>{})}catch(e){this.retryPolicy(e)?this.process(!1).catch(()=>{}):this.stop()}var t}getNextRun(e){if(e)return this.nextErrorWaitInterval=this.lowerBound,this.getWaitDuration();var t=this.nextErrorWaitInterval;return this.nextErrorWaitInterval*=2,this.nextErrorWaitInterval>this.upperBound&&(this.nextErrorWaitInterval=this.upperBound),t}}const rr=new x("appCheck","AppCheck",{"already-initialized":"You have already called initializeAppCheck() for FirebaseApp {$appName} with different options. To avoid this error, call initializeAppCheck() with the same options as when it was originally called. This will return the already initialized instance.","use-before-activation":"App Check is being used before initializeAppCheck() is called for FirebaseApp {$appName}. Call initializeAppCheck() before instantiating other Firebase services.","fetch-network-error":"Fetch failed to connect to a network. Check Internet connection. Original error: {$originalErrorMessage}.","fetch-parse-error":"Fetch client could not parse response. Original error: {$originalErrorMessage}.","fetch-status-error":"Fetch server returned an HTTP error status. HTTP status: {$httpStatus}.","storage-open":"Error thrown when opening storage. Original error: {$originalErrorMessage}.","storage-get":"Error thrown when reading from storage. Original error: {$originalErrorMessage}.","storage-set":"Error thrown when writing to storage. Original error: {$originalErrorMessage}.","recaptcha-error":"ReCAPTCHA error.",throttled:"Requests throttled due to {$httpStatus} error. Attempts allowed again after {$time}"});function ir(e=!1){var t;return e?null===(t=self.grecaptcha)||void 0===t?void 0:t.enterprise:self.grecaptcha}function sr(e){if(!Xn(e).activated)throw rr.create("use-before-activation",{appName:e.name})}function ar(e){var t=Math.round(e/1e3),n=Math.floor(t/86400),r=Math.floor((t-3600*n*24)/3600),i=Math.floor((t-3600*n*24-3600*r)/60),t=t-3600*n*24-3600*r-60*i;let s="";return n&&(s+=or(n)+"d:"),r&&(s+=or(r)+"h:"),s+=or(i)+"m:"+or(t)+"s",s}function or(e){return 0===e?"00":10<=e?e.toString():"0"+e}async function cr({url:e,body:t},n){const r={"Content-Type":"application/json"},i=n.getImmediate({optional:!0});!i||(c=await i.getHeartbeatsHeader())&&(r["X-Firebase-Client"]=c);var s={method:"POST",body:JSON.stringify(t),headers:r};let a;try{a=await fetch(e,s)}catch(e){throw rr.create("fetch-network-error",{originalErrorMessage:null==e?void 0:e.message})}if(200!==a.status)throw rr.create("fetch-status-error",{httpStatus:a.status});let o;try{o=await a.json()}catch(e){throw rr.create("fetch-parse-error",{originalErrorMessage:null==e?void 0:e.message})}var c=o.ttl.match(/^([\d.]+)(s)$/);if(!c||!c[2]||isNaN(Number(c[1])))throw rr.create("fetch-parse-error",{originalErrorMessage:"ttl field (timeToLive) is not in standard Protobuf Duration "+`format: ${o.ttl}`});s=1e3*Number(c[1]),c=Date.now();return{token:o.token,expireTimeMillis:c+s,issuedAtTimeMillis:c}}const lr="firebase-app-check-database",ur=1,hr="firebase-app-check-store",dr="debug-token";let pr=null;function fr(){return pr||(pr=new Promise((t,n)=>{try{const e=indexedDB.open(lr,ur);e.onsuccess=e=>{t(e.target.result)},e.onerror=e=>{var t;n(rr.create("storage-open",{originalErrorMessage:null===(t=e.target.error)||void 0===t?void 0:t.message}))},e.onupgradeneeded=e=>{const t=e.target.result;0===e.oldVersion&&t.createObjectStore(hr,{keyPath:"compositeKey"})}}catch(e){n(rr.create("storage-open",{originalErrorMessage:null==e?void 0:e.message}))}}),pr)}async function gr(e,t){const n=await fr(),r=n.transaction(hr,"readwrite"),i=r.objectStore(hr),s=i.put({compositeKey:e,value:t});return new Promise((t,n)=>{s.onsuccess=e=>{t()},r.onerror=e=>{var t;n(rr.create("storage-set",{originalErrorMessage:null===(t=e.target.error)||void 0===t?void 0:t.message}))}})}async function mr(e){const t=await fr(),i=t.transaction(hr,"readonly"),n=i.objectStore(hr),s=n.get(e);return new Promise((n,r)=>{s.onsuccess=e=>{var t=e.target.result;n(t?t.value:void 0)},i.onerror=e=>{var t;r(rr.create("storage-get",{originalErrorMessage:null===(t=e.target.error)||void 0===t?void 0:t.message}))}})}function vr(e){return`${e.options.appId}-${e.name}`}const yr=new me("@firebase/app-check");async function _r(t){if(C()){let e=void 0;try{e=await mr(vr(t))}catch(e){yr.warn(`Failed to read token from IndexedDB. Error: ${e}`)}return e}}function wr(e,t){return C()?gr(vr(e),t).catch(e=>{yr.warn(`Failed to write token to IndexedDB. Error: ${e}`)}):Promise.resolve()}async function br(){let e=void 0;try{e=await mr(dr)}catch(e){}if(e)return e;var t,n=Z();return t=n,gr(dr,t).catch(e=>yr.warn(`Failed to persist debug token to IndexedDB. Error: ${e}`)),n}function Ir(){return Jn.enabled}async function Tr(){var e=Jn;if(e.enabled&&e.token)return e.token.promise;throw Error(` Can't get debug token in production mode. `)}const Er={error:"UNKNOWN_ERROR"};async function kr(e,t=!1){var n=e.app;sr(n);const r=Xn(n);let i=r.token,s=void 0;if(i&&!Rr(i)&&(r.token=void 0,i=void 0),i||(o=await r.cachedTokenPromise)&&(Rr(o)?i=o:await wr(n,void 0)),!t&&i&&Rr(i))return{token:i.token};let a=!1;if(Ir()){r.exchangeTokenPromise||(r.exchangeTokenPromise=cr(function(e,t){var{projectId:n,appId:r,apiKey:i}=e.options;return{url:`${Zn}/projects/${n}/apps/${r}:${er}?key=${i}`,body:{debug_token:t}}}(n,await Tr()),e.heartbeatServiceProvider).finally(()=>{r.exchangeTokenPromise=void 0}),a=!0);var o=await r.exchangeTokenPromise;return await wr(n,o),{token:(r.token=o).token}}try{r.exchangeTokenPromise||(r.exchangeTokenPromise=r.provider.getToken().finally(()=>{r.exchangeTokenPromise=void 0}),a=!0),i=await Xn(n).exchangeTokenPromise}catch(e){"appCheck/throttled"===e.code?yr.warn(e.message):yr.error(e),s=e}let c;return i?s?c=Rr(i)?{token:i.token,internalError:s}:xr(s):(c={token:i.token},r.token=i,await wr(n,i)):c=xr(s),a&&Nr(n,c),c}function Sr(e,t,n,r){var i=e["app"];const s=Xn(i);i={next:n,error:r,type:t};if(s.tokenObservers=[...s.tokenObservers,i],s.token&&Rr(s.token)){const a=s.token;Promise.resolve().then(()=>{n({token:a.token}),Ar(e)}).catch(()=>{})}s.cachedTokenPromise.then(()=>Ar(e))}function Cr(e,t){const n=Xn(e);var r=n.tokenObservers.filter(e=>e.next!==t);0===r.length&&n.tokenRefresher&&n.tokenRefresher.isRunning()&&n.tokenRefresher.stop(),n.tokenObservers=r}function Ar(e){var t=e["app"];const n=Xn(t);let r=n.tokenRefresher;r||(r=function(n){const r=n["app"];return new nr(async()=>{var e=Xn(r);let t;if(t=e.token?await kr(n,!0):await kr(n),t.error)throw t.error;if(t.internalError)throw t.internalError},()=>!0,()=>{var e=Xn(r);if(e.token){var t=e.token.issuedAtTimeMillis+.5*(e.token.expireTimeMillis-e.token.issuedAtTimeMillis)+3e5,e=e.token.expireTimeMillis-3e5,t=Math.min(t,e);return Math.max(0,t-Date.now())}return 0},tr.RETRIAL_MIN_WAIT,tr.RETRIAL_MAX_WAIT)}(e),n.tokenRefresher=r),!r.isRunning()&&n.isTokenAutoRefreshEnabled&&r.start()}function Nr(e,t){for(const n of Xn(e).tokenObservers)try{"EXTERNAL"===n.type&&null!=t.error?n.error(t.error):n.next(t)}catch(e){}}function Rr(e){return 0{var e=ir(!1);if(!e)throw new Error("no recaptcha");Fr(t,n,e,i,r)}),r.promise}function Lr(t,n){const r=new y,e=Xn(t);e.reCAPTCHAState={initialized:r};const i=Ur(t);var s=ir(!0);return s?Fr(t,n,s,i,r):function(e){const t=document.createElement("script");t.src=Or,t.onload=e,document.head.appendChild(t)}(()=>{var e=ir(!0);if(!e)throw new Error("no recaptcha");Fr(t,n,e,i,r)}),r.promise}function Fr(e,t,n,r,i){n.ready(()=>{!function(e,t,n,r){const i=n.render(r,{sitekey:t,size:"invisible"}),s=Xn(e);s.reCAPTCHAState=Object.assign(Object.assign({},s.reCAPTCHAState),{widgetId:i})}(e,t,n,r),i.resolve(n)})}function Ur(e){var t=`fire_app_check_${e.name}`;const n=document.createElement("div");return n.id=t,n.style.display="none",document.body.appendChild(n),t}async function qr(r){sr(r);const i=await Xn(r).reCAPTCHAState.initialized.promise;return new Promise((e,t)=>{const n=Xn(r).reCAPTCHAState;i.ready(()=>{e(i.execute(n.widgetId,{action:"fire_app_check"}))})})}class Vr{constructor(e){this._siteKey=e,this._throttleData=null}async getToken(){Kr(this._throttleData);var t=await qr(this._app).catch(e=>{throw rr.create("recaptcha-error")});let e;try{e=await cr(function(e,t){var{projectId:n,appId:r,apiKey:i}=e.options;return{url:`${Zn}/projects/${n}/apps/${r}:exchangeRecaptchaV3Token?key=${i}`,body:{recaptcha_v3_token:t}}}(this._app,t),this._heartbeatServiceProvider)}catch(e){throw null!==(t=e.code)&&void 0!==t&&t.includes("fetch-status-error")?(this._throttleData=$r(Number(null===(t=e.customData)||void 0===t?void 0:t.httpStatus),this._throttleData),rr.create("throttled",{time:ar(this._throttleData.allowRequestsAfter-Date.now()),httpStatus:this._throttleData.httpStatus})):e}return this._throttleData=null,e}initialize(e){this._app=e,this._heartbeatServiceProvider=Ge(e,"heartbeat"),Mr(e,this._siteKey).catch(()=>{})}isEqual(e){return e instanceof Vr&&this._siteKey===e._siteKey}}class Br{constructor(e){this._siteKey=e,this._throttleData=null}async getToken(){Kr(this._throttleData);var t=await qr(this._app).catch(e=>{throw rr.create("recaptcha-error")});let e;try{e=await cr(function(e,t){var{projectId:n,appId:r,apiKey:i}=e.options;return{url:`${Zn}/projects/${n}/apps/${r}:exchangeRecaptchaEnterpriseToken?key=${i}`,body:{recaptcha_enterprise_token:t}}}(this._app,t),this._heartbeatServiceProvider)}catch(e){throw null!==(t=e.code)&&void 0!==t&&t.includes("fetch-status-error")?(this._throttleData=$r(Number(null===(t=e.customData)||void 0===t?void 0:t.httpStatus),this._throttleData),rr.create("throttled",{time:ar(this._throttleData.allowRequestsAfter-Date.now()),httpStatus:this._throttleData.httpStatus})):e}return this._throttleData=null,e}initialize(e){this._app=e,this._heartbeatServiceProvider=Ge(e,"heartbeat"),Lr(e,this._siteKey).catch(()=>{})}isEqual(e){return e instanceof Br&&this._siteKey===e._siteKey}}class jr{constructor(e){this._customProviderOptions=e}async getToken(){var e=await this._customProviderOptions.getToken(),t=function(e){const t=M(e).claims;return"object"==typeof t&&t.hasOwnProperty("iat")?t.iat:null}(e.token),t=null!==t&&tconsole.log(`App Check debug token: ${e}. You will need to add it to your app's App Check settings in the Firebase console for it to work.`)),n.isInitialized()){var r=n.getImmediate();const i=n.getOptions();if(i.isTokenAutoRefreshEnabled===t.isTokenAutoRefreshEnabled&&i.provider.isEqual(t.provider))return r;throw rr.create("already-initialized",{appName:e.name})}r=n.initialize({options:t});return function(t,e,n){const r=function(e,t){return Qn.set(e,t),Qn.get(e)}(t,Object.assign({},Yn));r.activated=!0,r.provider=e,r.cachedTokenPromise=_r(t).then(e=>(e&&Rr(e)&&(r.token=e,Nr(t,{token:e.token})),e)),r.isTokenAutoRefreshEnabled=void 0===n?t.automaticDataCollectionEnabled:n,r.provider.initialize(t)}(e,t.provider,t.isTokenAutoRefreshEnabled),Xn(e).isTokenAutoRefreshEnabled&&Sr(r,"INTERNAL",()=>{}),r}const zr="app-check-internal";ze(new oe("app-check",e=>{var t,n=e.getProvider("app").getImmediate(),r=e.getProvider("heartbeat");return t=n,e=r,new Dr(t,e)},"PUBLIC").setInstantiationMode("EXPLICIT").setInstanceCreatedCallback((e,t,n)=>{e.getProvider(zr).initialize()})),ze(new oe(zr,e=>{var t,n=e.getProvider("app-check").getImmediate();return t=n,{getToken:e=>kr(t,e),addTokenListener:e=>Sr(t,"INTERNAL",e),removeTokenListener:e=>Cr(t.app,e)}},"PUBLIC").setInstantiationMode("EXPLICIT")),et("@firebase/app-check","0.6.1");const Gr=new x("appCheck","AppCheck",{"use-before-activation":"App Check is being used before activate() is called for FirebaseApp {$appName}. Call activate() before instantiating other Firebase services."});class Hr{constructor(e){this.app=e}activate(e,t){let n;n="string"==typeof e?new Vr(e):e instanceof Br||e instanceof Vr||e instanceof jr?e:new jr({getToken:e.getToken}),this._delegate=Wr(this.app,{provider:n,isTokenAutoRefreshEnabled:t})}setTokenAutoRefreshEnabled(e){if(!this._delegate)throw Gr.create("use-before-activation",{appName:this.app.name});!function(e,t){const n=Xn(e.app);n.tokenRefresher&&(!0===t?n.tokenRefresher.start():n.tokenRefresher.stop()),n.isTokenAutoRefreshEnabled=t}(this._delegate,e)}getToken(e){if(!this._delegate)throw Gr.create("use-before-activation",{appName:this.app.name});return async function(e,t){var n=await kr(e,t);if(n.error)throw n.error;return{token:n.token}}(this._delegate,e)}onTokenChanged(e,t,n){if(!this._delegate)throw Gr.create("use-before-activation",{appName:this.app.name});return function(e,t,n){let r=()=>{},i=()=>{};return r=null!=t.next?t.next.bind(t):t,null!=t.error?i=t.error.bind(t):n&&(i=n),Sr(e,"EXTERNAL",r,i),()=>Cr(e.app,r)}(this._delegate,e,t)}}const Qr=e=>{var t=e.getProvider("app-compat").getImmediate();return new Hr(t)};function Yr(e,t){var n={};for(i in e)Object.prototype.hasOwnProperty.call(e,i)&&t.indexOf(i)<0&&(n[i]=e[i]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols)for(var r=0,i=Object.getOwnPropertySymbols(e);r{let e={},t={};o&&("GET"===s?t=o:e={body:JSON.stringify(o)});var n=j(Object.assign({key:i.config.apiKey},t)).slice(1);const r=await i._getAdditionalHeaders();return r["Content-Type"]="application/json",i.languageCode&&(r["X-Firebase-Locale"]=i.languageCode),wi.fetch()(Ci(i,i.config.apiHost,a,n),Object.assign({method:s,headers:r,referrerPolicy:"no-referrer"},e))})}async function ki(t,e,n){t._canInitEmulator=!1;var r=Object.assign(Object.assign({},bi),e);try{const a=new Ai(t),o=await Promise.race([n(),a.promise]);a.clearNetworkTimeout();var i=await o.json();if("needConfirmation"in i)throw Ni(t,"account-exists-with-different-credential",i);if(o.ok&&!("errorMessage"in i))return i;{const c=o.ok?i.errorMessage:i.error.message,[l,u]=c.split(" : ");if("FEDERATED_USER_ID_ALREADY_LINKED"===l)throw Ni(t,"credential-already-in-use",i);if("EMAIL_EXISTS"===l)throw Ni(t,"email-already-in-use",i);if("USER_DISABLED"===l)throw Ni(t,"user-disabled",i);var s=r[l]||l.toLowerCase().replace(/[_\s]+/g,"-");if(u)throw oi(t,s,u);si(t,s)}}catch(e){if(e instanceof R)throw e;si(t,"network-request-failed")}}async function Si(e,t,n,r,i={}){var s=await Ei(e,t,n,r,i);return"mfaPendingCredential"in s&&si(e,"multi-factor-auth-required",{_serverResponse:s}),s}function Ci(e,t,n,r){var i=`${t}${n}?${r}`;return e.config.emulator?_i(e.config,i):`${e.config.apiScheme}://${i}`}class Ai{constructor(e){this.auth=e,this.timer=null,this.promise=new Promise((e,t)=>{this.timer=setTimeout(()=>t(ai(this.auth,"network-request-failed")),Ii.get())})}clearNetworkTimeout(){clearTimeout(this.timer)}}function Ni(e,t,n){const r={appName:e.name};n.email&&(r.email=n.email),n.phoneNumber&&(r.phoneNumber=n.phoneNumber);const i=ai(e,t,r);return i.customData._tokenResponse=n,i}function Ri(e){if(e)try{const t=new Date(Number(e));if(!isNaN(t.getTime()))return t.toUTCString()}catch(e){}}function xi(e){return 1e3*Number(e)}function Di(e){var[t,n,r]=e.split(".");if(void 0===t||void 0===n||void 0===r)return ii("JWT malformed, contained fewer than 3 sections"),null;try{var i=a(n);return i?JSON.parse(i):(ii("Failed to decode base64 JWT payload"),null)}catch(e){return ii("Caught error parsing JWT payload as JSON",null==e?void 0:e.toString()),null}}async function Pi(t,n,e=!1){if(e)return n;try{return n}catch(e){throw e instanceof R&&(n=[e["code"]][0],"auth/user-disabled"===n||"auth/user-token-expired"===n)&&t.auth.currentUser===t&&await t.auth.signOut(),e}}class Oi{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){if(e){var t=this.errorBackoff;return this.errorBackoff=Math.min(2*this.errorBackoff,96e4),t}this.errorBackoff=3e4;t=(null!==(t=this.user.stsTokenManager.expirationTime)&&void 0!==t?t:0)-Date.now()-3e5;return Math.max(0,t)}schedule(e=!1){var t;this.isRunning&&(t=this.getInterval(e),this.timerId=setTimeout(async()=>{await this.iteration()},t))}async iteration(){try{await this.user.getIdToken(!0)}catch(e){return void("auth/network-request-failed"===(null==e?void 0:e.code)&&this.schedule(!0))}this.schedule()}}class Mi{constructor(e,t){this.createdAt=e,this.lastLoginAt=t,this._initializeTime()}_initializeTime(){this.lastSignInTime=Ri(this.lastLoginAt),this.creationTime=Ri(this.createdAt)}_copy(e){this.createdAt=e.createdAt,this.lastLoginAt=e.lastLoginAt,this._initializeTime()}toJSON(){return{createdAt:this.createdAt,lastLoginAt:this.lastLoginAt}}}async function Li(e){var t=e.auth,n=await e.getIdToken(),r=await Pi(e,async function(e,t){return Ei(e,"POST","/v1/accounts:lookup",t)}(t,{idToken:n}));ui(null==r?void 0:r.users.length,t,"internal-error");var i=r.users[0];e._notifyReloadListener(i);var s,a,t=null!==(n=i.providerUserInfo)&&void 0!==n&&n.length?i.providerUserInfo.map(e=>{var t=e["providerId"],n=Yr(e,["providerId"]);return{providerId:t,uid:n.rawId||"",displayName:n.displayName||null,email:n.email||null,phoneNumber:n.phoneNumber||null,photoURL:n.photoUrl||null}}):[],r=(s=e.providerData,a=t,[...s.filter(t=>!a.some(e=>e.providerId===t.providerId)),...a]),n=e.isAnonymous,t=!(e.email&&i.passwordHash||null!==r&&r.length),t=!!n&&t,t={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:r,metadata:new Mi(i.createdAt,i.lastLoginAt),isAnonymous:t};Object.assign(e,t)}class Fi{constructor(){this.refreshToken=null,this.accessToken=null,this.expirationTime=null}get isExpired(){return!this.expirationTime||Date.now()>this.expirationTime-3e4}updateFromServerResponse(e){ui(e.idToken,"internal-error"),ui(void 0!==e.idToken,"internal-error"),ui(void 0!==e.refreshToken,"internal-error");var t,n,n="expiresIn"in e&&void 0!==e.expiresIn?Number(e.expiresIn):(t=e.idToken,ui(n=Di(t),"internal-error"),ui(void 0!==n.exp,"internal-error"),ui(void 0!==n.iat,"internal-error"),Number(n.exp)-Number(n.iat));this.updateTokensAndExpiration(e.idToken,e.refreshToken,n)}async getToken(e,t=!1){return ui(!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){var i,s,{accessToken:n,refreshToken:r,expiresIn:a}=(s=t,await{accessToken:(a=await ki(i=e,{},async()=>{var e=j({grant_type:"refresh_token",refresh_token:s}).slice(1),{tokenApiHost:t,apiKey:n}=i.config,n=Ci(i,t,"/v1/token",`key=${n}`);const r=await i._getAdditionalHeaders();return r["Content-Type"]="application/x-www-form-urlencoded",wi.fetch()(n,{method:"POST",headers:r,body:e})})).access_token,expiresIn:a.expires_in,refreshToken:a.refresh_token});this.updateTokensAndExpiration(n,r,Number(a))}updateTokensAndExpiration(e,t,n){this.refreshToken=t||null,this.accessToken=e||null,this.expirationTime=Date.now()+1e3*n}static fromJSON(e,t){var{refreshToken:n,accessToken:r,expirationTime:i}=t;const s=new Fi;return n&&(ui("string"==typeof n,"internal-error",{appName:e}),s.refreshToken=n),r&&(ui("string"==typeof r,"internal-error",{appName:e}),s.accessToken=r),i&&(ui("number"==typeof i,"internal-error",{appName:e}),s.expirationTime=i),s}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 Fi,this.toJSON())}_performRefresh(){return hi("not implemented")}}function Ui(e,t){ui("string"==typeof e||void 0===e,"internal-error",{appName:t})}class qi{constructor(e){var{uid:t,auth:n,stsTokenManager:r}=e,i=Yr(e,["uid","auth","stsTokenManager"]);this.providerId="firebase",this.proactiveRefresh=new Oi(this),this.reloadUserInfo=null,this.reloadListener=null,this.uid=t,this.auth=n,this.stsTokenManager=r,this.accessToken=r.accessToken,this.displayName=i.displayName||null,this.email=i.email||null,this.emailVerified=i.emailVerified||!1,this.phoneNumber=i.phoneNumber||null,this.photoURL=i.photoURL||null,this.isAnonymous=i.isAnonymous||!1,this.tenantId=i.tenantId||null,this.providerData=i.providerData?[...i.providerData]:[],this.metadata=new Mi(i.createdAt||void 0,i.lastLoginAt||void 0)}async getIdToken(e){var t=await Pi(this,this.stsTokenManager.getToken(this.auth,e));return ui(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=ae(e);var r=await n.getIdToken(t),i=Di(r);ui(i&&i.exp&&i.auth_time&&i.iat,n.auth,"internal-error");var s="object"==typeof i.firebase?i.firebase:void 0,a=null==s?void 0:s.sign_in_provider;return{claims:i,token:r,authTime:Ri(xi(i.auth_time)),issuedAtTime:Ri(xi(i.iat)),expirationTime:Ri(xi(i.exp)),signInProvider:a||null,signInSecondFactor:(null==s?void 0:s.sign_in_second_factor)||null}}(this,e)}reload(){return async function(e){const t=ae(e);await Li(t),await t.auth._persistUserIfCurrent(t),t.auth._notifyListenersIfCurrent(t)}(this)}_assign(e){this!==e&&(ui(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 qi(Object.assign(Object.assign({},this),{auth:e,stsTokenManager:this.stsTokenManager._clone()}))}_onReload(e){ui(!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 Li(this),await this.auth._persistUserIfCurrent(this),n&&this.auth._notifyListenersIfCurrent(this)}async delete(){var e=await this.getIdToken();return await Pi(this,async function(e,t){return Ei(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=null!==(a=t.displayName)&&void 0!==a?a:void 0,r=null!==(g=t.email)&&void 0!==g?g:void 0,i=null!==(o=t.phoneNumber)&&void 0!==o?o:void 0,s=null!==(l=t.photoURL)&&void 0!==l?l:void 0,a=null!==(c=t.tenantId)&&void 0!==c?c:void 0,o=null!==(g=t._redirectEventId)&&void 0!==g?g:void 0,c=null!==(l=t.createdAt)&&void 0!==l?l:void 0,l=null!==(g=t.lastLoginAt)&&void 0!==g?g:void 0;const{uid:u,emailVerified:h,isAnonymous:d,providerData:p,stsTokenManager:f}=t;ui(u&&f,e,"internal-error");var g=Fi.fromJSON(this.name,f);ui("string"==typeof u,e,"internal-error"),Ui(n,e.name),Ui(r,e.name),ui("boolean"==typeof h,e,"internal-error"),ui("boolean"==typeof d,e,"internal-error"),Ui(i,e.name),Ui(s,e.name),Ui(a,e.name),Ui(o,e.name),Ui(c,e.name),Ui(l,e.name);const m=new qi({uid:u,auth:e,email:r,emailVerified:h,displayName:n,isAnonymous:d,photoURL:s,phoneNumber:i,tenantId:a,stsTokenManager:g,createdAt:c,lastLoginAt:l});return p&&Array.isArray(p)&&(m.providerData=p.map(e=>Object.assign({},e))),o&&(m._redirectEventId=o),m}static async _fromIdTokenResponse(e,t,n=!1){const r=new Fi;r.updateFromServerResponse(t);var i=new qi({uid:t.localId,auth:e,stsTokenManager:r,isAnonymous:n});return await Li(i),i}}class Vi{constructor(){this.type="NONE",this.storage={}}async _isAvailable(){return!0}async _set(e,t){this.storage[e]=t}async _get(e){var t=this.storage[e];return void 0===t?null:t}async _remove(e){delete this.storage[e]}_addListener(e,t){}_removeListener(e,t){}}Vi.type="NONE";const Bi=Vi;function ji(e,t,n){return`firebase:${e}:${t}:${n}`}class $i{constructor(e,t,n){this.persistence=e,this.auth=t,this.userKey=n;var{config:r,name:i}=this.auth;this.fullUserKey=ji(this.userKey,r.apiKey,i),this.fullPersistenceKey=ji("persistence",r.apiKey,i),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(){var e=await this.persistence._get(this.fullUserKey);return e?qi._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){var 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 $i(fi(Bi),e,n);const r=(await Promise.all(t.map(async e=>{if(await e._isAvailable())return e}))).filter(e=>e);let i=r[0]||fi(Bi);const s=ji(n,e.config.apiKey,e.name);let a=null;for(const u of t)try{var o=await u._get(s);if(o){var c=qi._fromJSON(e,o);u!==i&&(a=c),i=u;break}}catch(e){}var l=r.filter(e=>e._shouldAllowMigration);return i._shouldAllowMigration&&l.length&&(i=l[0],a&&await i._set(s,a.toJSON()),await Promise.all(t.map(async e=>{if(e!==i)try{await e._remove(s)}catch(e){}}))),new $i(i,e,n)}}function Ki(e){const t=e.toLowerCase();if(t.includes("opera/")||t.includes("opr/")||t.includes("opios/"))return"Opera";if(Hi(t))return"IEMobile";if(t.includes("msie")||t.includes("trident/"))return"IE";if(t.includes("edge/"))return"Edge";if(Wi(t))return"Firefox";if(t.includes("silk/"))return"Silk";if(Yi(t))return"Blackberry";if(Ji(t))return"Webos";if(zi(t))return"Safari";if((t.includes("chrome/")||Gi(t))&&!t.includes("edge/"))return"Chrome";if(Qi(t))return"Android";var n=e.match(/([a-zA-Z\d\.]+)\/[a-zA-Z\d\.]*$/);return 2===(null==n?void 0:n.length)?n[1]:"Other"}function Wi(e=w()){return/firefox\//i.test(e)}function zi(e=w()){const t=e.toLowerCase();return t.includes("safari/")&&!t.includes("chrome/")&&!t.includes("crios/")&&!t.includes("android")}function Gi(e=w()){return/crios\//i.test(e)}function Hi(e=w()){return/iemobile/i.test(e)}function Qi(e=w()){return/android/i.test(e)}function Yi(e=w()){return/blackberry/i.test(e)}function Ji(e=w()){return/webos/i.test(e)}function Xi(e=w()){return/iphone|ipad|ipod/i.test(e)||/macintosh/i.test(e)&&/mobile/i.test(e)}function Zi(e=w()){return Xi(e)||Qi(e)||Ji(e)||Yi(e)||/windows phone/i.test(e)||Hi(e)}function es(e,t=[]){let n;switch(e){case"Browser":n=Ki(w());break;case"Worker":n=`${Ki(w())}-${e}`;break;default:n=e}var r=t.length?t.join(","):"FirebaseCore-web";return`${n}/JsCore/${Ye}/${r}`}class ts{constructor(e){this.auth=e,this.queue=[]}pushCallback(r,e){var t=n=>new Promise((e,t)=>{try{e(r(n))}catch(e){t(e)}});t.onAbort=e,this.queue.push(t);const n=this.queue.length-1;return()=>{this.queue[n]=()=>Promise.resolve()}}async runMiddleware(e){if(this.auth.currentUser!==e){const t=[];try{for(const n of this.queue)await n(e),n.onAbort&&t.push(n.onAbort)}catch(e){t.reverse();for(const r of t)try{r()}catch(e){}throw this.auth._errorFactory.create("login-blocked",{originalMessage:null==e?void 0:e.message})}}}}class ns{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 is(this),this.idTokenSubscription=new is(this),this.beforeStateQueue=new ts(this),this.redirectUser=null,this.isProactiveRefreshEnabled=!1,this._canInitEmulator=!0,this._isInitialized=!1,this._deleted=!1,this._initializationPromise=null,this._popupRedirectResolver=null,this._errorFactory=ni,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(t,n){return n&&(this._popupRedirectResolver=fi(n)),this._initializationPromise=this.queue(async()=>{var e;if(!this._deleted&&(this.persistenceManager=await $i.create(this,t),!this._deleted)){if(null!==(e=this._popupRedirectResolver)&&void 0!==e&&e._shouldInitProactively)try{await this._popupRedirectResolver._initialize(this)}catch(e){}await this.initializeCurrentUser(n),this.lastNotifiedUid=(null===(e=this.currentUser)||void 0===e?void 0:e.uid)||null,this._deleted||(this._isInitialized=!0)}}),this._initializationPromise}async _onStorageEvent(){if(!this._deleted){var e=await this.assertedPersistence.getCurrentUser();if(this.currentUser||e)return this.currentUser&&e&&this.currentUser.uid===e.uid?(this._currentUser._assign(e),void await this.currentUser.getIdToken()):void await this._updateCurrentUser(e,!0)}}async initializeCurrentUser(e){var t,n,r,i=await this.assertedPersistence.getCurrentUser();let s=i,a=!1;if(e&&this.config.authDomain&&(await this.getOrInitRedirectPersistenceManager(),t=null===(r=this.redirectUser)||void 0===r?void 0:r._redirectEventId,n=null===s||void 0===s?void 0:s._redirectEventId,r=await this.tryRedirectSignIn(e),t&&t!==n||null==r||!r.user||(s=r.user,a=!0)),!s)return this.directlySetCurrentUser(null);if(s._redirectEventId)return ui(this._popupRedirectResolver,this,"argument-error"),await this.getOrInitRedirectPersistenceManager(),this.redirectUser&&this.redirectUser._redirectEventId===s._redirectEventId?this.directlySetCurrentUser(s):this.reloadAndSetCurrentUserOrClear(s);if(a)try{await this.beforeStateQueue.runMiddleware(s)}catch(e){s=i,this._popupRedirectResolver._overrideRedirectResult(this,()=>Promise.reject(e))}return s?this.reloadAndSetCurrentUserOrClear(s):this.directlySetCurrentUser(null)}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){try{await Li(e)}catch(e){if("auth/network-request-failed"!==(null==e?void 0:e.code))return this.directlySetCurrentUser(null)}return this.directlySetCurrentUser(e)}useDeviceLanguage(){this.languageCode=function(){if("undefined"==typeof navigator)return null;var e=navigator;return e.languages&&e.languages[0]||e.language||null}()}async _delete(){this._deleted=!0}async updateCurrentUser(e){const t=e?ae(e):null;return t&&ui(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&&ui(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(fi(e))})}_getPersistence(){return this.assertedPersistence.persistence.type}_updateErrorMap(e){this._errorFactory=new x("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){var t;return this.redirectPersistenceManager||(ui(t=e&&fi(e)||this._popupRedirectResolver,this,"argument-error"),this.redirectPersistenceManager=await $i.create(this,[fi(t._redirectPersistence)],"redirectUser"),this.redirectUser=await this.redirectPersistenceManager.getCurrentUser()),this.redirectPersistenceManager}async _redirectUserForId(e){var t;return this._isInitialized&&await this.queue(async()=>{}),(null===(t=this._currentUser)||void 0===t?void 0:t._redirectEventId)===e?this._currentUser:(null===(t=this.redirectUser)||void 0===t?void 0:t._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;this._isInitialized&&(this.idTokenSubscription.next(this.currentUser),e=null!==(e=null===(e=this.currentUser)||void 0===e?void 0:e.uid)&&void 0!==e?e:null,this.lastNotifiedUid!==e&&(this.lastNotifiedUid=e,this.authStateSubscription.next(this.currentUser)))}registerStateListener(e,t,n,r){if(this._deleted)return()=>{};const i="function"==typeof t?t:t.next.bind(t),s=this._isInitialized?Promise.resolve():this._initializationPromise;return ui(s,this,"internal-error"),s.then(()=>i(this.currentUser)),"function"==typeof t?e.addObserver(t,n,r):e.addObserver(t)}async directlySetCurrentUser(e){this.currentUser&&this.currentUser!==e&&this._currentUser._stopProactiveRefresh(),e&&this.isProactiveRefreshEnabled&&e._startProactiveRefresh(),(this.currentUser=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 ui(this.persistenceManager,this,"internal-error"),this.persistenceManager}_logFramework(e){e&&!this.frameworks.includes(e)&&(this.frameworks.push(e),this.frameworks.sort(),this.clientVersion=es(this.config.clientPlatform,this._getFrameworks()))}_getFrameworks(){return this.frameworks}async _getAdditionalHeaders(){const e={"X-Client-Version":this.clientVersion};this.app.options.appId&&(e["X-Firebase-gmpid"]=this.app.options.appId);var t=await(null===(t=this.heartbeatServiceProvider.getImmediate({optional:!0}))||void 0===t?void 0:t.getHeartbeatsHeader());return t&&(e["X-Firebase-Client"]=t),e}}function rs(e){return ae(e)}class is{constructor(e){this.auth=e,this.observer=null,this.addObserver=z(e=>this.observer=e)}get next(){return ui(this.observer,this.auth,"internal-error"),this.observer.next.bind(this.observer)}}function ss(e,t,n){const r=rs(e);ui(r._canInitEmulator,r,"emulator-config-failed"),ui(/^https?:\/\//.test(t),r,"invalid-emulator-scheme");var i=!(null==n||!n.disableWarnings);const s=as(t);var{host:a,port:o}=function(e){const t=as(e),n=/(\/\/)?([^?#/]+)/.exec(e.substr(t.length));if(!n)return{host:"",port:null};const r=n[2].split("@").pop()||"",i=/^(\[[^\]]+\])(:|$)/.exec(r);{if(i){var s=i[1];return{host:s,port:os(r.substr(s.length+1))}}var[a,s]=r.split(":");return{host:a,port:os(s)}}}(t);r.config.emulator={url:`${s}//${a}${null===o?"":`:${o}`}/`},r.settings.appVerificationDisabledForTesting=!0,r.emulatorConfig=Object.freeze({host:a,port:o,protocol:s.replace(":",""),options:Object.freeze({disableWarnings:i})}),i||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())}()}function as(e){var t=e.indexOf(":");return t<0?"":e.substr(0,t+1)}function os(e){if(!e)return null;var t=Number(e);return isNaN(t)?null:t}class cs{constructor(e,t){this.providerId=e,this.signInMethod=t}toJSON(){return hi("not implemented")}_getIdTokenResponse(e){return hi("not implemented")}_linkToIdToken(e,t){return hi("not implemented")}_getReauthenticationResolver(e){return hi("not implemented")}}async function ls(e,t){return Ei(e,"POST","/v1/accounts:resetPassword",Ti(e,t))}async function us(e,t){return Ei(e,"POST","/v1/accounts:update",t)}async function hs(e,t){return Ei(e,"POST","/v1/accounts:sendOobCode",Ti(e,t))}class ds extends cs{constructor(e,t,n,r=null){super("password",n),this._email=e,this._password=t,this._tenantId=r}static _fromEmailAndPassword(e,t){return new ds(e,t,"password")}static _fromEmailAndCode(e,t,n=null){return new ds(e,t,"emailLink",n)}toJSON(){return{email:this._email,password:this._password,signInMethod:this.signInMethod,tenantId:this._tenantId}}static fromJSON(e){var t="string"==typeof e?JSON.parse(e):e;if(null!=t&&t.email&&null!=t&&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 Si(e,"POST","/v1/accounts:signInWithPassword",Ti(e,t))}(e,{returnSecureToken:!0,email:this._email,password:this._password});case"emailLink":return async function(e,t){return Si(e,"POST","/v1/accounts:signInWithEmailLink",Ti(e,t))}(e,{email:this._email,oobCode:this._password});default:si(e,"internal-error")}}async _linkToIdToken(e,t){switch(this.signInMethod){case"password":return us(e,{idToken:t,returnSecureToken:!0,email:this._email,password:this._password});case"emailLink":return async function(e,t){return Si(e,"POST","/v1/accounts:signInWithEmailLink",Ti(e,t))}(e,{idToken:t,email:this._email,oobCode:this._password});default:si(e,"internal-error")}}_getReauthenticationResolver(e){return this._getIdTokenResponse(e)}}async function ps(e,t){return Si(e,"POST","/v1/accounts:signInWithIdp",Ti(e,t))}class fs extends cs{constructor(){super(...arguments),this.pendingToken=null}static _fromParams(e){const t=new fs(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):si("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){var t="string"==typeof e?JSON.parse(e):e,{providerId:n,signInMethod:r}=t,t=Yr(t,["providerId","signInMethod"]);if(!n||!r)return null;const i=new fs(n,r);return i.idToken=t.idToken||void 0,i.accessToken=t.accessToken||void 0,i.secret=t.secret,i.nonce=t.nonce,i.pendingToken=t.pendingToken||null,i}_getIdTokenResponse(e){return ps(e,this.buildRequest())}_linkToIdToken(e,t){const n=this.buildRequest();return n.idToken=t,ps(e,n)}_getReauthenticationResolver(e){const t=this.buildRequest();return t.autoCreate=!1,ps(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=j(t)}return e}}const gs={USER_NOT_FOUND:"user-not-found"};class ms extends cs{constructor(e){super("phone","phone"),this.params=e}static _fromVerification(e,t){return new ms({verificationId:e,verificationCode:t})}static _fromTokenResponse(e,t){return new ms({phoneNumber:e,temporaryProof:t})}_getIdTokenResponse(e){return async function(e,t){return Si(e,"POST","/v1/accounts:signInWithPhoneNumber",Ti(e,t))}(e,this._makeVerificationRequest())}_linkToIdToken(e,t){return async function(e,t){var n=await Si(e,"POST","/v1/accounts:signInWithPhoneNumber",Ti(e,t));if(n.temporaryProof)throw Ni(e,"account-exists-with-different-credential",n);return n}(e,Object.assign({idToken:t},this._makeVerificationRequest()))}_getReauthenticationResolver(e){return async function(e,t){return Si(e,"POST","/v1/accounts:signInWithPhoneNumber",Ti(e,Object.assign(Object.assign({},t),{operation:"REAUTH"})),gs)}(e,this._makeVerificationRequest())}_makeVerificationRequest(){var{temporaryProof:e,phoneNumber:t,verificationId:n,verificationCode:r}=this.params;return e&&t?{temporaryProof:e,phoneNumber:t}:{sessionInfo:n,code:r}}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){var{verificationId:t,verificationCode:n,phoneNumber:r,temporaryProof:i}=e="string"==typeof e?JSON.parse(e):e;return n||t||r||i?new ms({verificationId:t,verificationCode:n,phoneNumber:r,temporaryProof:i}):null}}class vs{constructor(e){var t=$(K(e)),n=null!==(r=t.apiKey)&&void 0!==r?r:null,r=null!==(i=t.oobCode)&&void 0!==i?i:null,i=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!==(i=t.mode)&&void 0!==i?i:null);ui(n&&r&&i,"argument-error"),this.apiKey=n,this.operation=i,this.code=r,this.continueUrl=null!==(r=t.continueUrl)&&void 0!==r?r:null,this.languageCode=null!==(r=t.languageCode)&&void 0!==r?r:null,this.tenantId=null!==(t=t.tenantId)&&void 0!==t?t:null}static parseLink(e){var t,n,r,t=(t=$(K(e=e)).link,n=t?$(K(t)).deep_link_id:null,((r=$(K(e)).deep_link_id)?$(K(r)).link:null)||r||n||t||e);try{return new vs(t)}catch(e){return null}}}class ys{constructor(){this.providerId=ys.PROVIDER_ID}static credential(e,t){return ds._fromEmailAndPassword(e,t)}static credentialWithLink(e,t){var n=vs.parseLink(t);return ui(n,"argument-error"),ds._fromEmailAndCode(e,n.code,n.tenantId)}}ys.PROVIDER_ID="password",ys.EMAIL_PASSWORD_SIGN_IN_METHOD="password",ys.EMAIL_LINK_SIGN_IN_METHOD="emailLink";class _s{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 ws extends _s{constructor(){super(...arguments),this.scopes=[]}addScope(e){return this.scopes.includes(e)||this.scopes.push(e),this}getScopes(){return[...this.scopes]}}class bs extends ws{static credentialFromJSON(e){var t="string"==typeof e?JSON.parse(e):e;return ui("providerId"in t&&"signInMethod"in t,"argument-error"),fs._fromParams(t)}credential(e){return this._credential(Object.assign(Object.assign({},e),{nonce:e.rawNonce}))}_credential(e){return ui(e.idToken||e.accessToken,"argument-error"),fs._fromParams(Object.assign(Object.assign({},e),{providerId:this.providerId,signInMethod:this.providerId}))}static credentialFromResult(e){return bs.oauthCredentialFromTaggedObject(e)}static credentialFromError(e){return bs.oauthCredentialFromTaggedObject(e.customData||{})}static oauthCredentialFromTaggedObject({_tokenResponse:e}){if(!e)return null;var{oauthIdToken:t,oauthAccessToken:n,oauthTokenSecret:r,pendingToken:i,nonce:s,providerId:a}=e;if(!(n||r||t||i))return null;if(!a)return null;try{return new bs(a)._credential({idToken:t,accessToken:n,nonce:s,pendingToken:i})}catch(e){return null}}}class Is extends ws{constructor(){super("facebook.com")}static credential(e){return fs._fromParams({providerId:Is.PROVIDER_ID,signInMethod:Is.FACEBOOK_SIGN_IN_METHOD,accessToken:e})}static credentialFromResult(e){return Is.credentialFromTaggedObject(e)}static credentialFromError(e){return Is.credentialFromTaggedObject(e.customData||{})}static credentialFromTaggedObject({_tokenResponse:e}){if(!(e&&"oauthAccessToken"in e))return null;if(!e.oauthAccessToken)return null;try{return Is.credential(e.oauthAccessToken)}catch(e){return null}}}Is.FACEBOOK_SIGN_IN_METHOD="facebook.com",Is.PROVIDER_ID="facebook.com";class Ts extends ws{constructor(){super("google.com"),this.addScope("profile")}static credential(e,t){return fs._fromParams({providerId:Ts.PROVIDER_ID,signInMethod:Ts.GOOGLE_SIGN_IN_METHOD,idToken:e,accessToken:t})}static credentialFromResult(e){return Ts.credentialFromTaggedObject(e)}static credentialFromError(e){return Ts.credentialFromTaggedObject(e.customData||{})}static credentialFromTaggedObject({_tokenResponse:e}){if(!e)return null;var{oauthIdToken:t,oauthAccessToken:n}=e;if(!t&&!n)return null;try{return Ts.credential(t,n)}catch(e){return null}}}Ts.GOOGLE_SIGN_IN_METHOD="google.com",Ts.PROVIDER_ID="google.com";class Es extends ws{constructor(){super("github.com")}static credential(e){return fs._fromParams({providerId:Es.PROVIDER_ID,signInMethod:Es.GITHUB_SIGN_IN_METHOD,accessToken:e})}static credentialFromResult(e){return Es.credentialFromTaggedObject(e)}static credentialFromError(e){return Es.credentialFromTaggedObject(e.customData||{})}static credentialFromTaggedObject({_tokenResponse:e}){if(!(e&&"oauthAccessToken"in e))return null;if(!e.oauthAccessToken)return null;try{return Es.credential(e.oauthAccessToken)}catch(e){return null}}}Es.GITHUB_SIGN_IN_METHOD="github.com",Es.PROVIDER_ID="github.com";class ks extends cs{constructor(e,t){super(e,e),this.pendingToken=t}_getIdTokenResponse(e){return ps(e,this.buildRequest())}_linkToIdToken(e,t){const n=this.buildRequest();return n.idToken=t,ps(e,n)}_getReauthenticationResolver(e){const t=this.buildRequest();return t.autoCreate=!1,ps(e,t)}toJSON(){return{signInMethod:this.signInMethod,providerId:this.providerId,pendingToken:this.pendingToken}}static fromJSON(e){var{providerId:t,signInMethod:n,pendingToken:r}="string"==typeof e?JSON.parse(e):e;return t&&n&&r&&t===n?new ks(t,r):null}static _create(e,t){return new ks(e,t)}buildRequest(){return{requestUri:"http://localhost",returnSecureToken:!0,pendingToken:this.pendingToken}}}class Ss extends _s{constructor(e){ui(e.startsWith("saml."),"argument-error"),super(e)}static credentialFromResult(e){return Ss.samlCredentialFromTaggedObject(e)}static credentialFromError(e){return Ss.samlCredentialFromTaggedObject(e.customData||{})}static credentialFromJSON(e){var t=ks.fromJSON(e);return ui(t,"argument-error"),t}static samlCredentialFromTaggedObject({_tokenResponse:e}){if(!e)return null;var{pendingToken:t,providerId:n}=e;if(!t||!n)return null;try{return ks._create(n,t)}catch(e){return null}}}class Cs extends ws{constructor(){super("twitter.com")}static credential(e,t){return fs._fromParams({providerId:Cs.PROVIDER_ID,signInMethod:Cs.TWITTER_SIGN_IN_METHOD,oauthToken:e,oauthTokenSecret:t})}static credentialFromResult(e){return Cs.credentialFromTaggedObject(e)}static credentialFromError(e){return Cs.credentialFromTaggedObject(e.customData||{})}static credentialFromTaggedObject({_tokenResponse:e}){if(!e)return null;var{oauthAccessToken:t,oauthTokenSecret:n}=e;if(!t||!n)return null;try{return Cs.credential(t,n)}catch(e){return null}}}async function As(e,t){return Si(e,"POST","/v1/accounts:signUp",Ti(e,t))}Cs.TWITTER_SIGN_IN_METHOD="twitter.com",Cs.PROVIDER_ID="twitter.com";class Ns{constructor(e){this.user=e.user,this.providerId=e.providerId,this._tokenResponse=e._tokenResponse,this.operationType=e.operationType}static async _fromIdTokenResponse(e,t,n,r=!1){var i=await qi._fromIdTokenResponse(e,n,r),s=Rs(n);return new Ns({user:i,providerId:s,_tokenResponse:n,operationType:t})}static async _forOperation(e,t,n){await e._updateTokensIfNecessary(n,!0);var r=Rs(n);return new Ns({user:e,providerId:r,_tokenResponse:n,operationType:t})}}function Rs(e){return e.providerId||("phoneNumber"in e?"phone":null)}class xs extends R{constructor(e,t,n,r){var i;super(t.code,t.message),this.operationType=n,this.user=r,Object.setPrototypeOf(this,xs.prototype),this.customData={appName:e.name,tenantId:null!==(i=e.tenantId)&&void 0!==i?i:void 0,_serverResponse:t.customData._serverResponse,operationType:n}}static _fromErrorAndOperation(e,t,n,r){return new xs(e,t,n,r)}}function Ds(t,n,e,r){const i="reauthenticate"===n?e._getReauthenticationResolver(t):e._getIdTokenResponse(t);return i.catch(e=>{if("auth/multi-factor-auth-required"===e.code)throw xs._fromErrorAndOperation(t,e,n,r);throw e})}function Ps(e){return new Set(e.map(({providerId:e})=>e).filter(e=>!!e))}async function Os(e,t){const n=ae(e);await Ls(!0,n,t);var r=(e=n.auth,t={idToken:await n.getIdToken(),deleteProvider:[t]},await Ei(e,"POST","/v1/accounts:update",t))["providerUserInfo"];const i=Ps(r||[]);return n.providerData=n.providerData.filter(e=>i.has(e.providerId)),i.has("phone")||(n.phoneNumber=null),await n.auth._persistUserIfCurrent(n),n}async function Ms(e,t,n=!1){var r=await Pi(e,t._linkToIdToken(e.auth,await e.getIdToken()),n);return Ns._forOperation(e,"link",r)}async function Ls(e,t,n){await Li(t);const r=Ps(t.providerData);var i=!1===e?"provider-already-linked":"no-such-provider";ui(r.has(n)===e,t.auth,i)}async function Fs(e,t,n=!1){var r=e["auth"],i="reauthenticate";try{var s=await Pi(e,Ds(r,i,t,e),n);ui(s.idToken,r,"internal-error");var a=Di(s.idToken);ui(a,r,"internal-error");var o=a["sub"];return ui(e.uid===o,r,"user-mismatch"),Ns._forOperation(e,i,s)}catch(e){throw"auth/user-not-found"===(null==e?void 0:e.code)&&si(r,"user-mismatch"),e}}async function Us(e,t,n=!1){var r=await Ds(e,"signIn",t),r=await Ns._fromIdTokenResponse(e,"signIn",r);return n||await e._updateCurrentUser(r.user),r}async function qs(e,t){return Us(rs(e),t)}async function Vs(e,t){var n=ae(e);return await Ls(!1,n,t.providerId),Ms(n,t)}async function Bs(e,t){return Fs(ae(e),t)}async function js(e,t){const n=rs(e);var r=await Si(n,"POST","/v1/accounts:signInWithCustomToken",Ti(n,{token:t,returnSecureToken:!0})),r=await Ns._fromIdTokenResponse(n,"signIn",r);return await n._updateCurrentUser(r.user),r}class $s{constructor(e,t){this.factorId=e,this.uid=t.mfaEnrollmentId,this.enrollmentTime=new Date(t.enrolledAt).toUTCString(),this.displayName=t.displayName}static _fromServerResponse(e,t){return"phoneInfo"in t?Ks._fromServerResponse(e,t):si(e,"internal-error")}}class Ks extends $s{constructor(e){super("phone",e),this.phoneNumber=e.phoneInfo}static _fromServerResponse(e,t){return new Ks(t)}}function Ws(e,t,n){var r;ui(0<(null===(r=n.url)||void 0===r?void 0:r.length),e,"invalid-continue-uri"),ui(void 0===n.dynamicLinkDomain||0"password"===e);s&&(s.displayName=i.displayName,s.photoURL=i.photoURL),await i._updateTokensIfNecessary(r)}}async function ea(e,t,n){var r=e["auth"];const i={idToken:await e.getIdToken(),returnSecureToken:!0};t&&(i.email=t),n&&(i.password=n);r=await Pi(e,us(r,i));await e._updateTokensIfNecessary(r,!0)}class ta{constructor(e,t,n={}){this.isNewUser=e,this.providerId=t,this.profile=n}}class na extends ta{constructor(e,t,n,r){super(e,t,n),this.username=r}}class ra extends ta{constructor(e,t){super(e,"facebook.com",t)}}class ia extends na{constructor(e,t){super(e,"github.com",t,"string"==typeof(null==t?void 0:t.login)?null==t?void 0:t.login:null)}}class sa extends ta{constructor(e,t){super(e,"google.com",t)}}class aa extends na{constructor(e,t,n){super(e,"twitter.com",t,n)}}function oa(e){var{user:t,_tokenResponse:n}=e;return t.isAnonymous&&!n?{providerId:null,isNewUser:!1,profile:null}:function(e){if(!e)return null;var t=e["providerId"],n=e.rawUserInfo?JSON.parse(e.rawUserInfo):{},r=e.isNewUser||"identitytoolkit#SignupNewUserResponse"===e.kind;if(!t&&null!=e&&e.idToken){var i=null===(i=null===(i=Di(e.idToken))||void 0===i?void 0:i.firebase)||void 0===i?void 0:i.sign_in_provider;if(i){i="anonymous"!==i&&"custom"!==i?i:null;return new ta(r,i)}}if(!t)return null;switch(t){case"facebook.com":return new ra(r,n);case"github.com":return new ia(r,n);case"google.com":return new sa(r,n);case"twitter.com":return new aa(r,n,e.screenName||null);case"custom":case"anonymous":return new ta(r,null);default:return new ta(r,t,n)}}(n)}class ca{constructor(e,t,n){this.type=e,this.credential=t,this.auth=n}static _fromIdtoken(e,t){return new ca("enroll",e,t)}static _fromMfaPendingCredential(e){return new ca("signin",e)}toJSON(){return{multiFactorSession:{["enroll"===this.type?"idToken":"pendingCredential"]:this.credential}}}static fromJSON(e){var t;if(null!=e&&e.multiFactorSession){if(null!==(t=e.multiFactorSession)&&void 0!==t&&t.pendingCredential)return ca._fromMfaPendingCredential(e.multiFactorSession.pendingCredential);if(null!==(t=e.multiFactorSession)&&void 0!==t&&t.idToken)return ca._fromIdtoken(e.multiFactorSession.idToken)}return null}}class la{constructor(e,t,n){this.session=e,this.hints=t,this.signInResolver=n}static _fromError(e,i){const s=rs(e),a=i.customData._serverResponse;var t=(a.mfaInfo||[]).map(e=>$s._fromServerResponse(s,e));ui(a.mfaPendingCredential,s,"internal-error");const o=ca._fromMfaPendingCredential(a.mfaPendingCredential);return new la(o,t,async e=>{var t=await e._process(s,o);delete a.mfaInfo,delete a.mfaPendingCredential;var n=Object.assign(Object.assign({},a),{idToken:t.idToken,refreshToken:t.refreshToken});switch(i.operationType){case"signIn":var r=await Ns._fromIdTokenResponse(s,i.operationType,n);return await s._updateCurrentUser(r.user),r;case"reauthenticate":return ui(i.user,s,"internal-error"),Ns._forOperation(i.user,i.operationType,n);default:si(s,"internal-error")}})}async resolveSignIn(e){return this.signInResolver(e)}}class ua{constructor(t){this.user=t,this.enrolledFactors=[],t._onReload(e=>{e.mfaInfo&&(this.enrolledFactors=e.mfaInfo.map(e=>$s._fromServerResponse(t.auth,e)))})}static _fromUser(e){return new ua(e)}async getSession(){return ca._fromIdtoken(await this.user.getIdToken(),this.user.auth)}async enroll(e,t){const n=e;var r=await this.getSession(),r=await Pi(this.user,n._process(this.user.auth,r,t));return await this.user._updateTokensIfNecessary(r),this.user.reload()}async unenroll(e){const t="string"==typeof e?e:e.uid;var n,r=await this.user.getIdToken(),r=await Pi(this.user,(n=this.user.auth,e={idToken:r,mfaEnrollmentId:t},Ei(n,"POST","/v2/accounts/mfaEnrollment:withdraw",Ti(n,e))));this.enrolledFactors=this.enrolledFactors.filter(({uid:e})=>e!==t),await this.user._updateTokensIfNecessary(r);try{await this.user.reload()}catch(e){if("auth/user-token-expired"!==(null==e?void 0:e.code))throw e}}}const ha=new WeakMap;const da="__sak";class pa{constructor(e,t){this.storageRetriever=e,this.type=t}_isAvailable(){try{return this.storage?(this.storage.setItem(da,"1"),this.storage.removeItem(da),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){var 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 fa extends pa{constructor(){var e;super(()=>window.localStorage,"LOCAL"),this.boundEventHandler=(e,t)=>this.onStorageEvent(e,t),this.listeners={},this.localCache={},this.pollTimer=null,this.safariLocalStorageNotSynced=(zi(e=w())||Xi(e))&&function(){try{return!(!window||window===window.top)}catch(e){return!1}}(),this.fallbackToPolling=Zi(),this._shouldAllowMigration=!0}forAllChangedKeys(e){for(const r of Object.keys(this.listeners)){var t=this.storage.getItem(r),n=this.localCache[r];t!==n&&e(r,n,t)}}onStorageEvent(e,t=!1){if(e.key){const r=e.key;if(t?this.detachListener():this.stopPolling(),this.safariLocalStorageNotSynced){const i=this.storage.getItem(r);if(e.newValue!==i)null!==e.newValue?this.storage.setItem(r,e.newValue):this.storage.removeItem(r);else if(this.localCache[r]===e.newValue&&!t)return}var n=()=>{var e=this.storage.getItem(r);!t&&this.localCache[r]===e||this.notifyListeners(r,e)};const i=this.storage.getItem(r);k()&&10===document.documentMode&&i!==e.newValue&&e.newValue!==e.oldValue?setTimeout(n,10):n()}else this.forAllChangedKeys((e,t,n)=>{this.notifyListeners(e,n)})}notifyListeners(e,t){this.localCache[e]=t;var n=this.listeners[e];if(n)for(const r of Array.from(n))r(t&&JSON.parse(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){var t=await super._get(e);return this.localCache[e]=JSON.stringify(t),t}async _remove(e){await super._remove(e),delete this.localCache[e]}}fa.type="LOCAL";const ga=fa;class ma extends pa{constructor(){super(()=>window.sessionStorage,"SESSION")}_addListener(e,t){}_removeListener(e,t){}}ma.type="SESSION";const va=ma;class ya{constructor(e){this.eventTarget=e,this.handlersMap={},this.boundEventHandler=this.handleEvent.bind(this)}static _getInstance(t){var e=this.receivers.find(e=>e.isListeningto(t));if(e)return e;e=new ya(t);return this.receivers.push(e),e}isListeningto(e){return this.eventTarget===e}async handleEvent(e){const t=e,{eventId:n,eventType:r,data:i}=t.data;var s=this.handlersMap[r];null!=s&&s.size&&(t.ports[0].postMessage({status:"ack",eventId:n,eventType:r}),s=Array.from(s).map(async e=>e(t.origin,i)),s=await Promise.all(s.map(async e=>{try{return{fulfilled:!0,value:await e}}catch(e){return{fulfilled:!1,reason:e}}})),t.ports[0].postMessage({status:"done",eventId:n,eventType:r,response:s}))}_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 _a(e="",t=10){let n="";for(let r=0;r{const i=_a("",20);o.port1.start();const s=setTimeout(()=>{r(new Error("unsupported_event"))},a);l={messageChannel:o,onMessage(e){var t=e;if(t.data.eventId===i)switch(t.data.status){case"ack":clearTimeout(s),c=setTimeout(()=>{r(new Error("timeout"))},3e3);break;case"done":clearTimeout(c),n(t.data.response);break;default:clearTimeout(s),clearTimeout(c),r(new Error("invalid_response"))}}},this.handlers.add(l),o.port1.addEventListener("message",l.onMessage),this.target.postMessage({eventType:e,eventId:i,data:t},[o.port2])}).finally(()=>{l&&this.removeMessageHandler(l)})}}function ba(){return window}function Ia(){return void 0!==ba().WorkerGlobalScope&&"function"==typeof ba().importScripts}const Ta="firebaseLocalStorageDb",Ea="firebaseLocalStorage",ka="fbase_key";class Sa{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 Ca(e,t){return e.transaction([Ea],t?"readwrite":"readonly").objectStore(Ea)}function Aa(){const r=indexedDB.open(Ta,1);return new Promise((n,t)=>{r.addEventListener("error",()=>{t(r.error)}),r.addEventListener("upgradeneeded",()=>{const e=r.result;try{e.createObjectStore(Ea,{keyPath:ka})}catch(e){t(e)}}),r.addEventListener("success",async()=>{const e=r.result;var t;e.objectStoreNames.contains(Ea)?n(e):(e.close(),t=indexedDB.deleteDatabase(Ta),await new Sa(t).toPromise(),n(await Aa()))})})}async function Na(e,t,n){var r=Ca(e,!0).put({fbase_key:t,value:n});return new Sa(r).toPromise()}function Ra(e,t){var n=Ca(e,!0).delete(t);return new Sa(n).toPromise()}class xa{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 Aa(),this.db)}async _withRetries(e){let t=0;for(;;)try{return e(await this._openDb())}catch(e){if(3{const n=await this._poll();return{keyProcessed:n.includes(t.key)}}),this.receiver._subscribe("ping",async(e,t)=>["keyChanged"])}async initializeSender(){var e,t,n;this.activeServiceWorker=await async function(){if(null===navigator||void 0===navigator||!navigator.serviceWorker)return null;try{return(await navigator.serviceWorker.ready).active}catch(e){return null}}(),this.activeServiceWorker&&(this.sender=new wa(this.activeServiceWorker),(n=await this.sender._send("ping",{},800))&&null!==(e=n[0])&&void 0!==e&&e.fulfilled&&null!==(t=n[0])&&void 0!==t&&t.value.includes("keyChanged")&&(this.serviceWorkerReceiverAvailable=!0))}async notifyServiceWorker(e){var t;if(this.sender&&this.activeServiceWorker&&((null===(t=null===navigator||void 0===navigator?void 0:navigator.serviceWorker)||void 0===t?void 0:t.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;var e=await Aa();return await Na(e,da,"1"),await Ra(e,da),!0}catch(e){}return!1}async _withPendingWrite(e){this.pendingWrites++;try{await e()}finally{this.pendingWrites--}}async _set(t,n){return this._withPendingWrite(async()=>(await this._withRetries(e=>Na(e,t,n)),this.localCache[t]=n,this.notifyServiceWorker(t)))}async _get(t){var e=await this._withRetries(e=>async function(e,t){var n=Ca(e,!1).get(t);return void 0===(n=await new Sa(n).toPromise())?null:n.value}(e,t));return this.localCache[t]=e}async _remove(t){return this._withPendingWrite(async()=>(await this._withRetries(e=>Ra(e,t)),delete this.localCache[t],this.notifyServiceWorker(t)))}async _poll(){var e,t,n=await this._withRetries(e=>{var t=Ca(e,!1).getAll();return new Sa(t).toPromise()});if(!n)return[];if(0!==this.pendingWrites)return[];const r=[],i=new Set;for({fbase_key:e,value:t}of n)i.add(e),JSON.stringify(this.localCache[e])!==JSON.stringify(t)&&(this.notifyListeners(e,t),r.push(e));for(const s of Object.keys(this.localCache))this.localCache[s]&&!i.has(s)&&(this.notifyListeners(s,null),r.push(s));return r}notifyListeners(e,t){this.localCache[e]=t;var n=this.listeners[e];if(n)for(const r of Array.from(n))r(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()}}xa.type="LOCAL";const Da=xa;function Pa(i){return new Promise((e,n)=>{const t=document.createElement("script");var r;t.setAttribute("src",i),t.onload=e,t.onerror=e=>{const t=ai("internal-error");t.customData=e,n(t)},t.type="text/javascript",t.charset="UTF-8",(null!==(r=null===(r=document.getElementsByTagName("head"))||void 0===r?void 0:r[0])&&void 0!==r?r:document).appendChild(t)})}function Oa(e){return`__${e}${Math.floor(1e6*Math.random())}`}class Ma{constructor(e){this.auth=e,this.counter=1e12,this._widgets=new Map}render(e,t){var n=this.counter;return this._widgets.set(n,new La(e,this.auth.name,t||{})),this.counter++,n}reset(e){var t,n=e||1e12;null===(t=this._widgets.get(n))||void 0===t||t.delete(),this._widgets.delete(n)}getResponse(e){var t;return(null===(t=this._widgets.get(e||1e12))||void 0===t?void 0:t.getResponse())||""}async execute(e){var t;return null===(t=this._widgets.get(e||1e12))||void 0===t||t.execute(),""}}class La{constructor(e,t,n){this.params=n,this.timerId=null,this.deleted=!1,this.responseToken=null,this.clickHandler=()=>{this.execute()};var r="string"==typeof e?document.getElementById(e):e;ui(r,"argument-error",{appName:t}),this.container=r,this.isVisible="invisible"!==this.params.size,this.isVisible?this.execute():this.container.addEventListener("click",this.clickHandler)}getResponse(){return this.checkIfDeleted(),this.responseToken}delete(){this.checkIfDeleted(),this.deleted=!0,this.timerId&&(clearTimeout(this.timerId),this.timerId=null),this.container.removeEventListener("click",this.clickHandler)}execute(){this.checkIfDeleted(),this.timerId||(this.timerId=window.setTimeout(()=>{this.responseToken=function(e){const t=[],n="1234567890abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";for(let r=0;r{if(this.timerId=null,this.responseToken=null,t)try{t()}catch(e){}this.isVisible&&this.execute()},6e4)},500))}checkIfDeleted(){if(this.deleted)throw new Error("reCAPTCHA mock was already deleted!")}}const Fa=Oa("rcb"),Ua=new yi(3e4,6e4);class qa{constructor(){var e;this.hostLanguage="",this.counter=0,this.librarySeparatelyLoaded=!(null===(e=ba().grecaptcha)||void 0===e||!e.render)}load(s,a=""){var e;return ui((e=a).length<=6&&/^\s*[a-zA-Z0-9\-]*\s*$/.test(e),s,"argument-error"),this.shouldResolveImmediately(a)?Promise.resolve(ba().grecaptcha):new Promise((t,n)=>{const i=ba().setTimeout(()=>{n(ai(s,"network-request-failed"))},Ua.get());ba()[Fa]=()=>{ba().clearTimeout(i),delete ba()[Fa];const e=ba().grecaptcha;if(e){const r=e.render;e.render=(e,t)=>{var n=r(e,t);return this.counter++,n},this.hostLanguage=a,t(e)}else n(ai(s,"internal-error"))},Pa(`https://www.google.com/recaptcha/api.js??${j({onload:Fa,render:"explicit",hl:a})}`).catch(()=>{clearTimeout(i),n(ai(s,"internal-error"))})})}clearedOneInstance(){this.counter--}shouldResolveImmediately(e){var t;return!(null===(t=ba().grecaptcha)||void 0===t||!t.render)&&(e===this.hostLanguage||0{const n=e=>{e&&(this.tokenChangeListeners.delete(n),t(e))};this.tokenChangeListeners.add(n),this.isInvisible&&r.execute(e)})}render(){try{this.assertNotDestroyed()}catch(e){return Promise.reject(e)}return this.renderPromise||(this.renderPromise=this.makeRenderPromise().catch(e=>{throw this.renderPromise=null,e}),this.renderPromise)}_reset(){this.assertNotDestroyed(),null!==this.widgetId&&this.getAssertedRecaptcha().reset(this.widgetId)}clear(){this.assertNotDestroyed(),this.destroyed=!0,this._recaptchaLoader.clearedOneInstance(),this.isInvisible||this.container.childNodes.forEach(e=>{this.container.removeChild(e)})}validateStartingState(){ui(!this.parameters.sitekey,this.auth,"argument-error"),ui(this.isInvisible||!this.container.hasChildNodes(),this.auth,"argument-error"),ui("undefined"!=typeof document,this.auth,"operation-not-supported-in-this-environment")}makeTokenCallback(n){return t=>{if(this.tokenChangeListeners.forEach(e=>e(t)),"function"==typeof n)n(t);else if("string"==typeof n){const e=ba()[n];"function"==typeof e&&e(t)}}}assertNotDestroyed(){ui(!this.destroyed,this.auth,"internal-error")}async makeRenderPromise(){if(await this.init(),!this.widgetId){let e=this.container;var t;this.isInvisible||(t=document.createElement("div"),e.appendChild(t),e=t),this.widgetId=this.getAssertedRecaptcha().render(e,this.parameters)}return this.widgetId}async init(){ui(mi()&&!Ia(),this.auth,"internal-error"),await function(){let t=null;return new Promise(e=>{"complete"!==document.readyState?(t=()=>e(),window.addEventListener("load",t)):e()}).catch(e=>{throw t&&window.removeEventListener("load",t),e})}(),this.recaptcha=await this._recaptchaLoader.load(this.auth,this.auth.languageCode||void 0);var e=await((await Ei(this.auth,"GET","/v1/recaptchaParams")).recaptchaSiteKey||"");ui(e,this.auth,"internal-error"),this.parameters.sitekey=e}getAssertedRecaptcha(){return ui(this.recaptcha,this.auth,"internal-error"),this.recaptcha}}class Ka{constructor(e,t){this.verificationId=e,this.onConfirmation=t}confirm(e){var t=ms._fromVerification(this.verificationId,e);return this.onConfirmation(t)}}async function Wa(t,n,r){var i,s,a,o,c,l,u=await r.verify();try{ui("string"==typeof u,t,"argument-error"),ui(r.type===Ba,t,"argument-error");let e;if(e="string"==typeof n?{phoneNumber:n}:n,"session"in e){var h=e.session;if("phoneNumber"in e)return ui("enroll"===h.type,t,"internal-error"),(c=t,l={idToken:h.credential,phoneEnrollmentInfo:{phoneNumber:e.phoneNumber,recaptchaToken:u}},await Ei(c,"POST","/v2/accounts/mfaEnrollment:start",Ti(c,l))).phoneSessionInfo.sessionInfo;ui("signin"===h.type,t,"internal-error");var d=(null===(i=e.multiFactorHint)||void 0===i?void 0:i.uid)||e.multiFactorUid;return ui(d,t,"missing-multi-factor-info"),(o={mfaPendingCredential:h.credential,mfaEnrollmentId:d,phoneSignInInfo:{recaptchaToken:u}},await Ei(t,"POST","/v2/accounts/mfaSignIn:start",Ti(t,o))).phoneResponseInfo.sessionInfo}var p=(s=t,a={phoneNumber:e.phoneNumber,recaptchaToken:u},await Ei(s,"POST","/v1/accounts:sendVerificationCode",Ti(s,a)))["sessionInfo"];return p}finally{r._reset()}}class za{constructor(e){this.providerId=za.PROVIDER_ID,this.auth=rs(e)}verifyPhoneNumber(e,t){return Wa(this.auth,e,ae(t))}static credential(e,t){return ms._fromVerification(e,t)}static credentialFromResult(e){var t=e;return za.credentialFromTaggedObject(t)}static credentialFromError(e){return za.credentialFromTaggedObject(e.customData||{})}static credentialFromTaggedObject({_tokenResponse:e}){if(!e)return null;var{phoneNumber:t,temporaryProof:n}=e;return t&&n?ms._fromTokenResponse(t,n):null}}function Ga(e,t){return t?fi(t):(ui(e._popupRedirectResolver,e,"argument-error"),e._popupRedirectResolver)}za.PROVIDER_ID="phone",za.PHONE_SIGN_IN_METHOD="phone";class Ha extends cs{constructor(e){super("custom","custom"),this.params=e}_getIdTokenResponse(e){return ps(e,this._buildIdpRequest())}_linkToIdToken(e,t){return ps(e,this._buildIdpRequest(t))}_getReauthenticationResolver(e){return ps(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 Qa(e){return Us(e.auth,new Ha(e),e.bypassAuthState)}function Ya(e){var{auth:t,user:n}=e;return ui(n,t,"internal-error"),Fs(n,new Ha(e),e.bypassAuthState)}async function Ja(e){var{auth:t,user:n}=e;return ui(n,t,"internal-error"),Ms(n,new Ha(e),e.bypassAuthState)}class Xa{constructor(e,t,n,r,i=!1){this.auth=e,this.resolver=n,this.user=r,this.bypassAuthState=i,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){var{urlResponse:t,sessionId:n,postBody:r,tenantId:i,error:s,type:a}=e;if(s)this.reject(s);else{r={auth:this.auth,requestUri:t,sessionId:n,tenantId:i||void 0,postBody:r||void 0,user:this.user,bypassAuthState:this.bypassAuthState};try{this.resolve(await this.getIdpTask(a)(r))}catch(e){this.reject(e)}}}onError(e){this.reject(e)}getIdpTask(e){switch(e){case"signInViaPopup":case"signInViaRedirect":return Qa;case"linkViaPopup":case"linkViaRedirect":return Ja;case"reauthViaPopup":case"reauthViaRedirect":return Ya;default:si(this.auth,"internal-error")}}resolve(e){di(this.pendingPromise,"Pending promise was never set"),this.pendingPromise.resolve(e),this.unregisterAndCleanUp()}reject(e){di(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 Za=new yi(2e3,1e4);class eo extends Xa{constructor(e,t,n,r,i){super(e,t,r,i),this.provider=n,this.authWindow=null,this.pollId=null,eo.currentPopupAction&&eo.currentPopupAction.cancel(),eo.currentPopupAction=this}async executeNotNull(){var e=await this.execute();return ui(e,this.auth,"internal-error"),e}async onExecution(){di(1===this.filter.length,"Popup operations only handle one event");var e=_a();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(ai(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(ai(this.auth,"cancelled-popup-request"))}cleanUp(){this.authWindow&&this.authWindow.close(),this.pollId&&window.clearTimeout(this.pollId),this.authWindow=null,this.pollId=null,eo.currentPopupAction=null}pollUserCancellation(){const t=()=>{var e;null!==(e=null===(e=this.authWindow)||void 0===e?void 0:e.window)&&void 0!==e&&e.closed?this.pollId=window.setTimeout(()=>{this.pollId=null,this.reject(ai(this.auth,"popup-closed-by-user"))},2e3):this.pollId=window.setTimeout(t,Za.get())};t()}}eo.currentPopupAction=null;const to="pendingRedirect",no=new Map;class ro extends Xa{constructor(e,t,n=!1){super(e,["signInViaRedirect","linkViaRedirect","reauthViaRedirect","unknown"],t,void 0,n),this.eventId=null}async execute(){let t=no.get(this.auth._key());if(!t){try{const e=await async function(e,t){const n=oo(t),r=ao(e);if(!await r._isAvailable())return!1;var i="true"===await r._get(n);return await r._remove(n),i}(this.resolver,this.auth)?await super.execute():null;t=()=>Promise.resolve(e)}catch(e){t=()=>Promise.reject(e)}no.set(this.auth._key(),t)}return this.bypassAuthState||no.set(this.auth._key(),()=>Promise.resolve(null)),t()}async onAuthEvent(e){if("signInViaRedirect"===e.type)return super.onAuthEvent(e);if("unknown"!==e.type){if(e.eventId){var 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(){}}async function io(e,t){return ao(e)._set(oo(t),"true")}function so(e,t){no.set(e._key(),t)}function ao(e){return fi(e._redirectPersistence)}function oo(e){return ji(to,e.config.apiKey,e.name)}function co(e,t,n){return async function(e,t,n){var r=rs(e);ci(e,t,_s),await r._initializationPromise;const i=Ga(r,n);return await io(i,r),i._openRedirect(r,t,"signInViaRedirect")}(e,t,n)}function lo(e,t,n){return async function(e,t,n){var r=ae(e);ci(r.auth,t,_s),await r.auth._initializationPromise;const i=Ga(r.auth,n);await io(i,r.auth);var s=await po(r);return i._openRedirect(r.auth,t,"reauthViaRedirect",s)}(e,t,n)}function uo(e,t,n){return async function(e,t,n){var r=ae(e);ci(r.auth,t,_s),await r.auth._initializationPromise;const i=Ga(r.auth,n);await Ls(!1,r,t.providerId),await io(i,r.auth);var s=await po(r);return i._openRedirect(r.auth,t,"linkViaRedirect",s)}(e,t,n)}async function ho(e,t,n=!1){const r=rs(e);var i=Ga(r,t);const s=new ro(r,i,n),a=await s.execute();return a&&!n&&(delete a.user._redirectEventId,await r._persistUserIfCurrent(a.user),await r._setRedirectUser(null,t)),a}async function po(e){var t=_a(`${e.uid}:::`);return e._redirectEventId=t,await e.auth._setRedirectUser(e),await e.auth._persistUserIfCurrent(e),t}class fo{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(t){if(this.hasEventBeenHandled(t))return!1;let n=!1;return this.consumers.forEach(e=>{this.isEventForConsumer(t,e)&&(n=!0,this.sendToConsumer(t,e),this.saveEventToCache(t))}),this.hasHandledPotentialRedirect||!function(e){switch(e.type){case"signInViaRedirect":case"linkViaRedirect":case"reauthViaRedirect":return!0;case"unknown":return mo(e);default:return!1}}(t)||(this.hasHandledPotentialRedirect=!0,n||(this.queuedRedirectEvent=t,n=!0)),n}sendToConsumer(e,t){var n;e.error&&!mo(e)?(n=(null===(n=e.error.code)||void 0===n?void 0:n.split("auth/")[1])||"internal-error",t.onError(ai(this.auth,n))):t.onAuthEvent(e)}isEventForConsumer(e,t){var n=null===t.eventId||!!e.eventId&&e.eventId===t.eventId;return t.filter.includes(e.type)&&n}hasEventBeenHandled(e){return 6e5<=Date.now()-this.lastProcessedEventTime&&this.cachedEventUids.clear(),this.cachedEventUids.has(go(e))}saveEventToCache(e){this.cachedEventUids.add(go(e)),this.lastProcessedEventTime=Date.now()}}function go(e){return[e.type,e.eventId,e.sessionId,e.tenantId].filter(e=>e).join("-")}function mo({type:e,error:t}){return"unknown"===e&&"auth/no-auth-event"===(null==t?void 0:t.code)}async function vo(e,t={}){return Ei(e,"GET","/v1/projects",t)}const yo=/^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$/,_o=/^https?/;async function wo(e){if(!e.config.emulator){var t=(await vo(e))["authorizedDomains"];for(const n of t)try{if(function(e){const t=gi(),{protocol:n,hostname:r}=new URL(t);if(e.startsWith("chrome-extension://")){var i=new URL(e);return""===i.hostname&&""===r?"chrome-extension:"===n&&e.replace("chrome-extension://","")===t.replace("chrome-extension://",""):"chrome-extension:"===n&&i.hostname===r}if(!_o.test(n))return!1;if(yo.test(e))return r===e;const s=e.replace(/\./g,"\\."),a=new RegExp("^(.+\\."+s+"|"+s+")$","i");return a.test(r)}(n))return}catch(e){}si(e,"unauthorized-domain")}}const bo=new yi(3e4,6e4);function Io(){const t=ba().___jsl;if(null!==t&&void 0!==t&&t.H)for(const n of Object.keys(t.H))if(t.H[n].r=t.H[n].r||[],t.H[n].L=t.H[n].L||[],t.H[n].r=[...t.H[n].L],t.CP)for(let e=0;e{function n(){Io(),gapi.load("gapi.iframes",{callback:()=>{e(gapi.iframes.getContext())},ontimeout:()=>{Io(),t(ai(i,"network-request-failed"))},timeout:bo.get()})}if(null!==(r=null===(r=ba().gapi)||void 0===r?void 0:r.iframes)&&void 0!==r&&r.Iframe)e(gapi.iframes.getContext());else{if(null===(r=ba().gapi)||void 0===r||!r.load){var r=Oa("iframefcb");return ba()[r]=()=>{gapi.load?n():t(ai(i,"network-request-failed"))},Pa(`https://apis.google.com/js/api.js?onload=${r}`).catch(e=>t(e))}n()}}).catch(e=>{throw To=null,e})),To}const ko=new yi(5e3,15e3),So="__/auth/iframe",Co="emulator/auth/iframe",Ao={style:{position:"absolute",top:"-100px",width:"1px",height:"1px"},"aria-hidden":"true",tabindex:"-1"},No=new Map([["identitytoolkit.googleapis.com","p"],["staging-identitytoolkit.sandbox.googleapis.com","s"],["test-identitytoolkit.sandbox.googleapis.com","t"]]);async function Ro(a){const e=await Eo(a);var t=ba().gapi;return ui(t,a,"internal-error"),e.open({where:document.body,url:function(e){var t=e.config;ui(t.authDomain,e,"auth-domain-config-required");var n=t.emulator?_i(t,Co):`https://${e.config.authDomain}/${So}`;const r={apiKey:t.apiKey,appName:e.name,v:Ye};(t=No.get(e.config.apiHost))&&(r.eid=t);const i=e._getFrameworks();return i.length&&(r.fw=i.join(",")),`${n}?${j(r).slice(1)}`}(a),messageHandlersFilter:t.iframes.CROSS_ORIGIN_IFRAMES_FILTER,attributes:Ao,dontclear:!0},s=>new Promise(async(e,t)=>{await s.restyle({setHideOnLeave:!1});const n=ai(a,"network-request-failed"),r=ba().setTimeout(()=>{t(n)},ko.get());function i(){ba().clearTimeout(r),e(s)}s.ping(i).then(i,()=>{t(n)})}))}const xo={location:"yes",resizable:"yes",statusbar:"yes",toolbar:"no"};class Do{constructor(e){this.window=e,this.associatedEvent=null}close(){if(this.window)try{this.window.close()}catch(e){}}}function Po(e,t,n,r=500,i=600){var s=Math.max((window.screen.availHeight-i)/2,0).toString(),a=Math.max((window.screen.availWidth-r)/2,0).toString();let o="";const c=Object.assign(Object.assign({},xo),{width:r.toString(),height:i.toString(),top:s,left:a});s=w().toLowerCase();n&&(o=Gi(s)?"_blank":n),Wi(s)&&(t=t||"http://localhost",c.scrollbars="yes");var l,a=Object.entries(c).reduce((e,[t,n])=>`${e}${t}=${n},`,"");if([n=w()]=[s],Xi(n)&&null!==(l=window.navigator)&&void 0!==l&&l.standalone&&"_self"!==o)return function(e,t){const n=document.createElement("a");n.href=e,n.target=t;const r=document.createEvent("MouseEvent");r.initMouseEvent("click",!0,!0,window,1,0,0,0,0,!1,!1,!1,!1,1,null),n.dispatchEvent(r)}(t||"",o),new Do(null);const u=window.open(t||"",o,a);ui(u,e,"popup-blocked");try{u.focus()}catch(e){}return new Do(u)}const Oo="__/auth/handler",Mo="emulator/auth/handler";function Lo(e,t,n,r,i,s){ui(e.config.authDomain,e,"auth-domain-config-required"),ui(e.config.apiKey,e,"invalid-api-key");const a={apiKey:e.config.apiKey,appName:e.name,authType:n,redirectUrl:r,v:Ye,eventId:i};if(t instanceof _s){t.setDefaultLanguage(e.languageCode),a.providerId=t.providerId||"",U(t.getCustomParameters())||(a.customParameters=JSON.stringify(t.getCustomParameters()));for(var[o,c]of Object.entries(s||{}))a[o]=c}if(t instanceof ws){const u=t.getScopes().filter(e=>""!==e);0{})}_initialize(e){const t=e._key();if(this.eventManagers[t]){const{manager:r,promise:n}=this.eventManagers[t];return r?Promise.resolve(r):(di(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(t){const e=await Ro(t),n=new fo(t);return e.register("authEvent",e=>{return ui(null==e?void 0:e.authEvent,t,"invalid-auth-event"),{status:n.onEvent(e.authEvent)?"ACK":"ERROR"}},gapi.iframes.CROSS_ORIGIN_IFRAMES_FILTER),this.eventManagers[t._key()]={manager:n},this.iframes[t._key()]=e,n}_isIframeWebStorageSupported(n,r){const e=this.iframes[n._key()];e.send(Fo,{type:Fo},e=>{var t=null===(t=null==e?void 0:e[0])||void 0===t?void 0:t[Fo];void 0!==t&&r(!!t),si(n,"internal-error")},gapi.iframes.CROSS_ORIGIN_IFRAMES_FILTER)}_originValidation(e){var t=e._key();return this.originValidationPromises[t]||(this.originValidationPromises[t]=wo(e)),this.originValidationPromises[t]}get _shouldInitProactively(){return Zi()||zi()||Xi()}};class qo extends class{constructor(e){this.factorId=e}_process(e,t,n){switch(t.type){case"enroll":return this._finalizeEnroll(e,t.credential,n);case"signin":return this._finalizeSignIn(e,t.credential);default:return hi("unexpected MultiFactorSessionType")}}}{constructor(e){super("phone"),this.credential=e}static _fromCredential(e){return new qo(e)}_finalizeEnroll(e,t,n){return e=e,n={idToken:t,displayName:n,phoneVerificationInfo:this.credential._makeVerificationRequest()},Ei(e,"POST","/v2/accounts/mfaEnrollment:finalize",Ti(e,n))}_finalizeSignIn(e,t){return e=e,t={mfaPendingCredential:t,phoneVerificationInfo:this.credential._makeVerificationRequest()},Ei(e,"POST","/v2/accounts/mfaSignIn:finalize",Ti(e,t))}}class Vo{constructor(){}static assertion(e){return qo._fromCredential(e)}}Vo.FACTOR_ID="phone";var Bo="@firebase/auth";class jo{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(t){var e;this.assertAuthConfigured(),this.internalListeners.has(t)||(e=this.auth.onIdTokenChanged(e=>{t((null==e?void 0:e.stsTokenManager.accessToken)||null)}),this.internalListeners.set(t,e),this.updateProactiveRefresh())}removeAuthTokenListener(e){this.assertAuthConfigured();const t=this.internalListeners.get(e);t&&(this.internalListeners.delete(e),t(),this.updateProactiveRefresh())}assertAuthConfigured(){ui(this.auth._initializationPromise,"dependent-sdk-initialized-before-auth")}updateProactiveRefresh(){0{var t=e.getProvider("app").getImmediate(),n=e.getProvider("heartbeat");const{apiKey:i,authDomain:s}=t.options;return((e,t)=>{ui(i&&!i.includes(":"),"invalid-api-key",{appName:e.name}),ui(!(null!==s&&void 0!==s&&s.includes(":")),"argument-error",{appName:e.name});var n={apiKey:i,authDomain:s,clientPlatform:Wo,apiHost:"identitytoolkit.googleapis.com",tokenApiHost:"securetoken.googleapis.com",apiScheme:"https",sdkClientVersion:es(Wo)},n=new ns(e,t,n);return function(e,t){const n=(null==t?void 0:t.persistence)||[];var r=(Array.isArray(n)?n:[n]).map(fi);null!=t&&t.errorMap&&e._updateErrorMap(t.errorMap),e._initializeWithPersistence(r,null==t?void 0:t.popupRedirectResolver)}(n,r),n})(t,n)},"PUBLIC").setInstantiationMode("EXPLICIT").setInstanceCreatedCallback((e,t,n)=>{const r=e.getProvider("auth-internal");r.initialize()})),ze(new oe("auth-internal",e=>{var t=rs(e.getProvider("auth").getImmediate());return e=t,new jo(e)},"PRIVATE").setInstantiationMode("EXPLICIT")),et(Bo,"0.21.1",function(e){switch(e){case"Node":return"node";case"ReactNative":return"rn";case"Worker":return"webworker";case"Cordova":return"cordova";default:return}}(Wo)),et(Bo,"0.21.1","esm2017");async function Go(e,t,n){var r=zo()["BuildInfo"];di(t.sessionId,"AuthEvent did not contain a session ID");var i=await async function(e){const t=function(e){if(di(/[0-9a-zA-Z]+/.test(e),"Can only convert alpha-numeric strings"),"undefined"!=typeof TextEncoder)return(new TextEncoder).encode(e);const t=new ArrayBuffer(e.length),n=new Uint8Array(t);for(let r=0;re.toString(16).padStart(2,"0")).join("")}(t.sessionId);const s={};return Xi()?s.ibi=r.packageName:Qi()?s.apn=r.packageName:si(e,"operation-not-supported-in-this-environment"),r.displayName&&(s.appDisplayName=r.displayName),s.sessionId=i,Lo(e,n,t.type,void 0,null!==(i=t.eventId)&&void 0!==i?i:void 0,s)}function Ho(r){const i=zo()["cordova"];return new Promise(n=>{i.plugins.browsertab.isAvailable(e=>{let t=null;e?i.plugins.browsertab.openUrl(r):t=i.InAppBrowser.open(r,(e=w(),/(iPad|iPhone|iPod).*OS 7_\d/i.test(e)||/(iPad|iPhone|iPod).*OS 8_\d/i.test(e)?"_blank":"_system"),"location=yes"),n(t)})})}const Qo=20;class Yo extends fo{constructor(){super(...arguments),this.passiveListeners=new Set,this.initPromise=new Promise(e=>{this.resolveInialized=e})}addPassiveListener(e){this.passiveListeners.add(e)}removePassiveListener(e){this.passiveListeners.delete(e)}resetRedirect(){this.queuedRedirectEvent=null,this.hasHandledPotentialRedirect=!1}onEvent(t){return this.resolveInialized(),this.passiveListeners.forEach(e=>e(t)),super.onEvent(t)}async initialized(){await this.initPromise}}function Jo(e,t,n=null){return{type:t,eventId:n,urlResponse:null,sessionId:function(){const e=[],t="1234567890abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";for(let r=0;r{};try{await new Promise((n,e)=>{let t=null;function r(){var e;n();const t=null===(e=l.plugins.browsertab)||void 0===e?void 0:e.close;"function"==typeof t&&t(),"function"==typeof(null==c?void 0:c.close)&&c.close()}function i(){t=t||window.setTimeout(()=>{e(ai(a,"redirect-cancelled-by-user"))},2e3)}function s(){"visible"===(null===document||void 0===document?void 0:document.visibilityState)&&i()}o.addPassiveListener(r),document.addEventListener("resume",i,!1),Qi()&&document.addEventListener("visibilitychange",s,!1),u=()=>{o.removePassiveListener(r),document.removeEventListener("resume",i,!1),document.removeEventListener("visibilitychange",s,!1),t&&window.clearTimeout(t)}})}finally{u()}}(e,a,o)}_isIframeWebStorageSupported(e,t){throw new Error("Method not implemented.")}_originValidation(e){var t=e._key();return this.originValidationPromises[t]||(this.originValidationPromises[t]=async function(e){var t=zo()["BuildInfo"];const n={};Xi()?n.iosBundleId=t.packageName:Qi()?n.androidPackageName=t.packageName:si(e,"operation-not-supported-in-this-environment"),await vo(e,n)}(e)),this.originValidationPromises[t]}attachCallbackListeners(r,i){const{universalLinks:e,handleOpenURL:t,BuildInfo:n}=zo(),s=setTimeout(async()=>{await Xo(r),i.onEvent(ic())},500),a=async e=>{clearTimeout(s);var t=await Xo(r);let n=null;t&&null!=e&&e.url&&(n=Zo(t,e.url)),i.onEvent(n||ic())};void 0!==e&&"function"==typeof e.subscribe&&e.subscribe(null,a);const o=t,c=`${n.packageName.toLowerCase()}://`;zo().handleOpenURL=async e=>{if(e.toLowerCase().startsWith(c)&&a({url:e}),"function"==typeof o)try{o(e)}catch(e){console.error(e)}}}};function ic(){return{type:"unknown",eventId:null,sessionId:null,urlResponse:null,postBody:null,tenantId:null,error:ai("no-auth-event")}}var sc;function ac(){var e;return(null===(e=null===self||void 0===self?void 0:self.location)||void 0===e?void 0:e.protocol)||null}function oc(e=w()){return!("file:"!==ac()&&"ionic:"!==ac()&&"capacitor:"!==ac()||!e.toLowerCase().match(/iphone|ipad|ipod|android/))}function cc(e=w()){return k()&&11===(null===document||void 0===document?void 0:document.documentMode)||([e=w()]=[e],/Edge\/\d+/.test(e))}function lc(){try{const t=self.localStorage;var e=_a();if(t)return t.setItem(e,"1"),t.removeItem(e),!cc()||C()}catch(e){return uc()&&C()}return!1}function uc(){return"undefined"!=typeof global&&"WorkerGlobalScope"in global&&"importScripts"in global}function hc(){return("http:"===ac()||"https:"===ac()||T()||oc())&&!(E()||I())&&lc()&&!uc()}function dc(){return oc()&&"undefined"!=typeof document}const pc={LOCAL:"local",NONE:"none",SESSION:"session"},fc=ui,gc="persistence";async function mc(e){await e._initializationPromise;const t=vc();var n=ji(gc,e.config.apiKey,e.name);t&&t.setItem(n,e._getPersistence())}function vc(){var e;try{return(null===(e="undefined"!=typeof window?window:null)?void 0:e.sessionStorage)||null}catch(e){return null}}const yc=ui;class _c{constructor(){this.browserResolver=fi(Uo),this.cordovaResolver=fi(rc),this.underlyingResolver=null,this._redirectPersistence=va,this._completeRedirectFn=ho,this._overrideRedirectResult=so}async _initialize(e){return await this.selectUnderlyingResolver(),this.assertedUnderlyingResolver._initialize(e)}async _openPopup(e,t,n,r){return await this.selectUnderlyingResolver(),this.assertedUnderlyingResolver._openPopup(e,t,n,r)}async _openRedirect(e,t,n,r){return await this.selectUnderlyingResolver(),this.assertedUnderlyingResolver._openRedirect(e,t,n,r)}_isIframeWebStorageSupported(e,t){this.assertedUnderlyingResolver._isIframeWebStorageSupported(e,t)}_originValidation(e){return this.assertedUnderlyingResolver._originValidation(e)}get _shouldInitProactively(){return dc()||this.browserResolver._shouldInitProactively}get assertedUnderlyingResolver(){return yc(this.underlyingResolver,"internal-error"),this.underlyingResolver}async selectUnderlyingResolver(){var e;this.underlyingResolver||(e=await(!!dc()&&new Promise(e=>{const t=setTimeout(()=>{e(!1)},1e3);document.addEventListener("deviceready",()=>{clearTimeout(t),e(!0)})})),this.underlyingResolver=e?this.cordovaResolver:this.browserResolver)}}function wc(e){return e.unwrap()}function bc(e,t){var n,r,i,s=null===(r=t.customData)||void 0===r?void 0:r._tokenResponse;if("auth/multi-factor-auth-required"===(null==t?void 0:t.code)){const o=t;o.resolver=new kc(e,(n=t,i=ae(e),ui((a=n).customData.operationType,i,"argument-error"),ui(null===(r=a.customData._serverResponse)||void 0===r?void 0:r.mfaPendingCredential,i,"argument-error"),la._fromError(i,a)))}else if(s){var a=Ic(t);const c=t;a&&(c.credential=a,c.tenantId=s.tenantId||void 0,c.email=s.email||void 0,c.phoneNumber=s.phoneNumber||void 0)}}function Ic(e){var t=(e instanceof R?e.customData:e)["_tokenResponse"];if(!t)return null;if(!(e instanceof R)&&"temporaryProof"in t&&"phoneNumber"in t)return za.credentialFromResult(e);const n=t.providerId;if(!n||n===Jr.PASSWORD)return null;let r;switch(n){case Jr.GOOGLE:r=Ts;break;case Jr.FACEBOOK:r=Is;break;case Jr.GITHUB:r=Es;break;case Jr.TWITTER:r=Cs;break;default:var{oauthIdToken:i,oauthAccessToken:s,oauthTokenSecret:a,pendingToken:o,nonce:c}=t;return s||a||i||o?o?n.startsWith("saml.")?ks._create(n,o):fs._fromParams({providerId:n,signInMethod:n,pendingToken:o,idToken:i,accessToken:s}):new bs(n).credential({idToken:i,accessToken:s,rawNonce:c}):null}return e instanceof R?r.credentialFromError(e):r.credentialFromResult(e)}function Tc(t,e){return e.catch(e=>{throw e instanceof R&&bc(t,e),e}).then(e=>{var t=e.operationType,n=e.user;return{operationType:t,credential:Ic(e),additionalUserInfo:oa(e),user:Sc.getOrCreate(n)}})}async function Ec(t,e){const n=await e;return{verificationId:n.verificationId,confirm:e=>Tc(t,n.confirm(e))}}class kc{constructor(e,t){this.resolver=t,this.auth=e.wrapped()}get session(){return this.resolver.session}get hints(){return this.resolver.hints}resolveSignIn(e){return Tc(wc(this.auth),this.resolver.resolveSignIn(e))}}class Sc{constructor(e){var t;this._delegate=e,this.multiFactor=(t=ae(e),ha.has(t)||ha.set(t,ua._fromUser(t)),ha.get(t))}static getOrCreate(e){return Sc.USER_MAP.has(e)||Sc.USER_MAP.set(e,new Sc(e)),Sc.USER_MAP.get(e)}delete(){return this._delegate.delete()}reload(){return this._delegate.reload()}toJSON(){return this._delegate.toJSON()}getIdTokenResult(e){return this._delegate.getIdTokenResult(e)}getIdToken(e){return this._delegate.getIdToken(e)}linkAndRetrieveDataWithCredential(e){return this.linkWithCredential(e)}async linkWithCredential(e){return Tc(this.auth,Vs(this._delegate,e))}async linkWithPhoneNumber(e,t){return Ec(this.auth,async function(e,t,n){const r=ae(e);await Ls(!1,r,"phone");var i=await Wa(r.auth,t,ae(n));return new Ka(i,e=>Vs(r,e))}(this._delegate,e,t))}async linkWithPopup(e){return Tc(this.auth,async function(e,t,n){var r=ae(e);ci(r.auth,t,_s);var i=Ga(r.auth,n);const s=new eo(r.auth,"linkViaPopup",t,i,r);return s.executeNotNull()}(this._delegate,e,_c))}async linkWithRedirect(e){return await mc(rs(this.auth)),uo(this._delegate,e,_c)}reauthenticateAndRetrieveDataWithCredential(e){return this.reauthenticateWithCredential(e)}async reauthenticateWithCredential(e){return Tc(this.auth,Bs(this._delegate,e))}reauthenticateWithPhoneNumber(e,t){return Ec(this.auth,async function(e,t,n){const r=ae(e);var i=await Wa(r.auth,t,ae(n));return new Ka(i,e=>Bs(r,e))}(this._delegate,e,t))}reauthenticateWithPopup(e){return Tc(this.auth,async function(e,t,n){var r=ae(e);ci(r.auth,t,_s);var i=Ga(r.auth,n);const s=new eo(r.auth,"reauthViaPopup",t,i,r);return s.executeNotNull()}(this._delegate,e,_c))}async reauthenticateWithRedirect(e){return await mc(rs(this.auth)),lo(this._delegate,e,_c)}sendEmailVerification(e){return Js(this._delegate,e)}async unlink(e){return await Os(this._delegate,e),this}updateEmail(e){return ea(ae(this._delegate),e,null)}updatePassword(e){return ea(ae(this._delegate),null,e)}updatePhoneNumber(e){return async function(e,t){await Ms(ae(e),t)}(this._delegate,e)}updateProfile(e){return Zs(this._delegate,e)}verifyBeforeUpdateEmail(e,t){return Xs(this._delegate,e,t)}get emailVerified(){return this._delegate.emailVerified}get isAnonymous(){return this._delegate.isAnonymous}get metadata(){return this._delegate.metadata}get phoneNumber(){return this._delegate.phoneNumber}get providerData(){return this._delegate.providerData}get refreshToken(){return this._delegate.refreshToken}get tenantId(){return this._delegate.tenantId}get displayName(){return this._delegate.displayName}get email(){return this._delegate.email}get photoURL(){return this._delegate.photoURL}get providerId(){return this._delegate.providerId}get uid(){return this._delegate.uid}get auth(){return this._delegate.auth}}Sc.USER_MAP=new WeakMap;const Cc=ui;class Ac{constructor(e,t){if(this.app=e,t.isInitialized())return this._delegate=t.getImmediate(),void this.linkUnderlyingAuth();var n=e.options["apiKey"];Cc(n,"invalid-api-key",{appName:e.name}),Cc(n,"invalid-api-key",{appName:e.name});var r="undefined"!=typeof window?_c:void 0;this._delegate=t.initialize({options:{persistence:function(e,t){const n=function(e,t){const n=vc();if(!n)return[];var r=ji(gc,e,t);switch(n.getItem(r)){case pc.NONE:return[Bi];case pc.LOCAL:return[Da,va];case pc.SESSION:return[va];default:return[]}}(e,t);"undefined"==typeof self||n.includes(Da)||n.push(Da);if("undefined"!=typeof window)for(const r of[ga,va])n.includes(r)||n.push(r);n.includes(Bi)||n.push(Bi);return n}(n,e.name),popupRedirectResolver:r}}),this._delegate._updateErrorMap(ei),this.linkUnderlyingAuth()}get emulatorConfig(){return this._delegate.emulatorConfig}get currentUser(){return this._delegate.currentUser?Sc.getOrCreate(this._delegate.currentUser):null}get languageCode(){return this._delegate.languageCode}set languageCode(e){this._delegate.languageCode=e}get settings(){return this._delegate.settings}get tenantId(){return this._delegate.tenantId}set tenantId(e){this._delegate.tenantId=e}useDeviceLanguage(){this._delegate.useDeviceLanguage()}signOut(){return this._delegate.signOut()}useEmulator(e,t){ss(this._delegate,e,t)}applyActionCode(e){return Gs(this._delegate,e)}checkActionCode(e){return Hs(this._delegate,e)}confirmPasswordReset(e,t){return async function(e,t,n){await ls(ae(e),{oobCode:t,newPassword:n})}(this._delegate,e,t)}async createUserWithEmailAndPassword(e,t){return Tc(this._delegate,async function(e,t,n){const r=rs(e);var i=await As(r,{returnSecureToken:!0,email:t,password:n}),i=await Ns._fromIdTokenResponse(r,"signIn",i);return await r._updateCurrentUser(i.user),i}(this._delegate,e,t))}fetchProvidersForEmail(e){return this.fetchSignInMethodsForEmail(e)}fetchSignInMethodsForEmail(e){return Ys(this._delegate,e)}isSignInWithEmailLink(e){return this._delegate,e=e,"EMAIL_SIGNIN"===(null==(t=vs.parseLink(e))?void 0:t.operation);var t}async getRedirectResult(){Cc(hc(),this._delegate,"operation-not-supported-in-this-environment");var e,t,n=(e=this._delegate,t=_c,await rs(e)._initializationPromise,await ho(e,t,!1));return n?Tc(this._delegate,Promise.resolve(n)):{credential:null,user:null}}addFrameworkForLogging(e){rs(this._delegate)._logFramework(e)}onAuthStateChanged(e,t,n){var{next:r,error:i,complete:s}=Nc(e,t,n);return this._delegate.onAuthStateChanged(r,i,s)}onIdTokenChanged(e,t,n){var{next:r,error:i,complete:s}=Nc(e,t,n);return this._delegate.onIdTokenChanged(r,i,s)}sendSignInLinkToEmail(e,t){return Qs(this._delegate,e,t)}sendPasswordResetEmail(e,t){return zs(this._delegate,e,t||void 0)}async setPersistence(e){var t,n;t=this._delegate,n=e,fc(Object.values(pc).includes(n),t,"invalid-persistence-type"),E()?fc(n!==pc.SESSION,t,"unsupported-persistence-type"):I()?fc(n===pc.NONE,t,"unsupported-persistence-type"):uc()?fc(n===pc.NONE||n===pc.LOCAL&&C(),t,"unsupported-persistence-type"):fc(n===pc.NONE||lc(),t,"unsupported-persistence-type");let r;switch(e){case pc.SESSION:r=va;break;case pc.LOCAL:var i=await fi(Da)._isAvailable();r=i?Da:ga;break;case pc.NONE:r=Bi;break;default:return si("argument-error",{appName:this._delegate.name})}return this._delegate.setPersistence(r)}signInAndRetrieveDataWithCredential(e){return this.signInWithCredential(e)}signInAnonymously(){return Tc(this._delegate,async function(e){const t=rs(e);if(await t._initializationPromise,null!==(n=t.currentUser)&&void 0!==n&&n.isAnonymous)return new Ns({user:t.currentUser,providerId:null,operationType:"signIn"});var n=await As(t,{returnSecureToken:!0}),n=await Ns._fromIdTokenResponse(t,"signIn",n,!0);return await t._updateCurrentUser(n.user),n}(this._delegate))}signInWithCredential(e){return Tc(this._delegate,qs(this._delegate,e))}signInWithCustomToken(e){return Tc(this._delegate,js(this._delegate,e))}signInWithEmailAndPassword(e,t){return Tc(this._delegate,(n=this._delegate,e=e,t=t,qs(ae(n),ys.credential(e,t))));var n}signInWithEmailLink(e,t){return Tc(this._delegate,async function(e,t,n){var r=ae(e),i=ys.credentialWithLink(t,n||gi());return ui(i._tenantId===(r.tenantId||null),r,"tenant-id-mismatch"),qs(r,i)}(this._delegate,e,t))}signInWithPhoneNumber(e,t){return Ec(this._delegate,async function(e,t,n){const r=rs(e);var i=await Wa(r,t,ae(n));return new Ka(i,e=>qs(r,e))}(this._delegate,e,t))}async signInWithPopup(e){return Cc(hc(),this._delegate,"operation-not-supported-in-this-environment"),Tc(this._delegate,async function(e,t,n){var r=rs(e);ci(e,t,_s);var i=Ga(r,n);const s=new eo(r,"signInViaPopup",t,i);return s.executeNotNull()}(this._delegate,e,_c))}async signInWithRedirect(e){return Cc(hc(),this._delegate,"operation-not-supported-in-this-environment"),await mc(this._delegate),co(this._delegate,e,_c)}updateCurrentUser(e){return this._delegate.updateCurrentUser(e)}verifyPasswordResetCode(e){return async function(e,t){var n=(await Hs(ae(e),t))["data"];return n.email}(this._delegate,e)}unwrap(){return this._delegate}_delete(){return this._delegate._delete()}linkUnderlyingAuth(){this._delegate.wrapped=()=>this}}function Nc(e,t,n){let r=e;"function"!=typeof e&&({next:r,error:t,complete:n}=e);const i=r;return{next:e=>i(e&&Sc.getOrCreate(e)),error:t,complete:n}}Ac.Persistence=pc;class Rc{constructor(){this.providerId="phone",this._delegate=new za(wc(wt.auth()))}static credential(e,t){return za.credential(e,t)}verifyPhoneNumber(e,t){return this._delegate.verifyPhoneNumber(e,t)}unwrap(){return this._delegate}}Rc.PHONE_SIGN_IN_METHOD=za.PHONE_SIGN_IN_METHOD,Rc.PROVIDER_ID=za.PROVIDER_ID;const xc=ui;class Dc{constructor(e,t,n=wt.app()){var r;xc(null===(r=n.options)||void 0===r?void 0:r.apiKey,"invalid-api-key",{appName:n.name}),this._delegate=new $a(e,t,n.auth()),this.type=this._delegate.type}clear(){this._delegate.clear()}render(){return this._delegate.render()}verify(){return this._delegate.verify()}}(sc=wt).INTERNAL.registerComponent(new oe("auth-compat",e=>{var t=e.getProvider("app-compat").getImmediate(),n=e.getProvider("auth");return new Ac(t,n)},"PUBLIC").setServiceProps({ActionCodeInfo:{Operation:{EMAIL_SIGNIN:Xr.EMAIL_SIGNIN,PASSWORD_RESET:Xr.PASSWORD_RESET,RECOVER_EMAIL:Xr.RECOVER_EMAIL,REVERT_SECOND_FACTOR_ADDITION:Xr.REVERT_SECOND_FACTOR_ADDITION,VERIFY_AND_CHANGE_EMAIL:Xr.VERIFY_AND_CHANGE_EMAIL,VERIFY_EMAIL:Xr.VERIFY_EMAIL}},EmailAuthProvider:ys,FacebookAuthProvider:Is,GithubAuthProvider:Es,GoogleAuthProvider:Ts,OAuthProvider:bs,SAMLAuthProvider:Ss,PhoneAuthProvider:Rc,PhoneMultiFactorGenerator:Vo,RecaptchaVerifier:Dc,TwitterAuthProvider:Cs,Auth:Ac,AuthCredential:cs,Error:R}).setInstantiationMode("LAZY").setMultipleInstances(!1)),sc.registerVersion("@firebase/auth-compat","0.3.1");const Pc="@firebase/database";let Oc="";function Mc(e){Oc=e}class Lc{constructor(e){this.domStorage_=e,this.prefix_="firebase:"}set(e,t){null==t?this.domStorage_.removeItem(this.prefixedName_(e)):this.domStorage_.setItem(this.prefixedName_(e),O(t))}get(e){var t=this.domStorage_.getItem(this.prefixedName_(e));return null==t?null:P(t)}remove(e){this.domStorage_.removeItem(this.prefixedName_(e))}prefixedName_(e){return this.prefix_+e}toString(){return this.domStorage_.toString()}}class Fc{constructor(){this.cache_={},this.isInMemoryStorage=!0}set(e,t){null==t?delete this.cache_[e]:this.cache_[e]=t}get(e){return L(this.cache_,e)?this.cache_[e]:null}remove(e){delete this.cache_[e]}}var Uc,qc,Vc,Bc,jc,$c,Kc=function(e){try{if("undefined"!=typeof window&&void 0!==window[e]){const t=window[e];return t.setItem("firebase:sentinel","cache"),t.removeItem("firebase:sentinel"),new Lc(t)}}catch(e){}return new Fc};function Wc(e){var t=function(t){const n=[];let r=0;for(let a=0;a>6|192:(e<65536?n[r++]=e>>12|224:(n[r++]=e>>18|240,n[r++]=e>>12&63|128),n[r++]=e>>6&63|128),n[r++]=63&e|128)}return n}(e);const n=new W;return n.update(t),t=n.digest(),r.encodeByteArray(t)}const zc=Kc("localStorage"),Gc=Kc("sessionStorage"),Hc=new me("@firebase/database"),Qc=function(){let e=1;return function(){return e++}}(),Yc=function(...e){let t="";for(let r=0;rn?r.push(e.substring(i,n)):r.push(e.substring(i,i+t));return r}const sl=function(e,t){f(!t||!0===e||!1===e,"Can't turn on custom loggers persistently."),!0===e?(Hc.logLevel=g.VERBOSE,Jc=Hc.log.bind(Hc),t&&Gc.set("logging_enabled",!0)):"function"==typeof e?Jc=e:(Jc=null,Gc.remove("logging_enabled"))},al=function(...e){var t;!0===Xc&&(Xc=!1,null===Jc&&!0===Gc.get("logging_enabled")&&sl(!0)),Jc&&(t=Yc.apply(null,e),Jc(t))},ol=function(...e){var t=`FIREBASE FATAL ERROR: ${Yc(...e)}`;throw Hc.error(t),new Error(t)},cl=function(...e){var t="FIREBASE WARNING: "+Yc(...e);Hc.warn(t)},ll=function(){"undefined"!=typeof window&&window.location&&window.location.protocol&&-1!==window.location.protocol.indexOf("https:")&&cl("Insecure Firebase access from a secure page. Please use https in calls to new Firebase().")},ul=function(e){return"number"==typeof e&&(e!=e||e===Number.POSITIVE_INFINITY||e===Number.NEGATIVE_INFINITY)},hl="[MIN_NAME]",dl="[MAX_NAME]",pl=function(e,t){if(e===t)return 0;if(e===hl||t===dl)return-1;if(t===hl||e===dl)return 1;var n=ml(e),r=ml(t);return null!==n?null!==r?n-r==0?e.length-t.length:n-r:-1:null===r&&e=Math.pow(2,-1022)?(i=Math.min(Math.floor(Math.log(e)/Math.LN2),1023),n=i+1023,Math.round(e*Math.pow(2,52-i)-Math.pow(2,52))):(n=0,Math.round(e/Math.pow(2,-1074))));const a=[];for(s=52;s;--s)a.push(r%2?1:0),r=Math.floor(r/2);for(s=11;s;--s)a.push(n%2?1:0),n=Math.floor(n/2);a.push(t?1:0),a.reverse();const o=a.join("");let c="";for(s=0;s<64;s+=8){let e=parseInt(o.substr(s,8),2).toString(16);1===e.length&&(e="0"+e),c+=e}return c.toLowerCase()}function ml(e){if(yl.test(e)){var t=Number(e);if(t>=_l&&t<=wl)return t}return null}function vl(e,t){const n=setTimeout(e,t);return"number"==typeof n&&"undefined"!=typeof Deno&&Deno.unrefTimer?Deno.unrefTimer(n):"object"==typeof n&&n.unref&&n.unref(),n}const yl=new RegExp("^-?(0*)\\d{1,10}$"),_l=-2147483648,wl=2147483647,bl=function(e){try{e()}catch(t){setTimeout(()=>{var e=t.stack||"";throw cl("Exception was thrown by user callback.",e),t},Math.floor(0))}};class Il{constructor(e,t){this.appName_=e,this.appCheckProvider=t,this.appCheck=null==t?void 0:t.getImmediate({optional:!0}),this.appCheck||null!=t&&t.get().then(e=>this.appCheck=e)}getToken(n){return this.appCheck?this.appCheck.getToken(n):new Promise((e,t)=>{setTimeout(()=>{this.appCheck?this.getToken(n).then(e,t):e(null)},0)})}addTokenChangeListener(t){var e;null!==(e=this.appCheckProvider)&&void 0!==e&&e.get().then(e=>e.addTokenListener(t))}notifyForInvalidToken(){cl(`Provided AppCheck credentials for the app named "${this.appName_}" `+"are invalid. This usually indicates your app was not initialized correctly.")}}class Tl{constructor(e,t,n){this.appName_=e,this.firebaseOptions_=t,this.authProvider_=n,this.auth_=null,this.auth_=n.getImmediate({optional:!0}),this.auth_||n.onInit(e=>this.auth_=e)}getToken(n){return this.auth_?this.auth_.getToken(n).catch(e=>e&&"auth/token-not-initialized"===e.code?(al("Got auth/token-not-initialized error. Treating as null token."),null):Promise.reject(e)):new Promise((e,t)=>{setTimeout(()=>{this.auth_?this.getToken(n).then(e,t):e(null)},0)})}addTokenChangeListener(t){this.auth_?this.auth_.addAuthTokenListener(t):this.authProvider_.get().then(e=>e.addAuthTokenListener(t))}removeTokenChangeListener(t){this.authProvider_.get().then(e=>e.removeAuthTokenListener(t))}notifyForInvalidToken(){let e='Provided authentication credentials for the app named "'+this.appName_+'" are invalid. This usually indicates your app was not initialized correctly. ';"credential"in this.firebaseOptions_?e+='Make sure the "credential" property provided to initializeApp() is authorized to access the specified "databaseURL" and is from the correct project.':"serviceAccount"in this.firebaseOptions_?e+='Make sure the "serviceAccount" property provided to initializeApp() is authorized to access the specified "databaseURL" and is from the correct project.':e+='Make sure the "apiKey" and "databaseURL" properties provided to initializeApp() match the values provided for your app at https://console.firebase.google.com/.',cl(e)}}class El{constructor(e){this.accessToken=e}getToken(e){return Promise.resolve({accessToken:this.accessToken})}addTokenChangeListener(e){e(this.accessToken)}removeTokenChangeListener(e){}notifyForInvalidToken(){}}El.OWNER="owner";const kl=/(console\.firebase|firebase-console-\w+\.corp|firebase\.corp)\.google\.com/,Sl="websocket",Cl="long_polling";class Al{constructor(e,t,n,r,i=!1,s="",a=!1){this.secure=t,this.namespace=n,this.webSocketOnly=r,this.nodeAdmin=i,this.persistenceKey=s,this.includeNamespaceInQueryParams=a,this._host=e.toLowerCase(),this._domain=this._host.substr(this._host.indexOf(".")+1),this.internalHost=zc.get("host:"+e)||this._host}isCacheableHost(){return"s-"===this.internalHost.substr(0,2)}isCustomHost(){return"firebaseio.com"!==this._domain&&"firebaseio-demo.com"!==this._domain}get host(){return this._host}set host(e){e!==this.internalHost&&(this.internalHost=e,this.isCacheableHost()&&zc.set("host:"+this._host,this.internalHost))}toString(){let e=this.toURLString();return this.persistenceKey&&(e+="<"+this.persistenceKey+">"),e}toURLString(){var e=this.secure?"https://":"http://",t=this.includeNamespaceInQueryParams?`?ns=${this.namespace}`:"";return`${e}${this.host}/${t}`}}function Nl(e,t,n){f("string"==typeof t,"typeof type must == string"),f("object"==typeof n,"typeof params must == object");let r;if(t===Sl)r=(e.secure?"wss://":"ws://")+e.internalHost+"/.ws?";else{if(t!==Cl)throw new Error("Unknown connection type: "+t);r=(e.secure?"https://":"http://")+e.internalHost+"/.lp?"}((t=e).host!==t.internalHost||t.isCustomHost()||t.includeNamespaceInQueryParams)&&(n.ns=e.namespace);const i=[];return fl(n,(e,t)=>{i.push(e+"="+t)}),r+i.join("&")}class Rl{constructor(){this.counters_={}}incrementCounter(e,t=1){L(this.counters_,e)||(this.counters_[e]=0),this.counters_[e]+=t}get(){return c(void 0,this.counters_)}}const xl={},Dl={};function Pl(e){var t=e.toString();return xl[t]||(xl[t]=new Rl),xl[t]}class Ol{constructor(e){this.onMessage_=e,this.pendingResponses=[],this.currentResponseNum=0,this.closeAfterResponse=-1,this.onClose=null}closeAfter(e,t){this.closeAfterResponse=e,this.onClose=t,this.closeAfterResponse{this.onMessage_(n[e])});if(this.currentResponseNum===this.closeAfterResponse){this.onClose&&(this.onClose(),this.onClose=null);break}this.currentResponseNum++}}}class Ml{constructor(e,t,n,r,i,s,a){this.connId=e,this.repoInfo=t,this.applicationId=n,this.appCheckToken=r,this.authToken=i,this.transportSessionId=s,this.lastSessionId=a,this.bytesSent=0,this.bytesReceived=0,this.everConnected_=!1,this.log_=Zc(e),this.stats_=Pl(t),this.urlFn=e=>(this.appCheckToken&&(e.ac=this.appCheckToken),Nl(t,Cl,e))}open(e,t){this.curSegmentNum=0,this.onDisconnect_=t,this.myPacketOrderer=new Ol(e),this.isClosed_=!1,this.connectTimeoutTimer_=setTimeout(()=>{this.log_("Timed out trying to connect."),this.onClosed_(),this.connectTimeoutTimer_=null},Math.floor(3e4)),function(t){if("complete"===document.readyState)t();else{let e=!1;const n=function(){document.body?e||(e=!0,t()):setTimeout(n,Math.floor(10))};document.addEventListener?(document.addEventListener("DOMContentLoaded",n,!1),window.addEventListener("load",n,!1)):document.attachEvent&&(document.attachEvent("onreadystatechange",()=>{"complete"===document.readyState&&n()}),window.attachEvent("onload",n))}}(()=>{if(!this.isClosed_){this.scriptTagHolder=new Ll((...e)=>{var[t,n,r]=e;if(this.incrementIncomingBytes_(e),this.scriptTagHolder)if(this.connectTimeoutTimer_&&(clearTimeout(this.connectTimeoutTimer_),this.connectTimeoutTimer_=null),this.everConnected_=!0,"start"===t)this.id=n,this.password=r;else{if("close"!==t)throw new Error("Unrecognized command received: "+t);n?(this.scriptTagHolder.sendNewPolls=!1,this.myPacketOrderer.closeAfter(n,()=>{this.onClosed_()})):this.onClosed_()}},(...e)=>{var[t,n]=e;this.incrementIncomingBytes_(e),this.myPacketOrderer.handleResponse(t,n)},()=>{this.onClosed_()},this.urlFn);const t={start:"t"};t.ser=Math.floor(1e8*Math.random()),this.scriptTagHolder.uniqueCallbackIdentifier&&(t.cb=this.scriptTagHolder.uniqueCallbackIdentifier),t.v="5",this.transportSessionId&&(t.s=this.transportSessionId),this.lastSessionId&&(t.ls=this.lastSessionId),this.applicationId&&(t.p=this.applicationId),this.appCheckToken&&(t.ac=this.appCheckToken),"undefined"!=typeof location&&location.hostname&&kl.test(location.hostname)&&(t.r="f");var e=this.urlFn(t);this.log_("Connecting via long-poll to "+e),this.scriptTagHolder.addTag(e,()=>{})}})}start(){this.scriptTagHolder.startLongPoll(this.id,this.password),this.addDisconnectPingFrame(this.id,this.password)}static forceAllow(){Ml.forceAllow_=!0}static forceDisallow(){Ml.forceDisallow_=!0}static isAvailable(){return!!Ml.forceAllow_||!(Ml.forceDisallow_||"undefined"==typeof document||null==document.createElement||"object"==typeof window&&window.chrome&&window.chrome.extension&&!/^chrome/.test(window.location.href)||"object"==typeof Windows&&"object"==typeof Windows.UI)}markConnectionHealthy(){}shutdown_(){this.isClosed_=!0,this.scriptTagHolder&&(this.scriptTagHolder.close(),this.scriptTagHolder=null),this.myDisconnFrame&&(document.body.removeChild(this.myDisconnFrame),this.myDisconnFrame=null),this.connectTimeoutTimer_&&(clearTimeout(this.connectTimeoutTimer_),this.connectTimeoutTimer_=null)}onClosed_(){this.isClosed_||(this.log_("Longpoll is closing itself"),this.shutdown_(),this.onDisconnect_&&(this.onDisconnect_(this.everConnected_),this.onDisconnect_=null))}close(){this.isClosed_||(this.log_("Longpoll is being closed."),this.shutdown_())}send(e){var t=O(e);this.bytesSent+=t.length,this.stats_.incrementCounter("bytes_sent",t.length);var t=i(t),n=il(t,1840);for(let r=0;rdocument.domain="'+i+'";<\/script>');var i=""+e+"";try{this.myIFrame.doc.open(),this.myIFrame.doc.write(i),this.myIFrame.doc.close()}catch(e){al("frame writing exception"),e.stack&&al(e.stack),al(e)}}}static createIFrame_(){const t=document.createElement("iframe");if(t.style.display="none",!document.body)throw"Document body has not initialized. Wait to initialize Firebase until after the document is ready.";document.body.appendChild(t);try{t.contentWindow.document||al("No IE domain setting required")}catch(e){var n=document.domain;t.src="javascript:void((function(){document.open();document.domain='"+n+"';document.close();})())"}return t.contentDocument?t.doc=t.contentDocument:t.contentWindow?t.doc=t.contentWindow.document:t.document&&(t.doc=t.document),t}close(){this.alive=!1,this.myIFrame&&(this.myIFrame.doc.body.textContent="",setTimeout(()=>{null!==this.myIFrame&&(document.body.removeChild(this.myIFrame),this.myIFrame=null)},Math.floor(0)));const e=this.onDisconnect;e&&(this.onDisconnect=null,e())}startLongPoll(e,t){for(this.myID=e,this.myPW=t,this.alive=!0;this.newRequest_(););}newRequest_(){if(this.alive&&this.sendNewPolls&&this.outstandingRequests.size<(0{this.outstandingRequests.delete(t),this.newRequest_()},r=setTimeout(n,Math.floor(25e3));this.addTag(e,()=>{clearTimeout(r),n()})}addTag(e,n){setTimeout(()=>{try{if(!this.sendNewPolls)return;const t=this.myIFrame.doc.createElement("script");t.type="text/javascript",t.async=!0,t.src=e,t.onload=t.onreadystatechange=function(){var e=t.readyState;e&&"loaded"!==e&&"complete"!==e||(t.onload=t.onreadystatechange=null,t.parentNode&&t.parentNode.removeChild(t),n())},t.onerror=()=>{al("Long-poll script failed to load: "+e),this.sendNewPolls=!1,this.close()},this.myIFrame.doc.body.appendChild(t)}catch(e){}},Math.floor(1))}}let Fl=null;"undefined"!=typeof MozWebSocket?Fl=MozWebSocket:"undefined"!=typeof WebSocket&&(Fl=WebSocket);class Ul{constructor(e,t,n,r,i,s,a){this.connId=e,this.applicationId=n,this.appCheckToken=r,this.authToken=i,this.keepaliveTimer=null,this.frames=null,this.totalFrames=0,this.bytesSent=0,this.bytesReceived=0,this.log_=Zc(this.connId),this.stats_=Pl(t),this.connURL=Ul.connectionURL_(t,s,a,r,n),this.nodeAdmin=t.nodeAdmin}static connectionURL_(e,t,n,r,i){const s={v:"5"};return"undefined"!=typeof location&&location.hostname&&kl.test(location.hostname)&&(s.r="f"),t&&(s.s=t),n&&(s.ls=n),r&&(s.ac=r),i&&(s.p=i),Nl(e,Sl,s)}open(e,t){this.onDisconnect=t,this.onMessage=e,this.log_("Websocket connecting to "+this.connURL),this.everConnected_=!1,zc.set("previous_websocket_failure",!0);try{S(),this.mySock=new Fl(this.connURL,[],void 0)}catch(e){this.log_("Error instantiating WebSocket.");var n=e.message||e.data;return n&&this.log_(n),void this.onClosed_()}this.mySock.onopen=()=>{this.log_("Websocket connected."),this.everConnected_=!0},this.mySock.onclose=()=>{this.log_("Websocket connection was disconnected."),this.mySock=null,this.onClosed_()},this.mySock.onmessage=e=>{this.handleIncomingFrame(e)},this.mySock.onerror=e=>{this.log_("WebSocket error. Closing connection.");var t=e.message||e.data;t&&this.log_(t),this.onClosed_()}}start(){}static forceDisallow(){Ul.forceDisallow_=!0}static isAvailable(){let e=!1;var t;return"undefined"==typeof navigator||!navigator.userAgent||(t=navigator.userAgent.match(/Android ([0-9]{0,}\.[0-9]{0,})/))&&1{this.mySock&&this.sendString_("0"),this.resetKeepAlive()},Math.floor(45e3))}sendString_(e){try{this.mySock.send(e)}catch(e){this.log_("Exception thrown from WebSocket.send():",e.message||e.data,"Closing connection."),setTimeout(this.onClosed_.bind(this),0)}}}Ul.responsesRequiredToBeHealthy=2,Ul.healthyTimeout=3e4;class ql{constructor(e){this.initTransports_(e)}static get ALL_TRANSPORTS(){return[Ml,Ul]}static get IS_TRANSPORT_INITIALIZED(){return this.globalTransportInitialized_}initTransports_(e){var t=Ul&&Ul.isAvailable();let n=t&&!Ul.previouslyFailed();if(e.webSocketOnly&&(t||cl("wss:// URL used, but browser isn't known to support websockets. Trying anyway."),n=!0),n)this.transports_=[Ul];else{const r=this.transports_=[];for(const i of ql.ALL_TRANSPORTS)i&&i.isAvailable()&&r.push(i);ql.globalTransportInitialized_=!0}}initialTransport(){if(0{this.conn_&&this.conn_.open(t,n)},Math.floor(0));var r=e.healthyTimeout||0;0{this.healthyTimeout_=null,this.isHealthy_||(this.conn_&&102400{t===this.conn_?this.onConnectionLost_(e):t===this.secondaryConn_?(this.log_("Secondary connection lost."),this.onSecondaryConnectionLost_()):this.log_("closing an old connection")}}connReceiver_(t){return e=>{2!==this.state_&&(t===this.rx_?this.onPrimaryMessageReceived_(e):t===this.secondaryConn_?this.onSecondaryMessageReceived_(e):this.log_("message on old connection"))}}sendRequest(e){this.sendData_({t:"d",d:e})}tryCleanupConnection(){this.tx_===this.secondaryConn_&&this.rx_===this.secondaryConn_&&(this.log_("cleaning up and promoting a connection: "+this.secondaryConn_.connId),this.conn_=this.secondaryConn_,this.secondaryConn_=null)}onSecondaryControl_(e){var t;"t"in e&&("a"===(t=e.t)?this.upgradeIfSecondaryHealthy_():"r"===t?(this.log_("Got a reset on secondary, closing it"),this.secondaryConn_.close(),this.tx_!==this.secondaryConn_&&this.rx_!==this.secondaryConn_||this.close()):"o"===t&&(this.log_("got pong on secondary."),this.secondaryResponsesRequired_--,this.upgradeIfSecondaryHealthy_()))}onSecondaryMessageReceived_(e){var t=nl("t",e),n=nl("d",e);if("c"===t)this.onSecondaryControl_(n);else{if("d"!==t)throw new Error("Unknown protocol layer: "+t);this.pendingDataMessages.push(n)}}upgradeIfSecondaryHealthy_(){this.secondaryResponsesRequired_<=0?(this.log_("Secondary connection is healthy."),this.isHealthy_=!0,this.secondaryConn_.markConnectionHealthy(),this.proceedWithUpgrade_()):(this.log_("sending ping on secondary."),this.secondaryConn_.send({t:"c",d:{t:"p",d:{}}}))}proceedWithUpgrade_(){this.secondaryConn_.start(),this.log_("sending client ack on secondary"),this.secondaryConn_.send({t:"c",d:{t:"a",d:{}}}),this.log_("Ending transmission on primary"),this.conn_.send({t:"c",d:{t:"n",d:{}}}),this.tx_=this.secondaryConn_,this.tryCleanupConnection()}onPrimaryMessageReceived_(e){var t=nl("t",e),n=nl("d",e);"c"===t?this.onControl_(n):"d"===t&&this.onDataMessage_(n)}onDataMessage_(e){this.onPrimaryResponse_(),this.onMessage_(e)}onPrimaryResponse_(){this.isHealthy_||(this.primaryResponsesRequired_--,this.primaryResponsesRequired_<=0&&(this.log_("Primary connection is healthy."),this.isHealthy_=!0,this.conn_.markConnectionHealthy()))}onControl_(e){var t=nl("t",e);if("d"in e){var n=e.d;if("h"===t)this.onHandshake_(n);else if("n"===t){this.log_("recvd end transmission on primary"),this.rx_=this.secondaryConn_;for(let e=0;e{this.secondaryConn_&&(this.log_("Timed out trying to upgrade."),this.secondaryConn_.close())},Math.floor(6e4))}onReset_(e){this.log_("Reset packet received. New host: "+e),this.repoInfo_.host=e,1===this.state_?this.close():(this.closeConnections_(),this.start_())}onConnectionEstablished_(e,t){this.log_("Realtime connection established."),this.conn_=e,this.state_=1,this.onReady_&&(this.onReady_(t,this.sessionId),this.onReady_=null),0===this.primaryResponsesRequired_?(this.log_("Primary connection is healthy."),this.isHealthy_=!0):vl(()=>{this.sendPingOnPrimaryIfNecessary_()},Math.floor(5e3))}sendPingOnPrimaryIfNecessary_(){this.isHealthy_||1!==this.state_||(this.log_("sending ping on primary."),this.sendData_({t:"c",d:{t:"p",d:{}}}))}onSecondaryConnectionLost_(){var e=this.secondaryConn_;this.secondaryConn_=null,this.tx_!==e&&this.rx_!==e||this.close()}onConnectionLost_(e){this.conn_=null,e||0!==this.state_?1===this.state_&&this.log_("Realtime connection lost."):(this.log_("Realtime connection failed."),this.repoInfo_.isCacheableHost()&&(zc.remove("host:"+this.repoInfo_.host),this.repoInfo_.internalHost=this.repoInfo_.host)),this.close()}onConnectionShutdown_(e){this.log_("Connection shutdown command received. Shutting down..."),this.onKill_&&(this.onKill_(e),this.onKill_=null),this.onDisconnect_=null,this.close()}sendData_(e){if(1!==this.state_)throw"Connection is not connected";this.tx_.send(e)}close(){2!==this.state_&&(this.log_("Closing realtime connection."),this.state_=2,this.closeConnections_(),this.onDisconnect_&&(this.onDisconnect_(),this.onDisconnect_=null))}closeConnections_(){this.log_("Shutting down all connections"),this.conn_&&(this.conn_.close(),this.conn_=null),this.secondaryConn_&&(this.secondaryConn_.close(),this.secondaryConn_=null),this.healthyTimeout_&&(clearTimeout(this.healthyTimeout_),this.healthyTimeout_=null)}}class Bl{put(e,t,n,r){}merge(e,t,n,r){}refreshAuthToken(e){}refreshAppCheckToken(e){}onDisconnectPut(e,t,n){}onDisconnectMerge(e,t,n){}onDisconnectCancel(e,t){}reportStats(e){}}class jl{constructor(e){this.allowedEvents_=e,this.listeners_={},f(Array.isArray(e)&&0e===t),"Unknown event: "+t)}}class $l extends jl{constructor(){super(["online"]),this.online_=!0,"undefined"==typeof window||void 0===window.addEventListener||b()||(window.addEventListener("online",()=>{this.online_||(this.online_=!0,this.trigger("online",!0))},!1),window.addEventListener("offline",()=>{this.online_&&(this.online_=!1,this.trigger("online",!1))},!1))}static getInstance(){return new $l}getInitialEvent(e){return f("online"===e,"Unknown event type: "+e),[this.online_]}currentlyOnline(){return this.online_}}class Kl{constructor(n,e){if(void 0===e){this.pieces_=n.split("/");let e=0;for(let t=0;t=e.pieces_.length?null:e.pieces_[e.pieceNum_]}function Gl(e){return e.pieces_.length-e.pieceNum_}function Hl(e){let t=e.pieceNum_;return t=e.pieces_.length)return null;const t=[];for(let n=e.pieceNum_;n=e.pieces_.length}function eu(e,t){var n=zl(e),r=zl(t);if(null===n)return t;if(n===r)return eu(Hl(e),Hl(t));throw new Error("INTERNAL ERROR: innerPath ("+t+") is not within outerPath ("+e+")")}function tu(e,t){var n=Yl(e,0),r=Yl(t,0);for(let s=0;sGl(t))return!1;for(;n{var e=!document[t];e!==this.visible_&&(this.visible_=e,this.trigger("visible",e))},!1)}static getInstance(){return new ou}getInitialEvent(e){return f("visible"===e,"Unknown event type: "+e),[this.visible_]}}class cu extends Bl{constructor(e,t,n,r,i,s,a,o){if(super(),this.repoInfo_=e,this.applicationId_=t,this.onDataUpdate_=n,this.onConnectStatus_=r,this.onServerInfoUpdate_=i,this.authTokenProvider_=s,this.appCheckTokenProvider_=a,this.authOverride_=o,this.id=cu.nextPersistentConnectionId_++,this.log_=Zc("p:"+this.id+":"),this.interruptReasons_={},this.listens=new Map,this.outstandingPuts_=[],this.outstandingGets_=[],this.outstandingPutCount_=0,this.outstandingGetCount_=0,this.onDisconnectRequestQueue_=[],this.connected_=!1,this.reconnectDelay_=1e3,this.maxReconnectDelay_=3e5,this.securityDebugCallback_=null,this.lastSessionId=null,this.establishConnectionTimer_=null,this.visible_=!1,this.requestCBHash_={},this.requestNumber_=0,this.realtime_=null,this.authToken_=null,this.appCheckToken_=null,this.forceTokenRefresh_=!1,this.invalidAuthTokenCount_=0,this.invalidAppCheckTokenCount_=0,this.firstConnection_=!0,this.lastConnectionAttemptTime_=null,this.lastConnectionEstablishedTime_=null,o&&!S())throw new Error("Auth override specified in options, but not supported on non Node.js platforms");ou.getInstance().on("visible",this.onVisible_,this),-1===e.host.indexOf("fblocal")&&$l.getInstance().on("online",this.onOnline_,this)}sendRequest(e,t,n){var r=++this.requestNumber_,i={r:r,a:e,b:t};this.log_(O(i)),f(this.connected_,"sendRequest call when we're not connected not allowed."),this.realtime_.sendRequest(i),n&&(this.requestCBHash_[r]=n)}get(e){this.initConnection_();const n=new y;var t={p:e._path.toString(),q:e._queryObject};this.outstandingGets_.push({action:"g",request:t,onComplete:e=>{var t=e.d;"ok"===e.s?n.resolve(t):n.reject(t)}}),this.outstandingGetCount_++;t=this.outstandingGets_.length-1;return this.connected_&&this.sendGet_(t),n.promise}listen(e,t,n,r){this.initConnection_();var i=e._queryIdentifier,s=e._path.toString();this.log_("Listen called for "+s+" "+i),this.listens.has(s)||this.listens.set(s,new Map),f(e._queryParams.isDefault()||!e._queryParams.loadsAllData(),"listen() called for non-default but complete query"),f(!this.listens.get(s).has(i),"listen() called twice for same path/queryId.");var a={onComplete:r,hashFn:t,query:e,tag:n};this.listens.get(s).set(i,a),this.connected_&&this.sendListen_(a)}sendGet_(t){const n=this.outstandingGets_[t];this.sendRequest("g",n.request,e=>{delete this.outstandingGets_[t],this.outstandingGetCount_--,0===this.outstandingGetCount_&&(this.outstandingGets_=[]),n.onComplete&&n.onComplete(e)})}sendListen_(r){const i=r.query,s=i._path.toString(),a=i._queryIdentifier;this.log_("Listen on "+s+" for "+a);const e={p:s};r.tag&&(e.q=i._queryObject,e.t=r.tag),e.h=r.hashFn(),this.sendRequest("q",e,e=>{var t=e.d,n=e.s;cu.warnOnListenWarnings_(t,i),(this.listens.get(s)&&this.listens.get(s).get(a))===r&&(this.log_("listen response",e),"ok"!==n&&this.removeListen_(s,a),r.onComplete&&r.onComplete(n,t))})}static warnOnListenWarnings_(e,t){if(e&&"object"==typeof e&&L(e,"w")){const i=F(e,"w");var n,r;Array.isArray(i)&&~i.indexOf("no_index")&&(n='".indexOn": "'+t._queryParams.getIndex().toString()+'"',r=t._path.toString(),cl("Using an unspecified index. Your data will be downloaded and "+`filtered on the client. Consider adding ${n} at `+`${r} to your security rules for better performance.`))}}refreshAuthToken(e){this.authToken_=e,this.log_("Auth token refreshed"),this.authToken_?this.tryAuth():this.connected_&&this.sendRequest("unauth",{},()=>{}),this.reduceReconnectDelayIfAdminCredential_(e)}reduceReconnectDelayIfAdminCredential_(e){var t;(e&&40===e.length||(e=e,"object"==typeof(t=M(e).claims)&&!0===t.admin))&&(this.log_("Admin auth credential detected. Reducing max reconnect time."),this.maxReconnectDelay_=3e4)}refreshAppCheckToken(e){this.appCheckToken_=e,this.log_("App check token refreshed"),this.appCheckToken_?this.tryAppCheck():this.connected_&&this.sendRequest("unappeck",{},()=>{})}tryAuth(){if(this.connected_&&this.authToken_){const r=this.authToken_;var e=function(e){const t=M(e),n=t.claims;return!!n&&"object"==typeof n&&n.hasOwnProperty("iat")}(r)?"auth":"gauth";const t={cred:r};null===this.authOverride_?t.noauth=!0:"object"==typeof this.authOverride_&&(t.authvar=this.authOverride_),this.sendRequest(e,t,e=>{var t=e.s,n=e.d||"error";this.authToken_===r&&("ok"===t?this.invalidAuthTokenCount_=0:this.onAuthRevoked_(t,n))})}}tryAppCheck(){this.connected_&&this.appCheckToken_&&this.sendRequest("appcheck",{token:this.appCheckToken_},e=>{var t=e.s,n=e.d||"error";"ok"===t?this.invalidAppCheckTokenCount_=0:this.onAppCheckRevoked_(t,n)})}unlisten(e,t){var n=e._path.toString(),r=e._queryIdentifier;this.log_("Unlisten called for "+n+" "+r),f(e._queryParams.isDefault()||!e._queryParams.loadsAllData(),"unlisten() called for non-default but complete query"),this.removeListen_(n,r)&&this.connected_&&this.sendUnlisten_(n,r,e._queryObject,t)}sendUnlisten_(e,t,n,r){this.log_("Unlisten on "+e+" for "+t);const i={p:e};r&&(i.q=n,i.t=r),this.sendRequest("n",i)}onDisconnectPut(e,t,n){this.initConnection_(),this.connected_?this.sendOnDisconnect_("o",e,t,n):this.onDisconnectRequestQueue_.push({pathString:e,action:"o",data:t,onComplete:n})}onDisconnectMerge(e,t,n){this.initConnection_(),this.connected_?this.sendOnDisconnect_("om",e,t,n):this.onDisconnectRequestQueue_.push({pathString:e,action:"om",data:t,onComplete:n})}onDisconnectCancel(e,t){this.initConnection_(),this.connected_?this.sendOnDisconnect_("oc",e,null,t):this.onDisconnectRequestQueue_.push({pathString:e,action:"oc",data:null,onComplete:t})}sendOnDisconnect_(e,t,n,r){var i={p:t,d:n};this.log_("onDisconnect "+e,i),this.sendRequest(e,i,e=>{r&&setTimeout(()=>{r(e.s,e.d)},Math.floor(0))})}put(e,t,n,r){this.putInternal("p",e,t,n,r)}merge(e,t,n,r){this.putInternal("m",e,t,n,r)}putInternal(e,t,n,r,i){this.initConnection_();const s={p:t,d:n};void 0!==i&&(s.h=i),this.outstandingPuts_.push({action:e,request:s,onComplete:r}),this.outstandingPutCount_++;var a=this.outstandingPuts_.length-1;this.connected_?this.sendPut_(a):this.log_("Buffering put: "+t)}sendPut_(t){const n=this.outstandingPuts_[t].action;var e=this.outstandingPuts_[t].request;const r=this.outstandingPuts_[t].onComplete;this.outstandingPuts_[t].queued=this.connected_,this.sendRequest(n,e,e=>{this.log_(n+" response",e),delete this.outstandingPuts_[t],this.outstandingPutCount_--,0===this.outstandingPutCount_&&(this.outstandingPuts_=[]),r&&r(e.s,e.d)})}reportStats(e){var t;this.connected_&&(this.log_("reportStats",t={c:e}),this.sendRequest("s",t,e=>{var t;"ok"!==e.s&&(t=e.d,this.log_("reportStats","Error sending stats: "+t))}))}onDataMessage_(e){if("r"in e){this.log_("from server: "+O(e));var t=e.r;const n=this.requestCBHash_[t];n&&(delete this.requestCBHash_[t],n(e.b))}else{if("error"in e)throw"A server-side error has occurred: "+e.error;"a"in e&&this.onDataPush_(e.a,e.b)}}onDataPush_(e,t){this.log_("handleServerMessage",e,t),"d"===e?this.onDataUpdate_(t.p,t.d,!1,t.t):"m"===e?this.onDataUpdate_(t.p,t.d,!0,t.t):"c"===e?this.onListenRevoked_(t.p,t.q):"ac"===e?this.onAuthRevoked_(t.s,t.d):"apc"===e?this.onAppCheckRevoked_(t.s,t.d):"sd"===e?this.onSecurityDebugPacket_(t):el("Unrecognized action received from server: "+O(e)+"\nAre you using the latest client?")}onReady_(e,t){this.log_("connection ready"),this.connected_=!0,this.lastConnectionEstablishedTime_=(new Date).getTime(),this.handleTimestamp_(e),this.lastSessionId=t,this.firstConnection_&&this.sendConnectStats_(),this.restoreState_(),this.firstConnection_=!1,this.onConnectStatus_(!0)}scheduleConnect_(e){f(!this.realtime_,"Scheduling a connect when we're already connected/ing?"),this.establishConnectionTimer_&&clearTimeout(this.establishConnectionTimer_),this.establishConnectionTimer_=setTimeout(()=>{this.establishConnectionTimer_=null,this.establishConnection_()},Math.floor(e))}initConnection_(){!this.realtime_&&this.firstConnection_&&this.scheduleConnect_(0)}onVisible_(e){e&&!this.visible_&&this.reconnectDelay_===this.maxReconnectDelay_&&(this.log_("Window became visible. Reducing delay."),this.reconnectDelay_=1e3,this.realtime_||this.scheduleConnect_(0)),this.visible_=e}onOnline_(e){e?(this.log_("Browser went online."),this.reconnectDelay_=1e3,this.realtime_||this.scheduleConnect_(0)):(this.log_("Browser went offline. Killing connection."),this.realtime_&&this.realtime_.close())}onRealtimeDisconnect_(){var e;this.log_("data client disconnected"),this.connected_=!1,this.realtime_=null,this.cancelSentTransactions_(),this.requestCBHash_={},this.shouldReconnect_()&&(this.visible_?this.lastConnectionEstablishedTime_&&(3e4<(new Date).getTime()-this.lastConnectionEstablishedTime_&&(this.reconnectDelay_=1e3),this.lastConnectionEstablishedTime_=null):(this.log_("Window isn't visible. Delaying reconnect."),this.reconnectDelay_=this.maxReconnectDelay_,this.lastConnectionAttemptTime_=(new Date).getTime()),e=(new Date).getTime()-this.lastConnectionAttemptTime_,e=Math.max(0,this.reconnectDelay_-e),e=Math.random()*e,this.log_("Trying to reconnect in "+e+"ms"),this.scheduleConnect_(e),this.reconnectDelay_=Math.min(this.maxReconnectDelay_,1.3*this.reconnectDelay_)),this.onConnectStatus_(!1)}async establishConnection_(){if(this.shouldReconnect_()){this.log_("Making a connection attempt"),this.lastConnectionAttemptTime_=(new Date).getTime(),this.lastConnectionEstablishedTime_=null;var e=this.onDataMessage_.bind(this),r=this.onReady_.bind(this);const u=this.onRealtimeDisconnect_.bind(this);var i=this.id+":"+cu.nextConnectionId_++,s=this.lastSessionId;let t=!1,n=null;var a=function(){n?n.close():(t=!0,u())};this.realtime_={close:a,sendRequest:function(e){f(n,"sendRequest call when we're not connected not allowed."),n.sendRequest(e)}};var o=this.forceTokenRefresh_;this.forceTokenRefresh_=!1;try{var[c,l]=await Promise.all([this.authTokenProvider_.getToken(o),this.appCheckTokenProvider_.getToken(o)]);t?al("getToken() completed but was canceled"):(al("getToken() completed. Creating connection."),this.authToken_=c&&c.accessToken,this.appCheckToken_=l&&l.token,n=new Vl(i,this.repoInfo_,this.applicationId_,this.appCheckToken_,this.authToken_,e,r,u,e=>{cl(e+" ("+this.repoInfo_.toString()+")"),this.interrupt("server_kill")},s))}catch(e){this.log_("Failed to get token: "+e),t||(this.repoInfo_.nodeAdmin&&cl(e),a())}}}interrupt(e){al("Interrupting connection for reason: "+e),this.interruptReasons_[e]=!0,this.realtime_?this.realtime_.close():(this.establishConnectionTimer_&&(clearTimeout(this.establishConnectionTimer_),this.establishConnectionTimer_=null),this.connected_&&this.onRealtimeDisconnect_())}resume(e){al("Resuming connection for reason: "+e),delete this.interruptReasons_[e],U(this.interruptReasons_)&&(this.reconnectDelay_=1e3,this.realtime_||this.scheduleConnect_(0))}handleTimestamp_(e){var t=e-(new Date).getTime();this.onServerInfoUpdate_({serverTimeOffset:t})}cancelSentTransactions_(){for(let e=0;erl(e)).join("$"):"default";const r=this.removeListen_(e,n);r&&r.onComplete&&r.onComplete("permission_denied")}removeListen_(e,t){var n=new Kl(e).toString();let r;if(this.listens.has(n)){const i=this.listens.get(n);r=i.get(t),i.delete(t),0===i.size&&this.listens.delete(n)}else r=void 0;return r}onAuthRevoked_(e,t){al("Auth token revoked: "+e+"/"+t),this.authToken_=null,this.forceTokenRefresh_=!0,this.realtime_.close(),"invalid_token"!==e&&"permission_denied"!==e||(this.invalidAuthTokenCount_++,3<=this.invalidAuthTokenCount_&&(this.reconnectDelay_=3e4,this.authTokenProvider_.notifyForInvalidToken()))}onAppCheckRevoked_(e,t){al("App check token revoked: "+e+"/"+t),this.appCheckToken_=null,this.forceTokenRefresh_=!0,"invalid_token"!==e&&"permission_denied"!==e||(this.invalidAppCheckTokenCount_++,3<=this.invalidAppCheckTokenCount_&&this.appCheckTokenProvider_.notifyForInvalidToken())}onSecurityDebugPacket_(e){this.securityDebugCallback_?this.securityDebugCallback_(e):"msg"in e&&console.log("FIREBASE: "+e.msg.replace("\n","\nFIREBASE: "))}restoreState_(){this.tryAuth(),this.tryAppCheck();for(const t of this.listens.values())for(const n of t.values())this.sendListen_(n);for(let r=0;r{const n=F(this.indexSet_,e);if(f(n,"Missing index implementation for "+e),t===xu){if(n.isDefinedOn(a.node)){const i=[],s=o.getIterator(lu.Wrap);let e=s.getNext();for(;e;)e.name!==a.name&&i.push(e),e=s.getNext();return i.push(a),Nu(i,n.getCompare())}return xu}{var r=o.get(a.name);let e=t;return r&&(e=e.remove(new lu(a.name,r))),e.insert(a,a.node)}});return new Du(e,this.indexSet_)}removeFromIndexes(n,r){var e=q(this.indexes_,e=>{if(e===xu)return e;var t=r.get(n.name);return t?e.remove(new lu(n.name,t)):e});return new Du(e,this.indexSet_)}}let Pu;class Ou{constructor(e,t,n){this.children_=e,this.priorityNode_=t,this.indexMap_=n,this.lazyHash_=null,this.priorityNode_&&bu(this.priorityNode_),this.children_.isEmpty()&&f(!this.priorityNode_||this.priorityNode_.isEmpty(),"An empty node cannot have a priority")}static get EMPTY_NODE(){return Pu=Pu||new Ou(new mu(yu),null,Du.Default)}isLeafNode(){return!1}getPriority(){return this.priorityNode_||Pu}updatePriority(e){return this.children_.isEmpty()?this:new Ou(this.children_,e,this.indexMap_)}getImmediateChild(e){if(".priority"===e)return this.getPriority();var t=this.children_.get(e);return null===t?Pu:t}getChild(e){var t=zl(e);return null===t?this:this.getImmediateChild(t).getChild(Hl(e))}hasChild(e){return null!==this.children_.get(e)}updateImmediateChild(n,r){if(f(r,"We should always be passing snapshot nodes"),".priority"===n)return this.updatePriority(r);{var i=new lu(n,r);let e,t;t=r.isEmpty()?(e=this.children_.remove(n),this.indexMap_.removeFromIndexes(i,this.children_)):(e=this.children_.insert(n,r),this.indexMap_.addToIndexes(i,this.children_));i=e.isEmpty()?Pu:this.priorityNode_;return new Ou(e,i,t)}}updateChild(e,t){var n=zl(e);if(null===n)return t;f(".priority"!==zl(e)||1===Gl(e),".priority must be the last token in a path");var r=this.getImmediateChild(n).updateChild(Hl(e),t);return this.updateImmediateChild(n,r)}isEmpty(){return this.children_.isEmpty()}numChildren(){return this.children_.count()}val(n){if(this.isEmpty())return null;const r={};let i=0,s=0,a=!0;if(this.forEachChild(Su,(e,t)=>{r[e]=t.val(n),i++,a&&Ou.INTEGER_REGEXP_.test(e)?s=Math.max(s,Number(e)):a=!1}),!n&&a&&s<2*i){const e=[];for(const t in r)e[t]=r[t];return e}return n&&!this.getPriority().isEmpty()&&(r[".priority"]=this.getPriority().val()),r}hash(){if(null===this.lazyHash_){let r="";this.getPriority().isEmpty()||(r+="priority:"+wu(this.getPriority().val())+":"),this.forEachChild(Su,(e,t)=>{var n=t.hash();""!==n&&(r+=":"+e+":"+n)}),this.lazyHash_=""===r?"":Wc(r)}return this.lazyHash_}getPredecessorChildName(e,t,n){const r=this.resolveIndex_(n);if(r){var i=r.getPredecessorKey(new lu(e,t));return i?i.name:null}return this.children_.getPredecessorKey(e)}getFirstChildName(e){const t=this.resolveIndex_(e);if(t){var n=t.minKey();return n&&n.name}return this.children_.minKey()}getFirstChild(e){var t=this.getFirstChildName(e);return t?new lu(t,this.children_.get(t)):null}getLastChildName(e){const t=this.resolveIndex_(e);if(t){var n=t.maxKey();return n&&n.name}return this.children_.maxKey()}getLastChild(e){var t=this.getLastChildName(e);return t?new lu(t,this.children_.get(t)):null}forEachChild(e,t){const n=this.resolveIndex_(e);return n?n.inorderTraversal(e=>t(e.name,e.node)):this.children_.inorderTraversal(t)}getIterator(e){return this.getIteratorFrom(e.minPost(),e)}getIteratorFrom(t,n){const e=this.resolveIndex_(n);if(e)return e.getIteratorFrom(t,e=>e);{const r=this.children_.getIteratorFrom(t.name,lu.Wrap);let e=r.peek();for(;null!=e&&n.compare(e,t)<0;)r.getNext(),e=r.peek();return r}}getReverseIterator(e){return this.getReverseIteratorFrom(e.maxPost(),e)}getReverseIteratorFrom(t,n){const e=this.resolveIndex_(n);if(e)return e.getReverseIteratorFrom(t,e=>e);{const r=this.children_.getReverseIteratorFrom(t.name,lu.Wrap);let e=r.peek();for(;null!=e&&0{if(L(i,e)&&"."!==e.substring(0,1)){const n=Uu(t);!n.isLeafNode()&&n.isEmpty()||(r=r.updateImmediateChild(e,n))}}),r.updatePriority(Uu(e))}{const s=[];let r=!1;if(fl(i,(e,t)=>{if("."!==e.substring(0,1)){const n=Uu(t);n.isEmpty()||(r=r||!n.getPriority().isEmpty(),s.push(new lu(e,n)))}}),0===s.length)return Ou.EMPTY_NODE;var n=Nu(s,vu,e=>e.name,yu);if(r){t=Nu(s,Su.getCompare());return new Ou(n,Uu(e),new Du({".priority":t},{".priority":Su}))}return new Ou(n,Uu(e),Du.Default)}}Eu=Uu;class qu extends uu{constructor(e){super(),this.indexPath_=e,f(!Zl(e)&&".priority"!==zl(e),"Can't create PathIndex with empty path or .priority key")}extractChild(e){return e.getChild(this.indexPath_)}isDefinedOn(e){return!e.getChild(this.indexPath_).isEmpty()}compare(e,t){const n=this.extractChild(e.node);var r=this.extractChild(t.node),r=n.compareTo(r);return 0===r?pl(e.name,t.name):r}makePost(e,t){var n=Uu(e),n=Ou.EMPTY_NODE.updateChild(this.indexPath_,n);return new lu(t,n)}maxPost(){var e=Ou.EMPTY_NODE.updateChild(this.indexPath_,Lu);return new lu(dl,e)}toString(){return Yl(this.indexPath_,0).join("/")}}const Vu=new class extends uu{compare(e,t){var n=e.node.compareTo(t.node);return 0===n?pl(e.name,t.name):n}isDefinedOn(e){return!0}indexedValueChanged(e,t){return!e.equals(t)}minPost(){return lu.MIN}maxPost(){return lu.MAX}makePost(e,t){var n=Uu(e);return new lu(t,n)}toString(){return".value"}};function Bu(e){return{type:"value",snapshotNode:e}}function ju(e,t){return{type:"child_added",snapshotNode:t,childName:e}}function $u(e,t){return{type:"child_removed",snapshotNode:t,childName:e}}function Ku(e,t,n){return{type:"child_changed",snapshotNode:t,childName:e,oldSnap:n}}class Wu{constructor(e){this.index_=e}updateChild(e,t,n,r,i,s){f(e.isIndexed(this.index_),"A node must be indexed if only a child is updated");const a=e.getImmediateChild(t);return a.getChild(r).equals(n.getChild(r))&&a.isEmpty()===n.isEmpty()?e:(null!=s&&(n.isEmpty()?e.hasChild(t)?s.trackChildChange($u(t,a)):f(e.isLeafNode(),"A child remove without an old child only makes sense on a leaf node"):a.isEmpty()?s.trackChildChange(ju(t,n)):s.trackChildChange(Ku(t,n,a))),e.isLeafNode()&&n.isEmpty()?e:e.updateImmediateChild(t,n).withIndex(this.index_))}updateFullNode(r,n,i){return null!=i&&(r.isLeafNode()||r.forEachChild(Su,(e,t)=>{n.hasChild(e)||i.trackChildChange($u(e,t))}),n.isLeafNode()||n.forEachChild(Su,(e,t)=>{if(r.hasChild(e)){const n=r.getImmediateChild(e);n.equals(t)||i.trackChildChange(Ku(e,t,n))}else i.trackChildChange(ju(e,t))})),n.withIndex(this.index_)}updatePriority(e,t){return e.isEmpty()?Ou.EMPTY_NODE:e.updatePriority(t)}filtersNodes(){return!1}getIndexedFilter(){return this}getIndex(){return this.index_}}class zu{constructor(e){this.indexedFilter_=new Wu(e.getIndex()),this.index_=e.getIndex(),this.startPost_=zu.getStartPost_(e),this.endPost_=zu.getEndPost_(e),this.startIsInclusive_=!e.startAfterSet_,this.endIsInclusive_=!e.endBeforeSet_}getStartPost(){return this.startPost_}getEndPost(){return this.endPost_}matches(e){var t=this.startIsInclusive_?this.index_.compare(this.getStartPost(),e)<=0:this.index_.compare(this.getStartPost(),e)<0,n=this.endIsInclusive_?this.index_.compare(e,this.getEndPost())<=0:this.index_.compare(e,this.getEndPost())<0;return t&&n}updateChild(e,t,n,r,i,s){return this.matches(new lu(t,n))||(n=Ou.EMPTY_NODE),this.indexedFilter_.updateChild(e,t,n,r,i,s)}updateFullNode(e,t,n){let r=(t=t.isLeafNode()?Ou.EMPTY_NODE:t).withIndex(this.index_);r=r.updatePriority(Ou.EMPTY_NODE);const i=this;return t.forEachChild(Su,(e,t)=>{i.matches(new lu(e,t))||(r=r.updateImmediateChild(e,Ou.EMPTY_NODE))}),this.indexedFilter_.updateFullNode(e,r,n)}updatePriority(e,t){return e}filtersNodes(){return!0}getIndexedFilter(){return this.indexedFilter_}getIndex(){return this.index_}static getStartPost_(e){if(e.hasStart()){var t=e.getIndexStartName();return e.getIndex().makePost(e.getIndexStartValue(),t)}return e.getIndex().minPost()}static getEndPost_(e){if(e.hasEnd()){var t=e.getIndexEndName();return e.getIndex().makePost(e.getIndexEndValue(),t)}return e.getIndex().maxPost()}}class Gu{constructor(e){this.withinDirectionalStart=e=>this.reverse_?this.withinEndPost(e):this.withinStartPost(e),this.withinDirectionalEnd=e=>this.reverse_?this.withinStartPost(e):this.withinEndPost(e),this.withinStartPost=e=>{var t=this.index_.compare(this.rangedFilter_.getStartPost(),e);return this.startIsInclusive_?t<=0:t<0},this.withinEndPost=e=>{var t=this.index_.compare(e,this.rangedFilter_.getEndPost());return this.endIsInclusive_?t<=0:t<0},this.rangedFilter_=new zu(e),this.index_=e.getIndex(),this.limit_=e.getLimit(),this.reverse_=!e.isViewFromLeft(),this.startIsInclusive_=!e.startAfterSet_,this.endIsInclusive_=!e.endBeforeSet_}updateChild(e,t,n,r,i,s){return this.rangedFilter_.matches(new lu(t,n))||(n=Ou.EMPTY_NODE),e.getImmediateChild(t).equals(n)?e:e.numChildren()d(t,e)}else s=this.index_.getCompare();const a=e;f(a.numChildren()===this.limit_,"");var o=new lu(t,n),c=this.reverse_?a.getFirstChild(this.index_):a.getLastChild(this.index_),l=this.rangedFilter_.matches(o);if(a.hasChild(t)){var u=a.getImmediateChild(t);let e=r.getChildAfterChild(this.index_,c,this.reverse_);for(;null!=e&&(e.name===t||a.hasChild(e.name));)e=r.getChildAfterChild(this.index_,e,this.reverse_);var h=null==e?1:s(e,o);if(l&&!n.isEmpty()&&0<=h)return null!=i&&i.trackChildChange(Ku(t,n,u)),a.updateImmediateChild(t,n);{null!=i&&i.trackChildChange($u(t,u));const p=a.updateImmediateChild(t,Ou.EMPTY_NODE);return null!=e&&this.rangedFilter_.matches(e)?(null!=i&&i.trackChildChange(ju(e.name,e.node)),p.updateImmediateChild(e.name,e.node)):p}}return!n.isEmpty()&&l&&0<=s(c,o)?(null!=i&&(i.trackChildChange($u(c.name,c.node)),i.trackChildChange(ju(t,n))),a.updateImmediateChild(t,n).updateImmediateChild(c.name,Ou.EMPTY_NODE)):e}}class Hu{constructor(){this.limitSet_=!1,this.startSet_=!1,this.startNameSet_=!1,this.startAfterSet_=!1,this.endSet_=!1,this.endNameSet_=!1,this.endBeforeSet_=!1,this.limit_=0,this.viewFrom_="",this.indexStartValue_=null,this.indexStartName_="",this.indexEndValue_=null,this.indexEndName_="",this.index_=Su}hasStart(){return this.startSet_}isViewFromLeft(){return""===this.viewFrom_?this.startSet_:"l"===this.viewFrom_}getIndexStartValue(){return f(this.startSet_,"Only valid if start has been set"),this.indexStartValue_}getIndexStartName(){return f(this.startSet_,"Only valid if start has been set"),this.startNameSet_?this.indexStartName_:hl}hasEnd(){return this.endSet_}getIndexEndValue(){return f(this.endSet_,"Only valid if end has been set"),this.indexEndValue_}getIndexEndName(){return f(this.endSet_,"Only valid if end has been set"),this.endNameSet_?this.indexEndName_:dl}hasLimit(){return this.limitSet_}hasAnchoredLimit(){return this.limitSet_&&""!==this.viewFrom_}getLimit(){return f(this.limitSet_,"Only valid if limit has been set"),this.limit_}getIndex(){return this.index_}loadsAllData(){return!(this.startSet_||this.endSet_||this.limitSet_)}isDefault(){return this.loadsAllData()&&this.index_===Su}copy(){const e=new Hu;return e.limitSet_=this.limitSet_,e.limit_=this.limit_,e.startSet_=this.startSet_,e.startAfterSet_=this.startAfterSet_,e.indexStartValue_=this.indexStartValue_,e.startNameSet_=this.startNameSet_,e.indexStartName_=this.indexStartName_,e.endSet_=this.endSet_,e.endBeforeSet_=this.endBeforeSet_,e.indexEndValue_=this.indexEndValue_,e.endNameSet_=this.endNameSet_,e.indexEndName_=this.indexEndName_,e.index_=this.index_,e.viewFrom_=this.viewFrom_,e}}function Qu(e,t,n){const r=e.copy();return r.startSet_=!0,void 0===t&&(t=null),r.indexStartValue_=t,null!=n?(r.startNameSet_=!0,r.indexStartName_=n):(r.startNameSet_=!1,r.indexStartName_=""),r}function Yu(e,t,n){const r=e.copy();return r.endSet_=!0,void 0===t&&(t=null),r.indexEndValue_=t,void 0!==n?(r.endNameSet_=!0,r.indexEndName_=n):(r.endNameSet_=!1,r.indexEndName_=""),r}function Ju(e,t){const n=e.copy();return n.index_=t,n}function Xu(e){const t={};if(e.isDefault())return t;let n;var r;return n=e.index_===Su?"$priority":e.index_===Vu?"$value":e.index_===pu?"$key":(f(e.index_ instanceof qu,"Unrecognized index type!"),e.index_.toString()),t.orderBy=O(n),e.startSet_&&(r=e.startAfterSet_?"startAfter":"startAt",t[r]=O(e.indexStartValue_),e.startNameSet_&&(t[r]+=","+O(e.indexStartName_))),e.endSet_&&(r=e.endBeforeSet_?"endBefore":"endAt",t[r]=O(e.indexEndValue_),e.endNameSet_&&(t[r]+=","+O(e.indexEndName_))),e.limitSet_&&(e.isViewFromLeft()?t.limitToFirst=e.limit_:t.limitToLast=e.limit_),t}function Zu(t){const n={};if(t.startSet_&&(n.sp=t.indexStartValue_,t.startNameSet_&&(n.sn=t.indexStartName_),n.sin=!t.startAfterSet_),t.endSet_&&(n.ep=t.indexEndValue_,t.endNameSet_&&(n.en=t.indexEndName_),n.ein=!t.endBeforeSet_),t.limitSet_){n.l=t.limit_;let e=t.viewFrom_;""===e&&(e=t.isViewFromLeft()?"l":"r"),n.vf=e}return t.index_!==Su&&(n.i=t.index_.toString()),n}class eh extends Bl{constructor(e,t,n,r){super(),this.repoInfo_=e,this.onDataUpdate_=t,this.authTokenProvider_=n,this.appCheckTokenProvider_=r,this.log_=Zc("p:rest:"),this.listens_={}}reportStats(e){throw new Error("Method not implemented.")}static getListenId_(e,t){return void 0!==t?"tag$"+t:(f(e._queryParams.isDefault(),"should have a tag if it's not a default query."),e._path.toString())}listen(e,t,r,i){const s=e._path.toString();this.log_("Listen called for "+s+" "+e._queryIdentifier);const a=eh.getListenId_(e,r),o={};this.listens_[a]=o;var n=Xu(e._queryParams);this.restRequest_(s+".json",n,(t,e)=>{let n=e;if(null===(t=404===t?n=null:t)&&this.onDataUpdate_(s,n,!1,r),F(this.listens_,a)===o){let e;e=t?401===t?"permission_denied":"rest_error:"+t:"ok",i(e,null)}})}unlisten(e,t){var n=eh.getListenId_(e,t);delete this.listens_[n]}get(e){var t=Xu(e._queryParams);const r=e._path.toString(),i=new y;return this.restRequest_(r+".json",t,(e,t)=>{let n=t;null===(e=404===e?n=null:e)?(this.onDataUpdate_(r,n,!1,null),i.resolve(n)):i.reject(new Error(n))}),i.promise}refreshAuthToken(e){}restRequest_(i,s={},a){return s.format="export",Promise.all([this.authTokenProvider_.getToken(!1),this.appCheckTokenProvider_.getToken(!1)]).then(([e,t])=>{e&&e.accessToken&&(s.auth=e.accessToken),t&&t.token&&(s.ac=t.token);const n=(this.repoInfo_.secure?"https://":"http://")+this.repoInfo_.host+i+"?ns="+this.repoInfo_.namespace+j(s);this.log_("Sending REST request for "+n);const r=new XMLHttpRequest;r.onreadystatechange=()=>{if(a&&4===r.readyState){this.log_("REST Response for "+n+" received. status:",r.status,"response:",r.responseText);let e=null;if(200<=r.status&&r.status<300){try{e=P(r.responseText)}catch(e){cl("Failed to parse JSON response for "+n+": "+r.responseText)}a(null,e)}else 401!==r.status&&404!==r.status&&cl("Got unsuccessful REST response for "+n+" Status: "+r.status),a(r.status);a=null}},r.open("GET",n,!0),r.send()})}}class th{constructor(){this.rootNode_=Ou.EMPTY_NODE}getNode(e){return this.rootNode_.getChild(e)}updateSnapshot(e,t){this.rootNode_=this.rootNode_.updateChild(e,t)}}function nh(){return{value:null,children:new Map}}function rh(e,t,n){var r;Zl(t)?(e.value=n,e.children.clear()):null!==e.value?e.value=e.value.updateChild(t,n):(r=zl(t),e.children.has(r)||e.children.set(r,nh()),rh(e.children.get(r),t=Hl(t),n))}function ih(e,n,r){var i;null!==e.value?r(n,e.value):(i=(e,t)=>{ih(t,new Kl(n.toString()+"/"+e),r)},e.children.forEach((e,t)=>{i(t,e)}))}class sh{constructor(e){this.collection_=e,this.last_=null}get(){var e=this.collection_.get();const n=Object.assign({},e);return this.last_&&fl(this.last_,(e,t)=>{n[e]=n[e]-t}),this.last_=e,n}}class ah{constructor(e,t){this.server_=t,this.statsToReport_={},this.statsListener_=new sh(e);var n=1e4+2e4*Math.random();vl(this.reportStats_.bind(this),Math.floor(n))}reportStats_(){var e=this.statsListener_.get();const n={};let r=!1;fl(e,(e,t)=>{0{var t;"child_changed"===e.type&&n.index_.indexedValueChanged(e.oldSnap,e.snapshotNode)&&s.push((t=e.childName,{type:"child_moved",snapshotNode:e.snapshotNode,childName:t}))}),vh(n,i,"child_removed",e,r,t),vh(n,i,"child_added",e,r,t),vh(n,i,"child_moved",s,r,t),vh(n,i,"child_changed",e,r,t),vh(n,i,"value",e,r,t),i}function vh(s,a,t,e,o,c){const n=e.filter(e=>e.type===t);n.sort((e,t)=>function(e,t,n){if(null==t.childName||null==n.childName)throw u("Should only compare child_ events.");var r=new lu(t.childName,t.snapshotNode),i=new lu(n.childName,n.snapshotNode);return e.index_.compare(r,i)}(s,e,t)),n.forEach(t=>{const n=(e=s,i=c,"value"===(r=t).type||"child_removed"===r.type||(r.prevName=i.getPredecessorChildName(r.childName,r.snapshotNode,e.index_)),r);var e,r,i;o.forEach(e=>{e.respondsTo(t.type)&&a.push(e.createEvent(n,s.query_))})})}function yh(e,t){return{eventCache:e,serverCache:t}}function _h(e,t,n,r){return yh(new fh(t,n,r),e.serverCache)}function wh(e,t,n,r){return yh(e.eventCache,new fh(t,n,r))}function bh(e){return e.eventCache.isFullyInitialized()?e.eventCache.getNode():null}function Ih(e){return e.serverCache.isFullyInitialized()?e.serverCache.getNode():null}let Th;class Eh{constructor(e,t=(Th=Th||new mu(tl),Th)){this.value=e,this.children=t}static fromObject(e){let n=new Eh(null);return fl(e,(e,t)=>{n=n.set(new Kl(e),t)}),n}isEmpty(){return null===this.value&&this.children.isEmpty()}findRootMostMatchingPathAndValue(e,t){if(null!=this.value&&t(this.value))return{path:Wl(),value:this.value};if(Zl(e))return null;{var n=zl(e);const i=this.children.get(n);if(null===i)return null;var r=i.findRootMostMatchingPathAndValue(Hl(e),t);return null==r?null:{path:Xl(new Kl(n),r.path),value:r.value}}}findRootMostValueAndPath(e){return this.findRootMostMatchingPathAndValue(e,()=>!0)}subtree(e){if(Zl(e))return this;{var t=zl(e);const n=this.children.get(t);return null!==n?n.subtree(Hl(e)):new Eh(null)}}set(e,t){if(Zl(e))return new Eh(t,this.children);{var n=zl(e);const i=this.children.get(n)||new Eh(null);var r=i.set(Hl(e),t),r=this.children.insert(n,r);return new Eh(this.value,r)}}remove(t){if(Zl(t))return this.children.isEmpty()?new Eh(null):new Eh(null,this.children);{var n=zl(t);const r=this.children.get(n);if(r){const i=r.remove(Hl(t));let e;return e=i.isEmpty()?this.children.remove(n):this.children.insert(n,i),null===this.value&&e.isEmpty()?new Eh(null):new Eh(this.value,e)}return this}}get(e){if(Zl(e))return this.value;{var t=zl(e);const n=this.children.get(t);return n?n.get(Hl(e)):null}}setTree(t,n){if(Zl(t))return n;{var r=zl(t);const i=this.children.get(r)||new Eh(null),s=i.setTree(Hl(t),n);let e;return e=s.isEmpty()?this.children.remove(r):this.children.insert(r,s),new Eh(this.value,e)}}fold(e){return this.fold_(Wl(),e)}fold_(n,r){const i={};return this.children.inorderTraversal((e,t)=>{i[e]=t.fold_(Xl(n,e),r)}),r(n,this.value,i)}findOnPath(e,t){return this.findOnPath_(e,Wl(),t)}findOnPath_(e,t,n){var r=!!this.value&&n(t,this.value);if(r)return r;if(Zl(e))return null;{r=zl(e);const i=this.children.get(r);return i?i.findOnPath_(Hl(e),Xl(t,r),n):null}}foreachOnPath(e,t){return this.foreachOnPath_(e,Wl(),t)}foreachOnPath_(e,t,n){if(Zl(e))return this;{this.value&&n(t,this.value);var r=zl(e);const i=this.children.get(r);return i?i.foreachOnPath_(Hl(e),Xl(t,r),n):new Eh(null)}}foreach(e){this.foreach_(Wl(),e)}foreach_(n,r){this.children.inorderTraversal((e,t)=>{t.foreach_(Xl(n,e),r)}),this.value&&r(n,this.value)}foreachChild(n){this.children.inorderTraversal((e,t)=>{t.value&&n(e,t.value)})}}class kh{constructor(e){this.writeTree_=e}static empty(){return new kh(new Eh(null))}}function Sh(t,n,r){if(Zl(n))return new kh(new Eh(r));var i=t.writeTree_.findRootMostValueAndPath(n);if(null!=i){var s=i.path;let e=i.value;i=eu(s,n);return e=e.updateChild(i,r),new kh(t.writeTree_.set(s,e))}s=new Eh(r),s=t.writeTree_.setTree(n,s);return new kh(s)}function Ch(e,n,t){let r=e;return fl(t,(e,t)=>{r=Sh(r,Xl(n,e),t)}),r}function Ah(e,t){if(Zl(t))return kh.empty();var n=e.writeTree_.setTree(t,new Eh(null));return new kh(n)}function Nh(e,t){return null!=Rh(e,t)}function Rh(e,t){var n=e.writeTree_.findRootMostValueAndPath(t);return null!=n?e.writeTree_.get(n.path).getChild(eu(n.path,t)):null}function xh(e){const n=[],t=e.writeTree_.value;return null!=t?t.isLeafNode()||t.forEachChild(Su,(e,t)=>{n.push(new lu(e,t))}):e.writeTree_.children.inorderTraversal((e,t)=>{null!=t.value&&n.push(new lu(e,t.value))}),n}function Dh(e,t){if(Zl(t))return e;var n=Rh(e,t);return null!=n?new kh(new Eh(n)):new kh(e.writeTree_.subtree(t))}function Ph(e){return e.writeTree_.isEmpty()}function Oh(e,t){return function r(i,e,s){{if(null!=e.value)return s.updateChild(i,e.value);{let n=null;return e.children.inorderTraversal((e,t)=>{".priority"===e?(f(null!==t.value,"Priority writes must always be leaf nodes"),n=t.value):s=r(Xl(i,e),t,s)}),s=!s.getChild(i).isEmpty()&&null!==n?s.updateChild(Xl(i,".priority"),n):s}}}(Wl(),e.writeTree_,t)}function Mh(e,t){return Gh(t,e)}function Lh(t,n){var e,r=t.allWrites.findIndex(e=>e.writeId===n);f(0<=r,"removeWrite called with nonexistent writeId.");const i=t.allWrites[r];t.allWrites.splice(r,1);let s=i.visible,a=!1,o=t.allWrites.length-1;for(;s&&0<=o;){var c=t.allWrites[o];c.visible&&(o>=r&&function(e,t){{if(e.snap)return ru(e.path,t);for(const n in e.children)if(e.children.hasOwnProperty(n)&&ru(Xl(e.path,n),t))return!0;return!1}}(c,i.path)?s=!1:ru(i.path,c.path)&&(a=!0)),o--}return!!s&&(a?((e=t).visibleWrites=Uh(e.allWrites,Fh,Wl()),0{t.visibleWrites=Ah(t.visibleWrites,Xl(i.path,e))}),!0)}function Fh(e){return e.visible}function Uh(e,t,n){let r=kh.empty();for(let s=0;s{r=r.updateImmediateChild(e,t)}),r;if(n){const s=Dh(e.visibleWrites,t);return n.forEachChild(Su,(e,t)=>{var n=Oh(Dh(s,new Kl(e)),t);r=r.updateImmediateChild(e,n)}),xh(s).forEach(e=>{r=r.updateImmediateChild(e.name,e.node)}),r}return xh(Dh(e.visibleWrites,t)).forEach(e=>{r=r.updateImmediateChild(e.name,e.node)}),r}(e.writeTree,e.treePath,t)}function jh(e,t,n,r){return function(e,t,n,r,i){f(r||i,"Either existingEventSnap or existingServerSnap must exist");var s=Xl(t,n);return Nh(e.visibleWrites,s)?null:Ph(s=Dh(e.visibleWrites,s))?i.getChild(n):Oh(s,i.getChild(n))}(e.writeTree,e.treePath,t,n,r)}function $h(e,t){return n=e.writeTree,t=Xl(e.treePath,t),Rh(n.visibleWrites,t);var n}function Kh(e,t,n,r,i,s){return function(e,t,n,r,i,s,a){let o;var c=Dh(e.visibleWrites,t),l=Rh(c,Wl());if(null!=l)o=l;else{if(null==n)return[];o=Oh(c,n)}if(o=o.withIndex(a),o.isEmpty()||o.isLeafNode())return[];{const u=[],h=a.getCompare(),d=s?o.getReverseIteratorFrom(r,a):o.getIteratorFrom(r,a);let e=d.getNext();for(;e&&u.length{var n=Xl(s,e);td(i,zl(n))&&(l=ed(r,l,n,t,a,o,c))}),e.foreach((e,t)=>{var n=Xl(s,e);td(i,zl(n))||(l=ed(r,l,n,t,a,o,c))}),l}(e,t,c.path,c.children,r,i,s):(f(c.source.fromServer,"Unknown source."),o=c.source.tagged||t.serverCache.isFiltered(),rd(e,t,c.path,c.children,r,i,o,s))}else if(n.type===Vc.ACK_USER_WRITE){var l=n;a=l.revert?function(n,r,i,s,e,a){let o;{if(null!=$h(s,i))return r;{var c=new Yh(s,r,e);const u=r.eventCache.getNode();let t;if(Zl(i)||".priority"===zl(i)){let e;e=r.serverCache.isFullyInitialized()?Vh(s,Ih(r)):(l=r.serverCache.getNode(),f(l instanceof Ou,"serverChildren would be complete if leaf node"),Bh(s,l)),e=e,t=n.filter.updateFullNode(u,e,a)}else{var l=zl(i);let e=Wh(s,l,r.serverCache);null==e&&r.serverCache.isCompleteForChild(l)&&(e=u.getImmediateChild(l)),t=null!=e?n.filter.updateChild(u,l,e,Hl(i),c,a):r.eventCache.getNode().hasChild(l)?n.filter.updateChild(u,l,Ou.EMPTY_NODE,Hl(i),c,a):u,t.isEmpty()&&r.serverCache.isFullyInitialized()&&(o=Vh(s,Ih(r)),o.isLeafNode()&&(t=n.filter.updateFullNode(t,o,a)))}return o=r.serverCache.isFullyInitialized()||null!=$h(s,Wl()),_h(r,t,o,n.filter.filtersNodes())}}}(e,t,l.path,r,i,s):function(e,t,i,n,s,a,o){if(null!=$h(s,i))return t;const c=t.serverCache.isFiltered(),l=t.serverCache;{if(null!=n.value){if(Zl(i)&&l.isFullyInitialized()||l.isCompleteForPath(i))return Zh(e,t,i,l.getNode().getChild(i),s,a,c,o);if(Zl(i)){let n=new Eh(null);return l.getNode().forEachChild(pu,(e,t)=>{n=n.set(new Kl(e),t)}),rd(e,t,i,n,s,a,c,o)}return t}{let r=new Eh(null);return n.foreach((e,t)=>{var n=Xl(i,e);l.isCompleteForPath(n)&&(r=r.set(e,l.getNode().getChild(n)))}),rd(e,t,i,r,s,a,c,o)}}}(e,t,l.path,l.affectedTree,r,i,s)}else{if(n.type!==Vc.LISTEN_COMPLETE)throw u("Unknown operation type: "+n.type);a=function(e,t,n,r,i){const s=t.serverCache,a=wh(t,s.getNode(),s.isFullyInitialized()||Zl(n),s.isFiltered());return Xh(e,a,n,r,Qh,i)}(e,t,n.path,r,s)}l=s.getChanges();return function(e,t,n){const r=t.eventCache;if(r.isFullyInitialized()){var i=r.getNode().isLeafNode()||r.getNode().isEmpty();const s=bh(e);(0{n=n.updateChild(e,t)}),n}function rd(r,i,e,t,s,a,o,c){if(i.serverCache.getNode().isEmpty()&&!i.serverCache.isFullyInitialized())return i;let l=i,n;n=Zl(e)?t:new Eh(null).setTree(e,t);const u=i.serverCache.getNode();return n.children.inorderTraversal((e,t)=>{var n;u.hasChild(e)&&(n=nd(0,i.serverCache.getNode().getImmediateChild(e),t),l=Zh(r,l,new Kl(e),n,s,a,o,c))}),n.children.inorderTraversal((e,t)=>{var n=!i.serverCache.isCompleteForChild(e)&&null===t.value;u.hasChild(e)||n||(n=nd(0,i.serverCache.getNode().getImmediateChild(e),t),l=Zh(r,l,new Kl(e),n,s,a,o,c))}),l}class id{constructor(e,t){this.query_=e,this.eventRegistrations_=[];const n=this.query_._queryParams,r=new Wu(n.getIndex()),i=(e=n).loadsAllData()?new Wu(e.getIndex()):new(e.hasLimit()?Gu:zu)(e);this.processor_={filter:i};const s=t.serverCache,a=t.eventCache;var o=r.updateFullNode(Ou.EMPTY_NODE,s.getNode(),null),c=i.updateFullNode(Ou.EMPTY_NODE,a.getNode(),null),o=new fh(o,s.isFullyInitialized(),r.filtersNodes()),c=new fh(c,a.isFullyInitialized(),i.filtersNodes());this.viewCache_=yh(c,o),this.eventGenerator_=new gh(this.query_)}get query(){return this.query_}}function sd(e){return 0===e.eventRegistrations_.length}function ad(n,r,i){const s=[];if(i){f(null==r,"A cancel should cancel all event registrations.");const a=n.query._path;n.eventRegistrations_.forEach(e=>{var t=e.createCancelEvent(i,a);t&&s.push(t)})}if(r){let e=[];for(let t=0;t{r.push(ju(e,t))})}return n.isFullyInitialized()&&r.push(Bu(n.getNode())),cd(e,r,n.getNode(),t)}(a,n)}function fd(e,t,n,r){var i=t._queryIdentifier;const s=[];let a=[];var o=_d(e);if("default"===i)for(var[c,l]of e.views.entries())a=a.concat(ad(l,n,r)),sd(l)&&(e.views.delete(c),l.query._queryParams.loadsAllData()||s.push(l.query));else{const u=e.views.get(i);u&&(a=a.concat(ad(u,n,r)),sd(u)&&(e.views.delete(i),u.query._queryParams.loadsAllData()||s.push(u.query)))}return o&&!_d(e)&&s.push((f(ld,"Reference.ts has not been loaded"),new ld(t._repo,t._path))),{removed:s,events:a}}function gd(e){const t=[];for(const n of e.views.values())n.query._queryParams.loadsAllData()||t.push(n);return t}function md(e,t){let n=null;for(const r of e.views.values())n=n||function(e,t){const n=Ih(e.viewCache_);return n&&(e.query._queryParams.loadsAllData()||!Zl(t)&&!n.getImmediateChild(zl(t)).isEmpty())?n.getChild(t):null}(r,t);return n}function vd(e,t){const n=t._queryParams;if(n.loadsAllData())return wd(e);var r=t._queryIdentifier;return e.views.get(r)}function yd(e,t){return null!=vd(e,t)}function _d(e){return null!=wd(e)}function wd(e){for(const t of e.views.values())if(t.query._queryParams.loadsAllData())return t;return null}let bd;let Id=1;class Td{constructor(e){this.listenProvider_=e,this.syncPointTree_=new Eh(null),this.pendingWriteTree_={visibleWrites:kh.empty(),allWrites:[],lastWriteId:-1},this.tagToQueryMap=new Map,this.queryToTagMap=new Map}}function Ed(e,t,n,r,i){var s,a,o,c;return s=e.pendingWriteTree_,a=t,o=n,c=r,r=i,f(c>s.lastWriteId,"Stacking an older write on top of newer ones"),s.allWrites.push({path:a,snap:o,writeId:c,visible:r=void 0===r?!0:r}),r&&(s.visibleWrites=Sh(s.visibleWrites,a,o)),s.lastWriteId=c,i?Pd(e,new dh(oh(),t,n)):[]}function kd(e,t,n,r){var i,s,a;i=e.pendingWriteTree_,s=t,a=n,r=r,f(r>i.lastWriteId,"Stacking an older merge on top of newer ones"),i.allWrites.push({path:s,children:a,writeId:r,visible:!0}),i.visibleWrites=Ch(i.visibleWrites,s,a),i.lastWriteId=r;var o=Eh.fromObject(n);return Pd(e,new ph(oh(),t,o))}function Sd(e,t,n=!1){var r=function(e,t){for(let r=0;r{t=t.set(new Kl(e),!0)}),Pd(e,new uh(r.path,t,n))}return[]}function Cd(e,t,n){return Pd(e,new dh(ch(),t,n))}function Ad(n,e,t,r,i=!1){var s=e._path,a=n.syncPointTree_.get(s);let o=[];if(a&&("default"===e._queryIdentifier||yd(a,e))){var c=fd(a,e,t,r);0===a.views.size&&(n.syncPointTree_=n.syncPointTree_.remove(s));const d=c.removed;if(o=c.events,!i){a=-1!==d.findIndex(e=>e._queryParams.loadsAllData()),c=n.syncPointTree_.findOnPath(s,(e,t)=>_d(t));if(a&&!c){const p=n.syncPointTree_.subtree(s);if(!p.isEmpty()){var l=p.fold((e,t,r)=>{if(t&&_d(t))return[wd(t)];{let n=[];return t&&(n=gd(t)),fl(r,(e,t)=>{n=n.concat(t)}),n}});for(let e=0;e{var t=n.queryToTagMap.get(Fd(e));n.listenProvider_.stopListening(Bd(e),t)}))}!function(e,t){for(let i=0;i{var n=eu(e,i);s=s||md(t,n),a=a||_d(t)});let o=e.syncPointTree_.get(i);o?(a=a||_d(o),s=s||md(o,Wl())):(o=new ud,e.syncPointTree_=e.syncPointTree_.set(i,o));let c;if(null!=s)c=!0;else{c=!1,s=Ou.EMPTY_NODE;const p=e.syncPointTree_.subtree(i);p.foreachChild((e,t)=>{var n=md(t,Wl());n&&(s=s.updateImmediateChild(e,n))})}var l,u=yd(o,t);u||t._queryParams.loadsAllData()||(h=Fd(t),f(!e.queryToTagMap.has(h),"View does not exist, but we have a tag"),l=Id++,e.queryToTagMap.set(h,l),e.tagToQueryMap.set(l,h));var h=Mh(e.pendingWriteTree_,i);let d=pd(o,t,n,h,s,c);return u||a||r||(u=vd(o,t),d=d.concat(function(t,e,n){const r=e._path,i=Ld(t,e),s=Md(t,n),a=t.listenProvider_.startListening(Bd(e),i,s.hashFn,s.onComplete),o=t.syncPointTree_.subtree(r);if(i)f(!_d(o.value),"If we're adding a query, it shouldn't be shadowed");else{var c=o.fold((e,t,r)=>{if(!Zl(e)&&t&&_d(t))return[wd(t).query];{let n=[];return t&&(n=n.concat(gd(t).map(e=>e.query))),fl(r,(e,t)=>{n=n.concat(t)}),n}});for(let e=0;e{var n=md(t,eu(e,r));if(n)return n});return qh(n,r,i,t,!0)}function Dd(e,t){const r=t._path;let i=null;e.syncPointTree_.foreachOnPath(r,(e,t)=>{var n=eu(e,r);i=i||md(t,n)});let n=e.syncPointTree_.get(r);n?i=i||md(n,Wl()):(n=new ud,e.syncPointTree_=e.syncPointTree_.set(r,n));var s=null!=i;const a=s?new fh(i,!0,!1):null;var o=Mh(e.pendingWriteTree_,t._path);return bh(dd(n,t,o,s?a.getNode():Ou.EMPTY_NODE,s).viewCache_)}function Pd(e,t){return function t(n,r,i,s){{if(Zl(n.path))return Od(n,r,i,s);{const a=r.get(Wl());null==i&&null!=a&&(i=md(a,Wl()));let e=[];const o=zl(n.path),c=n.operationForChild(o),l=r.children.get(o);if(l&&c){const u=i?i.getImmediateChild(o):null,h=zh(s,o);e=e.concat(t(c,l,u,h))}return a&&(e=e.concat(hd(a,n,s,i))),e}}}(t,e.syncPointTree_,null,Mh(e.pendingWriteTree_,Wl()))}function Od(s,e,a,o){var t=e.get(Wl());null==a&&null!=t&&(a=md(t,Wl()));let c=[];return e.children.inorderTraversal((e,t)=>{var n=a?a.getImmediateChild(e):null,r=zh(o,e),i=s.operationForChild(e);i&&(c=c.concat(Od(i,t,n,r)))}),t&&(c=c.concat(hd(t,s,o,a))),c}function Md(i,t){const s=t.query,a=Ld(i,s);return{hashFn:()=>{const e=t.viewCache_.serverCache.getNode()||Ou.EMPTY_NODE;return e.hash()},onComplete:e=>{if("ok"===e)return a?function(e,t,n){if(s=Ud(e,n)){var r=qd(s),i=r.path,s=r.queryId,r=eu(i,t);return Vd(e,i,new hh(lh(s),r))}return[]}(i,s._path,a):(t=i,n=s._path,Pd(t,new hh(ch(),n)));var t,n,r=function(e,t){let n="Unknown Error";"too_big"===e?n="The data requested exceeds the maximum size that can be accessed with a single request.":"permission_denied"===e?n="Client doesn't have permission to access the desired data.":"unavailable"===e&&(n="The service is unavailable");const r=new Error(e+" at "+t._path.toString()+": "+n);return r.code=e.toUpperCase(),r}(e,s);return Ad(i,s,null,r)}}}function Ld(e,t){var n=Fd(t);return e.queryToTagMap.get(n)}function Fd(e){return e._path.toString()+"$"+e._queryIdentifier}function Ud(e,t){return e.tagToQueryMap.get(t)}function qd(e){var t=e.indexOf("$");return f(-1!==t&&t{var n=Yd(t,r.getImmediateChild(e),i);n!==t&&(s=s.updateImmediateChild(e,n))}),s}}class Jd{constructor(e="",t=null,n={children:{},childCount:0}){this.name=e,this.parent=t,this.node=n}}function Xd(e,t){let n=t instanceof Kl?t:new Kl(t),r=e,i=zl(n);for(;null!==i;){var s=F(r.node.children,i)||{children:{},childCount:0};r=new Jd(i,r,s),n=Hl(n),i=zl(n)}return r}function Zd(e){return e.node.value}function ep(e,t){e.node.value=t,ip(e)}function tp(e){return 0{r(new Jd(e,n,t))})}function rp(e){return new Kl(null===e.parent?e.name:rp(e.parent)+"/"+e.name)}function ip(e){var t,n,r,i;null!==e.parent&&(t=e.parent,n=e.name,r=function(e){return void 0===Zd(e)&&!tp(e)}(e=e),i=L(t.node.children,n),r&&i?(delete t.node.children[n],t.node.childCount--,ip(t)):r||i||(t.node.children[n]=e.node,t.node.childCount++,ip(t)))}function sp(e,t,n,r){r&&void 0===t||yp(Y(e,"value"),t,n)}function ap(e,t,r,n){if(!n||void 0!==t){const i=Y(e,"values");if(!t||"object"!=typeof t||Array.isArray(t))throw new Error(i+" must be an object containing the children to replace.");const s=[];fl(t,(e,t)=>{const n=new Kl(e);if(yp(i,t,Xl(r,n)),".priority"===Ql(n)&&!vp(t))throw new Error(i+"contains an invalid value for '"+n.toString()+"', which must be a valid Firebase priority (a string, finite number, server value, or null).");s.push(n)}),function(t,n){let r,i;for(r=0;rpp/3&&ee(e)>pp)throw new Error(a+"contains a string greater than "+pp+" utf8 bytes "+au(o)+" ('"+e.substring(0,50)+"...')");if(e&&"object"==typeof e){let i=!1,s=!1;if(fl(e,(e,t)=>{if(".value"===e)i=!0;else if(".priority"!==e&&".sv"!==e&&(s=!0,!fp(e)))throw new Error(a+" contains an invalid key ("+e+") "+au(o)+'. Keys must be non-empty strings and can\'t contain ".", "#", "$", "/", "[", or "]"');var n,r;n=o,e=e,0nu(e,t))}function Ep(e,t,n){Ip(e,n),kp(e,e=>ru(e,t)||ru(t,e))}function kp(e,t){e.recursionDepth_++;let n=!0;for(let i=0;i{Dp(a,e,t,n,r)},a.authTokenProvider_,a.appCheckProvider_),setTimeout(()=>Pp(a,!0),0);else{if(null!=t){if("object"!=typeof t)throw new Error("Only objects are supported for option databaseAuthVariableOverride");try{O(t)}catch(e){throw new Error("Invalid authOverride provided: "+e)}}a.persistentConnection_=new cu(a.repoInfo_,e,(e,t,n,r)=>{Dp(a,e,t,n,r)},e=>{Pp(a,e)},e=>{var n;n=a,fl(e,(e,t)=>{Op(n,e,t)})},a.authTokenProvider_,a.appCheckProvider_,t),a.server_=a.persistentConnection_}var n;a.authTokenProvider_.addTokenChangeListener(e=>{a.server_.refreshAuthToken(e)}),a.appCheckProvider_.addTokenChangeListener(e=>{a.server_.refreshAppCheckToken(e.token)}),a.statsReporter_=(e=a.repoInfo_,t=()=>new ah(a.stats_,a.server_),n=e.toString(),Dl[n]||(Dl[n]=t()),Dl[n]),a.infoData_=new th,a.infoSyncTree_=new Td({startListening:(e,t,n,r)=>{let i=[];const s=a.infoData_.getNode(e._path);return s.isEmpty()||(i=Cd(a.infoSyncTree_,e._path,s),setTimeout(()=>{r("ok")},0)),i},stopListening:()=>{}}),Op(a,"connected",!1),a.serverSyncTree_=new Td({startListening:(r,e,t,i)=>(a.server_.listen(r,t,e,(e,t)=>{var n=i(e,t);Ep(a.eventQueue_,r._path,n)}),[]),stopListening:(e,t)=>{a.server_.unlisten(e,t)}})}function Rp(e){const t=e.infoData_.getNode(new Kl(".info/serverTimeOffset"));var n=t.val()||0;return(new Date).getTime()+n}function xp(e){return Kd({timestamp:Rp(e)})}function Dp(e,t,n,r,i){e.dataUpdateCount++;var s,a,o=new Kl(t);n=e.interceptServerDataCallback_?e.interceptServerDataCallback_(t,n):n;let c=[];c=i?r?(s=q(n,e=>Uu(e)),function(e,t,n,r){if(o=Ud(e,r)){var i=qd(o),s=i.path,a=i.queryId,o=eu(s,t),i=Eh.fromObject(n);return Vd(e,s,new ph(lh(a),o,i))}return[]}(e.serverSyncTree_,o,s,i)):(s=Uu(n),Nd(e.serverSyncTree_,o,s,i)):r?(a=q(n,e=>Uu(e)),t=e.serverSyncTree_,i=o,r=a,a=Eh.fromObject(r),Pd(t,new ph(ch(),i,a))):(a=Uu(n),Cd(e.serverSyncTree_,o,a));let l=o;0{var n=Hd(e,t,r.serverSyncTree_,i);rh(s,e,n)});let a=[];ih(s,Wl(),(e,t)=>{a=a.concat(Cd(r.serverSyncTree_,e,t));var n=Qp(r,e);Wp(r,n)}),r.onDisconnect_=nh(),Ep(r.eventQueue_,Wl(),a)}(e)}function Op(e,t,n){var r=new Kl("/.info/"+t),i=Uu(n);e.infoData_.updateSnapshot(r,i);i=Cd(e.infoSyncTree_,r,i);Ep(e.eventQueue_,r,i)}function Mp(e){return e.nextWriteId_++}function Lp(r,i,e,t,s){Bp(r,"set",{path:i.toString(),value:e,priority:t});var n=xp(r);const a=Uu(e,t);var o=xd(r.serverSyncTree_,i),n=Qd(a,o,n);const c=Mp(r);n=Ed(r.serverSyncTree_,i,n,c,!0);Ip(r.eventQueue_,n),r.server_.put(i.toString(),a.val(!0),(e,t)=>{var n="ok"===e;n||cl("set at "+i+" failed: "+e);n=Sd(r.serverSyncTree_,c,!n);Ep(r.eventQueue_,i,n),jp(0,s,e,t)});n=Qp(r,i);Wp(r,n),Ep(r.eventQueue_,n,[])}function Fp(n,r,i){n.server_.onDisconnectCancel(r.toString(),(e,t)=>{"ok"===e&&!function e(n,t){if(Zl(t))return n.value=null,n.children.clear(),!0;if(null!==n.value){if(n.value.isLeafNode())return!1;{const i=n.value;return n.value=null,i.forEachChild(Su,(e,t)=>{rh(n,new Kl(e),t)}),e(n,t)}}if(0{"ok"===e&&rh(n.onDisconnect_,r,s),jp(0,i,e,t)})}function qp(e,t,n){let r;r=".info"===zl(t._path)?Ad(e.infoSyncTree_,t,n):Ad(e.serverSyncTree_,t,n),Tp(e.eventQueue_,t._path,r)}function Vp(e){e.persistentConnection_&&e.persistentConnection_.interrupt(Sp)}function Bp(e,...t){let n="";e.persistentConnection_&&(n=e.persistentConnection_.id+":"),al(n,...t)}function jp(e,r,i,s){r&&bl(()=>{if("ok"===i)r(null);else{var t=(i||"error").toUpperCase();let e=t;s&&(e+=": "+s);const n=new Error(e);n.code=t,r(n)}})}function $p(e,t,n){return xd(e.serverSyncTree_,t,n)||Ou.EMPTY_NODE}function Kp(t,e=t.transactionQueueTree_){if(e||Hp(t,e),Zd(e)){const n=Gp(t,e);f(00===e.status)&&function(i,s,a){const e=a.map(e=>e.currentWriteId),t=$p(i,s,e);let n=t;var r=t.hash();for(let u=0;u{Bp(i,"transaction put response",{path:l.toString(),status:t});let n=[];if("ok"===t){const r=[];for(let e=0;ea[e].onComplete(null,!0,a[e].currentOutputSnapshotResolved)),a[e].unwatcher();Hp(i,Xd(i.transactionQueueTree_,s)),Kp(i,i.transactionQueueTree_),Ep(i.eventQueue_,s,n);for(let t=0;t{Kp(t,e)})}function Wp(e,t){var n=zp(e,t),r=rp(n);return function(i,s,a){if(0!==s.length){const l=[];let n=[];const t=s.filter(e=>0===e.status),u=t.map(e=>e.currentWriteId);for(let r=0;r=Cp)e=!0,t="maxretry",n=n.concat(Sd(i.serverSyncTree_,h.currentWriteId,!0));else{const d=$p(i,h.path,u);h.currentInputSnapshot=d;var c=s[r].update(d.val());if(void 0!==c){yp("transaction failed: Data returned ",c,h.path);let e=Uu(c);"object"==typeof c&&null!=c&&L(c,".priority")||(e=e.updatePriority(d.getPriority()));o=h.currentWriteId,c=xp(i),c=Qd(e,d,c);h.currentOutputSnapshotRaw=e,h.currentOutputSnapshotResolved=c,h.currentWriteId=Mp(i),u.splice(u.indexOf(o),1),n=n.concat(Ed(i.serverSyncTree_,h.path,c,h.currentWriteId,h.applyLocally)),n=n.concat(Sd(i.serverSyncTree_,o,!0))}else e=!0,t="nodata",n=n.concat(Sd(i.serverSyncTree_,h.currentWriteId,!0))}Ep(i.eventQueue_,a,n),n=[],e&&(s[r].status=2,function(e){setTimeout(e,Math.floor(0))}(s[r].unwatcher),s[r].onComplete&&("nodata"===t?l.push(()=>s[r].onComplete(null,!1,s[r].currentInputSnapshot)):l.push(()=>s[r].onComplete(new Error(t),!1,null))))}Hp(i,i.transactionQueueTree_);for(let e=0;e{t(n,e,r)})}(e,t,n),n.sort((e,t)=>e.order-t.order),n}function Hp(t,n){const r=Zd(n);if(r){let e=0;for(let t=0;t{Hp(t,e)})}function Qp(t,e){var n=rp(zp(t,e)),r=Xd(t.transactionQueueTree_,e);return function(e,t,n){let r=n?e:e.parent;for(;null!==r;){if(t(r))return;r=r.parent}}(r,e=>{Yp(t,e)}),Yp(t,r),function t(e,n,r,i){r&&!i&&n(e),np(e,e=>{t(e,n,!0,i)}),r&&i&&n(e)}(r,e=>{Yp(t,e)}),n}function Yp(i,s){const a=Zd(s);if(a){const o=[];let e=[],t=-1;for(let n=0;n.firebaseio.com instead"),r&&"undefined"!==r||"localhost"===n.domain||ol("Cannot parse Firebase url. Please use https://.firebaseio.com"),n.secure||ll();var i="ws"===n.scheme||"wss"===n.scheme;return{repoInfo:new Al(n.host,n.secure,r,i,t,"",r!==n.subdomain),path:new Kl(n.pathString)}},Xp=function(r){let i="",s="",a="",o="",c="",l=!0,u="https",h=443;if("string"==typeof r){let e=r.indexOf("//");0<=e&&(u=r.substring(0,e-1),r=r.substring(e+2));let t=r.indexOf("/");-1===t&&(t=r.length);let n=r.indexOf("?");-1===n&&(n=r.length),i=r.substring(0,Math.min(t,n)),t{})),e.promise}remove(){up("OnDisconnect.remove",this._path);const e=new y;return Up(this._repo,this._path,null,e.wrapCallback(()=>{})),e.promise}set(e){up("OnDisconnect.set",this._path),sp("OnDisconnect.set",e,this._path,!1);const t=new y;return Up(this._repo,this._path,e,t.wrapCallback(()=>{})),t.promise}setWithPriority(e,t){up("OnDisconnect.setWithPriority",this._path),sp("OnDisconnect.setWithPriority",e,this._path,!1),op("OnDisconnect.setWithPriority",t,!1);const n=new y;return function(n,r,e,t,i){const s=Uu(e,t);n.server_.onDisconnectPut(r.toString(),s.val(!0),(e,t)=>{"ok"===e&&rh(n.onDisconnect_,r,s),jp(0,i,e,t)})}(this._repo,this._path,e,t,n.wrapCallback(()=>{})),n.promise}update(e){up("OnDisconnect.update",this._path),ap("OnDisconnect.update",e,this._path,!1);const t=new y;return function(r,i,n,s){if(U(n))return al("onDisconnect().update() called with empty data. Don't do anything."),jp(0,s,"ok",void 0);r.server_.onDisconnectMerge(i.toString(),n,(e,t)=>{"ok"===e&&fl(n,(e,t)=>{var n=Uu(t);rh(r.onDisconnect_,Xl(i,e),n)}),jp(0,s,e,t)})}(this._repo,this._path,e,t.wrapCallback(()=>{})),t.promise}}class af{constructor(e,t,n,r){this._repo=e,this._path=t,this._queryParams=n,this._orderByCalled=r}get key(){return Zl(this._path)?null:Ql(this._path)}get ref(){return new uf(this._repo,this._path)}get _queryIdentifier(){var e=Zu(this._queryParams),e=rl(e);return"{}"===e?"default":e}get _queryObject(){return Zu(this._queryParams)}isEqual(e){if(!((e=ae(e))instanceof af))return!1;var t=this._repo===e._repo,n=nu(this._path,e._path),r=this._queryIdentifier===e._queryIdentifier;return t&&n&&r}toJSON(){return this.toString()}toString(){return this._repo.toString()+function(e){let t="";for(let n=e.pieceNum_;nn(new hf(t,ff(this.ref,e),Su)))}hasChild(e){var t=new Kl(e);return!this._node.getChild(t).isEmpty()}hasChildren(){return!this._node.isLeafNode()&&!this._node.isEmpty()}toJSON(){return this.exportVal()}val(){return this._node.val()}}function df(e,t){return(e=ae(e))._checkNotDeleted("ref"),void 0!==t?ff(e._root,t):e._root}function pf(e,t){(e=ae(e))._checkNotDeleted("refFromURL");const n=Jp(t,e._repo.repoInfo_.nodeAdmin);wp("refFromURL",n);var r=n.repoInfo;return e._repo.repoInfo_.isCustomHost()||r.host===e._repo.repoInfo_.host||ol("refFromURL: Host name does not match the current database: (found "+r.host+" but expected "+e._repo.repoInfo_.host+")"),df(e,n.path.toString())}function ff(e,t){return(null===zl((e=ae(e))._path)?lp:_p)("child","path",t,!1),new uf(e._repo,Xl(e._path,t))}function gf(e,t){e=ae(e),up("set",e._path),sp("set",t,e._path,!1);const n=new y;return Lp(e._repo,e._path,t,null,n.wrapCallback(()=>{})),n.promise}function mf(e,t){ap("update",t,e._path,!1);const n=new y;return function(i,s,e,a){Bp(i,"update",{path:s.toString(),value:e});let n=!0;const r=xp(i),o={};if(fl(e,(e,t)=>{n=!1,o[e]=Hd(Xl(s,e),Uu(t),i.serverSyncTree_,r)}),n)al("update() called with empty data. Don't do anything."),jp(0,a,"ok",void 0);else{const c=Mp(i);var t=kd(i.serverSyncTree_,s,o,c);Ip(i.eventQueue_,t),i.server_.merge(s.toString(),e,(e,t)=>{var n="ok"===e;n||cl("update at "+s+" failed: "+e);var r=Sd(i.serverSyncTree_,c,!n),n=0{var t=Qp(i,Xl(s,e));Wp(i,t)}),Ep(i.eventQueue_,s,[])}}(e._repo,e._path,t,n.wrapCallback(()=>{})),n.promise}function vf(t){t=ae(t);var i,s,a,e=new rf(()=>{}),e=new yf(e);return i=t._repo,s=t,a=e,(null!=(e=Dd(i.serverSyncTree_,s))?Promise.resolve(e):i.server_.get(s).then(e=>{var t,n=Uu(e).withIndex(s._queryParams.getIndex());Rd(i.serverSyncTree_,s,a,!0);let r;return r=s._queryParams.loadsAllData()?Cd(i.serverSyncTree_,s._path,n):(t=Ld(i.serverSyncTree_,s),Nd(i.serverSyncTree_,s._path,n,t)),Ep(i.eventQueue_,s._path,r),Ad(i.serverSyncTree_,s,a,null,!0),n},e=>(Bp(i,"get for query "+O(s)+" failed: "+e),Promise.reject(new Error(e))))).then(e=>new hf(e,new uf(t._repo,t._path),t._queryParams.getIndex()))}class yf{constructor(e){this.callbackContext=e}respondsTo(e){return"value"===e}createEvent(e,t){var n=t._queryParams.getIndex();return new tf("value",this,new hf(e.snapshotNode,new uf(t._repo,t._path),n))}getEventRunner(e){return"cancel"===e.getEventType()?()=>this.callbackContext.onCancel(e.error):()=>this.callbackContext.onValue(e.snapshot,null)}createCancelEvent(e,t){return this.callbackContext.hasCancelCallback?new nf(this,e,t):null}matches(e){return e instanceof yf&&(!e.callbackContext||!this.callbackContext||e.callbackContext.matches(this.callbackContext))}hasAnyCallback(){return null!==this.callbackContext}}class _f{constructor(e,t){this.eventType=e,this.callbackContext=t}respondsTo(e){let t="children_added"===e?"child_added":e;return t="children_removed"===t?"child_removed":t,this.eventType===t}createCancelEvent(e,t){return this.callbackContext.hasCancelCallback?new nf(this,e,t):null}createEvent(e,t){f(null!=e.childName,"Child events should have a childName.");var n=ff(new uf(t._repo,t._path),e.childName),r=t._queryParams.getIndex();return new tf(e.type,this,new hf(e.snapshotNode,n,r),e.prevName)}getEventRunner(e){return"cancel"===e.getEventType()?()=>this.callbackContext.onCancel(e.error):()=>this.callbackContext.onValue(e.snapshot,e.prevName)}matches(e){return e instanceof _f&&(this.eventType===e.eventType&&(!this.callbackContext||!e.callbackContext||this.callbackContext.matches(e.callbackContext)))}hasAnyCallback(){return!!this.callbackContext}}function wf(n,e,t,r,i){let s;if("object"==typeof r&&(s=void 0,i=r),"function"==typeof r&&(s=r),i&&i.onlyOnce){const c=t;var a=(e,t)=>{qp(n._repo,n,o),c(e,t)};a.userCallback=t.userCallback,a.context=t.context,t=a}a=new rf(t,s||void 0);const o="value"===e?new yf(a):new _f(e,a);return function(e,t,n){let r;r=".info"===zl(t._path)?Rd(e.infoSyncTree_,t,n):Rd(e.serverSyncTree_,t,n),Tp(e.eventQueue_,t._path,r)}(n._repo,n,o),()=>qp(n._repo,n,o)}function bf(e,t,n,r){return wf(e,"value",t,n,r)}function If(e,t,n,r){return wf(e,"child_added",t,n,r)}function Tf(e,t,n,r){return wf(e,"child_changed",t,n,r)}function Ef(e,t,n,r){return wf(e,"child_moved",t,n,r)}function kf(e,t,n,r){return wf(e,"child_removed",t,n,r)}function Sf(e,t,n){let r=null;var i=n?new rf(n):null;"value"===t?r=new yf(i):t&&(r=new _f(t,i)),qp(e._repo,e,r)}class Cf{}class Af extends Cf{constructor(e,t){super(),this._value=e,this._key=t}_apply(e){sp("endAt",this._value,e._path,!0);var t=Yu(e._queryParams,this._value,this._key);if(lf(t),cf(t),e._queryParams.hasEnd())throw new Error("endAt: Starting point was already set (by another call to endAt, endBefore or equalTo).");return new af(e._repo,e._path,t,e._orderByCalled)}}class Nf extends Cf{constructor(e,t){super(),this._value=e,this._key=t}_apply(e){sp("endBefore",this._value,e._path,!1);var t=function(e,t,n){let r;return r=e.index_===pu||n?Yu(e,t,n):Yu(e,t,hl),r.endBeforeSet_=!0,r}(e._queryParams,this._value,this._key);if(lf(t),cf(t),e._queryParams.hasEnd())throw new Error("endBefore: Starting point was already set (by another call to endAt, endBefore or equalTo).");return new af(e._repo,e._path,t,e._orderByCalled)}}class Rf extends Cf{constructor(e,t){super(),this._value=e,this._key=t}_apply(e){sp("startAt",this._value,e._path,!0);var t=Qu(e._queryParams,this._value,this._key);if(lf(t),cf(t),e._queryParams.hasStart())throw new Error("startAt: Starting point was already set (by another call to startAt, startBefore or equalTo).");return new af(e._repo,e._path,t,e._orderByCalled)}}class xf extends Cf{constructor(e,t){super(),this._value=e,this._key=t}_apply(e){sp("startAfter",this._value,e._path,!1);var t=function(e,t,n){let r;return r=e.index_===pu||n?Qu(e,t,n):Qu(e,t,dl),r.startAfterSet_=!0,r}(e._queryParams,this._value,this._key);if(lf(t),cf(t),e._queryParams.hasStart())throw new Error("startAfter: Starting point was already set (by another call to startAt, startAfter, or equalTo).");return new af(e._repo,e._path,t,e._orderByCalled)}}class Df extends Cf{constructor(e){super(),this._limit=e}_apply(e){if(e._queryParams.hasLimit())throw new Error("limitToFirst: Limit was already set (by another call to limitToFirst or limitToLast).");return new af(e._repo,e._path,function(e,t){const n=e.copy();return n.limitSet_=!0,n.limit_=t,n.viewFrom_="l",n}(e._queryParams,this._limit),e._orderByCalled)}}class Pf extends Cf{constructor(e){super(),this._limit=e}_apply(e){if(e._queryParams.hasLimit())throw new Error("limitToLast: Limit was already set (by another call to limitToFirst or limitToLast).");return new af(e._repo,e._path,function(e,t){const n=e.copy();return n.limitSet_=!0,n.limit_=t,n.viewFrom_="r",n}(e._queryParams,this._limit),e._orderByCalled)}}class Of extends Cf{constructor(e){super(),this._path=e}_apply(e){of(e,"orderByChild");var t=new Kl(this._path);if(Zl(t))throw new Error("orderByChild: cannot pass in empty path. Use orderByValue() instead.");t=new qu(t),t=Ju(e._queryParams,t);return cf(t),new af(e._repo,e._path,t,!0)}}class Mf extends Cf{_apply(e){of(e,"orderByKey");var t=Ju(e._queryParams,pu);return cf(t),new af(e._repo,e._path,t,!0)}}class Lf extends Cf{_apply(e){of(e,"orderByPriority");var t=Ju(e._queryParams,Su);return cf(t),new af(e._repo,e._path,t,!0)}}class Ff extends Cf{_apply(e){of(e,"orderByValue");var t=Ju(e._queryParams,Vu);return cf(t),new af(e._repo,e._path,t,!0)}}class Uf extends Cf{constructor(e,t){super(),this._value=e,this._key=t}_apply(e){if(sp("equalTo",this._value,e._path,!1),e._queryParams.hasStart())throw new Error("equalTo: Starting point was already set (by another call to startAt/startAfter or equalTo).");if(e._queryParams.hasEnd())throw new Error("equalTo: Ending point was already set (by another call to endAt/endBefore or equalTo).");return new Af(this._value,this._key)._apply(new Rf(this._value,this._key)._apply(e))}}function qf(e,...t){let n=ae(e);for(const r of t)n=r._apply(n);return n}Bc=uf,f(!ld,"__referenceConstructor has already been defined"),ld=Bc,jc=uf,f(!bd,"__referenceConstructor has already been defined"),bd=jc;const Vf="FIREBASE_DATABASE_EMULATOR_HOST",Bf={};let jf=!1;function $f(e,t,n,r,i){let s=r||e.options.databaseURL;void 0===s&&(e.options.projectId||ol("Can't determine Firebase Database URL. Be sure to include a Project ID when calling firebase.initializeApp()."),al("Using default host for project ",e.options.projectId),s=`${e.options.projectId}-default-rtdb.firebaseio.com`);let a=Jp(s,i),o=a.repoInfo,c,l=void 0;"undefined"!=typeof process&&process.env&&(l=process.env[Vf]),l?(c=!0,s=`http://${l}?ns=${o.namespace}`,a=Jp(s,i),o=a.repoInfo):c=!a.repoInfo.secure;var u=i&&c?new El(El.OWNER):new Tl(e.name,e.options,t);wp("Invalid Firebase Database URL",a),Zl(a.path)||ol("Database URL must point to the root of a Firebase Database (not including a child path).");u=function(e,t,n,r){let i=Bf[t.name];i||(i={},Bf[t.name]=i);var s=i[e.toURLString()];s&&ol("Database initialized multiple times. Please make sure the format of the database URL matches with each database() call.");return s=new Ap(e,jf,n,r),i[e.toURLString()]=s}(o,e,u,new Il(e.name,n));return new Kf(u,e)}class Kf{constructor(e,t){this._repoInternal=e,this.app=t,this.type="database",this._instanceStarted=!1}get _repo(){return this._instanceStarted||(Np(this._repoInternal,this.app.options.appId,this.app.options.databaseAuthVariableOverride),this._instanceStarted=!0),this._repoInternal}get _root(){return this._rootInternal||(this._rootInternal=new uf(this._repo,Wl())),this._rootInternal}_delete(){return null!==this._rootInternal&&(function(e,t){const n=Bf[t];n&&n[e.key]===e||ol(`Database ${t}(${e.repoInfo_}) has already been deleted.`),Vp(e),delete n[e.key]}(this._repo,this.app.name),this._repoInternal=null,this._rootInternal=null),Promise.resolve()}_checkNotDeleted(e){null===this._rootInternal&&ol("Cannot call "+e+" on a deleted database.")}}function Wf(){ql.IS_TRANSPORT_INITIALIZED&&cl("Transport has already been initialized. Please call this function before calling ref or setting up a listener")}function zf(){Wf(),Ml.forceDisallow()}function Gf(){Wf(),Ul.forceDisallow(),Ml.forceAllow()}function Hf(e,t,n,r={}){(e=ae(e))._checkNotDeleted("useEmulator"),e._instanceStarted&&ol("Cannot call useEmulator() after instance has already been initialized.");var i,s=e._repoInternal;let a=void 0;s.repoInfo_.nodeAdmin?(r.mockUserToken&&ol('mockUserToken is not supported by the Admin SDK. For client access with mock users, please use the "firebase" package instead of "firebase-admin".'),a=new El(El.OWNER)):r.mockUserToken&&(i="string"==typeof r.mockUserToken?r.mockUserToken:_(r.mockUserToken,e.app.options.projectId),a=new El(i)),r=s,e=t,t=n,n=a,r.repoInfo_=new Al(`${e}:${t}`,!1,r.repoInfo_.namespace,r.repoInfo_.webSocketOnly,r.repoInfo_.nodeAdmin,r.repoInfo_.persistenceKey,r.repoInfo_.includeNamespaceInQueryParams),n&&(r.authTokenProvider_=n)}function Qf(e){(e=ae(e))._checkNotDeleted("goOnline"),(e=e._repo).persistentConnection_&&e.persistentConnection_.resume(Sp)}function Yf(e,t){sl(e,t)}const Jf={".sv":"timestamp"};class Xf{constructor(e,t){this.committed=e,this.snapshot=t}toJSON(){return{committed:this.committed,snapshot:this.snapshot.toJSON()}}}function Zf(i,e,t){if(i=ae(i),up("Reference.transaction",i._path),".length"===i.key||".keys"===i.key)throw"Reference.transaction failed: "+i.key+" is a read-only object.";var n=null===(r=null==t?void 0:t.applyLocally)||void 0===r||r;const s=new y;var r=bf(i,()=>{});return function(t,n,e,r,i,s){Bp(t,"transaction on "+n);const a={path:n,update:e,onComplete:r,status:null,order:Qc(),applyLocally:s,retryCount:0,unwatcher:i,abortReason:null,currentWriteId:null,currentInputSnapshot:null,currentOutputSnapshotRaw:null,currentOutputSnapshotResolved:null},o=$p(t,n,void 0);a.currentInputSnapshot=o;var c=a.update(o.val());if(void 0===c)a.unwatcher(),a.currentOutputSnapshotRaw=null,a.currentOutputSnapshotResolved=null,a.onComplete&&a.onComplete(null,!1,a.currentInputSnapshot);else{yp("transaction failed: Data returned ",c,a.path),a.status=0;var l=Xd(t.transactionQueueTree_,n);const u=Zd(l)||[];u.push(a),ep(l,u);let e;if("object"==typeof c&&null!==c&&L(c,".priority"))e=F(c,".priority"),f(vp(e),"Invalid priority returned by transaction. Priority must be a valid string, finite number, server value, or null.");else{const h=xd(t.serverSyncTree_,n)||Ou.EMPTY_NODE;e=h.getPriority().val()}l=xp(t),c=Uu(c,e),l=Qd(c,o,l);a.currentOutputSnapshotRaw=c,a.currentOutputSnapshotResolved=l,a.currentWriteId=Mp(t);l=Ed(t.serverSyncTree_,n,l,a.currentWriteId,a.applyLocally);Ep(t.eventQueue_,n,l),Kp(t,t.transactionQueueTree_)}}(i._repo,i._path,e,(e,t,n)=>{var r;e?s.reject(e):(r=new hf(n,new uf(i._repo,i._path),Su),s.resolve(new Xf(t,r)))},r,n),s.promise}cu.prototype.simpleListen=function(e,t){this.sendRequest("q",{p:e},t)},cu.prototype.echo=function(e,t){this.sendRequest("echo",{d:e},t)},Mc(Ye),ze(new oe("database",(e,{instanceIdentifier:t})=>{return $f(e.getProvider("app").getImmediate(),e.getProvider("auth-internal"),e.getProvider("app-check-internal"),t)},"PUBLIC").setMultipleInstances(!0)),et(Pc,"0.14.1",$c),et(Pc,"0.14.1","esm2017");function eg(e){var t="FIREBASE WARNING: "+e;tg.warn(t)}const tg=new me("@firebase/database-compat");class ng{constructor(e){this._delegate=e}cancel(t){Q("OnDisconnect.cancel",0,1,arguments.length),J("OnDisconnect.cancel","onComplete",t,!0);const e=this._delegate.cancel();return t&&e.then(()=>t(null),e=>t(e)),e}remove(t){Q("OnDisconnect.remove",0,1,arguments.length),J("OnDisconnect.remove","onComplete",t,!0);const e=this._delegate.remove();return t&&e.then(()=>t(null),e=>t(e)),e}set(e,t){Q("OnDisconnect.set",1,2,arguments.length),J("OnDisconnect.set","onComplete",t,!0);const n=this._delegate.set(e);return t&&n.then(()=>t(null),e=>t(e)),n}setWithPriority(e,t,n){Q("OnDisconnect.setWithPriority",2,3,arguments.length),J("OnDisconnect.setWithPriority","onComplete",n,!0);const r=this._delegate.setWithPriority(e,t);return n&&r.then(()=>n(null),e=>n(e)),r}update(t,n){if(Q("OnDisconnect.update",1,2,arguments.length),Array.isArray(t)){const r={};for(let e=0;en(null),e=>n(e)),e}}class rg{constructor(e,t){this.committed=e,this.snapshot=t}toJSON(){return Q("TransactionResult.toJSON",0,1,arguments.length),{committed:this.committed,snapshot:this.snapshot.toJSON()}}}class ig{constructor(e,t){this._database=e,this._delegate=t}val(){return Q("DataSnapshot.val",0,0,arguments.length),this._delegate.val()}exportVal(){return Q("DataSnapshot.exportVal",0,0,arguments.length),this._delegate.exportVal()}toJSON(){return Q("DataSnapshot.toJSON",0,1,arguments.length),this._delegate.toJSON()}exists(){return Q("DataSnapshot.exists",0,0,arguments.length),this._delegate.exists()}child(e){return Q("DataSnapshot.child",0,1,arguments.length),e=String(e),_p("DataSnapshot.child","path",e,!1),new ig(this._database,this._delegate.child(e))}hasChild(e){return Q("DataSnapshot.hasChild",1,1,arguments.length),_p("DataSnapshot.hasChild","path",e,!1),this._delegate.hasChild(e)}getPriority(){return Q("DataSnapshot.getPriority",0,0,arguments.length),this._delegate.priority}forEach(t){return Q("DataSnapshot.forEach",1,1,arguments.length),J("DataSnapshot.forEach","action",t,!1),this._delegate.forEach(e=>t(new ig(this._database,e)))}hasChildren(){return Q("DataSnapshot.hasChildren",0,0,arguments.length),this._delegate.hasChildren()}get key(){return this._delegate.key}numChildren(){return Q("DataSnapshot.numChildren",0,0,arguments.length),this._delegate.size}getRef(){return Q("DataSnapshot.ref",0,0,arguments.length),new ag(this._database,this._delegate.ref)}get ref(){return this.getRef()}}class sg{constructor(e,t){this.database=e,this._delegate=t}on(e,n,t,r){var i;Q("Query.on",2,4,arguments.length),J("Query.on","callback",n,!1);const s=sg.getCancelAndContextArgs_("Query.on",t,r);var a=(e,t)=>{n.call(s.context,new ig(this.database,e),t)};a.userCallback=n,a.context=s.context;var o=null===(i=s.cancel)||void 0===i?void 0:i.bind(s.context);switch(e){case"value":return bf(this._delegate,a,o),n;case"child_added":return If(this._delegate,a,o),n;case"child_removed":return kf(this._delegate,a,o),n;case"child_changed":return Tf(this._delegate,a,o),n;case"child_moved":return Ef(this._delegate,a,o),n;default:throw new Error(Y("Query.on","eventType")+'must be a valid event type = "value", "child_added", "child_removed", "child_changed", or "child_moved".')}}off(e,t,n){var r;Q("Query.off",0,3,arguments.length),function(e,t,n){if(!n||void 0!==t)switch(t){case"value":case"child_added":case"child_removed":case"child_changed":case"child_moved":break;default:throw new Error(Y(e,"eventType")+'must be a valid event type = "value", "child_added", "child_removed", "child_changed", or "child_moved".')}}("Query.off",e,!0),J("Query.off","callback",t,!0),X("Query.off","context",n,!0),t?((r=()=>{}).userCallback=t,r.context=n,Sf(this._delegate,e,r)):Sf(this._delegate,e)}get(){return vf(this._delegate).then(e=>new ig(this.database,e))}once(e,r,t,n){Q("Query.once",1,4,arguments.length),J("Query.once","callback",r,!0);const i=sg.getCancelAndContextArgs_("Query.once",t,n),s=new y;var a=(e,t)=>{var n=new ig(this.database,e);r&&r.call(i.context,n,t),s.resolve(n)};a.userCallback=r,a.context=i.context;var o=e=>{i.cancel&&i.cancel.call(i.context,e),s.reject(e)};switch(e){case"value":bf(this._delegate,a,o,{onlyOnce:!0});break;case"child_added":If(this._delegate,a,o,{onlyOnce:!0});break;case"child_removed":kf(this._delegate,a,o,{onlyOnce:!0});break;case"child_changed":Tf(this._delegate,a,o,{onlyOnce:!0});break;case"child_moved":Ef(this._delegate,a,o,{onlyOnce:!0});break;default:throw new Error(Y("Query.once","eventType")+'must be a valid event type = "value", "child_added", "child_removed", "child_changed", or "child_moved".')}return s.promise}limitToFirst(e){return Q("Query.limitToFirst",1,1,arguments.length),new sg(this.database,qf(this._delegate,function(e){if("number"!=typeof e||Math.floor(e)!==e||e<=0)throw new Error("limitToFirst: First argument must be a positive integer.");return new Df(e)}(e)))}limitToLast(e){return Q("Query.limitToLast",1,1,arguments.length),new sg(this.database,qf(this._delegate,function(e){if("number"!=typeof e||Math.floor(e)!==e||e<=0)throw new Error("limitToLast: First argument must be a positive integer.");return new Pf(e)}(e)))}orderByChild(e){return Q("Query.orderByChild",1,1,arguments.length),new sg(this.database,qf(this._delegate,function(e){if("$key"===e)throw new Error('orderByChild: "$key" is invalid. Use orderByKey() instead.');if("$priority"===e)throw new Error('orderByChild: "$priority" is invalid. Use orderByPriority() instead.');if("$value"===e)throw new Error('orderByChild: "$value" is invalid. Use orderByValue() instead.');return _p("orderByChild","path",e,!1),new Of(e)}(e)))}orderByKey(){return Q("Query.orderByKey",0,0,arguments.length),new sg(this.database,qf(this._delegate,new Mf))}orderByPriority(){return Q("Query.orderByPriority",0,0,arguments.length),new sg(this.database,qf(this._delegate,new Lf))}orderByValue(){return Q("Query.orderByValue",0,0,arguments.length),new sg(this.database,qf(this._delegate,new Ff))}startAt(e=null,t){return Q("Query.startAt",0,2,arguments.length),new sg(this.database,qf(this._delegate,([e=null,t]=[e,t],cp("startAt","key",t,!0),new Rf(e,t))))}startAfter(e=null,t){return Q("Query.startAfter",0,2,arguments.length),new sg(this.database,qf(this._delegate,(e=e,t=t,cp("startAfter","key",t,!0),new xf(e,t))))}endAt(e=null,t){return Q("Query.endAt",0,2,arguments.length),new sg(this.database,qf(this._delegate,(e=e,t=t,cp("endAt","key",t,!0),new Af(e,t))))}endBefore(e=null,t){return Q("Query.endBefore",0,2,arguments.length),new sg(this.database,qf(this._delegate,(e=e,t=t,cp("endBefore","key",t,!0),new Nf(e,t))))}equalTo(e,t){return Q("Query.equalTo",1,2,arguments.length),new sg(this.database,qf(this._delegate,(e=e,t=t,cp("equalTo","key",t,!0),new Uf(e,t))))}toString(){return Q("Query.toString",0,0,arguments.length),this._delegate.toString()}toJSON(){return Q("Query.toJSON",0,1,arguments.length),this._delegate.toJSON()}isEqual(e){if(Q("Query.isEqual",1,1,arguments.length),e instanceof sg)return this._delegate.isEqual(e._delegate);throw new Error("Query.isEqual failed: First argument must be an instance of firebase.database.Query.")}static getCancelAndContextArgs_(e,t,n){const r={cancel:void 0,context:void 0};if(t&&n)r.cancel=t,J(e,"cancel",r.cancel,!0),r.context=n,X(e,"context",r.context,!0);else if(t)if("object"==typeof t&&null!==t)r.context=t;else{if("function"!=typeof t)throw new Error(Y(e,"cancelOrContext")+" must either be a cancel callback or a context object.");r.cancel=t}return r}get ref(){return new ag(this.database,new uf(this._delegate._repo,this._delegate._path))}}class ag extends sg{constructor(e,t){super(e,new af(t._repo,t._path,new Hu,!1)),this.database=e,this._delegate=t}getKey(){return Q("Reference.key",0,0,arguments.length),this._delegate.key}child(e){return Q("Reference.child",1,1,arguments.length),"number"==typeof e&&(e=String(e)),new ag(this.database,ff(this._delegate,e))}getParent(){Q("Reference.parent",0,0,arguments.length);var e=this._delegate.parent;return e?new ag(this.database,e):null}getRoot(){return Q("Reference.root",0,0,arguments.length),new ag(this.database,this._delegate.root)}set(e,t){Q("Reference.set",1,2,arguments.length),J("Reference.set","onComplete",t,!0);const n=gf(this._delegate,e);return t&&n.then(()=>t(null),e=>t(e)),n}update(t,n){if(Q("Reference.update",1,2,arguments.length),Array.isArray(t)){const r={};for(let e=0;en(null),e=>n(e)),e}setWithPriority(e,t,n){Q("Reference.setWithPriority",2,3,arguments.length),J("Reference.setWithPriority","onComplete",n,!0);const r=function(e,t,n){if(up("setWithPriority",e._path),sp("setWithPriority",t,e._path,!1),op("setWithPriority",n,!1),".length"===e.key||".keys"===e.key)throw"setWithPriority failed: "+e.key+" is a read-only object.";const r=new y;return Lp(e._repo,e._path,t,n,r.wrapCallback(()=>{})),r.promise}(this._delegate,e,t);return n&&r.then(()=>n(null),e=>n(e)),r}remove(t){Q("Reference.remove",0,1,arguments.length),J("Reference.remove","onComplete",t,!0);const e=(n=this._delegate,up("remove",n._path),gf(n,null));var n;return t&&e.then(()=>t(null),e=>t(e)),e}transaction(e,t,n){Q("Reference.transaction",1,3,arguments.length),J("Reference.transaction","transactionUpdate",e,!1),J("Reference.transaction","onComplete",t,!0),function(e,t,n,r){if((!r||void 0!==n)&&"boolean"!=typeof n)throw new Error(Y(e,t)+"must be a boolean.")}("Reference.transaction","applyLocally",n,!0);const r=Zf(this._delegate,e,{applyLocally:n}).then(e=>new rg(e.committed,new ig(this.database,e.snapshot)));return t&&r.then(e=>t(null,e.committed,e.snapshot),e=>t(e,!1,null)),r}setPriority(e,t){Q("Reference.setPriority",1,2,arguments.length),J("Reference.setPriority","onComplete",t,!0);const n=function(e,t){e=ae(e),up("setPriority",e._path),op("setPriority",t,!1);const n=new y;return Lp(e._repo,Xl(e._path,".priority"),t,null,n.wrapCallback(()=>{})),n.promise}(this._delegate,e);return t&&n.then(()=>t(null),e=>t(e)),n}push(e,t){Q("Reference.push",0,2,arguments.length),J("Reference.push","onComplete",t,!0);const n=function(e,t){e=ae(e),up("push",e._path),sp("push",t,e._path,!0);var n=Rp(e._repo),n=ef(n);const r=ff(e,n),i=ff(e,n);let s;return s=null!=t?gf(i,t).then(()=>i):Promise.resolve(i),r.then=s.then.bind(s),r.catch=s.then.bind(s,void 0),r}(this._delegate,e),r=n.then(e=>new ag(this.database,e));t&&r.then(()=>t(null),e=>t(e));const i=new ag(this.database,n);return i.then=r.then.bind(r),i.catch=r.catch.bind(r,void 0),i}onDisconnect(){return up("Reference.onDisconnect",this._delegate._path),new ng(new sf(this._delegate._repo,this._delegate._path))}get key(){return this.getKey()}get parent(){return this.getParent()}get root(){return this.getRoot()}}class og{constructor(e,t){this._delegate=e,this.app=t,this.INTERNAL={delete:()=>this._delegate._delete(),forceWebSockets:zf,forceLongPolling:Gf}}useEmulator(e,t,n={}){Hf(this._delegate,e,t,n)}ref(e){if(Q("database.ref",0,1,arguments.length),e instanceof ag){var t=pf(this._delegate,e.toString());return new ag(this,t)}t=df(this._delegate,e);return new ag(this,t)}refFromURL(e){Q("database.refFromURL",1,1,arguments.length);var t=pf(this._delegate,e);return new ag(this,t)}goOffline(){var e;Q("database.goOffline",0,0,arguments.length),(e=ae(e=this._delegate))._checkNotDeleted("goOffline"),Vp(e._repo)}goOnline(){return Q("database.goOnline",0,0,arguments.length),Qf(this._delegate)}}og.ServerValue={TIMESTAMP:Jf,increment:e=>({".sv":{increment:e}})};var cg,lg=Object.freeze({__proto__:null,initStandalone:function({app:e,url:t,version:n,customAuthImpl:r,namespace:i,nodeAdmin:s=!1}){Mc(n);const a=new le("auth-internal",new ue("database-standalone"));return a.setComponent(new oe("auth-internal",()=>r,"PRIVATE")),{instance:new og($f(e,a,void 0,t,s),e),namespace:i}}});const ug=og.ServerValue;(cg=wt).INTERNAL.registerComponent(new oe("database-compat",(e,{instanceIdentifier:t})=>{var n=e.getProvider("app-compat").getImmediate(),r=e.getProvider("database").getImmediate({identifier:t});return new og(r,n)},"PUBLIC").setServiceProps({Reference:ag,Query:sg,Database:og,DataSnapshot:ig,enableLogging:Yf,INTERNAL:lg,ServerValue:ug}).setMultipleInstances(!0)),cg.registerVersion("@firebase/database-compat","0.3.1");var yt="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{},hg={},dg=yt||self;function pg(){}function fg(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 gg(e){var t=typeof e;return"object"==t&&null!=e||"function"==t}var mg="closure_uid_"+(1e9*Math.random()>>>0),vg=0;function yg(e,t,n){return e.call.apply(e.bind,arguments)}function _g(t,n,e){if(!t)throw Error();if(2parseFloat($g)){Mg=String(Kg);break e}}Mg=$g}var Wg={};function zg(){return e=function(){let e=0;var t=Rg(String(Mg)).split("."),n=Rg("9").split("."),r=Math.max(t.length,n.length);for(let a=0;0==e&&a>>0);function mm(t){return"function"==typeof t?t:(t[gm]||(t[gm]=function(e){return t.handleEvent(e)}),t[gm])}function vm(){Tg.call(this),this.i=new im(this),(this.P=this).I=null}function ym(e,t){var n,r=e.I;if(r)for(n=[];r;r=r.I)n.push(r);if(e=e.P,r=t.type||t,"string"==typeof t?t=new Cg(t,e):t instanceof Cg?t.target=t.target||e:(a=t,rm(t=new Cg(r,e),a)),a=!0,n)for(var i=n.length-1;0<=i;i--)var s=t.g=n[i],a=_m(s,r,!0,t)&&a;if(a=_m(s=t.g=e,r,!0,t)&&a,a=_m(s,r,!1,t)&&a,n)for(i=0;inew Tm,e=>e.reset());class Tm{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 Em(e,t){var n;bm||(n=dg.Promise.resolve(void 0),bm=function(){n.then(Cm)}),km||(bm(),km=!0),Sm.add(e,t)}var km=!1,Sm=new class{constructor(){this.h=this.g=null}add(e,t){const n=Im.get();n.set(e,t),this.h?this.h.next=n:this.g=n,this.h=n}};function Cm(){for(var e;e=function(){var e=Sm;let t=null;return e.g&&(t=e.g,e.g=e.g.next,e.g||(e.h=null),t.next=null),t}();){try{e.h.call(e.g)}catch(e){!function(e){dg.setTimeout(()=>{throw e},0)}(e)}var t=Im;t.j(e),t.h<100&&(t.h++,e.next=t.g,t.g=e)}km=!1}function Am(e,t){vm.call(this),this.h=e||1,this.g=t||dg,this.j=wg(this.lb,this),this.l=Date.now()}function Nm(e){e.ca=!1,e.R&&(e.g.clearTimeout(e.R),e.R=null)}function Rm(e,t,n){if("function"==typeof e)n&&(e=wg(e,n));else{if(!e||"function"!=typeof e.handleEvent)throw Error("Invalid listener argument");e=wg(e.handleEvent,e)}return 2147483647{t.g=null,t.i&&(t.i=!1,e(t))},t.j);var n=t.h;t.h=null,t.m.apply(null,n)}(this)}M(){super.M(),this.g&&(dg.clearTimeout(this.g),this.g=null,this.i=!1,this.h=null)}}function Dm(e){Tg.call(this),this.h=e,this.g={}}Ig(Dm,Tg);var Pm=[];function Om(e,t,n,r){Array.isArray(n)||(n&&(Pm[0]=n.toString()),n=Pm);for(var i=0;ia.length?iv:(a=a.substr(c,o),s.C=c+o,a))),i==iv){4==t&&(e.o=4,Km(14),r=!1),Fm(e.j,e.m,null,"[Incomplete Response]");break}if(i==rv){e.o=4,Km(15),Fm(e.j,e.m,n,"[Invalid Chunk]"),r=!1;break}Fm(e.j,e.m,i,null),fv(e,i)}var s,a,o,c;ov(e)&&i!=iv&&i!=rv&&(e.h.g="",e.C=0),4!=t||0!=n.length||e.h.h||(e.o=1,Km(16),r=!1),e.i=e.i&&r,r?0>4&15).toString(16)+(15&e).toString(16)}vv.prototype.toString=function(){var e=[],t=this.j;t&&e.push(kv(t,Cv,!0),":");var n=this.g;return!n&&"file"!=t||(e.push("//"),(t=this.s)&&e.push(kv(t,Cv,!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(kv(n,"/"==n.charAt(0)?Nv:Av,!0))),(n=this.i.toString())&&e.push("?",n),(n=this.o)&&e.push("#",kv(n,xv)),e.join("")};var Cv=/[#\/\?@]/g,Av=/[#\?:]/g,Nv=/[#\?]/g,Rv=/[#\?@]/g,xv=/#/g;function Dv(e,t){this.h=this.g=null,this.i=e||null,this.j=!!t}function Pv(n){n.g||(n.g=new Map,n.h=0,n.i&&function(e,t){if(e){e=e.split("&");for(var n=0;n=e.j}function jv(e){return e.h?1:e.g?e.g.size:0}function $v(e,t){return e.h?e.h==t:e.g&&e.g.has(t)}function Kv(e,t){e.g?e.g.add(t):e.h=t}function Wv(e,t){e.h&&e.h==t?e.h=null:e.g&&e.g.has(t)&&e.g.delete(t)}function zv(t){if(null!=t.h)return t.i.concat(t.h.D);if(null==t.g||0===t.g.size)return kg(t.i);{let e=t.i;for(const n of t.g.values())e=e.concat(n.D);return e}}function Gv(){}function Hv(){this.g=new Gv}function Qv(e,t,n,r,i){try{t.onload=null,t.onerror=null,t.onabort=null,t.ontimeout=null,i(r)}catch(e){}}function Yv(e){this.l=e.ac||null,this.j=e.jb||!1}function Jv(e,t){vm.call(this),this.D=e,this.u=t,this.m=void 0,this.readyState=Xv,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}qv.prototype.cancel=function(){if(this.i=zv(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()}},Gv.prototype.stringify=function(e){return dg.JSON.stringify(e,void 0)},Gv.prototype.parse=function(e){return dg.JSON.parse(e,void 0)},Ig(Yv,Gm),Yv.prototype.g=function(){return new Jv(this.l,this.j)},Yv.prototype.i=(Vv={},function(){return Vv}),Ig(Jv,vm);var Xv=0;function Zv(e){e.j.read().then(e.Ta.bind(e)).catch(e.ga.bind(e))}function ey(e){e.readyState=4,e.l=null,e.j=null,e.A=null,ty(e)}function ty(e){e.onreadystatechange&&e.onreadystatechange.call(e)}(bt=Jv.prototype).open=function(e,t){if(this.readyState!=Xv)throw this.abort(),Error("Error reopening a connection");this.C=e,this.B=t,this.readyState=1,ty(this)},bt.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||dg).fetch(new Request(this.B,t)).then(this.Wa.bind(this),this.ga.bind(this))},bt.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,ey(this)),this.readyState=Xv},bt.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,ty(this)),this.g&&(this.readyState=3,ty(this),this.g)))if("arraybuffer"===this.responseType)e.arrayBuffer().then(this.Ua.bind(this),this.ga.bind(this));else if(void 0!==dg.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;Zv(this)}else e.text().then(this.Va.bind(this),this.ga.bind(this))},bt.Ta=function(e){var t;this.g&&(this.u&&e.value?this.response.push(e.value):this.u||(t=e.value||new Uint8Array(0),(t=this.A.decode(t,{stream:!e.done}))&&(this.response=this.responseText+=t)),(e.done?ey:ty)(this),3==this.readyState&&Zv(this))},bt.Va=function(e){this.g&&(this.response=this.responseText=e,ey(this))},bt.Ua=function(e){this.g&&(this.response=e,ey(this))},bt.ga=function(){this.g&&ey(this)},bt.setRequestHeader=function(e,t){this.v.append(e,t)},bt.getResponseHeader=function(e){return this.h&&this.h.get(e.toLowerCase())||""},bt.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(Jv.prototype,"withCredentials",{get:function(){return"include"===this.m},set:function(e){this.m=e?"include":"same-origin"}});var ny=dg.JSON.parse;function ry(e){vm.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=iy,this.K=this.L=!1}Ig(ry,vm);var iy="",sy=/^https?$/i,ay=["POST","PUT"];function oy(e,t){e.h=!1,e.g&&(e.l=!0,e.g.abort(),e.l=!1),e.j=t,e.m=5,cy(e),uy(e)}function cy(e){e.D||(e.D=!0,ym(e,"complete"),ym(e,"error"))}function ly(e){if(e.h&&void 0!==hg&&(!e.C[1]||4!=dy(e)||2!=e.aa()))if(e.v&&4==dy(e))Rm(e.Ha,0,e);else if(ym(e,"readystatechange"),4==dy(e)){e.h=!1;try{var t,n,r,i,s=e.aa();e:switch(s){case 200:case 201:case 202:case 204:case 206:case 304:case 1223:var a=!0;break e;default:a=!1}if((t=a)||((n=0===s)&&(!(i=String(e.H).match(mv)[1]||null)&&dg.self&&dg.self.location&&(i=(r=dg.self.location.protocol).substr(0,r.length-1)),n=!sy.test(i?i.toLowerCase():"")),t=n),t)ym(e,"complete"),ym(e,"success");else{e.m=6;try{var o=2=r.h.j-(r.m?1:0)||(r.m?(r.i=i.D.concat(r.i),0):1==r.G||2==r.G||r.C>=(r.Za?0:r.$a)||(r.m=zm(wg(r.Ja,r,i),xy(r,r.C)),r.C++,0))))&&(2!=a||!Sy(e)))switch(s&&0"content-type"==e.toLowerCase()),i=dg.FormData&&e instanceof dg.FormData,0<=Eg(ay,t)&&!r&&!i&&n.set("Content-Type","application/x-www-form-urlencoded;charset=utf-8");for(var[s,a]of n)this.g.setRequestHeader(s,a);this.J&&(this.g.responseType=this.J),"withCredentials"in this.g&&this.g.withCredentials!==this.L&&(this.g.withCredentials=this.L);try{hy(this),0`${this.name}: [code=${this.code}]: ${this.message}`}}class h_{constructor(){this.promise=new Promise((e,t)=>{this.resolve=e,this.reject=t})}}class d_{constructor(e,t){this.user=t,this.type="OAuth",this.headers=new Map,this.headers.set("Authorization",`Bearer ${e}`)}}class p_{getToken(){return Promise.resolve(null)}invalidateToken(){}start(e,t){e.enqueueRetryable(()=>t(Zy.UNAUTHENTICATED))}shutdown(){}}class f_{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 g_{constructor(e){this.t=e,this.currentUser=Zy.UNAUTHENTICATED,this.i=0,this.forceRefresh=!1,this.auth=null}start(t,n){let r=this.i;const i=e=>this.i!==r?(r=this.i,n(e)):Promise.resolve();let s=new h_;this.o=()=>{this.i++,this.currentUser=this.u(),s.resolve(),s=new h_,t.enqueueRetryable(()=>i(this.currentUser))};const a=()=>{const e=s;t.enqueueRetryable(async()=>{await e.promise,await i(this.currentUser)})},o=e=>{r_("FirebaseAuthCredentialsProvider","Auth detected"),this.auth=e,this.auth.addAuthTokenListener(this.o),a()};this.t.onInit(e=>o(e)),setTimeout(()=>{var e;this.auth||((e=this.t.getImmediate({optional:!0}))?o(e):(r_("FirebaseAuthCredentialsProvider","Auth not yet detected"),s.resolve(),s=new h_))},0),a()}getToken(){const t=this.i,e=this.forceRefresh;return this.forceRefresh=!1,this.auth?this.auth.getToken(e).then(e=>this.i!==t?(r_("FirebaseAuthCredentialsProvider","getToken aborted due to token change."),this.getToken()):e?(c_("string"==typeof e.accessToken),new d_(e.accessToken,this.currentUser)):null):Promise.resolve(null)}invalidateToken(){this.forceRefresh=!0}shutdown(){this.auth&&this.auth.removeAuthTokenListener(this.o)}u(){var e=this.auth&&this.auth.getUid();return c_(null===e||"string"==typeof e),new Zy(e)}}class m_{constructor(e,t,n,r){this.h=e,this.l=t,this.m=n,this.g=r,this.type="FirstParty",this.user=Zy.FIRST_PARTY,this.p=new Map}I(){return this.g?this.g():(c_(!("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);var 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 v_{constructor(e,t,n,r){this.h=e,this.l=t,this.m=n,this.g=r}getToken(){return Promise.resolve(new m_(this.h,this.l,this.m,this.g))}start(e,t){e.enqueueRetryable(()=>t(Zy.FIRST_PARTY))}shutdown(){}invalidateToken(){}}class y_{constructor(e){this.value=e,this.type="AppCheck",this.headers=new Map,e&&0{null!=e.error&&r_("FirebaseAppCheckTokenProvider",`Error getting App Check token; using placeholder token instead. Error: ${e.error.message}`);var t=e.token!==this.A;return this.A=e.token,r_("FirebaseAppCheckTokenProvider",`Received ${t?"new":"existing"} token.`),t?n(e.token):Promise.resolve()};this.o=e=>{t.enqueueRetryable(()=>r(e))};const i=e=>{r_("FirebaseAppCheckTokenProvider","AppCheck detected"),this.appCheck=e,this.appCheck.addTokenListener(this.o)};this.T.onInit(e=>i(e)),setTimeout(()=>{var e;this.appCheck||((e=this.T.getImmediate({optional:!0}))?i(e):r_("FirebaseAppCheckTokenProvider","AppCheck not yet detected"))},0)}getToken(){var e=this.forceRefresh;return this.forceRefresh=!1,this.appCheck?this.appCheck.getToken(e).then(e=>e?(c_("string"==typeof e.token),this.A=e.token,new y_(e.token)):null):Promise.resolve(null)}invalidateToken(){this.forceRefresh=!0}shutdown(){this.appCheck&&this.appCheck.removeTokenListener(this.o)}}class w_{static R(){var t="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789",n=Math.floor(256/t.length)*t.length;let r="";for(;r.length<20;){var i=function(t){const n="undefined"!=typeof self&&(self.crypto||self.msCrypto),r=new Uint8Array(t);if(n&&"function"==typeof n.getRandomValues)n.getRandomValues(r);else for(let e=0;er(e,n[t]))}function T_(e){return e+"\0"}class E_{constructor(e,t){if(this.seconds=e,(this.nanoseconds=t)<0)throw new u_(l_.INVALID_ARGUMENT,"Timestamp nanoseconds out of range: "+t);if(1e9<=t)throw new u_(l_.INVALID_ARGUMENT,"Timestamp nanoseconds out of range: "+t);if(e<-62135596800)throw new u_(l_.INVALID_ARGUMENT,"Timestamp seconds out of range: "+e);if(253402300800<=e)throw new u_(l_.INVALID_ARGUMENT,"Timestamp seconds out of range: "+e)}static now(){return E_.fromMillis(Date.now())}static fromDate(e){return E_.fromMillis(e.getTime())}static fromMillis(e){var t=Math.floor(e/1e3),n=Math.floor(1e6*(e-1e3*t));return new E_(t,n)}toDate(){return new Date(this.toMillis())}toMillis(){return 1e3*this.seconds+this.nanoseconds/1e6}_compareTo(e){return this.seconds===e.seconds?b_(this.nanoseconds,e.nanoseconds):b_(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(){var e=this.seconds- -62135596800;return String(e).padStart(12,"0")+"."+String(this.nanoseconds).padStart(9,"0")}}class k_{constructor(e){this.timestamp=e}static fromTimestamp(e){return new k_(e)}static min(){return new k_(new E_(0,0))}static max(){return new k_(new E_(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 S_{constructor(e,t,n){void 0===t?t=0:t>e.length&&o_(),void 0===n?n=e.length-t:n>e.length-t&&o_(),this.segments=e,this.offset=t,this.len=n}get length(){return this.len}isEqual(e){return 0===S_.comparator(this,e)}child(e){const t=this.segments.slice(this.offset,this.limit());return e instanceof S_?e.forEach(e=>{t.push(e)}):t.push(e),this.construct(t)}limit(){return this.offset+this.length}popFirst(e){return this.construct(this.segments,this.offset+(e=void 0===e?1: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.lengthi)return 1}return e.lengtht.length?1:0}}class C_ extends S_{construct(e,t,n){return new C_(e,t,n)}canonicalString(){return this.toArray().join("/")}toString(){return this.canonicalString()}static fromString(...e){const t=[];for(const n of e){if(0<=n.indexOf("//"))throw new u_(l_.INVALID_ARGUMENT,`Invalid segment (${n}). Paths must not contain // in them.`);t.push(...n.split("/").filter(e=>0(e=e.replace(/\\/g,"\\\\").replace(/`/g,"\\`"),e=!N_.isValidIdentifier(e)?"`"+e+"`":e)).join(".")}toString(){return this.canonicalString()}isKeyField(){return 1===this.length&&"__name__"===this.get(0)}static keyField(){return new N_(["__name__"])}static fromServerFormat(e){const t=[];let n="",r=0;var i=()=>{if(0===n.length)throw new u_(l_.INVALID_ARGUMENT,`Invalid field path (${e}). Paths must not be empty, begin with '.', end with '.', or contain '..'`);t.push(n),n=""};let s=!1;for(;r2===e.kind)}function P_(e){return e.fields.filter(e=>2!==e.kind)}x_.UNKNOWN_ID=-1;class O_{constructor(e,t){this.fieldPath=e,this.kind=t}}class M_{constructor(e,t){this.sequenceNumber=e,this.offset=t}static empty(){return new M_(0,U_.min())}}function L_(e,t){var n=e.toTimestamp().seconds,r=e.toTimestamp().nanoseconds+1,r=k_.fromTimestamp(1e9===r?new E_(n+1,0):new E_(n,r));return new U_(r,R_.empty(),t)}function F_(e){return new U_(e.readTime,e.key,-1)}class U_{constructor(e,t,n){this.readTime=e,this.documentKey=t,this.largestBatchId=n}static min(){return new U_(k_.min(),R_.empty(),-1)}static max(){return new U_(k_.max(),R_.empty(),-1)}}function q_(e,t){let n=e.readTime.compareTo(t.readTime);return 0!==n?n:(n=R_.comparator(e.documentKey,t.documentKey),0!==n?n:b_(e.largestBatchId,t.largestBatchId))}const V_="The current tab is not in the required state to perform this operation. It might be necessary to refresh the browser tab.";class B_{constructor(){this.onCommittedListeners=[]}addOnCommittedListener(e){this.onCommittedListeners.push(e)}raiseOnCommittedEvent(){this.onCommittedListeners.forEach(e=>e())}}async function j_(e){if(e.code!==l_.FAILED_PRECONDITION||e.message!==V_)throw e;r_("LocalStore","Unexpectedly lost primary lease")}class $_{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(r,i){return this.callbackAttached&&o_(),this.callbackAttached=!0,this.isDone?this.error?this.wrapFailure(i,this.error):this.wrapSuccess(r,this.result):new $_((t,n)=>{this.nextCallback=e=>{this.wrapSuccess(r,e).next(t,n)},this.catchCallback=e=>{this.wrapFailure(i,e).next(t,n)}})}toPromise(){return new Promise((e,t)=>{this.next(e,t)})}wrapUserFunction(e){try{var t=e();return t instanceof $_?t:$_.resolve(t)}catch(e){return $_.reject(e)}}wrapSuccess(e,t){return e?this.wrapUserFunction(()=>e(t)):$_.resolve(t)}wrapFailure(e,t){return e?this.wrapUserFunction(()=>e(t)):$_.reject(t)}static resolve(n){return new $_((e,t)=>{e(n)})}static reject(n){return new $_((e,t)=>{t(n)})}static waitFor(e){return new $_((t,n)=>{let r=0,i=0,s=!1;e.forEach(e=>{++r,e.next(()=>{++i,s&&i===r&&t()},e=>n(e))}),s=!0,i===r&&t()})}static or(e){let t=$_.resolve(!1);for(const n of e)t=t.next(e=>e?$_.resolve(e):n());return t}static forEach(e,n){const r=[];return e.forEach((e,t)=>{r.push(n.call(this,e,t))}),this.waitFor(r)}static mapArray(o,c){return new $_((t,n)=>{const r=o.length,i=new Array(r);let s=0;for(let e=0;e{i[a]=e,++s,s===r&&t(i)},e=>n(e))}})}static doWhile(r,i){return new $_((e,t)=>{const n=()=>{!0===r()?i().next(()=>{n()},t):e()};n()})}}class K_{constructor(n,e){this.action=n,this.transaction=e,this.aborted=!1,this.P=new h_,this.transaction.oncomplete=()=>{this.P.resolve()},this.transaction.onabort=()=>{e.error?this.P.reject(new G_(n,e.error)):this.P.resolve()},this.transaction.onerror=e=>{var t=X_(e.target.error);this.P.reject(new G_(n,t))}}static open(e,t,n,r){try{return new K_(t,e.transaction(r,n))}catch(e){throw new G_(t,e)}}get v(){return this.P.promise}abort(e){e&&this.P.reject(e),this.aborted||(r_("SimpleDb","Aborting transaction:",e?e.message:"Client-initiated abort"),this.aborted=!0,this.transaction.abort())}V(){const e=this.transaction;this.aborted||"function"!=typeof e.commit||e.commit()}store(e){var t=this.transaction.objectStore(e);return new Q_(t)}}class W_{constructor(e,t,n){this.name=e,this.version=t,this.S=n,12.2===W_.D(w())&&i_("Firestore persistence suffers from a bug in iOS 12.2 Safari that may cause your app to stop working. See https://stackoverflow.com/q/56496296/110915 for details and a potential workaround.")}static delete(e){return r_("SimpleDb","Removing database:",e),Y_(window.indexedDB.deleteDatabase(e)).toPromise()}static C(){if(!C())return!1;if(W_.N())return!0;const e=w(),t=W_.D(e),n=0{const i=indexedDB.open(this.name,this.version);i.onsuccess=e=>{var t=e.target.result;n(t)},i.onblocked=()=>{r(new G_(s,"Cannot upgrade IndexedDB schema while another tab is open. Close all tabs that access Firestore and reload this page to proceed."))},i.onerror=e=>{var t=e.target.error;"VersionError"===t.name?r(new u_(l_.FAILED_PRECONDITION,"A newer version of the Firestore SDK was previously used and so the persisted data is not compatible with the version of the SDK you are now using. The SDK will operate with persistence disabled. If you need persistence, please re-upgrade to a newer version of the SDK or else clear the persisted IndexedDB data for your app to start fresh.")):"InvalidStateError"===t.name?r(new u_(l_.FAILED_PRECONDITION,"Unable to open an IndexedDB connection. This could be due to running in a private browsing session on a browser whose private browsing sessions do not support IndexedDB: "+t)):r(new G_(s,t))},i.onupgradeneeded=e=>{r_("SimpleDb",'Database "'+this.name+'" requires upgrade from version:',e.oldVersion);var t=e.target.result;this.S.$(t,i.transaction,e.oldVersion,this.version).next(()=>{r_("SimpleDb","Database upgrade to version "+this.version+" complete")})}})),this.B&&(this.db.onversionchange=e=>this.B(e)),this.db}L(t){this.B=t,this.db&&(this.db.onversionchange=e=>t(e))}async runTransaction(e,t,n,r){var i="readonly"===t;let s=0;for(;;){++s;try{this.db=await this.F(e);const t=K_.open(this.db,e,i?"readonly":"readwrite",n),s=r(t).next(e=>(t.V(),e)).catch(e=>(t.abort(e),$_.reject(e))).toPromise();return s.catch(()=>{}),await t.v,s}catch(e){const t=e,n="FirebaseError"!==t.name&&s<3;if(r_("SimpleDb","Transaction failed with error:",t.message,"Retrying:",n),this.close(),!n)return Promise.reject(t)}}}close(){this.db&&this.db.close(),this.db=void 0}}class z_{constructor(e){this.q=e,this.U=!1,this.K=null}get isDone(){return this.U}get G(){return this.K}set cursor(e){this.q=e}done(){this.U=!0}j(e){this.K=e}delete(){return Y_(this.q.delete())}}class G_ extends u_{constructor(e,t){super(l_.UNAVAILABLE,`IndexedDB transaction '${e}' failed: ${t}`),this.name="IndexedDbTransactionError"}}function H_(e){return"IndexedDbTransactionError"===e.name}class Q_{constructor(e){this.store=e}put(e,t){let n;return n=void 0!==t?(r_("SimpleDb","PUT",this.store.name,e,t),this.store.put(t,e)):(r_("SimpleDb","PUT",this.store.name,"",e),this.store.put(e)),Y_(n)}add(e){return r_("SimpleDb","ADD",this.store.name,e,e),Y_(this.store.add(e))}get(t){return Y_(this.store.get(t)).next(e=>(r_("SimpleDb","GET",this.store.name,t,e=void 0===e?null:e),e))}delete(e){return r_("SimpleDb","DELETE",this.store.name,e),Y_(this.store.delete(e))}count(){return r_("SimpleDb","COUNT",this.store.name),Y_(this.store.count())}W(e,n){var t=this.options(e,n);if(t.index||"function"!=typeof this.store.getAll){const e=this.cursor(t),n=[];return this.H(e,(e,t)=>{n.push(t)}).next(()=>n)}{const e=this.store.getAll(t.range);return new $_((t,n)=>{e.onerror=e=>{n(e.target.error)},e.onsuccess=e=>{t(e.target.result)}})}}J(e,t){const r=this.store.getAll(e,null===t?void 0:t);return new $_((t,n)=>{r.onerror=e=>{n(e.target.error)},r.onsuccess=e=>{t(e.target.result)}})}Y(e,t){r_("SimpleDb","DELETE ALL",this.store.name);const n=this.options(e,t);n.X=!1;var r=this.cursor(n);return this.H(r,(e,t,n)=>n.delete())}Z(e,t){let n;t?n=e:(n={},t=e);var r=this.cursor(n);return this.H(r,t)}tt(i){const e=this.cursor({});return new $_((n,r)=>{e.onerror=e=>{var t=X_(e.target.error);r(t)},e.onsuccess=e=>{const t=e.target.result;t?i(t.primaryKey,t.value).next(e=>{e?t.continue():n()}):n()}})}H(e,s){const a=[];return new $_((i,t)=>{e.onerror=e=>{t(e.target.error)},e.onsuccess=e=>{const t=e.target.result;if(t){const n=new z_(t),r=s(t.primaryKey,t.value,n);if(r instanceof $_){const e=r.catch(e=>(n.done(),$_.reject(e)));a.push(e)}n.isDone?i():null===n.G?t.continue():t.continue(n.G)}else i()}}).next(()=>$_.waitFor(a))}options(e,t){let n;return void 0!==e&&("string"==typeof e?n=e:t=e),{index:n,range:t}}cursor(e){let t="next";if(e.reverse&&(t="prev"),e.index){const n=this.store.index(e.index);return e.X?n.openKeyCursor(e.range,t):n.openCursor(e.range,t)}return this.store.openCursor(e.range,t)}}function Y_(e){return new $_((n,r)=>{e.onsuccess=e=>{var t=e.target.result;n(t)},e.onerror=e=>{var t=X_(e.target.error);r(t)}})}let J_=!1;function X_(e){const t=W_.D(w());if(12.2<=t&&t<13){const t="An internal error was encountered in the Indexed Database server";if(0<=e.message.indexOf(t)){const e=new u_("internal",`IOS_INDEXEDDB_BUG1: IndexedDb has thrown '${t}'. This is likely due to an unavoidable bug in iOS. See https://stackoverflow.com/q/56496296/110915 for details and a potential workaround.`);return J_||(J_=!0,setTimeout(()=>{throw e},0)),e}}return e}class Z_{constructor(e,t){this.asyncQueue=e,this.et=t,this.task=null}start(){this.nt(15e3)}stop(){this.task&&(this.task.cancel(),this.task=null)}get started(){return null!==this.task}nt(e){r_("IndexBackiller",`Scheduled in ${e}ms`),this.task=this.asyncQueue.enqueueAfterDelay("index_backfill",e,async()=>{this.task=null;try{r_("IndexBackiller",`Documents written: ${await this.et.st()}`)}catch(e){H_(e)?r_("IndexBackiller","Ignoring IndexedDB error during index backfill: ",e):await j_(e)}await this.nt(6e4)})}}class ew{constructor(e,t){this.localStore=e,this.persistence=t}async st(t=50){return this.persistence.runTransaction("Backfill Indexes","readwrite-primary",e=>this.it(e,t))}it(e,t){const n=new Set;let r=t,i=!0;return $_.doWhile(()=>!0===i&&0this.localStore.indexManager.getNextCollectionGroupToUpdate(e).next(t=>null===t||n.has(t)?void(i=!1):(r_("IndexBackiller",`Processing collection: ${t}`),this.rt(e,t,r).next(e=>{r-=e,n.add(t)})))).next(()=>t-r)}rt(r,i,e){return this.localStore.indexManager.getMinOffsetFromCollectionGroup(r,i).next(n=>this.localStore.localDocuments.getNextDocuments(r,i,n,e).next(e=>{const t=e.changes;return this.localStore.indexManager.updateIndexEntries(r,t).next(()=>this.ot(n,e)).next(e=>(r_("IndexBackiller",`Updating offset: ${e}`),this.localStore.indexManager.updateCollectionGroup(r,i,e))).next(()=>t.size)}))}ot(e,t){let r=e;return t.changes.forEach((e,t)=>{var n=F_(t);0this.ut(e),this.ct=e=>t.writeSequenceNumber(e))}ut(e){return this.previousValue=Math.max(e,this.previousValue),this.previousValue}next(){var e=++this.previousValue;return this.ct&&this.ct(e),e}}tw.at=-1;class nw{constructor(e,t,n,r,i,s,a,o){this.databaseId=e,this.appId=t,this.persistenceKey=n,this.host=r,this.ssl=i,this.forceLongPolling=s,this.autoDetectLongPolling=a,this.useFetchStreams=o}}class rw{constructor(e,t){this.projectId=e,this.database=t||"(default)"}static empty(){return new rw("","")}get isDefaultDatabase(){return"(default)"===this.database}isEqual(e){return e instanceof rw&&e.projectId===this.projectId&&e.database===this.database}}function iw(e){let t=0;for(const n in e)Object.prototype.hasOwnProperty.call(e,n)&&t++;return t}function sw(e,t){for(const n in e)Object.prototype.hasOwnProperty.call(e,n)&&t(n,e[n])}function aw(e){for(const t in e)if(Object.prototype.hasOwnProperty.call(e,t))return!1;return!0}function ow(e){return null==e}function cw(e){return 0===e&&1/e==-1/0}function lw(e){return"number"==typeof e&&Number.isInteger(e)&&!cw(e)&&e<=Number.MAX_SAFE_INTEGER&&e>=Number.MIN_SAFE_INTEGER}class uw{constructor(e){this.binaryString=e}static fromBase64String(e){var t=atob(e);return new uw(t)}static fromUint8Array(e){var t=function(e){let t="";for(let n=0;neww(e,t))}function Iw(e,t){if(e===t)return 0;var n,r,i,s,a=_w(e),o=_w(t);if(a!==o)return b_(a,o);switch(a){case 0:case 9007199254740991:return 0;case 1:return b_(e.booleanValue,t.booleanValue);case 2:return r=t,i=pw(e.integerValue||e.doubleValue),s=pw(r.integerValue||r.doubleValue),in.mapValue.fields[e]=xw(t)),n}if(t.arrayValue){const r={arrayValue:{values:[]}};for(let e=0;e<(t.arrayValue.values||[]).length;++e)r.arrayValue.values[e]=xw(t.arrayValue.values[e]);return r}return Object.assign({},t)}function Dw(e){return"__max__"===(((e.mapValue||{}).fields||{}).__type__||{}).stringValue}function Pw(e,t){var n=Iw(e.value,t.value);return 0!==n?n:e.inclusive&&!t.inclusive?-1:!e.inclusive&&t.inclusive?1:0}function Ow(e,t){var n=Iw(e.value,t.value);return 0!==n?n:e.inclusive&&!t.inclusive?1:!e.inclusive&&t.inclusive?-1:0}class Mw{constructor(e,t){this.position=e,this.inclusive=t}}function Lw(e,t,n){let r=0;for(let i=0;i":return 0=":return 0<=e;default:return o_()}}isInequality(){return 0<=["<","<=",">",">=","!=","not-in"].indexOf(this.op)}getFlattenedFilters(){return[this]}getFilters(){return[this]}getFirstInequalityField(){return this.isInequality()?this.field:null}}class Vw extends Uw{constructor(e,t){super(),this.filters=e,this.op=t,this.ht=null}static create(e,t){return new Vw(e,t)}matches(t){return Bw(this)?void 0===this.filters.find(e=>!e.matches(t)):void 0!==this.filters.find(e=>e.matches(t))}getFlattenedFilters(){return null!==this.ht||(this.ht=this.filters.reduce((e,t)=>e.concat(t.getFlattenedFilters()),[])),this.ht}getFilters(){return Object.assign([],this.filters)}getFirstInequalityField(){var e=this.lt(e=>e.isInequality());return null!==e?e.field:null}lt(e){for(const t of this.getFlattenedFilters())if(e(t))return t;return null}}function Bw(e){return"and"===e.op}function jw(e){return"or"===e.op}function $w(e){return Kw(e)&&Bw(e)}function Kw(e){for(const t of e.filters)if(t instanceof Vw)return!1;return!0}function Ww(e,t){var n=e.filters.concat(t);return Vw.create(n,e.op)}function zw(e){return e instanceof qw?`${(t=e).field.canonicalString()} ${t.op} ${Ew(t.value)}`:e instanceof Vw?(e=e).op.toString()+" {"+e.getFilters().map(zw).join(" ,")+"}":"Filter";var t}class Gw extends qw{constructor(e,t,n){super(e,t,n),this.key=R_.fromName(n.referenceValue)}matches(e){var t=R_.comparator(e.key,this.key);return this.matchesComparison(t)}}class Hw extends qw{constructor(e,t){super(e,"in",t),this.keys=Yw(0,t)}matches(t){return this.keys.some(e=>e.isEqual(t.key))}}class Qw extends qw{constructor(e,t){super(e,"not-in",t),this.keys=Yw(0,t)}matches(t){return!this.keys.some(e=>e.isEqual(t.key))}}function Yw(e,t){var n;return((null===(n=t.arrayValue)||void 0===n?void 0:n.values)||[]).map(e=>R_.fromName(e.referenceValue))}class Jw extends qw{constructor(e,t){super(e,"array-contains",t)}matches(e){var t=e.data.field(this.field);return Cw(t)&&bw(t.arrayValue,this.value)}}class Xw extends qw{constructor(e,t){super(e,"in",t)}matches(e){var t=e.data.field(this.field);return null!==t&&bw(this.value.arrayValue,t)}}class Zw extends qw{constructor(e,t){super(e,"not-in",t)}matches(e){if(bw(this.value.arrayValue,{nullValue:"NULL_VALUE"}))return!1;var t=e.data.field(this.field);return null!==t&&!bw(this.value.arrayValue,t)}}class eb extends qw{constructor(e,t){super(e,"array-contains-any",t)}matches(e){const t=e.data.field(this.field);return!(!Cw(t)||!t.arrayValue.values)&&t.arrayValue.values.some(e=>bw(this.value.arrayValue,e))}}class tb{constructor(e,t="asc"){this.field=e,this.dir=t}}class nb{constructor(e,t){this.comparator=e,this.root=t||ib.EMPTY}insert(e,t){return new nb(this.comparator,this.root.insert(e,t,this.comparator).copy(null,null,ib.BLACK,null,null))}remove(e){return new nb(this.comparator,this.root.remove(e,this.comparator).copy(null,null,ib.BLACK,null,null))}get(e){let t=this.root;for(;!t.isEmpty();){var n=this.comparator(e,t.key);if(0===n)return t.value;n<0?t=t.left:0(n(e,t),!1))}toString(){const n=[];return this.inorderTraversal((e,t)=>(n.push(`${e}:${t}`),!1)),`{${n.join(", ")}}`}reverseTraversal(e){return this.root.reverseTraversal(e)}getIterator(){return new rb(this.root,null,this.comparator,!1)}getIteratorFrom(e){return new rb(this.root,e,this.comparator,!1)}getReverseIterator(){return new rb(this.root,null,this.comparator,!0)}getReverseIteratorFrom(e){return new rb(this.root,e,this.comparator,!0)}}class rb{constructor(e,t,n,r){this.isReverse=r,this.nodeStack=[];let i=1;for(;!e.isEmpty();)if(i=t?n(e.key,t):1,t&&r&&(i*=-1),i<0)e=this.isReverse?e.left:e.right;else{if(0===i){this.nodeStack.push(e);break}this.nodeStack.push(e),e=this.isReverse?e.right:e.left}}getNext(){let e=this.nodeStack.pop();var 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 0(n(e),!1))}forEachInRange(e,t){const n=this.data.getIteratorFrom(e[0]);for(;n.hasNext();){var r=n.getNext();if(0<=this.comparator(r.key,e[1]))return;t(r.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 ab(this.data.getIterator())}getIteratorFrom(e){return new ab(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 sb))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,r=n.getNext().key;if(0!==this.comparator(e,r))return!1}return!0}toArray(){const t=[];return this.forEach(e=>{t.push(e)}),t}toString(){const t=[];return this.forEach(e=>t.push(e)),"SortedSet("+t.toString()+")"}copy(e){const t=new sb(this.comparator);return t.data=e,t}}class ab{constructor(e){this.iter=e}getNext(){return this.iter.getNext().key}hasNext(){return this.iter.hasNext()}}function ob(e){return e.hasNext()?e.getNext():void 0}class cb{constructor(e){(this.fields=e).sort(N_.comparator)}static empty(){return new cb([])}unionWith(e){let t=new sb(N_.comparator);for(const e of this.fields)t=t.add(e);for(const n of e)t=t.add(n);return new cb(t.toArray())}covers(e){for(const t of this.fields)if(t.isPrefixOf(e))return!0;return!1}isEqual(e){return I_(this.fields,e.fields,(e,t)=>e.isEqual(t))}}class lb{constructor(e){this.value=e}static empty(){return new lb({mapValue:{}})}field(n){if(n.isEmpty())return this.value;{let e=this.value;for(let t=0;t{if(!n.isImmediateParentOf(t)){const e=this.getFieldsMap(n);this.applyChanges(e,r,i),r={},i=[],n=t.popLast()}e?r[t.lastSegment()]=xw(e):i.push(t.lastSegment())});var t=this.getFieldsMap(n);this.applyChanges(t,r,i)}delete(e){const t=this.field(e.popLast());Rw(t)&&t.mapValue.fields&&delete t.mapValue.fields[e.lastSegment()]}isEqual(e){return ww(this.value,e.value)}getFieldsMap(t){let n=this.value;n.mapValue.fields||(n.mapValue={fields:{}});for(let r=0;rn[e]=t);for(const e of t)delete n[e]}clone(){return new lb(xw(this.value))}}class ub{constructor(e,t,n,r,i,s,a){this.key=e,this.documentType=t,this.version=n,this.readTime=r,this.createTime=i,this.data=s,this.documentState=a}static newInvalidDocument(e){return new ub(e,0,k_.min(),k_.min(),k_.min(),lb.empty(),0)}static newFoundDocument(e,t,n,r){return new ub(e,1,t,k_.min(),n,r,0)}static newNoDocument(e,t){return new ub(e,2,t,k_.min(),k_.min(),lb.empty(),0)}static newUnknownDocument(e,t){return new ub(e,3,t,k_.min(),k_.min(),lb.empty(),2)}convertToFoundDocument(e,t){return!this.createTime.isEqual(k_.min())||2!==this.documentType&&0!==this.documentType||(this.createTime=e),this.version=e,this.documentType=1,this.data=t,this.documentState=0,this}convertToNoDocument(e){return this.version=e,this.documentType=2,this.data=lb.empty(),this.documentState=0,this}convertToUnknownDocument(e){return this.version=e,this.documentType=3,this.data=lb.empty(),this.documentState=2,this}setHasCommittedMutations(){return this.documentState=2,this}setHasLocalMutations(){return this.documentState=1,this.version=k_.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 ub&&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 ub(this.key,this.documentType,this.version,this.readTime,this.createTime,this.data.clone(),this.documentState)}toString(){return`Document(${this.key}, ${this.version}, ${JSON.stringify(this.data.value)}, {createTime: ${this.createTime}}), {documentType: ${this.documentType}}), {documentState: ${this.documentState}})`}}class hb{constructor(e,t=null,n=[],r=[],i=null,s=null,a=null){this.path=e,this.collectionGroup=t,this.orderBy=n,this.filters=r,this.limit=i,this.startAt=s,this.endAt=a,this.ft=null}}function db(e,t=null,n=[],r=[],i=null,s=null,a=null){return new hb(e,t,n,r,i,s,a)}function pb(e){const t=e;if(null===t.ft){let e=t.path.canonicalString();null!==t.collectionGroup&&(e+="|cg:"+t.collectionGroup),e+="|f:",e+=t.filters.map(e=>function t(e){if(e instanceof qw)return e.field.canonicalString()+e.op.toString()+Ew(e.value);if($w(e))return e.filters.map(e=>t(e)).join(",");var n=e.filters.map(e=>t(e)).join(",");return`${e.op}(${n})`}(e)).join(","),e+="|ob:",e+=t.orderBy.map(e=>function(e){return e.field.canonicalString()+e.dir}(e)).join(","),ow(t.limit)||(e+="|l:",e+=t.limit),t.startAt&&(e+="|lb:",e+=t.startAt.inclusive?"b:":"a:",e+=t.startAt.position.map(e=>Ew(e)).join(",")),t.endAt&&(e+="|ub:",e+=t.endAt.inclusive?"a:":"b:",e+=t.endAt.position.map(e=>Ew(e)).join(",")),t.ft=e}return t.ft}function fb(e,t){if(e.limit!==t.limit)return!1;if(e.orderBy.length!==t.orderBy.length)return!1;for(let i=0;ie&&r(t,i.filters[n]),!0):void o_();var i,n,s}(e.filters[s],t.filters[s]))return!1;return e.collectionGroup===t.collectionGroup&&!!e.path.isEqual(t.path)&&!!Fw(e.startAt,t.startAt)&&Fw(e.endAt,t.endAt)}function gb(e){return R_.isDocumentKey(e.path)&&null===e.collectionGroup&&0===e.filters.length}function mb(e,t){return e.filters.filter(e=>e instanceof qw&&e.field.isEqual(t))}function vb(t,n,r){let i=yw,s=!0;for(const r of mb(t,n)){let e=yw,t=!0;switch(r.op){case"<":case"<=":e="nullValue"in(a=r.value)?yw:"booleanValue"in a?{booleanValue:!1}:"integerValue"in a||"doubleValue"in a?{doubleValue:NaN}:"timestampValue"in a?{timestampValue:{seconds:Number.MIN_SAFE_INTEGER}}:"stringValue"in a?{stringValue:""}:"bytesValue"in a?{bytesValue:""}:"referenceValue"in a?kw(rw.empty(),R_.empty()):"geoPointValue"in a?{geoPointValue:{latitude:-90,longitude:-180}}:"arrayValue"in a?{arrayValue:{}}:"mapValue"in a?{mapValue:{}}:o_();break;case"==":case"in":case">=":e=r.value;break;case">":e=r.value,t=!1;break;case"!=":case"not-in":e=yw}Pw({value:i,inclusive:s},{value:e,inclusive:t})<0&&(i=e,s=t)}var a;if(null!==r)for(let e=0;e=":case">":e="nullValue"in(a=r.value)?{booleanValue:!1}:"booleanValue"in a?{doubleValue:NaN}:"integerValue"in a||"doubleValue"in a?{timestampValue:{seconds:Number.MIN_SAFE_INTEGER}}:"timestampValue"in a?{stringValue:""}:"stringValue"in a?{bytesValue:""}:"bytesValue"in a?kw(rw.empty(),R_.empty()):"referenceValue"in a?{geoPointValue:{latitude:-90,longitude:-180}}:"geoPointValue"in a?{arrayValue:{}}:"arrayValue"in a?{mapValue:{}}:"mapValue"in a?vw:o_(),t=!1;break;case"==":case"in":case"<=":e=r.value;break;case"<":e=r.value,t=!1;break;case"!=":case"not-in":e=vw}0function(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=>Ew(e)).join(",")),e.endAt&&(t+=", endAt: ",t+=e.endAt.inclusive?"a:":"b:",t+=e.endAt.position.map(e=>Ew(e)).join(",")),`Target(${t})`}(Cb(e))}; limitType=${e.limitType})`}function Pb(n,e){return e.isFoundDocument()&&(i=n,a=(s=e).key.path,null!==i.collectionGroup?s.key.hasCollectionId(i.collectionGroup)&&i.path.isPrefixOf(a):R_.isDocumentKey(i.path)?i.path.isEqual(a):i.path.isImmediateParentOf(a))&&function(e){for(const t of Sb(n))if(!t.field.isKeyField()&&null===e.data.field(t.field))return;return 1}(e)&&function(e){for(const t of n.filters)if(!t.matches(e))return;return 1}(e)&&(i=e,(!(e=n).startAt||(t=e.startAt,r=Lw(t,Sb(e),i),t.inclusive?r<=0:r<0))&&(!e.endAt||(t=e.endAt,r=Lw(t,Sb(e),i),t.inclusive?0<=r:0{let n=!1;for(const r of Sb(i)){const i=function(e,i,t){var n=e.field.isKeyField()?R_.comparator(i.key,t.key):function(e,t){var n=i.data.field(e),r=t.data.field(e);return null!==n&&null!==r?Iw(n,r):o_()}(e.field,t);switch(e.dir){case"asc":return n;case"desc":return-1*n;default:return o_()}}(r,e,t);if(0!==i)return i;n=n||r.field.isKeyField()}return 0}}function Lb(e,t){if(e.wt){if(isNaN(t))return{doubleValue:"NaN"};if(t===1/0)return{doubleValue:"Infinity"};if(t===-1/0)return{doubleValue:"-Infinity"}}return{doubleValue:cw(t)?"-0":t}}function Fb(e){return{integerValue:""+e}}function Ub(e,t){return lw(t)?Fb(t):Lb(e,t)}class qb{constructor(){this._=void 0}}function Vb(e,t){return e instanceof zb?Sw(n=t)||n&&"doubleValue"in n?t:{integerValue:0}:null;var n}class Bb extends qb{}class jb extends qb{constructor(e){super(),this.elements=e}}function $b(e,t){const n=Hb(t);for(const t of e.elements)n.some(e=>ww(e,t))||n.push(t);return{arrayValue:{values:n}}}class Kb extends qb{constructor(e){super(),this.elements=e}}function Wb(e,t){let n=Hb(t);for(const t of e.elements)n=n.filter(e=>!ww(e,t));return{arrayValue:{values:n}}}class zb extends qb{constructor(e,t){super(),this.yt=e,this.gt=t}}function Gb(e){return pw(e.integerValue||e.doubleValue)}function Hb(e){return Cw(e)&&e.arrayValue.values?e.arrayValue.values.slice():[]}class Qb{constructor(e,t){this.field=e,this.transform=t}}class Yb{constructor(e,t){this.version=e,this.transformResults=t}}class Jb{constructor(e,t){this.updateTime=e,this.exists=t}static none(){return new Jb}static exists(e){return new Jb(void 0,e)}static updateTime(e){return new Jb(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 Xb(e,t){return void 0!==e.updateTime?t.isFoundDocument()&&t.version.isEqual(e.updateTime):void 0===e.exists||e.exists===t.isFoundDocument()}class Zb{}function eI(e,n){if(!e.hasLocalMutations||n&&0===n.fields.length)return null;if(null===n)return e.isNoDocument()?new lI(e.key,Jb.none()):new iI(e.key,e.data,Jb.none());{const i=e.data,s=lb.empty();let t=new sb(N_.comparator);for(var r of n.fields)if(!t.has(r)){let e=i.field(r);null===e&&1e.field))}(e,t,n,r):(t=t,n=n,Xb(e.precondition,t)?(t.convertToNoDocument(t.version).setHasLocalMutations(),null):n)}function rI(e,t){return e.type===t.type&&!!e.key.isEqual(t.key)&&!!e.precondition.isEqual(t.precondition)&&(n=e.fieldTransforms,r=t.fieldTransforms,!!(void 0===n&&void 0===r||n&&r&&I_(n,r,(e,t)=>function(e,t){return e.field.isEqual(t.field)&&(e=e.transform,t=t.transform,e instanceof jb&&t instanceof jb||e instanceof Kb&&t instanceof Kb?I_(e.elements,t.elements,ww):e instanceof zb&&t instanceof zb?ww(e.gt,t.gt):e instanceof Bb&&t instanceof Bb)}(e,t)))&&(0===e.type?e.value.isEqual(t.value):1!==e.type||e.data.isEqual(t.data)&&e.fieldMask.isEqual(t.fieldMask)));var n,r}class iI extends Zb{constructor(e,t,n,r=[]){super(),this.key=e,this.value=t,this.precondition=n,this.fieldTransforms=r,this.type=0}getFieldMask(){return null}}class sI extends Zb{constructor(e,t,n,r,i=[]){super(),this.key=e,this.data=t,this.fieldMask=n,this.precondition=r,this.fieldTransforms=i,this.type=1}getFieldMask(){return this.fieldMask}}function aI(n){const r=new Map;return n.fieldMask.fields.forEach(e=>{var t;e.isEmpty()||(t=n.data.field(e),r.set(e,t))}),r}function oI(e,t,n){const r=new Map;c_(e.length===n.length);for(let u=0;u{for(const[e,n]of t)r(e,n)})}isEmpty(){return aw(this.inner)}size(){return this.innerSize}}const gI=new nb(R_.comparator);const mI=new nb(R_.comparator);function vI(...e){let t=mI;for(const n of e)t=t.insert(n.key,n);return t}function yI(e){let n=mI;return e.forEach((e,t)=>n=n.insert(e,t.overlayedDocument)),n}function _I(){return new fI(e=>e.toString(),(e,t)=>e.isEqual(t))}const wI=new nb(R_.comparator),bI=new sb(R_.comparator);function II(...e){let t=bI;for(const n of e)t=t.add(n);return t}const TI=new sb(b_);class EI{constructor(e,t,n,r,i){this.snapshotVersion=e,this.targetChanges=t,this.targetMismatches=n,this.documentUpdates=r,this.resolvedLimboDocuments=i}static createSynthesizedRemoteEventForCurrentChange(e,t,n){const r=new Map;return r.set(e,kI.createSynthesizedTargetChangeForCurrentChange(e,t,n)),new EI(k_.min(),r,TI,gI,II())}}class kI{constructor(e,t,n,r,i){this.resumeToken=e,this.current=t,this.addedDocuments=n,this.modifiedDocuments=r,this.removedDocuments=i}static createSynthesizedTargetChangeForCurrentChange(e,t,n){return new kI(n,t,II(),II(),II())}}class SI{constructor(e,t,n,r){this.It=e,this.removedTargetIds=t,this.key=n,this.Tt=r}}class CI{constructor(e,t){this.targetId=e,this.Et=t}}class AI{constructor(e,t,n=uw.EMPTY_BYTE_STRING,r=null){this.state=e,this.targetIds=t,this.resumeToken=n,this.cause=r}}class NI{constructor(){this.At=0,this.Rt=DI(),this.bt=uw.EMPTY_BYTE_STRING,this.Pt=!1,this.vt=!0}get current(){return this.Pt}get resumeToken(){return this.bt}get Vt(){return 0!==this.At}get St(){return this.vt}Dt(e){0{switch(t){case 0:n=n.add(e);break;case 2:r=r.add(e);break;case 1:i=i.add(e);break;default:o_()}}),new kI(this.bt,this.Pt,n,r,i)}xt(){this.vt=!1,this.Rt=DI()}Nt(e,t){this.vt=!0,this.Rt=this.Rt.insert(e,t)}kt(e){this.vt=!0,this.Rt=this.Rt.remove(e)}Ot(){this.At+=1}Mt(){--this.At}Ft(){this.vt=!0,this.Pt=!0}}class RI{constructor(e){this.$t=e,this.Bt=new Map,this.Lt=gI,this.qt=xI(),this.Ut=new sb(b_)}Kt(e){for(const t of e.It)e.Tt&&e.Tt.isFoundDocument()?this.Gt(t,e.Tt):this.Qt(t,e.key,e.Tt);for(const n of e.removedTargetIds)this.Qt(n,e.key,e.Tt)}jt(n){this.forEachTarget(n,e=>{const t=this.Wt(e);switch(n.state){case 0:this.zt(e)&&t.Dt(n.resumeToken);break;case 1:t.Mt(),t.Vt||t.xt(),t.Dt(n.resumeToken);break;case 2:t.Mt(),t.Vt||this.removeTarget(e);break;case 3:this.zt(e)&&(t.Ft(),t.Dt(n.resumeToken));break;case 4:this.zt(e)&&(this.Ht(e),t.Dt(n.resumeToken));break;default:o_()}})}forEachTarget(e,n){0{this.zt(t)&&n(t)})}Jt(e){const t=e.targetId,n=e.Et.count,r=this.Yt(t);if(r){const e=r.target;if(gb(e))if(0===n){const n=new R_(e.path);this.Qt(t,n,ub.newNoDocument(n,k_.min()))}else c_(1===n);else this.Xt(t)!==n&&(this.Ht(t),this.Ut=this.Ut.add(t))}}Zt(r){const i=new Map;this.Bt.forEach((e,t)=>{var n=this.Yt(t);if(n){if(e.current&&gb(n.target)){const i=new R_(n.target.path);null!==this.Lt.get(i)||this.te(t,i)||this.Qt(t,i,ub.newNoDocument(i,r))}e.St&&(i.set(t,e.Ct()),e.xt())}});let s=II();this.qt.forEach((e,t)=>{let n=!0;t.forEachWhile(e=>{var t=this.Yt(e);return!t||2===t.purpose||(n=!1)}),n&&(s=s.add(e))}),this.Lt.forEach((e,t)=>t.setReadTime(r));var e=new EI(r,i,this.Ut,this.Lt,s);return this.Lt=gI,this.qt=xI(),this.Ut=new sb(b_),e}Gt(e,t){var n;this.zt(e)&&(n=this.te(e,t.key)?2:0,this.Wt(e).Nt(t.key,n),this.Lt=this.Lt.insert(t.key,t),this.qt=this.qt.insert(t.key,this.ee(t.key).add(e)))}Qt(e,t,n){if(this.zt(e)){const r=this.Wt(e);this.te(e,t)?r.Nt(t,1):r.kt(t),this.qt=this.qt.insert(t,this.ee(t).delete(e)),n&&(this.Lt=this.Lt.insert(t,n))}}removeTarget(e){this.Bt.delete(e)}Xt(e){var t=this.Wt(e).Ct();return this.$t.getRemoteKeysForTarget(e).size+t.addedDocuments.size-t.removedDocuments.size}Ot(e){this.Wt(e).Ot()}Wt(e){let t=this.Bt.get(e);return t||(t=new NI,this.Bt.set(e,t)),t}ee(e){let t=this.qt.get(e);return t||(t=new sb(b_),this.qt=this.qt.insert(e,t)),t}zt(e){var t=null!==this.Yt(e);return t||r_("WatchChangeAggregator","Detected inactive target",e),t}Yt(e){var t=this.Bt.get(e);return t&&t.Vt?null:this.$t.ne(e)}Ht(t){this.Bt.set(t,new NI),this.$t.getRemoteKeysForTarget(t).forEach(e=>{this.Qt(t,e,null)})}te(e,t){return this.$t.getRemoteKeysForTarget(e).has(t)}}function xI(){return new nb(R_.comparator)}function DI(){return new nb(R_.comparator)}const PI={asc:"ASCENDING",desc:"DESCENDING"},OI={"<":"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"},MI={and:"AND",or:"OR"};class LI{constructor(e,t){this.databaseId=e,this.wt=t}}function FI(e,t){return e.wt?`${new Date(1e3*t.seconds).toISOString().replace(/\.\d*/,"").replace("Z","")}.${("000000000"+t.nanoseconds).slice(-9)}Z`:{seconds:""+t.seconds,nanos:t.nanoseconds}}function UI(e,t){return e.wt?t.toBase64():t.toUint8Array()}function qI(e){return c_(!!e),k_.fromTimestamp((t=dw(e),new E_(t.seconds,t.nanos)));var t}function VI(e,t){return e=e,new C_(["projects",e.projectId,"databases",e.database]).child("documents").child(t).canonicalString()}function BI(e){var t=C_.fromString(e);return c_(sT(t)),t}function jI(e,t){return VI(e.databaseId,t.path)}function $I(e,t){const n=BI(t);if(n.get(1)!==e.databaseId.projectId)throw new u_(l_.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 u_(l_.INVALID_ARGUMENT,"Tried to deserialize key from different database: "+n.get(3)+" vs "+e.databaseId.database);return new R_(GI(n))}function KI(e,t){return VI(e.databaseId,t)}function WI(e){var t=BI(e);return 4===t.length?C_.emptyPath():GI(t)}function zI(e){return new C_(["projects",e.databaseId.projectId,"databases",e.databaseId.database]).canonicalString()}function GI(e){return c_(4t.push(e.canonicalString())),{fieldPaths:t}}(t.fieldMask)};else{if(!(t instanceof uI))return o_();n={verify:jI(e,t.key)}}return 0function(e){var t=e.transform;if(t instanceof Bb)return{fieldPath:e.field.canonicalString(),setToServerValue:"REQUEST_TIME"};if(t instanceof jb)return{fieldPath:e.field.canonicalString(),appendMissingElements:{values:t.elements}};if(t instanceof Kb)return{fieldPath:e.field.canonicalString(),removeAllFromArray:{values:t.elements}};if(t instanceof zb)return{fieldPath:e.field.canonicalString(),increment:t.gt};throw o_()}(e))),t.precondition.isNone||(n.currentDocument=void 0!==(r=t.precondition).updateTime?{updateTime:(t=r.updateTime,FI(e,t.toTimestamp()))}:void 0!==r.exists?{exists:r.exists}:o_()),n;var r}function JI(t,n){const e=n.currentDocument?void 0!==(i=n.currentDocument).updateTime?Jb.updateTime(qI(i.updateTime)):void 0!==i.exists?Jb.exists(i.exists):Jb.none():Jb.none(),r=n.updateTransforms?n.updateTransforms.map(e=>function(e,t){let n=null;if("setToServerValue"in t)c_("REQUEST_TIME"===t.setToServerValue),n=new Bb;else if("appendMissingElements"in t){const e=t.appendMissingElements.values||[];n=new jb(e)}else if("removeAllFromArray"in t){const e=t.removeAllFromArray.values||[];n=new Kb(e)}else"increment"in t?n=new zb(e,t.increment):o_();var r=N_.fromServerFormat(t.fieldPath);return new Qb(r,n)}(t,e)):[];var i;if(n.update){n.update.name;var s=$I(t,n.update.name),a=new lb({mapValue:{fields:n.update.fields}});if(n.updateMask){const t=function(){const e=n.updateMask.fieldPaths||[];return new cb(e.map(e=>N_.fromServerFormat(e)))}();return new sI(s,a,t,e,r)}return new iI(s,a,e,r)}if(n.delete){const r=$I(t,n.delete);return new lI(r,e)}if(n.verify){const r=$I(t,n.verify);return new uI(r,e)}return o_()}function XI(e,t){return{documents:[KI(e,t.path)]}}function ZI(e,t){const n={structuredQuery:{}},r=t.path;null!==t.collectionGroup?(n.parent=KI(e,r),n.structuredQuery.from=[{collectionId:t.collectionGroup,allDescendants:!0}]):(n.parent=KI(e,r.popLast()),n.structuredQuery.from=[{collectionId:r.lastSegment()}]);var i=function(e){if(0!==e.length)return function n(e){return e instanceof qw?function(e){if("=="===e.op){if(Nw(e.value))return{unaryFilter:{field:rT(e.field),op:"IS_NAN"}};if(Aw(e.value))return{unaryFilter:{field:rT(e.field),op:"IS_NULL"}}}else if("!="===e.op){if(Nw(e.value))return{unaryFilter:{field:rT(e.field),op:"IS_NOT_NAN"}};if(Aw(e.value))return{unaryFilter:{field:rT(e.field),op:"IS_NOT_NULL"}}}return{fieldFilter:{field:rT(e.field),op:tT(e.op),value:e.value}}}(e):e instanceof Vw?function(e){const t=e.getFilters().map(e=>n(e));return 1===t.length?t[0]:{compositeFilter:{op:nT(e.op),filters:t}}}(e):o_()}(Vw.create(e,"and"))}(t.filters);i&&(n.structuredQuery.where=i);i=function(e){if(0!==e.length)return e.map(e=>function(e){return{field:rT(e.field),direction:(e=e.dir,PI[e])}}(e))}(t.orderBy);i&&(n.structuredQuery.orderBy=i);var s,i=(s=t.limit,e.wt||ow(s)?s:{value:s});return null!==i&&(n.structuredQuery.limit=i),t.startAt&&(n.structuredQuery.startAt={before:(i=t.startAt).inclusive,values:i.position}),t.endAt&&(n.structuredQuery.endAt={before:!(t=t.endAt).inclusive,values:t.position}),n}function eT(e){let t=WI(e.parent);const n=e.structuredQuery,r=n.from?n.from.length:0;let i=null;if(0";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 o_()}}(e.fieldFilter.op),e.fieldFilter.value)}(e):void 0!==e.compositeFilter?function(e){return Vw.create(e.compositeFilter.filters.map(e=>t(e)),function(e){switch(e){case"AND":return"and";case"OR":return"or";default:return o_()}}(e.compositeFilter.op))}(e):o_()}(n.where);return e instanceof Vw&&$w(e)?e.getFilters():[e]}());let a=[];n.orderBy&&(a=n.orderBy.map(e=>function(e){return new tb(iT(e.field),function(){switch(e.direction){case"ASCENDING":return"asc";case"DESCENDING":return"desc";default:return}}())}(e)));let o=null;var c,l,u,h;n.limit&&(o=(e=n.limit,ow(c="object"==typeof e?e.value:e)?null:c));let d=null;n.startAt&&(d=(l=n.startAt,h=!!l.before,u=l.values||[],new Mw(u,h)));let p=null;return n.endAt&&(p=(l=n.endAt,u=!l.before,h=l.values||[],new Mw(h,u))),wb(t,i,a,s,o,"F",d,p)}function tT(e){return OI[e]}function nT(e){return MI[e]}function rT(e){return{fieldPath:e.canonicalString()}}function iT(e){return N_.fromServerFormat(e.fieldPath)}function sT(e){return 4<=e.length&&"projects"===e.get(0)&&"databases"===e.get(2)}function aT(e){let t="";for(let n=0;nr)&&o_(),t.charAt(n+1)){case"":const r=t.substring(a,n);let e;0===s.length?e=r:(s+=r,e=s,s=""),i.push(e);break;case"":s+=t.substring(a,n),s+="\0";break;case"":s+=t.substring(a,n+1);break;default:o_()}a=n+2}return new C_(i)}const lT=["userId","batchId"];function uT(e,t){return[e,aT(t)]}function hT(e,t,n){return[e,aT(t),n]}const dT={},pT=["prefixPath","collectionGroup","readTime","documentId"],fT=["prefixPath","collectionGroup","documentId"],gT=["collectionGroup","readTime","prefixPath","documentId"],mT=["canonicalId","targetId"],vT=["targetId","path"],yT=["path","targetId"],_T=["collectionId","parent"],wT=["indexId","uid"],bT=["uid","sequenceNumber"],IT=["indexId","uid","arrayValue","directionalValue","orderedDocumentKey","documentKey"],TT=["indexId","uid","orderedDocumentKey"],ET=["userId","collectionPath","documentId"],kT=["userId","collectionPath","largestBatchId"],ST=["userId","collectionGroup","largestBatchId"],CT=["mutationQueues","mutations","documentMutations","remoteDocuments","targets","owner","targetGlobal","targetDocuments","clientMetadata","remoteDocumentGlobal","collectionParents","bundles","namedQueries"],AT=[...CT,"documentOverlays"],NT=["mutationQueues","mutations","documentMutations","remoteDocumentsV14","targets","owner","targetGlobal","targetDocuments","clientMetadata","remoteDocumentGlobal","collectionParents","bundles","namedQueries","documentOverlays"],RT=NT,xT=[...RT,"indexConfiguration","indexState","indexEntries"];class DT extends B_{constructor(e,t){super(),this.se=e,this.currentSequenceNumber=t}}function PT(e,t){var n=e;return W_.M(n.se,t)}class OT{constructor(e,t,n,r){this.batchId=e,this.localWriteTime=t,this.baseMutations=n,this.mutations=r}applyToRemoteDocument(e,t){var n=t.mutationResults;for(let r=0;r{const t=s.get(e.key),n=t.overlayedDocument;let r=this.applyToLocalView(n,t.mutatedFields);r=a.has(e.key)?null:r;var i=eI(n,r);null!==i&&o.set(e.key,i),n.isValidDocument()||n.convertToNoDocument(k_.min())}),o}keys(){return this.mutations.reduce((e,t)=>e.add(t.key),II())}isEqual(e){return this.batchId===e.batchId&&I_(this.mutations,e.mutations,(e,t)=>rI(e,t))&&I_(this.baseMutations,e.baseMutations,(e,t)=>rI(e,t))}}class MT{constructor(e,t,n,r){this.batch=e,this.commitVersion=t,this.mutationResults=n,this.docVersions=r}static from(e,t,n){c_(e.mutations.length===n.length);let r=wI;var i=e.mutations;for(let s=0;sJI(t.ie,e));for(let s=0;sJI(t.ie,e)),i=E_.fromMillis(e.localWriteTimeMs);return new OT(e.batchId,i,n,r)}function KT(e){var t,n=jT(e.readTime),r=void 0!==e.lastLimboFreeSnapshotVersion?jT(e.lastLimboFreeSnapshotVersion):k_.min();let i;return i=void 0!==e.query.documents?(c_(1===(t=e.query).documents.length),Cb(bb(WI(t.documents[0])))):Cb(eT(e.query)),new FT(i,e.targetId,0,e.lastListenSequenceNumber,n,r,uw.fromBase64String(e.resumeToken))}function WT(e,t){var n=BT(t.snapshotVersion),r=BT(t.lastLimboFreeSnapshotVersion),i=(gb(t.target)?XI:ZI)(e.ie,t.target),s=t.resumeToken.toBase64();return{targetId:t.targetId,canonicalId:pb(t.target),readTime:n,resumeToken:s,lastListenSequenceNumber:t.sequenceNumber,lastLimboFreeSnapshotVersion:r,query:i}}function zT(e){var t=eT({parent:e.parent,structuredQuery:e.structuredQuery});return"LAST"===e.limitType?Nb(t,t.limit,"L"):t}function GT(e,t){return new LT(t.largestBatchId,JI(e.ie,t.overlayMutation))}function HT(e,t){var n=t.path.lastSegment();return[e,aT(t.path.popLast()),n]}function QT(e,t,n,r){return{indexId:e,uid:t.uid||"",sequenceNumber:n,readTime:BT(r.readTime),documentKey:aT(r.documentKey.path),largestBatchId:r.largestBatchId}}class YT{getBundleMetadata(e,t){return JT(e).get(t).next(e=>{if(e)return{id:(t=e).bundleId,createTime:jT(t.createTime),version:t.version};var t})}saveBundleMetadata(e,t){return JT(e).put({bundleId:(n=t).id,createTime:BT(qI(n.createTime)),version:n.version});var n}getNamedQuery(e,t){return XT(e).get(t).next(e=>{if(e)return{name:(t=e).name,query:zT(t.bundledQuery),readTime:jT(t.readTime)};var t})}saveNamedQuery(e,t){return XT(e).put({name:(t=t).name,readTime:BT(qI(t.readTime)),bundledQuery:t.bundledQuery})}}function JT(e){return PT(e,"bundles")}function XT(e){return PT(e,"namedQueries")}class ZT{constructor(e,t){this.yt=e,this.userId=t}static re(e,t){var n=t.uid||"";return new ZT(e,n)}getOverlay(e,t){return e0(e).get(HT(this.userId,t)).next(e=>e?GT(this.yt,e):null)}getOverlays(e,t){const n=_I();return $_.forEach(t,t=>this.getOverlay(e,t).next(e=>{null!==e&&n.set(t,e)})).next(()=>n)}saveOverlays(r,i,e){const s=[];return e.forEach((e,t)=>{var n=new LT(i,t);s.push(this.oe(r,n))}),$_.waitFor(s)}removeOverlaysForBatchId(n,e,r){const t=new Set;e.forEach(e=>t.add(aT(e.getCollectionPath())));const i=[];return t.forEach(e=>{var t=IDBKeyRange.bound([this.userId,e,r],[this.userId,e,r+1],!1,!0);i.push(e0(n).Y("collectionPathOverlayIndex",t))}),$_.waitFor(i)}getOverlaysForCollection(e,t,n){const r=_I(),i=aT(t),s=IDBKeyRange.bound([this.userId,i,n],[this.userId,i,Number.POSITIVE_INFINITY],!0);return e0(e).W("collectionPathOverlayIndex",s).next(e=>{for(const t of e){const e=GT(this.yt,t);r.set(e.getKey(),e)}return r})}getOverlaysForCollectionGroup(e,t,n,i){const s=_I();let a;var r=IDBKeyRange.bound([this.userId,t,n],[this.userId,t,Number.POSITIVE_INFINITY],!0);return e0(e).Z({index:"collectionGroupOverlayIndex",range:r},(e,t,n)=>{const r=GT(this.yt,t);s.size()s)}oe(e,t){return e0(e).put(function(e,t,n){var[,r,i]=HT(t,n.mutation.key);return{userId:t,collectionPath:r,documentId:i,collectionGroup:n.mutation.key.getCollectionGroup(),largestBatchId:n.largestBatchId,overlayMutation:YI(e.ie,n.mutation)}}(this.yt,this.userId,t))}}function e0(e){return PT(e,"documentOverlays")}class t0{constructor(){}ue(e,t){this.ce(e,t),t.ae()}ce(e,t){var n,r;"nullValue"in e?this.he(t,5):"booleanValue"in e?(this.he(t,10),t.le(e.booleanValue?1:0)):"integerValue"in e?(this.he(t,15),t.le(pw(e.integerValue))):"doubleValue"in e?(n=pw(e.doubleValue),isNaN(n)?this.he(t,13):(this.he(t,15),cw(n)?t.le(0):t.le(n))):"timestampValue"in e?(r=e.timestampValue,this.he(t,20),"string"==typeof r?t.fe(r):(t.fe(`${r.seconds||""}`),t.le(r.nanos||0))):"stringValue"in e?(this.de(e.stringValue,t),this._e(t)):"bytesValue"in e?(this.he(t,30),t.we(fw(e.bytesValue)),this._e(t)):"referenceValue"in e?this.me(e.referenceValue,t):"geoPointValue"in e?(r=e.geoPointValue,this.he(t,45),t.le(r.latitude||0),t.le(r.longitude||0)):"mapValue"in e?Dw(e)?this.he(t,Number.MAX_SAFE_INTEGER):(this.ge(e.mapValue,t),this._e(t)):"arrayValue"in e?(this.ye(e.arrayValue,t),this._e(t)):o_()}de(e,t){this.he(t,25),this.pe(e,t)}pe(e,t){t.fe(e)}ge(e,t){var n=e.fields||{};this.he(t,55);for(const e of Object.keys(n))this.de(e,t),this.ce(n[e],t)}ye(e,t){var n=e.values||[];this.he(t,50);for(const e of n)this.ce(e,t)}me(e,t){this.he(t,37),R_.fromName(e).path.forEach(e=>{this.he(t,60),this.pe(e,t)})}he(e,t){e.le(t)}_e(e){e.le(2)}}function n0(e){var t=64-function(e){let t=0;for(let r=0;r<8;++r){var n=function(e){if(0===e)return 8;let t=0;return e>>4==0&&(t+=4,e<<=4),e>>6==0&&(t+=2,e<<=2),e>>7==0&&(t+=1),t}(255&e[r]);if(t+=n,8!==n)break}return t}(e);return Math.ceil(t/8)}t0.Ie=new t0;class r0{constructor(){this.buffer=new Uint8Array(1024),this.position=0}Te(e){const t=e[Symbol.iterator]();let n=t.next();for(;!n.done;)this.Ee(n.value),n=t.next();this.Ae()}Re(e){const t=e[Symbol.iterator]();let n=t.next();for(;!n.done;)this.be(n.value),n=t.next();this.Pe()}ve(e){for(const t of e){const e=t.charCodeAt(0);if(e<128)this.Ee(e);else if(e<2048)this.Ee(960|e>>>6),this.Ee(128|63&e);else if(t<"\ud800"||"\udbff">>12),this.Ee(128|63&e>>>6),this.Ee(128|63&e);else{const e=t.codePointAt(0);this.Ee(240|e>>>18),this.Ee(128|63&e>>>12),this.Ee(128|63&e>>>6),this.Ee(128|63&e)}}this.Ae()}Ve(e){for(const t of e){const e=t.charCodeAt(0);if(e<128)this.be(e);else if(e<2048)this.be(960|e>>>6),this.be(128|63&e);else if(t<"\ud800"||"\udbff">>12),this.be(128|63&e>>>6),this.be(128|63&e);else{const e=t.codePointAt(0);this.be(240|e>>>18),this.be(128|63&e>>>12),this.be(128|63&e>>>6),this.be(128|63&e)}}this.Pe()}Se(e){var t=this.De(e),n=n0(t);this.Ce(1+n),this.buffer[this.position++]=255&n;for(let r=t.length-n;r=this.Ke.length||!this.He(this.Ke[i++],e))return!1}return!0}We(e){for(const t of this.Ge)if(this.ze(t,e))return!0;return!1}ze(e,t){if(void 0===e||!e.field.isEqual(t.fieldPath))return!1;var n="array-contains"===e.op||"array-contains-any"===e.op;return 2===t.kind==n}He(e,t){return!!e.field.isEqual(t.fieldPath)&&(0===t.kind&&"asc"===e.dir||1===t.kind&&"desc"===e.dir)}}function h0(e){if(0===e.getFilters().length)return[];const t=function t(e){if(c_(e instanceof qw||e instanceof Vw),e instanceof qw)return e;if(1===e.filters.length)return t(e.filters[0]);const n=e.filters.map(e=>t(e));let r=Vw.create(n,e.op);return r=v0(r),f0(r)?r:(c_(r instanceof Vw),c_(Bw(r)),c_(1g0(e,t)))}(function t(n){var e;if(c_(n instanceof qw||n instanceof Vw),n instanceof qw){if(n instanceof Xw){const r=(null===(e=null===(e=n.value.arrayValue)||void 0===e?void 0:e.values)||void 0===e?void 0:e.map(e=>qw.create(n.field,"==",e)))||[];return Vw.create(r,"or")}return n}const r=n.filters.map(e=>t(e));return Vw.create(r,n.op)}(e));return c_(f0(t)),d0(t)||p0(t)?[t]:t.getFilters()}function d0(e){return e instanceof qw}function p0(e){return e instanceof Vw&&$w(e)}function f0(e){return d0(e)||p0(e)||function(e){if(e instanceof Vw&&jw(e)){for(const t of e.getFilters())if(!d0(t)&&!p0(t))return!1;return!0}return!1}(e)}function g0(e,t){var n,r;return c_(e instanceof qw||e instanceof Vw),c_(t instanceof qw||t instanceof Vw),v0(e instanceof qw?t instanceof qw?(n=e,r=t,Vw.create([n,r],"and")):m0(e,t):t instanceof qw?m0(t,e):function(e,t){if(c_(0g0(e,r));return Vw.create(i,"or")}(e,t))}function m0(t,e){if(Bw(e))return Ww(e,t.getFilters());var n=e.filters.map(e=>g0(t,e));return Vw.create(n,"or")}function v0(t){if(c_(t instanceof qw||t instanceof Vw),t instanceof qw)return t;const e=t.getFilters();if(1===e.length)return v0(e[0]);if(Kw(t))return t;const n=e.map(e=>v0(e)),r=[];return n.forEach(e=>{e instanceof qw?r.push(e):e instanceof Vw&&(e.op===t.op?r.push(...e.filters):r.push(e))}),1===r.length?r[0]:Vw.create(r,t.op)}class y0{constructor(){this.Je=new _0}addToCollectionParentIndex(e,t){return this.Je.add(t),$_.resolve()}getCollectionParents(e,t){return $_.resolve(this.Je.getEntries(t))}addFieldIndex(e,t){return $_.resolve()}deleteFieldIndex(e,t){return $_.resolve()}getDocumentsMatchingTarget(e,t){return $_.resolve(null)}getIndexType(e,t){return $_.resolve(0)}getFieldIndexes(e,t){return $_.resolve([])}getNextCollectionGroupToUpdate(e){return $_.resolve(null)}getMinOffset(e,t){return $_.resolve(U_.min())}getMinOffsetFromCollectionGroup(e,t){return $_.resolve(U_.min())}updateCollectionGroup(e,t,n){return $_.resolve()}updateIndexEntries(e,t){return $_.resolve()}}class _0{constructor(){this.index={}}add(e){const t=e.lastSegment(),n=e.popLast(),r=this.index[t]||new sb(C_.comparator),i=!r.has(n);return this.index[t]=r.add(n),i}has(e){const t=e.lastSegment(),n=e.popLast(),r=this.index[t];return r&&r.has(n)}getEntries(e){return(this.index[e]||new sb(C_.comparator)).toArray()}}const w0=new Uint8Array(0);class b0{constructor(e,t){this.user=e,this.databaseId=t,this.Ye=new _0,this.Xe=new fI(e=>pb(e),(e,t)=>fb(e,t)),this.uid=e.uid||""}addToCollectionParentIndex(e,t){if(this.Ye.has(t))return $_.resolve();var n=t.lastSegment(),r=t.popLast();e.addOnCommittedListener(()=>{this.Ye.add(t)});r={collectionId:n,parent:aT(r)};return I0(e).put(r)}getCollectionParents(e,n){const r=[],t=IDBKeyRange.bound([n,""],[T_(n),""],!1,!0);return I0(e).W(t).next(e=>{for(const t of e){if(t.collectionId!==n)break;r.push(cT(t.parent))}return r})}addFieldIndex(e,t){const n=E0(e),r={indexId:t.indexId,collectionGroup:t.collectionGroup,fields:t.fields.map(e=>[e.fieldPath.canonicalString(),e.kind])};delete r.indexId;const i=n.add(r);if(t.indexState){const n=k0(e);return i.next(e=>{n.put(QT(e,this.user,t.indexState.sequenceNumber,t.indexState.offset))})}return i.next()}deleteFieldIndex(e,t){const n=E0(e),r=k0(e),i=T0(e);return n.delete(t.indexId).next(()=>r.delete(IDBKeyRange.bound([t.indexId],[t.indexId+1],!1,!0))).next(()=>i.delete(IDBKeyRange.bound([t.indexId],[t.indexId+1],!1,!0)))}getDocumentsMatchingTarget(e,l){const u=T0(e);let h=!0;const n=new Map;return $_.forEach(this.Ze(l),t=>this.tn(e,t).next(e=>{h=h&&!!e,n.set(t,e)})).next(()=>{if(h){let c=II();const h=[];return $_.forEach(n,(e,t)=>{r_("IndexedDbIndexManager",`Using index ${o=e,`id=${o.indexId}|cg=${o.collectionGroup}|f=${o.fields.map(e=>`${e.fieldPath}:${e.kind}`).join(",")}`} to execute ${pb(l)}`);var n=function(e,t){var n=D_(t);if(void 0===n)return null;for(const t of mb(e,n.fieldPath))switch(t.op){case"array-contains-any":return t.value.arrayValue.values||[];case"array-contains":return[t.value]}return null}(t,e),r=function(e,t){const n=new Map;for(const r of P_(t))for(const t of mb(e,r.fieldPath))switch(t.op){case"==":case"in":n.set(r.fieldPath.canonicalString(),t.value);break;case"not-in":case"!=":return n.set(r.fieldPath.canonicalString(),t.value),Array.from(n.values())}return null}(t,e),i=function(e,t){const n=[];let r=!0;for(const i of P_(t)){const t=(0===i.kind?vb:yb)(e,i.fieldPath,e.startAt);n.push(t.value),r=r&&t.inclusive}return new Mw(n,r)}(t,e),s=function(e,t){const n=[];let r=!0;for(const i of P_(t)){const t=(0===i.kind?yb:vb)(e,i.fieldPath,e.endAt);n.push(t.value),r=r&&t.inclusive}return new Mw(n,r)}(t,e),a=this.en(e,t,i),o=this.en(e,t,s),r=this.nn(e,t,r),r=this.sn(e.indexId,n,a,i.inclusive,o,s.inclusive,r);return $_.forEach(r,e=>u.J(e,l.limit).next(e=>{e.forEach(e=>{var t=R_.fromSegments(e.documentKey);c.has(t)||(c=c.add(t),h.push(t))})}))}).next(()=>h)}return $_.resolve(null)})}Ze(t){let e=this.Xe.get(t);return e||(e=0===t.filters.length?[t]:h0(Vw.create(t.filters,"and")).map(e=>db(t.path,t.collectionGroup,t.orderBy,e.getFilters(),t.limit,t.startAt,t.endAt)),this.Xe.set(t,e),e)}sn(t,e,n,r,i,s,a){const o=(null!=e?e.length:1)*Math.max(n.length,i.length),c=o/(null!=e?e.length:1),l=[];for(let u=0;uthis.on(t,o,e,!0));l.push(...this.createRange(h,d,p))}return l}on(e,t,n,r){const i=new o0(e,R_.empty(),t,n);return r?i:i.Ue()}un(e,t,n,r){const i=new o0(e,R_.empty(),t,n);return r?i.Ue():i}tn(e,t){const r=new u0(t),n=null!=t.collectionGroup?t.collectionGroup:t.path.lastSegment();return this.getFieldIndexes(e,n).next(e=>{let t=null;for(const n of e)r.je(n)&&(!t||n.fields.length>t.fields.length)&&(t=n);return t})}getIndexType(e,t){let n=2;const r=this.Ze(t);return $_.forEach(r,t=>this.tn(e,t).next(e=>{e?0!==n&&e.fields.lengthnull!==t.limit&&1e instanceof qw&&e.field.isEqual(t)&&("in"===e.op||"not-in"===e.op))}getFieldIndexes(e,t){const n=E0(e),r=k0(e);return(t?n.W("collectionGroupIndex",IDBKeyRange.bound(t,t)):n.W()).next(e=>{const s=[];return $_.forEach(e,i=>r.get([i.indexId,this.uid]).next(e=>{var t,n,r;s.push((t=i,n=(e=e)?new M_(e.sequenceNumber,new U_(jT(e.readTime),new R_(cT(e.documentKey)),e.largestBatchId)):M_.empty(),r=t.fields.map(([e,t])=>new O_(N_.fromServerFormat(e),t)),new x_(t.indexId,t.collectionGroup,r,n)))})).next(()=>s)})}getNextCollectionGroupToUpdate(e){return this.getFieldIndexes(e).next(e=>0===e.length?null:(e.sort((e,t)=>{var n=e.indexState.sequenceNumber-t.indexState.sequenceNumber;return 0!=n?n:b_(e.collectionGroup,t.collectionGroup)}),e[0].collectionGroup))}updateCollectionGroup(e,n,r){const i=E0(e),s=k0(e);return this.dn(e).next(t=>i.W("collectionGroupIndex",IDBKeyRange.bound(n,n)).next(e=>$_.forEach(e,e=>s.put(QT(e.indexId,this.user,t,r)))))}updateIndexEntries(i,e){const n=new Map;return $_.forEach(e,(t,r)=>{var e=n.get(t.collectionGroup);return(e?$_.resolve(e):this.getFieldIndexes(i,t.collectionGroup)).next(e=>(n.set(t.collectionGroup,e),$_.forEach(e,n=>this._n(i,t,n).next(e=>{var t=this.wn(r,n);return e.isEqual(t)?$_.resolve():this.mn(i,r,n,e,t)}))))})}gn(e,t,n,r){return T0(e).put({indexId:r.indexId,uid:this.uid,arrayValue:r.arrayValue,directionalValue:r.directionalValue,orderedDocumentKey:this.an(n,t.key),documentKey:t.key.path.toArray()})}yn(e,t,n,r){return T0(e).delete([r.indexId,this.uid,r.arrayValue,r.directionalValue,this.an(n,t.key),t.key.path.toArray()])}_n(e,n,r){const t=T0(e);let i=new sb(c0);return t.Z({index:"documentKeyIndex",range:IDBKeyRange.only([r.indexId,this.uid,this.an(r,n)])},(e,t)=>{i=i.add(new o0(r.indexId,n,t.arrayValue,t.directionalValue))}).next(()=>i)}wn(e,t){let n=new sb(c0);var r=this.cn(t,e);if(null==r)return n;const i=D_(t);if(null!=i){var s=e.data.field(i.fieldPath);if(Cw(s))for(const i of s.arrayValue.values||[])n=n.add(new o0(t.indexId,e.key,this.rn(i),r))}else n=n.add(new o0(t.indexId,e.key,w0,r));return n}mn(t,n,r,l,e){r_("IndexedDbIndexManager","Updating index entries for document '%s'",n.key);const i=[];return function(e,n,r,i){var s=l.getIterator(),a=e.getIterator();let o=ob(s),c=ob(a);for(;o||c;){let e=!1,t=!1;if(o&&c){const r=n(o,c);r<0?t=!0:0{i.push(this.gn(t,n,r,e))},e=>{i.push(this.yn(t,n,r,e))}),$_.waitFor(i)}dn(e){let r=1;return k0(e).Z({index:"sequenceNumberIndex",reverse:!0,range:IDBKeyRange.upperBound([this.uid,Number.MAX_SAFE_INTEGER])},(e,t,n)=>{n.done(),r=t.sequenceNumber+1}).next(()=>r)}createRange(e,t,n){n=n.sort((e,t)=>c0(e,t)).filter((e,t,n)=>!t||0!==c0(e,n[t-1]));const r=[];r.push(e);for(const i of n){const n=c0(i,e),s=c0(i,t);if(0===n)r[0]=e.Ue();else if(0this.tn(t,e).next(e=>e||o_())).next(S0)}}function I0(e){return PT(e,"collectionParents")}function T0(e){return PT(e,"indexEntries")}function E0(e){return PT(e,"indexConfiguration")}function k0(e){return PT(e,"indexState")}function S0(e){c_(0!==e.length);let t=e[0].indexState.offset,n=t.largestBatchId;for(let i=1;i(o++,n.delete()));s.push(c.next(()=>{c_(1===o)}));const l=[];for(const e of n.mutations){const r=hT(t,e.key.path,n.batchId);s.push(i.delete(r)),l.push(e.key)}return $_.waitFor(s).next(()=>l)}function R0(e){if(!e)return 0;let t;if(e.document)t=e.document;else if(e.unknownDocument)t=e.unknownDocument;else{if(!e.noDocument)throw o_();t=e.noDocument}return JSON.stringify(t).length}A0.DEFAULT_COLLECTION_PERCENTILE=10,A0.DEFAULT_MAX_SEQUENCE_NUMBERS_TO_COLLECT=1e3,A0.DEFAULT=new A0(41943040,A0.DEFAULT_COLLECTION_PERCENTILE,A0.DEFAULT_MAX_SEQUENCE_NUMBERS_TO_COLLECT),A0.DISABLED=new A0(-1,0,0);class x0{constructor(e,t,n,r){this.userId=e,this.yt=t,this.indexManager=n,this.referenceDelegate=r,this.In={}}static re(e,t,n,r){c_(""!==e.uid);var i=e.isAuthenticated()?e.uid:"";return new x0(i,t,n,r)}checkEmpty(e){let r=!0;var t=IDBKeyRange.bound([this.userId,Number.NEGATIVE_INFINITY],[this.userId,Number.POSITIVE_INFINITY]);return P0(e).Z({index:"userMutationsIndex",range:t},(e,t,n)=>{r=!1,n.done()}).next(()=>r)}addMutationBatch(u,h,d,p){const f=O0(u),g=P0(u);return g.add({}).next(e=>{c_("number"==typeof e);const t=new OT(e,h,d,p),n=(i=this.yt,s=this.userId,a=t,o=a.baseMutations.map(e=>YI(i.ie,e)),c=a.mutations.map(e=>YI(i.ie,e)),{userId:s,batchId:a.batchId,localWriteTimeMs:a.localWriteTime.toMillis(),baseMutations:o,mutations:c}),r=[];var i,s,a,o,c;let l=new sb((e,t)=>b_(e.canonicalString(),t.canonicalString()));for(const u of p){const h=hT(this.userId,u.key.path,e);l=l.add(u.key.path.popLast()),r.push(g.put(n)),r.push(f.put(h,dT))}return l.forEach(e=>{r.push(this.indexManager.addToCollectionParentIndex(u,e))}),u.addOnCommittedListener(()=>{this.In[e]=t.keys()}),$_.waitFor(r).next(()=>t)})}lookupMutationBatch(e,t){return P0(e).get(t).next(e=>e?(c_(e.userId===this.userId),$T(this.yt,e)):null)}Tn(e,n){return this.In[n]?$_.resolve(this.In[n]):this.lookupMutationBatch(e,n).next(e=>{if(e){var t=e.keys();return this.In[n]=t}return null})}getNextMutationBatchAfterBatchId(e,t){const r=t+1,n=IDBKeyRange.lowerBound([this.userId,r]);let i=null;return P0(e).Z({index:"userMutationsIndex",range:n},(e,t,n)=>{t.userId===this.userId&&(c_(t.batchId>=r),i=$T(this.yt,t)),n.done()}).next(()=>i)}getHighestUnacknowledgedBatchId(e){var t=IDBKeyRange.upperBound([this.userId,Number.POSITIVE_INFINITY]);let r=-1;return P0(e).Z({index:"userMutationsIndex",range:t,reverse:!0},(e,t,n)=>{r=t.batchId,n.done()}).next(()=>r)}getAllMutationBatches(e){var t=IDBKeyRange.bound([this.userId,-1],[this.userId,Number.POSITIVE_INFINITY]);return P0(e).W("userMutationsIndex",t).next(e=>e.map(e=>$T(this.yt,e)))}getAllMutationBatchesAffectingDocumentKey(a,o){const e=uT(this.userId,o.path),t=IDBKeyRange.lowerBound(e),c=[];return O0(a).Z({range:t},(e,t,n)=>{var[r,i,s]=e,i=cT(i);if(r===this.userId&&o.path.isEqual(i))return P0(a).get(s).next(e=>{if(!e)throw o_();c_(e.userId===this.userId),c.push($T(this.yt,e))});n.done()}).next(()=>c)}getAllMutationBatchesAffectingDocumentKeys(t,e){let o=new sb(b_);const n=[];return e.forEach(a=>{var e=uT(this.userId,a.path),e=IDBKeyRange.lowerBound(e),e=O0(t).Z({range:e},(e,t,n)=>{var[r,i,s]=e,i=cT(i);r===this.userId&&a.path.isEqual(i)?o=o.add(s):n.done()});n.push(e)}),$_.waitFor(n).next(()=>this.En(t,o))}getAllMutationBatchesAffectingQuery(e,t){const a=t.path,o=a.length+1,n=uT(this.userId,a),r=IDBKeyRange.lowerBound(n);let c=new sb(b_);return O0(e).Z({range:r},(e,t,n)=>{var[r,i,s]=e,i=cT(i);r===this.userId&&a.isPrefixOf(i)?i.length===o&&(c=c.add(s)):n.done()}).next(()=>this.En(e,c))}En(t,e){const n=[],r=[];return e.forEach(e=>{r.push(P0(t).get(e).next(e=>{if(null===e)throw o_();c_(e.userId===this.userId),n.push($T(this.yt,e))}))}),$_.waitFor(r).next(()=>n)}removeMutationBatch(t,n){return N0(t.se,this.userId,n).next(e=>(t.addOnCommittedListener(()=>{this.An(n.batchId)}),$_.forEach(e,e=>this.referenceDelegate.markPotentiallyOrphaned(t,e))))}An(e){delete this.In[e]}performConsistencyCheck(n){return this.checkEmpty(n).next(e=>{if(!e)return $_.resolve();var t=IDBKeyRange.lowerBound([this.userId]);const r=[];return O0(n).Z({range:t},(e,t,n)=>{if(e[0]===this.userId){const t=cT(e[1]);r.push(t)}else n.done()}).next(()=>{c_(0===r.length)})})}containsKey(e,t){return D0(e,this.userId,t)}Rn(e){return M0(e).get(this.userId).next(e=>e||{userId:this.userId,lastAcknowledgedBatchId:-1,lastStreamToken:""})}}function D0(e,s,t){const n=uT(s,t.path),a=n[1],r=IDBKeyRange.lowerBound(n);let o=!1;return O0(e).Z({range:r,X:!0},(e,t,n)=>{var[r,i]=e;r===s&&i===a&&(o=!0),n.done()}).next(()=>o)}function P0(e){return PT(e,"mutations")}function O0(e){return PT(e,"documentMutations")}function M0(e){return PT(e,"mutationQueues")}class L0{constructor(e){this.bn=e}next(){return this.bn+=2,this.bn}static Pn(){return new L0(0)}static vn(){return new L0(-1)}}class F0{constructor(e,t){this.referenceDelegate=e,this.yt=t}allocateTargetId(n){return this.Vn(n).next(e=>{const t=new L0(e.highestTargetId);return e.highestTargetId=t.next(),this.Sn(n,e).next(()=>e.highestTargetId)})}getLastRemoteSnapshotVersion(e){return this.Vn(e).next(e=>k_.fromTimestamp(new E_(e.lastRemoteSnapshotVersion.seconds,e.lastRemoteSnapshotVersion.nanoseconds)))}getHighestSequenceNumber(e){return this.Vn(e).next(e=>e.highestListenSequenceNumber)}setTargetsMetadata(t,n,r){return this.Vn(t).next(e=>(e.highestListenSequenceNumber=n,r&&(e.lastRemoteSnapshotVersion=r.toTimestamp()),n>e.highestListenSequenceNumber&&(e.highestListenSequenceNumber=n),this.Sn(t,e)))}addTargetData(t,n){return this.Dn(t,n).next(()=>this.Vn(t).next(e=>(e.targetCount+=1,this.Cn(n,e),this.Sn(t,e))))}updateTargetData(e,t){return this.Dn(e,t)}removeTargetData(t,e){return this.removeMatchingKeysForTargetId(t,e.targetId).next(()=>U0(t).delete(e.targetId)).next(()=>this.Vn(t)).next(e=>(c_(0{var n=KT(t);n.sequenceNumber<=i&&null===s.get(n.targetId)&&(a++,o.push(this.removeTargetData(r,n)))}).next(()=>$_.waitFor(o)).next(()=>a)}forEachTarget(e,r){return U0(e).Z((e,t)=>{var n=KT(t);r(n)})}Vn(e){return q0(e).get("targetGlobalKey").next(e=>(c_(null!==e),e))}Sn(e,t){return q0(e).put("targetGlobalKey",t)}Dn(e,t){return U0(e).put(WT(this.yt,t))}Cn(e,t){let n=!1;return e.targetId>t.highestTargetId&&(t.highestTargetId=e.targetId,n=!0),e.sequenceNumber>t.highestListenSequenceNumber&&(t.highestListenSequenceNumber=e.sequenceNumber,n=!0),n}getTargetCount(e){return this.Vn(e).next(e=>e.targetCount)}getTargetData(e,i){var t=pb(i),t=IDBKeyRange.bound([t,Number.NEGATIVE_INFINITY],[t,Number.POSITIVE_INFINITY]);let s=null;return U0(e).Z({range:t,index:"queryTargetsIndex"},(e,t,n)=>{var r=KT(t);fb(i,r.target)&&(s=r,n.done())}).next(()=>s)}addMatchingKeys(n,e,r){const i=[],s=V0(n);return e.forEach(e=>{var t=aT(e.path);i.push(s.put({targetId:r,path:t})),i.push(this.referenceDelegate.addReference(n,r,e))}),$_.waitFor(i)}removeMatchingKeys(n,e,r){const i=V0(n);return $_.forEach(e,e=>{var t=aT(e.path);return $_.waitFor([i.delete([r,t]),this.referenceDelegate.removeReference(n,r,e)])})}removeMatchingKeysForTargetId(e,t){const n=V0(e),r=IDBKeyRange.bound([t],[t+1],!1,!0);return n.delete(r)}getMatchingKeysForTargetId(e,t){const n=IDBKeyRange.bound([t],[t+1],!1,!0),r=V0(e);let i=II();return r.Z({range:n,X:!0},(e,t,n)=>{var r=cT(e[1]),r=new R_(r);i=i.add(r)}).next(()=>i)}containsKey(e,t){var n=aT(t.path),n=IDBKeyRange.bound([n],[T_(n)],!1,!0);let r=0;return V0(e).Z({index:"documentTargetsIndex",X:!0,range:n},([e],t,n)=>{0!==e&&(r++,n.done())}).next(()=>0e?KT(e):null)}}function U0(e){return PT(e,"targets")}function q0(e){return PT(e,"targetGlobal")}function V0(e){return PT(e,"targetDocuments")}function B0([e,t],[n,r]){var i=b_(e,n);return 0===i?b_(t,r):i}class j0{constructor(e){this.xn=e,this.buffer=new sb(B0),this.Nn=0}kn(){return++this.Nn}On(e){var t=[e,this.kn()];if(this.buffer.size{this.Mn=null;try{await this.localStore.collectGarbage(this.garbageCollector)}catch(e){H_(e)?r_("LruGarbageCollector","Ignoring IndexedDB error during garbage collection: ",e):await j_(e)}await this.Fn(3e5)})}}class K0{constructor(e,t){this.$n=e,this.params=t}calculateTargetCount(e,t){return this.$n.Bn(e).next(e=>Math.floor(t/100*e))}nthSequenceNumber(e,t){if(0===t)return $_.resolve(tw.at);const n=new j0(t);return this.$n.forEachTarget(e,e=>n.On(e.sequenceNumber)).next(()=>this.$n.Ln(e,e=>n.On(e))).next(()=>n.maxValue)}removeTargets(e,t,n){return this.$n.removeTargets(e,t,n)}removeOrphanedDocuments(e,t){return this.$n.removeOrphanedDocuments(e,t)}collect(t,n){return-1===this.params.cacheSizeCollectionThreshold?(r_("LruGarbageCollector","Garbage collection skipped; disabled"),$_.resolve(C0)):this.getCacheSize(t).next(e=>e(i=e>this.params.maximumSequenceNumbersToCollect?(r_("LruGarbageCollector",`Capping sequence numbers to collect down to the maximum of ${this.params.maximumSequenceNumbersToCollect} from ${e}`),this.params.maximumSequenceNumbersToCollect):e,a=Date.now(),this.nthSequenceNumber(t,i))).next(e=>(r=e,o=Date.now(),this.removeTargets(t,r,n))).next(e=>(s=e,c=Date.now(),this.removeOrphanedDocuments(t,r))).next(e=>(l=Date.now(),n_()<=g.DEBUG&&r_("LruGarbageCollector",`LRU Garbage Collection\n\tCounted targets in ${a-u}ms\n\tDetermined least recently used ${i} in `+(o-a)+"ms\n"+`\tRemoved ${s} targets in `+(c-o)+"ms\n"+`\tRemoved ${e} documents in `+(l-c)+"ms\n"+`Total Duration: ${l-u}ms`),$_.resolve({didRun:!0,sequenceNumbersCollected:i,targetsRemoved:s,documentsRemoved:e})))}}class W0{constructor(e,t){this.db=e,this.garbageCollector=(e=this,t=t,new K0(e,t))}Bn(e){const n=this.Un(e);return this.db.getTargetCache().getTargetCount(e).next(t=>n.next(e=>t+e))}Un(e){let t=0;return this.Ln(e,e=>{t++}).next(()=>t)}forEachTarget(e,t){return this.db.getTargetCache().forEachTarget(e,t)}Ln(e,n){return this.Kn(e,(e,t)=>n(t))}addReference(e,t,n){return z0(e,n)}removeReference(e,t,n){return z0(e,n)}removeTargets(e,t,n){return this.db.getTargetCache().removeTargets(e,t,n)}markPotentiallyOrphaned(e,t){return z0(e,t)}Gn(t,n){let r=!1;return M0(t).tt(e=>D0(t,e,n).next(e=>(e&&(r=!0),$_.resolve(!e)))).next(()=>r)}removeOrphanedDocuments(n,r){const i=this.db.getRemoteDocumentCache().newChangeBuffer(),s=[];let a=0;return this.Kn(n,(t,e)=>{if(e<=r){const r=this.Gn(n,t).next(e=>{if(!e)return a++,i.getEntry(n,t).next(()=>(i.removeEntry(t,k_.min()),V0(n).delete([0,aT(t.path)])))});s.push(r)}}).next(()=>$_.waitFor(s)).next(()=>i.apply(n)).next(()=>a)}removeTarget(e,t){var n=t.withSequenceNumber(e.currentSequenceNumber);return this.db.getTargetCache().updateTargetData(e,n)}updateLimboDocument(e,t){return z0(e,t)}Kn(e,r){const t=V0(e);let i,s=tw.at;return t.Z({index:"documentTargetsIndex"},([e],{path:t,sequenceNumber:n})=>{0===e?(s!==tw.at&&r(new R_(cT(i)),s),s=n,i=t):s=tw.at}).next(()=>{s!==tw.at&&r(new R_(cT(i)),s)})}getCacheSize(e){return this.db.getRemoteDocumentCache().getSize(e)}}function z0(e,t){return V0(e).put((e=e.currentSequenceNumber,{targetId:0,path:aT(t.path),sequenceNumber:e}))}class G0{constructor(){this.changes=new fI(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,ub.newInvalidDocument(e).setReadTime(t))}getEntry(e,t){this.assertNotApplied();var n=this.changes.get(t);return void 0!==n?$_.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 H0{constructor(e){this.yt=e}setIndexManager(e){this.indexManager=e}addEntry(e,t,n){return X0(e).put(n)}removeEntry(e,n,t){return X0(e).delete(function(e){const t=n.path.toArray();return[t.slice(0,t.length-2),t[t.length-2],VT(e),t[t.length-1]]}(t))}updateMetadata(t,n){return this.getMetadata(t).next(e=>(e.byteSize+=n,this.Qn(t,e)))}getEntry(e,n){let r=ub.newInvalidDocument(n);return X0(e).Z({index:"documentKeyIndex",range:IDBKeyRange.only(Z0(n))},(e,t)=>{r=this.jn(n,t)}).next(()=>r)}Wn(e,n){let r={size:0,document:ub.newInvalidDocument(n)};return X0(e).Z({index:"documentKeyIndex",range:IDBKeyRange.only(Z0(n))},(e,t)=>{r={document:this.jn(n,t),size:R0(t)}}).next(()=>r)}getEntries(e,t){let r=gI;return this.zn(e,t,(e,t)=>{var n=this.jn(e,t);r=r.insert(e,n)}).next(()=>r)}Hn(e,t){let r=gI,i=new nb(R_.comparator);return this.zn(e,t,(e,t)=>{var n=this.jn(e,t);r=r.insert(e,n),i=i.insert(e,R0(t))}).next(()=>({documents:r,Jn:i}))}zn(e,t,i){if(t.isEmpty())return $_.resolve();let n=new sb(tE);t.forEach(e=>n=n.add(e));const r=IDBKeyRange.bound(Z0(n.first()),Z0(n.last())),s=n.getIterator();let a=s.getNext();return X0(e).Z({index:"documentKeyIndex",range:r},(e,t,n)=>{for(var r=R_.fromSegments([...t.prefixPath,t.collectionGroup,t.documentId]);a&&tE(a,r)<0;)i(a,null),a=s.getNext();a&&a.isEqual(r)&&(i(a,t),a=s.hasNext()?s.getNext():null),a?n.j(Z0(a)):n.done()}).next(()=>{for(;a;)i(a,null),a=s.hasNext()?s.getNext():null})}getAllFromCollection(e,t,n){var r=[t.popLast().toArray(),t.lastSegment(),VT(n.readTime),n.documentKey.path.isEmpty()?"":n.documentKey.path.lastSegment()],i=[t.popLast().toArray(),t.lastSegment(),[Number.MAX_SAFE_INTEGER,Number.MAX_SAFE_INTEGER],""];return X0(e).W(IDBKeyRange.bound(r,i,!0)).next(e=>{let t=gI;for(const n of e){const e=this.jn(R_.fromSegments(n.prefixPath.concat(n.collectionGroup,n.documentId)),n);t=t.insert(e.key,e)}return t})}getAllFromCollectionGroup(e,t,n,i){let s=gI;var r=eE(t,n),a=eE(t,U_.max());return X0(e).Z({index:"collectionGroupIndex",range:IDBKeyRange.bound(r,a,!0)},(e,t,n)=>{var r=this.jn(R_.fromSegments(t.prefixPath.concat(t.collectionGroup,t.documentId)),t);s=s.insert(r.key,r),s.size===i&&n.done()}).next(()=>s)}newChangeBuffer(e){return new Y0(this,!!e&&e.trackRemovals)}getSize(e){return this.getMetadata(e).next(e=>e.byteSize)}getMetadata(e){return J0(e).get("remoteDocumentGlobalKey").next(e=>(c_(!!e),e))}Qn(e,t){return J0(e).put("remoteDocumentGlobalKey",t)}jn(e,t){if(t){const e=function(e,t){let n;if(t.document)n=QI(e.ie,t.document,!!t.hasCommittedMutations);else if(t.noDocument){const e=R_.fromSegments(t.noDocument.path),i=jT(t.noDocument.readTime);n=ub.newNoDocument(e,i),t.hasCommittedMutations&&n.setHasCommittedMutations()}else{if(!t.unknownDocument)return o_();{const e=R_.fromSegments(t.unknownDocument.path),s=jT(t.unknownDocument.version);n=ub.newUnknownDocument(e,s)}}return t.readTime&&n.setReadTime((t=t.readTime,r=new E_(t[0],t[1]),k_.fromTimestamp(r))),n;var r}(this.yt,t);if(!e.isNoDocument()||!e.version.isEqual(k_.min()))return e}return ub.newInvalidDocument(e)}}function Q0(e){return new H0(e)}class Y0 extends G0{constructor(e,t){super(),this.Yn=e,this.trackRemovals=t,this.Xn=new fI(e=>e.toString(),(e,t)=>e.isEqual(t))}applyChanges(s){const a=[];let o=0,c=new sb((e,t)=>b_(e.canonicalString(),t.canonicalString()));return this.changes.forEach((e,t)=>{var n=this.Xn.get(e);if(a.push(this.Yn.removeEntry(s,e,n.readTime)),t.isValidDocument()){var r=qT(this.Yn.yt,t);c=c.add(e.path.popLast());var i=R0(r);o+=i-n.size,a.push(this.Yn.addEntry(s,e,r))}else if(o-=n.size,this.trackRemovals){const o=qT(this.Yn.yt,t.convertToNoDocument(k_.min()));a.push(this.Yn.addEntry(s,e,o))}}),c.forEach(e=>{a.push(this.Yn.indexManager.addToCollectionParentIndex(s,e))}),a.push(this.Yn.updateMetadata(s,o)),$_.waitFor(a)}getFromCache(e,t){return this.Yn.Wn(e,t).next(e=>(this.Xn.set(t,{size:e.size,readTime:e.document.readTime}),e.document))}getAllFromCache(e,t){return this.Yn.Hn(e,t).next(({documents:n,Jn:e})=>(e.forEach((e,t)=>{this.Xn.set(e,{size:t,readTime:n.get(e).readTime})}),n))}}function J0(e){return PT(e,"remoteDocumentGlobal")}function X0(e){return PT(e,"remoteDocumentsV14")}function Z0(e){const t=e.path.toArray();return[t.slice(0,t.length-2),t[t.length-2],t[t.length-1]]}function eE(e,t){const n=t.documentKey.path.toArray();return[e,VT(t.readTime),n.slice(0,n.length-2),0(r=e,this.remoteDocumentCache.getEntry(t,n))).next(e=>(null!==r&&nI(r.mutation,e,cb.empty(),E_.now()),e))}getDocuments(t,e){return this.remoteDocumentCache.getEntries(t,e).next(e=>this.getLocalViewOfDocuments(t,e,II()).next(()=>e))}getLocalViewOfDocuments(e,t,n=II()){const r=_I();return this.populateOverlays(e,r,t).next(()=>this.computeViews(e,t,r,n).next(e=>{let n=vI();return e.forEach((e,t)=>{n=n.insert(e,t.overlayedDocument)}),n}))}getOverlayedDocuments(e,t){const n=_I();return this.populateOverlays(e,n,t).next(()=>this.computeViews(e,t,n,II()))}populateOverlays(e,n,t){const r=[];return t.forEach(e=>{n.has(e)||r.push(e)}),this.documentOverlayCache.getOverlays(e,r).next(e=>{e.forEach((e,t)=>{n.set(e,t)})})}computeViews(e,t,r,i){let s=gI;const a=_I(),o=_I();return t.forEach((e,t)=>{const n=r.get(t.key);i.has(t.key)&&(void 0===n||n.mutation instanceof sI)?s=s.insert(t.key,t):void 0!==n?(a.set(t.key,n.mutation.getFieldMask()),nI(n.mutation,t,n.mutation.getFieldMask(),E_.now())):a.set(t.key,cb.empty())}),this.recalculateAndSaveOverlays(e,s).next(e=>(e.forEach((e,t)=>a.set(e,t)),t.forEach((e,t)=>{var n;return o.set(e,new nE(t,null!==(n=a.get(e))&&void 0!==n?n:null))}),o))}recalculateAndSaveOverlays(s,a){const o=_I();let c=new nb((e,t)=>e-t),l=II();return this.mutationQueue.getAllMutationBatchesAffectingDocumentKeys(s,a).next(e=>{for(const r of e)r.keys().forEach(e=>{var t,n=a.get(e);null!==n&&(t=o.get(e)||cb.empty(),t=r.applyToLocalView(n,t),o.set(e,t),t=(c.get(r.batchId)||II()).add(e),c=c.insert(r.batchId,t))})}).next(()=>{const e=[],t=c.getReverseIterator();for(;t.hasNext();){const c=t.getNext(),n=c.key,r=c.value,i=_I();r.forEach(e=>{var t;l.has(e)||(null!==(t=eI(a.get(e),o.get(e)))&&i.set(e,t),l=l.add(e))}),e.push(this.documentOverlayCache.saveOverlays(s,n,i))}return $_.waitFor(e)}).next(()=>o)}recalculateAndSaveOverlaysForDocumentKeys(t,e){return this.remoteDocumentCache.getEntries(t,e).next(e=>this.recalculateAndSaveOverlays(t,e))}getDocumentsMatchingQuery(e,t,n){return r=t,R_.isDocumentKey(r.path)&&null===r.collectionGroup&&0===r.filters.length?this.getDocumentsMatchingDocumentQuery(e,t.path):kb(t)?this.getDocumentsMatchingCollectionGroupQuery(e,t,n):this.getDocumentsMatchingCollectionQuery(e,t,n);var r}getNextDocuments(s,t,a,o){return this.remoteDocumentCache.getAllFromCollectionGroup(s,t,a,o).next(n=>{const e=0$_.forEach(e,(t,e)=>(r{i=i.insert(t,e)}))).next(()=>this.populateOverlays(s,e,n)).next(()=>this.computeViews(s,i,e,II())).next(e=>({batchId:r,changes:yI(e)})))})}getDocumentsMatchingDocumentQuery(e,t){return this.getDocument(e,new R_(t)).next(e=>{let t=vI();return e.isFoundDocument()&&(t=t.insert(e.key,e)),t})}getDocumentsMatchingCollectionGroupQuery(r,i,s){const a=i.collectionGroup;let o=vI();return this.indexManager.getCollectionParents(r,a).next(e=>$_.forEach(e,e=>{var t,n=(t=i,e=e.child(a),new _b(e,null,t.explicitOrderBy.slice(),t.filters.slice(),t.limit,t.limitType,t.startAt,t.endAt));return this.getDocumentsMatchingCollectionQuery(r,n,s).next(e=>{e.forEach((e,t)=>{o=o.insert(e,t)})})}).next(()=>o))}getDocumentsMatchingCollectionQuery(t,s,n){let a;return this.remoteDocumentCache.getAllFromCollection(t,s.path,n).next(e=>(a=e,this.documentOverlayCache.getOverlaysForCollection(t,s.path,n.largestBatchId))).next(r=>{r.forEach((e,t)=>{var n=t.getKey();null===a.get(n)&&(a=a.insert(n,ub.newInvalidDocument(n)))});let i=vI();return a.forEach((e,t)=>{var n=r.get(e);void 0!==n&&nI(n.mutation,t,cb.empty(),E_.now()),Pb(s,t)&&(i=i.insert(e,t))}),i})}}class iE{constructor(e){this.yt=e,this.Zn=new Map,this.ts=new Map}getBundleMetadata(e,t){return $_.resolve(this.Zn.get(t))}saveBundleMetadata(e,t){return this.Zn.set(t.id,{id:t.id,version:t.version,createTime:qI(t.createTime)}),$_.resolve()}getNamedQuery(e,t){return $_.resolve(this.ts.get(t))}saveNamedQuery(e,t){return this.ts.set(t.name,{name:(t=t).name,query:zT(t.bundledQuery),readTime:qI(t.readTime)}),$_.resolve()}}class sE{constructor(){this.overlays=new nb(R_.comparator),this.es=new Map}getOverlay(e,t){return $_.resolve(this.overlays.get(t))}getOverlays(e,t){const n=_I();return $_.forEach(t,t=>this.getOverlay(e,t).next(e=>{null!==e&&n.set(t,e)})).next(()=>n)}saveOverlays(n,r,e){return e.forEach((e,t)=>{this.oe(n,r,t)}),$_.resolve()}removeOverlaysForBatchId(e,t,n){const r=this.es.get(n);return void 0!==r&&(r.forEach(e=>this.overlays=this.overlays.remove(e)),this.es.delete(n)),$_.resolve()}getOverlaysForCollection(e,t,n){const r=_I(),i=t.length+1,s=new R_(t.child("")),a=this.overlays.getIteratorFrom(s);for(;a.hasNext();){const e=a.getNext().value,s=e.getKey();if(!t.isPrefixOf(s.path))break;s.path.length===i&&e.largestBatchId>n&&r.set(e.getKey(),e)}return $_.resolve(r)}getOverlaysForCollectionGroup(t,e,n,r){let i=new nb((e,t)=>e-t);const s=this.overlays.getIterator();for(;s.hasNext();){const t=s.getNext().value;if(t.getKey().getCollectionGroup()===e&&t.largestBatchId>n){let e=i.get(t.largestBatchId);null===e&&(e=_I(),i=i.insert(t.largestBatchId,e)),e.set(t.getKey(),t)}}const a=_I(),o=i.getIterator();for(;o.hasNext()&&(o.getNext().value.forEach((e,t)=>a.set(e,t)),!(a.size()>=r)););return $_.resolve(a)}oe(e,t,n){var r=this.overlays.get(n.key);if(null!==r){const e=this.es.get(r.largestBatchId).delete(n.key);this.es.set(r.largestBatchId,e)}this.overlays=this.overlays.insert(n.key,new LT(t,n));let i=this.es.get(t);void 0===i&&(i=II(),this.es.set(t,i)),this.es.set(t,i.add(n.key))}}class aE{constructor(){this.ns=new sb(oE.ss),this.rs=new sb(oE.os)}isEmpty(){return this.ns.isEmpty()}addReference(e,t){var n=new oE(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 oE(e,t))}hs(e,t){e.forEach(e=>this.removeReference(e,t))}ls(e){const t=new R_(new C_([])),n=new oE(t,e),r=new oE(t,e+1),i=[];return this.rs.forEachInRange([n,r],e=>{this.cs(e),i.push(e.key)}),i}fs(){this.ns.forEach(e=>this.cs(e))}cs(e){this.ns=this.ns.delete(e),this.rs=this.rs.delete(e)}ds(e){var t=new R_(new C_([])),n=new oE(t,e),t=new oE(t,e+1);let r=II();return this.rs.forEachInRange([n,t],e=>{r=r.add(e.key)}),r}containsKey(e){var t=new oE(e,0),t=this.ns.firstAfterOrEqual(t);return null!==t&&e.isEqual(t.key)}}class oE{constructor(e,t){this.key=e,this._s=t}static ss(e,t){return R_.comparator(e.key,t.key)||b_(e._s,t._s)}static os(e,t){return b_(e._s,t._s)||R_.comparator(e.key,t.key)}}class cE{constructor(e,t){this.indexManager=e,this.referenceDelegate=t,this.mutationQueue=[],this.ws=1,this.gs=new sb(oE.ss)}checkEmpty(e){return $_.resolve(0===this.mutationQueue.length)}addMutationBatch(e,t,n,r){var i=this.ws;this.ws++,0n?this.mutationQueue[n]:null)}getHighestUnacknowledgedBatchId(){return $_.resolve(0===this.mutationQueue.length?-1:this.ws-1)}getAllMutationBatches(e){return $_.resolve(this.mutationQueue.slice())}getAllMutationBatchesAffectingDocumentKey(e,t){const n=new oE(t,0),r=new oE(t,Number.POSITIVE_INFINITY),i=[];return this.gs.forEachInRange([n,r],e=>{var t=this.ys(e._s);i.push(t)}),$_.resolve(i)}getAllMutationBatchesAffectingDocumentKeys(e,t){let r=new sb(b_);return t.forEach(e=>{var t=new oE(e,0),n=new oE(e,Number.POSITIVE_INFINITY);this.gs.forEachInRange([t,n],e=>{r=r.add(e._s)})}),$_.resolve(this.Is(r))}getAllMutationBatchesAffectingQuery(e,t){const n=t.path,r=n.length+1;let i=n;R_.isDocumentKey(i)||(i=i.child(""));var s=new oE(new R_(i),0);let a=new sb(b_);return this.gs.forEachWhile(e=>{var t=e.key.path;return!!n.isPrefixOf(t)&&(t.length===r&&(a=a.add(e._s)),!0)},s),$_.resolve(this.Is(a))}Is(e){const n=[];return e.forEach(e=>{var t=this.ys(e);null!==t&&n.push(t)}),n}removeMutationBatch(n,r){c_(0===this.Ts(r.batchId,"removed")),this.mutationQueue.shift();let i=this.gs;return $_.forEach(r.mutations,e=>{var t=new oE(e.key,r.batchId);return i=i.delete(t),this.referenceDelegate.markPotentiallyOrphaned(n,e.key)}).next(()=>{this.gs=i})}An(e){}containsKey(e,t){var n=new oE(t,0),n=this.gs.firstAfterOrEqual(n);return $_.resolve(t.isEqual(n&&n.key))}performConsistencyCheck(e){return this.mutationQueue.length,$_.resolve()}Ts(e,t){return this.ps(e)}ps(e){return 0===this.mutationQueue.length?0:e-this.mutationQueue[0].batchId}ys(e){var t=this.ps(e);return t<0||t>=this.mutationQueue.length?null:this.mutationQueue[t]}}class lE{constructor(e){this.Es=e,this.docs=new nb(R_.comparator),this.size=0}setIndexManager(e){this.indexManager=e}addEntry(e,t){const n=t.key,r=this.docs.get(n),i=r?r.size:0,s=this.Es(t);return this.docs=this.docs.insert(n,{document:t.mutableCopy(),size:s}),this.size+=s-i,this.indexManager.addToCollectionParentIndex(e,n.path.popLast())}removeEntry(e){var 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 $_.resolve(n?n.document.mutableCopy():ub.newInvalidDocument(t))}getEntries(e,t){let n=gI;return t.forEach(e=>{const t=this.docs.get(e);n=n.insert(e,t?t.document.mutableCopy():ub.newInvalidDocument(e))}),$_.resolve(n)}getAllFromCollection(e,t,n){let r=gI;const i=new R_(t.child("")),s=this.docs.getIteratorFrom(i);for(;s.hasNext();){const{key:e,value:{document:i}}=s.getNext();if(!t.isPrefixOf(e.path))break;e.path.length>t.length+1||q_(F_(i),n)<=0||(r=r.insert(i.key,i.mutableCopy()))}return $_.resolve(r)}getAllFromCollectionGroup(e,t,n,r){o_()}As(e,t){return $_.forEach(this.docs,e=>t(e))}newChangeBuffer(e){return new uE(this)}getSize(e){return $_.resolve(this.size)}}class uE extends G0{constructor(e){super(),this.Yn=e}applyChanges(n){const r=[];return this.changes.forEach((e,t)=>{t.isValidDocument()?r.push(this.Yn.addEntry(n,t)):this.Yn.removeEntry(e)}),$_.waitFor(r)}getFromCache(e,t){return this.Yn.getEntry(e,t)}getAllFromCache(e,t){return this.Yn.getEntries(e,t)}}class hE{constructor(e){this.persistence=e,this.Rs=new fI(e=>pb(e),fb),this.lastRemoteSnapshotVersion=k_.min(),this.highestTargetId=0,this.bs=0,this.Ps=new aE,this.targetCount=0,this.vs=L0.Pn()}forEachTarget(e,n){return this.Rs.forEach((e,t)=>n(t)),$_.resolve()}getLastRemoteSnapshotVersion(e){return $_.resolve(this.lastRemoteSnapshotVersion)}getHighestSequenceNumber(e){return $_.resolve(this.bs)}allocateTargetId(e){return this.highestTargetId=this.vs.next(),$_.resolve(this.highestTargetId)}setTargetsMetadata(e,t,n){return n&&(this.lastRemoteSnapshotVersion=n),t>this.bs&&(this.bs=t),$_.resolve()}Dn(e){this.Rs.set(e.target,e);var t=e.targetId;t>this.highestTargetId&&(this.vs=new L0(t),this.highestTargetId=t),e.sequenceNumber>this.bs&&(this.bs=e.sequenceNumber)}addTargetData(e,t){return this.Dn(t),this.targetCount+=1,$_.resolve()}updateTargetData(e,t){return this.Dn(t),$_.resolve()}removeTargetData(e,t){return this.Rs.delete(t.target),this.Ps.ls(t.targetId),--this.targetCount,$_.resolve()}removeTargets(n,r,i){let s=0;const a=[];return this.Rs.forEach((e,t)=>{t.sequenceNumber<=r&&null===i.get(t.targetId)&&(this.Rs.delete(e),a.push(this.removeMatchingKeysForTargetId(n,t.targetId)),s++)}),$_.waitFor(a).next(()=>s)}getTargetCount(e){return $_.resolve(this.targetCount)}getTargetData(e,t){var n=this.Rs.get(t)||null;return $_.resolve(n)}addMatchingKeys(e,t,n){return this.Ps.us(t,n),$_.resolve()}removeMatchingKeys(t,e,n){this.Ps.hs(e,n);const r=this.persistence.referenceDelegate,i=[];return r&&e.forEach(e=>{i.push(r.markPotentiallyOrphaned(t,e))}),$_.waitFor(i)}removeMatchingKeysForTargetId(e,t){return this.Ps.ls(t),$_.resolve()}getMatchingKeysForTargetId(e,t){var n=this.Ps.ds(t);return $_.resolve(n)}containsKey(e,t){return $_.resolve(this.Ps.containsKey(t))}}class dE{constructor(e,t){this.Vs={},this.overlays={},this.Ss=new tw(0),this.Ds=!1,this.Ds=!0,this.referenceDelegate=e(this),this.Cs=new hE(this),this.indexManager=new y0,this.remoteDocumentCache=(e=e=>this.referenceDelegate.xs(e),new lE(e)),this.yt=new UT(t),this.Ns=new iE(this.yt)}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 sE,this.overlays[e.toKey()]=t),t}getMutationQueue(e,t){let n=this.Vs[e.toKey()];return n||(n=new cE(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){r_("MemoryPersistence","Starting transaction:",e);const r=new pE(this.Ss.next());return this.referenceDelegate.ks(),n(r).next(e=>this.referenceDelegate.Os(r).next(()=>e)).toPromise().then(e=>(r.raiseOnCommittedEvent(),e))}Ms(t,n){return $_.or(Object.values(this.Vs).map(e=>()=>e.containsKey(t,n)))}}class pE extends B_{constructor(e){super(),this.currentSequenceNumber=e}}class fE{constructor(e){this.persistence=e,this.Fs=new aE,this.$s=null}static Bs(e){return new fE(e)}get Ls(){if(this.$s)return this.$s;throw o_()}addReference(e,t,n){return this.Fs.addReference(n,t),this.Ls.delete(n.toString()),$_.resolve()}removeReference(e,t,n){return this.Fs.removeReference(n,t),this.Ls.add(n.toString()),$_.resolve()}markPotentiallyOrphaned(e,t){return this.Ls.add(t.toString()),$_.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(n){const r=this.persistence.getRemoteDocumentCache().newChangeBuffer();return $_.forEach(this.Ls,e=>{const t=R_.fromPath(e);return this.qs(n,t).next(e=>{e||r.removeEntry(t,k_.min())})}).next(()=>(this.$s=null,r.apply(n)))}updateLimboDocument(e,t){return this.qs(e,t).next(e=>{e?this.Ls.delete(t.toString()):this.Ls.add(t.toString())})}xs(e){return 0}qs(e,t){return $_.or([()=>$_.resolve(this.Fs.containsKey(t)),()=>this.persistence.getTargetCache().containsKey(e,t),()=>this.persistence.Ms(e,t)])}}class gE{constructor(e){this.yt=e}$(t,e,n,r){const i=new K_("createOrUpgrade",e);var s;n<1&&1<=r&&(t.createObjectStore("owner"),(s=t).createObjectStore("mutationQueues",{keyPath:"userId"}),s.createObjectStore("mutations",{keyPath:"batchId",autoIncrement:!0}).createIndex("userMutationsIndex",lT,{unique:!0}),s.createObjectStore("documentMutations"),mE(t),t.createObjectStore("remoteDocuments"));let a=$_.resolve();return n<3&&3<=r&&(0!==n&&((s=t).deleteObjectStore("targetDocuments"),s.deleteObjectStore("targets"),s.deleteObjectStore("targetGlobal"),mE(t)),a=a.next(()=>function(){const e=i.store("targetGlobal"),t={highestTargetId:0,highestListenSequenceNumber:0,lastRemoteSnapshotVersion:k_.min().toTimestamp(),targetCount:0};return e.put("targetGlobalKey",t)}())),n<4&&4<=r&&(0!==n&&(a=a.next(()=>function(r,i){return i.store("mutations").W().next(e=>{r.deleteObjectStore("mutations"),r.createObjectStore("mutations",{keyPath:"batchId",autoIncrement:!0}).createIndex("userMutationsIndex",lT,{unique:!0});const t=i.store("mutations"),n=e.map(e=>t.put(e));return $_.waitFor(n)})}(t,i))),a=a.next(()=>{t.createObjectStore("clientMetadata",{keyPath:"clientId"})})),n<5&&5<=r&&(a=a.next(()=>this.Us(i))),n<6&&6<=r&&(a=a.next(()=>(t.createObjectStore("remoteDocumentGlobal"),this.Ks(i)))),n<7&&7<=r&&(a=a.next(()=>this.Gs(i))),n<8&&8<=r&&(a=a.next(()=>this.Qs(t,i))),n<9&&9<=r&&(a=a.next(()=>{var e;(e=t).objectStoreNames.contains("remoteDocumentChanges")&&e.deleteObjectStore("remoteDocumentChanges")})),n<10&&10<=r&&(a=a.next(()=>this.js(i))),n<11&&11<=r&&(a=a.next(()=>{t.createObjectStore("bundles",{keyPath:"bundleId"}),t.createObjectStore("namedQueries",{keyPath:"name"})})),n<12&&12<=r&&(a=a.next(()=>{!function(){const e=t.createObjectStore("documentOverlays",{keyPath:ET});e.createIndex("collectionPathOverlayIndex",kT,{unique:!1}),e.createIndex("collectionGroupOverlayIndex",ST,{unique:!1})}()})),n<13&&13<=r&&(a=a.next(()=>function(){const e=t.createObjectStore("remoteDocumentsV14",{keyPath:pT});e.createIndex("documentKeyIndex",fT),e.createIndex("collectionGroupIndex",gT)}()).next(()=>this.Ws(t,i)).next(()=>t.deleteObjectStore("remoteDocuments"))),n<14&&14<=r&&(a=a.next(()=>this.zs(t,i))),n<15&&15<=r&&(a=a.next(()=>function(e){e.createObjectStore("indexConfiguration",{keyPath:"indexId",autoIncrement:!0}).createIndex("collectionGroupIndex","collectionGroup",{unique:!1}),e.createObjectStore("indexState",{keyPath:wT}).createIndex("sequenceNumberIndex",bT,{unique:!1}),e.createObjectStore("indexEntries",{keyPath:IT}).createIndex("documentKeyIndex",TT,{unique:!1})}(t))),a}Ks(t){let n=0;return t.store("remoteDocuments").Z((e,t)=>{n+=R0(t)}).next(()=>{var e={byteSize:n};return t.store("remoteDocumentGlobal").put("remoteDocumentGlobalKey",e)})}Us(r){const e=r.store("mutationQueues"),t=r.store("mutations");return e.W().next(e=>$_.forEach(e,n=>{var e=IDBKeyRange.bound([n.userId,-1],[n.userId,n.lastAcknowledgedBatchId]);return t.W("userMutationsIndex",e).next(e=>$_.forEach(e,e=>{c_(e.userId===n.userId);var t=$T(this.yt,e);return N0(r,n.userId,t).next(()=>{})}))}))}Gs(e){const a=e.store("targetDocuments"),t=e.store("remoteDocuments");return e.store("targetGlobal").get("targetGlobalKey").next(i=>{const s=[];return t.Z((e,t)=>{const n=new C_(e),r=[0,aT(n)];s.push(a.get(r).next(e=>e?$_.resolve():(e=>a.put({targetId:0,path:aT(e),sequenceNumber:i.highestListenSequenceNumber}))(n)))}).next(()=>$_.waitFor(s))})}Qs(e,t){e.createObjectStore("collectionParents",{keyPath:_T});const n=t.store("collectionParents"),r=new _0,i=e=>{if(r.add(e)){const t=e.lastSegment(),r=e.popLast();return n.put({collectionId:t,parent:aT(r)})}};return t.store("remoteDocuments").Z({X:!0},(e,t)=>{const n=new C_(e);return i(n.popLast())}).next(()=>t.store("documentMutations").Z({X:!0},([,e],t)=>{const n=cT(e);return i(n.popLast())}))}js(e){const r=e.store("targets");return r.Z((e,t)=>{var n=KT(t),n=WT(this.yt,n);return r.put(n)})}Ws(e,s){const t=s.store("remoteDocuments"),a=[];return t.Z((e,t)=>{const n=s.store("remoteDocumentsV14"),r=((i=t).document?new R_(C_.fromString(i.document.name).popFirst(5)):i.noDocument?R_.fromSegments(i.noDocument.path):i.unknownDocument?R_.fromSegments(i.unknownDocument.path):o_()).path.toArray();var i={prefixPath:r.slice(0,r.length-2),collectionGroup:r[r.length-2],documentId:r[r.length-1],readTime:t.readTime||[0,0],unknownDocument:t.unknownDocument,noDocument:t.noDocument,document:t.document,hasCommittedMutations:!!t.hasCommittedMutations};a.push(n.put(i))}).next(()=>$_.waitFor(a))}zs(e,s){const t=s.store("mutations"),a=Q0(this.yt),o=new dE(fE.Bs,this.yt.ie);return t.W().next(e=>{const r=new Map;return e.forEach(e=>{var t;let n=null!==(t=r.get(e.userId))&&void 0!==t?t:II();$T(this.yt,e).keys().forEach(e=>n=n.add(e)),r.set(e.userId,n)}),$_.forEach(r,(e,t)=>{var n=new Zy(t),r=ZT.re(this.yt,n),i=o.getIndexManager(n),n=x0.re(n,this.yt,i,o.referenceDelegate);return new rE(a,n,r,i).recalculateAndSaveOverlaysForDocumentKeys(new DT(s,tw.at),e).next()})})}}function mE(e){e.createObjectStore("targetDocuments",{keyPath:vT}).createIndex("documentTargetsIndex",yT,{unique:!0}),e.createObjectStore("targets",{keyPath:"targetId"}).createIndex("queryTargetsIndex",mT,{unique:!0}),e.createObjectStore("targetGlobal")}const vE="Failed to obtain exclusive access to the persistence layer. To allow shared access, multi-tab synchronization has to be enabled in all tabs. If you are using `experimentalForceOwningTab:true`, make sure that only one tab has persistence enabled at any given time.";class yE{constructor(e,t,n,r,i,s,a,o,c,l,u=15){if(this.allowTabSynchronization=e,this.persistenceKey=t,this.clientId=n,this.Hs=i,this.window=s,this.document=a,this.Js=c,this.Ys=l,this.Xs=u,this.Ss=null,this.Ds=!1,this.isPrimary=!1,this.networkEnabled=!0,this.Zs=null,this.inForeground=!1,this.ti=null,this.ei=null,this.ni=Number.NEGATIVE_INFINITY,this.si=e=>Promise.resolve(),!yE.C())throw new u_(l_.UNIMPLEMENTED,"This platform is either missing IndexedDB or is known to have an incomplete implementation. Offline persistence has been disabled.");this.referenceDelegate=new W0(this,r),this.ii=t+"main",this.yt=new UT(o),this.ri=new W_(this.ii,this.Xs,new gE(this.yt)),this.Cs=new F0(this.referenceDelegate,this.yt),this.remoteDocumentCache=Q0(this.yt),this.Ns=new YT,this.window&&this.window.localStorage?this.oi=this.window.localStorage:(this.oi=null,!1===l&&i_("IndexedDbPersistence","LocalStorage is unavailable. As a result, persistence may not work reliably. In particular enablePersistence() could fail immediately after refreshing the page."))}start(){return this.ui().then(()=>{if(!this.isPrimary&&!this.allowTabSynchronization)throw new u_(l_.FAILED_PRECONDITION,vE);return this.ci(),this.ai(),this.hi(),this.runTransaction("getHighestListenSequenceNumber","readonly",e=>this.Cs.getHighestSequenceNumber(e))}).then(e=>{this.Ss=new tw(e,this.Js)}).then(()=>{this.Ds=!0}).catch(e=>(this.ri&&this.ri.close(),Promise.reject(e)))}li(t){return this.si=async e=>{if(this.started)return t(e)},t(this.isPrimary)}setDatabaseDeletedListener(t){this.ri.L(async e=>{null===e.newVersion&&await t()})}setNetworkEnabled(e){this.networkEnabled!==e&&(this.networkEnabled=e,this.Hs.enqueueAndForget(async()=>{this.started&&await this.ui()}))}ui(){return this.runTransaction("updateClientMetadataAndTryBecomePrimary","readwrite",t=>wE(t).put({clientId:this.clientId,updateTimeMs:Date.now(),networkEnabled:this.networkEnabled,inForeground:this.inForeground}).next(()=>{if(this.isPrimary)return this.fi(t).next(e=>{e||(this.isPrimary=!1,this.Hs.enqueueRetryable(()=>this.si(!1)))})}).next(()=>this.di(t)).next(e=>this.isPrimary&&!e?this._i(t).next(()=>!1):!!e&&this.wi(t).next(()=>!0))).catch(e=>{if(H_(e))return r_("IndexedDbPersistence","Failed to extend owner lease: ",e),this.isPrimary;if(!this.allowTabSynchronization)throw e;return r_("IndexedDbPersistence","Releasing owner lease after error during lease refresh",e),!1}).then(e=>{this.isPrimary!==e&&this.Hs.enqueueRetryable(()=>this.si(e)),this.isPrimary=e})}fi(e){return _E(e).get("owner").next(e=>$_.resolve(this.mi(e)))}gi(e){return wE(e).delete(this.clientId)}async yi(){if(this.isPrimary&&!this.pi(this.ni,18e5)){this.ni=Date.now();var e=await this.runTransaction("maybeGarbageCollectMultiClientState","readwrite-primary",e=>{const r=PT(e,"clientMetadata");return r.W().next(e=>{const t=this.Ii(e,18e5),n=e.filter(e=>-1===t.indexOf(e));return $_.forEach(n,e=>r.delete(e.clientId)).next(()=>n)})}).catch(()=>[]);if(this.oi)for(const t of e)this.oi.removeItem(this.Ti(t.clientId))}}hi(){this.ei=this.Hs.enqueueAfterDelay("client_metadata_refresh",4e3,()=>this.ui().then(()=>this.yi()).then(()=>this.hi()))}mi(e){return!!e&&e.ownerId===this.clientId}di(t){return this.Ys?$_.resolve(!0):_E(t).get("owner").next(e=>{if(null!==e&&this.pi(e.leaseTimestampMs,5e3)&&!this.Ei(e.ownerId)){if(this.mi(e)&&this.networkEnabled)return!0;if(!this.mi(e)){if(!e.allowTabSynchronization)throw new u_(l_.FAILED_PRECONDITION,vE);return!1}}return!(!this.networkEnabled||!this.inForeground)||wE(t).W().next(e=>void 0===this.Ii(e,5e3).find(e=>{if(this.clientId!==e.clientId){var t=!this.networkEnabled&&e.networkEnabled,n=!this.inForeground&&e.inForeground,r=this.networkEnabled===e.networkEnabled;if(t||n&&r)return!0}return!1}))}).next(e=>(this.isPrimary!==e&&r_("IndexedDbPersistence",`Client ${e?"is":"is not"} eligible for a primary lease.`),e))}async shutdown(){this.Ds=!1,this.Ai(),this.ei&&(this.ei.cancel(),this.ei=null),this.Ri(),this.bi(),await this.ri.runTransaction("shutdown","readwrite",["owner","clientMetadata"],e=>{const t=new DT(e,tw.at);return this._i(t).next(()=>this.gi(t))}),this.ri.close(),this.Pi()}Ii(e,t){return e.filter(e=>this.pi(e.updateTimeMs,t)&&!this.Ei(e.clientId))}vi(){return this.runTransaction("getActiveClients","readonly",e=>wE(e).W().next(e=>this.Ii(e,18e5).map(e=>e.clientId)))}get started(){return this.Ds}getMutationQueue(e,t){return x0.re(e,this.yt,t,this.referenceDelegate)}getTargetCache(){return this.Cs}getRemoteDocumentCache(){return this.remoteDocumentCache}getIndexManager(e){return new b0(e,this.yt.ie.databaseId)}getDocumentOverlayCache(e){return ZT.re(this.yt,e)}getBundleCache(){return this.Ns}runTransaction(t,n,r){r_("IndexedDbPersistence","Starting transaction:",t);var e,i="readonly"===n?"readonly":"readwrite",e=15===(e=this.Xs)?xT:14===e?RT:13===e?NT:12===e?AT:11===e?CT:void o_();let s;return this.ri.runTransaction(t,i,e,e=>(s=new DT(e,this.Ss?this.Ss.next():tw.at),"readwrite-primary"===n?this.fi(s).next(e=>!!e||this.di(s)).next(e=>{if(!e)throw i_(`Failed to obtain primary lease for action '${t}'.`),this.isPrimary=!1,this.Hs.enqueueRetryable(()=>this.si(!1)),new u_(l_.FAILED_PRECONDITION,V_);return r(s)}).next(e=>this.wi(s).next(()=>e)):this.Vi(s).next(()=>r(s)))).then(e=>(s.raiseOnCommittedEvent(),e))}Vi(e){return _E(e).get("owner").next(e=>{if(null!==e&&this.pi(e.leaseTimestampMs,5e3)&&!this.Ei(e.ownerId)&&!this.mi(e)&&!(this.Ys||this.allowTabSynchronization&&e.allowTabSynchronization))throw new u_(l_.FAILED_PRECONDITION,vE)})}wi(e){var t={ownerId:this.clientId,allowTabSynchronization:this.allowTabSynchronization,leaseTimestampMs:Date.now()};return _E(e).put("owner",t)}static C(){return W_.C()}_i(e){const t=_E(e);return t.get("owner").next(e=>this.mi(e)?(r_("IndexedDbPersistence","Releasing primary lease."),t.delete("owner")):$_.resolve())}pi(e,t){var n=Date.now();return!(e ${n}`),1))}ci(){null!==this.document&&"function"==typeof this.document.addEventListener&&(this.ti=()=>{this.Hs.enqueueAndForget(()=>(this.inForeground="visible"===this.document.visibilityState,this.ui()))},this.document.addEventListener("visibilitychange",this.ti),this.inForeground="visible"===this.document.visibilityState)}Ri(){this.ti&&(this.document.removeEventListener("visibilitychange",this.ti),this.ti=null)}ai(){var e;"function"==typeof(null===(e=this.window)||void 0===e?void 0:e.addEventListener)&&(this.Zs=()=>{this.Ai(),!I()&&navigator.userAgent.includes("Safari")&&!navigator.userAgent.includes("Chrome")&&navigator.appVersion.match(/Version\/1[45]/)&&this.Hs.enterRestrictedMode(!0),this.Hs.enqueueAndForget(()=>this.shutdown())},this.window.addEventListener("pagehide",this.Zs))}bi(){this.Zs&&(this.window.removeEventListener("pagehide",this.Zs),this.Zs=null)}Ei(e){var t;try{var n=null!==(null===(t=this.oi)||void 0===t?void 0:t.getItem(this.Ti(e)));return r_("IndexedDbPersistence",`Client '${e}' ${n?"is":"is not"} zombied in LocalStorage`),n}catch(e){return i_("IndexedDbPersistence","Failed to get zombied client id.",e),!1}}Ai(){if(this.oi)try{this.oi.setItem(this.Ti(this.clientId),String(Date.now()))}catch(e){i_("Failed to set zombie client id.",e)}}Pi(){if(this.oi)try{this.oi.removeItem(this.Ti(this.clientId))}catch(e){}}Ti(e){return`firestore_zombie_${this.persistenceKey}_${e}`}}function _E(e){return PT(e,"owner")}function wE(e){return PT(e,"clientMetadata")}function bE(e,t){let n=e.projectId;return e.isDefaultDatabase||(n+="."+e.database),"firestore/"+t+"/"+n+"/"}class IE{constructor(e,t,n,r){this.targetId=e,this.fromCache=t,this.Si=n,this.Di=r}static Ci(e,t){let n=II(),r=II();for(const e of t.docChanges)switch(e.type){case 0:n=n.add(e.doc.key);break;case 1:r=r.add(e.doc.key)}return new IE(e,t.fromCache,n,r)}}class TE{constructor(){this.xi=!1}initialize(e,t){this.Ni=e,this.indexManager=t,this.xi=!0}getDocumentsMatchingQuery(t,n,r,i){return this.ki(t,n).next(e=>e||this.Oi(t,n,i,r)).next(e=>e||this.Mi(t,n))}ki(i,s){if(Ib(s))return $_.resolve(null);let t=Cb(s);return this.indexManager.getIndexType(i,t).next(e=>0===e?null:(null!==s.limit&&1===e&&(s=Nb(s,null,"F"),t=Cb(s)),this.indexManager.getDocumentsMatchingTarget(i,t).next(e=>{const r=II(...e);return this.Ni.getDocuments(i,r).next(n=>this.indexManager.getMinOffset(i,t).next(e=>{var t=this.Fi(s,n);return this.$i(s,t,r,e.readTime)?this.ki(i,Nb(s,null,"F")):this.Bi(i,t,s,e)}))})))}Oi(n,r,i,s){return Ib(r)||s.isEqual(k_.min())?this.Mi(n,r):this.Ni.getDocuments(n,i).next(e=>{var t=this.Fi(r,e);return this.$i(r,t,i,s)?this.Mi(n,r):(n_()<=g.DEBUG&&r_("QueryEngine","Re-using previous result from %s to execute query: %s",s.toString(),Db(r)),this.Bi(n,t,r,L_(s,-1)))})}Fi(n,e){let r=new sb(Mb(n));return e.forEach((e,t)=>{Pb(n,t)&&(r=r.add(t))}),r}$i(e,t,n,r){if(null===e.limit)return!1;if(n.size!==t.size)return!0;const i="F"===e.limitType?t.last():t.first();return!!i&&(i.hasPendingWrites||0(n.forEach(e=>{t=t.insert(e.key,e)}),t))}}class EE{constructor(e,t,n,r){this.persistence=e,this.Li=t,this.yt=r,this.qi=new nb(b_),this.Ui=new fI(e=>pb(e),fb),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 rE(this.Gi,this.mutationQueue,this.documentOverlayCache,this.indexManager),this.Gi.setIndexManager(this.indexManager),this.Li.initialize(this.localDocuments,this.indexManager)}collectGarbage(t){return this.persistence.runTransaction("Collect garbage","readwrite-primary",e=>t.collect(e,this.qi))}}function kE(e,t,n,r){return new EE(e,t,n,r)}async function SE(e,t){const a=e;return a.persistence.runTransaction("Handle user change","readonly",i=>{let s;return a.mutationQueue.getAllMutationBatches(i).next(e=>(s=e,a.Qi(t),a.mutationQueue.getAllMutationBatches(i))).next(e=>{const t=[],n=[];let r=II();for(const i of s){t.push(i.batchId);for(const e of i.mutations)r=r.add(e.key)}for(const i of e){n.push(i.batchId);for(const e of i.mutations)r=r.add(e.key)}return a.localDocuments.getDocuments(i,r).next(e=>({ji:e,removedBatchIds:t,addedBatchIds:n}))})})}function CE(e){const t=e;return t.persistence.runTransaction("Get last remote snapshot version","readonly",e=>t.Cs.getLastRemoteSnapshotVersion(e))}function AE(e,l){const u=e,h=l.snapshotVersion;let d=u.qi;return u.persistence.runTransaction("Apply remote event","readwrite-primary",o=>{const e=u.Gi.newChangeBuffer({trackRemovals:!0});d=u.qi;const c=[];l.targetChanges.forEach((t,n)=>{const r=d.get(n);if(r){c.push(u.Cs.removeMatchingKeys(o,t.removedDocuments,n).next(()=>u.Cs.addMatchingKeys(o,t.addedDocuments,n)));let e=r.withSequenceNumber(o.currentSequenceNumber);var i,s,a;l.targetMismatches.has(n)?e=e.withResumeToken(uw.EMPTY_BYTE_STRING,k_.min()).withLastLimboFreeSnapshotVersion(k_.min()):0{l.resolvedLimboDocuments.has(e)&&c.push(u.persistence.referenceDelegate.updateLimboDocument(o,e))}),c.push(NE(o,e,l.documentUpdates).next(e=>{t=e.Wi,n=e.zi})),!h.isEqual(k_.min())){const l=u.Cs.getLastRemoteSnapshotVersion(o).next(e=>u.Cs.setTargetsMetadata(o,o.currentSequenceNumber,h));c.push(l)}return $_.waitFor(c).next(()=>e.apply(o)).next(()=>u.localDocuments.getLocalViewOfDocuments(o,t,n)).next(()=>t)}).then(e=>(u.qi=d,e))}function NE(e,s,t){let n=II(),a=II();return t.forEach(e=>n=n.add(e)),s.getEntries(e,n).next(r=>{let i=gI;return t.forEach((e,t)=>{const n=r.get(e);t.isFoundDocument()!==n.isFoundDocument()&&(a=a.add(e)),t.isNoDocument()&&t.version.isEqual(k_.min())?(s.removeEntry(e,t.readTime),i=i.insert(e,t)):!n.isValidDocument()||0{let n;return i.Cs.getTargetData(t,r).next(e=>e?(n=e,$_.resolve(n)):i.Cs.allocateTargetId(t).next(e=>(n=new FT(r,e,0,t.currentSequenceNumber),i.Cs.addTargetData(t,n).next(()=>n))))}).then(e=>{var t=i.qi.get(e.targetId);return(null===t||0r.persistence.referenceDelegate.removeTarget(e,i))}catch(e){if(!H_(e))throw e;r_("LocalStore",`Failed to update sequence numbers for target ${t}: ${e}`)}r.qi=r.qi.remove(t),r.Ui.delete(i.target)}function DE(e,n,r){const i=e;let s=k_.min(),a=II();return i.persistence.runTransaction("Execute query","readonly",t=>function(e,t,n){const r=e,i=r.Ui.get(n);return void 0!==i?$_.resolve(r.qi.get(i)):r.Cs.getTargetData(t,n)}(i,t,Cb(n)).next(e=>{if(e)return s=e.lastLimboFreeSnapshotVersion,i.Cs.getMatchingKeysForTargetId(t,e.targetId).next(e=>{a=e})}).next(()=>i.Li.getDocumentsMatchingQuery(t,n,r?s:k_.min(),r?a:II())).next(e=>(ME(i,Ob(n),e),{documents:e,Hi:a})))}function PE(e,t){const n=e,r=n.Cs,i=n.qi.get(t);return i?Promise.resolve(i.target):n.persistence.runTransaction("Get target data","readonly",e=>r.ne(e,t).next(e=>e?e.target:null))}function OE(e,t){const n=e,r=n.Ki.get(t)||k_.min();return n.persistence.runTransaction("Get new document changes","readonly",e=>n.Gi.getAllFromCollectionGroup(e,t,L_(r,-1),Number.MAX_SAFE_INTEGER)).then(e=>(ME(n,t,e),e))}function ME(e,t,n){let r=e.Ki.get(t)||k_.min();n.forEach((e,t)=>{0this.shutdown()),this.started=!0}writeSequenceNumber(e){this.setItem(this.hr,JSON.stringify(e))}getAllActiveQueryTargets(){return this.Ir(this.ur)}isActiveQueryTarget(n){let r=!1;return this.ur.forEach((e,t)=>{t.activeTargetIds.has(n)&&(r=!0)}),r}addPendingMutation(e){this.Tr(e,"pending")}updateMutationState(e,t,n){this.Tr(e,t,n),this.Er(e)}addLocalQueryTarget(e){let t="not-current";var n;return this.isActiveQueryTarget(e)&&(!(n=this.storage.getItem(UE(this.persistenceKey,e)))||(n=VE.Zi(e,n))&&(t=n.state)),this.Ar.er(e),this.gr(),t}removeLocalQueryTarget(e){this.Ar.nr(e),this.gr()}isLocalQueryTarget(e){return this.Ar.activeTargetIds.has(e)}clearQueryState(e){this.removeItem(UE(this.persistenceKey,e))}updateQueryState(e,t,n){this.Rr(e,t,n)}handleUserChange(e,t,n){t.forEach(e=>{this.Er(e)}),this.currentUser=e,n.forEach(e=>{this.addPendingMutation(e)})}setOnlineState(e){this.br(e)}notifyBundleLoaded(e){this.Pr(e)}shutdown(){this.started&&(this.window.removeEventListener("storage",this.ir),this.removeItem(this.ar),this.started=!1)}getItem(e){var t=this.storage.getItem(e);return r_("SharedClientState","READ",e,t),t}setItem(e,t){r_("SharedClientState","SET",e,t),this.storage.setItem(e,t)}removeItem(e){r_("SharedClientState","REMOVE",e),this.storage.removeItem(e)}rr(e){const i=e;i.storageArea===this.storage&&(r_("SharedClientState","EVENT",i.key,i.newValue),i.key!==this.ar?this.Hs.enqueueRetryable(async()=>{if(this.started){if(null!==i.key)if(this.lr.test(i.key)){if(null==i.newValue){var e=this.vr(i.key);return this.Vr(e,null)}e=this.Sr(i.key,i.newValue);if(e)return this.Vr(e.clientId,e)}else if(this.dr.test(i.key)){if(null!==i.newValue){var t=this.Dr(i.key,i.newValue);if(t)return this.Cr(t)}}else if(this._r.test(i.key)){if(null!==i.newValue){t=this.Nr(i.key,i.newValue);if(t)return this.kr(t)}}else if(i.key===this.wr){if(null!==i.newValue){var n=this.yr(i.newValue);if(n)return this.pr(n)}}else if(i.key===this.hr){n=function(e){let t=tw.at;if(null!=e)try{var n=JSON.parse(e);c_("number"==typeof n),t=n}catch(e){i_("SharedClientState","Failed to read sequence number from WebStorage",e)}return t}(i.newValue);n!==tw.at&&this.sequenceNumberHandler(n)}else if(i.key===this.mr){const r=this.Or(i.newValue);await Promise.all(r.map(e=>this.syncEngine.Mr(e)))}}else this.cr.push(i)}):i_("Received WebStorage notification for local change. Another client might have garbage-collected our state"))}get Ar(){return this.ur.get(this.sr)}gr(){this.setItem(this.ar,this.Ar.tr())}Tr(e,t,n){const r=new qE(this.currentUser,e,t,n),i=FE(this.persistenceKey,this.currentUser,e);this.setItem(i,r.tr())}Er(e){var t=FE(this.persistenceKey,this.currentUser,e);this.removeItem(t)}br(e){var t={clientId:this.sr,onlineState:e};this.storage.setItem(this.wr,JSON.stringify(t))}Rr(e,t,n){const r=UE(this.persistenceKey,e),i=new VE(e,t,n);this.setItem(r,i.tr())}Pr(e){var t=JSON.stringify(Array.from(e));this.setItem(this.mr,t)}vr(e){var t=this.lr.exec(e);return t?t[1]:null}Sr(e,t){var n=this.vr(e);return BE.Zi(n,t)}Dr(e,t){var n=this.dr.exec(e),r=Number(n[1]),n=void 0!==n[2]?n[2]:null;return qE.Zi(new Zy(n),r,t)}Nr(e,t){var n=this._r.exec(e),n=Number(n[1]);return VE.Zi(n,t)}yr(e){return jE.Zi(e)}Or(e){return JSON.parse(e)}async Cr(e){if(e.user.uid===this.currentUser.uid)return this.syncEngine.Fr(e.batchId,e.state,e.error);r_("SharedClientState",`Ignoring mutation for non-active user ${e.user.uid}`)}kr(e){return this.syncEngine.$r(e.targetId,e.state,e.error)}Vr(e,t){const n=t?this.ur.insert(e,t):this.ur.remove(e),r=this.Ir(this.ur),i=this.Ir(n),s=[],a=[];return i.forEach(e=>{r.has(e)||s.push(e)}),r.forEach(e=>{i.has(e)||a.push(e)}),this.syncEngine.Br(s,a).then(()=>{this.ur=n})}pr(e){this.ur.get(e.clientId)&&this.onlineStateHandler(e.onlineState)}Ir(e){let n=TI;return e.forEach((e,t)=>{n=n.unionWith(t.activeTargetIds)}),n}}class WE{constructor(){this.Lr=new $E,this.qr={},this.onlineStateHandler=null,this.sequenceNumberHandler=null}addPendingMutation(e){}updateMutationState(e,t,n){}addLocalQueryTarget(e){return this.Lr.er(e),this.qr[e]||"not-current"}updateQueryState(e,t,n){this.qr[e]=t}removeLocalQueryTarget(e){this.Lr.nr(e)}isLocalQueryTarget(e){return this.Lr.activeTargetIds.has(e)}clearQueryState(e){delete this.qr[e]}getAllActiveQueryTargets(){return this.Lr.activeTargetIds}isActiveQueryTarget(e){return this.Lr.activeTargetIds.has(e)}start(){return this.Lr=new $E,Promise.resolve()}handleUserChange(e,t,n){}setOnlineState(e){}shutdown(){}writeSequenceNumber(e){}notifyBundleLoaded(e){}}class zE{Ur(e){}shutdown(){}}class GE{constructor(){this.Kr=()=>this.Gr(),this.Qr=()=>this.jr(),this.Wr=[],this.zr()}Ur(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(){r_("ConnectivityMonitor","Network connectivity changed: AVAILABLE");for(const e of this.Wr)e(0)}jr(){r_("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 HE={BatchGetDocuments:"batchGet",Commit:"commit",RunQuery:"runQuery",RunAggregationQuery:"runAggregationQuery"};class QE{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 YE extends class{constructor(e){this.databaseInfo=e,this.databaseId=e.databaseId;var 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(t,e,n,r,i){const s=this.ho(t,e);r_("RestConnection","Sending: ",s,n);var a={};return this.lo(a,r,i),this.fo(t,s,a,n).then(e=>(r_("RestConnection","Received: ",e),e),e=>{throw s_("RestConnection",`${t} failed with error: `,e,"url: ",s,"request:",n),e})}_o(e,t,n,r,i,s){return this.ao(e,t,n,r,i)}lo(n,e,t){n["X-Goog-Api-Client"]="gl-js/ fire/"+e_,n["Content-Type"]="text/plain",this.databaseInfo.appId&&(n["X-Firebase-GMPID"]=this.databaseInfo.appId),e&&e.headers.forEach((e,t)=>n[t]=e),t&&t.headers.forEach((e,t)=>n[t]=e)}ho(e,t){var n=HE[e];return`${this.oo}/v1/${t}:${n}`}}{constructor(e){super(e),this.forceLongPolling=e.forceLongPolling,this.autoDetectLongPolling=e.autoDetectLongPolling,this.useFetchStreams=e.useFetchStreams}fo(o,t,n,r){return new Promise((i,s)=>{const a=new Jy;a.setWithCredentials(!0),a.listenOnce(Wy.COMPLETE,()=>{try{switch(a.getLastErrorCode()){case Ky.NO_ERROR:var e=a.getResponseJson();r_("Connection","XHR received:",JSON.stringify(e)),i(e);break;case Ky.TIMEOUT:r_("Connection",'RPC "'+o+'" timed out'),s(new u_(l_.DEADLINE_EXCEEDED,"Request time out"));break;case Ky.HTTP_ERROR:var t=a.getStatus();if(r_("Connection",'RPC "'+o+'" failed with status:',t,"response text:",a.getResponseText()),0{u?r_("Connection","Not sending because WebChannel is closed:",e):(l||(r_("Connection","Opening WebChannel transport."),c.open(),l=!0),r_("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,Yy.EventType.OPEN,()=>{u||r_("Connection","WebChannel transport opened.")}),d(c,Yy.EventType.CLOSE,()=>{u||(u=!0,r_("Connection","WebChannel transport closed"),h.io())}),d(c,Yy.EventType.ERROR,e=>{u||(u=!0,s_("Connection","WebChannel transport errored:",e),h.io(new u_(l_.UNAVAILABLE,"The operation could not be completed")))}),d(c,Yy.EventType.MESSAGE,n=>{if(!u){var e=n.data[0];c_(!!e);var r=e.error||(null===(r=e[0])||void 0===r?void 0:r.error);if(r){r_("Connection","WebChannel received error:",r);const n=r.status;let e=function(e){var t=jy[e];if(void 0!==t)return pI(t)}(n),t=r.message;void 0===e&&(e=l_.INTERNAL,t="Unknown error status: "+n+" with message "+r.message),u=!0,h.io(new u_(e,t)),c.close()}else r_("Connection","WebChannel received:",e),h.ro(e)}}),d(s,zy.STAT_EVENT,e=>{e.stat===Gy?r_("Connection","Detected buffering proxy"):e.stat===Hy&&r_("Connection","Detected no buffering proxy")}),setTimeout(()=>{h.so()},0),h}}function JE(){return"undefined"!=typeof window?window:null}function XE(){return"undefined"!=typeof document?document:null}function ZE(e){return new LI(e,!0)}class ek{constructor(e,t,n=1e3,r=1.5,i=6e4){this.Hs=e,this.timerId=t,this.mo=n,this.yo=r,this.po=i,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();var t=Math.floor(this.Io+this.bo()),n=Math.max(0,Date.now()-this.Eo),r=Math.max(0,t-n);0(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 tk{constructor(e,t,n,r,i,s,a,o){this.Hs=e,this.vo=n,this.Vo=r,this.connection=i,this.authCredentialsProvider=s,this.appCheckCredentialsProvider=a,this.listener=o,this.state=0,this.So=0,this.Do=null,this.Co=null,this.stream=null,this.xo=new ek(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)}qo(){this.Co&&(this.Co.cancel(),this.Co=null)}async close(e,t){this.Lo(),this.qo(),this.xo.cancel(),this.So++,4!==e?this.xo.reset():t&&t.code===l_.RESOURCE_EXHAUSTED?(i_(t.toString()),i_("Using maximum backoff delay to prevent overloading the backend."),this.xo.Ao()):t&&t.code===l_.UNAUTHENTICATED&&3!==this.state&&(this.authCredentialsProvider.invalidateToken(),this.appCheckCredentialsProvider.invalidateToken()),null!==this.stream&&(this.Uo(),this.stream.close(),this.stream=null),this.state=e,await this.listener.Zr(t)}Uo(){}auth(){this.state=1;const e=this.Ko(this.So),n=this.So;Promise.all([this.authCredentialsProvider.getToken(),this.appCheckCredentialsProvider.getToken()]).then(([e,t])=>{this.So===n&&this.Go(e,t)},t=>{e(()=>{var e=new u_(l_.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 r_("PersistentStream",`close with error: ${e}`),this.stream=null,this.close(4,e)}Ko(t){return e=>{this.Hs.enqueueAndForget(()=>this.So===t?e():(r_("PersistentStream","stream callback skipped by getCloseGuardedDispatcher."),Promise.resolve()))}}}class nk extends tk{constructor(e,t,n,r,i,s){super(e,"listen_stream_connection_backoff","listen_stream_idle","health_check_timeout",t,n,r,s),this.yt=i}jo(e,t){return this.connection.wo("Listen",e,t)}onMessage(e){this.xo.reset();var t=function(e,t){let n;if("targetChange"in t){t.targetChange;var r="NO_CHANGE"===(p=t.targetChange.targetChangeType||"NO_CHANGE")?0:"ADD"===p?1:"REMOVE"===p?2:"CURRENT"===p?3:"RESET"===p?4:o_(),i=t.targetChange.targetIds||[],s=(p=t.targetChange.resumeToken,e.wt?(c_(void 0===p||"string"==typeof p),uw.fromBase64String(p||"")):(c_(void 0===p||p instanceof Uint8Array),uw.fromUint8Array(p||new Uint8Array))),a=t.targetChange.cause,o=a&&(o=void 0===(p=a).code?l_.UNKNOWN:pI(p.code),new u_(o,p.message||""));n=new AI(r,i,s,o||null)}else if("documentChange"in t){t.documentChange;var c=t.documentChange;c.document,c.document.name,c.document.updateTime;var s=$I(e,c.document.name),o=qI(c.document.updateTime),l=c.document.createTime?qI(c.document.createTime):k_.min(),u=new lb({mapValue:{fields:c.document.fields}}),l=ub.newFoundDocument(s,o,l,u),u=c.targetIds||[],c=c.removedTargetIds||[];n=new SI(u,c,l.key,l)}else if("documentDelete"in t){t.documentDelete;u=t.documentDelete;u.document;c=$I(e,u.document),l=u.readTime?qI(u.readTime):k_.min(),l=ub.newNoDocument(c,l),u=u.removedTargetIds||[];n=new SI([],u,l.key,l)}else if("documentRemove"in t){t.documentRemove;var h=t.documentRemove;h.document;var d=$I(e,h.document),h=h.removedTargetIds||[];n=new SI([],h,d,null)}else{if(!("filter"in t))return o_();{t.filter;const e=t.filter;e.targetId;h=e.count||0,d=new hI(h),h=e.targetId;n=new CI(h,d)}}var o,p;return n}(this.yt,e),n=function(e){if(!("targetChange"in e))return k_.min();var t=e.targetChange;return(!t.targetIds||!t.targetIds.length)&&t.readTime?qI(t.readTime):k_.min()}(e);return this.listener.Wo(t,n)}zo(e){const t={};t.database=zI(this.yt),t.addTarget=function(e,t){let n;var r=t.target;return n=gb(r)?{documents:XI(e,r)}:{query:ZI(e,r)},n.targetId=t.targetId,0function(e,t){let n=e.updateTime?qI(e.updateTime):qI(t);return n.isEqual(k_.min())&&(n=qI(t)),new Yb(n,e.transformResults||[])}(e,i))):[]),n=qI(e.commitTime);return this.listener.Zo(n,t)}var r,i;return c_(!e.writeResults||0===e.writeResults.length),this.Jo=!0,this.listener.tu()}eu(){const e={};e.database=zI(this.yt),this.Bo(e)}Xo(e){var t={streamToken:this.lastStreamToken,writes:e.map(e=>YI(this.yt,e))};this.Bo(t)}}class ik extends class{}{constructor(e,t,n,r){super(),this.authCredentials=e,this.appCheckCredentials=t,this.connection=n,this.yt=r,this.nu=!1}su(){if(this.nu)throw new u_(l_.FAILED_PRECONDITION,"The client has already been terminated.")}ao(n,r,i){return this.su(),Promise.all([this.authCredentials.getToken(),this.appCheckCredentials.getToken()]).then(([e,t])=>this.connection.ao(n,r,i,e,t)).catch(e=>{throw"FirebaseError"===e.name?(e.code===l_.UNAUTHENTICATED&&(this.authCredentials.invalidateToken(),this.appCheckCredentials.invalidateToken()),e):new u_(l_.UNKNOWN,e.toString())})}_o(n,r,i,s){return this.su(),Promise.all([this.authCredentials.getToken(),this.appCheckCredentials.getToken()]).then(([e,t])=>this.connection._o(n,r,i,e,t,s)).catch(e=>{throw"FirebaseError"===e.name?(e.code===l_.UNAUTHENTICATED&&(this.authCredentials.invalidateToken(),this.appCheckCredentials.invalidateToken()),e):new u_(l_.UNKNOWN,e.toString())})}terminate(){this.nu=!0}}class sk{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++,1<=this.iu&&(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){var 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?(i_(t),this.ou=!1):r_("OnlineStateTracker",t)}lu(){null!==this.ru&&(this.ru.cancel(),this.ru=null)}}class ak{constructor(e,t,n,r,i){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=i,this.mu.Ur(e=>{n.enqueueAndForget(async()=>{gk(this)&&(r_("RemoteStore","Restarting streams for network reachability change."),await async function(e){const t=e;t._u.add(4),await ck(t),t.gu.set("Unknown"),t._u.delete(4),await ok(t)}(this))})}),this.gu=new sk(n,r)}}async function ok(e){if(gk(e))for(const t of e.wu)await t(!0)}async function ck(e){for(const t of e.wu)await t(!1)}function lk(e,t){const n=e;n.du.has(t.targetId)||(n.du.set(t.targetId,t),fk(n)?pk(n):Ek(n).ko()&&hk(n,t))}function uk(e,t){const n=e,r=Ek(n);n.du.delete(t),r.ko()&&dk(n,t),0===n.du.size&&(r.ko()?r.Fo():gk(n)&&n.gu.set("Unknown"))}function hk(e,t){e.yu.Ot(t.targetId),Ek(e).zo(t)}function dk(e,t){e.yu.Ot(t),Ek(e).Ho(t)}function pk(t){t.yu=new RI({getRemoteKeysForTarget:e=>t.remoteSyncer.getRemoteKeysForTarget(e),ne:e=>t.du.get(e)||null}),Ek(t).start(),t.gu.uu()}function fk(e){return gk(e)&&!Ek(e).No()&&0CE(e.localStore)),e.asyncQueue.enqueueRetryable(async()=>{r_("RemoteStore","Retrying IndexedDB access"),await n(),e._u.delete(1),await ok(e)})}function yk(t,n){return n().catch(e=>vk(t,e,n))}async function _k(e){const t=e,n=kk(t);let r=0(void 0===t&&(t=-1),n.mutationQueue.getNextMutationBatchAfterBatchId(e,t)))}(t.localStore,r);if(null===e){0===t.fu.length&&n.Fo();break}r=e.batchId,function(e,t){e.fu.push(t);const n=kk(e);n.ko()&&n.Yo&&n.Xo(t.mutations)}(t,e)}catch(e){await vk(t,e)}var i;wk(t)&&bk(t)}function wk(e){return gk(e)&&!kk(e).No()&&0{hk(n,e)})}).bind(null,t),Zr:(async function(e,t){mk(e),fk(e)?(e.gu.hu(t),pk(e)):e.gu.set("Unknown")}).bind(null,t),Wo:(async function(e,r,t){if(e.gu.set("Online"),r instanceof AI&&2===r.state&&r.cause)try{await async function(e){var t=r.cause;for(const n of r.targetIds)e.du.has(n)&&(await e.remoteSyncer.rejectListen(n,t),e.du.delete(n),e.yu.removeTarget(n))}(e)}catch(t){r_("RemoteStore","Failed to remove targets %s: %s ",r.targetIds.join(","),t),await vk(e,t)}else if(r instanceof SI?e.yu.Kt(r):r instanceof CI?e.yu.Jt(r):e.yu.jt(r),!t.isEqual(k_.min()))try{const r=await CE(e.localStore);0<=t.compareTo(r)&&await function(r,i){const e=r.yu.Zt(i);return e.targetChanges.forEach((e,t)=>{if(0{const t=r.du.get(e);var n;t&&(r.du.set(e,t.withResumeToken(uw.EMPTY_BYTE_STRING,t.snapshotVersion)),dk(r,e),n=new FT(t.target,e,1,t.sequenceNumber),hk(r,n))}),r.remoteSyncer.applyRemoteEvent(e)}(e,t)}catch(r){r_("RemoteStore","Failed to raise snapshot:",r),await vk(e,r)}}).bind(null,t)}),t.wu.push(async e=>{e?(t.pu.Mo(),fk(t)?pk(t):t.gu.set("Unknown")):(await t.pu.stop(),mk(t))})),t.pu}function kk(t){return t.Iu||(t.Iu=function(e,t,n){const r=e;return r.su(),new rk(t,r.connection,r.authCredentials,r.appCheckCredentials,r.yt,n)}(t.datastore,t.asyncQueue,{Yr:(async function(e){kk(e).eu()}).bind(null,t),Zr:(async function(e,t){t&&kk(e).Yo&&await async function(e,t){if(dI(n=t.code)&&n!==l_.ABORTED){const n=e.fu.shift();kk(e).Mo(),await yk(e,()=>e.remoteSyncer.rejectFailedWrite(n.batchId,t)),await _k(e)}var n}(e,t),wk(e)&&bk(e)}).bind(null,t),tu:(async function(e){const t=kk(e);for(const n of e.fu)t.Xo(n.mutations)}).bind(null,t),Zo:(async function(e,t,n){const r=e.fu.shift(),i=MT.from(r,t,n);await yk(e,()=>e.remoteSyncer.applySuccessfulWrite(i)),await _k(e)}).bind(null,t)}),t.wu.push(async e=>{e?(t.Iu.Mo(),await _k(t)):(await t.Iu.stop(),0{})}static createAndSchedule(e,t,n,r,i){const s=Date.now()+n,a=new Sk(e,t,s,r,i);return a.start(n),a}start(e){this.timerHandle=setTimeout(()=>this.handleDelayElapsed(),e)}skipDelay(){return this.handleDelayElapsed()}cancel(e){null!==this.timerHandle&&(this.clearTimeout(),this.deferred.reject(new u_(l_.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 Ck(e,t){if(i_("AsyncQueue",`${t}: ${e}`),H_(e))return new u_(l_.UNAVAILABLE,`${t}: ${e}`);throw e}class Ak{constructor(n){this.comparator=n?(e,t)=>n(e,t)||R_.comparator(e.key,t.key):(e,t)=>R_.comparator(e.key,t.key),this.keyedMap=vI(),this.sortedSet=new nb(this.comparator)}static emptySet(e){return new Ak(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){var t=this.keyedMap.get(e);return t?this.sortedSet.indexOf(t):-1}get size(){return this.sortedSet.size}forEach(n){this.sortedSet.inorderTraversal((e,t)=>(n(e),!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){var t=this.get(e);return t?this.copy(this.keyedMap.remove(e),this.sortedSet.remove(t)):this}isEqual(e){if(!(e instanceof Ak))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,r=n.getNext().key;if(!e.isEqual(r))return!1}return!0}toString(){const t=[];return this.forEach(e=>{t.push(e.toString())}),0===t.length?"DocumentSet ()":"DocumentSet (\n "+t.join(" \n")+"\n)"}copy(e,t){const n=new Ak;return n.comparator=this.comparator,n.keyedMap=e,n.sortedSet=t,n}}class Nk{constructor(){this.Tu=new nb(R_.comparator)}track(e){var 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}):o_()}Eu(){const n=[];return this.Tu.inorderTraversal((e,t)=>{n.push(t)}),n}}class Rk{constructor(e,t,n,r,i,s,a,o,c){this.query=e,this.docs=t,this.oldDocs=n,this.docChanges=r,this.mutatedKeys=i,this.fromCache=s,this.syncStateChanged=a,this.excludesMetadataChanges=o,this.hasCachedResults=c}static fromInitialDocuments(e,t,n,r,i){const s=[];return t.forEach(e=>{s.push({type:0,doc:e})}),new Rk(e,t,Ak.emptySet(t),s,n,r,!0,!1,i)}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)&&Rb(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 r=0;rxb(e),Rb),this.onlineState="Unknown",this.Ru=new Set}}async function Pk(e,t){const n=e,r=t.query;let i=!1,s=n.queries.get(r);if(s||(i=!0,s=new xk),i)try{s.Au=await n.onListen(r)}catch(e){const n=Ck(e,`Initialization of query '${Db(t.query)}' failed`);return void t.onError(n)}n.queries.set(r,s),s.listeners.push(t),t.bu(n.onlineState),!s.Au||t.Pu(s.Au)&&Mk(n)}async function Ok(e,t){const n=e,r=t.query;let i=!1;const s=n.queries.get(r);if(s){const e=s.listeners.indexOf(t);0<=e&&(s.listeners.splice(e,1),i=0===s.listeners.length)}if(i)return n.queries.delete(r),n.onUnlisten(r)}function Mk(e){e.Ru.forEach(e=>{e.next()})}class Lk{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 Rk(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){return!e.fromCache||(!this.options.Nu||!("Offline"!==t))&&(!e.docs.isEmpty()||e.hasCachedResults||"Offline"===t)}Du(e){if(0NE(t,o,a).next(e=>(o.apply(t),e)).next(e=>i.Cs.removeMatchingKeysForTargetId(t,c.targetId).next(()=>i.Cs.addMatchingKeys(t,s,c.targetId)).next(()=>i.localDocuments.getLocalViewOfDocuments(t,e.Wi,e.zi)).next(()=>e.Wi)))}(this.localStore,new Uk(this.yt),this.documents,this.Mu.id),t=this.$u(this.documents);for(const e of this.queries)await async function(e,n,r=II()){const i=await RE(e,Cb(zT(n.bundledQuery))),s=e;return s.persistence.runTransaction("Save named query","readwrite",e=>{var t=qI(n.readTime);if(0<=i.snapshotVersion.compareTo(t))return s.Ns.saveNamedQuery(e,n);t=i.withResumeToken(uw.EMPTY_BYTE_STRING,t);return s.qi=s.qi.insert(t.targetId,t),s.Cs.updateTargetData(e,t).next(()=>s.Cs.removeMatchingKeysForTargetId(e,i.targetId)).next(()=>s.Cs.addMatchingKeys(e,r,i.targetId)).next(()=>s.Ns.saveNamedQuery(e,n))})}(this.localStore,e,t.get(e.name));return this.progress.taskState="Success",{progress:this.progress,Bu:this.collectionGroups,Lu:e}}}function Vk(e){return{taskState:"Running",documentsLoaded:0,bytesLoaded:0,totalDocuments:e.totalDocuments,totalBytes:e.totalBytes}}class Bk{constructor(e){this.key=e}}class jk{constructor(e){this.key=e}}class $k{constructor(e,t){this.query=e,this.qu=t,this.Uu=null,this.hasCachedResults=!1,this.current=!1,this.Ku=II(),this.mutatedKeys=II(),this.Gu=Mb(e),this.Qu=new Ak(this.Gu)}get ju(){return this.qu}Wu(e,t){const o=t?t.zu:new Nk,c=(t||this).Qu;let l=(t||this).mutatedKeys,u=c,h=!1;const d="F"===this.query.limitType&&c.size===this.query.limit?c.last():null,p="L"===this.query.limitType&&c.size===this.query.limit?c.first():null;if(e.inorderTraversal((e,t)=>{const n=c.get(e),r=Pb(this.query,t)?t:null,i=!!n&&this.mutatedKeys.has(n.key),s=!!r&&(r.hasLocalMutations||this.mutatedKeys.has(r.key)&&r.hasCommittedMutations);let a=!1;n&&r?n.data.isEqual(r.data)?i!==s&&(o.track({type:3,doc:r}),a=!0):this.Hu(n,r)||(o.track({type:2,doc:r}),a=!0,(d&&0this.query.limit;){const e="F"===this.query.limitType?u.last():u.first();u=u.delete(e.key),l=l.delete(e.key),o.track({type:1,doc:e})}return{Qu:u,zu:o,$i:h,mutatedKeys:l}}Hu(e,t){return e.hasLocalMutations&&t.hasCommittedMutations&&!t.hasLocalMutations}applyChanges(e,t,n){var r=this.Qu;this.Qu=e.Qu,this.mutatedKeys=e.mutatedKeys;const i=e.zu.Eu();i.sort((e,t)=>function(e,t){var n=e=>{switch(e){case 0:return 1;case 2:case 3:return 2;case 1:return 0;default:return o_()}};return n(e)-n(t)}(e.type,t.type)||this.Gu(e.doc,t.doc)),this.Ju(n);var s=t?this.Yu():[],a=0===this.Ku.size&&this.current?1:0,o=a!==this.Uu;return this.Uu=a,0!==i.length||o?{snapshot:new Rk(this.query,e.Qu,r,i,e.mutatedKeys,0==a,o,!1,!!n&&0this.qu=this.qu.add(e)),e.modifiedDocuments.forEach(e=>{}),e.removedDocuments.forEach(e=>this.qu=this.qu.delete(e)),this.current=e.current)}Yu(){if(!this.current)return[];const t=this.Ku;this.Ku=II(),this.Qu.forEach(e=>{this.Zu(e.key)&&(this.Ku=this.Ku.add(e.key))});const n=[];return t.forEach(e=>{this.Ku.has(e)||n.push(new jk(e))}),this.Ku.forEach(e=>{t.has(e)||n.push(new Bk(e))}),n}tc(e){this.qu=e.Hi,this.Ku=II();var t=this.Wu(e.documents);return this.applyChanges(t,!0)}ec(){return Rk.fromInitialDocuments(this.query,this.Qu,this.mutatedKeys,0===this.Uu,this.hasCachedResults)}}class Kk{constructor(e,t,n){this.query=e,this.targetId=t,this.view=n}}class Wk{constructor(e){this.key=e,this.nc=!1}}class zk{constructor(e,t,n,r,i,s){this.localStore=e,this.remoteStore=t,this.eventManager=n,this.sharedClientState=r,this.currentUser=i,this.maxConcurrentLimboResolutions=s,this.sc={},this.ic=new fI(e=>xb(e),Rb),this.rc=new Map,this.oc=new Set,this.uc=new nb(R_.comparator),this.cc=new Map,this.ac=new aE,this.hc={},this.lc=new Map,this.fc=L0.vn(),this.onlineState="Unknown",this.dc=void 0}get isPrimaryClient(){return!0===this.dc}}async function Gk(n,e,t,r,i){n._c=(e,s,t)=>async function(e,t,n){let r=t.view.Wu(s);r.$i&&(r=await DE(e.localStore,t.query,!1).then(({documents:e})=>t.view.Wu(e,r)));var i=n&&n.targetChanges.get(t.targetId),i=t.view.applyChanges(r,e.isPrimaryClient,i);return nS(e,t.targetId,i.Xu),i.snapshot}(n,e,t);const s=await DE(n.localStore,e,!0),a=new $k(e,s.Hi),o=a.Wu(s.documents),c=kI.createSynthesizedTargetChangeForCurrentChange(t,r&&"Offline"!==n.onlineState,i),l=a.applyChanges(o,n.isPrimaryClient,c);nS(n,t,l.Xu);var u=new Kk(e,t,a);return n.ic.set(e,u),n.rc.has(t)?n.rc.get(t).push(e):n.rc.set(t,[e]),l.snapshot}async function Hk(e,t,n){const r=lS(e);try{const e=await function(e,i){const s=e,a=E_.now(),o=i.reduce((e,t)=>e.add(t.key),II());let c,l;return s.persistence.runTransaction("Locally write mutations","readwrite",n=>{let t=gI,r=II();return s.Gi.getEntries(n,o).next(e=>{t=e,t.forEach((e,t)=>{t.isValidDocument()||(r=r.add(e))})}).next(()=>s.localDocuments.getOverlayedDocuments(n,t)).next(e=>{c=e;const t=[];for(const n of i){const i=function(e,t){let n=null;for(const r of e.fieldTransforms){const e=t.data.field(r.field),i=Vb(r.transform,e||null);null!=i&&(null===n&&(n=lb.empty()),n.set(r.field,i))}return n||null}(n,c.get(n.key).overlayedDocument);null!=i&&t.push(new sI(n.key,i,function r(e){const i=[];return sw(e.fields,(e,t)=>{const n=new N_([e]);if(Rw(t)){const e=r(t.mapValue).fields;if(0===e.length)i.push(n);else for(const t of e)i.push(n.child(t))}else i.push(n)}),new cb(i)}(i.value.mapValue),Jb.exists(!0)))}return s.mutationQueue.addMutationBatch(n,a,t,i)}).next(e=>{var t=(l=e).applyToLocalDocumentSet(c,r);return s.documentOverlayCache.saveOverlays(n,e.batchId,t)})}).then(()=>({batchId:l.batchId,changes:yI(c)}))}(r.localStore,t);r.sharedClientState.addPendingMutation(e.batchId),function(e,t,n){let r=e.hc[e.currentUser.toKey()];r=r||new nb(b_),r=r.insert(t,n),e.hc[e.currentUser.toKey()]=r}(r,e.batchId,n),await iS(r,e.changes),await _k(r.remoteStore)}catch(e){const t=Ck(e,"Failed to persist write");n.reject(t)}}async function Qk(e,t){const r=e;try{const e=await AE(r.localStore,t);t.targetChanges.forEach((e,t)=>{const n=r.cc.get(t);n&&(c_(e.addedDocuments.size+e.modifiedDocuments.size+e.removedDocuments.size<=1),0{var n=t.view.bu(i);n.snapshot&&r.push(n.snapshot)}),function(e,n){const t=e;t.onlineState=n;let r=!1;t.queries.forEach((e,t)=>{for(const e of t.listeners)e.bu(n)&&(r=!0)}),r&&Mk(t)}(t.eventManager,i),r.length&&t.sc.Wo(r),t.onlineState=i,t.isPrimaryClient&&t.sharedClientState.setOnlineState(i)}}async function Jk(e,t){const n=e,r=t.batch.batchId;try{const e=await function(e,r){const i=e;return i.persistence.runTransaction("Acknowledge batch","readwrite-primary",e=>{const t=r.batch.keys(),n=i.Gi.newChangeBuffer({trackRemovals:!0});return function(e,t,r,i){const s=r.batch,n=s.keys();let a=$_.resolve();return n.forEach(n=>{a=a.next(()=>i.getEntry(t,n)).next(e=>{var t=r.docVersions.get(n);c_(null!==t),e.version.compareTo(t)<0&&(s.applyToRemoteDocument(e,r),e.isValidDocument()&&(e.setReadTime(r.commitVersion),i.addEntry(e)))})}),a.next(()=>e.mutationQueue.removeMutationBatch(t,s))}(i,e,r,n).next(()=>n.apply(e)).next(()=>i.mutationQueue.performConsistencyCheck(e)).next(()=>i.documentOverlayCache.removeOverlaysForBatchId(e,t,r.batch.batchId)).next(()=>i.localDocuments.recalculateAndSaveOverlaysForDocumentKeys(e,function(e){let t=II();for(let n=0;ni.localDocuments.getDocuments(e,t))})}(n.localStore,t);Zk(n,r,null),Xk(n,r),n.sharedClientState.updateMutationState(r,"acknowledged"),await iS(n,e)}catch(e){await j_(e)}}function Xk(e,t){(e.lc.get(t)||[]).forEach(e=>{e.resolve()}),e.lc.delete(t)}function Zk(e,t,n){const r=e;let i=r.hc[r.currentUser.toKey()];if(i){const e=i.get(t);e&&(n?e.reject(n):e.resolve(),i=i.remove(t)),r.hc[r.currentUser.toKey()]=i}}function eS(t,e,n=null){t.sharedClientState.removeLocalQueryTarget(e);for(const r of t.rc.get(e))t.ic.delete(r),n&&t.sc.wc(r,n);t.rc.delete(e),t.isPrimaryClient&&t.ac.ls(e).forEach(e=>{t.ac.containsKey(e)||tS(t,e)})}function tS(e,t){e.oc.delete(t.path.canonicalString());var n=e.uc.get(t);null!==n&&(uk(e.remoteStore,n),e.uc=e.uc.remove(t),e.cc.delete(n),rS(e))}function nS(e,t,n){for(const r of n)r instanceof Bk?(e.ac.addReference(r.key,t),function(e,t){const n=t.key,r=n.path.canonicalString();e.uc.get(n)||e.oc.has(r)||(r_("SyncEngine","New document in limbo: "+n),e.oc.add(r),rS(e))}(e,r)):r instanceof jk?(r_("SyncEngine","Document no longer in limbo: "+r.key),e.ac.removeReference(r.key,t),e.ac.containsKey(r.key)||tS(e,r.key)):o_()}function rS(e){for(;0{o.push(i._c(n,t,r).then(e=>{var t;(e||r)&&i.isPrimaryClient&&i.sharedClientState.updateQueryState(n.targetId,null!=e&&e.fromCache?"not-current":"current"),e&&(s.push(e),t=IE.Ci(n.targetId,e),a.push(t))}))}),await Promise.all(o),i.sc.Wo(s),await async function(e,t){const r=e;try{await r.persistence.runTransaction("notifyLocalViewChanges","readwrite",n=>$_.forEach(t,t=>$_.forEach(t.Si,e=>r.persistence.referenceDelegate.addReference(n,t.targetId,e)).next(()=>$_.forEach(t.Di,e=>r.persistence.referenceDelegate.removeReference(n,t.targetId,e)))))}catch(e){if(!H_(e))throw e;r_("LocalStore","Failed to update sequence numbers: "+e)}for(const e of t){const t=e.targetId;if(!e.fromCache){const e=r.qi.get(t),n=e.snapshotVersion,i=e.withLastLimboFreeSnapshotVersion(n);r.qi=r.qi.insert(t,i)}}}(i.localStore,a))}async function sS(r,e){const i=r;if(cS(i),lS(i),!0===e&&!0!==i.dc){const r=i.sharedClientState.getAllActiveQueryTargets(),e=await aS(i,r.toArray());i.dc=!0,await Tk(i.remoteStore,!0);for(const r of e)lk(i.remoteStore,r)}else if(!1===e&&!1!==i.dc){const r=[];let n=Promise.resolve();i.rc.forEach((e,t)=>{i.sharedClientState.isLocalQueryTarget(t)?r.push(t):n=n.then(()=>(eS(i,t),xE(i.localStore,t,!0))),uk(i.remoteStore,t)}),await n,await aS(i,r),function(){const n=i;n.cc.forEach((e,t)=>{uk(n.remoteStore,t)}),n.ac.fs(),n.cc=new Map,n.uc=new nb(R_.comparator)}(),i.dc=!1,await Tk(i.remoteStore,!1)}}async function aS(t,n){const r=t,i=[],s=[];for(const t of n){let e;const u=r.rc.get(t);if(u&&0!==u.length){e=await RE(r.localStore,Cb(u[0]));for(const t of u){const n=r.ic.get(t),u=(a=r,o=n,l=c=void 0,l=await DE((c=a).localStore,o.query,!0),l=o.view.tc(l),c.isPrimaryClient&&nS(c,o.targetId,l.Xu),await l);u.snapshot&&s.push(u.snapshot)}}else{const u=await PE(r.localStore,t);e=await RE(r.localStore,u),await Gk(r,oS(u),t,!1,e.resumeToken)}i.push(e)}var a,o,c,l;return r.sc.Wo(s),i}function oS(e){return wb(e.path,e.collectionGroup,e.orderBy,e.filters,e.limit,"F",e.startAt,e.endAt)}function cS(e){const t=e;return t.remoteStore.remoteSyncer.applyRemoteEvent=Qk.bind(null,t),t.remoteStore.remoteSyncer.getRemoteKeysForTarget=(function(e,t){const n=e,r=n.cc.get(t);if(r&&r.nc)return II().add(r.key);{let e=II();const r=n.rc.get(t);if(!r)return e;for(const t of r){const r=n.ic.get(t);e=e.unionWith(r.view.ju)}return e}}).bind(null,t),t.remoteStore.remoteSyncer.rejectListen=(async function(e,t,n){const r=e;r.sharedClientState.updateQueryState(t,"rejected",n);const i=r.cc.get(t),s=i&&i.key;if(s){let e=new nb(R_.comparator);e=e.insert(s,ub.newNoDocument(s,k_.min()));const n=II().add(s),i=new EI(k_.min(),new Map,new sb(b_),e,n);await Qk(r,i),r.uc=r.uc.remove(s),r.cc.delete(t),rS(r)}else await xE(r.localStore,t,!1).then(()=>eS(r,t,n)).catch(j_)}).bind(null,t),t.sc.Wo=(function(e,t){const n=e;let r=!1;for(const e of t){const t=e.query,i=n.queries.get(t);if(i){for(const t of i.listeners)t.Pu(e)&&(r=!0);i.Au=e}}r&&Mk(n)}).bind(null,t.eventManager),t.sc.wc=(function(e,t,n){const r=e,i=r.queries.get(t);if(i)for(const e of i.listeners)e.onError(n);r.queries.delete(t)}).bind(null,t.eventManager),t}function lS(e){const t=e;return t.remoteStore.remoteSyncer.applySuccessfulWrite=Jk.bind(null,t),t.remoteStore.remoteSyncer.rejectFailedWrite=(async function(e,t,n){const r=e;try{const e=await function(e,r){const i=e;return i.persistence.runTransaction("Reject batch","readwrite-primary",t=>{let n;return i.mutationQueue.lookupMutationBatch(t,r).next(e=>(c_(null!==e),n=e.keys(),i.mutationQueue.removeMutationBatch(t,e))).next(()=>i.mutationQueue.performConsistencyCheck(t)).next(()=>i.documentOverlayCache.removeOverlaysForBatchId(t,n,r)).next(()=>i.localDocuments.recalculateAndSaveOverlaysForDocumentKeys(t,n)).next(()=>i.localDocuments.getDocuments(t,n))})}(r.localStore,t);Zk(r,t,n),Xk(r,t),r.sharedClientState.updateMutationState(t,"rejected",n),await iS(r,e)}catch(n){await j_(n)}}).bind(null,t),t}class uS{constructor(){this.synchronizeTabs=!1}async initialize(e){this.yt=ZE(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 kE(this.persistence,new TE,e.initialUser,this.yt)}yc(e){return new dE(fE.Bs,this.yt)}gc(e){return new WE}async terminate(){this.gcScheduler&&this.gcScheduler.stop(),await this.sharedClientState.shutdown(),await this.persistence.shutdown()}}class hS extends uS{constructor(e,t,n){super(),this.Ac=e,this.cacheSizeBytes=t,this.forceOwnership=n,this.synchronizeTabs=!1}async initialize(e){await super.initialize(e),await this.Ac.initialize(this,e),await lS(this.Ac.syncEngine),await _k(this.Ac.remoteStore),await this.persistence.li(()=>(this.gcScheduler&&!this.gcScheduler.started&&this.gcScheduler.start(),this.indexBackfillerScheduler&&!this.indexBackfillerScheduler.started&&this.indexBackfillerScheduler.start(),Promise.resolve()))}Ic(e){return kE(this.persistence,new TE,e.initialUser,this.yt)}Tc(e,t){var n=this.persistence.referenceDelegate.garbageCollector;return new $0(n,e.asyncQueue,t)}Ec(e,t){var n=new ew(t,this.persistence);return new Z_(e.asyncQueue,n)}yc(e){var t=bE(e.databaseInfo.databaseId,e.databaseInfo.persistenceKey),n=void 0!==this.cacheSizeBytes?A0.withCacheSize(this.cacheSizeBytes):A0.DEFAULT;return new yE(this.synchronizeTabs,t,e.clientId,n,e.asyncQueue,JE(),XE(),this.yt,this.sharedClientState,!!this.forceOwnership)}gc(e){return new WE}}class dS extends hS{constructor(e,t){super(e,t,!1),this.Ac=e,this.cacheSizeBytes=t,this.synchronizeTabs=!0}async initialize(e){await super.initialize(e);var t=this.Ac.syncEngine;this.sharedClientState instanceof KE&&(this.sharedClientState.syncEngine={Fr:(async function(e,t,n,r){var i=e,s=await function(e,n){const r=e,i=r.mutationQueue;return r.persistence.runTransaction("Lookup mutation documents","readonly",t=>i.Tn(t,n).next(e=>e?r.localDocuments.getDocuments(t,e):$_.resolve(null)))}(i.localStore,t);null!==s?("pending"===n?await _k(i.remoteStore):"acknowledged"===n||"rejected"===n?(Zk(i,t,r||null),Xk(i,t),i.localStore.mutationQueue.An(t)):o_(),await iS(i,s)):r_("SyncEngine","Cannot apply mutation batch with id: "+t)}).bind(null,t),$r:(async function(e,t,n,r){const i=e;if(i.dc)r_("SyncEngine","Ignoring unexpected query state notification.");else{var s=i.rc.get(t);if(s&&0{uk(r.remoteStore,e),eS(r,e)}).catch(j_)}}).bind(null,t),vi:(function(e){return e.localStore.persistence.vi()}).bind(null,t),Mr:(async function(e,t){const n=e;return OE(n.localStore,t).then(e=>iS(n,e))}).bind(null,t)},await this.sharedClientState.start()),await this.persistence.li(async e=>{await sS(this.Ac.syncEngine,e),this.gcScheduler&&(e&&!this.gcScheduler.started?this.gcScheduler.start():e||this.gcScheduler.stop()),this.indexBackfillerScheduler&&(e&&!this.indexBackfillerScheduler.started?this.indexBackfillerScheduler.start():e||this.indexBackfillerScheduler.stop())})}gc(e){var t=JE();if(!KE.C(t))throw new u_(l_.UNIMPLEMENTED,"IndexedDB persistence is only available on platforms that support LocalStorage.");var n=bE(e.databaseInfo.databaseId,e.databaseInfo.persistenceKey);return new KE(t,e.asyncQueue,n,e.clientId,e.initialUser)}}class pS{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=>Yk(this.syncEngine,e,1),this.remoteStore.remoteSyncer.handleCredentialChange=(async function(e,t){const n=e;if(!n.currentUser.isEqual(t)){r_("SyncEngine","User change. New user:",t.toKey());const r=await SE(n.localStore,t);n.currentUser=t,(e=n).lc.forEach(e=>{e.forEach(e=>{e.reject(new u_(l_.CANCELLED,"'waitForPendingWrites' promise is rejected due to a user change."))})}),e.lc.clear(),n.sharedClientState.handleUserChange(t,r.removedBatchIds,r.addedBatchIds),await iS(n,r.ji)}}).bind(null,this.syncEngine),await Tk(this.remoteStore,this.syncEngine.isPrimaryClient))}createEventManager(e){return new Dk}createDatastore(e){var t,n,r,i,s=ZE(e.databaseInfo.databaseId),t=(t=e.databaseInfo,new YE(t));return n=e.authCredentials,r=e.appCheckCredentials,i=t,e=s,new ik(n,r,i,e)}createRemoteStore(e){return t=this.localStore,n=this.datastore,r=e.asyncQueue,i=e=>Yk(this.syncEngine,e,0),s=new(GE.C()?GE:zE),new ak(t,n,r,i,s);var t,n,r,i,s}createSyncEngine(e,t){return function(e,t,n,r,i,s,a){const o=new zk(e,t,n,r,i,s);return a&&(o.dc=!0),o}(this.localStore,this.remoteStore,this.eventManager,this.sharedClientState,e.initialUser,e.maxConcurrentLimboResolutions,t)}terminate(){return async function(e){const t=e;r_("RemoteStore","RemoteStore shutting down."),t._u.add(5),await ck(t),t.mu.shutdown(),t.gu.set("Unknown")}(this.remoteStore)}}function fS(e,t,n){if(!n)throw new u_(l_.INVALID_ARGUMENT,`Function ${e}() cannot be called with an empty ${t}.`)}function gS(e,t,n,r){if(!0===t&&!0===r)throw new u_(l_.INVALID_ARGUMENT,`${e} and ${n} cannot be used together.`)}function mS(e){if(!R_.isDocumentKey(e))throw new u_(l_.INVALID_ARGUMENT,`Invalid document reference. Document references must have an even number of segments, but ${e} has ${e.length}.`)}function vS(e){if(R_.isDocumentKey(e))throw new u_(l_.INVALID_ARGUMENT,`Invalid collection reference. Collection references must have an odd number of segments, but ${e} has ${e.length}.`)}function yS(e){if(void 0===e)return"undefined";if(null===e)return"null";if("string"==typeof e)return 20{this.muted||e(t)},0)}}class PS{constructor(e,t){this.Pc=e,this.yt=t,this.metadata=new h_,this.buffer=new Uint8Array,this.vc=new TextDecoder("utf-8"),this.Vc().then(e=>{e&&e.Ou()?this.metadata.resolve(e.ku.metadata):this.metadata.reject(new Error(`The first element of the bundle is not a metadata, it is\n ${JSON.stringify(null==e?void 0:e.ku)}`))},e=>this.metadata.reject(e))}close(){return this.Pc.cancel()}async getMetadata(){return this.metadata.promise}async mc(){return await this.getMetadata(),this.Vc()}async Vc(){var e=await this.Sc();if(null===e)return null;var t=this.vc.decode(e),n=Number(t);isNaN(n)&&this.Dc(`length string (${t}) is not valid number`);t=await this.Cc(n);return new Fk(JSON.parse(t),e.length+n)}xc(){return this.buffer.findIndex(e=>e==="{".charCodeAt(0))}async Sc(){for(;this.xc()<0&&!await this.Nc(););if(0===this.buffer.length)return null;var e=this.xc();e<0&&this.Dc("Reached the end of bundle when a length string is expected.");var t=this.buffer.slice(0,e);return this.buffer=this.buffer.slice(e),t}async Cc(e){for(;this.buffer.lengthjI(r.yt,e))},s=await r._o("BatchGetDocuments",n,i,t.length),a=new Map;s.forEach(e=>{const t=(n=r.yt,"found"in(e=e)?function(e,t){c_(!!t.found),t.found.name,t.found.updateTime;var n=$I(e,t.found.name),r=qI(t.found.updateTime),i=t.found.createTime?qI(t.found.createTime):k_.min(),s=new lb({mapValue:{fields:t.found.fields}});return ub.newFoundDocument(n,r,i,s)}(n,e):"missing"in e?function(e,t){c_(!!t.missing),c_(!!t.readTime);var n=$I(e,t.missing),r=qI(t.readTime);return ub.newNoDocument(n,r)}(n,e):o_());var n;a.set(t.key.toString(),t)});const o=[];return t.forEach(e=>{var t=a.get(e.toString());c_(!!t),o.push(t)}),o}(this.datastore,e);return t.forEach(e=>this.recordVersion(e)),t}set(e,t){this.write(t.toMutation(e,this.precondition(e))),this.writtenDocs.add(e.toString())}update(e,t){try{this.write(t.toMutation(e,this.preconditionForUpdate(e)))}catch(e){this.lastWriteError=e}this.writtenDocs.add(e.toString())}delete(e){this.write(new lI(e,this.precondition(e))),this.writtenDocs.add(e.toString())}async commit(){if(this.ensureCommitNotCalled(),this.lastWriteError)throw this.lastWriteError;const t=this.readVersions;this.mutations.forEach(e=>{t.delete(e.key.toString())}),t.forEach((e,t)=>{var n=R_.fromPath(t);this.mutations.push(new uI(n,this.precondition(n)))}),await async function(e,t){const n=e,r=zI(n.yt)+"/documents",i={writes:t.map(e=>YI(n.yt,e))};await n.ao("Commit",r,i)}(this.datastore,this.mutations),this.committed=!0}recordVersion(e){let t;if(e.isFoundDocument())t=e.version;else{if(!e.isNoDocument())throw o_();t=k_.min()}var n=this.readVersions.get(e.key.toString());if(n){if(!t.isEqual(n))throw new u_(l_.ABORTED,"Document version changed between two reads.")}else this.readVersions.set(e.key.toString(),t)}precondition(e){const t=this.readVersions.get(e.toString());return!this.writtenDocs.has(e.toString())&&t?t.isEqual(k_.min())?Jb.exists(!1):Jb.updateTime(t):Jb.none()}preconditionForUpdate(e){const t=this.readVersions.get(e.toString());if(this.writtenDocs.has(e.toString())||!t)return Jb.exists(!0);if(t.isEqual(k_.min()))throw new u_(l_.INVALID_ARGUMENT,"Can't update a document that doesn't exist.");return Jb.updateTime(t)}write(e){this.ensureCommitNotCalled(),this.mutations.push(e)}ensureCommitNotCalled(){}}class MS{constructor(e,t,n,r,i){this.asyncQueue=e,this.datastore=t,this.options=n,this.updateFunction=r,this.deferred=i,this.kc=n.maxAttempts,this.xo=new ek(this.asyncQueue,"transaction_retry")}run(){--this.kc,this.Oc()}Oc(){this.xo.Ro(async()=>{const t=new OS(this.datastore),e=this.Mc(t);e&&e.then(e=>{this.asyncQueue.enqueueAndForget(()=>t.commit().then(()=>{this.deferred.resolve(e)}).catch(e=>{this.Fc(e)}))}).catch(e=>{this.Fc(e)})})}Mc(e){try{var t=this.updateFunction(e);return!ow(t)&&t.catch&&t.then?t:(this.deferred.reject(Error("Transaction callback must return a Promise")),null)}catch(e){return this.deferred.reject(e),null}}Fc(e){0(this.Oc(),Promise.resolve()))):this.deferred.reject(e)}$c(e){if("FirebaseError"!==e.name)return!1;var t=e.code;return"aborted"===t||"failed-precondition"===t||"already-exists"===t||!dI(t)}}class LS{constructor(e,t,n,r){this.authCredentials=e,this.appCheckCredentials=t,this.asyncQueue=n,this.databaseInfo=r,this.user=Zy.UNAUTHENTICATED,this.clientId=w_.R(),this.authCredentialListener=()=>Promise.resolve(),this.appCheckCredentialListener=()=>Promise.resolve(),this.authCredentials.start(n,async e=>{r_("FirestoreClient","Received user=",e.uid),await this.authCredentialListener(e),this.user=e}),this.appCheckCredentials.start(n,e=>(r_("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 u_(l_.FAILED_PRECONDITION,"The client has already been terminated.")}terminate(){this.asyncQueue.enterRestrictedMode();const n=new h_;return this.asyncQueue.enqueueAndForgetEvenWhileRestricted(async()=>{try{this.onlineComponents&&await this.onlineComponents.terminate(),this.offlineComponents&&await this.offlineComponents.terminate(),this.authCredentials.shutdown(),this.appCheckCredentials.shutdown(),n.resolve()}catch(e){var t=Ck(e,"Failed to shutdown persistence");n.reject(t)}}),n.promise}}async function FS(e,t){e.asyncQueue.verifyOperationInProgress(),r_("FirestoreClient","Initializing OfflineComponentProvider");var n=await e.getConfiguration();await t.initialize(n);let r=n.initialUser;e.setCredentialChangeListener(async e=>{r.isEqual(e)||(await SE(t.localStore,e),r=e)}),t.persistence.setDatabaseDeletedListener(()=>e.terminate()),e.offlineComponents=t}async function US(e,n){e.asyncQueue.verifyOperationInProgress();var t=await qS(e);r_("FirestoreClient","Initializing OnlineComponentProvider");var r=await e.getConfiguration();await n.initialize(t,r),e.setCredentialChangeListener(e=>Ik(n.remoteStore,e)),e.setAppCheckTokenChangeListener((e,t)=>Ik(n.remoteStore,t)),e.onlineComponents=n}async function qS(e){return e.offlineComponents||(r_("FirestoreClient","Using default OfflineComponentProvider"),await FS(e,new uS)),e.offlineComponents}async function VS(e){return e.onlineComponents||(r_("FirestoreClient","Using default OnlineComponentProvider"),await US(e,new pS)),e.onlineComponents}function BS(e){return qS(e).then(e=>e.persistence)}function jS(e){return qS(e).then(e=>e.localStore)}function $S(e){return VS(e).then(e=>e.remoteStore)}function KS(e){return VS(e).then(e=>e.syncEngine)}async function WS(e){const t=await VS(e),n=t.eventManager;return n.onListen=(async function(e,t){const n=cS(e);let r,i;const s=n.ic.get(t);if(s)r=s.targetId,n.sharedClientState.addLocalQueryTarget(r),i=s.view.ec();else{const e=await RE(n.localStore,Cb(t));n.isPrimaryClient&&lk(n.remoteStore,e);const s=n.sharedClientState.addLocalQueryTarget(e.targetId);r=e.targetId,i=await Gk(n,t,r,"current"===s,e.resumeToken)}return i}).bind(null,t.syncEngine),n.onUnlisten=(async function(e,t){const n=e,r=n.ic.get(t),i=n.rc.get(r.targetId);if(1!Rb(e,t))),void n.ic.delete(t);n.isPrimaryClient?(n.sharedClientState.removeLocalQueryTarget(r.targetId),n.sharedClientState.isActiveQueryTarget(r.targetId)||await xE(n.localStore,r.targetId,!1).then(()=>{n.sharedClientState.clearQueryState(r.targetId),uk(n.remoteStore,r.targetId),eS(n,r.targetId)}).catch(j_)):(eS(n,r.targetId),await xE(n.localStore,r.targetId,!0))}).bind(null,t.syncEngine),n}function zS(e,t,n={}){const r=new h_;return e.asyncQueue.enqueueAndForget(async()=>function(n,r,i,s,a){const e=new DS({next:e=>{r.enqueueAndForget(()=>Ok(n,o));var t=e.docs.has(i);!t&&e.fromCache?a.reject(new u_(l_.UNAVAILABLE,"Failed to get document because the client is offline.")):t&&e.fromCache&&s&&"server"===s.source?a.reject(new u_(l_.UNAVAILABLE,'Failed to get document from server. (However, this document does exist in the local cache. Run again without setting source to "server" to retrieve the cached document.)')):a.resolve(e)},error:e=>a.reject(e)}),o=new Lk(bb(i.path),e,{includeMetadataChanges:!0,Nu:!0});return Pk(n,o)}(await WS(e),e.asyncQueue,t,n,r)),r.promise}function GS(e,t,n={}){const r=new h_;return e.asyncQueue.enqueueAndForget(async()=>function(t,n,e,r,i){const s=new DS({next:e=>{n.enqueueAndForget(()=>Ok(t,a)),e.fromCache&&"server"===r.source?i.reject(new u_(l_.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.)')):i.resolve(e)},error:e=>i.reject(e)}),a=new Lk(e,s,{includeMetadataChanges:!0,Nu:!0});return Pk(t,a)}(await WS(e),e.asyncQueue,t,n,r)),r.promise}function HS(e,t,n,r){const i=(n=n,t=ZE(t),s="string"==typeof n?(new TextEncoder).encode(n):n,n=function(e){if(e instanceof Uint8Array)return xS(e,void 0);if(e instanceof ArrayBuffer)return xS(new Uint8Array(e),void 0);if(e instanceof ReadableStream)return e.getReader();throw new Error("Source of `toByteStreamReader` has to be a ArrayBuffer or ReadableStream")}(s),t=t,new PS(n,t));var s;e.asyncQueue.enqueueAndForget(async()=>{!function(e,t,n){const r=e;!async function(t,n,r){try{var i=await n.getMetadata();if(await function(e,t){const n=e,r=qI(t.createTime);return n.persistence.runTransaction("hasNewerBundle","readonly",e=>n.Ns.getBundleMetadata(e,t.id)).then(e=>!!e&&0<=e.createTime.compareTo(r))}(t.localStore,i))return await n.close(),r._completeWith({taskState:"Success",documentsLoaded:i.totalDocuments,bytesLoaded:i.totalBytes,totalDocuments:i.totalDocuments,totalBytes:i.totalBytes}),Promise.resolve(new Set);r._updateProgress(Vk(i));const a=new qk(i,t.localStore,n.yt);let e=await n.mc();for(;e;){const t=await a.Fu(e);t&&r._updateProgress(t),e=await n.mc()}var s=await a.complete();return await iS(t,s.Lu,void 0),await function(e,t){const n=e;return n.persistence.runTransaction("Save bundle","readwrite",e=>n.Ns.saveBundleMetadata(e,t))}(t.localStore,i),r._completeWith(s.progress),Promise.resolve(s.Bu)}catch(t){return s_("SyncEngine",`Loading bundle failed with ${t}`),r._failWith(t),Promise.resolve(new Set)}}(r,t,n).then(e=>{r.sharedClientState.notifyBundleLoaded(e)})}(await KS(e),i,r)})}class QS{constructor(){this.Bc=Promise.resolve(),this.Lc=[],this.qc=!1,this.Uc=[],this.Kc=null,this.Gc=!1,this.Qc=!1,this.jc=[],this.xo=new ek(this,"async_queue_retry"),this.Wc=()=>{var e=XE();e&&r_("AsyncQueue","Visibility state changed to "+e.visibilityState),this.xo.Po()};const e=XE();e&&"function"==typeof e.addEventListener&&e.addEventListener("visibilitychange",this.Wc)}get isShuttingDown(){return this.qc}enqueueAndForget(e){this.enqueue(e)}enqueueAndForgetEvenWhileRestricted(e){this.zc(),this.Hc(e)}enterRestrictedMode(e){if(!this.qc){this.qc=!0,this.Qc=e||!1;const t=XE();t&&"function"==typeof t.removeEventListener&&t.removeEventListener("visibilitychange",this.Wc)}}enqueue(e){if(this.zc(),this.qc)return new Promise(()=>{});const t=new h_;return this.Hc(()=>this.qc&&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(!H_(e))throw e;r_("AsyncQueue","Operation failed with retryable error: "+e)}0this.Jc())}}Hc(e){var t=this.Bc.then(()=>(this.Gc=!0,e().catch(e=>{throw this.Kc=e,this.Gc=!1,i_("INTERNAL UNHANDLED ERROR: ",function(e){let t=e.message||"";return e.stack&&(t=e.stack.includes(e.message)?e.stack:e.message+"\n"+e.stack),t}(e)),e}).then(e=>(this.Gc=!1,e))));return this.Bc=t}enqueueAfterDelay(e,t,n){this.zc(),-1this.Yc(e));return this.Uc.push(r),r}zc(){this.Kc&&o_()}verifyOperationInProgress(){}async Xc(){for(var e;await(e=this.Bc),e!==this.Bc;);}Zc(e){for(const t of this.Uc)if(t.timerId===e)return!0;return!1}ta(t){return this.Xc().then(()=>{this.Uc.sort((e,t)=>e.targetTimeMs-t.targetTimeMs);for(const e of this.Uc)if(e.skipDelay(),"all"!==t&&e.timerId===t)break;return this.Xc()})}ea(e){this.jc.push(e)}Yc(e){var t=this.Uc.indexOf(e);this.Uc.splice(t,1)}}function YS(e){return function(e){if("object"==typeof e&&null!==e){var t=e;for(const e of["next","error","complete"])if(e in t&&"function"==typeof t[e])return 1}}(e)}class JS{constructor(){this._progressObserver={},this._taskCompletionResolver=new h_,this._lastProgress={taskState:"Running",totalBytes:0,totalDocuments:0,bytesLoaded:0,documentsLoaded:0}}onProgress(e,t,n){this._progressObserver={next:e,error:t,complete:n}}catch(e){return this._taskCompletionResolver.promise.catch(e)}then(e,t){return this._taskCompletionResolver.promise.then(e,t)}_completeWith(e){this._updateProgress(e),this._progressObserver.complete&&this._progressObserver.complete(),this._taskCompletionResolver.resolve(e)}_failWith(e){this._lastProgress.taskState="Error",this._progressObserver.next&&this._progressObserver.next(this._lastProgress),this._progressObserver.error&&this._progressObserver.error(e),this._taskCompletionResolver.reject(e)}_updateProgress(e){this._lastProgress=e,this._progressObserver.next&&this._progressObserver.next(e)}}var XS,ZS,eC,tC,nC;class rC extends TS{constructor(e,t,n,r){super(e,t,n,r),this.type="firestore",this._queue=new QS,this._persistenceKey=(null==r?void 0:r.name)||"[DEFAULT]"}_terminate(){return this._firestoreClient||sC(this),this._firestoreClient.terminate()}}function iC(e){return e._firestoreClient||sC(e),e._firestoreClient.verifyNotTerminated(),e._firestoreClient}function sC(e){var t,n,r,i,s,a=e._freezeSettings(),a=(n=e._databaseId,r=(null===(t=e._app)||void 0===t?void 0:t.options.appId)||"",i=e._persistenceKey,s=a,new nw(n,r,i,s.host,s.ssl,s.experimentalForceLongPolling,s.experimentalAutoDetectLongPolling,s.useFetchStreams));e._firestoreClient=new LS(e._authCredentials,e._appCheckCredentials,e._queue,a)}function aC(e,n,r){const i=new h_;return e.asyncQueue.enqueue(async()=>{try{await FS(e,r),await US(e,n),i.resolve()}catch(e){const n=e;if(!("FirebaseError"===(t=n).name?t.code===l_.FAILED_PRECONDITION||t.code===l_.UNIMPLEMENTED:!("undefined"!=typeof DOMException&&t instanceof DOMException)||(22===t.code||20===t.code||11===t.code)))throw n;s_("Error enabling offline persistence. Falling back to persistence disabled: "+n),i.reject(n)}var t}).then(()=>i.promise)}function oC(e){return function(e){const t=new h_;return e.asyncQueue.enqueueAndForget(async()=>async function(e,t){const n=e;gk(n.remoteStore)||r_("SyncEngine","The network is disabled. The task returned by 'awaitPendingWrites()' will not complete until the network is enabled.");try{const e=await function(){const t=n.localStore;return t.persistence.runTransaction("Get highest unacknowledged batch id","readonly",e=>t.mutationQueue.getHighestUnacknowledgedBatchId(e))}();if(-1===e)return void t.resolve();const r=n.lc.get(e)||[];r.push(t),n.lc.set(e,r)}catch(e){const n=Ck(e,"Initialization of waitForPendingWrites() operation failed");t.reject(n)}}(await KS(e),t)),t.promise}(iC(e=_S(e,rC)))}function cC(e){return(n=iC(e=_S(e,rC))).asyncQueue.enqueue(async()=>{const e=await BS(n),t=await $S(n);return e.setNetworkEnabled(!0),function(){const e=t;return e._u.delete(0),ok(e)}()});var n}function lC(e){return(n=iC(e=_S(e,rC))).asyncQueue.enqueue(async()=>{const e=await BS(n),t=await $S(n);return e.setNetworkEnabled(!1),async function(){const e=t;e._u.add(0),await ck(e),e.gu.set("Offline")}()});var n}function uC(t,e){return n=iC(t=_S(t,rC)),r=e,n.asyncQueue.enqueue(async()=>function(e,t){const n=e;return n.persistence.runTransaction("Get named query","readonly",e=>n.Ns.getNamedQuery(e,t))}(await jS(n),r)).then(e=>e?new kS(t,null,e.query):null);var n,r}function hC(e){if(e._initialized||e._terminated)throw new u_(l_.FAILED_PRECONDITION,"Firestore has already been started and persistence can no longer be enabled. You can only enable persistence before calling any other methods on a Firestore object.")}class dC{constructor(e){this._byteString=e}static fromBase64String(e){try{return new dC(uw.fromBase64String(e))}catch(e){throw new u_(l_.INVALID_ARGUMENT,"Failed to construct data from Base64 string: "+e)}}static fromUint8Array(e){return new dC(uw.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 pC{constructor(...e){for(let t=0;tt.isPrefixOf(e))||void 0!==this.fieldTransforms.find(e=>t.isPrefixOf(e.field))}na(){if(this.path)for(let e=0;ec.covers(e.field))}else c=null,l=a.fieldTransforms;return new vC(new lb(o),c,l)}class EC extends fC{_toFieldTransform(e){if(2!==e.sa)throw 1===e.sa?e.ha(`${this._methodName}() can only appear at the top level of your update data`):e.ha(`${this._methodName}() cannot be used with set() unless you pass {merge:true}`);return e.fieldMask.push(e.path),null}isEqual(e){return e instanceof EC}}function kC(e,t,n){return new wC({sa:3,fa:t.settings.fa,methodName:e._methodName,oa:n},t.databaseId,t.yt,t.ignoreUndefinedProperties)}class SC extends fC{_toFieldTransform(e){return new Qb(e.path,new Bb)}isEqual(e){return e instanceof SC}}class CC extends fC{constructor(e,t){super(e),this._a=t}_toFieldTransform(e){const t=kC(this,e,!0),n=this._a.map(e=>PC(e,t)),r=new jb(n);return new Qb(e.path,r)}isEqual(e){return this===e}}class AC extends fC{constructor(e,t){super(e),this._a=t}_toFieldTransform(e){const t=kC(this,e,!0),n=this._a.map(e=>PC(e,t)),r=new Kb(n);return new Qb(e.path,r)}isEqual(e){return this===e}}class NC extends fC{constructor(e,t){super(e),this.wa=t}_toFieldTransform(e){var t=new zb(e.yt,Ub(e.yt,this.wa));return new Qb(e.path,t)}isEqual(e){return this===e}}function RC(e,i,s,t){const a=e.da(1,i,s);LC("Data must be an object, but it was:",a,t);const o=[],c=lb.empty();sw(t,(e,t)=>{var n=qC(i,e,s);t=ae(t);var r=a.ca(n);if(t instanceof EC)o.push(n);else{const e=PC(t,r);null!=e&&(o.push(n),c.set(n,e))}});var n=new cb(o);return new yC(c,n,a.fieldTransforms)}function xC(e,t,n,r,i,s){const a=e.da(1,t,n),o=[FC(t,r,n)],c=[i];if(s.length%2!=0)throw new u_(l_.INVALID_ARGUMENT,`Function ${t}() needs to be called with an even number of arguments that alternate between field names and values.`);for(let p=0;p{var n=PC(t,r.ra(e));null!=n&&(i[e]=n)}),{mapValue:{fields:i}}}function MC(e){return!("object"!=typeof e||null===e||e instanceof Array||e instanceof Date||e instanceof E_||e instanceof gC||e instanceof dC||e instanceof ES||e instanceof fC)}function LC(e,t,n){if(!MC(n)||("object"!=typeof(i=n)||null===i||Object.getPrototypeOf(i)!==Object.prototype&&null!==Object.getPrototypeOf(i))){var r=yS(n);throw"an object"===r?t.ha(e+" a custom object"):t.ha(e+" "+r)}var i}function FC(e,t,n){if((t=ae(t))instanceof pC)return t._internalPath;if("string"==typeof t)return qC(e,t);throw VC("Field path arguments must be of type string or ",e,!1,void 0,n)}const UC=new RegExp("[~\\*/\\[\\]]");function qC(t,n,r){if(0<=n.search(UC))throw VC(`Invalid field path (${n}). Paths must not contain '~', '*', '/', '[', or ']'`,t,!1,void 0,r);try{return new pC(...n.split("."))._internalPath}catch(e){throw VC(`Invalid field path (${n}). Paths must not be empty, begin with '.', end with '.', or contain '..'`,t,!1,void 0,r)}}function VC(e,t,n,r,i){var s=r&&!r.isEmpty(),a=void 0!==i;let o=`Function ${t}() called with invalid data`;n&&(o+=" (via `toFirestore()`)"),o+=". ";let c="";return(s||a)&&(c+=" (found",s&&(c+=` in field ${r}`),a&&(c+=` in document ${i}`),c+=")"),new u_(l_.INVALID_ARGUMENT,o+e+c)}function BC(e,t){return e.some(e=>e.isEqual(t))}class jC{constructor(e,t,n,r,i){this._firestore=e,this._userDataWriter=t,this._key=n,this._document=r,this._converter=i}get id(){return this._key.path.lastSegment()}get ref(){return new ES(this._firestore,this._converter,this._key)}exists(){return null!==this._document}data(){if(this._document){if(this._converter){var e=new $C(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){var t=this._document.data.field(KC("DocumentSnapshot.get",e));if(null!==t)return this._userDataWriter.convertValue(t)}}}class $C extends jC{data(){return super.data()}}function KC(e,t){return"string"==typeof t?qC(e,t):(t instanceof pC?t:t._delegate)._internalPath}function WC(e){if("L"===e.limitType&&0===e.explicitOrderBy.length)throw new u_(l_.UNIMPLEMENTED,"limitToLast() queries require specifying at least one orderBy() clause")}class zC{}class GC extends zC{}function HC(e,t,...n){let r=[];t instanceof zC&&r.push(t),r=r.concat(n),function(e){var t=e.filter(e=>e instanceof YC).length,n=e.filter(e=>e instanceof QC).length;if(1e._parse(t)).filter(e=>0a.length)throw new u_(l_.INVALID_ARGUMENT,`Too many arguments provided to ${r}(). The number of arguments must be less than or equal to the number of orderBy() clauses`);const o=[];for(let c=0;c, or >=) must be on the same field. But you have inequality filters on '${r.toString()}' and '${i.toString()}'`);var n=Tb(e);null!==n&&sA(0,i,n)}const r=function(e,t){for(const n of e)for(const e of n.getFlattenedFilters())if(0<=t.indexOf(e.op))return e.op;return null}(e.filters,function(){switch(t.op){case"!=":return["!=","not-in"];case"array-contains":return["array-contains","array-contains-any","not-in"];case"in":return["array-contains-any","in","not-in"];case"array-contains-any":return["array-contains","array-contains-any","in","not-in"];case"not-in":return["array-contains","array-contains-any","in","not-in","!="];default:return[]}}());if(null!==r)throw r===t.op?new u_(l_.INVALID_ARGUMENT,`Invalid query. You cannot use more than one '${t.op.toString()}' filter.`):new u_(l_.INVALID_ARGUMENT,`Invalid query. You cannot use '${t.op.toString()}' filters with '${r.toString()}' filters.`)}function sA(e,t,n){if(!n.isEqual(t))throw new u_(l_.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.`)}class aA{convertValue(e,t="none"){switch(_w(e)){case 0:return null;case 1:return e.booleanValue;case 2:return pw(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(fw(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 o_()}}convertObject(e,n){const r={};return sw(e.fields,(e,t)=>{r[e]=this.convertValue(t,n)}),r}convertGeoPoint(e){return new gC(pw(e.latitude),pw(e.longitude))}convertArray(e,t){return(e.values||[]).map(e=>this.convertValue(e,t))}convertServerTimestamp(e,t){switch(t){case"previous":var n=function e(t){var n=t.mapValue.fields.__previous_value__;return gw(n)?e(n):n}(e);return null==n?null:this.convertValue(n,t);case"estimate":return this.convertTimestamp(mw(e));default:return null}}convertTimestamp(e){var t=dw(e);return new E_(t.seconds,t.nanos)}convertDocumentKey(e,t){const n=C_.fromString(e);c_(sT(n));const r=new rw(n.get(1),n.get(3)),i=new R_(n.popFirst(5));return r.isEqual(t)||i_(`Document ${i} contains a document reference within a different database (${r.projectId}/${r.database}) which is not supported. It will be treated as a reference in the current database (${t.projectId}/${t.database}) instead.`),i}}function oA(e,t,n){return e?n&&(n.merge||n.mergeFields)?e.toFirestore(t,n):e.toFirestore(t):t}class cA extends aA{constructor(e){super(),this.firestore=e}convertBytes(e){return new dC(e)}convertReference(e){var t=this.convertDocumentKey(e,this.firestore._databaseId);return new ES(this.firestore,null,t)}}class lA{constructor(e,t){this.hasPendingWrites=e,this.fromCache=t}isEqual(e){return this.hasPendingWrites===e.hasPendingWrites&&this.fromCache===e.fromCache}}class uA extends jC{constructor(e,t,n,r,i,s){super(e,t,n,r,s),this._firestore=e,this._firestoreImpl=e,this.metadata=i}exists(){return super.exists()}data(e={}){if(this._document){if(this._converter){var t=new hA(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){var n=this._document.data.field(KC("DocumentSnapshot.get",e));if(null!==n)return this._userDataWriter.convertValue(n,t.serverTimestamps)}}}class hA extends uA{data(e={}){return super.data(e)}}class dA{constructor(e,t,n,r){this._firestore=e,this._userDataWriter=t,this._snapshot=r,this.metadata=new lA(r.hasPendingWrites,r.fromCache),this.query=n}get docs(){const t=[];return this.forEach(e=>t.push(e)),t}get size(){return this._snapshot.docs.size}get empty(){return 0===this.size}forEach(t,n){this._snapshot.docs.forEach(e=>{t.call(n,new hA(this._firestore,this._userDataWriter,e.key,e,new lA(this._snapshot.mutatedKeys.has(e.key),this._snapshot.fromCache),this.query.converter))})}docChanges(e={}){var t=!!e.includeMetadataChanges;if(t&&this._snapshot.excludesMetadataChanges)throw new u_(l_.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(s,t){if(s._snapshot.oldDocs.isEmpty()){let n=0;return s._snapshot.docChanges.map(e=>{var t=new hA(s._firestore,s._userDataWriter,e.doc.key,e.doc,new lA(s._snapshot.mutatedKeys.has(e.doc.key),s._snapshot.fromCache),s.query.converter);return e.doc,{type:"added",doc:t,oldIndex:-1,newIndex:n++}})}{let i=s._snapshot.oldDocs;return s._snapshot.docChanges.filter(e=>t||3!==e.type).map(e=>{var t=new hA(s._firestore,s._userDataWriter,e.doc.key,e.doc,new lA(s._snapshot.mutatedKeys.has(e.doc.key),s._snapshot.fromCache),s.query.converter);let n=-1,r=-1;return 0!==e.type&&(n=i.indexOf(e.doc.key),i=i.delete(e.doc.key)),1!==e.type&&(i=i.add(e.doc),r=i.indexOf(e.doc.key)),{type:function(e){switch(e){case 0:return"added";case 2:case 3:return"modified";case 1:return"removed";default:return o_()}}(e.type),doc:t,oldIndex:n,newIndex:r}})}}(this,t),this._cachedChangesIncludeMetadataChanges=t),this._cachedChanges}}function pA(e,t){return e instanceof uA&&t instanceof uA?e._firestore===t._firestore&&e._key.isEqual(t._key)&&(null===e._document?null===t._document:e._document.isEqual(t._document))&&e._converter===t._converter:e instanceof dA&&t instanceof dA&&e._firestore===t._firestore&&RS(e.query,t.query)&&e.metadata.isEqual(t.metadata)&&e._snapshot.isEqual(t._snapshot)}class fA extends aA{constructor(e){super(),this.firestore=e}convertBytes(e){return new dC(e)}convertReference(e){var t=this.convertDocumentKey(e,this.firestore._databaseId);return new ES(this.firestore,null,t)}}function gA(t){t=_S(t,ES);const n=_S(t.firestore,rC),e=iC(n),r=new fA(n);return function(e,t){const n=new h_;return e.asyncQueue.enqueueAndForget(async()=>async function(e,t,n){try{const i=await function(t){const n=e;return n.persistence.runTransaction("read document","readonly",e=>n.localDocuments.getDocument(e,t))}(t);i.isFoundDocument()?n.resolve(i):i.isNoDocument()?n.resolve(null):n.reject(new u_(l_.UNAVAILABLE,"Failed to get document from cache. (However, this document may exist on the server. Run again without setting 'source' in the GetOptions to attempt to retrieve the document from the server.)"))}catch(e){var r=Ck(e,`Failed to get document '${t} from cache`);n.reject(r)}}(await jS(e),t,n)),n.promise}(e,t._key).then(e=>new uA(n,r,t._key,e,new lA(null!==e&&e.hasLocalMutations,!0),t.converter))}function mA(t){t=_S(t,kS);const n=_S(t.firestore,rC),e=iC(n),r=new fA(n);return function(e,t){const n=new h_;return e.asyncQueue.enqueueAndForget(async()=>async function(e,t,n){try{const i=await DE(e,t,!0),s=new $k(t,i.Hi),a=s.Wu(i.documents),o=s.applyChanges(a,!1);n.resolve(o.snapshot)}catch(e){var r=Ck(e,`Failed to execute query '${t} against cache`);n.reject(r)}}(await jS(e),t,n)),n.promise}(e,t._query).then(e=>new dA(n,r,t,e))}function vA(e,t,n){e=_S(e,ES);var r=_S(e.firestore,rC),i=oA(e.converter,t,n);return bA(r,[TC(IC(r),"setDoc",e._key,i,null!==e.converter,n).toMutation(e._key,Jb.none())])}function yA(e,t,n,...r){e=_S(e,ES);var i=_S(e.firestore,rC),s=IC(i);let a;return a="string"==typeof(t=ae(t))||t instanceof pC?xC(s,"updateDoc",e._key,t,n,r):RC(s,"updateDoc",e._key,t),bA(i,[a.toMutation(e._key,Jb.exists(!0))])}function _A(t,...n){var e;t=ae(t);let r={includeMetadataChanges:!1},i=0;"object"!=typeof n[i]||YS(n[i])||(r=n[i],i++);var s={includeMetadataChanges:r.includeMetadataChanges};if(YS(n[i])){const t=n[i];n[i]=null===(e=t.next)||void 0===e?void 0:e.bind(t),n[i+1]=null===(e=t.error)||void 0===e?void 0:e.bind(t),n[i+2]=null===(e=t.complete)||void 0===e?void 0:e.bind(t)}let a,o,c;if(t instanceof ES)o=_S(t.firestore,rC),c=bb(t._key.path),a={next:e=>{n[i]&&n[i](IA(o,t,e))},error:n[i+1],complete:n[i+2]};else{const l=_S(t,kS);o=_S(l.firestore,rC),c=l._query;const u=new fA(o);a={next:e=>{n[i]&&n[i](new dA(o,u,l,e))},error:n[i+1],complete:n[i+2]},WC(t._query)}return function(e,t,n,r){const i=new DS(r),s=new Lk(t,i,n);return e.asyncQueue.enqueueAndForget(async()=>Pk(await WS(e),s)),()=>{i.bc(),e.asyncQueue.enqueueAndForget(async()=>Ok(await WS(e),s))}}(iC(o),c,s,a)}function wA(e,t){return function(e,t){const n=new DS(t);return e.asyncQueue.enqueueAndForget(async()=>function(e,t){e.Ru.add(t),t.next()}(await WS(e),n)),()=>{n.bc(),e.asyncQueue.enqueueAndForget(async()=>function(e,t){e.Ru.delete(t)}(await WS(e),n))}}(iC(e=_S(e,rC)),YS(t)?t:{next:t})}function bA(e,t){return function(e,t){const n=new h_;return e.asyncQueue.enqueueAndForget(async()=>Hk(await KS(e),t,n)),n.promise}(iC(e),t)}function IA(e,t,n){var r=n.docs.get(t._key),i=new fA(e);return new uA(e,i,t._key,r,new lA(n.hasPendingWrites,n.fromCache),t.converter)}const TA={maxAttempts:5};class EA{constructor(e,t){this._firestore=e,this._commitHandler=t,this._mutations=[],this._committed=!1,this._dataReader=IC(e)}set(e,t,n){this._verifyNotCommitted();const r=kA(e,this._firestore),i=oA(r.converter,t,n),s=TC(this._dataReader,"WriteBatch.set",r._key,i,null!==r.converter,n);return this._mutations.push(s.toMutation(r._key,Jb.none())),this}update(e,t,n,...r){this._verifyNotCommitted();var i=kA(e,this._firestore);let s;return s="string"==typeof(t=ae(t))||t instanceof pC?xC(this._dataReader,"WriteBatch.update",i._key,t,n,r):RC(this._dataReader,"WriteBatch.update",i._key,t),this._mutations.push(s.toMutation(i._key,Jb.exists(!0))),this}delete(e){this._verifyNotCommitted();var t=kA(e,this._firestore);return this._mutations=this._mutations.concat(new lI(t._key,Jb.none())),this}commit(){return this._verifyNotCommitted(),this._committed=!0,0{if(!e||1!==e.length)return o_();const t=e[0];if(t.isFoundDocument())return new jC(this._firestore,r,t.key,t,n.converter);if(t.isNoDocument())return new jC(this._firestore,r,n._key,null,n.converter);throw o_()})}set(e,t,n){var r=kA(e,this._firestore),i=oA(r.converter,t,n),i=TC(this._dataReader,"Transaction.set",r._key,i,null!==r.converter,n);return this._transaction.set(r._key,i),this}update(e,t,n,...r){var i=kA(e,this._firestore),s="string"==typeof(t=ae(t))||t instanceof pC?xC(this._dataReader,"Transaction.update",i._key,t,n,r):RC(this._dataReader,"Transaction.update",i._key,t);return this._transaction.update(i._key,s),this}delete(e){var t=kA(e,this._firestore);return this._transaction.delete(t._key),this}}{constructor(e,t){super(e,t),this._firestore=e}get(e){const t=kA(e,this._firestore),n=new fA(this._firestore);return super.get(e).then(e=>new uA(this._firestore,n,t._key,e._document,new lA(!1,!1),t.converter))}}function CA(t,n,e){t=_S(t,rC);var r=Object.assign(Object.assign({},TA),e);return function(){if(r.maxAttempts<1)throw new u_(l_.INVALID_ARGUMENT,"Max attempts must be at least 1")}(),function(t,n,r){const i=new h_;return t.asyncQueue.enqueueAndForget(async()=>{var e=await VS(t).then(e=>e.datastore);new MS(t.asyncQueue,e,r,n,i).run()}),i.promise}(iC(t),e=>n(new SA(t,e)),r)}XS=Ye,e_=XS,ze(new oe("firestore",(e,{instanceIdentifier:t,options:n})=>{const r=e.getProvider("app").getImmediate(),i=new rC(new g_(e.getProvider("auth-internal")),new __(e.getProvider("app-check-internal")),function(e,t){if(!Object.prototype.hasOwnProperty.apply(e.options,["projectId"]))throw new u_(l_.INVALID_ARGUMENT,'"projectId" not provided in firebase.initializeApp.');return new rw(e.options.projectId,t)}(r,t),r);return n=Object.assign({useFetchStreams:!0},n),i._setSettings(n),i},"PUBLIC").setMultipleInstances(!0)),et(Xy,"3.8.1",void 0),et(Xy,"3.8.1","esm2017");function AA(e,t){if(void 0===t)return{merge:!1};if(void 0!==t.mergeFields&&void 0!==t.merge)throw new u_("invalid-argument",`Invalid options passed to function ${e}(): You cannot `+'specify both "merge" and "mergeFields".');return t}function NA(){if("undefined"==typeof Uint8Array)throw new u_("unimplemented","Uint8Arrays are not available in this environment.")}function RA(){if("undefined"==typeof atob)throw new u_("unimplemented","Blobs are unavailable in Firestore in this environment.")}class xA{constructor(e){this._delegate=e}static fromBase64String(e){return RA(),new xA(dC.fromBase64String(e))}static fromUint8Array(e){return NA(),new xA(dC.fromUint8Array(e))}toBase64(){return RA(),this._delegate.toBase64()}toUint8Array(){return NA(),this._delegate.toUint8Array()}isEqual(e){return this._delegate.isEqual(e._delegate)}toString(){return"Blob(base64: "+this.toBase64()+")"}}function DA(e){return function(e,t){if("object"!=typeof e||null===e)return;var n=e;for(const r of t)if(r in n&&"function"==typeof n[r])return 1;return}(e,["next","error","complete"])}class PA{enableIndexedDbPersistence(e,t){return function(e,t){hC(e=_S(e,rC));var n=iC(e),r=e._freezeSettings(),i=new pS;return aC(n,i,new hS(i,r.cacheSizeBytes,null==t?void 0:t.forceOwnership))}(e._delegate,{forceOwnership:t})}enableMultiTabIndexedDbPersistence(e){return function(e){hC(e=_S(e,rC));var t=iC(e),n=e._freezeSettings(),r=new pS;return aC(t,r,new dS(r,n.cacheSizeBytes))}(e._delegate)}clearIndexedDbPersistence(e){return function(e){if(e._initialized&&!e._terminated)throw new u_(l_.FAILED_PRECONDITION,"Persistence can only be cleared before a Firestore instance is initialized or after it is terminated.");const t=new h_;return e._queue.enqueueAndForgetEvenWhileRestricted(async()=>{try{await async function(e){if(!W_.C())return Promise.resolve();var t=e+"main";await W_.delete(t)}(bE(e._databaseId,e._persistenceKey)),t.resolve()}catch(e){t.reject(e)}}),t.promise}(e._delegate)}}class OA{constructor(e,t,n){this._delegate=t,this._persistenceProvider=n,this.INTERNAL={delete:()=>this.terminate()},e instanceof rw||(this._appCompat=e)}get _databaseId(){return this._delegate._databaseId}settings(e){var t=this._delegate._getSettings();e.merge||t.host===e.host||s_("You are overriding the original host. If you did not intend to override your settings, use {merge: true}."),e.merge&&delete(e=Object.assign(Object.assign({},t),e)).merge,this._delegate._setSettings(e)}useEmulator(e,t,n={}){!function(n,e,t,r={}){var i;const s=(n=_S(n,TS))._getSettings();if("firestore.googleapis.com"!==s.host&&s.host!==e&&s_("Host has been set in both settings() and useEmulator(), emulator host will be used"),n._setSettings(Object.assign(Object.assign({},s),{host:`${e}:${t}`,ssl:!1})),r.mockUserToken){let e,t;if("string"==typeof r.mockUserToken)e=r.mockUserToken,t=Zy.MOCK_USER;else{e=_(r.mockUserToken,null===(i=n._app)||void 0===i?void 0:i.options.projectId);const s=r.mockUserToken.sub||r.mockUserToken.user_id;if(!s)throw new u_(l_.INVALID_ARGUMENT,"mockUserToken must contain 'sub' or 'user_id' field!");t=new Zy(s)}n._authCredentials=new f_(new d_(e,t))}}(this._delegate,e,t,n)}enableNetwork(){return cC(this._delegate)}disableNetwork(){return lC(this._delegate)}enablePersistence(e){let t=!1,n=!1;return e&&(t=!!e.synchronizeTabs,n=!!e.experimentalForceOwningTab,gS("synchronizeTabs",t,"experimentalForceOwningTab",n)),t?this._persistenceProvider.enableMultiTabIndexedDbPersistence(this):this._persistenceProvider.enableIndexedDbPersistence(this,n)}clearPersistence(){return this._persistenceProvider.clearIndexedDbPersistence(this)}terminate(){return this._appCompat&&(this._appCompat._removeServiceInstance("firestore-compat"),this._appCompat._removeServiceInstance("firestore")),this._delegate._delete()}waitForPendingWrites(){return oC(this._delegate)}onSnapshotsInSync(e){return wA(this._delegate,e)}get app(){if(!this._appCompat)throw new u_("failed-precondition","Firestore was not initialized using the Firebase SDK. 'app' is not available");return this._appCompat}collection(e){try{return new HA(this,CS(this._delegate,e))}catch(e){throw VA(e,"collection()","Firestore.collection()")}}doc(e){try{return new qA(this,AS(this._delegate,e))}catch(e){throw VA(e,"doc()","Firestore.doc()")}}collectionGroup(e){try{return new WA(this,function(e,t){if(e=_S(e,TS),fS("collectionGroup","collection id",t),0<=t.indexOf("/"))throw new u_(l_.INVALID_ARGUMENT,`Invalid collection ID '${t}' passed to function collectionGroup(). Collection IDs must not contain '/'.`);return new kS(e,null,(t=t,new _b(C_.emptyPath(),t)))}(this._delegate,e))}catch(e){throw VA(e,"collectionGroup()","Firestore.collectionGroup()")}}runTransaction(t){return CA(this._delegate,e=>t(new LA(this,e)))}batch(){return iC(this._delegate),new FA(new EA(this._delegate,e=>bA(this._delegate,e)))}loadBundle(e){return t=this._delegate,e=e,n=iC(t=_S(t,rC)),r=new JS,HS(n,t._databaseId,e,r),r;var t,n,r}namedQuery(e){return uC(this._delegate,e).then(e=>e?new WA(this,e):null)}}class MA extends aA{constructor(e){super(),this.firestore=e}convertBytes(e){return new xA(new dC(e))}convertReference(e){var t=this.convertDocumentKey(e,this.firestore._databaseId);return qA.forKey(t,this.firestore,null)}}class LA{constructor(e,t){this._firestore=e,this._delegate=t,this._userDataWriter=new MA(e)}get(e){const t=QA(e);return this._delegate.get(t).then(e=>new $A(this._firestore,new uA(this._firestore._delegate,this._userDataWriter,e._key,e._document,e.metadata,t.converter)))}set(e,t,n){var r=QA(e);return n?(AA("Transaction.set",n),this._delegate.set(r,t,n)):this._delegate.set(r,t),this}update(e,t,n,...r){var i=QA(e);return 2===arguments.length?this._delegate.update(i,t):this._delegate.update(i,t,n,...r),this}delete(e){var t=QA(e);return this._delegate.delete(t),this}}class FA{constructor(e){this._delegate=e}set(e,t,n){var r=QA(e);return n?(AA("WriteBatch.set",n),this._delegate.set(r,t,n)):this._delegate.set(r,t),this}update(e,t,n,...r){var i=QA(e);return 2===arguments.length?this._delegate.update(i,t):this._delegate.update(i,t,n,...r),this}delete(e){var t=QA(e);return this._delegate.delete(t),this}commit(){return this._delegate.commit()}}class UA{constructor(e,t,n){this._firestore=e,this._userDataWriter=t,this._delegate=n}fromFirestore(e,t){var n=new hA(this._firestore._delegate,this._userDataWriter,e._key,e._document,e.metadata,null);return this._delegate.fromFirestore(new KA(this._firestore,n),null!=t?t:{})}toFirestore(e,t){return t?this._delegate.toFirestore(e,t):this._delegate.toFirestore(e)}static getInstance(e,t){const n=UA.INSTANCES;let r=n.get(e);r||(r=new WeakMap,n.set(e,r));let i=r.get(t);return i||(i=new UA(e,new MA(e),t),r.set(t,i)),i}}UA.INSTANCES=new WeakMap;class qA{constructor(e,t){this.firestore=e,this._delegate=t,this._userDataWriter=new MA(e)}static forPath(e,t,n){if(e.length%2!=0)throw new u_("invalid-argument","Invalid document reference. Document references must have an even number of segments, but "+`${e.canonicalString()} has ${e.length}`);return new qA(t,new ES(t._delegate,n,new R_(e)))}static forKey(e,t,n){return new qA(t,new ES(t._delegate,n,e))}get id(){return this._delegate.id}get parent(){return new HA(this.firestore,this._delegate.parent)}get path(){return this._delegate.path}collection(e){try{return new HA(this.firestore,CS(this._delegate,e))}catch(e){throw VA(e,"collection()","DocumentReference.collection()")}}isEqual(e){return(e=ae(e))instanceof ES&&NS(this._delegate,e)}set(e,t){t=AA("DocumentReference.set",t);try{return t?vA(this._delegate,e,t):vA(this._delegate,e)}catch(e){throw VA(e,"setDoc()","DocumentReference.set()")}}update(e,t,...n){try{return 1===arguments.length?yA(this._delegate,e):yA(this._delegate,e,t,...n)}catch(e){throw VA(e,"updateDoc()","DocumentReference.update()")}}delete(){return bA(_S((e=this._delegate).firestore,rC),[new lI(e._key,Jb.none())]);var e}onSnapshot(...e){var t=BA(e),n=jA(e,e=>new $A(this.firestore,new uA(this.firestore._delegate,this._userDataWriter,e._key,e._document,e.metadata,this._delegate.converter)));return _A(this._delegate,t,n)}get(e){let t;return t=("cache"===(null==e?void 0:e.source)?gA:"server"===(null==e?void 0:e.source)?function(t){t=_S(t,ES);const n=_S(t.firestore,rC);return zS(iC(n),t._key,{source:"server"}).then(e=>IA(n,t,e))}:function(t){t=_S(t,ES);const n=_S(t.firestore,rC);return zS(iC(n),t._key).then(e=>IA(n,t,e))})(this._delegate),t.then(e=>new $A(this.firestore,new uA(this.firestore._delegate,this._userDataWriter,e._key,e._document,e.metadata,this._delegate.converter)))}withConverter(e){return new qA(this.firestore,e?this._delegate.withConverter(UA.getInstance(this.firestore,e)):this._delegate.withConverter(null))}}function VA(e,t,n){return e.message=e.message.replace(t,n),e}function BA(e){for(const t of e)if("object"==typeof t&&!DA(t))return t;return{}}function jA(e,t){var n;let r;return r=DA(e[0])?e[0]:DA(e[1])?e[1]:"function"==typeof e[0]?{next:e[0],error:e[1],complete:e[2]}:{next:e[1],error:e[2],complete:e[3]},{next:e=>{r.next&&r.next(t(e))},error:null===(n=r.error)||void 0===n?void 0:n.bind(r),complete:null===(n=r.complete)||void 0===n?void 0:n.bind(r)}}class $A{constructor(e,t){this._firestore=e,this._delegate=t}get ref(){return new qA(this._firestore,this._delegate.ref)}get id(){return this._delegate.id}get metadata(){return this._delegate.metadata}get exists(){return this._delegate.exists()}data(e){return this._delegate.data(e)}get(e,t){return this._delegate.get(e,t)}isEqual(e){return pA(this._delegate,e._delegate)}}class KA extends $A{data(e){var t=this._delegate.data(e);return void 0!==t||o_(),t}}class WA{constructor(e,t){this.firestore=e,this._delegate=t,this._userDataWriter=new MA(e)}where(e,t,n){try{return new WA(this.firestore,HC(this._delegate,(r=n,i=t,s=KC("where",e),QC._create(s,i,r))))}catch(e){throw VA(e,/(orderBy|where)\(\)/,"Query.$1()")}var r,i,s}orderBy(e,t){try{return new WA(this.firestore,HC(this._delegate,([n,r="asc"]=[e,t],i=r,s=KC("orderBy",n),JC._create(s,i))))}catch(e){throw VA(e,/(orderBy|where)\(\)/,"Query.$1()")}var n,r,i,s}limit(e){try{return new WA(this.firestore,HC(this._delegate,(wS("limit",t=e),XC._create("limit",t,"F"))))}catch(e){throw VA(e,"limit()","Query.limit()")}var t}limitToLast(e){try{return new WA(this.firestore,HC(this._delegate,(wS("limitToLast",t=e),XC._create("limitToLast",t,"L"))))}catch(e){throw VA(e,"limitToLast()","Query.limitToLast()")}var t}startAt(...e){try{return new WA(this.firestore,HC(this._delegate,function(...e){return ZC._create("startAt",e,!0)}(...e)))}catch(e){throw VA(e,"startAt()","Query.startAt()")}}startAfter(...e){try{return new WA(this.firestore,HC(this._delegate,function(...e){return ZC._create("startAfter",e,!1)}(...e)))}catch(e){throw VA(e,"startAfter()","Query.startAfter()")}}endBefore(...e){try{return new WA(this.firestore,HC(this._delegate,function(...e){return eA._create("endBefore",e,!1)}(...e)))}catch(e){throw VA(e,"endBefore()","Query.endBefore()")}}endAt(...e){try{return new WA(this.firestore,HC(this._delegate,function(...e){return eA._create("endAt",e,!0)}(...e)))}catch(e){throw VA(e,"endAt()","Query.endAt()")}}isEqual(e){return RS(this._delegate,e._delegate)}get(e){let t;return t=("cache"===(null==e?void 0:e.source)?mA:"server"===(null==e?void 0:e.source)?function(t){t=_S(t,kS);const n=_S(t.firestore,rC),e=iC(n),r=new fA(n);return GS(e,t._query,{source:"server"}).then(e=>new dA(n,r,t,e))}:function(t){t=_S(t,kS);const n=_S(t.firestore,rC),e=iC(n),r=new fA(n);return WC(t._query),GS(e,t._query).then(e=>new dA(n,r,t,e))})(this._delegate),t.then(e=>new GA(this.firestore,new dA(this.firestore._delegate,this._userDataWriter,this._delegate,e._snapshot)))}onSnapshot(...e){var t=BA(e),n=jA(e,e=>new GA(this.firestore,new dA(this.firestore._delegate,this._userDataWriter,this._delegate,e._snapshot)));return _A(this._delegate,t,n)}withConverter(e){return new WA(this.firestore,e?this._delegate.withConverter(UA.getInstance(this.firestore,e)):this._delegate.withConverter(null))}}class zA{constructor(e,t){this._firestore=e,this._delegate=t}get type(){return this._delegate.type}get doc(){return new KA(this._firestore,this._delegate.doc)}get oldIndex(){return this._delegate.oldIndex}get newIndex(){return this._delegate.newIndex}}class GA{constructor(e,t){this._firestore=e,this._delegate=t}get query(){return new WA(this._firestore,this._delegate.query)}get metadata(){return this._delegate.metadata}get size(){return this._delegate.size}get empty(){return this._delegate.empty}get docs(){return this._delegate.docs.map(e=>new KA(this._firestore,e))}docChanges(e){return this._delegate.docChanges(e).map(e=>new zA(this._firestore,e))}forEach(t,n){this._delegate.forEach(e=>{t.call(n,new KA(this._firestore,e))})}isEqual(e){return pA(this._delegate,e._delegate)}}class HA extends WA{constructor(e,t){super(e,t),this.firestore=e,this._delegate=t}get id(){return this._delegate.id}get path(){return this._delegate.path}get parent(){var e=this._delegate.parent;return e?new qA(this.firestore,e):null}doc(e){try{return void 0===e?new qA(this.firestore,AS(this._delegate)):new qA(this.firestore,AS(this._delegate,e))}catch(e){throw VA(e,"doc()","CollectionReference.doc()")}}add(e){return function(e,t){const n=_S(e.firestore,rC),r=AS(e),i=oA(e.converter,t);return bA(n,[TC(IC(e.firestore),"addDoc",r._key,i,null!==e.converter,{}).toMutation(r._key,Jb.exists(!1))]).then(()=>r)}(this._delegate,e).then(e=>new qA(this.firestore,e))}isEqual(e){return NS(this._delegate,e._delegate)}withConverter(e){return new HA(this.firestore,e?this._delegate.withConverter(UA.getInstance(this.firestore,e)):this._delegate.withConverter(null))}}function QA(e){return _S(e,ES)}const YA={Firestore:OA,GeoPoint:gC,Timestamp:E_,Blob:xA,Transaction:LA,WriteBatch:FA,DocumentReference:qA,DocumentSnapshot:$A,Query:WA,QueryDocumentSnapshot:KA,QuerySnapshot:GA,CollectionReference:HA,FieldPath:class rO{constructor(...e){this._delegate=new pC(...e)}static documentId(){return new rO(N_.keyField().canonicalString())}isEqual(e){return(e=ae(e))instanceof pC&&this._delegate._internalPath.isEqual(e._internalPath)}},FieldValue:class iO{constructor(e){this._delegate=e}static serverTimestamp(){const e=new SC("serverTimestamp");return e._methodName="FieldValue.serverTimestamp",new iO(e)}static delete(){const e=new EC("deleteField");return e._methodName="FieldValue.delete",new iO(e)}static arrayUnion(...e){const t=function(...e){return new CC("arrayUnion",e)}(...e);return t._methodName="FieldValue.arrayUnion",new iO(t)}static arrayRemove(...e){const t=function(...e){return new AC("arrayRemove",e)}(...e);return t._methodName="FieldValue.arrayRemove",new iO(t)}static increment(e){const t=new NC("increment",e);return t._methodName="FieldValue.increment",new iO(t)}isEqual(e){return this._delegate.isEqual(e._delegate)}},setLogLevel:function(e){e=e,t_.setLogLevel(e)},CACHE_SIZE_UNLIMITED:-1};ZS=wt,eC=(e,t)=>new OA(e,t,new PA),ZS.INTERNAL.registerComponent(new oe("firestore-compat",e=>{var t=e.getProvider("app-compat").getImmediate(),n=e.getProvider("firestore").getImmediate();return eC(t,n)},"PUBLIC").setServiceProps(Object.assign({},YA))),ZS.registerVersion("@firebase/firestore-compat","0.3.1");const JA="type.googleapis.com/google.protobuf.Int64Value",XA="type.googleapis.com/google.protobuf.UInt64Value";function ZA(e,t){const n={};for(const r in e)e.hasOwnProperty(r)&&(n[r]=t(e[r]));return n}function eN(e){if(null==e)return e;if(e["@type"])switch(e["@type"]){case JA:case XA:var t=Number(e.value);if(isNaN(t))throw new Error("Data cannot be decoded from JSON: "+e);return t;default:throw new Error("Data cannot be decoded from JSON: "+e)}return Array.isArray(e)?e.map(e=>eN(e)):"function"==typeof e||"object"==typeof e?ZA(e,e=>eN(e)):e}const tN="functions",nN={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 rN extends R{constructor(e,t,n){super(`${tN}/${e}`,t||""),this.details=n}}function iN(e,t){let n=function(e){if(200<=e&&e<300)return"ok";switch(e){case 0:return"internal";case 400:return"invalid-argument";case 401:return"unauthenticated";case 403:return"permission-denied";case 404:return"not-found";case 409:return"aborted";case 429:return"resource-exhausted";case 499:return"cancelled";case 500:return"internal";case 501:return"unimplemented";case 503:return"unavailable";case 504:return"deadline-exceeded"}return"unknown"}(e),r=n,i=void 0;try{var s=t&&t.error;if(s){const e=s.status;if("string"==typeof e){if(!nN[e])return new rN("internal","internal");n=nN[e],r=e}var a=s.message;"string"==typeof a&&(r=a),i=s.details,void 0!==i&&(i=eN(i))}}catch(e){}return"ok"===n?null:new rN(n,r,i)}class sN{constructor(e,t,n){this.auth=null,this.messaging=null,this.appCheck=null,this.auth=e.getImmediate({optional:!0}),this.messaging=t.getImmediate({optional:!0}),this.auth||e.get().then(e=>this.auth=e,()=>{}),this.messaging||t.get().then(e=>this.messaging=e,()=>{}),this.appCheck||n.get().then(e=>this.appCheck=e,()=>{})}async getAuthToken(){if(this.auth)try{var e=await this.auth.getToken();return null==e?void 0:e.accessToken}catch(e){return}}async getMessagingToken(){if(this.messaging&&"Notification"in self&&"granted"===Notification.permission)try{return this.messaging.getToken()}catch(e){return}}async getAppCheckToken(){if(this.appCheck){var e=await this.appCheck.getToken();return e.error?null:e.token}return null}async getContext(){return{authToken:await this.getAuthToken(),messagingToken:await this.getMessagingToken(),appCheckToken:await this.getAppCheckToken()}}}const aN="us-central1";class oN{constructor(e,t,n,r,i=aN,s){this.app=e,this.fetchImpl=s,this.emulatorOrigin=null,this.contextProvider=new sN(t,n,r),this.cancelAllRequests=new Promise(e=>{this.deleteService=()=>Promise.resolve(e())});try{var a=new URL(i);this.customDomain=a.origin,this.region=aN}catch(e){this.customDomain=null,this.region=i}}_delete(){return this.deleteService()}_url(e){var t=this.app.options.projectId;return null===this.emulatorOrigin?null!==this.customDomain?`${this.customDomain}/${e}`:`https://${this.region}-${t}.cloudfunctions.net/${e}`:`${this.emulatorOrigin}/${t}/${this.region}/${e}`}}function cN(i,s,a){return e=>{return t=e,n=a||{},r=(e=i)._url(s),lN(e,r,t,n);var t,n,r}}async function lN(e,t,n,r){var i={data:n=function t(e){if(null==e)return null;if("number"==typeof(e=e instanceof Number?e.valueOf():e)&&isFinite(e))return e;if(!0===e||!1===e)return e;if("[object String]"===Object.prototype.toString.call(e))return e;if(e instanceof Date)return e.toISOString();if(Array.isArray(e))return e.map(e=>t(e));if("function"==typeof e||"object"==typeof e)return ZA(e,e=>t(e));throw new Error("Data cannot be encoded in JSON: "+e)}(n)};const s={};var a=await e.contextProvider.getContext();a.authToken&&(s.Authorization="Bearer "+a.authToken),a.messagingToken&&(s["Firebase-Instance-ID-Token"]=a.messagingToken),null!==a.appCheckToken&&(s["X-Firebase-AppCheck"]=a.appCheckToken);const o=function(n){let r=null;return{promise:new Promise((e,t)=>{r=setTimeout(()=>{t(new rN("deadline-exceeded","deadline-exceeded"))},n)}),cancel:()=>{r&&clearTimeout(r)}}}(r.timeout||7e4);a=await Promise.race([async function(e,t,n,r){n["Content-Type"]="application/json";let i;try{i=await r(e,{method:"POST",body:JSON.stringify(t),headers:n})}catch(e){return{status:0,json:null}}let s=null;try{s=await i.json()}catch(e){}return{status:i.status,json:s}}(t,i,s,e.fetchImpl),o.promise,e.cancelAllRequests]);if(o.cancel(),!a)throw new rN("cancelled","Firebase Functions instance was deleted.");i=iN(a.status,a.json);if(i)throw i;if(!a.json)throw new rN("internal","Response is not valid JSON object.");let c=a.json.data;if(void 0===c&&(c=a.json.result),void 0===c)throw new rN("internal","Response is missing data field.");return{data:eN(c)}}const uN="@firebase/functions";function hN(e,t,n){ae(e).emulatorOrigin=`http://${t}:${n}`}function dN(e,t,n){return r=ae(e),i=t,s=n,e=>lN(r,i,e,s||{});var r,i,s}tC=fetch.bind(self),ze(new oe(tN,(e,{instanceIdentifier:t})=>{var n=e.getProvider("app").getImmediate(),r=e.getProvider("auth-internal"),i=e.getProvider("messaging-internal"),s=e.getProvider("app-check-internal");return new oN(n,r,i,s,t,tC)},"PUBLIC").setMultipleInstances(!0)),et(uN,"0.9.1",nC),et(uN,"0.9.1","esm2017");var pN,fN,gN,mN;class vN{constructor(e,t){this.app=e,this._delegate=t,this._region=this._delegate.region,this._customDomain=this._delegate.customDomain}httpsCallable(e,t){return cN(ae(this._delegate),e,t)}httpsCallableFromURL(e,t){return dN(this._delegate,e,t)}useFunctionsEmulator(e){var t=e.match("[a-zA-Z]+://([a-zA-Z0-9.-]+)(?::([0-9]+))?");if(null==t)throw new R("functions","No origin provided to useFunctionsEmulator()");if(null==t[2])throw new R("functions","Port missing in origin provided to useFunctionsEmulator()");return hN(this._delegate,t[1],Number(t[2]))}useEmulator(e,t){return hN(this._delegate,e,t)}}const yN="us-central1",_N=(e,{instanceIdentifier:t})=>{var n=e.getProvider("app-compat").getImmediate(),r=e.getProvider("functions").getImmediate({identifier:null!=t?t:yN});return new vN(n,r)};pN={Functions:vN},wt.INTERNAL.registerComponent(new oe("functions-compat",_N,"PUBLIC").setServiceProps(pN).setMultipleInstances(!0)),wt.registerVersion("@firebase/functions-compat","0.3.1");const wN="/firebase-messaging-sw.js",bN="/firebase-cloud-messaging-push-scope",IN="BDOU99-h67HcA6JeFXHbSNMu7e2yNNu3RzoMj8TM4W88jITfq7ZmPvIM1Iv-4_l2LxQcYwhqby2xGpWwzjfAnG4",TN="https://fcmregistrations.googleapis.com/v1",EN="google.c.a.c_id",kN="google.c.a.e";function SN(e){var t=new Uint8Array(e);const n=btoa(String.fromCharCode(...t));return n.replace(/=/g,"").replace(/\+/g,"-").replace(/\//g,"_")}(Kc=qD=qD||{})[Kc.DATA_MESSAGE=1]="DATA_MESSAGE",Kc[Kc.DISPLAY_NOTIFICATION=3]="DISPLAY_NOTIFICATION",(Kc=fN=fN||{}).PUSH_RECEIVED="push-received",Kc.NOTIFICATION_CLICKED="notification-clicked";const CN="fcm_token_details_db",AN="fcm_token_object_Store";async function NN(c){if("databases"in indexedDB){const t=await indexedDB.databases(),n=t.map(e=>e.name);if(!n.includes(CN))return null}let l=null;const e=await Re(CN,5,{upgrade:async(e,t,n,r)=>{var i;if(!(t<2)&&e.objectStoreNames.contains(AN)){const o=r.objectStore(AN);var s,a=await o.index("fcmSenderId").get(c);await o.clear(),a&&(2===t?(s=a).auth&&s.p256dh&&s.endpoint&&(l={token:s.fcmToken,createTime:null!==(i=s.createTime)&&void 0!==i?i:Date.now(),subscriptionOptions:{auth:s.auth,p256dh:s.p256dh,endpoint:s.endpoint,swScope:s.swScope,vapidKey:"string"==typeof s.vapidKey?s.vapidKey:SN(s.vapidKey)}}):3===t?(s=a,l={token:s.fcmToken,createTime:s.createTime,subscriptionOptions:{auth:SN(s.auth),p256dh:SN(s.p256dh),endpoint:s.endpoint,swScope:s.swScope,vapidKey:SN(s.vapidKey)}}):4===t&&(a=a,l={token:a.fcmToken,createTime:a.createTime,subscriptionOptions:{auth:SN(a.auth),p256dh:SN(a.p256dh),endpoint:a.endpoint,swScope:a.swScope,vapidKey:SN(a.vapidKey)}}))}}});return e.close(),await xe(CN),await xe("fcm_vapid_details_db"),await xe("undefined"),function(e){if(!e||!e.subscriptionOptions)return!1;var t=e["subscriptionOptions"];return"number"==typeof e.createTime&&0{0===t&&e.createObjectStore(DN)}}),PN}async function MN(e){var t=FN(e);const n=await ON();t=await n.transaction(DN).objectStore(DN).get(t);if(t)return t;t=await NN(e.appConfig.senderId);return t?(await LN(e,t),t):void 0}async function LN(e,t){var n=FN(e);const r=await ON(),i=r.transaction(DN,"readwrite");return await i.objectStore(DN).put(t,n),await i.done,t}function FN({appConfig:e}){return e.appId}const UN=new x("messaging","Messaging",{"missing-app-config-values":'Missing App configuration value: "{$valueName}"',"only-available-in-window":"This method is available in a Window context.","only-available-in-sw":"This method is available in a service worker context.","permission-default":"The notification permission was not granted and dismissed instead.","permission-blocked":"The notification permission was not granted and blocked instead.","unsupported-browser":"This browser doesn't support the API's required to use the Firebase SDK.","indexed-db-unsupported":"This browser doesn't support indexedDb.open() (ex. Safari iFrame, Firefox Private Browsing, etc)","failed-service-worker-registration":"We are unable to register the default service worker. {$browserErrorMessage}","token-subscribe-failed":"A problem occurred while subscribing the user to FCM: {$errorInfo}","token-subscribe-no-token":"FCM returned no token when subscribing the user to push.","token-unsubscribe-failed":"A problem occurred while unsubscribing the user from FCM: {$errorInfo}","token-update-failed":"A problem occurred while updating the user from FCM: {$errorInfo}","token-update-no-token":"FCM returned no token when updating the user to push.","use-sw-after-get-token":"The useServiceWorker() method may only be called once and must be called before calling getToken() to ensure your service worker is used.","invalid-sw-registration":"The input to useServiceWorker() must be a ServiceWorkerRegistration.","invalid-bg-handler":"The input to setBackgroundMessageHandler() must be a function.","invalid-vapid-key":"The public VAPID key must be a string.","use-vapid-key-after-get-token":"The usePublicVapidKey() method may only be called once and must be called before calling getToken() to ensure your VAPID key is used."});async function qN(e,t){var n={method:"DELETE",headers:await BN(e)};try{const s=await fetch(`${VN(e.appConfig)}/${t}`,n);var r=await s.json();if(r.error){var i=r.error.message;throw UN.create("token-unsubscribe-failed",{errorInfo:i})}}catch(e){throw UN.create("token-unsubscribe-failed",{errorInfo:null==e?void 0:e.toString()})}}function VN({projectId:e}){return`${TN}/projects/${e}/registrations`}async function BN({appConfig:e,installations:t}){var n=await t.getToken();return new Headers({"Content-Type":"application/json",Accept:"application/json","x-goog-api-key":e.apiKey,"x-goog-firebase-installations-auth":`FIS ${n}`})}function jN({p256dh:e,auth:t,endpoint:n,vapidKey:r}){const i={web:{endpoint:n,auth:t,p256dh:e}};return r!==IN&&(i.web.applicationPubKey=r),i}const $N=6048e5;async function KN(e){const t=await async function(e,t){var n=await e.pushManager.getSubscription();if(n)return n;return e.pushManager.subscribe({userVisibleOnly:!0,applicationServerKey:function(e){var t=(e+"=".repeat((4-e.length%4)%4)).replace(/\-/g,"+").replace(/_/g,"/");const n=atob(t),r=new Uint8Array(n.length);for(let i=0;i=c.createTime+$N?async function(t,e){try{var n=await async function(e,t){var n=await BN(e),r=jN(t.subscriptionOptions),r={method:"PATCH",headers:n,body:JSON.stringify(r)};let i;try{const s=await fetch(`${VN(e.appConfig)}/${t.token}`,r);i=await s.json()}catch(e){throw UN.create("token-update-failed",{errorInfo:null==e?void 0:e.toString()})}if(i.error){r=i.error.message;throw UN.create("token-update-failed",{errorInfo:r})}if(!i.token)throw UN.create("token-update-no-token");return i.token}(t.firebaseDependencies,e),r=Object.assign(Object.assign({},e),{token:n,createTime:Date.now()});return await LN(t.firebaseDependencies,r),n}catch(e){throw await WN(t),e}}(e,{token:c.token,createTime:Date.now(),subscriptionOptions:o}):c.token;try{await qN(e.firebaseDependencies,c.token)}catch(e){console.warn(e)}return zN(e.firebaseDependencies,o)}return zN(e.firebaseDependencies,o)}async function WN(e){var t=await MN(e.firebaseDependencies);t&&(await qN(e.firebaseDependencies,t.token),await async function(e){var t=FN(e);const n=await ON(),r=n.transaction(DN,"readwrite");await r.objectStore(DN).delete(t),await r.done}(e.firebaseDependencies));const n=await e.swRegistration.pushManager.getSubscription();return!n||n.unsubscribe()}async function zN(e,t){var n={token:await async function(e,t){var n=await BN(e),r=jN(t),r={method:"POST",headers:n,body:JSON.stringify(r)};let i;try{const s=await fetch(VN(e.appConfig),r);i=await s.json()}catch(e){throw UN.create("token-subscribe-failed",{errorInfo:null==e?void 0:e.toString()})}if(i.error){r=i.error.message;throw UN.create("token-subscribe-failed",{errorInfo:r})}if(!i.token)throw UN.create("token-subscribe-no-token");return i.token}(e,t),createTime:Date.now(),subscriptionOptions:t};return await LN(e,n),n.token}function GN(e){var t,n,r,i,s,a={from:e.from,collapseKey:e.collapse_key,messageId:e.fcmMessageId};return r=a,(n=e).notification&&(r.notification={},(t=n.notification.title)&&(r.notification.title=t),(t=n.notification.body)&&(r.notification.body=t),(t=n.notification.image)&&(r.notification.image=t),(t=n.notification.icon)&&(r.notification.icon=t)),n=a,(r=e).data&&(n.data=r.data),r=a,((e=e).fcmOptions||null!==(i=e.notification)&&void 0!==i&&i.click_action)&&(r.fcmOptions={},(s=null!==(i=null===(i=e.fcmOptions)||void 0===i?void 0:i.link)&&void 0!==i?i:null===(s=e.notification)||void 0===s?void 0:s.click_action)&&(r.fcmOptions.link=s),(s=null===(s=e.fcmOptions)||void 0===s?void 0:s.analytics_label)&&(r.fcmOptions.analyticsLabel=s)),a}function HN(e,t){const n=[];for(let r=0;r{})}catch(e){throw UN.create("failed-service-worker-registration",{browserErrorMessage:null==e?void 0:e.message})}}async function XN(e,t){if(!navigator)throw UN.create("only-available-in-window");if("default"===Notification.permission&&await Notification.requestPermission(),"granted"!==Notification.permission)throw UN.create("permission-blocked");var n,r;return n=e,await((r=null==t?void 0:t.vapidKey)?n.vapidKey=r:n.vapidKey||(n.vapidKey=IN)),await async function(e,t){if(t||e.swRegistration||await JN(e),t||!e.swRegistration){if(!(t instanceof ServiceWorkerRegistration))throw UN.create("invalid-sw-registration");e.swRegistration=t}}(e,null==t?void 0:t.serviceWorkerRegistration),KN(e)}async function ZN(e,t,n){var r=function(e){switch(e){case fN.NOTIFICATION_CLICKED:return"notification_open";case fN.PUSH_RECEIVED:return"notification_foreground";default:throw new Error}}(t);const i=await e.firebaseDependencies.analyticsProvider.get();i.logEvent(r,{message_id:n[EN],message_name:n["google.c.a.c_l"],message_time:n["google.c.a.ts"],message_device_time:Math.floor(Date.now()/1e3)})}async function eR(e,t){var n,r=t.data;r.isFirebaseMessaging&&(e.onMessageHandler&&r.messageType===fN.PUSH_RECEIVED&&("function"==typeof e.onMessageHandler?e.onMessageHandler(GN(r)):e.onMessageHandler.next(GN(r))),n=r.data,"object"==typeof(t=n)&&t&&EN in t&&"1"===n[kN]&&await ZN(e,r.messageType,n))}const tR="@firebase/messaging",nR=e=>{const t=new YN(e.getProvider("app").getImmediate(),e.getProvider("installations-internal").getImmediate(),e.getProvider("analytics-internal"));return navigator.serviceWorker.addEventListener("message",e=>eR(t,e)),t},rR=e=>{const t=e.getProvider("messaging").getImmediate();return{getToken:e=>XN(t,e)}};function iR(e){return async function(e){if(!navigator)throw UN.create("only-available-in-window");return e.swRegistration||await JN(e),WN(e)}(e=ae(e))}function sR(e,t){return function(e,t){if(!navigator)throw UN.create("only-available-in-window");return e.onMessageHandler=t,()=>{e.onMessageHandler=null}}(e=ae(e),t)}ze(new oe("messaging",nR,"PUBLIC")),ze(new oe("messaging-internal",rR,"PRIVATE")),et(tR,"0.12.1"),et(tR,"0.12.1","esm2017");const aR="BDOU99-h67HcA6JeFXHbSNMu7e2yNNu3RzoMj8TM4W88jITfq7ZmPvIM1Iv-4_l2LxQcYwhqby2xGpWwzjfAnG4",oR="https://fcmregistrations.googleapis.com/v1",cR="FCM_MSG",lR="google.c.a.c_id",uR=3,hR=1;function dR(e){var t=new Uint8Array(e);const n=btoa(String.fromCharCode(...t));return n.replace(/=/g,"").replace(/\+/g,"-").replace(/\//g,"_")}(Kc=gN=gN||{})[Kc.DATA_MESSAGE=1]="DATA_MESSAGE",Kc[Kc.DISPLAY_NOTIFICATION=3]="DISPLAY_NOTIFICATION",(It=mN=mN||{}).PUSH_RECEIVED="push-received",It.NOTIFICATION_CLICKED="notification-clicked";const pR="fcm_token_details_db",fR="fcm_token_object_Store";async function gR(c){if("databases"in indexedDB){const t=await indexedDB.databases(),n=t.map(e=>e.name);if(!n.includes(pR))return null}let l=null;const e=await Re(pR,5,{upgrade:async(e,t,n,r)=>{var i;if(!(t<2)&&e.objectStoreNames.contains(fR)){const o=r.objectStore(fR);var s,a=await o.index("fcmSenderId").get(c);await o.clear(),a&&(2===t?(s=a).auth&&s.p256dh&&s.endpoint&&(l={token:s.fcmToken,createTime:null!==(i=s.createTime)&&void 0!==i?i:Date.now(),subscriptionOptions:{auth:s.auth,p256dh:s.p256dh,endpoint:s.endpoint,swScope:s.swScope,vapidKey:"string"==typeof s.vapidKey?s.vapidKey:dR(s.vapidKey)}}):3===t?(s=a,l={token:s.fcmToken,createTime:s.createTime,subscriptionOptions:{auth:dR(s.auth),p256dh:dR(s.p256dh),endpoint:s.endpoint,swScope:s.swScope,vapidKey:dR(s.vapidKey)}}):4===t&&(a=a,l={token:a.fcmToken,createTime:a.createTime,subscriptionOptions:{auth:dR(a.auth),p256dh:dR(a.p256dh),endpoint:a.endpoint,swScope:a.swScope,vapidKey:dR(a.vapidKey)}}))}}});return e.close(),await xe(pR),await xe("fcm_vapid_details_db"),await xe("undefined"),function(e){if(!e||!e.subscriptionOptions)return!1;var t=e["subscriptionOptions"];return"number"==typeof e.createTime&&0{0===t&&e.createObjectStore(yR)}}),_R}async function bR(e){var t=TR(e);const n=await wR();t=await n.transaction(yR).objectStore(yR).get(t);if(t)return t;t=await gR(e.appConfig.senderId);return t?(await IR(e,t),t):void 0}async function IR(e,t){var n=TR(e);const r=await wR(),i=r.transaction(yR,"readwrite");return await i.objectStore(yR).put(t,n),await i.done,t}function TR({appConfig:e}){return e.appId}const ER=new x("messaging","Messaging",{"missing-app-config-values":'Missing App configuration value: "{$valueName}"',"only-available-in-window":"This method is available in a Window context.","only-available-in-sw":"This method is available in a service worker context.","permission-default":"The notification permission was not granted and dismissed instead.","permission-blocked":"The notification permission was not granted and blocked instead.","unsupported-browser":"This browser doesn't support the API's required to use the Firebase SDK.","indexed-db-unsupported":"This browser doesn't support indexedDb.open() (ex. Safari iFrame, Firefox Private Browsing, etc)","failed-service-worker-registration":"We are unable to register the default service worker. {$browserErrorMessage}","token-subscribe-failed":"A problem occurred while subscribing the user to FCM: {$errorInfo}","token-subscribe-no-token":"FCM returned no token when subscribing the user to push.","token-unsubscribe-failed":"A problem occurred while unsubscribing the user from FCM: {$errorInfo}","token-update-failed":"A problem occurred while updating the user from FCM: {$errorInfo}","token-update-no-token":"FCM returned no token when updating the user to push.","use-sw-after-get-token":"The useServiceWorker() method may only be called once and must be called before calling getToken() to ensure your service worker is used.","invalid-sw-registration":"The input to useServiceWorker() must be a ServiceWorkerRegistration.","invalid-bg-handler":"The input to setBackgroundMessageHandler() must be a function.","invalid-vapid-key":"The public VAPID key must be a string.","use-vapid-key-after-get-token":"The usePublicVapidKey() method may only be called once and must be called before calling getToken() to ensure your VAPID key is used."});async function kR(e,t){var n={method:"DELETE",headers:await CR(e)};try{const s=await fetch(`${SR(e.appConfig)}/${t}`,n);var r=await s.json();if(r.error){var i=r.error.message;throw ER.create("token-unsubscribe-failed",{errorInfo:i})}}catch(e){throw ER.create("token-unsubscribe-failed",{errorInfo:null==e?void 0:e.toString()})}}function SR({projectId:e}){return`${oR}/projects/${e}/registrations`}async function CR({appConfig:e,installations:t}){var n=await t.getToken();return new Headers({"Content-Type":"application/json",Accept:"application/json","x-goog-api-key":e.apiKey,"x-goog-firebase-installations-auth":`FIS ${n}`})}function AR({p256dh:e,auth:t,endpoint:n,vapidKey:r}){const i={web:{endpoint:n,auth:t,p256dh:e}};return r!==aR&&(i.web.applicationPubKey=r),i}async function NR(e){const t=await async function(e,t){var n=await e.pushManager.getSubscription();if(n)return n;return e.pushManager.subscribe({userVisibleOnly:!0,applicationServerKey:function(e){var t=(e+"=".repeat((4-e.length%4)%4)).replace(/\-/g,"+").replace(/_/g,"/");const n=atob(t),r=new Uint8Array(n.length);for(let i=0;i=c.createTime+6048e5?async function(t,e){try{var n=await async function(e,t){var n=await CR(e),r=AR(t.subscriptionOptions),r={method:"PATCH",headers:n,body:JSON.stringify(r)};let i;try{const s=await fetch(`${SR(e.appConfig)}/${t.token}`,r);i=await s.json()}catch(e){throw ER.create("token-update-failed",{errorInfo:null==e?void 0:e.toString()})}if(i.error){r=i.error.message;throw ER.create("token-update-failed",{errorInfo:r})}if(!i.token)throw ER.create("token-update-no-token");return i.token}(t.firebaseDependencies,e),r=Object.assign(Object.assign({},e),{token:n,createTime:Date.now()});return await IR(t.firebaseDependencies,r),n}catch(e){throw await RR(t),e}}(e,{token:c.token,createTime:Date.now(),subscriptionOptions:o}):c.token;try{await kR(e.firebaseDependencies,c.token)}catch(e){console.warn(e)}return xR(e.firebaseDependencies,o)}return xR(e.firebaseDependencies,o)}async function RR(e){var t=await bR(e.firebaseDependencies);t&&(await kR(e.firebaseDependencies,t.token),await async function(e){var t=TR(e);const n=await wR(),r=n.transaction(yR,"readwrite");await r.objectStore(yR).delete(t),await r.done}(e.firebaseDependencies));const n=await e.swRegistration.pushManager.getSubscription();return!n||n.unsubscribe()}async function xR(e,t){var n={token:await async function(e,t){var n=await CR(e),r=AR(t),r={method:"POST",headers:n,body:JSON.stringify(r)};let i;try{const s=await fetch(SR(e.appConfig),r);i=await s.json()}catch(e){throw ER.create("token-subscribe-failed",{errorInfo:null==e?void 0:e.toString()})}if(i.error){r=i.error.message;throw ER.create("token-subscribe-failed",{errorInfo:r})}if(!i.token)throw ER.create("token-subscribe-no-token");return i.token}(e,t),createTime:Date.now(),subscriptionOptions:t};return await IR(e,n),n.token}async function DR(e,t){var n=function(e,t){var n;const r={};e.from&&(r.project_number=e.from);e.fcmMessageId&&(r.message_id=e.fcmMessageId);r.instance_id=t,e.notification?r.message_type=gN.DISPLAY_NOTIFICATION.toString():r.message_type=gN.DATA_MESSAGE.toString();r.sdk_platform=uR.toString(),r.package_name=self.origin.replace(/(^\w+:|^)\/\//,""),e.collapse_key&&(r.collapse_key=e.collapse_key);r.event=hR.toString(),null!==(n=e.fcmOptions)&&void 0!==n&&n.analytics_label&&(r.analytics_label=null===(n=e.fcmOptions)||void 0===n?void 0:n.analytics_label);return r}(t,await e.firebaseDependencies.installations.getId());!function(e,t){const n={};n.event_time_ms=Math.floor(Date.now()).toString(),n.source_extension_json_proto3=JSON.stringify(t),e.logEvents.push(n)}(e,n)}function PR(e,t){const n=[];for(let r=0;r"visible"===e.visibilityState&&!e.url.startsWith("chrome-extension://")))return function(e,t){t.isFirebaseMessaging=!0,t.messageType=mN.PUSH_RECEIVED;for(const n of e)n.postMessage(t)}(o,n);n.notification&&await function(e){var t=e["actions"],n=Notification["maxActions"];t&&n&&t.length>n&&console.warn(`This browser only supports ${n} actions. The remaining actions will not be displayed.`);return self.registration.showNotification(null!==(n=e.title)&&void 0!==n?n:"",e)}(function(e){const t=Object.assign({},e.notification);return t.data={[cR]:e},t}(n)),t&&t.onBackgroundMessageHandler&&(a={from:(r=n).from,collapseKey:r.collapse_key,messageId:r.fcmMessageId},o=a,(e=r).notification&&(o.notification={},(n=e.notification.title)&&(o.notification.title=n),(n=e.notification.body)&&(o.notification.body=n),(n=e.notification.image)&&(o.notification.image=n),(n=e.notification.icon)&&(o.notification.icon=n)),e=a,(o=r).data&&(e.data=o.data),o=a,((r=r).fcmOptions||null!==(i=r.notification)&&void 0!==i&&i.click_action)&&(o.fcmOptions={},(s=null!==(i=null===(i=r.fcmOptions)||void 0===i?void 0:i.link)&&void 0!==i?i:null===(s=r.notification)||void 0===s?void 0:s.click_action)&&(o.fcmOptions.link=s),(s=null===(s=r.fcmOptions)||void 0===s?void 0:s.analytics_label)&&(o.fcmOptions.analyticsLabel=s)),a=a,"function"==typeof t.onBackgroundMessageHandler?await t.onBackgroundMessageHandler(a):t.onBackgroundMessageHandler.next(a))}}async function MR(e){const t=null===(s=null===(i=e.notification)||void 0===i?void 0:i.data)||void 0===s?void 0:s[cR];if(t&&!e.action){e.stopImmediatePropagation(),e.notification.close();var n=function(e){var t;var n=null!==(t=null===(t=e.fcmOptions)||void 0===t?void 0:t.link)&&void 0!==t?t:null===(n=e.notification)||void 0===n?void 0:n.click_action;if(n)return n;return function(e){return"object"==typeof e&&e&&lR in e}(e.data)?self.location.origin:null}(t);if(n){var r,i=new URL(n,self.location.href),s=new URL(self.location.origin);if(i.host===s.host){let e=await async function(e){var t=await LR();for(const r of t){var n=new URL(r.url,self.location.href);if(e.host===n.host)return r}return null}(i);if(e?e=await e.focus():(e=await self.clients.openWindow(n),r=3e3,await new Promise(e=>{setTimeout(e,r)})),e)return t.messageType=mN.NOTIFICATION_CLICKED,t.isFirebaseMessaging=!0,e.postMessage(t)}}}}function LR(){return self.clients.matchAll({type:"window",includeUncontrolled:!0})}function FR(e){return ER.create("missing-app-config-values",{valueName:e})}PR("hts/frbslgigp.ogepscmv/ieo/eaylg","tp:/ieaeogn-agolai.o/1frlglgc/o"),PR("AzSCbw63g1R0nCw85jG8","Iaya3yLKwmgvh7cF0q4");class UR{constructor(e,t,n){this.deliveryMetricsExportedToBigQueryEnabled=!1,this.onBackgroundMessageHandler=null,this.onMessageHandler=null,this.logEvents=[],this.isLogServiceStarted=!1;var r=function(e){if(!e||!e.options)throw FR("App Configuration Object");if(!e.name)throw FR("App Name");var t=e["options"];for(const n of["projectId","apiKey","appId","messagingSenderId"])if(!t[n])throw FR(n);return{appName:e.name,projectId:t.projectId,apiKey:t.apiKey,appId:t.appId,senderId:t.messagingSenderId}}(e);this.firebaseDependencies={app:e,appConfig:r,installations:t,analyticsProvider:n}}_delete(){return Promise.resolve()}}const qR=e=>{const t=new UR(e.getProvider("app").getImmediate(),e.getProvider("installations-internal").getImmediate(),e.getProvider("analytics-internal"));return self.addEventListener("push",e=>{e.waitUntil(OR(e,t))}),self.addEventListener("pushsubscriptionchange",e=>{e.waitUntil(async function(e,t){var n;(n=e["newSubscription"])?(n=await bR(t.firebaseDependencies),await RR(t),t.vapidKey=null!==(n=null===(n=null==n?void 0:n.subscriptionOptions)||void 0===n?void 0:n.vapidKey)&&void 0!==n?n:aR,await NR(t)):await RR(t)}(e,t))}),self.addEventListener("notificationclick",e=>{e.waitUntil(MR(e))}),t};function VR(e,t){return function(e,t){if(void 0!==self.document)throw ER.create("only-available-in-sw");return e.onBackgroundMessageHandler=t,()=>{e.onBackgroundMessageHandler=null}}(e=ae(e),t)}ze(new oe("messaging-sw",qR,"PUBLIC"));var BR,jR,$R;class KR{constructor(e,t){this.app=e,this._delegate=t,this.app=e,this._delegate=t}async getToken(e){return async function(e,t){return XN(e=ae(e),t)}(this._delegate,e)}async deleteToken(){return iR(this._delegate)}onMessage(e){return sR(this._delegate,e)}onBackgroundMessage(e){return VR(this._delegate,e)}}const WR=e=>self&&"ServiceWorkerGlobalScope"in self?new KR(e.getProvider("app-compat").getImmediate(),e.getProvider("messaging-sw").getImmediate()):new KR(e.getProvider("app-compat").getImmediate(),e.getProvider("messaging").getImmediate()),zR={isSupported:function(){return self&&"ServiceWorkerGlobalScope"in self?C()&&"PushManager"in self&&"Notification"in self&&ServiceWorkerRegistration.prototype.hasOwnProperty("showNotification")&&PushSubscription.prototype.hasOwnProperty("getKey"):"undefined"!=typeof window&&C()&&N()&&"serviceWorker"in navigator&&"PushManager"in window&&"Notification"in window&&"fetch"in window&&ServiceWorkerRegistration.prototype.hasOwnProperty("showNotification")&&PushSubscription.prototype.hasOwnProperty("getKey")}};wt.INTERNAL.registerComponent(new oe("messaging-compat",WR,"PUBLIC").setServiceProps(zR)),wt.registerVersion("@firebase/messaging-compat","0.2.1");const GR="firebasestorage.googleapis.com",HR="storageBucket";class QR extends R{constructor(e,t,n=0){super(YR(e),`Firebase Storage: ${t} (${YR(e)})`),this.status_=n,this.customData={serverResponse:null},this._baseMessage=this.message,Object.setPrototypeOf(this,QR.prototype)}get status(){return this.status_}set status(e){this.status_=e}_codeEquals(e){return YR(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 YR(e){return"storage/"+e}function JR(){return new QR("unknown","An unknown error occurred, please check the error payload for server response.")}function XR(){return new QR("retry-limit-exceeded","Max retry time for operation exceeded, please try again.")}function ZR(){return new QR("canceled","User canceled the upload/download.")}function ex(){return new QR("cannot-slice-blob","Cannot slice blob for upload. Please retry the upload.")}function tx(e){return new QR("invalid-argument",e)}function nx(){return new QR("app-deleted","The Firebase app was deleted.")}function rx(e){return new QR("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').")}function ix(e,t){return new QR("invalid-format","String does not match format '"+e+"': "+t)}function sx(e){throw new QR("internal-error","Internal error: "+e)}class ax{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(){const e=encodeURIComponent;return"/b/"+e(this.bucket)+"/o"}static makeFromBucketSpec(t,e){let n;try{n=ax.makeFromUrl(t,e)}catch(e){return new ax(t,"")}if(""===n.path)return n;throw t=t,new QR("invalid-default-bucket","Invalid default bucket '"+t+"'.")}static makeFromUrl(e,t){let n=null;var r="([A-Za-z0-9.\\-_]+)";var i=new RegExp("^gs://"+r+"(/(.*))?$","i");function s(e){e.path_=decodeURIComponent(e.path)}var a=t.replace(/[.]/g,"\\."),o=new RegExp(`^https?://${a}/v[A-Za-z0-9_]+/b/${r}/o(/([^?#]*).*)?$`,"i"),a=t===GR?"(?:storage.googleapis.com|storage.cloud.google.com)":t,c=[{regex:i,indices:{bucket:1,path:3},postModify:function(e){"/"===e.path.charAt(e.path.length-1)&&(e.path_=e.path_.slice(0,-1))}},{regex:o,indices:{bucket:1,path:3},postModify:s},{regex:new RegExp(`^https?://${a}/${r}/([^?#]*)`,"i"),indices:{bucket:1,path:2},postModify:s}];for(let h=0;h{this.resolve_=e,this.reject_=t,this.start_()})}start_(){var e=(n,e)=>{if(e)n(!1,new mx(!1,null,!0));else{const r=this.connectionFactory_();this.pendingConnection_=r;const i=e=>{var t=e.loaded,n=e.lengthComputable?e.total:-1;null!==this.progressCallback_&&this.progressCallback_(t,n)};null!==this.progressCallback_&&r.addUploadProgressListener(i),r.send(this.url_,this.method_,this.body_,this.headers_).then(()=>{null!==this.progressCallback_&&r.removeUploadProgressListener(i),this.pendingConnection_=null;var e=r.getErrorCode()===BR.NO_ERROR,t=r.getStatus();!e||fx(t,this.additionalRetryCodes_)&&this.retry?(e=r.getErrorCode()===BR.ABORT,n(!1,new mx(!1,null,e))):(t=-1!==this.successCodes_.indexOf(t),n(!0,new mx(t,r)))})}},t=(e,t)=>{const n=this.resolve_,r=this.reject_,i=t.connection;if(t.wasSuccessCode)try{var s=this.callback_(i,i.getResponse());void 0!==s?n(s):n()}catch(e){r(e)}else if(null!==i){const o=JR();o.serverResponse=i.getErrorText(),this.errorCallback_?r(this.errorCallback_(i,o)):r(o)}else{var a;t.canceled?(a=(this.appDelete_?nx:ZR)(),r(a)):(a=XR(),r(a))}};this.canceled_?t(0,new mx(!1,null,!0)):this.backoffId_=function(t,n,e){let r=1,i=null,s=null,a=!1,o=0;function c(){return 2===o}let l=!1;function u(...e){l||(l=!0,n.apply(null,e))}function h(e){i=setTimeout(()=>{i=null,t(p,c())},e)}function d(){s&&clearTimeout(s)}function p(t,...n){if(l)d();else{if(t)return d(),void u.call(null,t,...n);if(c()||a)return d(),void u.call(null,t,...n);r<64&&(r*=2);let e;e=1===o?(o=2,0):1e3*(r+Math.random()),h(e)}}let f=!1;function g(e){f||(f=!0,d(),l||(null!==i?(e||(o=2),clearTimeout(i),h(0)):e||(o=1)))}return h(0),s=setTimeout(()=>{g(a=!0)},e),g}(e,t,this.timeout_)}getPromise(){return this.promise_}cancel(e){this.canceled_=!0,this.appDelete_=e||!1,null!==this.backoffId_&&(0,this.backoffId_)(!1),null!==this.pendingConnection_&&this.pendingConnection_.abort()}}class mx{constructor(e,t,n){this.wasSuccessCode=e,this.connection=t,this.canceled=!!n}}function vx(...t){const n="undefined"!=typeof BlobBuilder?BlobBuilder:"undefined"!=typeof WebKitBlobBuilder?WebKitBlobBuilder:void 0;if(void 0!==n){const r=new n;for(let e=0;e>6,128|63&e):55296==(64512&e)?s>18,128|e>>12&63,128|e>>6&63,128|63&e)):n.push(239,191,189):56320==(64512&e)?n.push(239,191,189):n.push(224|e>>12,128|e>>6&63,128|63&e)}return new Uint8Array(n)}function Tx(t,e){switch(t){case _x.BASE64:var n=-1!==e.indexOf("-"),r=-1!==e.indexOf("_");if(n||r)throw ix(t,"Invalid character '"+(n?"-":"_")+"' found: is it base64url encoded?");break;case _x.BASE64URL:r=-1!==e.indexOf("+"),n=-1!==e.indexOf("/");if(r||n)throw ix(t,"Invalid character '"+(r?"+":"/")+"' found: is it base64 encoded?");e=e.replace(/-/g,"+").replace(/_/g,"/")}let i;try{i=yx(e)}catch(e){if(e.message.includes("polyfill"))throw e;throw ix(t,"Invalid character found")}const s=new Uint8Array(i.length);for(let a=0;a][;base64],");const i=r[1]||null;null!=i&&(this.base64=(t=i,n=";base64",t.length>=n.length&&t.substring(t.length-n.length)===n),this.contentType=this.base64?i.substring(0,i.length-";base64".length):i),this.rest=e.substring(e.indexOf(",")+1)}}class kx{constructor(e,t){let n=0,r="";lx(e)?(this.data_=e,n=e.size,r=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_=r}size(){return this.size_}type(){return this.type_}slice(e,t){if(lx(this.data_)){var n=this.data_,n=(i=e,s=t,(r=n).webkitSlice?r.webkitSlice(i,s):r.mozSlice?r.mozSlice(i,s):r.slice?r.slice(i,s):null);return null===n?null:new kx(n)}var r,i,s,n=new Uint8Array(this.data_.buffer,e,t-e);return new kx(n,!0)}static getBlob(...e){if(ux()){var t=e.map(e=>e instanceof kx?e.data_:e);return new kx(vx.apply(null,t))}{const r=e.map(e=>cx(e)?bx(_x.RAW,e).data:e.data_);let t=0;r.forEach(e=>{t+=e.byteLength});const i=new Uint8Array(t);let n=0;return r.forEach(e=>{for(let t=0;t{var t=r.bucket,n=r.fullPath;return dx("/b/"+a(t)+"/o/"+a(n),i,s)+px({alt:"media",token:e})})[0]}(n,t,r.host,r._protocol)}}function jx(i){return function(e,t){let n;var r;return n=401===e.getStatus()?e.getErrorText().includes("Firebase App Check token is invalid")?new QR("unauthorized-app","This app does not have permission to access Firebase Storage on this project."):new QR("unauthenticated","User is not authenticated, please authenticate using Firebase Authentication and try again."):402===e.getStatus()?(r=i.bucket,new QR("quota-exceeded","Quota for bucket '"+r+"' exceeded, please view quota on https://firebase.google.com/pricing/.")):403===e.getStatus()?(r=i.path,new QR("unauthorized","User does not have permission to access '"+r+"'.")):t,n.status=e.getStatus(),n.serverResponse=t.serverResponse,n}}function $x(r){const i=jx(r);return function(e,t){let n=i(e,t);return 404===e.getStatus()&&(n=(e=r.path,new QR("object-not-found","Object '"+e+"' does not exist."))),n.serverResponse=t.serverResponse,n}}function Kx(e,t,n){var r=dx(t.fullServerUrl(),e.host,e._protocol),i=e.maxOperationRetryTime;const s=new Fx(r,"GET",qx(e,n),i);return s.errorHandler=$x(t),s}function Wx(e,t,n){const r=Object.assign({},n);return r.fullPath=e.path,r.size=t.size(),r.contentType||(r.contentType=(e=t,(t=null)&&t.contentType||e&&e.type()||"application/octet-stream")),r}function zx(e,t,n,r,i){var s=t.bucketOnlyServerUrl();const a={"X-Goog-Upload-Protocol":"multipart"};var o=function(){let e="";for(let t=0;t<2;t++)e+=Math.random().toString().slice(2);return e}();a["Content-Type"]="multipart/related; boundary="+o;var c=Wx(t,r,i),l="--"+o+"\r\nContent-Type: application/json; charset=utf-8\r\n\r\n"+Ox(c,n)+"\r\n--"+o+"\r\nContent-Type: "+c.contentType+"\r\n\r\n",o="\r\n--"+o+"--";const u=kx.getBlob(l,r,o);if(null===u)throw ex();o={name:c.fullPath},c=dx(s,e.host,e._protocol),s=e.maxUploadRetryTime;const h=new Fx(c,"POST",qx(e,n),s);return h.urlParams=o,h.headers=a,h.body=u.uploadData(),h.errorHandler=jx(t),h}class Gx{constructor(e,t,n,r){this.current=e,this.total=t,this.finalized=!!n,this.metadata=r||null}}function Hx(e,t){let n=null;try{n=e.getResponseHeader("X-Goog-Upload-Status")}catch(e){Ux(!1)}const r=t||["active"];return Ux(!!n&&-1!==r.indexOf(n)),n}function Qx(e,t,n,r,i){var s=t.bucketOnlyServerUrl(),a=Wx(t,r,i),o={name:a.fullPath},c=dx(s,e.host,e._protocol),l={"X-Goog-Upload-Protocol":"resumable","X-Goog-Upload-Command":"start","X-Goog-Upload-Header-Content-Length":`${r.size()}`,"X-Goog-Upload-Header-Content-Type":a.contentType,"Content-Type":"application/json; charset=utf-8"},s=Ox(a,n),a=e.maxUploadRetryTime;const u=new Fx(c,"POST",function(e){Hx(e);let t;try{t=e.getResponseHeader("X-Goog-Upload-URL")}catch(e){Ux(!1)}return Ux(cx(t)),t},a);return u.urlParams=o,u.headers=l,u.body=s,u.errorHandler=jx(t),u}function Yx(e,t,n,i){var r=e.maxUploadRetryTime;const s=new Fx(n,"POST",function(e){var t=Hx(e,["active","final"]);let n=null;try{n=e.getResponseHeader("X-Goog-Upload-Size-Received")}catch(e){Ux(!1)}n||Ux(!1);var r=Number(n);return Ux(!isNaN(r)),new Gx(r,i.size(),"final"===t)},r);return s.headers={"X-Goog-Upload-Command":"query"},s.errorHandler=jx(t),s}function Jx(e,a,t,o,n,c,r,i){const l=new Gx(0,0);if(r?(l.current=r.current,l.total=r.total):(l.current=0,l.total=o.size()),o.size()!==l.total)throw new QR("server-file-wrong-size","Server recorded incorrect upload file size, please retry the upload.");var s=l.total-l.current;let u=s;0{Promise.resolve().then(()=>t(...e))}}class rD extends class{constructor(){this.sent_=!1,this.xhr_=new XMLHttpRequest,this.initXhr(),this.errorCode_=BR.NO_ERROR,this.sendPromise_=new Promise(e=>{this.xhr_.addEventListener("abort",()=>{this.errorCode_=BR.ABORT,e()}),this.xhr_.addEventListener("error",()=>{this.errorCode_=BR.NETWORK_ERROR,e()}),this.xhr_.addEventListener("load",()=>{e()})})}send(e,t,n,r){if(this.sent_)throw sx("cannot .send() more than once");if(this.sent_=!0,this.xhr_.open(t,e,!0),void 0!==r)for(const i in r)r.hasOwnProperty(i)&&this.xhr_.setRequestHeader(i,r[i].toString());return void 0!==n?this.xhr_.send(n):this.xhr_.send(),this.sendPromise_}getErrorCode(){if(!this.sent_)throw sx("cannot .getErrorCode() before sending");return this.errorCode_}getStatus(){if(!this.sent_)throw sx("cannot .getStatus() before sending");try{return this.xhr_.status}catch(e){return-1}}getResponse(){if(!this.sent_)throw sx("cannot .getResponse() before sending");return this.xhr_.response}getErrorText(){if(!this.sent_)throw sx("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)}}{initXhr(){this.xhr_.responseType="text"}}function iD(){return new rD}class sD{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=xx(),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{var t=this.isExponentialBackoffExpired();if(fx(e.status,[])){if(!t)return this.sleepTime=Math.max(2*this.sleepTime,1e3),this._needToFetchStatus=!0,void this.completeTransitions_();e=XR()}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 t=this._transferred;return e=>this._updateProgress(t+e)}_shouldDoResumable(e){return 262144{this.pendingTimeout=void 0,this._continueUpload()},this.sleepTime):this._oneShotUpload())}_resolveToken(n){Promise.all([this._ref.storage._getAuthToken(),this._ref.storage._getAppCheckToken()]).then(([e,t])=>{switch(this._state){case"running":n(e,t);break;case"canceling":this._transition("canceled");break;case"pausing":this._transition("paused")}})}_createResumable(){this._resolveToken((e,t)=>{var n=Qx(this._ref.storage,this._ref._location,this._mappings,this._blob,this._metadata);const r=this._ref.storage._makeRequest(n,iD,e,t);this._request=r,r.getPromise().then(e=>{this._request=void 0,this._uploadUrl=e,this._needToFetchStatus=!1,this.completeTransitions_()},this._errorHandler)})}_fetchStatus(){const i=this._uploadUrl;this._resolveToken((e,t)=>{var n=Yx(this._ref.storage,this._ref._location,i,this._blob);const r=this._ref.storage._makeRequest(n,iD,e,t);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 i=262144*this._chunkMultiplier,s=new Gx(this._transferred,this._blob.size()),a=this._uploadUrl;this._resolveToken((e,t)=>{let n;try{n=Jx(this._ref._location,this._ref.storage,a,this._blob,i,this._mappings,s,this._makeProgressCallback())}catch(e){return this._error=e,void this._transition("error")}const r=this._ref.storage._makeRequest(n,iD,e,t,!1);this._request=r,r.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(){2*(262144*this._chunkMultiplier)<33554432&&(this._chunkMultiplier*=2)}_fetchMetadata(){this._resolveToken((e,t)=>{var n=Kx(this._ref.storage,this._ref._location,this._mappings);const r=this._ref.storage._makeRequest(n,iD,e,t);this._request=r,r.getPromise().then(e=>{this._request=void 0,this._metadata=e,this._transition("success")},this._metadataErrorHandler)})}_oneShotUpload(){this._resolveToken((e,t)=>{var n=zx(this._ref.storage,this._ref._location,this._mappings,this._blob,this._metadata);const r=this._ref.storage._makeRequest(n,iD,e,t);this._request=r,r.getPromise().then(e=>{this._request=void 0,this._metadata=e,this._updateProgress(this._blob.size()),this._transition("success")},this._errorHandler)})}_updateProgress(e){var 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":var t="paused"===this._state;this._state=e,t&&(this._notifyObservers(),this._start());break;case"paused":this._state=e,this._notifyObservers();break;case"canceled":this._error=ZR(),this._state=e,this._notifyObservers();break;case"error":case"success":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(){var e=eD(this._state);return{bytesTransferred:this._transferred,totalBytes:this._blob.size(),state:e,metadata:this._metadata,task:this,ref:this._ref}}on(e,t,n,r){const i=new tD(t||void 0,n||void 0,r||void 0);return this._addObserver(i),()=>{this._removeObserver(i)}}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){var t=this._observers.indexOf(e);-1!==t&&this._observers.splice(t,1)}_notifyObservers(){this._finishPromise();const e=this._observers.slice();e.forEach(e=>{this._notifyObserver(e)})}_finishPromise(){if(void 0!==this._resolve){let e=!0;switch(eD(this._state)){case Zx.SUCCESS:nD(this._resolve.bind(null,this.snapshot))();break;case Zx.CANCELED:case Zx.ERROR:const t=this._reject;nD(t.bind(null,this._error))();break;default:e=!1}e&&(this._resolve=void 0,this._reject=void 0)}}_notifyObserver(e){switch(eD(this._state)){case Zx.RUNNING:case Zx.PAUSED:e.next&&nD(e.next.bind(e,this.snapshot))();break;case Zx.SUCCESS:e.complete&&nD(e.complete.bind(e))();break;case Zx.CANCELED:case Zx.ERROR:default:e.error&&nD(e.error.bind(e,this._error))()}}resume(){var e="paused"===this._state||"pausing"===this._state;return e&&this._transition("running"),e}pause(){var e="running"===this._state;return e&&this._transition("pausing"),e}cancel(){var e="running"===this._state||"pausing"===this._state;return e&&this._transition("canceling"),e}}class aD{constructor(e,t){this._service=e,t instanceof ax?this._location=t:this._location=ax.makeFromUrl(t,e.host)}toString(){return"gs://"+this._location.bucket+"/"+this._location.path}_newRef(e,t){return new aD(e,t)}get root(){var e=new ax(this._location.bucket,"");return this._newRef(this._service,e)}get bucket(){return this._location.bucket}get fullPath(){return this._location.path}get name(){return Cx(this._location.path)}get storage(){return this._service}get parent(){var e=function(e){if(0===e.length)return null;var t=e.lastIndexOf("/");return-1===t?"":e.slice(0,t)}(this._location.path);if(null===e)return null;e=new ax(this._location.bucket,e);return new aD(this._service,e)}_throwIfRoot(e){if(""===this._location.path)throw rx(e)}}function oD(e){const t={prefixes:[],items:[]};return async function e(t,n,r){const i={pageToken:r};const s=await cD(t,i);n.prefixes.push(...s.prefixes);n.items.push(...s.items);null!=s.nextPageToken&&await e(t,n,s.nextPageToken)}(e,t).then(()=>t)}function cD(e,t){null!=t&&"number"==typeof t.maxResults&&hx("options.maxResults",1,1e3,t.maxResults);var n=t||{},n=function(e,t,n,r,i){const s={};t.isRoot?s.prefix="":s.prefix=t.path+"/",n&&0{if(null===e)throw new QR("no-download-url","The given file does not have any download URLs.");return e})}function hD(e){e._throwIfRoot("deleteObject");var t=function(e,t){var n=dx(t.fullServerUrl(),e.host,e._protocol),r=e.maxOperationRetryTime;const i=new Fx(n,"DELETE",function(e,t){},r);return i.successCodes=[200,204],i.errorHandler=$x(t),i}(e.storage,e._location);return e.storage.makeRequestWithTokens(t,iD)}function dD(e,t){var n,r=(n=e._location.path,r=t.split("/").filter(e=>0e.cancel()),this._requests.clear()),Promise.resolve()}_makeStorageReference(e){return new aD(this,e)}_makeRequest(e,t,n,r,i=!0){if(this._deleted)return new ox(nx());{const u=([s,a,o,e,n,r,t=!0]=[e,this._appId,n,r,t,this._firebaseVersion,i],c=px(s.urlParams),l=s.url+c,c=Object.assign({},s.headers),i=c,(a=a)&&(i["X-Firebase-GMPID"]=a),a=c,null!==(o=o)&&0this._requests.delete(u),()=>this._requests.delete(u)),u}var s,a,o,c,l}async makeRequestWithTokens(e,t){var[n,r]=await Promise.all([this._getAuthToken(),this._getAppCheckToken()]);return this._makeRequest(e,t,n,r).getPromise()}}const vD="@firebase/storage";function yD(e,t,n){return e=ae(e),t=t,n=n,(e=e)._throwIfRoot("uploadBytesResumable"),new sD(e,new kx(t),n)}function _D(e){return function(e){e._throwIfRoot("getMetadata");var t=Kx(e.storage,e._location,xx());return e.storage.makeRequestWithTokens(t,iD)}(e=ae(e))}function wD(e,t){return fD(e=ae(e),t)}function bD(e,t,n,r={}){!function(e,t,n,r={}){e.host=`${t}:${n}`,e._protocol="http";var i=r["mockUserToken"];i&&(e._overrideAuthToken="string"==typeof i?i:_(i,e.app.options.projectId))}(e,t,n,r)}function ID(e,{instanceIdentifier:t}){var n=e.getProvider("app").getImmediate(),r=e.getProvider("auth-internal"),i=e.getProvider("app-check-internal");return new mD(n,r,i,t,Ye)}ze(new oe("storage",ID,"PUBLIC").setMultipleInstances(!0)),et(vD,"0.10.1",""),et(vD,"0.10.1","esm2017");class TD{constructor(e,t,n){this._delegate=e,this.task=t,this.ref=n}get bytesTransferred(){return this._delegate.bytesTransferred}get metadata(){return this._delegate.metadata}get state(){return this._delegate.state}get totalBytes(){return this._delegate.totalBytes}}class ED{constructor(e,t){this._delegate=e,this._ref=t,this.cancel=this._delegate.cancel.bind(this._delegate),this.catch=this._delegate.catch.bind(this._delegate),this.pause=this._delegate.pause.bind(this._delegate),this.resume=this._delegate.resume.bind(this._delegate)}get snapshot(){return new TD(this._delegate.snapshot,this,this._ref)}then(t,e){return this._delegate.then(e=>{if(t)return t(new TD(e,this,this._ref))},e)}on(e,t,n,r){let i=void 0;return t&&(i="function"==typeof t?e=>t(new TD(e,this,this._ref)):{next:t.next?e=>t.next(new TD(e,this,this._ref)):void 0,complete:t.complete||void 0,error:t.error||void 0}),this._delegate.on(e,i,n||void 0,r||void 0)}}class kD{constructor(e,t){this._delegate=e,this._service=t}get prefixes(){return this._delegate.prefixes.map(e=>new SD(e,this._service))}get items(){return this._delegate.items.map(e=>new SD(e,this._service))}get nextPageToken(){return this._delegate.nextPageToken||null}}class SD{constructor(e,t){this._delegate=e,this.storage=t}get name(){return this._delegate.name}get bucket(){return this._delegate.bucket}get fullPath(){return this._delegate.fullPath}toString(){return this._delegate.toString()}child(e){var t=dD(this._delegate,e);return new SD(t,this.storage)}get root(){return new SD(this._delegate.root,this.storage)}get parent(){var e=this._delegate.parent;return null==e?null:new SD(e,this.storage)}put(e,t){return this._throwIfRoot("put"),new ED(yD(this._delegate,e,t),this)}putString(e,t=_x.RAW,n){this._throwIfRoot("putString");var r=bx(t,e);const i=Object.assign({},n);return null==i.contentType&&null!=r.contentType&&(i.contentType=r.contentType),new ED(new sD(this._delegate,new kx(r.data,!0),i),this)}listAll(){return oD(ae(this._delegate)).then(e=>new kD(e,this.storage))}list(e){return t=this._delegate,e=e||void 0,cD(t=ae(t),e).then(e=>new kD(e,this.storage));var t}getMetadata(){return _D(this._delegate)}updateMetadata(e){return lD(ae(this._delegate),e)}getDownloadURL(){return uD(ae(this._delegate))}delete(){return this._throwIfRoot("delete"),hD(ae(this._delegate))}_throwIfRoot(e){if(""===this._delegate._location.path)throw rx(e)}}class CD{constructor(e,t){this.app=e,this._delegate=t}get maxOperationRetryTime(){return this._delegate.maxOperationRetryTime}get maxUploadRetryTime(){return this._delegate.maxUploadRetryTime}ref(e){if(AD(e))throw tx("ref() expected a child path but got a URL, use refFromURL instead.");return new SD(wD(this._delegate,e),this)}refFromURL(e){if(!AD(e))throw tx("refFromURL() expected a full URL but got a child path, use ref() instead.");try{ax.makeFromUrl(e,this._delegate.host)}catch(e){throw tx("refFromUrl() expected a valid full URL but got an invalid one.")}return new SD(wD(this._delegate,e),this)}setMaxUploadRetryTime(e){this._delegate.maxUploadRetryTime=e}setMaxOperationRetryTime(e){this._delegate.maxOperationRetryTime=e}useEmulator(e,t,n={}){bD(this._delegate,e,t,n)}}function AD(e){return/^[A-Za-z]+:\/\//.test(e)}function ND(e,{instanceIdentifier:t}){var n=e.getProvider("app-compat").getImmediate(),r=e.getProvider("storage").getImmediate({identifier:t});return new CD(n,r)}jR=wt,$R={TaskState:Zx,TaskEvent:Xx,StringFormat:_x,Storage:CD,Reference:SD},jR.INTERNAL.registerComponent(new oe("storage-compat",ND,"PUBLIC").setServiceProps($R).setMultipleInstances(!0)),jR.registerVersion("@firebase/storage-compat","0.2.1");const RD="@firebase/performance",xD="0.6.1",DD=xD,PD="FB-PERF-TRACE-MEASURE",OD="@firebase/performance/config",MD="@firebase/performance/configexpire";var LD,FD,UD,qD="Performance";const VD=new x("performance",qD,{"trace started":"Trace {$traceName} was started before.","trace stopped":"Trace {$traceName} is not running.","nonpositive trace startTime":"Trace {$traceName} startTime should be positive.","nonpositive trace duration":"Trace {$traceName} duration should be positive.","no window":"Window is not available.","no app id":"App id is not available.","no project id":"Project id is not available.","no api key":"Api key is not available.","invalid cc log":"Attempted to queue invalid cc event","FB not default":"Performance can only start when Firebase app instance is the default one.","RC response not ok":"RC response is not ok","invalid attribute name":"Attribute name {$attributeName} is invalid.","invalid attribute value":"Attribute value {$attributeValue} is invalid.","invalid custom metric name":"Custom metric name {$customMetricName} is invalid","invalid String merger input":"Input for String merger is invalid, contact support team to resolve.","already initialized":"initializePerformance() has already been called with different options. To avoid this error, call initializePerformance() with the same options as when it was originally called, or call getPerformance() to return the already initialized instance."}),BD=new me(qD);BD.logLevel=g.INFO;let jD,$D;class KD{constructor(e){if(!(this.window=e))throw VD.create("no window");this.performance=e.performance,this.PerformanceObserver=e.PerformanceObserver,this.windowLocation=e.location,this.navigator=e.navigator,this.document=e.document,this.navigator&&this.navigator.cookieEnabled&&(this.localStorage=e.localStorage),e.perfMetrics&&e.perfMetrics.onFirstInputDelay&&(this.onFirstInputDelay=e.perfMetrics.onFirstInputDelay)}getUrl(){return this.windowLocation.href.split("?")[0]}mark(e){this.performance&&this.performance.mark&&this.performance.mark(e)}measure(e,t,n){this.performance&&this.performance.measure&&this.performance.measure(e,t,n)}getEntriesByType(e){return this.performance&&this.performance.getEntriesByType?this.performance.getEntriesByType(e):[]}getEntriesByName(e){return this.performance&&this.performance.getEntriesByName?this.performance.getEntriesByName(e):[]}getTimeOrigin(){return this.performance&&(this.performance.timeOrigin||this.performance.timing.navigationStart)}requiredApisAvailable(){return fetch&&Promise&&N()?!!C()||(BD.info("IndexedDB is not supported by current browswer"),!1):(BD.info("Firebase Performance cannot start if browser does not support fetch and Promise or cookie is disabled."),!1)}setupObserver(e,n){if(this.PerformanceObserver){const t=new this.PerformanceObserver(e=>{for(const t of e.getEntries())n(t)});t.observe({entryTypes:[e]})}}static getInstance(){return void 0===jD&&(jD=new KD($D)),jD}}let WD;function zD(e,t){var n=e.length-t.length;if(n<0||1i&&r.push(t.charAt(i));return r.join("")}let GD;class HD{constructor(){this.instrumentationEnabled=!0,this.dataCollectionEnabled=!0,this.loggingEnabled=!1,this.tracesSamplingRate=1,this.networkRequestsSamplingRate=1,this.logEndPointUrl="https://firebaselogging.googleapis.com/v0cc/log?format=json_proto",this.flTransportEndpointUrl=zD("hts/frbslgigp.ogepscmv/ieo/eaylg","tp:/ieaeogn-agolai.o/1frlglgc/o"),this.transportKey=zD("AzSC8r6ReiGqFMyfvgow","Iayx0u-XT3vksVM-pIV"),this.logSource=462,this.logTraceAfterSampling=!1,this.logNetworkAfterSampling=!1,this.configTimeToLive=12}getFlTransportFullUrl(){return this.flTransportEndpointUrl.concat("?key=",this.transportKey)}static getInstance(){return void 0===GD&&(GD=new HD),GD}}(It=LD=LD||{})[It.UNKNOWN=0]="UNKNOWN",It[It.VISIBLE=1]="VISIBLE",It[It.HIDDEN=2]="HIDDEN";const QD=["firebase_","google_","ga_"],YD=new RegExp("^[a-zA-Z]\\w*$");function JD(){switch(KD.getInstance().document.visibilityState){case"visible":return LD.VISIBLE;case"hidden":return LD.HIDDEN;default:return LD.UNKNOWN}}function XD(e){var t=null===(t=e.options)||void 0===t?void 0:t.appId;if(!t)throw VD.create("no app id");return t}const ZD="0.0.1",eP={loggingEnabled:!0},tP="FIREBASE_INSTALLATIONS_AUTH";function nP(e,t){var r,i,n=function(){const e=KD.getInstance().localStorage;if(e){var t=e.getItem(MD);if(t&&function(e){return Number(e)>Date.now()}(t)){t=e.getItem(OD);if(t)try{return JSON.parse(t)}catch(e){return}}}}();return n?(iP(n),Promise.resolve()):(i=t,function(e){const t=e.getToken();return t.then(e=>{}),t}((r=e).installations).then(e=>{var t=function(e){var t=null===(t=e.options)||void 0===t?void 0:t.projectId;if(!t)throw VD.create("no project id");return t}(r.app),n=function(e){var t=null===(t=e.options)||void 0===t?void 0:t.apiKey;if(!t)throw VD.create("no api key");return t}(r.app),n=new Request(`https://firebaseremoteconfig.googleapis.com/v1/projects/${t}/namespaces/fireperf:fetch?key=${n}`,{method:"POST",headers:{Authorization:`${tP} ${e}`},body:JSON.stringify({app_instance_id:i,app_instance_id_token:e,app_id:XD(r.app),app_version:DD,sdk_version:ZD})});return fetch(n).then(e=>{if(e.ok)return e.json();throw VD.create("RC response not ok")})}).catch(()=>{BD.info(rP)}).then(iP).then(e=>function(e){const t=KD.getInstance().localStorage;e&&t&&(t.setItem(OD,JSON.stringify(e)),t.setItem(MD,String(Date.now()+60*HD.getInstance().configTimeToLive*60*1e3)))}(e),()=>{}))}const rP="Could not fetch config, will use default configs";function iP(e){if(!e)return e;const t=HD.getInstance();var n=e.entries||{};return void 0!==n.fpr_enabled?t.loggingEnabled="true"===String(n.fpr_enabled):t.loggingEnabled=eP.loggingEnabled,n.fpr_log_source?t.logSource=Number(n.fpr_log_source):eP.logSource&&(t.logSource=eP.logSource),n.fpr_log_endpoint_url?t.logEndPointUrl=n.fpr_log_endpoint_url:eP.logEndPointUrl&&(t.logEndPointUrl=eP.logEndPointUrl),n.fpr_log_transport_key?t.transportKey=n.fpr_log_transport_key:eP.transportKey&&(t.transportKey=eP.transportKey),void 0!==n.fpr_vc_network_request_sampling_rate?t.networkRequestsSamplingRate=Number(n.fpr_vc_network_request_sampling_rate):void 0!==eP.networkRequestsSamplingRate&&(t.networkRequestsSamplingRate=eP.networkRequestsSamplingRate),void 0!==n.fpr_vc_trace_sampling_rate?t.tracesSamplingRate=Number(n.fpr_vc_trace_sampling_rate):void 0!==eP.tracesSamplingRate&&(t.tracesSamplingRate=eP.tracesSamplingRate),t.logTraceAfterSampling=sP(t.tracesSamplingRate),t.logNetworkAfterSampling=sP(t.networkRequestsSamplingRate),e}function sP(e){return Math.random()<=e}let aP=1,oP;function cP(e){var t;return aP=2,oP=oP||(t=e,function(){const n=KD.getInstance().document;return new Promise(e=>{if(n&&"complete"!==n.readyState){const t=()=>{"complete"===n.readyState&&(n.removeEventListener("readystatechange",t),e())};n.addEventListener("readystatechange",t)}else e()})}().then(()=>function(e){const t=e.getId();return t.then(e=>{WD=e}),t}(t.installations)).then(e=>nP(t,e)).then(()=>lP(),()=>lP())),oP}function lP(){aP=3}const uP=1e4,hP=3,dP=1e3;let pP=hP,fP=[],gP=!1;function mP(e){setTimeout(()=>{if(0!==pP)return fP.length?void function(){const e=fP.splice(0,dP),t=e.map(e=>({source_extension_json_proto3:e.message,event_time_ms:String(e.eventTime)})),n={request_time_ms:String(Date.now()),client_info:{client_type:1,js_client_info:{}},log_source:HD.getInstance().logSource,log_event:t};!function(e,r){return function(e){var t=HD.getInstance().getFlTransportFullUrl();return fetch(t,{method:"POST",body:JSON.stringify(e)})}(e).then(e=>(e.ok||BD.info("Call to Firebase backend failed."),e.json())).then(e=>{var t=Number(e.nextRequestWaitMillis);let n=uP;isNaN(t)||(n=Math.max(t,n));t=e.logResponseDetails;Array.isArray(t)&&0{fP=[...e,...fP],pP--,BD.info(`Tries left: ${pP}.`),mP(uP)})}():mP(uP)},e)}function vP(t){return(...e)=>{!function(e){if(!e.eventTime||!e.message)throw VD.create("invalid cc log");fP=[...fP,e]}({message:t(...e),eventTime:Date.now()})}}let yP;function _P(e,t){yP=yP||vP(IP),yP(e,t)}function wP(e){var t=HD.getInstance();!t.instrumentationEnabled&&e.isAuto||(t.dataCollectionEnabled||e.isAuto)&&KD.getInstance().requiredApisAvailable()&&(e.isAuto&&JD()!==LD.VISIBLE||(3===aP?bP(e):cP(e.performanceController).then(()=>bP(e),()=>bP(e))))}function bP(e){var t;!WD||(t=HD.getInstance()).loggingEnabled&&t.logTraceAfterSampling&&setTimeout(()=>_P(e,1),0)}function IP(e,t){return 0===t?(n={url:e.url,http_method:e.httpMethod||0,http_response_code:200,response_payload_bytes:e.responsePayloadBytes,client_start_time_us:e.startTimeUs,time_to_response_initiated_us:e.timeToResponseInitiatedUs,time_to_response_completed_us:e.timeToResponseCompletedUs},n={application_info:TP(e.performanceController.app),network_request_metric:n},JSON.stringify(n)):function(e){const t={name:e.name,is_auto:e.isAuto,client_start_time_us:e.startTimeUs,duration_us:e.durationUs};0!==Object.keys(e.counters).length&&(t.counters=e.counters);var n=e.getAttributes();0!==Object.keys(n).length&&(t.custom_attributes=n);n={application_info:TP(e.performanceController.app),trace_metric:t};return JSON.stringify(n)}(e);var n}function TP(e){return{google_app_id:XD(e),app_instance_id:WD,web_app_info:{sdk_version:DD,page_url:KD.getInstance().getUrl(),service_worker_status:null!=(t=KD.getInstance().navigator)&&t.serviceWorker?t.serviceWorker.controller?2:3:1,visibility_state:JD(),effective_connection_type:function(){var e=KD.getInstance().navigator.connection;switch(e&&e.effectiveType){case"slow-2g":return 1;case"2g":return 2;case"3g":return 3;case"4g":return 4;default:return 0}}()},application_process_state:0};var t}const EP=["_fp","_fcp","_fid"];class kP{constructor(e,t,n=!1,r){this.performanceController=e,this.name=t,this.isAuto=n,this.state=1,this.customAttributes={},this.counters={},this.api=KD.getInstance(),this.randomId=Math.floor(1e6*Math.random()),this.isAuto||(this.traceStartMark=`FB-PERF-TRACE-START-${this.randomId}-${this.name}`,this.traceStopMark=`FB-PERF-TRACE-STOP-${this.randomId}-${this.name}`,this.traceMeasure=r||`${PD}-${this.randomId}-${this.name}`,r&&this.calculateTraceMetrics())}start(){if(1!==this.state)throw VD.create("trace started",{traceName:this.name});this.api.mark(this.traceStartMark),this.state=2}stop(){if(2!==this.state)throw VD.create("trace stopped",{traceName:this.name});this.state=3,this.api.mark(this.traceStopMark),this.api.measure(this.traceMeasure,this.traceStartMark,this.traceStopMark),this.calculateTraceMetrics(),wP(this)}record(e,t,n){if(e<=0)throw VD.create("nonpositive trace startTime",{traceName:this.name});if(t<=0)throw VD.create("nonpositive trace duration",{traceName:this.name});if(this.durationUs=Math.floor(1e3*t),this.startTimeUs=Math.floor(1e3*e),n&&n.attributes&&(this.customAttributes=Object.assign({},n.attributes)),n&&n.metrics)for(const r of Object.keys(n.metrics))isNaN(Number(n.metrics[r]))||(this.counters[r]=Math.floor(Number(n.metrics[r])));wP(this)}incrementMetric(e,t=1){void 0===this.counters[e]?this.putMetric(e,t):this.putMetric(e,this.counters[e]+t)}putMetric(e,t){if(r=e,i=this.name,0===r.length||100n.startsWith(e))&&!!n.match(YD)),s=0!==(r=t).length&&r.length<=100;if(i&&s)this.customAttributes[e]=t;else{if(!i)throw VD.create("invalid attribute name",{attributeName:e});if(!s)throw VD.create("invalid attribute value",{attributeValue:t})}}getAttribute(e){return this.customAttributes[e]}removeAttribute(e){void 0!==this.customAttributes[e]&&delete this.customAttributes[e]}getAttributes(){return Object.assign({},this.customAttributes)}setStartTime(e){this.startTimeUs=e}setDuration(e){this.durationUs=e}calculateTraceMetrics(){var e=this.api.getEntriesByName(this.traceMeasure),e=e&&e[0];e&&(this.durationUs=Math.floor(1e3*e.duration),this.startTimeUs=Math.floor(1e3*(e.startTime+this.api.getTimeOrigin())))}static createOobTrace(e,t,n,r){var i=KD.getInstance().getUrl();if(i){const s=new kP(e,"_wt_"+i,!0);i=Math.floor(1e3*KD.getInstance().getTimeOrigin());s.setStartTime(i),t&&t[0]&&(s.setDuration(Math.floor(1e3*t[0].duration)),s.putMetric("domInteractive",Math.floor(1e3*t[0].domInteractive)),s.putMetric("domContentLoadedEventEnd",Math.floor(1e3*t[0].domContentLoadedEventEnd)),s.putMetric("loadEventEnd",Math.floor(1e3*t[0].loadEventEnd)));n&&((i=n.find(e=>"first-paint"===e.name))&&i.startTime&&s.putMetric("_fp",Math.floor(1e3*i.startTime)),(i=n.find(e=>"first-contentful-paint"===e.name))&&i.startTime&&s.putMetric("_fcp",Math.floor(1e3*i.startTime)),r&&s.putMetric("_fid",Math.floor(1e3*r))),wP(s)}}static createUserTimingTrace(e,t){wP(new kP(e,t,!1,t))}}function SP(e,t){const n=t;var r,i,s;n&&void 0!==n.responseStart&&(s=KD.getInstance().getTimeOrigin(),r=Math.floor(1e3*(n.startTime+s)),i=n.responseStart?Math.floor(1e3*(n.responseStart-n.startTime)):void 0,s=Math.floor(1e3*(n.responseEnd-n.startTime)),function(e){const t=HD.getInstance();var n,r,i;t.instrumentationEnabled&&(n=e.url,r=t.logEndPointUrl.split("?")[0],i=t.flTransportEndpointUrl.split("?")[0],n!==r&&n!==i&&t.loggingEnabled&&t.logNetworkAfterSampling&&setTimeout(()=>_P(e,0),0))}({performanceController:e,url:n.name&&n.name.split("?")[0],responsePayloadBytes:n.transferSize,startTimeUs:r,timeToResponseInitiatedUs:i,timeToResponseCompletedUs:s}))}const CP=5e3;function AP(e){WD&&(setTimeout(()=>function(n){const e=KD.getInstance(),r=e.getEntriesByType("navigation"),i=e.getEntriesByType("paint");if(e.onFirstInputDelay){let t=setTimeout(()=>{kP.createOobTrace(n,r,i),t=void 0},CP);e.onFirstInputDelay(e=>{t&&(clearTimeout(t),kP.createOobTrace(n,r,i,e))})}else kP.createOobTrace(n,r,i)}(e),0),setTimeout(()=>function(t){const e=KD.getInstance(),n=e.getEntriesByType("resource");for(const r of n)SP(t,r);e.setupObserver("resource",e=>SP(t,e))}(e),0),setTimeout(()=>function(t){const e=KD.getInstance(),n=e.getEntriesByType("measure");for(const r of n)NP(t,r);e.setupObserver("measure",e=>NP(t,e))}(e),0))}function NP(e,t){const n=t.name;n.substring(0,PD.length)!==PD&&kP.createUserTimingTrace(e,n)}class RP{constructor(e,t){this.app=e,this.installations=t,this.initialized=!1}_init(e){this.initialized||(void 0!==(null==e?void 0:e.dataCollectionEnabled)&&(this.dataCollectionEnabled=e.dataCollectionEnabled),void 0!==(null==e?void 0:e.instrumentationEnabled)&&(this.instrumentationEnabled=e.instrumentationEnabled),KD.getInstance().requiredApisAvailable()?A().then(e=>{e&&(gP||(mP(5500),gP=!0),cP(this).then(()=>AP(this),()=>AP(this)),this.initialized=!0)}).catch(e=>{BD.info(`Environment doesn't support IndexedDB: ${e}`)}):BD.info('Firebase Performance cannot start if the browser does not support "Fetch" and "Promise", or cookies are disabled.'))}set instrumentationEnabled(e){HD.getInstance().instrumentationEnabled=e}get instrumentationEnabled(){return HD.getInstance().instrumentationEnabled}set dataCollectionEnabled(e){HD.getInstance().dataCollectionEnabled=e}get dataCollectionEnabled(){return HD.getInstance().dataCollectionEnabled}}const xP="[DEFAULT]";const DP=(e,{options:t})=>{var n=e.getProvider("app").getImmediate(),r=e.getProvider("installations-internal").getImmediate();if(n.name!==xP)throw VD.create("FB not default");if("undefined"==typeof window)throw VD.create("no window");e=window,$D=e;const i=new RP(n,r);return i._init(t),i};ze(new oe("performance",DP,"PUBLIC")),et(RD,xD),et(RD,xD,"esm2017");class PP{constructor(e,t){this.app=e,this._delegate=t}get instrumentationEnabled(){return this._delegate.instrumentationEnabled}set instrumentationEnabled(e){this._delegate.instrumentationEnabled=e}get dataCollectionEnabled(){return this._delegate.dataCollectionEnabled}set dataCollectionEnabled(e){this._delegate.dataCollectionEnabled=e}trace(e){return t=this._delegate,e=e,t=ae(t),new kP(t,e);var t}}function OP(e){var t=e.getProvider("app-compat").getImmediate(),n=e.getProvider("performance").getImmediate();return new PP(t,n)}(FD=wt).INTERNAL.registerComponent(new oe("performance-compat",OP,"PUBLIC")),FD.registerVersion("@firebase/performance-compat","0.2.1");const MP="@firebase/remote-config";class LP{constructor(){this.listeners=[]}addEventListener(e){this.listeners.push(e)}abort(){this.listeners.forEach(e=>e())}}const FP=new x("remoteconfig","Remote Config",{"registration-window":"Undefined window object. This SDK only supports usage in a browser environment.","registration-project-id":"Undefined project identifier. Check Firebase app initialization.","registration-api-key":"Undefined API key. Check Firebase app initialization.","registration-app-id":"Undefined app identifier. Check Firebase app initialization.","storage-open":"Error thrown when opening storage. Original error: {$originalErrorMessage}.","storage-get":"Error thrown when reading from storage. Original error: {$originalErrorMessage}.","storage-set":"Error thrown when writing to storage. Original error: {$originalErrorMessage}.","storage-delete":"Error thrown when deleting from storage. Original error: {$originalErrorMessage}.","fetch-client-network":"Fetch client failed to connect to a network. Check Internet connection. Original error: {$originalErrorMessage}.","fetch-timeout":'The config fetch request timed out. Configure timeout using "fetchTimeoutMillis" SDK setting.',"fetch-throttle":'The config fetch request timed out while in an exponential backoff state. Configure timeout using "fetchTimeoutMillis" SDK setting. Unix timestamp in milliseconds when fetch request throttling ends: {$throttleEndTimeMillis}.',"fetch-client-parse":"Fetch client could not parse response. Original error: {$originalErrorMessage}.","fetch-status":"Fetch server returned an HTTP error status. HTTP status: {$httpStatus}.","indexed-db-unavailable":"Indexed DB is not supported by current browser"});const UP=["1","true","t","yes","y","on"];class qP{constructor(e,t=""){this._source=e,this._value=t}asString(){return this._value}asBoolean(){return"static"!==this._source&&0<=UP.indexOf(this._value.toLowerCase())}asNumber(){if("static"===this._source)return 0;let e=Number(this._value);return isNaN(e)&&(e=0),e}getSource(){return this._source}}async function VP(e){const t=ae(e);var[n,r]=await Promise.all([t._storage.getLastSuccessfulFetchResponse(),t._storage.getActiveConfigEtag()]);return!!(n&&n.config&&n.eTag&&n.eTag!==r)&&(await Promise.all([t._storageCache.setActiveConfig(n.config),t._storage.setActiveConfigEtag(n.eTag)]),!0)}function BP(e){const t=ae(e);return t._initializePromise||(t._initializePromise=t._storageCache.loadFromStorage().then(()=>{t._isInitializationComplete=!0})),t._initializePromise}async function jP(t){const n=ae(t),e=new LP;setTimeout(async()=>{e.abort()},n.settings.fetchTimeoutMillis);try{await n._client.fetch({cacheMaxAgeMillis:n.settings.minimumFetchIntervalMillis,signal:e}),await n._storageCache.setLastFetchStatus("success")}catch(e){var r=(i="fetch-throttle",(t=e)instanceof R&&-1!==t.code.indexOf(i)?"throttle":"failure");throw await n._storageCache.setLastFetchStatus(r),e}var i}function $P(n){const e=ae(n);return[t={},r={}]=[e._storageCache.getActiveConfig(),e.defaultConfig],Object.keys(Object.assign(Object.assign({},t),r)).reduce((e,t)=>(e[t]=KP(n,t),e),{});var t,r}function KP(e,t){const n=ae(e);n._isInitializationComplete||n._logger.debug(`A value was requested for key "${t}" before SDK initialization completed.`+" Await on ensureInitialized if the intent was to get a previously activated value.");var r=n._storageCache.getActiveConfig();return r&&void 0!==r[t]?new qP("remote",r[t]):n.defaultConfig&&void 0!==n.defaultConfig[t]?new qP("default",String(n.defaultConfig[t])):(n._logger.debug(`Returning static value for key "${t}".`+" Define a default or remote value if this is unintentional."),new qP("static"))}class WP{constructor(e,t,n,r){this.client=e,this.storage=t,this.storageCache=n,this.logger=r}isCachedDataFresh(e,t){if(!t)return this.logger.debug("Config fetch cache check. Cache unpopulated."),!1;var n=Date.now()-t,r=n<=e;return this.logger.debug("Config fetch cache check."+` Cache age millis: ${n}.`+` Cache max age millis (minimumFetchIntervalMillis setting): ${e}.`+` Is cache hit: ${r}.`),r}async fetch(e){var[t,n]=await Promise.all([this.storage.getLastSuccessfulFetchTimestampMillis(),this.storage.getLastSuccessfulFetchResponse()]);if(n&&this.isCachedDataFresh(e.cacheMaxAgeMillis,t))return n;e.eTag=n&&n.eTag;n=await this.client.fetch(e);const r=[this.storageCache.setLastSuccessfulFetchTimestampMillis(Date.now())];return 200===n.status&&r.push(this.storage.setLastSuccessfulFetchResponse(n)),await Promise.all(r),n}}class zP{constructor(e,t,n,r,i,s){this.firebaseInstallations=e,this.sdkVersion=t,this.namespace=n,this.projectId=r,this.apiKey=i,this.appId=s}async fetch(n){var e,[t,r]=await Promise.all([this.firebaseInstallations.getId(),this.firebaseInstallations.getToken()]),i=`${window.FIREBASE_REMOTE_CONFIG_URL_BASE||"https://firebaseremoteconfig.googleapis.com"}/v1/projects/${this.projectId}/namespaces/${this.namespace}:fetch?key=${this.apiKey}`,s={"Content-Type":"application/json","Content-Encoding":"gzip","If-None-Match":n.eTag||"*"},r={sdk_version:this.sdkVersion,app_instance_id:t,app_instance_id_token:r,app_id:this.appId,language_code:(e=navigator).languages&&e.languages[0]||e.language},r={method:"POST",headers:s,body:JSON.stringify(r)},i=fetch(i,r),r=new Promise((e,t)=>{n.signal.addEventListener(()=>{const e=new Error("The operation was aborted.");e.name="AbortError",t(e)})});let a;try{await Promise.race([i,r]),a=await i}catch(e){let t="fetch-client-network";throw"AbortError"===(null==e?void 0:e.name)&&(t="fetch-timeout"),FP.create(t,{originalErrorMessage:null==e?void 0:e.message})}let o=a.status;i=a.headers.get("ETag")||void 0;let c,l;if(200===a.status){let e;try{e=await a.json()}catch(e){throw FP.create("fetch-client-parse",{originalErrorMessage:null==e?void 0:e.message})}c=e.entries,l=e.state}if("INSTANCE_STATE_UNSPECIFIED"===l?o=500:"NO_CHANGE"===l?o=304:"NO_TEMPLATE"!==l&&"EMPTY_CONFIG"!==l||(c={}),304!==o&&200!==o)throw FP.create("fetch-status",{httpStatus:o});return{status:o,eTag:i,config:c}}}class GP{constructor(e,t){this.client=e,this.storage=t}async fetch(e){var t=await this.storage.getThrottleMetadata()||{backoffCount:0,throttleEndTimeMillis:Date.now()};return this.attemptFetch(e,t)}async attemptFetch(t,{throttleEndTimeMillis:e,backoffCount:n}){var i,s;i=t.signal,s=e,await new Promise((e,t)=>{var n=Math.max(s-Date.now(),0);const r=setTimeout(e,n);i.addEventListener(()=>{clearTimeout(r),t(FP.create("fetch-throttle",{throttleEndTimeMillis:s}))})});try{var r=await this.client.fetch(t);return await this.storage.deleteThrottleMetadata(),r}catch(e){if(!function(e){if(e instanceof R&&e.customData){var t=Number(e.customData.httpStatus);return 429===t||500===t||503===t||504===t}}(e))throw e;r={throttleEndTimeMillis:Date.now()+se(n),backoffCount:n+1};return await this.storage.setThrottleMetadata(r),this.attemptFetch(t,r)}}}class HP{constructor(e,t,n,r,i){this.app=e,this._client=t,this._storageCache=n,this._storage=r,this._logger=i,this._isInitializationComplete=!1,this.settings={fetchTimeoutMillis:6e4,minimumFetchIntervalMillis:432e5},this.defaultConfig={}}get fetchTimeMillis(){return this._storageCache.getLastSuccessfulFetchTimestampMillis()||-1}get lastFetchStatus(){return this._storageCache.getLastFetchStatus()||"no-fetch-yet"}}function QP(e,t){var n=e.target.error||void 0;return FP.create(t,{originalErrorMessage:n&&(null==n?void 0:n.message)})}const YP="app_namespace_store";class JP{constructor(e,t,n,r=function(){return new Promise((t,n)=>{try{const e=indexedDB.open("firebase_remote_config",1);e.onerror=e=>{n(QP(e,"storage-open"))},e.onsuccess=e=>{t(e.target.result)},e.onupgradeneeded=e=>{const t=e.target.result;0===e.oldVersion&&t.createObjectStore(YP,{keyPath:"compositeKey"})}}catch(e){n(FP.create("storage-open",{originalErrorMessage:null==e?void 0:e.message}))}})}()){this.appId=e,this.appName=t,this.namespace=n,this.openDbPromise=r}getLastFetchStatus(){return this.get("last_fetch_status")}setLastFetchStatus(e){return this.set("last_fetch_status",e)}getLastSuccessfulFetchTimestampMillis(){return this.get("last_successful_fetch_timestamp_millis")}setLastSuccessfulFetchTimestampMillis(e){return this.set("last_successful_fetch_timestamp_millis",e)}getLastSuccessfulFetchResponse(){return this.get("last_successful_fetch_response")}setLastSuccessfulFetchResponse(e){return this.set("last_successful_fetch_response",e)}getActiveConfig(){return this.get("active_config")}setActiveConfig(e){return this.set("active_config",e)}getActiveConfigEtag(){return this.get("active_config_etag")}setActiveConfigEtag(e){return this.set("active_config_etag",e)}getThrottleMetadata(){return this.get("throttle_metadata")}setThrottleMetadata(e){return this.set("throttle_metadata",e)}deleteThrottleMetadata(){return this.delete("throttle_metadata")}async get(a){const o=await this.openDbPromise;return new Promise((n,t)=>{const e=o.transaction([YP],"readonly"),r=e.objectStore(YP);var i=this.createCompositeKey(a);try{const s=r.get(i);s.onerror=e=>{t(QP(e,"storage-get"))},s.onsuccess=e=>{var t=e.target.result;n(t?t.value:void 0)}}catch(e){t(FP.create("storage-get",{originalErrorMessage:null==e?void 0:e.message}))}})}async set(a,o){const c=await this.openDbPromise;return new Promise((e,t)=>{const n=c.transaction([YP],"readwrite"),r=n.objectStore(YP);var i=this.createCompositeKey(a);try{const s=r.put({compositeKey:i,value:o});s.onerror=e=>{t(QP(e,"storage-set"))},s.onsuccess=()=>{e()}}catch(e){t(FP.create("storage-set",{originalErrorMessage:null==e?void 0:e.message}))}})}async delete(a){const o=await this.openDbPromise;return new Promise((e,t)=>{const n=o.transaction([YP],"readwrite"),r=n.objectStore(YP);var i=this.createCompositeKey(a);try{const s=r.delete(i);s.onerror=e=>{t(QP(e,"storage-delete"))},s.onsuccess=()=>{e()}}catch(e){t(FP.create("storage-delete",{originalErrorMessage:null==e?void 0:e.message}))}})}createCompositeKey(e){return[this.appId,this.appName,this.namespace,e].join()}}class XP{constructor(e){this.storage=e}getLastFetchStatus(){return this.lastFetchStatus}getLastSuccessfulFetchTimestampMillis(){return this.lastSuccessfulFetchTimestampMillis}getActiveConfig(){return this.activeConfig}async loadFromStorage(){var e=this.storage.getLastFetchStatus(),t=this.storage.getLastSuccessfulFetchTimestampMillis(),n=this.storage.getActiveConfig(),e=await e;e&&(this.lastFetchStatus=e);t=await t;t&&(this.lastSuccessfulFetchTimestampMillis=t);n=await n;n&&(this.activeConfig=n)}setLastFetchStatus(e){return this.lastFetchStatus=e,this.storage.setLastFetchStatus(e)}setLastSuccessfulFetchTimestampMillis(e){return this.lastSuccessfulFetchTimestampMillis=e,this.storage.setLastSuccessfulFetchTimestampMillis(e)}setActiveConfig(e){return this.activeConfig=e,this.storage.setActiveConfig(e)}}async function ZP(){if(!C())return!1;try{return await A()}catch(e){return!1}}ze(new oe("remote-config",function(e,{instanceIdentifier:t}){var n=e.getProvider("app").getImmediate(),r=e.getProvider("installations-internal").getImmediate();if("undefined"==typeof window)throw FP.create("registration-window");if(!C())throw FP.create("indexed-db-unavailable");var{projectId:i,apiKey:s,appId:a}=n.options;if(!i)throw FP.create("registration-project-id");if(!s)throw FP.create("registration-api-key");if(!a)throw FP.create("registration-app-id");t=t||"firebase";const o=new JP(a,n.name,t),c=new XP(o),l=new me(MP);l.logLevel=g.ERROR;a=new zP(r,Ye,t,i,s,a),a=new GP(a,o),a=new WP(a,o,c,l),a=new HP(n,a,c,o,l);return BP(a),a},"PUBLIC").setMultipleInstances(!0)),et(MP,"0.4.1"),et(MP,"0.4.1","esm2017");class eO{constructor(e,t){this.app=e,this._delegate=t}get defaultConfig(){return this._delegate.defaultConfig}set defaultConfig(e){this._delegate.defaultConfig=e}get fetchTimeMillis(){return this._delegate.fetchTimeMillis}get lastFetchStatus(){return this._delegate.lastFetchStatus}get settings(){return this._delegate.settings}set settings(e){this._delegate.settings=e}activate(){return VP(this._delegate)}ensureInitialized(){return BP(this._delegate)}fetch(){return jP(this._delegate)}fetchAndActivate(){return async function(e){return await jP(e=ae(e)),VP(e)}(this._delegate)}getAll(){return $P(this._delegate)}getBoolean(e){return KP(ae(this._delegate),e).asBoolean()}getNumber(e){return KP(ae(this._delegate),e).asNumber()}getString(e){return KP(ae(this._delegate),e).asString()}getValue(e){return KP(this._delegate,e)}setLogLevel(e){!function(e,t){const n=ae(e);switch(t){case"debug":n._logger.logLevel=g.DEBUG;break;case"silent":n._logger.logLevel=g.SILENT;break;default:n._logger.logLevel=g.ERROR}}(this._delegate,e)}}function tO(e,{instanceIdentifier:t}){var n=e.getProvider("app-compat").getImmediate(),r=e.getProvider("remote-config").getImmediate({identifier:t});return new eO(n,r)}return(UD=wt).INTERNAL.registerComponent(new oe("remoteConfig-compat",tO,"PUBLIC").setMultipleInstances(!0).setServiceProps({isSupported:ZP})),UD.registerVersion("@firebase/remote-config-compat","0.2.1"),console.warn("\nIt looks like you're using the development build of the Firebase JS SDK.\nWhen deploying Firebase apps to production, it is advisable to only import\nthe individual SDK components you intend to use.\n\nFor the CDN builds, these are available in the following manner\n(replace with the name of a component - i.e. auth, database, etc):\n\nhttps://www.gstatic.com/firebasejs/5.0.0/firebase-.js\n"),wt.registerVersion("firebase","9.16.0","compat-cdn"),wt}); //# sourceMappingURL=firebase-compat.js.map