{"version":3,"sources":["webpack:///./node_modules/quasar/src/components/icon/QIcon.js","webpack:///./node_modules/core-js/internals/to-string-tag-support.js","webpack:///./node_modules/core-js/internals/function-bind-context.js","webpack:///./node_modules/core-js/internals/symbol-constructor-detection.js","webpack:///./node_modules/core-js/internals/object-get-own-property-descriptor.js","webpack:///./node_modules/core-js/internals/length-of-array-like.js","webpack:///./node_modules/quasar/src/utils/scroll.js","webpack:///./node_modules/quasar/src/plugins/Platform.js","webpack:///./node_modules/axios/lib/core/Axios.js","webpack:///./node_modules/core-js/internals/to-index.js","webpack:///./node_modules/core-js/internals/ie8-dom-define.js","webpack:///./node_modules/core-js/internals/error-stack-clear.js","webpack:///./node_modules/core-js/internals/try-to-string.js","webpack:///./node_modules/quasar/src/components/spinner/use-spinner.js","webpack:///./node_modules/quasar/src/components/spinner/QSpinner.js","webpack:///./node_modules/axios/lib/helpers/spread.js","webpack:///./node_modules/quasar/src/components/btn/use-btn.js","webpack:///./node_modules/vuex-persistedstate/dist/vuex-persistedstate.es.js","webpack:///./node_modules/xlsx/xlsx.js","webpack:///./node_modules/core-js/internals/environment-v8-version.js","webpack:///./node_modules/quasar/src/composables/private/use-prevent-scroll.js","webpack:///./node_modules/core-js/internals/make-built-in.js","webpack:///./node_modules/core-js/modules/es.array.push.js","webpack:///./node_modules/xlsx/jszip.js","webpack:///./node_modules/core-js/internals/is-callable.js","webpack:///./node_modules/quasar/src/utils/uid.js","webpack:///./node_modules/core-js/internals/is-possible-prototype.js","webpack:///./node_modules/core-js/internals/to-offset.js","webpack:///./node_modules/core-js/internals/an-instance.js","webpack:///./node_modules/core-js/internals/has-own-property.js","webpack:///./node_modules/core-js/internals/html.js","webpack:///./node_modules/quasar/src/utils/debounce.js","webpack:///./node_modules/node-libs-browser/node_modules/buffer/index.js","webpack:///./node_modules/core-js/modules/es.typed-array.find-last-index.js","webpack:///./node_modules/axios/lib/helpers/bind.js","webpack:///./node_modules/core-js/internals/require-object-coercible.js","webpack:///./node_modules/quasar/src/composables/private/use-form.js","webpack:///./node_modules/core-js/modules/es.set.symmetric-difference.v2.js","webpack:///./node_modules/core-js/modules/es.set.difference.v2.js","webpack:///./node_modules/base64-js/index.js","webpack:///./node_modules/core-js/internals/array-buffer-not-detached.js","webpack:///./node_modules/mixpanel-browser/dist/mixpanel.module.js","webpack:///./node_modules/xlsx/dist/cpexcel.js","webpack:///./node_modules/core-js/internals/iterate.js","webpack:///./node_modules/vue-json-csv/dist/vue-json-csv.common.js","webpack:///./node_modules/core-js/internals/to-absolute-index.js","webpack:///./node_modules/core-js/internals/export.js","webpack:///./node_modules/core-js/internals/object-get-own-property-names.js","webpack:///./node_modules/axios/lib/defaults.js","webpack:///./node_modules/quasar/src/utils/private/global-config.js","webpack:///./node_modules/core-js/modules/es.array-buffer.transfer.js","webpack:///./node_modules/quasar/src/components/dialog/QDialog.js","webpack:///./node_modules/quasar/src/utils/private/option-sizes.js","webpack:///./node_modules/@firebase/firestore/dist/esm5/index.js","webpack:///./node_modules/@firebase/firestore/dist/esm5/bundle.js","webpack:///./node_modules/@firebase/functions/dist/index.esm.js","webpack:///./node_modules/@firebase/installations/dist/index.esm.js","webpack:///./node_modules/@firebase/messaging/dist/index.esm.js","webpack:///./node_modules/@firebase/storage/dist/index.browser.esm.js","webpack:///./node_modules/@firebase/performance/dist/index.esm.js","webpack:///./node_modules/@firebase/analytics/dist/index.esm.js","webpack:///./node_modules/@firebase/remote-config/dist/index.esm.js","webpack:///./node_modules/firebase/dist/index.esm.js","webpack:///./node_modules/quasar/src/components/input/use-mask.js","webpack:///./node_modules/quasar/src/components/input/QInput.js","webpack:///./node_modules/core-js/modules/es.typed-array.to-sorted.js","webpack:///./node_modules/core-js/internals/get-built-in-node-module.js","webpack:///./node_modules/quasar/src/plugins/Notify.js","webpack:///./node_modules/core-js/internals/iterator-close.js","webpack:///./node_modules/core-js/internals/function-apply.js","webpack:///./node_modules/core-js/modules/es.array-buffer.detached.js","webpack:///./node_modules/axios/lib/core/createError.js","webpack:///./node_modules/axios/lib/cancel/isCancel.js","webpack:///./node_modules/axios/lib/helpers/buildURL.js","webpack:///./node_modules/quasar/src/composables/private/use-key-composition.js","webpack:///./node_modules/core-js/internals/does-not-exceed-safe-integer.js","webpack:///./node_modules/core-js/internals/get-iterator-method.js","webpack:///./node_modules/core-js/internals/detach-transferable.js","webpack:///./node_modules/quasar/src/components/radio/QRadio.js","webpack:///./node_modules/core-js/internals/object-define-properties.js","webpack:///./node_modules/quasar/src/composables/private/use-timeout.js","webpack:///./node_modules/core-js/internals/set-iterate.js","webpack:///./node_modules/axios/lib/core/enhanceError.js","webpack:///./node_modules/axios/lib/helpers/isURLSameOrigin.js","webpack:///./node_modules/core-js/internals/set-is-superset-of.js","webpack:///./node_modules/quasar/src/plugins/Screen.js","webpack:///./node_modules/quasar/src/plugins/Dark.js","webpack:///./node_modules/quasar/src/utils/set-css-var.js","webpack:///./node_modules/quasar/src/body.js","webpack:///./node_modules/quasar/src/install-quasar.js","webpack:///./node_modules/core-js/internals/array-set-length.js","webpack:///./node_modules/core-js/internals/object-is-prototype-of.js","webpack:///./node_modules/core-js/internals/a-possible-prototype.js","webpack:///./node_modules/core-js/modules/es.typed-array.set.js","webpack:///./node_modules/quasar/src/composables/private/use-dark.js","webpack:///./node_modules/vue-excel-xlsx/VueExcelXlsx.vue","webpack:///./node_modules/vue-excel-xlsx/VueExcelXlsx.vue?6467","webpack:///./node_modules/vue-excel-xlsx/index.js","webpack:///./node_modules/@vue/devtools-api/lib/esm/env.js","webpack:///./node_modules/@vue/devtools-api/lib/esm/const.js","webpack:///./node_modules/@vue/devtools-api/lib/esm/time.js","webpack:///./node_modules/@vue/devtools-api/lib/esm/proxy.js","webpack:///./node_modules/@vue/devtools-api/lib/esm/index.js","webpack:///./node_modules/core-js/internals/iterators.js","webpack:///./node_modules/core-js/internals/function-bind-native.js","webpack:///./node_modules/core-js/modules/es.array-buffer.transfer-to-fixed-length.js","webpack:///./node_modules/core-js/internals/array-buffer-transfer.js","webpack:///./node_modules/node-libs-browser/mock/process.js","webpack:///./node_modules/quasar/src/components/card/QCardActions.js","webpack:///./node_modules/quasar/src/components/dialog-plugin/DialogPlugin.js","webpack:///./node_modules/quasar/src/utils/private/global-dialog.js","webpack:///./node_modules/quasar/src/plugins/Dialog.js","webpack:///./node_modules/core-js/internals/indexed-object.js","webpack:///./node_modules/core-js/internals/function-uncurry-this-clause.js","webpack:///./node_modules/axios/lib/core/settle.js","webpack:///./node_modules/core-js/internals/get-iterator-direct.js","webpack:///./node_modules/core-js/internals/create-iter-result-object.js","webpack:///./node_modules/core-js/internals/ordinary-to-primitive.js","webpack:///./node_modules/axios/lib/core/mergeConfig.js","webpack:///./node_modules/core-js/internals/array-buffer-basic-detection.js","webpack:///./node_modules/core-js/internals/array-includes.js","webpack:///./node_modules/core-js/modules/es.typed-array.with.js","webpack:///./node_modules/core-js/internals/to-length.js","webpack:///./node_modules/axios/lib/core/dispatchRequest.js","webpack:///./node_modules/core-js/internals/iterate-simple.js","webpack:///./node_modules/quasar/src/utils/private/portal.js","webpack:///./node_modules/vuex/dist/vuex.esm-browser.js","webpack:///./node_modules/core-js/internals/shared.js","webpack:///./node_modules/core-js/internals/own-keys.js","webpack:///./node_modules/core-js/internals/to-string.js","webpack:///./node_modules/quasar/src/history.js","webpack:///./node_modules/core-js/internals/to-integer-or-infinity.js","webpack:///./node_modules/core-js/internals/a-callable.js","webpack:///./node_modules/core-js/internals/create-property-descriptor.js","webpack:///./node_modules/axios/lib/env/data.js","webpack:///./node_modules/core-js/internals/function-name.js","webpack:///./node_modules/axios/lib/helpers/isAxiosError.js","webpack:///./node_modules/@firebase/app-check/dist/index.cjs.js","webpack:///./node_modules/core-js/internals/define-global-property.js","webpack:///./node_modules/vue-router/dist/vue-router.mjs","webpack:///./node_modules/core-js/internals/set-is-subset-of.js","webpack:///./node_modules/core-js/internals/define-built-ins.js","webpack:///./node_modules/core-js/internals/internal-state.js","webpack:///./node_modules/@firebase/firestore/dist/esm5/prebuilt-2d830653-6eee25bb.js","webpack:///./node_modules/vue-loader-v16/dist/exportHelper.js","webpack:///./node_modules/core-js/modules/es.typed-array.to-reversed.js","webpack:///./node_modules/quasar/src/composables/private/use-history.js","webpack:///./node_modules/quasar/src/composables/use-form-child.js","webpack:///./node_modules/quasar/src/utils/patterns.js","webpack:///./node_modules/quasar/src/composables/private/use-validate.js","webpack:///./node_modules/quasar/src/composables/private/use-split-attrs.js","webpack:///./node_modules/quasar/src/composables/private/use-field.js","webpack:///./node_modules/core-js/internals/error-stack-install.js","webpack:///./node_modules/quasar/src/utils/throttle.js","webpack:///./node_modules/quasar/src/directives/Ripple.js","webpack:///./node_modules/core-js/internals/inherit-if-required.js","webpack:///./node_modules/core-js/internals/is-null-or-undefined.js","webpack:///./node_modules/core-js/internals/function-uncurry-this-accessor.js","webpack:///./node_modules/core-js/modules/es.set.union.v2.js","webpack:///./node_modules/core-js/internals/object-get-own-property-symbols.js","webpack:///./node_modules/core-js/internals/array-buffer-is-detached.js","webpack:///./node_modules/quasar/src/utils/private/global-nodes.js","webpack:///./node_modules/core-js/internals/enum-bug-keys.js","webpack:///./node_modules/core-js/modules/es.set.intersection.v2.js","webpack:///./node_modules/@vue/reactivity/dist/reactivity.esm-bundler.js","webpack:///./node_modules/@vue/runtime-core/dist/runtime-core.esm-bundler.js","webpack:///./node_modules/@vue/runtime-dom/dist/runtime-dom.esm-bundler.js","webpack:///./node_modules/vue/dist/vue.runtime.esm-bundler.js","webpack:///./node_modules/axios/lib/cancel/Cancel.js","webpack:///./node_modules/axios/lib/helpers/cookies.js","webpack:///./node_modules/core-js/internals/to-object.js","webpack:///./node_modules/core-js/internals/object-create.js","webpack:///./node_modules/core-js/modules/es.iterator.for-each.js","webpack:///./node_modules/core-js/internals/get-set-record.js","webpack:///./node_modules/core-js/internals/an-object.js","webpack:///./node_modules/core-js/internals/descriptors.js","webpack:///./node_modules/core-js/internals/set-clone.js","webpack:///./node_modules/axios/lib/core/buildFullPath.js","webpack:///./node_modules/core-js/internals/create-property.js","webpack:///./node_modules/axios/lib/helpers/validator.js","webpack:///./node_modules/core-js/internals/environment.js","webpack:///./node_modules/core-js/internals/is-object.js","webpack:///./node_modules/core-js/internals/inspect-source.js","webpack:///./node_modules/core-js/modules/es.set.is-subset-of.v2.js","webpack:///./node_modules/axios/lib/cancel/CancelToken.js","webpack:///./node_modules/core-js/internals/set-size.js","webpack:///./node_modules/quasar/src/components/checkbox/QCheckbox.js","webpack:///./node_modules/quasar/src/utils/prevent-scroll.js","webpack:///./node_modules/quasar/src/composables/private/use-align.js","webpack:///./node_modules/quasar/icon-set/material-icons.js","webpack:///./node_modules/quasar/src/icon-set.js","webpack:///./node_modules/core-js/modules/es.typed-array.at.js","webpack:///./node_modules/core-js/internals/uid.js","webpack:///./node_modules/core-js/modules/es.iterator.filter.js","webpack:///./node_modules/core-js/internals/create-non-enumerable-property.js","webpack:///./node_modules/ieee754/index.js","webpack:///./node_modules/core-js/internals/is-forced.js","webpack:///./node_modules/core-js/internals/set-intersection.js","webpack:///./node_modules/quasar/src/components/toggle/QToggle.js","webpack:///./node_modules/core-js/modules/es.typed-array.find-last.js","webpack:///./node_modules/quasar/src/composables/private/use-size.js","webpack:///./node_modules/core-js/internals/set-symmetric-difference.js","webpack:///./node_modules/core-js/internals/get-iterator.js","webpack:///./node_modules/tslib/tslib.es6.js","webpack:///./node_modules/core-js/internals/environment-is-node.js","webpack:///./node_modules/core-js/internals/call-with-safe-iteration-closing.js","webpack:///./node_modules/core-js/internals/object-define-property.js","webpack:///./node_modules/quasar/src/components/btn/QBtn.js","webpack:///./node_modules/idb/build/idb.js","webpack:///./node_modules/quasar/src/components/option-group/QOptionGroup.js","webpack:///./node_modules/@vue/shared/dist/shared.esm-bundler.js","webpack:///./node_modules/quasar/src/composables/private/use-portal.js","webpack:///./node_modules/core-js/internals/to-property-key.js","webpack:///./node_modules/core-js/internals/array-iteration-from-last.js","webpack:///./node_modules/quasar/src/components/card/QCardSection.js","webpack:///./node_modules/quasar/src/composables/private/use-transition.js","webpack:///./node_modules/core-js/modules/es.set.is-superset-of.v2.js","webpack:///./node_modules/core-js/internals/set-difference.js","webpack:///./node_modules/core-js/modules/es.iterator.some.js","webpack:///./node_modules/@firebase/util/dist/index.esm.js","webpack:///./node_modules/core-js/internals/install-error-cause.js","webpack:///./node_modules/core-js/modules/es.iterator.map.js","webpack:///./node_modules/@firebase/logger/dist/index.esm.js","webpack:///./node_modules/core-js/internals/iterators-core.js","webpack:///./node_modules/core-js/internals/proxy-accessor.js","webpack:///./node_modules/core-js/internals/v8-prototype-define-bug.js","webpack:///./node_modules/quasar/src/utils/private/escape-key.js","webpack:///./node_modules/quasar/src/vue-plugin.js","webpack:///./node_modules/quasar/icon-set/fontawesome-v5.js","webpack:///./node_modules/core-js/internals/math-trunc.js","webpack:///./node_modules/core-js/internals/set-is-disjoint-from.js","webpack:///./node_modules/axios/lib/adapters/xhr.js","webpack:///./node_modules/core-js/internals/environment-user-agent.js","webpack:///./node_modules/core-js/internals/array-buffer-byte-length.js","webpack:///./node_modules/core-js/internals/well-known-symbol.js","webpack:///./node_modules/node-libs-browser/node_modules/path-browserify/index.js","webpack:///./node_modules/@firebase/auth/dist/auth.esm.js","webpack:///./node_modules/core-js/internals/error-stack-installable.js","webpack:///./node_modules/axios/index.js","webpack:///./node_modules/core-js/internals/is-big-int-array.js","webpack:///./node_modules/quasar/src/composables/private/use-file-dom-props.js","webpack:///./node_modules/quasar/src/utils/private/vm.js","webpack:///./node_modules/node-libs-browser/node_modules/isarray/index.js","webpack:///./node_modules/core-js/internals/to-primitive.js","webpack:///./node_modules/core-js/modules/es.set.is-disjoint-from.v2.js","webpack:///./node_modules/axios/lib/helpers/parseHeaders.js","webpack:///./node_modules/axios/lib/core/transformData.js","webpack:///./node_modules/core-js/internals/is-pure.js","webpack:///./node_modules/axios/lib/utils.js","webpack:///./node_modules/core-js/internals/iterator-create-proxy.js","webpack:///./node_modules/core-js/internals/function-call.js","webpack:///./node_modules/quasar/src/components/checkbox/use-checkbox.js","webpack:///./node_modules/core-js/internals/classof-raw.js","webpack:///./node_modules/core-js/internals/shared-store.js","webpack:///./node_modules/core-js/modules/web.self.js","webpack:///./node_modules/@firebase/webchannel-wrapper/dist/index.esm.js","webpack:///./node_modules/axios/lib/helpers/normalizeHeaderName.js","webpack:///(webpack)/buildin/global.js","webpack:///./node_modules/core-js/internals/object-keys-internal.js","webpack:///./node_modules/core-js/internals/set-helpers.js","webpack:///./node_modules/core-js/internals/define-built-in.js","webpack:///./node_modules/quasar/src/components/avatar/QAvatar.js","webpack:///./node_modules/core-js/internals/document-create-element.js","webpack:///./node_modules/@firebase/app/dist/index.esm.js","webpack:///./node_modules/core-js/internals/weak-map-basic-detection.js","webpack:///./node_modules/quasar/src/utils/private/render.js","webpack:///./node_modules/quasar/src/utils/private/define-reactive-plugin.js","webpack:///./node_modules/axios/lib/axios.js","webpack:///./node_modules/core-js/internals/global-this.js","webpack:///./node_modules/core-js/internals/hidden-keys.js","webpack:///./node_modules/core-js/internals/iterator-map.js","webpack:///./node_modules/core-js/internals/fails.js","webpack:///./node_modules/core-js/internals/get-built-in.js","webpack:///./node_modules/quasar/src/composables/private/use-router-link.js","webpack:///./node_modules/quasar/src/composables/private/use-model-toggle.js","webpack:///./node_modules/core-js/internals/object-property-is-enumerable.js","webpack:///./node_modules/core-js/internals/object-set-prototype-of.js","webpack:///./node_modules/core-js/internals/array-with.js","webpack:///./node_modules/quasar/src/utils/private/focusout.js","webpack:///./node_modules/core-js/modules/es.iterator.every.js","webpack:///./node_modules/quasar/src/utils/event.js","webpack:///./node_modules/axios/lib/helpers/isAbsoluteURL.js","webpack:///./node_modules/core-js/internals/is-symbol.js","webpack:///./node_modules/core-js/modules/es.error.cause.js","webpack:///./node_modules/core-js/internals/set-method-accept-set-like.js","webpack:///./node_modules/core-js/internals/structured-clone-proper-transfer.js","webpack:///./node_modules/core-js/internals/a-set.js","webpack:///./node_modules/core-js/internals/get-method.js","webpack:///./node_modules/quasar/src/utils/private/key-composition.js","webpack:///(webpack)/buildin/harmony-module.js","webpack:///./node_modules/core-js/internals/object-keys.js","webpack:///./node_modules/core-js/internals/array-to-reversed.js","webpack:///./node_modules/core-js/internals/array-from-constructor-and-list.js","webpack:///./node_modules/core-js/internals/object-get-prototype-of.js","webpack:///./node_modules/core-js/internals/correct-prototype-getter.js","webpack:///./node_modules/quasar/src/utils/private/symbols.js","webpack:///./node_modules/quasar/src/composables/private/use-tick.js","webpack:///./node_modules/core-js/internals/function-uncurry-this.js","webpack:///./node_modules/core-js/internals/normalize-string-argument.js","webpack:///./node_modules/core-js/internals/wrap-error-constructor-with-cause.js","webpack:///./node_modules/axios/lib/helpers/combineURLs.js","webpack:///./node_modules/core-js/internals/copy-constructor-properties.js","webpack:///./node_modules/core-js/internals/is-array.js","webpack:///./node_modules/quasar/src/composables/private/use-refocus-target.js","webpack:///./node_modules/@firebase/database/dist/index.esm.js","webpack:///./node_modules/core-js/internals/is-array-iterator-method.js","webpack:///./node_modules/core-js/internals/set-union.js","webpack:///./node_modules/core-js/modules/es.iterator.constructor.js","webpack:///./node_modules/quasar/src/components/separator/QSeparator.js","webpack:///./node_modules/core-js/internals/array-buffer-view-core.js","webpack:///./node_modules/uuid/dist/esm-browser/rng.js","webpack:///./node_modules/uuid/dist/esm-browser/regex.js","webpack:///./node_modules/uuid/dist/esm-browser/validate.js","webpack:///./node_modules/uuid/dist/esm-browser/stringify.js","webpack:///./node_modules/uuid/dist/esm-browser/v4.js","webpack:///./node_modules/quasar/lang/en-US.js","webpack:///./node_modules/quasar/src/lang.js","webpack:///./node_modules/core-js/internals/define-built-in-accessor.js","webpack:///./node_modules/quasar/src/components/card/QCard.js","webpack:///./node_modules/quasar/src/utils/dom.js","webpack:///./node_modules/core-js/internals/to-big-int.js","webpack:///./node_modules/quasar/src/plugins/Loading.js","webpack:///./node_modules/core-js/internals/classof.js","webpack:///./node_modules/core-js/modules/es.iterator.find.js","webpack:///./node_modules/axios/lib/core/InterceptorManager.js","webpack:///./node_modules/quasar/src/utils/private/focus-manager.js","webpack:///./node_modules/core-js/internals/shared-key.js","webpack:///./node_modules/core-js/internals/to-positive-integer.js","webpack:///./node_modules/core-js/internals/to-indexed-object.js","webpack:///./node_modules/core-js/internals/use-symbol-as-uid.js","webpack:///./node_modules/@firebase/component/dist/index.esm.js"],"names":["sameFn","i","ionFn","libMap","matMap","o_","r_","s_","libRE","RegExp","Object","keys","join","matRE","mRE","imgRE","svgUseRE","ionRE","faLaRE","defineComponent","name","props","useSizeProps","tag","type","String","default","color","left","Boolean","right","setup","slots","proxy","$q","getCurrentInstance","sizeStyle","useSize","classes","computed","cls","icon","none","value","iconMapFn","res","content","test","def","viewBox","split","svg","nodes","map","path","d","style","transform","h","img","src","substring","svguse","matches","match","platform","is","ios","substr","data","class","role","hSlot","hMergeSlot","wellKnownSymbol","TO_STRING_TAG","module","exports","uncurryThis","aCallable","NATIVE_BIND","bind","fn","that","undefined","apply","arguments","V8_VERSION","fails","globalThis","$String","getOwnPropertySymbols","symbol","Symbol","sham","DESCRIPTORS","call","propertyIsEnumerableModule","createPropertyDescriptor","toIndexedObject","toPropertyKey","hasOwn","IE8_DOM_DEFINE","$getOwnPropertyDescriptor","getOwnPropertyDescriptor","f","O","P","error","toLength","obj","length","scrollTargets","document","body","scrollingElement","documentElement","getScrollTarget","el","targetEl","target","getElement","window","closest","includes","getVerticalScrollPosition","scrollTarget","pageYOffset","scrollY","scrollTop","getHorizontalScrollPosition","pageXOffset","scrollX","scrollLeft","animVerticalScrollTo","to","duration","prevTime","performance","now","pos","setScroll","requestAnimationFrame","nowTime","frameTime","newPos","Math","max","animHorizontalScrollTo","setHorizontalScroll","offset","scrollTo","setVerticalScrollPosition","setHorizontalScrollPosition","size","getScrollbarWidth","inner","createElement","outer","css","width","height","position","top","visibility","overflow","appendChild","w1","offsetWidth","w2","clientWidth","remove","hasScrollbar","onY","nodeType","Node","ELEMENT_NODE","scrollHeight","clientHeight","classList","contains","getComputedStyle","scrollWidth","isRuntimeSsrPreHydration","ref","__QUASAR_SSR_CLIENT__","iosCorrection","iosEmulated","getMatch","userAgent","platformMatch","exec","indexOf","browser","version","versionNumber","getPlatformMatch","hasTouch","navigator","maxTouchPoints","applyIosCorrection","mac","desktop","min","innerHeight","innerWidth","assign","mobile","getPlatform","UA","toLowerCase","matched","parseInt","knownMobiles","android","bb","blackberry","ipad","iphone","ipod","kindle","playbook","silk","edga","edgios","edge","crios","chrome","fxios","firefox","winphone","opr","safari","vivaldi","webkit","opera","electron","location","href","bex","Capacitor","capacitor","nativeMobile","nativeMobileWrapper","_cordovaNative","cordova","vendor","ssrClient","has","touch","webStorage","within","iframe","client","localStorage","e","self","Platform","install","opts","onSSRHydrated","push","reactive","this","utils","buildURL","InterceptorManager","dispatchRequest","mergeConfig","validator","validators","Axios","instanceConfig","defaults","interceptors","request","response","prototype","config","url","method","transitional","assertOptions","silentJSONParsing","boolean","forcedJSONParsing","clarifyTimeoutError","requestInterceptorChain","synchronousRequestInterceptors","forEach","interceptor","runWhen","synchronous","unshift","fulfilled","rejected","promise","responseInterceptorChain","chain","Array","concat","Promise","resolve","then","shift","newConfig","onFulfilled","onRejected","reject","getUri","params","paramsSerializer","replace","toIntegerOrInfinity","$RangeError","RangeError","it","number","defineProperty","get","a","$Error","Error","TEST","arg","stack","V8_OR_CHAKRA_STACK_ENTRY","IS_V8_OR_CHAKRA_STACK","dropEntries","prepareStackTrace","argument","useSpinnerProps","Number","useSpinner","cSize","useSizeDefaults","thickness","cx","cy","r","fill","stroke","callback","arr","padding","xs","sm","md","lg","xl","defaultSizes","useBtnProps","useRouterLinkProps","label","iconRight","round","outline","flat","unelevated","rounded","glossy","fab","fabMini","textColor","noCaps","noWrap","dense","tabindex","ripple","align","useAlignProps","stretch","loading","disable","alignClass","useAlign","hasLink","linkProps","navigateToLink","useRouterLink","v","minWidth","minHeight","isRounded","isActionable","tabIndex","isLink","design","attributes","acc","percentage","disabled","colors","innerClasses","t","toString","$$typeof","for","clone","isMergeableObject","u","isArray","n","o","filter","propertyIsEnumerable","c","arrayMerge","cloneUnlessOtherwiseSpecified","hasOwnProperty","customMerge","all","reduce","storage","key","getItem","JSON","parse","setItem","stringify","slice","pop","subscribe","assertStorage","removeItem","s","getState","fetchBeforeUse","replaceState","overwrite","state","arrayMerger","rehydrated","subscriber","setState","reducer","paths","make_xlsx_lib","XLSX","current_codepage","current_ansi","cptable","global","VALID_ANSI","CS2CP","0","1","2","77","128","129","130","134","136","161","162","163","177","178","186","204","222","238","255","69","set_ansi","cp","reset_ansi","set_cp","reset_cp","char_codes","len","charCodeAt","utf16leread","fromCharCode","utf16beread","debom","c1","c2","_getchar","x","_getansi","decode","DENSE","DIF_XL","Base64","encode","input","c3","e1","e2","e3","e4","isNaN","charAt","has_buf","Buffer","process","versions","node","Buffer_from","nbfs","from","buf","enc","alloc","allocUnsafe","new_raw_buf","new_unsafe_buf","s2a","s2ab","ArrayBuffer","view","Uint8Array","a2s","_chr","a2u","ab2a","bconcat","bufs","chr0","chr1","SSF","make_ssf","_strrev","l","pad0","pad_","rpad_","pad0r1","pad0r2","p2_32","pow","pad0r","isgeneral","days","months","init_table","table_fmt","frac","D","mixed","sgn","B","P_2","P_1","Q_2","Q_1","Q","A","floor","q","parse_date_code","b2","date","time","dow","dout","out","T","y","m","H","M","S","abs","date1904","Date","setDate","getDate","getFullYear","getMonth","getDay","fix_hijri","basedate","dnthresh","getTime","base1904","datenum_local","epoch","getTimezoneOffset","general_fmt_int","_general_int","general_fmt_num","gnr1","gnr2","gnr4","gnr5","gnr6","gfn2","w","gfn5","toFixed","toPrecision","toExponential","gfn3","gfn4","V","log","LOG10E","general_fmt","format","write_date","fmt","val","ss0","ss","tt","outl","commaify","j","_general_num","_general","write_num","pct1","write_num_pct","sfmt","mul","write_num_cm","idx","write_num_exp","period","ee","fakee","$$","$1","$2","$3","frac1","write_num_f1","aval","sign","den","rr","base","myn","myd","write_num_f2","dec1","closeparen","phone","hashq","str","cc","rnd","dd","dec","carry","flr","write_num_flt","ffmt","ri","ff","oa","lres","rres","write_num_cm2","write_num_pct2","write_num_exp2","write_num_int","lastIndexOf","split_fmt","in_str","_split","abstime","fmt_is_date","toUpperCase","eval_fmt","flen","dt","lst","hr","ssm","bt","jj","nstr","myv","ostr","vv","decpt","lasti","retval","is_date","_eval","cfregex","cfregex2","chkcond","thresh","parseFloat","choose_fmt","lat","m1","m2","dateNF","table","load_entry","load","_table","get_table","load_table","tbl","XLMLFormatMap","SSFImplicit","dateNFregex","dateNF_regex","dateNF_fix","Y","datestr","timestr","CRC32","DO_NOT_EXPORT_CFB","factory","signed_crc_table","Int32Array","crc32_bstr","bstr","seed","C","L","crc32_buf","crc32_buf_8","crc32_str","_fs","CFB","fs","namecmp","R","Z","dirname","p","filename","write_dos_date","hms","getHours","getMinutes","getSeconds","write_shift","ymd","parse_dos_date","read_shift","setMilliseconds","setFullYear","setMonth","setHours","setMinutes","setSeconds","parse_extra_field","blob","prep_blob","flags","sz","tgt","mtime","atime","ctime","mt","get_fs","file","options","parse_zip","mver","ssz","nmfs","difat_sec_cnt","dir_start","minifat_start","difat_start","fat_addrs","mv","check_get_mver","header","check_shifts","dir_cnt","chk","sectors","sectorify","sleuth_fat","sector_list","make_sector_list","ENDOFCHAIN","files","Paths","FileIndex","FullPaths","read_directory","build_full_paths","raw","HEADER_SIGNATURE","nsectors","ceil","FI","FP","pl","dad","get_mfat_entry","entry","payload","mini","start","MSSZ","__readInt32LE","new_buf","cnt","sector","get_sector_list","chkd","buf_chain","modulus","addr","__toBuffer","sl","k","minifat_store","namelen","__utf16le","clsid","ct","read_date","__readUInt32LE","read_file","readFileSync","read","init_cfb","cfb","root","CLSID","seed_cfb","nm","find","rebuild_cfb","gc","_file","HEADER_CLSID","sort","elt","_write","_opts","fileType","write_zip","mini_size","fat_size","mini_cnt","mfat_cnt","fat_base","fat_cnt","difat_cnt","HEADER_SIG","chainit","consts","DIFSECT","FATSECT","_nm","UCFullPaths","UCPaths","UCPath","_zlib","MAXREGSECT","FREESECT","HEADER_MINOR_VERSION","MAXREGSID","NOSTREAM","EntryTypes","write_file","writeFileSync","write","use_zlib","zlib","InflateRaw","InflRaw","_processChunk","_finishFlushFlag","bytesRead","console","message","_inflateRawSync","usz","_inflate","_deflateRawSync","deflateRawSync","_deflate","CLEN_ORDER","LEN_LN","DST_LN","bit_swap_8","use_typed_arrays","bitswap8","bit_swap_n","b","rev","read_bits_2","bl","read_bits_3","read_bits_4","read_bits_5","read_bits_7","read_bits_n","realloc","copy","set","zero_fill_array","_deflateRaw","boff","off","build_tree","clens","cmap","MAX","maxlen","ccode","bl_count","Uint16Array","ctree","cleni","fix_lmap","fix_dmap","dlens","dyn_lmap","dyn_dmap","dyn_cmap","dyn_len_1","dyn_len_2","dyn","_HLIT","_HDIST","_HCLEN","next_code","hcodes","h1","h2","inflate","outbuf","woff","OL","max_len_1","max_len_2","bits","code","len_eb","dst_eb","dst","warn_or_throw","wrn","msg","fcnt","start_cd","csz","efsz","fcsz","EF","parse_local_file","meth","crc32","_csz","_usz","ef","_crc32","cfb_add","unsafe","cdirs","compression","desc","fp","fi","crcs","sz_cd","namebuf","cfb_new","fpath","cfb_gc","cfb_del","splice","cfb_mov","old_name","new_name","writeFile","ReadShift","CheckField","_inflateRaw","blobify","write_dl","fname","utf8write","IE_SaveFile","Blob","msSaveBlob","saveAs","URL","createObjectURL","downloads","download","revokeObjectURL","setTimeout","click","removeChild","$","File","Folder","open","encoding","close","read_binary","infile","ks","o2","evert_key","K","evert","evert_num","evert_arr","datenum","numdate","setTime","parse_isodur","sec","good_pd_date","good_pd","parseDate","fixdate","cc2str","dup","fuzzynum","wt","fuzzydate","NaN","getYear","jszip","safe_split_regex","split_regex","re","getdatastr","asNodeBuffer","asBinary","_data","getContent","getdatabin","getdata","safegetzipfile","zip","g","getzipfile","getzipdata","safe","getzipstr","zipentries","resolve_path","result","step","JSZipSync","XML_HEADER","attregexg","tagregex","nsregex","nsregex2","parsexmltag","skip_root","z","eq","quot","trim","strip_ns","encodings","rencoding","unescapexml","encregex","coderegex","text","decregex","charegex","escapexml","escapexmltag","htmlcharegex","escapehtml","escapexlml","xlml_fixstr","entregex","entrepl","xlml_unfixstr","parsexmlbool","utf8read","orig","utf8readb","ww","corpus","utf8readc","matchtag","mtcache","htmldecode","entities","vtregex","vt_cache","vtvregex","vtmregex","parseVector","baseType","WTF","wtregex","writetag","wxt_helper","writextag","write_w3cdtf","toISOString","write_vt","XMLNS","XLMLNS","read_double_le","Infinity","write_double_le","bs","av","isFinite","LN2","__lpp4","___lpp4","___toBuffer","__readUInt16LE","___utf16le","__hexlify","___hexlify","__utf8","__readUInt8","___utf8","__lpstr","___lpstr","__cpstr","___cpstr","__lpwstr","___lpwstr","__double","___double","__8lpp4","___8lpp4","is_buf","isBuffer","readUInt32LE","readDoubleLE","__readInt16LE","__readInt32BE","oI","oR","loc","oo","lens","__writeUInt32LE","__writeInt32LE","__writeUInt16LE","WriteShift","end","hexstr","fld","parsenoop","recordhopper","cb","tmpbyte","cntbyte","RT","XLSBRecordEnum","buf_array","blksz","newblk","curbuf","endbuf","next","_bufs","write_record","ba","XLSBRE","shift_cell_xls","cell","cRel","rRel","biff","shift_range_xls","range","encode_cell_xls","encode_cell","fix_col","fix_row","encode_range_xls","encode_row","encode_col","OFFCRYPTO","make_offcrypto","_crypto","crypto","rc4","md5","hex","createHash","update","digest","decode_row","rowstr","unfix_row","row","cstr","decode_col","colstr","unfix_col","col","split_cell","decode_cell","splt","decode_range","encode_range","cs","ce","safe_decode_range","safe_format_cell","XF","numFmtId","format_cell","sheet_to_workbook","sheet","sheets","SheetNames","Sheets","sheet_add_aoa","_ws","ws","_R","_C","origin","_origin","_range","__R","__C","sheetStubs","cellDates","cell_ref","aoa_to_sheet","write_UInt32LE","parse_XLWideString","cchCharacters","write_XLWideString","_null","parse_StrRun","ich","ifnt","write_StrRun","run","parse_RichStr","rgsStrRun","dwSizeStrRun","write_RichStr","parse_BrtCommentText","write_BrtCommentText","parse_XLSBCell","iStyleRef","write_XLSBCell","parse_XLSBCodeName","write_XLSBCodeName","parse_XLNullableWideString","write_XLNullableWideString","parse_XLNameWideString","parse_RelID","write_RelID","parse_RkNumber","fX100","fInt","RK","write_RkNumber","d100","parse_RfX","write_RfX","parse_UncheckedRfX","write_UncheckedRfX","parse_Xnum","write_Xnum","BErr","RBErr","parse_BrtColor","xColorType","index","nTS","bR","bG","bB","auto","icv","XLSIcv","rgb","rgb2Hex","theme","tint","write_BrtColor","parse_FontFlags","fItalic","fStrikeout","fOutline","fShadow","fCondense","fExtend","write_FontFlags","font","grbit","italic","strike","shadow","condense","extend","parse_ClipboardFormatOrString","ClipFmt","3","8","14","parse_ClipboardFormatOrAnsiString","parse_ClipboardFormatOrUnicodeString","VT_I2","VT_I4","VT_BOOL","VT_VARIANT","VT_UI4","VT_LPSTR","VT_FILETIME","VT_BLOB","VT_CF","VT_VECTOR","VT_STRING","VT_USTR","VT_CUSTOM","DocSummaryPIDDSI","SummaryPIDSI","SpecialProperties","DocSummaryRE","SummaryRE","CountryEnum","XLSFillPattern","rgbify","ct2type","CT_LIST","workbooks","xlsx","xlsm","xlsb","xlam","xltx","strs","comments","charts","dialogs","macros","styles","type2ct","new_ct","rels","links","coreprops","extprops","custprops","themes","calcchains","vba","drawings","TODO","xmlns","parse_ct","ctext","Extension","ContentType","PartName","CT","calcchain","sst","CTYPE_XML_ROOT","xsd","xsi","CTYPE_DEFAULTS","write_ct","f1","bookType","f2","f3","RELS","WB","SHEET","HLINK","VML","VBA","get_rels_path","parse_rels","currentFilePath","hash","rel","Type","Target","Id","TargetMode","canonictarget","RELS_ROOT","write_rels","rid","add_rels","rId","relobj","CT_ODS","parse_manifest","Rn","FEtag","xlml_normalize","xlmlregex","write_manifest","manifest","write_rdf_type","write_rdf_has","write_rdf","rdf","write_meta_ods","CORE_PROPS","CORE_PROPS_REGEX","parse_core_props","cur","CORE_PROPS_XML_ROOT","dc","dcterms","dcmitype","cp_doit","write_core_props","Props","CreatedDate","ModifiedDate","EXT_PROPS","PseudoPropsPairs","load_props_pairs","HP","TOP","hp","parts","Worksheets","NamedRanges","DefinedNames","Chartsheets","ChartNames","parse_ext_props","HeadingPairs","TitlesOfParts","EXT_PROPS_XML_ROOT","vt","write_ext_props","W","Application","CUST_PROPS","custregex","parse_cust_props","toks","warn","CUST_PROPS_XML_ROOT","write_cust_props","pid","XLMLDocPropsMap","Title","Subject","Author","Keywords","Comments","LastAuthor","RevNumber","LastPrinted","Category","Manager","Company","AppVersion","ContentStatus","Identifier","Language","evert_XLMLDPM","xlml_set_prop","xlml_write_docprops","xlml_write_custprops","Custprops","BLACKLIST","parse_FILETIME","dwLowDateTime","dwHighDateTime","write_FILETIME","parse_lpstr","pad","parse_lpwstr","parse_VtStringBase","stringType","parse_VtString","parse_VtUnalignedString","parse_VtVecUnalignedLpstrValue","ret","parse_VtVecUnalignedLpstr","parse_VtHeadingPair","headingString","parse_TypedPropertyValue","headerParts","parse_VtVecHeadingPairValue","cElements","parse_VtVecHeadingPair","parse_dictionary","CodePage","dict","parse_BLOB","bytes","parse_ClipboardData","Size","write_TypedPropertyValue","parse_PropertySet","PIDSI","start_addr","NumProps","Dictionary","DictObj","PropID","Offset","PropH","fail","piddsi","oldpos","parsebool","XLSPSSkip","guess_property_type","write_PropertySet","entries","RE","hdr","piao","prop","pr","pio","pinfo","parse_PropertySetStream","NumSets","FMTID0","FMTID1","Offset0","Offset1","SystemIdentifier","PSet1","PSet0","rval","FMTID","write_PropertySetStream","entries2","clsid2","ps0","ps1","parsenoop2","writezeroes","parslurp","writebool","parseuint16","writeuint16","parseuint16a","parse_Bes","write_Bes","parse_ShortXLUnicodeString","cch","fHighByte","parse_XLUnicodeRichExtendedString","cbExtRst","fExtSt","fRichSt","cRun","parse_XLUnicodeStringNoCch","parse_XLUnicodeString","parse_XLUnicodeString2","write_XLUnicodeString","parse_ControlInfo","accel","parse_URLMoniker","extra","parse_FileMoniker","ansiPath","unicodePath","parse_HyperlinkMoniker","parse_HyperlinkString","parse_Hyperlink","sVer","displayName","targetFrameName","moniker","oleMoniker","guid","fileTime","Loc","Tooltip","write_Hyperlink","hl","F","parse_LongRGBA","parse_LongRGB","parse_XLSCell","rw","ixfe","write_XLSCell","parse_frtHeader","rt","parse_OptXLUnicodeString","parse_XTI","iSupBook","itabFirst","itabLast","parse_RkRec","parse_AddinUdf","udfName","parse_Ref8U","rwFirst","rwLast","colFirst","colLast","write_Ref8U","parse_RefU","parse_Ref","parse_FtCmo","ot","id","parse_FtNts","fSharedNote","parse_FtCf","cf","parse_FtSkip","FtTab","parse_FtArray","fts","ft","parse_BOF","BIFFVer","write_BOF","wb","parse_InterfaceHdr","parse_WriteAccess","UserName","write_WriteAccess","b8","parse_WsBool","fDialog","parse_BoundSheet8","hidden","hs","write_BoundSheet8","parse_SST","ucnt","Count","Unique","parse_ExtSST","extsst","dsst","parse_Row","miyRw","level","hpt","parse_ForceFullCalculation","fullcalc","parse_RecalcId","parse_DefaultRowHeight","fl","Unsynced","DyZero","ExAsc","ExDsc","parse_Window1","xWn","yWn","dxWn","dyWn","iTabCur","iTabFirst","ctabSel","wTabRatio","Pos","Dim","Flags","CurTab","FirstTab","Selected","TabRatio","write_Window1","parse_Window2","RTL","write_Window2","parse_Font","dyHeight","write_Font","b5","parse_LabelSst","isst","parse_Label","write_Label","os","parse_Format","fmtstr","write_Format","parse_BIFF2Format","parse_Dimensions","write_Dimensions","parse_RK","rkrec","rknum","parse_MulRk","rkrecs","lastcol","parse_MulBlank","ixfes","parse_CellStyleXF","patternType","cellStyles","alc","fWrap","alcV","fJustLast","trot","cIndent","fShrinkToFit","iReadOrder","fAtrNum","fAtrFnt","fAtrAlc","fAtrBdr","fAtrPat","fAtrProt","dgLeft","dgRight","dgTop","dgBottom","icvLeft","icvRight","grbitDiag","icvTop","icvBottom","icvDiag","dgDiag","icvFore","icvBack","fsxButton","parse_XF","fStyle","write_XF","ixfeP","parse_Guts","write_Guts","guts","parse_BoolErr","write_BoolErr","parse_Number","xnum","write_Number","parse_XLHeaderFooter","parse_SupBook","ctab","sbcch","virtPath","rgst","parse_ExternName","fBuiltIn","fWantAdvise","fWantPict","fOle","fOleLink","fIcon","Name","XLSLblBuiltIn","parse_Lbl","chKey","cce","itab","npflen","rgce","parse_NameParsedFormula","parse_ExternSheet","parse_BIFF5ExternSheet","parse_NameCmt","cchName","cchComment","comment","parse_ShrFmla","cUse","parse_SharedParsedFormula","parse_Array","parse_ArrayParsedFormula","parse_MTRSettings","fMTREnabled","fUserSetThreadCount","cUserThreadCount","parse_NoteSh","idObj","stAuthor","parse_Note","parse_MergeCells","merges","cmcs","write_MergeCells","parse_Obj","parse_BIFF5Obj","cmo","parse_BIFF5OT","parse_TxO","texts","lastobj","cchText","parse_HLink","hlink","write_HLink","parse_HLinkTooltip","wzTooltip","write_HLinkTooltip","TT","parse_Country","write_Country","parse_ClrtClient","ccv","parse_Palette","parse_XFCRC","cxfs","crc","parse_ColInfo","coldx","parse_Setup","footer","parse_ShtProps","area","write_RRTabId","parse_Blank","parse_Scl","parse_String","parse_ImData","env","lcb","parse_BIFF2STR","parse_BIFF2NUM","num","write_BIFF2NUM","write_BIFF2Cell","parse_BIFF2INT","write_BIFF2INT","parse_BIFF2STRING","parse_BIFF2FONTXTRA","parse_RString","DBF","dbf_codepage_map","dbf_reverse_map","dbf_to_aoa","memo","vfp","l7","nrow","fpos","rlen","current_cp","fields","field","hend","sheetRows","dbf_to_sheet","dbf_to_workbook","_RLEN","sheet_to_dbf","codepage","aoa","sheet_to_json","headers","hcnt","coltypes","guess","_guess","hf","_f","hb","rout","_s","to_workbook","to_sheet","from_sheet","SYLK","sylk_escapes","AA","BA","CA","DA","HA","JA","AE","BE","CE","HE","AI","BI","CI","HI","AO","BO","CO","DO","HO","AU","BU","CU","HU","Aa","Ba","Ca","Da","Ha","Ja","Ae","Be","Ce","He","Ai","Bi","Ci","Hi","Ao","Bo","Co","Do","Ho","Au","Bu","Cu","Hu","KC","Kc","DN","Dn","Hy","5","6","7","sylk_char_regex","sylk_char_fn","_","decode_sylk_char","newcc","sylk_to_aoa","sylk_to_aoa_str","records","rj","formats","next_cell_format","sht","rowinfo","colinfo","cw","Mval","rstr","record","C_seen_K","C_seen_X","formula","rc_to_a1","F_seen","wch","process_col","hpx","pt2px","sylk_to_sheet","aoasht","sylk_to_workbook","write_ws_cell_sylk","a1_to_rc","write_ws_cols_sylk","cols","rec","wpx","width2px","px2char","write_ws_rows_sylk","rows","px2pt","sheet_to_sylk","preamble","RS","coord","DIF","dif_to_aoa","dif_to_aoa_str","metadata","dif_to_sheet","dif_to_workbook","sheet_to_dif","push_field","topic","push_value","ETH","eth_to_aoa","eth_to_sheet","eth_to_workbook","sep","meta","sheet_to_eth_data","sheet_to_eth","PRN","set_text_arr","prn_to_aoa_str","lines","guess_seps","guess_sep_weights","guess_sep","instr","dsv_to_sheet_str","sepcc","_re","finish_cell","fuzzyfmla","cellText","cellNF","prn_to_sheet_str","prn_to_sheet","firstbyte","prn_to_workbook","sheet_to_prn","read_wb_ID","OLD_WTF","WK_","lotushopper","Enum","WK1Enum","lotus_to_workbook","lotus_to_workbook_buf","sidx","snames","refguess","WK3Enum","qpro","vers","parse_RANGE","parse_cell","parse_LABEL","parse_INTEGER","parse_NUMBER","parse_FORMULA","parse_cell_3","parse_LABEL_16","parse_NUMBER_18","parse_NUMBER_17","v1","v2","parse_FORMULA_19","parse_NUMBER_25","parse_NUMBER_27","parse_FORMULA_28","parse_rs","tregex","rpregex","rregex","rend","nlregex","parse_rpr","rpr","intro","outro","pass","uval","family","parse_r","terms","rs","sitregex","sirregex","sirphregex","parse_si","html","cellHTML","sstr0","sstr1","sstr2","parse_sst_xml","count","uniqueCount","SST","straywsregex","write_sst_xml","bookSST","main","sitag","parse_BrtBeginSst","parse_sst_bin","R_n","write_BrtBeginSst","write_BrtSSTItem","write_sst_bin","_JS2ANSI","parse_CRYPTOVersion","Major","Minor","parse_DataSpaceVersionInfo","U","parse_DataSpaceMapEntry","comps","parse_DataSpaceMap","parse_DataSpaceDefinition","parse_TransformInfoHeader","parse_Primary","ename","cmode","parse_EncryptionHeader","AlgID","valid","AlgIDHash","KeySize","ProviderType","CSPName","parse_EncryptionVerifier","Salt","Verifier","VerifierHash","parse_EncryptionInfo","parse_EncInfoStd","parse_EncInfoExt","parse_EncInfoAgl","verifier","KeyData","xml","encryptedHmacKey","encryptedHmacValue","encs","uri","parse_RC4CryptoHeader","EncryptionVersionInfo","EncryptionHeader","EncryptionVerifier","parse_RC4Header","EncryptedVerifier","EncryptedVerifierHash","crypto_CreatePasswordVerifier_Method1","Password","PasswordArray","PasswordByte","Intermediate1","Intermediate2","Intermediate3","PasswordDecoded","crypto_CreateXorArray_Method1","PadArray","InitialCode","XorMatrix","Ror","Byte","XorRor","byte1","byte2","CreateXorKey_Method1","XorKey","CurrentElement","Char","password","Temp","PasswordLastChar","PadIndex","Index","ObfuscationArray","crypto_DecryptData_Method1","Data","XorArrayIndex","XorArray","Value","crypto_MakeXorDecryptor","parse_XORObfuscation","verificationBytes","insitu","parse_FilePassHeader","Info","parse_FilePass","RTF","rtf_to_sheet","rtf_to_sheet_str","rtf_to_workbook","sheet_to_rtf","hex2RGB","rgb2HSL","G","H6","L2","hsl2RGB","hsl","X","h6","rgb_tint","DEF_MDW","MAX_MDW","MIN_MDW","MDW","px","char2width","chr","cycle_width","collw","find_mdw_colw","delta","_MDW","coll","customWidth","DEF_PPI","PPI","pt","XLMLPatternTypeMap","parse_borders","Borders","border","diagonalUp","diagonalDown","parse_fills","Fills","bgColor","indexed","fgColor","parse_fonts","Fonts","bold","underline","vertAlign","scheme","themeElements","clrScheme","parse_numFmts","NumberFmt","formatCode","write_numFmts","NF","cellXF_uint","cellXF_bool","parse_cellXfs","xf","CellXf","alignment","vertical","horizontal","textRotation","indent","wrapText","write_cellXfs","cellXfs","parse_sty_xml","numFmtRegex","cellXfRegex","fillsRegex","fontsRegex","bordersRegex","STYLES_XML_ROOT","write_sty_xml","parse_BrtFmt","stFmtCode","write_BrtFmt","parse_BrtFont","bls","bCharSet","charset","write_BrtFont","sss","STY","XLSBFillPTNames","rev_XLSBFillPTNames","parse_BrtFill","write_BrtFill","fls","parse_BrtXF","ixfeParent","ifmt","write_BrtXF","write_Blxf","parse_BrtBorder","write_BrtBorder","write_BrtStyle","xfId","builtinId","write_BrtBeginTableStyles","defTableStyle","defPivotStyle","parse_sty_bin","write_FMTS_bin","write_FONTS_bin","write_FILLS_bin","write_BORDERS_bin","write_CELLSTYLEXFS_bin","fontId","fillId","borderId","write_CELLXFS_bin","write_STYLES_bin","write_DXFS_bin","write_TABLESTYLES_bin","write_COLORPALETTE_bin","write_sty_bin","parse_clrScheme","lastClr","parse_fontScheme","parse_fmtScheme","THEME","clrsregex","fntsregex","fmtsregex","parse_themeElements","themeltregex","parse_theme_xml","write_theme","Themes","themeXLSX","parse_Theme","dwThemeVersion","themeXML","parse_ColorTheme","parse_FullColorExt","xclrType","nTintShade","xclrValue","parse_IcvXF","parse_XFExtGradient","parse_ExtProp","extType","parse_XFExt","cexts","ext","update_xfext","xfext","xfe","parse_cc_xml","parse_BrtCalcChainItem$","parse_cc_bin","parse_xlink_xml","parse_xlink_bin","parse_drawing","IMG","DRAW","_shapeid","write_comments_vml","csize","bbox","joinstyle","gradientshapeok","coordsize","fillcolor","strokecolor","on","parse_comments","dirComments","sheetRels","canonicalpath","parse_cmnt","sheetNames","sheetName","insertCommentsIntoSheet","encoded","author","parse_comments_xml","authors","commentList","authtag","cmnttag","cm","authorId","textMatch","CMNT","CMNT_XML_ROOT","write_comments_xml","iauthor","parse_BrtBeginComment","rfx","write_BrtBeginComment","parse_BrtCommentAuthor","write_BrtCommentAuthor","parse_comments_bin","write_comments_bin","CT_VBA","make_vba_xls","newcfb","newpath","fill_vba_xls","VBAFMTS","parse_ds_bin","parse_ds_xml","parse_ms_bin","parse_ms_xml","DS","MS","rcregex","rcbase","rcfunc","$4","$5","fstr","crefregex","$0","shift_formula_str","shift_formula_xlsx","_xlfn","parseread1","parse_ColRelU","parse_RgceArea","parse_RgceArea_BIFF2","parse_RgceAreaRel","parse_RgceLoc","parse_RgceLoc_BIFF2","parse_RgceElfLoc","fQuoted","parse_RgceLocRel","parse_RgceLocRel_BIFF2","cl","rl","parse_PtgArea","parse_PtgArea3d","ixti","parse_PtgAreaErr","parse_PtgAreaErr3d","parse_PtgAreaN","parse_PtgArray","parse_PtgAttrBaxcel","bitSemi","bitBaxcel","parse_PtgAttrChoose","parse_PtgAttrGoto","bitGoto","parse_PtgAttrIf","bitIf","parse_PtgAttrIfError","parse_PtgAttrSemi","parse_PtgAttrSpaceType","parse_PtgAttrSpace","parse_PtgAttrSpaceSemi","parse_PtgRef","parse_PtgRefN","parse_PtgRef3d","parse_PtgFunc","iftab","FtabArgc","Ftab","parse_PtgFuncVar","cparams","tab","parsetab","Cetab","parse_PtgAttrSum","parse_PtgExp","parse_PtgErr","parse_PtgInt","parse_PtgBool","parse_PtgNum","parse_PtgStr","parse_SerAr","parse_PtgExtraMem","parse_PtgExtraArray","parse_PtgName","nameindex","parse_PtgNameX","parse_PtgNameX_BIFF5","parse_PtgMemArea","parse_PtgMemFunc","parse_PtgRefErr","parse_PtgRefErr3d","parse_PtgMemErr","parse_PtgMemNoMem","parse_PtgTbl","parse_PtgElfLoc","parse_PtgElfNoop","parse_PtgElfCol","parse_PtgElfColS","parse_PtgElfColSV","parse_PtgElfColV","parse_PtgElfLel","parse_PtgElfRadical","parse_PtgElfRadicalLel","parse_PtgElfRadicalS","parse_PtgElfRw","parse_PtgElfRwV","PtgListRT","parse_PtgList","coltype","parse_PtgSxName","parse_PtgSheet","parse_PtgEndSheet","parse_PtgMemAreaN","parse_PtgMemNoMemN","parse_PtgAttrNoop","PtgTypes","PtgDupes","Ptg18","Ptg19","parse_RgbExtra","parse_Rgce","ptgs","stringify_array","PtgBinOp","PtgAdd","PtgConcat","PtgDiv","PtgEq","PtgGe","PtgGt","PtgLe","PtgLt","PtgMul","PtgNe","PtgPower","PtgSub","formula_quote_sheet_name","sname","get_ixti_raw","supbooks","XTI","SID","get_ixti","stringify_formula","nameidx","last_sp","sp","fflen","argc","func","args","lbl","names","XLSXFutureFunctions","externbook","bookidx","ixtidata","lp","rp","sharedf","parsedf","fnd","arrayf","PtgNonDisp","_left","rgcb","parse_XLSCellParsedFormula","parse_FormulaValue","parse_Formula","cbf","shared","parse_XLSBParsedFormula","parse_XLSBArrayParsedFormula","parse_XLSBCellParsedFormula","parse_XLSBNameParsedFormula","parse_XLSBSharedParsedFormula","ods_to_csf_formula","csf_to_ods_formula","ods_to_csf_3D","csf_to_ods_3D","_ssfopts","WS","browser_has_Map","Map","get_sst_id","revarr","col_obj_w","default_margins","margins","mode","defs","bottom","get_cell_style","revssf","ssf","applyNumberFormat","safe_format","fmtid","fillid","raw_rgb","check_ws","parse_ws_xml_dim","mergecregex","sheetdataregex","hlinkregex","dimregex","colregex","afregex","marginregex","sheetprregex","svsregex","parse_ws_xml","data1","data2","mtch","sheetPr","parse_ws_xml_sheetpr","ridx","svs","parse_ws_xml_sheetviews","columns","parse_ws_xml_cols","parse_ws_xml_data","afilter","parse_ws_xml_autofilter","_merge","parse_ws_xml_hlinks","parse_ws_xml_margins","tmpref","write_ws_xml_merges","codeName","CodeName","write_ws_xml_protection","deffalse","deftrue","Rel","tooltip","rng","margin","write_ws_xml_margins","seencol","coli","colm","colM","write_ws_xml_cols","write_ws_xml_autofilter","Workbook","Names","Sheet","Ref","sviewregex","rightToLeft","Views","write_ws_xml_sheetviews","sview","workbookViewId","write_ws_xml_cell","oldt","oldv","Strings","revStrings","cellregex","rowregex","isregex","refregex","match_v","match_f","sdata","sstr","ftag","cells","cref","tagr","tagc","do_format","rowobj","rowrite","marr","marrlen","xlen","ht","outlineLevel","cellFormula","si","_tag","_r","write_ws_xml_data","_cell","customHeight","WS_XML_ROOT","write_ws_xml","rdata","vbaraw","cname","sheetFormat","defaultRowHeight","baseColWidth","outlineLevelRow","relc","ignoreEC","numberStoredAsText","sqref","parse_BrtRowHdr","write_BrtRowHdr","ncolspan","lcs","caddr","first","last","write_row_header","parse_BrtWsDim","write_BrtWsDim","parse_BrtWsFmtInfo","parse_BrtWsProp","write_BrtWsProp","parse_BrtCellBlank","write_BrtCellBlank","ncell","parse_BrtCellBool","fBool","write_BrtCellBool","parse_BrtCellError","bError","parse_BrtCellIsst","write_BrtCellIsst","parse_BrtCellReal","write_BrtCellReal","parse_BrtCellRk","write_BrtCellRk","parse_BrtCellSt","write_BrtCellSt","parse_BrtFmlaBool","parse_BrtFmlaError","parse_BrtFmlaNum","parse_BrtFmlaString","parse_BrtMergeCell","write_BrtMergeCell","write_BrtBeginMergeCells","parse_BrtHLink","relId","display","write_BrtHLink","locidx","parse_BrtArrFmla","fAlwaysCalc","parse_BrtShrFmla","write_BrtColInfo","BrtMarginKeys","parse_BrtMargins","write_BrtMargins","parse_BrtBeginWsView","write_BrtBeginWsView","write_BrtCellIgnoreEC","write_BrtSheetProtection","parse_ws_bin","ai","af","aii","_d","write_ws_bin_cell","write_CELLTABLE","cap","write_MERGECELLS","write_COLINFOS","write_IGNOREECS","write_HLINKS","write_LEGACYDRAWING","write_AUTOFILTER","write_WSVIEWS2","write_WSFMTINFO","write_SHEETPROTECT","write_ws_bin","parse_numCache","nf","parse_chart","csheet","nc","cache","CS","parse_cs_xml","parse_BrtCsProp","parse_cs_bin","WBPropsDef","WBViewDef","SheetDef","CalcPrDef","push_defaults_array","push_defaults","parse_wb_defaults","WBProps","CalcPr","WBView","safe1904","badchars","check_ws_name","_good","check_wb_names","N","codes","cn","check_wb","wbnsregex","parse_wb_xml","dname","dnstart","Hidden","Comment","localSheetId","WB_XML_ROOT","write_wb_xml","write_names","workbookPr","sheetId","parse_BrtBundleSh","iTabID","strRelID","write_BrtBundleSh","parse_BrtWbProp","defaultThemeVersion","strName","autoCompressPictures","backupFile","checkCompatibility","filterPrivacy","hidePivotFieldList","promptedSolutions","publishItems","refreshAllConnections","saveExternalLinkValues","showBorderUnselectedTables","showInkAnnotation","showObjects","showPivotChartFilter","updateLinks","write_BrtWbProp","parse_BrtFRTArchID$","ArchID","parse_BrtName","Ptg","parse_wb_bin","write_BUNDLESHS","viz","write_BrtFileVersion","write_BrtBookView","write_BOOKVIEWS","vistab","write_wb_bin","parse_wb","parse_ws","parse_cs","parse_ms","parse_ds","parse_sty","parse_theme","parse_sst","parse_cc","parse_xlink","write_wb","write_ws","write_sty","write_sst","write_cmnt","attregexg2","attregex2","xlml_parsexmltag","words","xlml_parsexmltagobj","xlml_format","xlml_set_custprop","oval","safe_format_xlml","process_style_xlml","stag","Interior","I","Pattern","ID","parse_xlml_data","csty","sid","StyleID","interiors","Parent","UTC","Formula","ArrayRange","xlml_clean_comment","parse_xlml_xml","opening","ishtml","HTML_","tmp","sheetnames","cursheet","sheetname","dtag","didx","fidx","pidx","cstys","wsprops","lastIndex","HRef","HRefScreenTip","MergeAcross","MergeDown","cma","cmd","AutoFitHeight","Height","Format","ssfidx","Width","_col","Span","_NamedRange","_DefinedName","RefersTo","AutoFilter","Range","parse_fods","seen","Margin","pagemargins","Top","Left","Right","Bottom","bookSheets","bookProps","parse_xlml","fix_read_opts","write_props_xlml","write_wb_xlml","write_sty_xlml","write_name_xlml","write_names_xlml","write_ws_xlml_names","write_ws_xlml_wsopts","objects","scenarios","selectLockedCells","selectUnlockedCells","write_ws_xlml_comment","write_ws_xlml_cell","attr","mi","_v","write_ws_xlml_row","write_ws_xlml_table","skip","write_ws_xlml","write_xlml","parse_compobj","AnsiUserType","AnsiClipboardFormat","Reserved1","UnicodeClipboardFormat","Reserved2","slurp","XLSRecordEnum","ll","safe_format_xf","make_cell","parse_workbook","lastcell","cmnt","rngC","rngR","temp_val","country","Directory","last_formula","cur_sheet","Preamble","last_cell","cell_valid","XFs","palette","get_rgb","process_cell_style","line","xfd","addcell","file_depth","afi","rrtabid","lastuser","winlocked","wtf","last_lbl","last_Rn","BIFF2Fmt","BIFF2FmtTable","FilterDatabases","seen_codepage","RecordType","Date1904","WriteProtect","CalcRefMode","FullCalc","ExternCount","tmpri","fakebs8","_fr","_fc","_fe","_arraystart","_j","_ixfe","b4idx","b2idx","TxO","ImData","noteobj","Encryption","Metadata","Country","PSCLSID","SI","DSI","UDI","parse_xls_props","DocSummary","Summary","write_xls_props","Keys","DSEntries","SEntries","CEntries","CEntries2","parse_xlscfb","CompObj","WorkbookP","bookVBA","bookFiles","write_xlscfb","wbpath","write_biff_buf","XLSRE","write_biff_rec","write_BIFF2BERR","write_BIFF2LABEL","write_ws_biff2_cell","write_ws_biff2","write_biff2_buf","write_FONTS_biff8","write_FMTS_biff8","write_FEAT","write_CELLXFS_biff8","write_ws_biff8_hlinks","HL","write_ws_biff8_cell","write_ws_biff8","_WB","_sheet","MAX_ROWS","write_biff8_global","_sheets","_wb","blen","write_biff8_buf","html_to_sheet","mtch2","hd","colspan","rowspan","_t","html_to_book","make_html_row","editable","make_html_preamble","_BEGIN","_END","sheet_to_html","_row","BEGIN","END","_preamble","parse_dom_table","getElementsByTagName","midx","is_dom_element_hidden","elts","innerHTML","getAttribute","table_to_book","element","get_computed_style","get_get_computed_style_function","getPropertyValue","ownerDocument","defaultView","parse_content_xml","parse_text_p","fixed","number_formats","day","month","year","hours","minutes","seconds","era","quarter","sheetag","rowtag","textptag","NFtag","ctag","textp","textpidx","textR","row_ol","number_format_map","mrange","mR","mC","rowpeat","colpeat","atag","_Ref","creator","creatoridx","isstub","intable","rptR","rpt","nrange","ptp","parse_ods","ods","write_styles_ods","write_content_ods","write_text_p","null_cell_xml","covered_cell_xml","_Fref","text_p","_tgt","write_automatic_styles_ods","fods","write_ods","write_sheet_index","write_obj_str","write_htm_str","write_csv_str","sheet_to_csv","write_slk_str","write_dif_str","write_prn_str","write_rtf_str","write_txt_str","sheet_to_txt","write_dbf_buf","write_eth_str","fix_opts_func","fix_write_opts","get_sheet_type","safe_parse_wbrels","wbrels","safe_parse_sheet","relsPath","stype","dfile","drelsp","draw","chartp","crelsp","strip_front_slash","binname","dir","link","propdata","deps","bookDeps","wbsheets","wbext","wbrelsi","wbrelsfile","nmode","Deps","Styles","bin","parse_xlsxcfb","dsm","seds","einfo","decrypt_agile","decrypt_std76","foo","vbafmt","_sn","_i","wsrels","_type","need_vml","rId1","read_cfb","read_zip","base64","read_plaintext","read_plaintext_raw","read_utf16","bstrify","read_prn","readSync","ab","vu","write_cfb_ctr","write_zip_type","oopts","generate","encrypt_agile","write_cfb_type","write_string_type","bom","write_stxt_type","write_binary_type","writeSync","resolve_book_type","_BT","writeFileAsync","_cb","Function","make_json_row","defval","isempty","enumerable","__rowNum__","outi","counter","CC","blankrows","qreg","make_csv_row","FS","txt","endregex","skipHidden","strip","sheet_to_formulae","cmds","sheet_add_json","js","skipHeader","JS","json_to_sheet","get_formulae","make_csv","make_json","make_formulae","table_to_sheet","sheet_to_slk","sheet_to_row_object_array","add_consts","get_default","ws_get_cell_stub","wb_sheet_idx","sh","book_new","book_append_sheet","book_set_sheet_visibility","vis","cell_set_number_format","cell_set_hyperlink","cell_set_internal_link","cell_add_comment","sheet_set_array_formula","rngstr","Readable","write_csv_stream","stream","BOM","_read","write_html_stream","write_json_stream","objectMode","to_json","to_html","to_csv","readFile","Deno","v8","currentState","preventBodyScroll","preventScroll","isCallable","CONFIGURABLE_FUNCTION_NAME","CONFIGURABLE","inspectSource","InternalStateModule","enforceInternalState","enforce","getInternalState","stringSlice","CONFIGURABLE_LENGTH","TEMPLATE","makeBuiltIn","getter","setter","configurable","arity","constructor","writable","source","toObject","lengthOfArrayLike","setArrayLength","doesNotExceedSafeInteger","INCORRECT_TO_LENGTH","properErrorOnNonWritableLength","TypeError","FORCED","proto","forced","item","argCount","DO_NOT_EXPORT_JSZIP","require","_dereq_","_keyStr","utf8","chr2","chr3","enc1","enc2","enc3","enc4","output","CompressedObject","compressedSize","uncompressedSize","compressionMethod","compressedContent","getCompressedContent","STORE","magic","compress","uncompress","compressInputType","uncompressInputType","DEFLATE","4","getTypeOf","iTop","DataReader","checkOffset","checkIndex","newIndex","setIndex","byteAt","readInt","readString","transformTo","readData","lastIndexOfSignature","sig","readDate","dostime","binary","createFolders","string2binary","string2Uint8Array","uint8Array2String","array","string2Blob","buffer","arrayBuffer2Blob","outputType","checkSupport","MAX_VALUE_16BITS","MAX_VALUE_32BITS","pretty","findCompression","isRegExp","object","USE_TYPEDARRAY","Uint32Array","pako","deflateRaw","inflateRaw","9","newObj","support","compressions","10","ZipEntries","zipEntries","fileName","decompressed","optimizedBinaryString","fileComment","zipComment","11","12","Uint8ArrayReader","NodeBufferReader","13","signature","nodeBuffer","StringWriter","Uint8ArrayWriter","getRawData","getBinaryData","nodebuffer","dataToString","asUTF8","utf8decode","utf8encode","ZipObject","_initialMetadata","asText","asUint8Array","asArrayBuffer","decToHex","prepareFileAttrs","fileAdd","parent","dataType","parentFolder","folderAdd","lastSlash","generateCompressedObjectFrom","generateZipParts","compressedObject","dosTime","dosDate","utfEncodedFileName","utfEncodedComment","useUTF8ForFileName","useUTF8ForComment","extraFields","unicodePathExtraField","unicodeCommentExtraField","fileRecord","LOCAL_FILE_HEADER","dirRecord","CENTRAL_FILE_HEADER","search","relativePath","fileClone","regexp","folder","newFolder","kids","writer","zipData","localDirLength","centralDirLength","compressionName","zipPart","dirEnd","CENTRAL_DIRECTORY_END","typeName","append","finalize","string","ZIP64_CENTRAL_DIRECTORY_LOCATOR","ZIP64_CENTRAL_DIRECTORY_END","DATA_DESCRIPTOR","15","StringReader","16","17","arraybuffer","uint8array","Builder","BlobBuilder","WebKitBlobBuilder","MozBlobBuilder","MSBlobBuilder","builder","getBlob","18","sig0","sig1","sig2","sig3","subarray","19","20","_utf8len","string2buf","m_pos","str_len","buf_len","utf8border","buf2string","c_len","utf16buf","applyFromCharCode","chunk","nextBoundary","21","identity","stringToArrayLike","arrayLikeToString","canUseApply","resultStr","arrayLikeToArrayLike","arrayFrom","arrayTo","byteLength","inputType","supported","22","ZipEntry","jszipProto","loadOptions","checkSignature","expectedSignature","reader","readBlockEndOfCentral","diskNumber","diskWithCentralDirStart","centralDirRecordsOnThisDisk","centralDirRecords","centralDirSize","centralDirOffset","zipCommentLength","readBlockZip64EndOfCentral","zip64EndOfCentralSize","versionMadeBy","versionNeeded","zip64ExtensibleData","extraFieldId","extraFieldLength","extraFieldValue","extraDataSize","readBlockZip64EndOfCentralLocator","diskWithZip64CentralDirStart","relativeOffsetEndOfZip64CentralDir","disksCount","readLocalFiles","localHeaderOffset","readLocalPart","handleUTF8","readCentralDir","zip64","readCentralPart","readEndOfCentral","prepareReader","23","isEncrypted","bitFlag","useUTF8","prepareCompressedContent","previousIndex","compressedFileData","prepareContent","uncompressedFileData","localExtraFieldsLength","fileNameLength","checkCRC32","extraFieldsLength","fileCommentLength","diskNumberStart","internalFileAttributes","externalFileAttributes","readExtraFields","parseZIP64ExtraField","extraReader","upath","findExtraFieldUnicodePath","ucomment","findExtraFieldUnicodeComment","upathField","ucommentField","24","deflate","constants","25","zlib_deflate","strings","zstream","Z_NO_FLUSH","Z_FINISH","Z_OK","Z_STREAM_END","Z_DEFAULT_COMPRESSION","Z_DEFAULT_STRATEGY","Z_DEFLATED","Deflate","chunkSize","windowBits","memLevel","strategy","opt","gzip","err","ended","chunks","strm","avail_out","status","deflateInit2","deflateSetHeader","deflator","_mode","next_in","avail_in","Buf8","next_out","onEnd","onData","buf2binstring","shrinkBuf","deflateEnd","flattenChunks","26","zlib_inflate","gzheader","Inflate","inflateInit2","inflateGetHeader","inflator","next_out_utf8","tail","utf8str","binstring2buf","arraySet","inflateEnd","ungzip","27","TYPED_OK","sources","fnTyped","dest","src_offs","dest_offs","fnUntyped","setTyped","Buf16","Buf32","28","STR_APPLY_OK","STR_APPLY_UIA_OK","__","29","adler32","adler","s1","s2","30","Z_PARTIAL_FLUSH","Z_SYNC_FLUSH","Z_FULL_FLUSH","Z_BLOCK","Z_TREES","Z_NEED_DICT","Z_ERRNO","Z_STREAM_ERROR","Z_DATA_ERROR","Z_BUF_ERROR","Z_NO_COMPRESSION","Z_BEST_SPEED","Z_BEST_COMPRESSION","Z_FILTERED","Z_HUFFMAN_ONLY","Z_RLE","Z_FIXED","Z_BINARY","Z_TEXT","Z_UNKNOWN","31","makeTable","crcTable","32","trees","MAX_MEM_LEVEL","MAX_WBITS","DEF_MEM_LEVEL","LENGTH_CODES","LITERALS","L_CODES","D_CODES","BL_CODES","HEAP_SIZE","MAX_BITS","MIN_MATCH","MAX_MATCH","MIN_LOOKAHEAD","PRESET_DICT","INIT_STATE","EXTRA_STATE","NAME_STATE","COMMENT_STATE","HCRC_STATE","BUSY_STATE","FINISH_STATE","BS_NEED_MORE","BS_BLOCK_DONE","BS_FINISH_STARTED","BS_FINISH_DONE","OS_CODE","errorCode","rank","zero","flush_pending","pending","pending_buf","pending_out","total_out","flush_block_only","_tr_flush_block","block_start","strstart","put_byte","putShortMSB","read_buf","wrap","total_in","longest_match","cur_match","chain_length","max_chain_length","scan","best_len","prev_length","nice_match","limit","w_size","_win","wmask","w_mask","prev","strend","scan_end1","scan_end","good_match","lookahead","match_start","fill_window","more","_w_size","window_size","hash_size","head","insert","ins_h","hash_shift","hash_mask","deflate_stored","flush","max_block_size","pending_buf_size","max_start","deflate_fast","hash_head","bflush","match_length","_tr_tally","max_lazy_match","last_lit","deflate_slow","max_insert","prev_match","match_available","deflate_rle","deflate_huff","configuration_table","Config","good_length","max_lazy","nice_length","max_chain","lm_init","DeflateState","gzhead","gzindex","last_flush","w_bits","hash_bits","dyn_ltree","dyn_dtree","bl_tree","l_desc","d_desc","bl_desc","heap","heap_len","heap_max","depth","l_buf","lit_bufsize","d_buf","opt_len","static_len","bi_buf","bi_valid","deflateResetKeep","data_type","_tr_init","deflateReset","deflateInit","old_flush","beg","hcrc","level_flags","bstate","_tr_align","_tr_stored_block","deflateInfo","33","GZheader","xflags","extra_len","done","34","BAD","TYPE","_in","_out","dmax","wsize","whave","wnext","hold","lcode","dcode","lmask","dmask","here","op","dist","from_source","lencode","distcode","lenbits","distbits","dolen","dodist","sane","35","inflate_fast","inflate_table","CODES","LENS","DISTS","Z_MEM_ERROR","HEAD","FLAGS","TIME","OS","EXLEN","EXTRA","NAME","COMMENT","HCRC","DICTID","DICT","TYPEDO","STORED","COPY_","COPY","TABLE","LENLENS","CODELENS","LEN_","LEN","LENEXT","DIST","DISTEXT","MATCH","LIT","CHECK","LENGTH","DONE","MEM","SYNC","ENOUGH_LENS","ENOUGH_DISTS","DEF_WBITS","ZSWAP32","InflateState","havedict","check","total","wbits","ncode","nlen","ndist","have","work","lendyn","distdyn","back","was","inflateResetKeep","inflateReset","inflateReset2","inflateInit","lenfix","distfix","virgin","fixedtables","sym","updatewindow","put","here_bits","here_op","here_val","last_bits","last_op","last_val","hbuf","order","inf_leave","inflateInfo","36","MAXBITS","lbase","lext","dbase","dext","lens_index","table_index","incr","low","mask","curr","drop","used","huff","base_index","offs","extra_index","37","38","STORED_BLOCK","STATIC_TREES","DYN_TREES","Buf_size","MAX_BL_BITS","END_BLOCK","REP_3_6","REPZ_3_10","REPZ_11_138","extra_lbits","extra_dbits","extra_blbits","bl_order","DIST_CODE_LEN","static_ltree","static_dtree","_dist_code","_length_code","base_length","base_dist","static_l_desc","static_d_desc","static_bl_desc","StaticTreeDesc","static_tree","extra_bits","extra_base","elems","max_length","has_stree","TreeDesc","dyn_tree","stat_desc","max_code","d_code","put_short","send_bits","send_code","tree","bi_reverse","bi_flush","gen_bitlen","xbits","stree","gen_codes","tr_static_init","init_block","bi_windup","copy_block","smaller","_n2","_m2","pqdownheap","compress_block","ltree","dtree","lc","lx","scan_tree","curlen","prevlen","nextlen","max_count","min_count","send_tree","build_bl_tree","max_blindex","send_all_trees","lcodes","dcodes","blcodes","detect_data_type","black_mask","static_init_done","stored_len","opt_lenb","static_lenb","39","ZStream","documentAll","bufIdx","hexBytes","randomBytes","lib","msCrypto","getRandomValues","random","BUFFER_SIZE","isObject","toPositiveInteger","BYTES","isPrototypeOf","$TypeError","Prototype","getBuiltIn","wait","immediate","timeout","debounced","later","clearTimeout","cancel","ieee754","typedArraySupport","__proto__","kMaxLength","TYPED_ARRAY_SUPPORT","createBuffer","encodingOrOffset","fromArrayBuffer","fromString","fromObject","assertSize","checked","isEncoding","actual","fromArrayLike","byteOffset","isnan","SlowBuffer","isView","loweredCase","utf8ToBytes","base64ToBytes","slowToString","hexSlice","utf8Slice","asciiSlice","latin1Slice","base64Slice","utf16leSlice","swap","bidirectionalIndexOf","arrayIndexOf","indexSize","arrLength","valLength","readUInt16BE","foundIndex","found","hexWrite","remaining","strLen","parsed","utf8Write","blitBuffer","asciiWrite","asciiToBytes","latin1Write","base64Write","ucs2Write","utf16leToBytes","fromByteArray","secondByte","thirdByte","fourthByte","tempCodePoint","firstByte","codePoint","bytesPerSequence","decodeCodePointsArray","INSPECT_MAX_BYTES","poolSize","_augment","species","allocUnsafeSlow","_isBuffer","compare","list","swap16","swap32","swap64","equals","inspect","thisStart","thisEnd","thisCopy","targetCopy","toJSON","_arr","MAX_ARGUMENTS_LENGTH","codePoints","toHex","checkInt","objectWriteUInt16","littleEndian","objectWriteUInt32","checkIEEE754","writeFloat","noAssert","writeDouble","newBuf","sliceLen","readUIntLE","readUIntBE","readUInt8","readUInt16LE","readUInt32BE","readIntLE","readIntBE","readInt8","readInt16LE","readInt16BE","readInt32LE","readInt32BE","readFloatLE","readFloatBE","readDoubleBE","writeUIntLE","maxBytes","writeUIntBE","writeUInt8","writeUInt16LE","writeUInt16BE","writeUInt32LE","writeUInt32BE","writeIntLE","sub","writeIntBE","writeInt8","writeInt16LE","writeInt16BE","writeInt32LE","writeInt32BE","writeFloatLE","writeFloatBE","writeDoubleLE","writeDoubleBE","targetStart","INVALID_BASE64_RE","base64clean","stringtrim","units","leadSurrogate","byteArray","hi","lo","toByteArray","ArrayBufferViewCore","$findLastIndex","findLastIndex","aTypedArray","exportTypedArrayMethod","predicate","thisArg","isNullOrUndefined","useFormProps","useFormAttrs","modelValue","useFormInject","formAttrs","formDomProps","child","action","className","useFormInputNameAttr","symmetricDifference","setMethodAcceptSetLike","real","difference","INCORRECT","lookup","revLookup","Arr","getLens","b64","validLen","placeHoldersLen","_byteLength","curByte","tripletToBase64","encodeChunk","uint8","extraBytes","maxChunkLength","len2","isDetached","NodeType","isElement","isShadowRoot","host","shadowRoot","isNativeShadowDom","fixBrowserCompatibilityIssuesInCSS","cssText","escapeImportStatement","rule","statement","layerName","supportsText","media","mediaText","stringifyStylesheet","rules","cssRules","stringifyRule","importStringified","isCSSImportRule","styleSheet","isCSSStyleRule","selectorText","fixSafariColons","cssStringified","regex","Mirror","idNodeMap","nodeMetaMap","WeakMap","_a","getMeta","getId","delete","childNodes","childNode","removeNodeFromMap","oldNode","getNode","createMirror","maskInputValue","maskInputOptions","tagName","maskInputFn","actualType","repeat","ORIGINAL_ATTRIBUTE_NAME","is2DCanvasBlank","canvas","ctx","getContext","getImageData","originalGetImageData","pixelBuffer","some","pixel","getInputType","hasAttribute","extractFileExtension","baseURL","pathname","_id","tagNameRegex","IGNORED_NODE","genId","getValidTagName","HTMLFormElement","processedTagName","extractOrigin","canvasService","canvasCtx","URL_IN_CSS_REF","URL_PROTOCOL_MATCH","URL_WWW_MATCH","DATA_URI","absoluteToStylesheet","quote1","path1","quote2","path2","path3","filePath","maybeQuote","part","SRCSET_NOT_SPACES","SRCSET_COMMAS_OR_SPACES","getAbsoluteSrcsetString","doc","attributeValue","collectCharacters","regEx","chars","absoluteToDoc","descriptorsStr","inParens","isSVGElement","ownerSVGElement","getHref","transformAttribute","ignoreAttribute","_value","_isBlockedElement","blockClass","blockSelector","eIndex","classMatchesRegex","checkAncestors","parentNode","needMaskingText","maskTextClass","maskTextSelector","parentElement","onceIframeLoaded","iframeEl","listener","iframeLoadTimeout","win","contentWindow","readyState","fired","timer","addEventListener","blankUrl","onceStylesheetLoaded","styleSheetLoadTimeout","styleSheetLoaded","serializeNode","mirror","needsMask","inlineStylesheet","maskTextFn","dataURLOptions","inlineImages","recordCanvas","keepIframeSrcFn","newlyAddedElement","rootId","getRootId","DOCUMENT_NODE","compatMode","Document","DOCUMENT_TYPE_NODE","DocumentType","publicId","systemId","serializeElementNode","TEXT_NODE","serializeTextNode","CDATA_SECTION_NODE","CDATA","textContent","COMMENT_NODE","hasNode","docId","parentTagName","isStyle","isScript","nextSibling","previousSibling","Text","needBlock","stylesheet","styleSheets","_cssText","innerText","selected","__context","rr_dataURL","toDataURL","quality","canvasDataURL","blankCanvas","blankCanvasDataURL","image","oldValue","crossOrigin","recordInlineImage","removeEventListener","naturalWidth","naturalHeight","drawImage","currentSrc","removeAttribute","complete","mediaAttributes","rr_mediaState","paused","rr_mediaCurrentTime","currentTime","rr_mediaPlaybackRate","playbackRate","rr_mediaMuted","muted","rr_mediaLoop","loop","rr_mediaVolume","volume","rr_scrollLeft","rr_scrollTop","getBoundingClientRect","rr_width","rr_height","isCustomElement","contentDocument","rr_src","customElements","Element","isSVG","isCustom","lowerIfExists","maybeAttr","slimDOMExcluded","sn","slimDOMOptions","script","as","headFavicon","headMetaDescKeywords","headMetaSocial","property","headMetaRobots","headMetaHttpEquiv","headMetaAuthorship","headMetaVerification","serializeNodeWithId","skipChild","onSerialize","onIframeLoad","onStylesheetLoad","stylesheetLoadTimeout","preserveWhiteSpace","_serializedNode","serializedNode","add","recordChild","isShadowHost","headWhitespace","bypassOptions","childN","serializedChildNode","isShadow","iframeDoc","serializedIframeNode","serializedLinkNode","snapshot","maskAllInputs","slimDOM","email","tel","week","textarea","select","capture","passive","DEPARTED_MIRROR_ACCESS_WARNING","_mirror","throttle","previous","leading","context","trailing","hookSetter","isRevoked","original","patch","replacement","wrapped","defineProperties","__rrweb_original__","Proxy","Reflect","receiver","nowTimestamp","getWindowScroll","_b","_c","_e","getWindowHeight","getWindowWidth","closestElementOfNode","isBlocked","isSerialized","isIgnored","isAncestorRemoved","legacy_isTouchEvent","event","changedTouches","polyfill","NodeList","DOMTokenList","isSerializedIframe","nodeName","isSerializedStylesheet","hasShadowRoot","StyleSheetMirror","styleIDMap","idStyleMap","newId","getShadowHost","shadowHost","getRootNode","DOCUMENT_FRAGMENT_NODE","getRootShadowHost","rootShadowHost","shadowHostInDom","inDom","EventType$1","EventType2","IncrementalSource$1","IncrementalSource2","MouseInteractions","MouseInteractions2","PointerTypes","PointerTypes2","CanvasContext","CanvasContext2","isNodeInLinkedList","DoubleLinkedList","current","__ln","moveKey","parentId","MutationBuffer","frozen","locked","attributeMap","removes","mapRemoves","movedMap","addedSet","Set","movedSet","droppedSet","processMutations","mutations","processMutation","emit","adds","addedIds","addList","getNextId","ns","nextId","pushAdd","addNode","currentN","iframeManager","addIframe","stylesheetManager","trackLinkElement","shadowDomManager","addShadowRoot","childSn","attachIframe","observeAttachShadow","attachLinkElement","isParentRemoved","isAncestorInSet","candidate","tailNode","_node","unhandledNode","removeNode","genTextAreaValueMutation","attribute","diffAsStr","styleDiff","unchangedAsStr","_unchangedStyles","mutationCb","attributeName","setAttribute","unattachedDoc","implementation","createHTMLDocument","old","pname","newValue","newPriority","getPropertyPriority","addedNodes","genAdds","removedNodes","nodeId","deepDelete","processedNodeManager","inOtherBuffer","targetId","canvasManager","freeze","unfreeze","lock","unlock","reset","addsSet","_isParentRemoved","_isAncestorInSet","errorHandler","registerErrorHandler","handler","unregisterErrorHandler","callbackWrapper","rrwebWrapped","rest","mutationBuffers","getEventTarget","composedPath","initMutationObserver","rootEl","mutationBuffer","init","mutationObserverCtor","MutationObserver","__rrMutationObserver","angularZoneSymbol","Zone","__symbol__","observer","observe","attributeOldValue","characterData","characterDataOldValue","childList","subtree","initMoveObserver","mousemoveCb","sampling","mousemove","threshold","callbackThreshold","mousemoveCallback","timeBaseline","positions","wrappedCb","totalOffset","timeOffset","updatePosition","evt","clientX","clientY","DragEvent","Drag","MouseEvent","MouseMove","TouchMove","handlers","initMouseInteractionObserver","mouseInteractionCb","mouseInteraction","disableMap","currentPointerType","getHandler","eventKey","pointerType","thisEventKey","Mouse","Touch","Pen","MouseDown","MouseUp","startsWith","Click","endsWith","eventName","PointerEvent","TouchStart","TouchEnd","initScrollObserver","scrollCb","scrollLeftTop","scroll","initViewportResizeObserver","viewportResizeCb","lastH","lastW","updateDimension","INPUT_TAGS","lastInputValueMap","initInputObserver","inputCb","ignoreClass","ignoreSelector","userTriggeredOnInput","eventHandler","userTriggered","isTrusted","isChecked","cbWithDedup","querySelectorAll","lastInputValue","events","currentWindow","propertyDescriptor","HTMLInputElement","hookProperties","HTMLSelectElement","HTMLTextAreaElement","HTMLOptionElement","getNestedCSSRulePositions","recurse","childRule","hasNestedCSSRule","parentRule","CSSGroupingRule","CSSMediaRule","CSSSupportsRule","CSSConditionRule","parentStyleSheet","getIdAndStyleId","styleMirror","styleId","ownerNode","initStyleSheetObserver","styleSheetRuleCb","CSSStyleSheet","insertRule","argumentsList","deleteRule","replaceSync","supportedNestedCSSRuleTypes","canMonkeyPatchNestedCSSRule","unmodifiedFunctions","typeKey","initAdoptedStyleSheetObserver","hostId","patchTarget","ShadowRoot","originalPropertyDescriptor","adoptStyleSheets","initStyleDeclarationObserver","styleDeclarationCb","ignoreCSSAttributes","setProperty","CSSStyleDeclaration","priority","removeProperty","initMediaInteractionObserver","mediaInteractionCb","initFontObserver","fontCb","fontMap","originalFontFace","FontFace","descriptors","fontFace","fontSource","restoreHandler","fonts","initSelectionObserver","param","selectionCb","collapsed","updateSelection","selection","getSelection","isCollapsed","ranges","rangeCount","getRangeAt","startContainer","startOffset","endContainer","endOffset","blocked","initCustomElementObserver","customElementCb","define","mergeHooks","hooks","canvasMutationCb","mutation","viewportResize","mediaInteaction","styleSheetRule","styleDeclaration","canvasMutation","customElement","initObservers","mutationObserver","recordDOM","mousemoveHandler","mouseInteractionHandler","scrollHandler","viewportResizeHandler","inputHandler","mediaInteractionHandler","styleSheetObserver","adoptedStyleSheetObserver","styleDeclarationObserver","fontObserver","collectFonts","selectionObserver","customElementObserver","pluginHandlers","plugin","plugins","disconnect","CrossOriginIframeMirror","generateIdFn","iframeIdToRemoteIdMap","iframeRemoteIdToIdMap","remoteId","idToRemoteMap","remoteToIdMap","idToRemoteIdMap","getIdToRemoteIdMap","remoteIdToIdMap","getRemoteIdToIdMap","ids","getRemoteId","IframeManager","iframes","crossOriginIframeMap","crossOriginIframeMirror","crossOriginIframeRootIdMap","wrappedEmit","recordCrossOriginIframes","crossOriginIframeStyleMirror","generateId","handleMessage","loadListener","isAttachIframe","adoptedStyleSheets","crossOriginMessageEvent","iframeSourceWindow","transformedEvent","transformCrossOriginEvent","isCheckout","FullSnapshot","replaceIdOnNode","patchRootIdOnNode","timestamp","IncrementalSnapshot","Mutation","Meta","Load","DomContentLoaded","Plugin","Custom","replaceIds","ViewportResize","MediaInteraction","MouseInteraction","Scroll","CanvasMutation","Input","StyleSheetRule","StyleDeclaration","replaceStyleIds","Font","Selection","AdoptedStyleSheet","iframeMirror","getIds","ShadowDomManager","shadowDoms","WeakSet","restoreHandlers","patchAttachShadow","iframeElement","manager","option","__rest","__awaiter","_arguments","generator","adopt","canvasVarMap","variableListFor","ctor","contextMap","saveWebGLVar","isInstanceOfWebGLObject","serializeArg","Float32Array","Float64Array","Int16Array","Int8Array","Uint8ClampedArray","rr_type","values","DataView","HTMLImageElement","HTMLCanvasElement","ImageData","serializeArgs","webGLConstructorNames","supportedWebGLConstructorNames","initCanvas2DMutationObserver","props2D","getOwnPropertyNames","CanvasRenderingContext2D","recordArgs","hookHandler","getNormalizedContextName","contextType","initCanvasContextObserver","setPreserveDrawingBufferToTrue","ctxName","contextAttributes","preserveDrawingBuffer","patchGLPrototype","initCanvasWebGLMutationObserver","WebGLRenderingContext","WebGL","WebGL2RenderingContext","WebGL2","funcToSource","sourcemapArg","sourcemap","blankPrefixLength","createURL","createInlineWorkerFactory","Worker","WorkerFactory","lastBlobMap","transparentBlobMap","getTransparentBlobFor","offscreen","OffscreenCanvas","convertToBlob","arrayBuffer","worker","onmessage","postMessage","bitmap","transparentBase64","CanvasManager","pendingCanvasMutations","clear","resetObservers","rafStamps","latestId","invokeId","newFrame","initCanvasMutationObserver","initCanvasFPSObserver","fps","canvasContextReset","snapshotInProgressMap","commands","timeBetweenSnapshots","rafId","lastSnapshotTime","getCanvas","matchedCanvas","takeCanvasSnapshots","getContextAttributes","COLOR_BUFFER_BIT","createImageBitmap","cancelAnimationFrame","startRAFTimestamping","startPendingCanvasMutationFlusher","canvas2DReset","canvasWebGL1and2Reset","flushPendingCanvasMutations","setLatestRAFTimestamp","flushPendingCanvasMutationFor","valuesWithType","StylesheetManager","trackedLinkElements","adoptedStyleSheetCb","linkEl","trackStylesheetInLinkElement","adoptedStyleSheetData","styleIds","CSSRule","ProcessedNodeManager","nodeMap","periodicallyClear","thisBuffer","buffers","wrapEvent","takeFullSnapshot","recording","checkoutEveryNms","checkoutEveryNth","_maskInputOptions","_slimDOMOptions","packFn","mousemoveWait","recordAfter","inEmittingFrame","passEmitsToParent","lastFullSnapshotEvent","incrementalSnapshotCount","eventProcessor","isFrozen","exceedCount","exceedTime","wrappedMutationEmit","wrappedScrollEmit","wrappedCanvasMutationEmit","wrappedAdoptedStyleSheetEmit","getMirror","nodeMirror","initialOffset","CustomElement","addLoadListener","destroy","addCustomEvent","freezePage","EventType","IncrementalSource","DEBUG","LIB_VERSION","hostname","onLine","referrer","screen","builtInProp","cycle","schedulingQueue","setImmediate","ToString","schedule","drain","isThenable","_then","oType","notify","notifyIsolated","success","failure","triggered","defWrapper","MakeDefWrapper","iteratePromises","Constructor","resolver","rejecter","MakeDef","NpoPromise","executor","Item","PromisePolyfill","PromisePrototype","msgs","MAX_RECORDING_MS","MAX_VALUE_FOR_MIN_RECORDING_MS","ArrayProto","FuncProto","ObjProto","windowConsole","document$1","windowOpera","nativeBind","nativeForEach","nativeIndexOf","nativeMap","nativeIsArray","breaker","console$1","isUndefined","each","toArray","critical","log_func_with_prefix","prefix","console_with_prefix","safewrap","safewrapClass","klass","bound","isFunction","iterator","isArguments","iterable","results","include","needle","inherit","subclass","superclass","isEmptyObject","isString","isDate","isNumber","encodeDates","formatDate","getUTCFullYear","getUTCMonth","getUTCDate","getUTCHours","getUTCMinutes","getUTCSeconds","strip_empty_properties","truncate","JSONEncode","mixed_val","quote","escapable","holder","gap","mind","partial","JSONDecode","at","ch","escapee","SyntaxError","uffff","white","word","base64Encode","o1","o3","h3","h4","ac","tmp_arr","utf8Encode","utftext","stringl","UUID","ticks","ua","xor","byte_array","se","BLOCKED_UA_STRS","isBlockedUA","HTTPBuildQuery","formdata","arg_separator","use_val","use_key","encodeURIComponent","getQueryParam","regexS","decodeURIComponent","cookie","nameEQ","ca","set_seconds","is_cross_subdomain","is_secure","is_cross_site","domain_override","cdomain","expires","secure","domain","extract_domain","toGMTString","new_cookie_val","_localStorageSupported","localStorageSupported","forceCheck","cheap_guid","is_supported","force_check","register_event","oldSchool","useCapture","ontype","old_handler","makeHandler","new_handler","old_handlers","fixEvent","old_result","new_result","preventDefault","stopPropagation","returnValue","cancelBubble","TOKEN_MATCH_REGEX","dom_query","getAllChildren","bad_whitespace","hasClass","elem","selector","getElementsBySelector","token","foundCount","elements","currentContextIndex","tokens","currentContext","getElementById","token_match","checkFunction","attrName","attrOperator","attrValue","query","CAMPAIGN_KEYWORDS","CLICK_IDS","info","campaignParams","default_value","kw","kwkey","clickParams","idkey","marketingParams","searchEngine","searchInfo","keyword","user_agent","browserVersion","versionRegexs","device","referringDomain","currentUrl","properties","extra_props","people_properties","mpPageViewProperties","title","protocol","SIMPLE_DOMAIN_MATCH_REGEX","DOMAIN_MATCH_REGEX","domain_regex","tld","isOnline","JSONStringify","JSONParse","GDPR_DEFAULT_PERSISTENCE_PREFIX","optIn","_optInOut","optOut","hasOptedIn","_getStorageValue","hasOptedOut","_hasDoNotTrackFlagOn","optedOut","addOptOutCheckMixpanelLib","_addOptOutCheck","get_config","addOptOutCheckMixpanelPeople","_get_config","addOptOutCheckMixpanelGroup","clearOptInOut","_getStorage","_getStorageKey","crossSubdomainCookie","cookieDomain","persistenceType","persistencePrefix","ignoreDnt","win$1","nav","hasDntOn","dntValue","optValue","cookieExpiration","secureCookie","crossSiteCookie","track","trackEventName","trackProperties","getConfigValue","logger$5","SharedLock","storageKey","pollIntervalMS","timeoutMS","promiseImpl","withLock","lockedCB","startTime","keyX","keyY","keyZ","delay","waitFor","getSetY","valY","criticalSection","removeLock","catch","LocalStorageWrapper","storageOverride","logger$4","RequestQueue","usePersistence","queueStorage","sharedLockStorage","reportError","errorReporter","memQueue","initialized","ensureInit","enqueue","flushInterval","queueEntry","enqueueItem","readFromStorage","storedQueue","saveToStorage","succeeded","fillBatch","batchSize","batch","idsInBatch","orphaned","filterOutIDsAndInvalid","items","idSet","filteredItems","removeItemsByID","removeFromStorage","updatePayloads","existingItems","itemsToUpdate","newItems","newPayload","storageEntry","queue","serialized","MAX_RETRY_INTERVAL_MS","logger$3","RequestBatcher","libConfig","sendRequest","sendRequestFunc","beforeSendHook","stopAllBatching","stopAllBatchingFunc","stopped","consecutiveRemovalFailures","itemIdsSentSuccessfully","flushOnlyOnInterval","stop","timeoutID","resetBatchSize","resetFlush","scheduleFlush","flushMS","sendRequestPromise","requestInProgress","currentBatchSize","attemptSecondaryFlush","dataForRequest","transformedItems","addPayload","itemId","timesSent","removeItemsFromQueue","batchSendCallback","unloading","httpStatusCode","retryMS","retryAfter","halvedBatchSize","requestOptions","verbose","ignore_json_errors","timeout_ms","transport","logger$2","CompressionStream","RECORDER_BATCHER_LIB_CONFIG","ACTIVE_SOURCES","isUserEvent","ev","SessionRecording","_mixpanel","mixpanelInstance","_onIdleTimeout","onIdleTimeout","_onMaxLengthReached","onMaxLengthReached","_rrwebRecord","rrwebRecord","replayId","_stopRecording","seqNo","replayStartTime","replayStartUrl","batchStartUrl","idleTimeoutId","maxTimeoutId","recordMaxMs","recordMinMs","batcherKey","getConfig","batcher","flushEventsWithOptOut","configVar","startRecording","shouldStopBatcher","resetIdleTimeout","stopRecording","isRrwebStopped","_flushEvents","_onOptOut","_sendRequest","currentReplayId","reqParams","reqBody","onSuccess","responseBody","URLSearchParams","btoa","json","numEvents","batchStartTime","replayLengthMs","get_distinct_id","eventsJson","deviceId","get_property","userId","jsonStream","gzipStream","pipeThrough","Response","compressedBlob","logger$1","MixpanelRecorder","activeRecording","resetRecording","getActiveReplayId","EV_CHANGE","EV_CLICK","EV_HASHCHANGE","EV_MP_LOCATION_CHANGE","EV_POPSTATE","EV_SCROLLEND","EV_SUBMIT","CLICK_EVENT_PROPS","OPT_IN_CLASSES","OPT_OUT_CLASSES","SENSITIVE_DATA_CLASSES","TRACKED_ATTRS","logger","getClasses","getClassName","baseVal","getPreviousElementSibling","previousElementSibling","isElementNode","getPropertiesFromElement","blockAttrsSet","extraAttrs","allowElementCallback","allowSelectors","elId","shouldTrackElementDetails","attrVal","shouldTrackValue","nthChild","nthOfType","currentElem","getPropsForDOMEvent","blockAttrs","blockElementCallback","blockSelectors","captureTextContent","captureExtraAttrs","srcElement","isTextNode","shouldTrackDomEvent","isElementAllowed","isElementBlocked","targetElementList","curEl","isTag","elementsJson","explicitNoTrack","shouldTrackDetails","docElement","elementText","getSafeText","guessRealClickTarget","targetProps","elText","sel","minDOMApisSupported","testEl","elClasses","sensitiveNameRegex","ccRegex","ssnRegex","AUTOCAPTURE_CONFIG_KEY","LEGACY_PAGEVIEW_CONFIG_KEY","PAGEVIEW_OPTION_FULL_URL","PAGEVIEW_OPTION_URL_WITH_PATH_AND_QUERY_STRING","PAGEVIEW_OPTION_URL_WITH_PATH","CONFIG_ALLOW_ELEMENT_CALLBACK","CONFIG_ALLOW_SELECTORS","CONFIG_ALLOW_URL_REGEXES","CONFIG_BLOCK_ATTRS","CONFIG_BLOCK_ELEMENT_CALLBACK","CONFIG_BLOCK_SELECTORS","CONFIG_BLOCK_URL_REGEXES","CONFIG_CAPTURE_EXTRA_ATTRS","CONFIG_CAPTURE_TEXT_CONTENT","CONFIG_SCROLL_CAPTURE_ALL","CONFIG_SCROLL_CHECKPOINTS","CONFIG_TRACK_CLICK","CONFIG_TRACK_INPUT","CONFIG_TRACK_PAGEVIEW","CONFIG_TRACK_SCROLL","CONFIG_TRACK_SUBMIT","CONFIG_DEFAULTS","DEFAULT_PROPS","MP_EV_CLICK","MP_EV_INPUT","MP_EV_SCROLL","MP_EV_SUBMIT","Autocapture","mp","initPageviewTracking","initClickTracking","initInputTracking","initScrollTracking","initSubmitTracking","getFullConfig","autocaptureConfig","currentUrlBlocked","allowUrlRegexes","allowed","allowRegex","blockUrlRegexes","pageviewTrackingConfig","trackDomEvent","mpEventName","listenerClick","listenerChange","listenerPopstate","listenerHashchange","listenerLocationchange","previousTrackedUrl","tracked","track_pageview","dispatchEvent","Event","nativePushState","history","pushState","unused","nativeReplaceState","shouldTrack","didPathChange","trackPageviewOption","lastScrollCheckpoint","listenerScroll","scrollCheckpoints","scrollPercentage","checkpoint","listenerSubmit","DomTracker","create_properties","event_handler","after_track_handler","mixpanel_instance","event_name","user_callback","override_event","track_callback","timeout_occured","callback_fired","LinkTracker","new_tab","which","metaKey","ctrlKey","FormTracker","submit","SET_ACTION","SET_ONCE_ACTION","UNSET_ACTION","ADD_ACTION","APPEND_ACTION","UNION_ACTION","REMOVE_ACTION","DELETE_ACTION","apiActions","set_action","$set","_is_reserved_property","unset_action","$unset","set_once_action","$set_once","union_action","list_name","$union","append_action","$append","remove_action","$remove","delete_action","MixpanelGroup","_init","group_key","group_id","_group_key","_group_id","_send_request","set_once","unset","union","date_encoded_data","_track_or_batch","endpoint","request_batchers","groups","conf","MixpanelPeople","update_referrer_info","increment","by","$add","track_charge","amount","clear_charges","delete_user","_identify_called","device_id","user_id","had_persisted_distinct_id","people","_enqueue","conf_var","_flags","identify_called","_add_to_people_queue","_flush_one_queue","action_method","queue_to_params_fn","_this","queued_data","load_queue","action_params","_pop_from_people_queue","save","_flush","_set_callback","_add_callback","_append_callback","_set_once_callback","_union_callback","_unset_callback","_remove_callback","$append_queue","$append_item","append_callback","$remove_queue","$remove_item","remove_callback","init_type","SET_QUEUE_KEY","SET_ONCE_QUEUE_KEY","UNSET_QUEUE_KEY","ADD_QUEUE_KEY","APPEND_QUEUE_KEY","REMOVE_QUEUE_KEY","UNION_QUEUE_KEY","PEOPLE_DISTINCT_ID_KEY","ALIAS_ID_KEY","EVENT_TIMERS_KEY","RESERVED_PROPERTIES","MixpanelPersistence","campaign_params_saved","storage_type","update_config","upgrade","old_cookie","old_localstorage","register_once","expire_days","cross_subdomain","cross_site","cookie_domain","load_prop","default_expiry","register","unregister","update_search_keyword","get_referrer_info","set_disabled","set_cookie_domain","set_cross_site","set_cross_subdomain","set_secure","get_cross_subdomain","q_key","_get_queue_key","q_data","set_q","_get_or_create_queue","set_once_q","unset_q","add_q","union_q","remove_q","append_q","enqueued_obj","append_obj","queued_action","default_val","set_event_timer","timers","remove_event_timer","mixpanel_master","load_extra_bundle","_onload","INIT_MODULE","INIT_SNIPPET","IDENTITY_FUNC","NOOP_FUNC","PRIMARY_INSTANCE_NAME","PAYLOAD_TYPE_BASE64","PAYLOAD_TYPE_JSON","DEVICE_ID_PREFIX","USE_XHR","XMLHttpRequest","ENQUEUE_REQUESTS","sendBeacon","DEFAULT_API_ROUTES","DEFAULT_CONFIG","DOM_LOADED","MixpanelLib","create_mplib","instance","_cached_groups","utm_params","initial_utm_params","has_utm","utm_value","utm_key","_execute_array","report_error","_loaded","variable_features","api_host","set_config","__dom_loaded_queue","__request_queue","__disabled_events","_batch_requests","init_batchers","flush_on_unload","get_batcher_configs","batcher_config","queue_key","unpersisted_superprops","_gdpr_init","uuid","autocapture","start_session_recording","handleLoadedRecorder","_recorder","stop_session_recording","get_session_recording_properties","replay_id","_get_session_replay_id","get_session_replay_url","replay_url","query_params","_set_default_superprops","_utm_value","_dom_loaded","_track_dom","has_opted_out_tracking","DomClass","_prepare_callback","callback_function","jsc","randomized_cb","callback_string","DEFAULT_OPTIONS","body_data","use_post","use_sendBeacon","verbose_mode","req","headerValue","headerName","setRequestHeader","start_time","withCredentials","onreadystatechange","responseText","statusText","response_headers","send","async","defer","insertBefore","fn_name","alias_calls","other_calls","tracking_calls","execute","calls","caller","are_batchers_initialized","queue_prefix","api_routes","_batcher_configs","batcher_for","attrs","_encode_data_for_request","_run_hook","stop_batch_senders","batcher_configs","start_batch_senders","_batchers_were_started","disable_all_events","encoded_data","truncated_data","should_send_immediately","send_request_options","request_enqueued_or_initiated","send_request_immediately","skip_hooks","_event_is_disabled","start_timestamp","duration_in_ms","marketing_properties","property_blacklist","blacklisted_prop","set_group","group_ids","add_group","old_values","remove_group","old_value","track_with_groups","tracking_props","_create_map_key","_remove_group_from_cache","get_group","map_key","group","default_page_properties","event_properties","track_links","track_forms","time_event","REGISTER_DEFAULTS","options_for_register","days_or_options","_register_single","identify","new_distinct_id","previous_distinct_id","alias","name_tag","new_batch_size","prop_name","hook_name","property_name","is_localStorage_requested","has_opted_in_tracking","opt_in_tracking","opt_out_tracking","clear_opt_in_out_tracking","_gdpr_update_persistence","_gdpr_call_func","instances","extend_mp","override_mp_init_func","add_dom_loaded_handler","dom_loaded_handler","inst","do_scroll_check","doScroll","attachEvent","toplevel","frameElement","init_as_module","bundle_loader","loadNoop","_src","onload","mixpanel","DO_NOT_EXPORT_CODEPAGE","cpt","sbcs_cache","dbcs_cache","magic_cache","magic_decode","magic_encode","cpdcache","cpecache","sfcc","cca","mdl","mdb","make_EE","E","EE","sbcs_encode","ofmt","sbcs_decode","DD","dbcs_encode","dbcs_decode","utf8_d","direct","encache","null_enc","cp_decache","decache","last_enc","last_cp","sbcs","dbcs","BM","SetD","isstr","dash","o64","hascp","anObject","tryToString","isArrayIteratorMethod","getIterator","getIteratorMethod","iteratorClose","Result","ResultPrototype","unboundFunction","iterFn","AS_ENTRIES","IS_RECORD","IS_ITERATOR","INTERRUPTED","condition","callFn","modules","installedModules","__webpack_require__","moduleId","toStringTag","__esModule","create","__WEBPACK_AMD_DEFINE_FACTORY__","__WEBPACK_AMD_DEFINE_ARRAY__","__WEBPACK_AMD_DEFINE_RESULT__","autoBom","responseType","onerror","createEvent","initMouseEvent","HTMLAnchorElement","webkitURL","msSaveOrOpenBlob","HTMLElement","FileReader","onloadend","readAsDataURL","LARGE_ARRAY_SIZE","FUNC_ERROR_TEXT","HASH_UNDEFINED","UNORDERED_COMPARE_FLAG","PARTIAL_COMPARE_FLAG","INFINITY","MAX_SAFE_INTEGER","argsTag","arrayTag","boolTag","dateTag","errorTag","funcTag","genTag","mapTag","numberTag","objectTag","promiseTag","regexpTag","setTag","stringTag","symbolTag","weakMapTag","arrayBufferTag","dataViewTag","float32Tag","float64Tag","int8Tag","int16Tag","int32Tag","uint8Tag","uint8ClampedTag","uint16Tag","uint32Tag","reIsDeepProp","reIsPlainProp","reLeadingDot","rePropName","reRegExpChar","reEscapeChar","reIsHostCtor","reIsUint","typedArrayTags","freeGlobal","freeSelf","freeExports","freeModule","moduleExports","freeProcess","nodeUtil","binding","nodeIsTypedArray","isTypedArray","arraySome","baseProperty","baseTimes","iteratee","baseUnary","getValue","isHostObject","mapToArray","overArg","setToArray","arrayProto","funcProto","objectProto","coreJsData","maskSrcKey","uid","IE_PROTO","funcToString","objectToString","reIsNative","nativeKeys","getNative","nativeCreate","dataViewCtorString","toSource","mapCtorString","promiseCtorString","setCtorString","weakMapCtorString","symbolProto","symbolValueOf","valueOf","symbolToString","Hash","hashClear","__data__","hashDelete","hashGet","hashHas","hashSet","ListCache","listCacheClear","listCacheDelete","assocIndexOf","listCacheGet","listCacheHas","listCacheSet","MapCache","mapCacheClear","mapCacheDelete","getMapData","mapCacheGet","mapCacheHas","mapCacheSet","SetCache","setCacheAdd","setCacheHas","Stack","stackClear","stackDelete","stackGet","stackHas","stackSet","pairs","arrayLikeKeys","inherited","skipIndexes","isIndex","baseFor","createBaseFor","baseForOwn","baseGet","isKey","castPath","toKey","baseGetTag","baseHasIn","baseIsEqual","other","customizer","bitmask","isObjectLike","baseIsEqualDeep","equalFunc","objIsArr","othIsArr","objTag","othTag","getTag","objIsObj","othIsObj","isSameTag","equalArrays","equalByTag","objIsWrapped","othIsWrapped","objUnwrapped","othUnwrapped","equalObjects","baseIsMatch","matchData","noCustomizer","objValue","srcValue","baseIsNative","isMasked","pattern","baseIsTypedArray","isLength","baseIteratee","baseMatchesProperty","baseMatches","baseKeys","isPrototype","getMatchData","matchesStrictComparable","isStrictComparable","hasIn","basePropertyDeep","baseToString","isSymbol","stringToPath","fromRight","keysFunc","isPartial","othLength","stacked","arrValue","othValue","compared","othIndex","convert","objProps","objLength","othProps","skipCtor","objCtor","othCtor","isKeyable","hasPath","hasFunc","Ctor","ctorString","memoize","memoized","Cache","isArrayLikeObject","isArrayLike","defaultValue","mapKeys","dynamicTyping","dynamicTypingFunction","WORKERS_SUPPORTED","BLOB_URL","userStep","userChunk","userComplete","userError","workerId","NODE_STREAM_INPUT","readable","unparse","delimiter","BAD_DELIMITERS","quotes","skipEmptyLines","newline","quoteChar","escapeChar","escapeFormulae","RECORD_SEP","UNIT_SEP","BYTE_ORDER_MARK","LocalChunkSize","RemoteChunkSize","DefaultDelimiter","Parser","ParserHandle","NetworkStreamer","FileStreamer","StringStreamer","ReadableStreamStreamer","jQuery","inputElem","before","reason","_handle","_finished","_completed","_halted","_input","_baseIndex","_partialLine","_rowCount","_start","_nextChunk","isFirstChunk","_completeResults","errors","streamer","_config","parseChunk","beforeFirstChunk","aborted","cursor","preview","WORKER_ID","finished","_sendError","_readChunk","_chunkLoaded","_chunkError","downloadRequestBody","downloadRequestHeaders","getResponseHeader","webkitSlice","mozSlice","FileReaderSync","readAsText","pause","resume","_streamData","_streamEnd","_streamError","_checkIsFinished","_streamCleanUp","removeListener","abort","transformHeader","successful","bestDelimiter","delimitersToGuess","getCharIndex","fastMode","nextDelim","quoteSearch","linebreak","truncated","terminate","webpackPolyfill","deprecate","children","getCurrentScript","descriptor","currentScript","pageSource","inlineScriptSourceRegExp","inlineScriptSource","ieStackRegExp","ffStackRegExp","stackDetails","scriptLocation","currentLocation","scripts","outerHTML","arrayMap","arrayPush","spreadableSymbol","isConcatSpreadable","nativeMax","baseFlatten","isStrict","isFlattenable","basePick","basePickBy","baseRest","otherArgs","pick","getPrototype","getPrototypeOf","nativeGetSymbols","baseGetAllKeys","symbolsFunc","baseKeysIn","nativeKeysIn","isProto","getAllKeysIn","keysIn","getSymbolsIn","getSymbols","stubArray","pickBy","__webpack_exports__","isType","render","_vm","_h","$createElement","_self","idName","staticRenderFns","lodash_mapkeys","lodash_mapkeys_default","lodash_pickby","lodash_pickby_default","lodash_pick","lodash_pick_default","FileSaver_min","papaparse_min","_typeof","JsonCSVvue_type_script_lang_js_","required","separatorExcel","advancedOptions","labels","testing","exportableData","filteredData","cleaningData","methods","labelsFunctionGenerator","_mapKeys","fieldsFunctionGenerator","_this2","$emit","dataExport","csv","src_JsonCSVvue_type_script_lang_js_","normalizeComponent","scriptExports","functionalTemplate","injectStyles","scopeId","moduleIdentifier","shadowMode","hook","_compiled","functional","_scopeId","$vnode","ssrContext","__VUE_SSR_CONTEXT__","_registeredComponents","_ssrRegister","$root","$options","_injectStyles","originalRender","existing","beforeCreate","component","JsonCSV","integer","createNonEnumerableProperty","defineBuiltIn","defineGlobalProperty","copyConstructorProperties","isForced","targetProperty","sourceProperty","TARGET","GLOBAL","STATIC","stat","dontCallGetSet","internalObjectKeys","enumBugKeys","hiddenKeys","normalizeHeaderName","enhanceError","DEFAULT_CONTENT_TYPE","setContentTypeIfUnset","getDefaultAdapter","adapter","stringifySafely","rawValue","parser","encoder","transformRequest","isFormData","isArrayBuffer","isStream","isFile","isBlob","isArrayBufferView","isURLSearchParams","transformResponse","strictJSONParsing","xsrfCookieName","xsrfHeaderName","maxContentLength","maxBodyLength","validateStatus","common","merge","globalConfig","globalConfigIsFrozen","freezeGlobalConfig","$transfer","transfer","maximizedModals","positionClass","standard","transitions","inheritAttrs","useModelToggleProps","useTransitionProps","transitionShow","transitionHide","persistent","autoClose","noEscDismiss","noBackdropDismiss","noRouteDismiss","noRefocus","noFocus","seamless","maximized","fullWidth","fullHeight","square","emits","useModelToggleEmits","vm","innerRef","showing","transitionState","animating","shakeTimeout","isMaximized","avoidAutoClose","refocusTarget","hideOnRouteChange","usePreventScroll","registerTimeout","removeTimeout","useTimeout","registerTick","removeTick","prepareTick","useTick","showPortal","hidePortal","portalIsActive","renderPortal","usePortal","renderPortalContent","hide","useModelToggle","handleShow","handleHide","processOnMount","addToHistory","removeFromHistory","useHistory","transition","useBackdrop","onEvents","onClick","onAutoClose","rootClasses","activeElement","updateMaximized","blur","focus","visualViewport","scrollIntoView","transitionDuration","cleanup","addFocusFn","querySelector","shake","onEscapeKey","hiding","removeFocusout","onFocusChange","removeEscapeKey","active","onBackdropClick","childHasFocus","Transition","appear","onMousedown","watch","nextTick","addFocusout","addEscapeKey","__updateRefocusTarget","onBeforeUnmount","Firestore","GeoPoint","Timestamp","Transaction","WriteBatch","DocumentReference","DocumentSnapshot","Query","QueryDocumentSnapshot","QuerySnapshot","CollectionReference","FieldPath","FieldValue","setLogLevel","CACHE_SIZE_UNLIMITED","INTERNAL","registerComponent","getProvider","getImmediate","setServiceProps","registerVersion","loadBundle","namedQuery","errorCodeMap","OK","CANCELLED","UNKNOWN","INVALID_ARGUMENT","DEADLINE_EXCEEDED","NOT_FOUND","ALREADY_EXISTS","PERMISSION_DENIED","UNAUTHENTICATED","RESOURCE_EXHAUSTED","FAILED_PRECONDITION","ABORTED","OUT_OF_RANGE","UNIMPLEMENTED","UNAVAILABLE","DATA_LOSS","_super","HttpsErrorImpl","details","setPrototypeOf","codeForHTTPStatus","_errorForResponse","bodyJSON","serializer","description","errorJSON","status_1","ContextProvider","authProvider","messagingProvider","auth","messaging","optional","getAuthToken","trys","getToken","sent","accessToken","getInstanceIdToken","Notification","permission","authToken","instanceIdToken","LONG_TYPE","UNSIGNED_LONG_TYPE","mapValues","Serializer","failAfter","millis","Service","app_","appCheckProvider","regionOrCustomDomain_","fetchImpl","emulatorOrigin","deleteService","contextProvider","cancelAllRequests","customDomain","region","_url","projectId","origin_1","useEmulator","port","useFunctionsEmulator","httpsCallable","postJSON","appCheckToken","getAppCheckToken","appCheck","failAfterPromise","responseData","decodedData","race","clearTimeoutWrapper","FUNCTIONS_TYPE","registerFunctions","namespaceExports","Functions","container","regionOrCustomDomain","instanceIdentifier","app","setMultipleInstances","fetch","PENDING_TIMEOUT_MS","PACKAGE_VERSION","INTERNAL_AUTH_VERSION","INSTALLATIONS_API_URL","TOKEN_EXPIRATION_BUFFER","SERVICE","SERVICE_NAME","ERROR_DESCRIPTION_MAP","ERROR_FACTORY","isServerError","getInstallationsEndpoint","extractAuthTokenInfoFromResponse","requestStatus","expiresIn","getExpiresInFromResponseExpiresIn","creationTime","getErrorFromResponse","requestName","responseJson","errorData","serverCode","serverMessage","serverStatus","getHeaders","apiKey","Headers","Accept","getHeadersWithAuth","appConfig","refreshToken","getAuthorizationHeader","retryIfServerError","responseExpiresIn","createInstallationRequest","fid","responseValue","registeredInstallationEntry","authVersion","appId","sdkVersion","ok","registrationStatus","sleep","ms","bufferToBase64UrlSafe","VALID_FID_PATTERN","INVALID_FID","generateFid","fidByteArray","crypto_1","b64String","getKey","appName","fidChangeCallbacks","fidChanged","callFidChangeCallbacks","broadcastFidChange","addCallback","getBroadcastChannel","callbackSet","removeCallback","closeBroadcastChannel","e_1","callbacks","callbacks_1","callbacks_1_1","e_1_1","return","channel","broadcastChannel","BroadcastChannel","DATABASE_NAME","DATABASE_VERSION","OBJECT_STORE_NAME","dbPromise","getDbPromise","upgradeDB","oldVersion","createObjectStore","db","tx","objectStore","transaction","updateFn","store","getInstallationEntry","registrationPromise","installationEntry","oldEntry","updateOrCreateInstallationEntry","entryWithPromise","triggerRegistrationIfNecessary","clearTimedOutRequest","registrationPromiseWithError","inProgressEntry","registrationTime","registerInstallation","waitUntilFidRegistration","customData","updateInstallationRequest","hasInstallationRequestTimedOut","generateAuthTokenRequest","platformLoggerProvider","platformLogger","completedAuthToken","getGenerateAuthTokenEndpoint","getPlatformInfoString","installation","refreshAuthToken","dependencies","forceRefresh","tokenPromise","isEntryRegistered","oldAuthToken","isAuthTokenValid","waitUntilAuthTokenRequest","makeAuthTokenRequestInProgressEntry","fetchAuthTokenFromServer","updateAuthTokenRequest","hasAuthTokenRequestTimedOut","updatedInstallationEntry","isAuthTokenExpired","inProgressAuthToken","requestTime","completeInstallationRegistration","deleteInstallationRequest","getDeleteEndpoint","deleteInstallation","onIdChange","extractAppConfig","getMissingValueError","configKeys","configKeys_1","configKeys_1_1","keyName","valueName","registerInstallations","installationsName","installations","MessageType","ERROR_MAP","DEFAULT_SW_PATH","DEFAULT_SW_SCOPE","DEFAULT_VAPID_KEY","ENDPOINT","FCM_MSG","TAG","CONSOLE_CAMPAIGN_ANALYTICS_ENABLED","CONSOLE_CAMPAIGN_ID","CONSOLE_CAMPAIGN_TIME","CONSOLE_CAMPAIGN_NAME","BACKGROUND_HANDLE_EXECUTION_TIME_LIMIT_MS","FOREGROUND_HANDLE_PREPARATION_TIME_MS","arrayToBase64","uint8Array","base64String","base64ToArray","rawData","atob","outputArray","OLD_DB_NAME","OLD_DB_VERSION","OLD_OBJECT_STORE_NAME","migrateOldDatabase","senderId","databases","dbNames","tokenDetails","indexedDB","oldDetails","objectStoreNames","p256dh","fcmToken","createTime","subscriptionOptions","swScope","vapidKey","checkTokenDetails","upgradeDb","dbGet","firebaseDependencies","oldTokenDetails","dbSet","dbRemove","requestGetToken","subscribeOptions","err_1","getBody","getEndpoint","errorInfo","requestUpdateToken","updateOptions","err_2","requestDeleteToken","unsubscribeOptions","err_3","web","applicationPubKey","TOKEN_EXPIRATION_MS","swRegistration","pushSubscription","getPushSubscription","scope","getNewToken","isTokenValid","updateToken","deleteToken","pushManager","getSubscription","unsubscribe","updatedToken","updatedTokenDetails","e_2","subscription","userVisibleOnly","applicationServerKey","dbOptions","currentOptions","isVapidKeyEqual","isEndpointEqual","isAuthEqual","isP256dhEqual","externalizePayload","internalPayload","collapseKey","collapse_key","messageId","fcm_message_id","propagateNotificationPayload","propagateDataPayload","propagateFcmOptions","messagePayloadInternal","notification","fcmOptions","analyticsLabel","analytics_label","isConsoleMessage","SwController","isOnBackgroundMessageUsed","bgMessageHandler","waitUntil","onPush","onSubChange","onNotificationClick","setBackgroundMessageHandler","onBackgroundMessage","nextOrObserver","registration","requestPermission","usePublicVapidKey","useServiceWorker","onMessage","onTokenRefresh","clientList","isNotificationShown","getMessagePayloadInternal","getClientList","debug","hasVisibleClients","sendMessagePayloadInternalToWindows","showNotification","wrapInternalPayload","newSubscription","originUrl","stopImmediatePropagation","getLink","getWindowClient","clients","openWindow","messageType","NOTIFICATION_CLICKED","isFirebaseMessaging","wrappedInternalPayload","clientList_1","clientList_1_1","clientUrl","visibilityState","PUSH_RECEIVED","clientList_2","clientList_2_1","e_2_1","matchAll","includeUncontrolled","notificationPayloadInternal","actions","maxActions","click_action","WindowController","onMessageCallback","serviceWorker","messageEventListener","dataPayload","stripInternalFields","logEvent","getVapidKey","getSwReg","updateVapidKey","updateSwReg","serviceWorkerRegistration","registerDefaultSw","ServiceWorkerRegistration","browserErrorMessage","permissionResult","eventType","analytics","getEventType","analyticsProvider","message_id","message_name","message_time","message_device_time","messagingSenderId","MESSAGING_NAME","isSupported","NAMESPACE_EXPORTS","isSWControllerSupported","isWindowControllerSupported","cookieEnabled","PushSubscription","DEFAULT_HOST","CONFIG_STORAGE_BUCKET_KEY","DEFAULT_MAX_OPERATION_RETRY_TIME","DEFAULT_MAX_UPLOAD_RETRY_TIME","FirebaseStorageError","prependCode","serverResponse","_baseMessage","_codeEquals","unknown","objectNotFound","quotaExceeded","bucket","unauthenticated","unauthorizedApp","unauthorized","retryLimitExceeded","invalidUrl","invalidDefaultBucket","noDefaultBucket","cannotSliceBlob","serverFileWrongSize","noDownloadURL","invalidArgument","appDeleted","invalidRootOperation","invalidFormat","internalError","decodeBase64","StringFormat","RAW","BASE64","BASE64URL","DATA_URL","StringData","contentType","dataFromString","stringData","utf8Bytes_","base64Bytes_","dataURLBytes_","dataURLContentType_","percentEncodedBytes_","decoded","hasMinus","hasUnder","invalidChar","hasPlus","hasSlash","DataURLParts","dataURL","middle","dataUrl","longEnough","ErrorCode","TaskEvent","STATE_CHANGED","TaskState","RUNNING","PAUSED","SUCCESS","CANCELED","ERROR","taskStateFromInternalTaskState","XhrConnection","sent_","xhr_","errorCode_","NO_ERROR","sendPromise_","ABORT","NETWORK_ERROR","getErrorCode","getStatus","getResponseText","addUploadProgressListener","upload","removeUploadProgressListener","newConnection","ConnectionPool","createConnection","Location","path_","fullServerUrl","bucketOnlyServerUrl","makeFromBucketSpec","bucketString","bucketLocation","makeFromUrl","bucketDomain","gsModify","gsPath","gsRegex","gsIndices","httpModify","firebaseStorageHost","firebaseStoragePath","firebaseStorageRegExp","firebaseStorageIndices","cloudStorageHost","cloudStoragePath","cloudStorageRegExp","cloudStorageIndices","indices","postModify","captures","bucketValue","pathValue","FailRequest","promise_","getPromise","_appDelete","waitSeconds","timeoutId","hitTimeout","cancelState","canceled","triggeredCallback","triggerCallback","callWithDelay","waitMillis","mustStop","wasTimeout","isJustDef","isNonArrayObject","isNativeBlob","isNativeBlobDefined","validateNumber","minValue","maxValue","makeUrl","urlPart","protocolMatch","makeQueryString","queryPart","nextPart","NetworkRequest","successCodes","additionalRetryCodes","errorCallback","progressCallback","pool","pendingConnection_","backoffId_","canceled_","appDelete_","url_","method_","headers_","body_","successCodes_","additionalRetryCodes_","callback_","errorCallback_","progressCallback_","timeout_","pool_","resolve_","reject_","start_","doTheRequest","backoffCallback","RequestEndStatus","connection","progressListener","hitServer","isRetryStatusCode_","successCode","wasCanceled","progressEvent","loaded","lengthComputable","backoffDone","requestWentThrough","wasSuccessCode","appDelete","isFiveHundredCode","extraRetryCodes","isExtraRetryCode","isRequestSpecificRetryCode","addAuthHeader_","addVersionHeader_","firebaseVersion","addGmpidHeader_","addAppCheckHeader_","makeRequest","requestInfo","urlParams","getBlobBuilder","sliceBlob","FbsBlob","elideCopy","blobType","data_","size_","type_","startByte","endByte","realBlob","sliced","blobby","uint8Arrays","finalLength_1","merged_1","index_1","uploadData","jsonObjectOrNull","newPath","childPath","canonicalChildPath","lastComponent","noXform_","Mapping","server","local","xform","mappings_","xformPath","fullPath","getMappings","mappings","mappingsXformPath","_metadata","nameMapping","xformSize","sizeMapping","addRef","service","generateRef","_makeStorageReference","fromResource","resource","mapping","fromResourceString","resourceString","downloadUrlFromResourceString","tokensList","urls","queryString","alt","toResourceString","PREFIXES_KEY","ITEMS_KEY","fromBackendResponse","listResult","prefixes","nextPageToken","pathWithoutTrailingSlash","reference","fromResponseString","RequestInfo","handlerCheck","cndn","metadataHandler","xhr","listHandler","downloadUrlHandler","sharedErrorHandler","newErr","objectErrorHandler","getMetadata$2","maxOperationRetryTime","list$2","pageToken","maxResults","isRoot","getDownloadUrl","updateMetadata$2","deleteObject$2","_xhr","_text","determineContentType_","metadataForUpload_","metadataClone","multipartUpload","genBoundary","boundary","metadata_","metadataString","preBlobPart","postBlobPart","maxUploadRetryTime","ResumableUploadStatus","finalized","checkResumeHeader_","allowedStatus","createResumableUpload","metadataForUpload","getResumableUploadStatus","sizeString","RESUMABLE_UPLOAD_CHUNK_SIZE","continueResumableUpload","status_","bytesLeft","bytesToUpload","uploadCommand","uploadStatus","newCurrent","Observer","asFunctions","argsToForward","UploadTask","_transferred","_needToFetchStatus","_needToFetchMetadata","_observers","_error","_uploadUrl","_request","_chunkMultiplier","_resolve","_reject","_ref","_blob","_mappings","_resumable","_shouldDoResumable","_state","_errorHandler","completeTransitions_","_transition","_metadataErrorHandler","_promise","_makeProgressCallback","sizeBefore","_updateProgress","_createResumable","_fetchStatus","_fetchMetadata","_continueUpload","_oneShotUpload","_resolveToken","_getAuthToken","_getAppCheckToken","_location","createRequest","_makeRequest","statusRequest","uploadRequest","newStatus","_increaseMultiplier","currentSize","metadataRequest","multipartRequest","transferred","_notifyObservers","wasPaused","externalState","bytesTransferred","totalBytes","task","completed","_addObserver","_removeObserver","_notifyObserver","_finishPromise","observers","toCall","Reference","_service","_newRef","_throwIfRoot","uploadBytesResumable$1","listAll$1","accumulator","listAllHelper","nextPage","list$1","makeRequestWithTokens","getMetadata$1","updateMetadata$1","getDownloadURL$1","deleteObject$1","_getChild$1","isUrl","refFromURL","refFromPath","_bucket","ref$1","serviceOrRef","pathOrUrl","extractBucket","connectStorageEmulator$1","mockUserToken","_overrideAuthToken","FirebaseStorageImpl","_authProvider","_appCheckProvider","_pool","_firebaseVersion","_host","_appId","_deleted","_maxOperationRetryTime","_maxUploadRetryTime","_requests","POSITIVE_INFINITY","tokenData","_delete","request_1","uploadBytesResumable","getMetadata","updateMetadata","listAll","getDownloadURL","deleteObject","_getChild","connectStorageEmulator","UploadTaskSnapshotCompat","_delegate","UploadTaskCompat","wrappedNextOrObserver","taskSnapshot","ListResultCompat","ReferenceCompat","putString","StorageServiceCompat","setMaxUploadRetryTime","setMaxOperationRetryTime","STORAGE_TYPE","storageServiceCompat","SDK_VERSION","registerStorage","Storage","apiInstance","windowInstance","TRACE_START_MARK_PREFIX","TRACE_STOP_MARK_PREFIX","TRACE_MEASURE_PREFIX","OOB_TRACE_PAGE_LOAD_PREFIX","FIRST_PAINT_COUNTER_NAME","FIRST_CONTENTFUL_PAINT_COUNTER_NAME","FIRST_INPUT_DELAY_COUNTER_NAME","CONFIG_LOCAL_STORAGE_KEY","CONFIG_EXPIRY_LOCAL_STORAGE_KEY","consoleLogger","logLevel","INFO","settingsServiceInstance","Api","PerformanceObserver","windowLocation","perfMetrics","onFirstInputDelay","getUrl","mark","measure","measureName","mark1","mark2","getEntriesByType","getEntriesByName","getTimeOrigin","timeOrigin","timing","navigationStart","requiredApisAvailable","setupObserver","entryType","getEntries","entryTypes","getInstance","setupApi","mergeStrings","part1","part2","sizeDiff","resultArray","iid","VisibilityState","SettingsService","instrumentationEnabled","dataCollectionEnabled","loggingEnabled","tracesSamplingRate","networkRequestsSamplingRate","logEndPointUrl","flTransportEndpointUrl","transportKey","logSource","logTraceAfterSampling","logNetworkAfterSampling","configTimeToLive","getAppId","firebaseAppInstance","getProjectId","getApiKey","getFlTransportFullUrl","getIidPromise","iidPromise","installationsService","iidVal","getIid","getAuthTokenPromise","authTokenPromise","authTokenVal","RESERVED_ATTRIBUTE_PREFIXES","ATTRIBUTE_FORMAT_REGEX","MAX_ATTRIBUTE_NAME_LENGTH","MAX_ATTRIBUTE_VALUE_LENGTH","getServiceWorkerStatus","controller","getVisibilityState","VISIBLE","HIDDEN","getEffectiveConnectionType","navigatorConnection","effectiveType","isValidCustomAttributeName","matchesReservedPrefix","isValidCustomAttributeValue","REMOTE_CONFIG_SDK_VERSION","DEFAULT_CONFIGS","FIS_AUTH_PREFIX","getStoredConfig","processConfig","getRemoteConfig","storeConfig","expiryString","configValid","configStringified","configResponse","COULD_NOT_GET_CONFIG_MSG","configEndPoint","Request","Authorization","app_instance_id","app_instance_id_token","app_id","app_version","sdk_version","fpr_enabled","fpr_log_source","fpr_log_endpoint_url","fpr_log_transport_key","fpr_vc_network_request_sampling_rate","fpr_vc_trace_sampling_rate","shouldLogAfterSampling","expiry","samplingRate","initializationStatus","getInitializationPromise","initializePerf","isPerfInitialized","getDocumentReadyComplete","changeInitializationStatus","handler_1","DEFAULT_SEND_INTERVAL_MS","INITIAL_SEND_TIME_DELAY_MS","DEFAULT_REMAINING_TRIES","MAX_EVENT_COUNT_PER_REQUEST","remainingTries","isTransportSetup","setupTransportService","processQueue","dispatchQueueEvents","staged","log_event","source_extension_json_proto3","event_time_ms","eventTime","request_time_ms","client_info","client_type","js_client_info","log_source","sendEventsToFl","postToFlEndpoint","transportWait","nextRequestWaitMillis","requestOffset","logResponseDetails","responseAction","flTransportFullUrl","addToQueue","transportHandler","sendLog","resourceType","logTrace","trace","settingsService","isAuto","sendTraceLog","logNetworkRequest","networkRequest","networkRequestUrl","logEndpointUrl","flEndpointUrl","serializeNetworkRequest","serializeTrace","networkRequestMetric","http_method","httpMethod","http_response_code","response_payload_bytes","responsePayloadBytes","client_start_time_us","startTimeUs","time_to_response_initiated_us","timeToResponseInitiatedUs","time_to_response_completed_us","timeToResponseCompletedUs","perfMetric","application_info","getApplicationInfo","network_request_metric","traceMetric","is_auto","duration_us","durationUs","counters","customAttributes","getAttributes","custom_attributes","trace_metric","google_app_id","web_app_info","page_url","service_worker_status","visibility_state","effective_connection_type","application_process_state","MAX_METRIC_NAME_LENGTH","RESERVED_AUTO_PREFIX","oobMetrics","isValidMetricName","traceName","convertMetricValueToInteger","providedValue","valueAsInteger","Trace","traceMeasureName","api","randomId","traceStartMark","traceStopMark","traceMeasure","calculateTraceMetrics","metrics","metric","incrementMetric","numAsInteger","putMetric","customMetricName","getMetric","putAttribute","isValidName","isValidValue","setStartTime","setDuration","perfMeasureEntries","perfMeasureEntry","createOobTrace","navigationTimings","paintTimings","firstInputDelay","route","timeOriginUs","domInteractive","domContentLoadedEventEnd","loadEventEnd","FIRST_PAINT","FIRST_CONTENTFUL_PAINT","firstPaint","paintObject","firstContentfulPaint","createUserTimingTrace","createNetworkRequestEntry","performanceEntry","responseStart","responseEnd","transferSize","FID_WAIT_TIME_MS","setupOobResources","setupOobTraces","setupNetworkRequests","setupUserTimingTraces","resources","resources_1","timeoutId_1","measures","measures_1","PerformanceController","isAvailable","DEFAULT_ENTRY_NAME","registerPerformance","factoryMethod","GtagCommand","EventName","GA_FID_KEY","ORIGIN_KEY","FETCH_TIMEOUT_MILLIS","DYNAMIC_CONFIG_URL","GTAG_URL","gtagFunction","initializationPromise","eventParams","measurementId","EVENT","setCurrentScreen","screenName","SET","CONFIG","setUserId","setUserProperties","flatProperties","setAnalyticsCollectionEnabled","enabled","insertScriptTag","dataLayerName","getOrCreateDataLayer","dataLayer","gtagOnConfig","gtagCore","initializationPromisesMap","dynamicConfigPromisesList","measurementIdToAppId","gtagParams","correspondingAppId","dynamicConfigResults","foundConfig","gtagOnEvent","initializationPromisesToWaitFor","gaSendToList","_loop_1","gaSendToList_1","sendToId","state_1","wrapGtag","gtagWrapper","command","idOrNameOrParams","e_3","wrapOrCreateGtag","gtagFunctionName","_args","wrappedGtag","findGtagScriptOnPage","scriptTags","ERRORS","LONG_RETRY_FACTOR","BASE_INTERVAL_MILLIS","RetryData","throttleMetadata","intervalMillis","getThrottleMetadata","setThrottleMetadata","deleteThrottleMetadata","defaultRetryData","fetchDynamicConfig","appFields","appUrl","errorMessage","jsonResponse","httpStatus","responseMessage","fetchDynamicConfigWithRetry","retryData","timeoutMillis","signal","backoffCount","throttleEndTimeMillis","AnalyticsAbortSignal","attemptFetchDynamicConfigWithRetry","backoffMillis","setAbortableTimeout","isRetriableError","listeners","validateIndexedDB","initializeIds","dynamicConfigPromise","fidPromise","dynamicConfig","configProperties","envIsValid","gtagCoreFunction","wrappedGtagFunction","gtagName","globalInitDone","settings","warnOnBrowserContextMismatch","mismatchedEnvMessages","analyticsInstance","ANALYTICS_TYPE","registerAnalytics","internalFactory","isDBOpenable","CachingClient","storageCache","isCachedDataFresh","cacheMaxAgeMillis","lastSuccessfulFetchTimestampMillis","cacheAgeMillis","lastSuccessfulFetchResponse","storageOperations","getLastSuccessfulFetchTimestampMillis","getLastSuccessfulFetchResponse","eTag","setLastSuccessfulFetchTimestampMillis","setLastSuccessfulFetchResponse","hasErrorCode","getUserLanguage","navigatorLanguage","languages","language","RestClient","firebaseInstallations","namespace","installationId","installationToken","urlBase","requestBody","fetchPromise","timeoutPromise","originalError_1","responseEtag","originalError_2","FIREBASE_REMOTE_CONFIG_URL_BASE","language_code","originalErrorMessage","RemoteConfigAbortSignal","DEFAULT_VALUE_FOR_BOOLEAN","DEFAULT_VALUE_FOR_STRING","DEFAULT_VALUE_FOR_NUMBER","BOOLEAN_TRUTHY_VALUES","_source","asString","asBoolean","asNumber","getSource","DEFAULT_FETCH_TIMEOUT_MILLIS","DEFAULT_CACHE_MAX_AGE_MILLIS","RemoteConfig","_client","_storageCache","_storage","_logger","_isInitializationComplete","fetchTimeoutMillis","minimumFetchIntervalMillis","defaultConfig","SILENT","getLastFetchStatus","activate","activeConfigEtag","getActiveConfigEtag","setActiveConfig","setActiveConfigEtag","ensureInitialized","_initializePromise","loadFromStorage","abortSignal","lastFetchStatus","setLastFetchStatus","fetchAndActivate","getAll","getAllKeys","getActiveConfig","allConfigs","getBoolean","getNumber","getString","activeConfig","obj1","obj2","toFirebaseError","originalError","APP_NAMESPACE_STORE","DB_NAME","DB_VERSION","openDatabase","onsuccess","onupgradeneeded","keyPath","openDbPromise","etag","compositeKey","createCompositeKey","StorageCache","lastFetchStatusPromise","lastSuccessfulFetchTimestampMillisPromise","activeConfigPromise","timestampMillis","RetryingClient","attemptFetch","registerRemoteConfig","firebaseInstance","remoteConfigFactory","restClient","retryingClient","cachingClient","remoteConfigInstance","name$1","version$1","NAMED_MASKS","datetime","fulltime","card","TOKENS","negate","toLocaleUpperCase","toLocaleLowerCase","KEYS","tokenRegexMask","escRegex","MARKER","useMaskProps","reverseFillMask","fillMask","unmaskedValue","emitValue","inputRef","maskMarked","maskReplaced","computedMask","computedUnmask","hasMask","innerValue","getInitialMaskedValue","updateMaskInternals","masked","maskValue","unmaskValue","fillWithMask","getPaddedMaskMarked","localMaskMarked","padPos","localComputedMask","fillChar","fillCharEscaped","unmask","extract","firstMatch","unmaskChar","negateChar","char1","esc","char2","unmaskMatcher","extractLast","extractMatcher","unmaskMatch","extractMatch","extractMatcherLength","updateMaskValue","rawVal","updateMaskInternalsFlag","inp","selectionEnd","endReverse","unmasked","preMasked","changed","setSelectionRange","moveCursor","rightReverse","moveCursorForPaste","noMarkBefore","leftReverse","onMaskedKeydown","shouldIgnoreKey","selectionStart","keyCode","shiftKey","maskValueReverse","valIndex","maskIndex","valChar","maskDef","firstTokenIndex","useFieldProps","shadowText","debounce","autogrow","inputClass","inputStyle","useFieldEmits","temp","typedNumber","stopValueWatcher","emitTimer","emitValueFn","emitCachedValue","nameProp","useMask","useFileFormDomProps","hasValue","fieldValueIsFilled","onComposition","useKeyComposition","onInput","useFieldState","isTextarea","splitAttrs","onPaste","onChange","onBlur","onFinishEditing","onFocus","onCompositionstart","onCompositionupdate","onCompositionend","onKeydown","onAnimationend","adjustHeight","inputAttrs","autofocus","targetUid","maxlength","readonly","composing","stopWatcher","parentStyle","marginBottom","getCurValue","onMounted","fieldClass","hasShadow","floatingLabel","displayValue","getControl","getShadowControl","renderFn","useField","getNativeElement","arrayFromConstructorAndList","getTypedArrayConstructor","TypedArrayPrototype","compareFn","IS_NODE","getBuiltinModule","addNotification","positionList","badgePositions","notifTypes","positive","iconSet","negative","warning","ongoing","spinner","logError","getComponent","notificationsList","notifRefs","notif","offsetLeft","onDismiss","vert","originalApi","ignoreDefaults","QSpinner","markRaw","hasMedia","avatar","progress","progressClass","progressStyle","animationDuration","closeBtn","lang","noDismiss","dismiss","multiLine","wrapperClass","contentClass","caption","multiline","actionsClass","badge","badgePosition","badgeClass","badgeColor","badgeTextColor","newNotif","TransitionGroup","msgChild","msgData","msgNode","mainChild","QIcon","QAvatar","QBtn","badgeStyle","setDefaults","registerType","typeOpts","parentApp","__installed","createGlobalNode","createChildApp","mount","getMethod","kind","innerResult","innerError","FunctionPrototype","defineBuiltInAccessor","ArrayBufferPrototype","__CANCEL__","serializedParams","hashmarkIndex","isJapanese","isChinese","isKorean","classof","Iterators","ITERATOR","WorkerThreads","$detach","getBuiltInNodeModule","PROPER_STRUCTURED_CLONE_TRANSFER","structuredClone","$ArrayBuffer","$MessageChannel","MessageChannel","detach","transferable","port1","useDarkProps","leftLabel","keepColor","isDark","useDark","optionSizes","rootRef","refocusTargetEl","useRefocusTarget","isTrue","innerClass","injectFormInput","stopAndPrevent","onKeyup","V8_PROTOTYPE_DEFINE_BUG","definePropertyModule","objectKeys","Properties","iterateSimple","SetHelpers","SetPrototype","interruptible","isAxiosError","lineNumber","columnNumber","isStandardBrowserEnv","originURL","msie","urlParsingNode","resolveURL","requestURL","aSet","getSetRecord","otherRec","SIZE_LIST","listenOpts","defineReactivePlugin","sizes","lt","gt","setSizes","noop","setDebounce","bodyClasses","__update","force","updateEvt","updateSizes","updateDebounce","deb","isActive","__media","matchMedia","__updateMedia","addListener","toggle","dark","initialVal","ssrSet","__fromSSR","originalSet","setCssVar","propName","getMobilePlatform","getBodyClasses","cfg","iosStatusBarPadding","applyClientSsrCorrections","newCls","setColors","brand","onKeyDownComposition","autoInstalledPlugins","Body","Dark","Screen","History","Lang","IconSet","appCfg","createApp","globalProperties","reload","appContext","_context","installPlugins","pluginOpts","pluginList","prepareApp","uiOpts","provide","quasarKey","components","directives","directive","__QUASAR_SSR_SERVER__","__QUASAR_VERSION__","SILENT_ON_NON_WRITABLE_LENGTH_SET","isPossiblePrototype","toOffset","Int8ArrayPrototype","WORKS_WITH_OBJECTS_AND_GENERIC_ON_TYPED_ARRAYS","TO_OBJECT_BUG","NATIVE_ARRAY_BUFFER_VIEWS","arrayLike","_createElementBlock","_cache","exportExcel","_renderSlot","_ctx","$slots","createXLSLFormatObj","newXlsHeader","column","innerRowData","fieldValue","getNestedValue","dataFormat","ws_name","__exports__","Vue","VueExcelXlsx","getDevtoolsGlobalHook","getTarget","__VUE_DEVTOOLS_GLOBAL_HOOK__","isProxyAvailable","HOOK_SETUP","HOOK_PLUGIN_SETTINGS_SET","perf","isPerformanceSupported","perf_hooks","targetQueue","onQueue","defaultSettings","localSettingsSaveId","currentSettings","fallbacks","pluginId","setSettings","proxiedOn","_target","proxiedTarget","setupDevtoolsPlugin","pluginDescriptor","setupFn","enableProxy","enableEarlyProxy","__VUE_DEVTOOLS_PLUGIN_API_AVAILABLE__","__VUE_DEVTOOLS_PLUGINS__","transferToFixedLength","uncurryThisAccessor","toIndex","notDetached","arrayBufferByteLength","detachTransferable","DataViewPrototype","isResizable","maxByteLength","getInt8","setInt8","newLength","preserveResizability","newBuffer","newByteLength","fixedLength","copyLength","arch","execPath","argv","cwd","chdir","exit","kill","umask","dlopen","uptime","memoryUsage","uvCounters","features","prompt","stackButtons","cardClass","cardStyle","dialogRef","model","vmColor","hasForm","formProps","isValid","okLabel","cancelLabel","okDisabled","okProps","onOk","cancelProps","onCancel","show","toRaw","onDialogHide","onUpdateModel","onInputKeyup","isKeyCode","getSection","QCardSection","getPrompt","QInput","getOptions","QOptionGroup","getButtons","QCardActions","getCardContent","QSeparator","QCard","QDialog","onHide","DefaultComponent","supportsCustomComponent","pluginProps","DialogComponent","componentProps","otherProps","okFns","cancelFns","API","$forceUpdate","emittedOK","unmount","removeGlobalNode","subTree","__asyncLoader","dialog","globalDialog","DialogPlugin","$Object","classofRaw","createError","pref","config1","config2","getMergedValue","isPlainObject","mergeDeepProperties","valueFromConfig2","defaultToConfig2","mergeDirectKeys","mergeMap","configValue","toAbsoluteIndex","createMethod","IS_INCLUDES","$this","fromIndex","arrayWith","isBigIntArray","toBigInt","PROPER_ORDER","relativeIndex","actualValue","transformData","isCancel","Cancel","throwIfCancellationRequested","cancelToken","throwIfRequested","ITERATOR_INSTEAD_OF_RECORD","portalList","getPortalVm","__qPortalInnerRef","closePortalMenus","$props","separateClosePopup","getParentVm","closePortals","storeKey","useStore","forEachValue","isPromise","assert","genericSubscribe","subs","prepend","resetStore","hot","_actions","_mutations","_wrappedGetters","_modulesNamespaceMap","installModule","_modules","resetStoreState","oldState","oldScope","_scope","getters","_makeLocalGettersCache","wrappedGetters","computedObj","computedCache","strict","enableStrictMode","_withCommit","rootState","getNamespace","namespaced","parentState","getNestedState","moduleName","makeLocalContext","forEachMutation","namespacedType","registerMutation","forEachAction","registerAction","forEachGetter","registerGetter","forEachChild","noNamespace","dispatch","_payload","_options","unifyObjectStyle","commit","makeLocalGetters","gettersProxy","splitPos","localType","rootGetters","_devtoolHook","rawGetter","_committing","deep","LABEL_VUEX_BINDINGS","MUTATIONS_LAYER_ID","ACTIONS_LAYER_ID","INSPECTOR_ID","actionId","addDevtools","homepage","logo","packageName","componentStateTypes","addTimelineLayer","COLOR_LIME_500","addInspector","treeFilterPlaceholder","getInspectorTree","inspectorId","flattenStoreForInspectorTree","rootNodes","formatStoreForInspectorTree","getInspectorState","modulePath","formatStoreForInspectorState","getStoreModule","editInspectorState","notifyComponentUpdate","sendInspectorTree","sendInspectorState","addTimelineEvent","layerId","subscribeAction","_time","groupId","subtitle","after","_custom","COLOR_DARK","COLOR_WHITE","TAG_NAMESPACED","backgroundColor","extractNameFromPath","tags","_children","gettersKeys","storeState","transformPathsToObjectTree","canThrow","leafKey","abstract","moduleMap","Module","rawModule","runtime","_rawModule","rawState","prototypeAccessors$1","addChild","getChild","hasChild","ModuleCollection","rawRootModule","targetModule","newModule","assertRawModule","this$1$1","rawChildModule","isRegistered","functionAssert","expected","objectAssert","assertTypes","makeAssertionMessage","createStore","Store","devtools","_actionSubscribers","_subscribers","_devtools","prototypeAccessors","injectKey","$store","useDevtools","silent","registerModule","preserveState","unregisterModule","hasModule","hotUpdate","newOptions","committing","normalizeNamespace","states","isValidMap","normalizeMap","getModuleByNamespace","vuex","helper","getOwnPropertyNamesModule","getOwnPropertySymbolsModule","getTrue","filterInvalidPath","normalizeExitPath","getShouldExitFn","backButtonExit","exitPaths","__history","qConf","backButton","Plugins","App","shouldExit","backHandler","exitApp","trunc","getDescriptor","EXISTS","PROPER","firebase","tslib","util","_interopDefaultLegacy","firebase__default","ErrorFactory","APP_CHECK_STATES","DEFAULT_STATE","activated","tokenObservers","DEBUG_STATE","getDebugState","BASE_ENDPOINT","EXCHANGE_RECAPTCHA_TOKEN_METHOD","EXCHANGE_DEBUG_TOKEN_METHOD","TOKEN_REFRESH_TIME","OFFSET_DURATION","RETRIAL_MIN_WAIT","RETRIAL_MAX_WAIT","Refresher","operation","retryPolicy","getWaitDuration","lowerBound","upperBound","nextErrorWaitInterval","isRunning","hasSucceeded","error_1","__generator","Deferred","getNextRun","currentErrorWaitInterval","getRecaptcha","grecaptcha","ensureActivated","uuidv4","formatDummyToken","tokenErrorData","encodeString","exchangeToken","timeToLiveAsNumber","ttl","attestationToken","expireTimeMillis","issuedAtTimeMillis","getExchangeRecaptchaTokenRequest","reCAPTCHAToken","recaptcha_token","getExchangeDebugTokenRequest","debugToken","debug_token","STORE_NAME","DEBUG_TOKEN_KEY","getDBPromise","readTokenFromIndexedDB","computeKey","writeTokenToIndexedDB","writeDebugTokenToIndexedDB","readDebugTokenFromIndexedDB","_event","Logger","readTokenFromStorage","isIndexedDBAvailable","writeTokenToStorage","readOrCreateDebugTokenFromStorage","existingDebugToken","newToken","isDebugMode","debugState","getDebugToken","initializeDebugMode","globals","getGlobal","FIREBASE_APPCHECK_DEBUG_TOKEN","deferredToken","defaultTokenErrorData","getToken$2","cachedToken","tokenFromDebugExchange","interopTokenResult","cachedTokenPromise","__assign","notifyTokenListeners","provider","makeDummyTokenResult","addTokenListener","onError","tokenListener","newState","__spreadArray","tokenRefresher","createTokenRefresher","isTokenAutoRefreshEnabled","validToken_1","removeTokenListener","newObservers","tokenObserver","nextRefreshTimeMillis","latestAllowableRefresh","observers_1","ignored","RECAPTCHA_URL","initialize","siteKey","reCAPTCHAState","divId","invisibleDiv","ready","renderInvisibleWidget","loadReCAPTCHAScript","getToken$1","recaptcha","widgetId","sitekey","ReCaptchaV3Provider","_siteKey","attestedClaimsToken","_app","_platformLoggerProvider","CustomProvider","_customProviderOptions","customToken","issuedAtTimeSeconds","issuedAtTime","siteKeyOrProvider","automaticDataCollectionEnabled","setTokenAutoRefreshEnabled","onTokenChanged","onNextOrObserver","onCompletion","nextFn","errorFn","tokenObservers_1","APP_CHECK_NAME","APP_CHECK_NAME_INTERNAL","registerAppCheck","Component","setInstantiationMode","setInstanceCreatedCallback","_instanceIdentifier","_instance","appCheckInternalProvider","isBrowser","isRouteComponent","isESModule","applyToParams","newParams","HASH_RE","AMPERSAND_RE","SLASH_RE","EQUAL_RE","IM_RE","PLUS_RE","ENC_BRACKET_OPEN_RE","ENC_BRACKET_CLOSE_RE","ENC_CARET_RE","ENC_BACKTICK_RE","ENC_CURLY_OPEN_RE","ENC_PIPE_RE","ENC_CURLY_CLOSE_RE","ENC_SPACE_RE","commonEncode","encodeURI","encodeHash","encodeQueryValue","encodeQueryKey","encodePath","encodeParam","TRAILING_SLASH_RE","removeTrailingSlash","parseURL","parseQuery","searchString","hashPos","searchPos","resolveRelativePath","stringifyURL","stringifyQuery","stripBase","isSameRouteLocation","aLastIndex","bLastIndex","isSameRouteRecord","isSameRouteLocationParams","aliasOf","isSameRouteLocationParamsValue","isEquivalentArray","every","fromSegments","toSegments","lastToSegment","toPosition","segment","START_LOCATION_NORMALIZED","redirectedFrom","NavigationType","NavigationDirection","normalizeBase","baseEl","BEFORE_HASH_RE","createHref","getElementPosition","docRect","elRect","behavior","computeScrollPosition","scrollToPosition","scrollToOptions","positionEl","isIdSelector","getScrollKey","scrollPositions","saveScrollPosition","scrollPosition","getSavedScrollPosition","createBaseLocation","createCurrentLocation","slicePos","pathFromHash","useHistoryListeners","historyState","teardowns","pauseState","popStateHandler","fromState","direction","forward","pauseListeners","listen","teardown","beforeUnloadListener","buildState","replaced","computeScroll","useHistoryStateNavigation","changeLocation","hashIndex","createWebHistory","historyNavigation","historyListeners","go","triggerListeners","routerHistory","isRouteLocation","isRouteName","NavigationFailureSymbol","NavigationFailureType","createRouterError","isNavigationFailure","BASE_PARAM_PATTERN","BASE_PATH_PARSER_OPTIONS","sensitive","REGEX_CHARS_RE","tokensToParser","segments","extraOptions","score","segmentScores","tokenIndex","subSegmentScore","repeatable","subPattern","avoidDuplicatedSlash","compareScoreArray","diff","comparePathParserScore","aScore","bScore","comp","isLastScoreNegative","ROOT_TOKEN","VALID_PARAM_RE","tokenizePath","crash","previousState","finalizeSegment","char","customRe","consumeBuffer","addCharToBuffer","createRouteRecordMatcher","matcher","createRouterMatcher","routes","globalOptions","matchers","matcherMap","getRecordMatcher","addRoute","originalRecord","isRootAdd","mainNormalizedRecord","normalizeRouteRecord","mergeOptions","normalizedRecords","aliases","originalMatcher","normalizedRecord","parentPath","connectingSlash","isAliasRecord","removeRoute","isMatchable","insertMatcher","matcherRef","getRoutes","findInsertionIndex","paramsFromLocation","parentMatcher","mergeMetaFields","clearRoutes","normalized","redirect","beforeEnter","normalizeRecordProps","leaveGuards","updateGuards","enterCallbacks","propsObject","partialOptions","lower","upper","mid","sortOrder","insertionAncestor","getInsertionAncestor","ancestor","hasLeadingIM","searchParams","searchParam","eqPos","currentValue","normalizeQuery","normalizedQuery","matchedRouteKey","viewDepthKey","routerKey","routeLocationKey","routerViewLocationKey","useCallbacks","guardToPromiseFn","guard","runWithContext","enterCallbackArray","guardReturn","guardCall","extractComponentsGuards","guardType","guards","rawComponent","__vccOpts","componentPromise","resolved","resolvedComponent","mods","useLink","router","currentRoute","activeRecordIndex","routeMatched","currentMatched","findIndex","parentRecordPath","getOriginalPath","includesParams","isExactActive","navigate","guardEvent","viewTransition","startViewTransition","preferSingleVNode","vnodes","RouterLinkImpl","compatConfig","MODE","activeClass","exactActiveClass","custom","ariaCurrentValue","elClass","getLinkClass","linkActiveClass","linkExactActiveClass","RouterLink","altKey","defaultPrevented","button","currentTarget","outerValue","propClass","globalClass","defaultClass","RouterViewImpl","injectedRoute","routeToDisplay","injectedDepth","initialDepth","matchedRoute","matchedRouteRef","viewRef","oldInstance","oldName","currentName","ViewComponent","normalizeSlot","routePropsOption","routeProps","onVnodeUnmounted","vnode","isUnmounted","slot","slotContent","RouterView","createRouter","parseQuery$1","stringifyQuery$1","beforeGuards","beforeResolveGuards","afterGuards","pendingLocation","scrollBehavior","scrollRestoration","normalizeParams","paramValue","encodeParams","decodeParams","parentOrRoute","recordMatcher","routeMatcher","hasRoute","rawLocation","locationNormalized","matcherLocation","targetParams","locationAsObject","checkCanceledNavigation","pushWithRedirect","handleRedirectRecord","lastMatched","newTargetLocation","targetLocation","shouldRedirect","toLocation","handleScroll","markAsReady","triggerError","finalizeNavigation","triggerAfterEach","checkCanceledNavigationAndReject","installedApps","leavingRecords","updatingRecords","enteringRecords","extractChangingRecords","reverse","canceledNavigationCheck","runGuardQueue","isPush","isFirstNavigation","removeHistoryListener","setupListeners","_from","listening","readyHandlers","errorListeners","isReady","started","beforeEach","beforeResolve","afterEach","$router","reactiveRoute","unmountApp","recordFrom","recordTo","useRoute","_name","iterate","NATIVE_WEAK_MAP","sharedKey","OBJECT_ALREADY_INITIALIZED","getterFor","facade","STATE","previousValue","sequenceNumberHandler","writeSequenceNumber","WARN","nanoseconds","fromMillis","fromDate","toDate","toMillis","_compareTo","isEqual","padStart","fromTimestamp","compareTo","toMicroseconds","toTimestamp","comparator","construct","popFirst","popLast","firstSegment","lastSegment","isEmpty","isPrefixOf","isImmediateParentOf","canonicalString","emptyPath","isValidIdentifier","isKeyField","keyField","fromServerFormat","covers","J","binaryString","fromBase64String","fromUint8Array","toBase64","toUint8Array","approximateByteSize","EMPTY_BYTE_STRING","nanos","et","nt","mapValue","__type__","stringValue","__previous_value__","__local_write_time__","timestampValue","st","ut","isInteger","MIN_SAFE_INTEGER","fromPath","fromName","hasCollectionId","isDocumentKey","booleanValue","bytesValue","referenceValue","geoPointValue","latitude","longitude","integerValue","doubleValue","arrayValue","yt","database","It","Tt","Et","empty","getFieldsMap","setAll","applyChanges","St","Nt","documentType","documentState","newInvalidDocument","newFoundDocument","newNoDocument","newUnknownDocument","convertToFoundDocument","convertToNoDocument","convertToUnknownDocument","setHasCommittedMutations","setHasLocalMutations","hasLocalMutations","hasCommittedMutations","isValidDocument","isFoundDocument","isNoDocument","isUnknownDocument","Dt","collectionGroup","orderBy","filters","startAt","endAt","At","kt","jt","Ct","Gt","zt","xt","Rt","Lt","Mt","Vt","qt","Ut","Ot","Pt","Ft","nullValue","Bt","Kt","Qt","Wt","explicitOrderBy","limitType","Ht","Yt","$t","Xt","Jt","Zt","te","ne","ie","oe","ue","ae","he","fe","le","de","pe","me","ge","we","be","Ie","ve","ye","Te","Ee","Se","Ne","transformResults","De","updateTime","exists","ke","Pe","Ve","fieldTransforms","Fe","precondition","Me","xe","qe","Oe","Re","Le","fieldMask","Ue","je","Ke","Ge","Qe","ze","We","Ye","EMPTY","BLACK","minKey","maxKey","inorderTraversal","reverseTraversal","getIteratorFrom","getReverseIterator","getReverseIteratorFrom","isReverse","nodeStack","getNext","hasNext","peek","RED","fixUp","removeMin","isRed","moveRedLeft","rotateRight","moveRedRight","rotateLeft","colorFlip","checkMaxDepth","$e","forEachInRange","forEachWhile","firstAfterOrEqual","Xe","unionWith","iter","Je","Ze","tn","en","nn","rn","un","an","snapshotVersion","targetChanges","targetMismatches","documentUpdates","resolvedLimboDocuments","createSynthesizedRemoteEventForCurrentChange","hn","createSynthesizedTargetChangeForCurrentChange","resumeToken","addedDocuments","modifiedDocuments","removedDocuments","removedTargetIds","ln","dn","targetIds","cause","pn","mn","yn","vn","forEachTarget","removeTarget","purpose","getRemoteKeysForTarget","gn","asc","wn","in","bn","databaseId","In","Tn","_n","En","Sn","Nn","$n","An","kn","Cn","xn","Ln","On","Pn","updateMask","Yn","verify","updateTransforms","fieldPath","setToServerValue","appendMissingElements","removeAllFromArray","isNone","currentDocument","Fn","fieldPaths","Mn","documents","Vn","structuredQuery","collectionId","allDescendants","unaryFilter","Qn","fieldFilter","Gn","compositeFilter","where","Kn","Bn","qn","Un","zn","jn","Hn","Wn","Xn","Zn","Jn","tr","er","nr","ownerId","allowTabSynchronization","leaseTimestampMs","lastAcknowledgedBatchId","lastStreamToken","ir","batchId","localWriteTimeMs","baseMutations","userMutationsIndex","userMutationsKeyPath","or","prefixForUser","prefixForPath","PLACEHOLDER","sr","readTime","ur","ar","unknownDocument","noDocument","readTimeIndex","readTimeIndexPath","collectionReadTimeIndex","collectionReadTimeIndexPath","cr","byteSize","canonicalId","lastListenSequenceNumber","lastLimboFreeSnapshotVersion","queryTargetsIndexName","queryTargetsKeyPath","fr","sequenceNumber","documentTargetsIndex","documentTargetsKeyPath","lr","highestTargetId","highestListenSequenceNumber","lastRemoteSnapshotVersion","targetCount","dr","clientId","updateTimeMs","networkEnabled","inForeground","yr","bundleId","vr","bundledQuery","mr","gr","wr","onCommittedListeners","addOnCommittedListener","raiseOnCommittedEvent","br","Ir","nextCallback","catchCallback","isDone","callbackAttached","wrapFailure","wrapSuccess","toPromise","wrapUserFunction","Tr","oncomplete","onabort","Sr","Cr","Dr","Ar","deleteDatabase","onblocked","onversionchange","runTransaction","Er","Nr","primaryKey","continue","openKeyCursor","openCursor","kr","xr","currentSequenceNumber","Rr","Lr","localWriteTime","applyToRemoteDocument","mutationResults","applyToLocalView","applyToLocalDocumentSet","Or","commitVersion","docVersions","Pr","withSequenceNumber","withResumeToken","withLastLimboFreeSnapshotVersion","Fr","Mr","jr","Vr","qr","Br","Ur","Kr","Gr","Qr","zr","Wr","getBundleMetadata","Hr","saveBundleMetadata","getNamedQuery","Yr","saveNamedQuery","$r","Xr","addToCollectionParentIndex","getCollectionParents","Jr","Zr","IDBKeyRange","ti","didRun","sequenceNumbersCollected","targetsRemoved","documentsRemoved","ei","cacheSizeCollectionThreshold","percentileToCollect","maximumSequenceNumbersToCollect","withCacheSize","DEFAULT_COLLECTION_PERCENTILE","DEFAULT_MAX_SEQUENCE_NUMBERS_TO_COLLECT","ni","only","DEFAULT","DISABLED","ii","referenceDelegate","isAuthenticated","checkEmpty","NEGATIVE_INFINITY","addMutationBatch","ui","lookupMutationBatch","getNextMutationBatchAfterBatchId","getHighestUnacknowledgedBatchId","getAllMutationBatches","getAllMutationBatchesAffectingDocumentKey","getAllMutationBatchesAffectingDocumentKeys","getAllMutationBatchesAffectingQuery","removeMutationBatch","markPotentiallyOrphaned","performConsistencyCheck","containsKey","oi","ci","allocateTargetId","getLastRemoteSnapshotVersion","getHighestSequenceNumber","setTargetsMetadata","addTargetData","updateTargetData","removeTargetData","removeMatchingKeysForTargetId","removeTargets","li","getTargetCount","getTargetData","addMatchingKeys","di","addReference","removeMatchingKeys","removeReference","getMatchingKeysForTargetId","pi","yi","vi","garbageCollector","asyncQueue","enqueueAfterDelay","collectGarbage","gi","calculateTargetCount","nthSequenceNumber","removeOrphanedDocuments","collect","getCacheSize","wi","getTargetCache","bi","getRemoteDocumentCache","newChangeBuffer","getEntry","removeEntry","updateLimboDocument","getSize","Ii","mapKeyFn","equalsFn","Ti","changes","changesApplied","getReadTime","addEntry","assertNotApplied","getFromCache","getAllFromCache","Ni","Di","getDocumentsMatchingQuery","Ei","trackRemovals","Si","autoIncrement","createIndex","unique","ki","deleteObjectStore","xi","persistenceKey","isPrimary","setDatabaseDeletedListener","newVersion","setNetworkEnabled","enqueueAndForget","Li","enqueueRetryable","Ri","shutdown","getMutationQueue","getIndexManager","getBundleCache","appVersion","enterRestrictedMode","Oi","isDefaultDatabase","Pi","Fi","Mi","fromCache","docChanges","Vi","hasPendingWrites","qi","persistence","Ui","removedBatchIds","addedBatchIds","ji","Ki","Gi","Qi","zi","Wi","Yi","$i","Xi","Ji","Zi","eo","no","ro","ts","es","io","us","ls","docs","so","uo","ds","ys","ao","gs","ps","co","Es","Ts","Is","ho","As","Rs","vs","Ps","fo","po","yo","GOOGLE_CREDENTIALS","FIRST_PARTY","MOCK_USER","vo","user","Vs","Ss","mo","activeTargetIds","wo","onlineState","bo","Ds","Cs","Io","Ns","syncEngine","onlineStateHandler","Fs","$s","currentUser","Os","Ms","Ls","Bs","qs","Us","Ks","Qs","Ws","getAllActiveQueryTargets","Gs","isActiveQueryTarget","addPendingMutation","zs","updateMutationState","Hs","addLocalQueryTarget","Js","removeLocalQueryTarget","isLocalQueryTarget","clearQueryState","updateQueryState","Ys","handleUserChange","setOnlineState","Xs","notifyBundleLoaded","Zs","storageArea","To","_o","Eo","So","BatchGetDocuments","Commit","RunQuery","No","forceLongPolling","autoDetectLongPolling","useFetchStreams","listenOnce","COMPLETE","getLastErrorCode","getResponseJson","TIMEOUT","HTTP_ERROR","httpSessionIdParam","initMessageHeaders","messageUrlParams","sendRawJson","supportsCrossDomainXhr","internalChannelParams","forwardChannelRequestTimeoutMs","detectBufferingProxy","xmlHttpFactory","httpHeadersOverwriteParam","createWebChannel","OPEN","CLOSE","MESSAGE","STAT_EVENT","PROXY","NOPROXY","databaseInfo","ssl","authHeaders","ko","xo","timerId","skipDelay","Ro","invalidateToken","Lo","targetChange","targetChangeType","documentChange","documentDelete","documentRemove","addTarget","Oo","streamToken","writeResults","commitTime","writes","Po","credentials","Fo","Mo","localStore","datastore","remoteSyncer","zo","qo","Vo","Uo","Qo","Go","jo","Ko","Wo","Yo","$o","rejectListen","Xo","applyRemoteEvent","Jo","Zo","applySuccessfulWrite","rejectFailedWrite","targetTimeMs","removalCallback","deferred","createAndSchedule","timerHandle","handleDelayElapsed","keyedMap","sortedSet","emptySet","oldDocs","mutatedKeys","syncStateChanged","excludesMetadataChanges","fromInitialDocuments","queries","onListen","onUnlisten","includeMetadataChanges","bytesLoaded","documentsLoaded","documentMetadata","taskState","totalDocuments","remoteStore","eventManager","sharedClientState","maxConcurrentLimboResolutions","uu","isPrimaryClient","au","tu","eu","nu","ru","iu","ou","su","cu","_completeWith","_failWith","hu","synchronizeTabs","gcScheduler","initialUser","fu","cacheSizeBytes","forceOwnership","lu","du","createDatastore","createRemoteStore","createEventManager","createSyncEngine","handleCredentialChange","pu","releaseLock","closed","yu","TextDecoder","tc","mu","readVersions","committed","lastWriteError","writtenDocs","ensureCommitNotCalled","missing","recordVersion","toMutation","preconditionForUpdate","gu","updateFunction","ec","sc","ic","rc","wu","credentialListener","setChangeListener","getConfiguration","setCredentialChangeListener","verifyNotTerminated","isShuttingDown","enqueueAndForgetEvenWhileRestricted","onlineComponents","offlineComponents","removeChangeListener","bu","verifyOperationInProgress","Iu","Tu","_u","Eu","Su","Nu","Du","ku","xu","Ru","Lu","Ou","Pu","changeListener","Fu","Mu","oc","uc","addAuthTokenListener","onInit","removeAuthTokenListener","getUid","Vu","hc","fc","getAuthHeaderValueForFirstParty","qu","Uu","mergeFields","ju","Ku","Gu","Qu","zu","Wu","ignoreUndefinedProperties","experimentalForceLongPolling","experimentalAutoDetectLongPolling","Yu","_persistenceKey","_settings","_settingsFrozen","_databaseId","_credentials","_terminateTask","_setSettings","sessionIndex","iamToken","_getSettings","_freezeSettings","_terminate","$u","converter","_key","firestore","Ju","withConverter","Xu","_query","_path","Zu","ta","ea","na","ra","wc","mc","yc","Ec","Tc","Ic","Ac","Rc","bc","vc","Pc","Vc","Sc","Dc","ia","_progressObserver","_taskCompletionResolver","_lastProgress","onProgress","sa","_queue","_firestoreClient","aa","ha","DOMException","fa","_initialized","_terminated","la","_internalPath","da","_byteString","pa","_methodName","ya","_lat","_long","va","ma","ga","wa","Cc","Nc","xc","kc","Fc","$c","Oc","Mc","Lc","Ua","methodName","Bc","qc","Ia","Uc","Ta","Fa","Oa","Ma","Ea","_toFieldTransform","Sa","Na","La","ka","Qc","qa","xa","Ra","Pa","Va","ja","_firestore","_userDataWriter","_document","_converter","Ka","fromFirestore","convertValue","Ga","Qa","za","_firestoreImpl","Wa","serverTimestamps","_snapshot","_cachedChanges","_cachedChangesIncludeMetadataChanges","oldIndex","Ya","$a","Xa","Za","_apply","jc","Wc","Gc","zc","Hc","Jc","Yc","Xc","convertTimestamp","convertServerTimestamp","convertBytes","convertReference","convertGeoPoint","convertArray","convertObject","convertDocumentKey","toFirestore","_commitHandler","_committed","_dataReader","_verifyNotCommitted","pc","_transaction","enableIndexedDbPersistence","enableMultiTabIndexedDbPersistence","clearIndexedDbPersistence","Zc","enableNetwork","disableNetwork","enablePersistence","experimentalForceOwningTab","clearPersistence","_removeServiceInstance","waitForPendingWrites","onSnapshotsInSync","collection","onSnapshot","limitToLast","startAfter","endBefore","documentId","serverTimestamp","arrayUnion","arrayRemove","ReadableStream","getReader","TextEncoder","sfc","arrayToReversed","historyEntry","validate","resetValidation","requiresQForm","$form","inject","formKey","unbindComponent","bindComponent","hexa","hexOrHexa","rgba","testPattern","timeOrFulltime","hexColor","hexaColor","hexOrHexaColor","rgbColor","rgbaColor","rgbOrRgbaColor","hexOrRgbColor","hexaOrRgbaColor","anyColor","lazyRulesValues","useValidateProps","noErrorIcon","reactiveRules","lazyRules","focused","innerLoading","innerErrorMessage","isDirtyModel","useFormChild","unwatchRules","validateIndex","hasRules","hasError","computedErrorMessage","promises","validateIfNeeded","changedRules","listenerRE","onBeforeUpdate","getTargetUid","stackLabel","hint","hideHint","suffix","labelColor","filled","outlined","borderless","standout","labelSlot","bottomSlots","hideBottomSpace","itemAligned","clearable","clearIcon","hasPopupOpen","useSplitAttrs","targetRef","controlRef","focusoutTimer","controlEvents","onFocusin","onControlFocusin","onFocusout","onControlFocusout","clearValue","computedCounter","maxValues","useValidate","shouldRenderBottom","styleType","hasLabel","labelClass","controlSlotScope","focusFn","removeFocusFn","hasFocus","prevent","getControlContainer","getInnerAppendNode","getInnerAppend","getControlChild","rawControl","control","getBottom","hasCounter","clearErrorStack","ERROR_STACK_INSTALLABLE","captureStackTrace","showRipple","forceCenter","modifiers","center","innerNode","diameter","sqrt","radius","centerX","centerY","opacity","updateModifiers","early","keyCodes","beforeMount","qSkipRipple","qKeyEvent","keystart","__qripple","addEvt","updated","beforeUnmount","cleanEvt","_qripple","dummy","Wrapper","NewTarget","NewTargetPrototype","NATIVE_ARRAY_BUFFER","globalNodes","intersection","activeEffectScope","activeSub","EffectScope","detached","_active","effects","cleanups","_isPaused","scopes","currentEffectScope","fromParent","effectScope","getCurrentScope","onScopeDispose","failSilently","pausedQueueEffects","ReactiveEffect","depsTail","scheduler","trigger","cleanupEffect","prepareDeps","prevEffect","prevShouldTrack","cleanupDeps","nextDep","removeSub","onStop","runIfDirty","isDirty","batchedSub","batchedComputed","batchDepth","isComputed","startBatch","endBatch","prevActiveLink","dep","activeLink","prevDep","removeDep","refreshComputed","_dirty","globalVersion","isSSR","prevSub","soft","nextSub","effect","runner","trackStack","pauseTracking","resetTracking","Link","Dep","debugInfo","addSub","currentTail","targetMap","ITERATE_KEY","MAP_KEY_ITERATE_KEY","ARRAY_ITERATE_KEY","depsMap","oldTarget","targetIsArray","isArrayIndex","key2","getDepFromReactive","depMap","reactiveReadArray","isShallow","toReactive","shallowReadArray","arrayInstrumentations","searchProxy","separator","noTracking","toReversed","comparer","toSorted","toSpliced","wrapValue","_next","wrappedRetFn","needsWrap","methodFn","result2","wrappedFn","isProxy","isNonTrackableKeys","builtInSymbols","_isReadonly","_isShallow","isReadonly2","isShallow2","shallowReadonlyMap","readonlyMap","shallowReactiveMap","reactiveMap","isRef","super","isOldValueReadonly","isReadonly","hadKey","deleteProperty","ownKeys","ReadonlyReactiveHandler","mutableHandlers","readonlyHandlers","shallowReactiveHandlers","shallowReadonlyHandlers","toShallow","getProto","createIterableMethod","rawTarget","targetIsMap","isPair","isKeyOnly","innerIterator","toReadonly","createReadonlyMethod","createInstrumentations","shallow","instrumentations","rawKey","observed","hadItems","iteratorMethods","createInstrumentationGetter","mutableCollectionHandlers","shallowCollectionHandlers","readonlyCollectionHandlers","shallowReadonlyCollectionHandlers","targetTypeMap","rawType","getTargetType","isExtensible","createReactiveObject","shallowReactive","shallowReadonly","baseHandlers","collectionHandlers","proxyMap","existingProxy","targetType","isReactive","createRef","shallowRef","_rawValue","useDirectValue","triggerRef","ref2","unref","toValue","shallowUnwrapHandlers","proxyRefs","objectWithRefs","CustomRefImpl","_get","_set","newVal","customRef","toRefs","propertyToRef","ObjectRefImpl","_object","_defaultValue","GetterRefImpl","_getter","toRef","ComputedRefImpl","__v_isRef","getterOrOptions","debugOptions","cRef","TrackOpTypes","TriggerOpTypes","INITIAL_WATCHER_VALUE","cleanupMap","activeWatcher","getCurrentWatcher","onWatcherCleanup","cleanupFn","owner","once","augmentJob","reactiveGetter","source2","traverse","boundCleanup","forceTrigger","isMultiSource","currentEffect","baseGetter","watchHandle","job","immediateFirstRun","dirty","currentWatcher","cleanup2","pushWarningContext","popWarningContext","isWarning","warn$1","appWarnHandler","warnHandler","getComponentTrace","callWithErrorHandling","formatComponentName","warnArgs","formatTrace","currentVNode","normalizedStack","recurseCount","parentInstance","logs","formatTraceEntry","postfix","formatProps","formatProp","assertNumber","ErrorCodes","ErrorTypeStrings$1","handleError","callWithAsyncErrorHandling","throwInDev","contextVNode","throwUnhandledErrorInProduction","exposedInstance","errorCapturedHooks","throwInProd","flushIndex","pendingPostFlushCbs","activePostFlushCbs","postFlushIndex","resolvedPromise","currentFlushPromise","middleJob","middleJobId","queueJob","jobId","lastJob","queueFlush","flushJobs","queuePostFlushCb","flushPreFlushCbs","flushPostFlushCbs","deduped","devtools$1","devtoolsNotInstalled","setDevtoolsHook$1","replay","__VUE_DEVTOOLS_HOOK_REPLAY__","newHook","currentRenderingInstance","currentScopeId","setCurrentRenderingInstance","__scopeId","pushScopeId","popScopeId","withScopeId","withCtx","isNonScopedSlot","renderFnWithContext","setBlockTracking","prevInstance","withDirectives","getComponentPublicInstance","bindings","dirs","mounted","invokeDirectiveHook","prevVNode","oldBindings","TeleportEndKey","isTeleport","__isTeleport","isTeleportDisabled","isTeleportDeferred","isTargetSVG","SVGElement","isTargetMathML","MathMLElement","resolveTarget","targetSelector","TeleportImpl","n1","n2","anchor","parentComponent","parentSuspense","slotScopeIds","optimized","internals","mountChildren","patchChildren","pbc","patchBlockChildren","createText","createComment","shapeFlag","dynamicChildren","placeholder","mainAnchor","container2","anchor2","isCE","_teleportTarget","mountToTarget","targetAnchor","prepareAnchor","updateCssVars","queuePostRenderEffect","__isMounted","wasDisabled","currentContainer","currentAnchor","traverseStaticChildren","moveTeleport","nextTarget","um","hostRemove","doRemove","shouldRemove","move","hydrate","hydrateTeleport","parentAnchor","moveType","isReorder","hydrateChildren","targetNode","_lpa","firstChild","Teleport","isDisabled","leaveCbKey","enterCbKey","useTransitionState","isMounted","isLeaving","isUnmounting","leavingVNodes","TransitionHookValidator","BaseTransitionPropsValidators","persisted","onBeforeEnter","onEnter","onAfterEnter","onEnterCancelled","onBeforeLeave","onLeave","onAfterLeave","onLeaveCancelled","onBeforeAppear","onAppear","onAfterAppear","onAppearCancelled","recursiveGetSubtree","BaseTransitionImpl","getTransitionRawChildren","findNonCommentChild","rawProps","emptyPlaceholder","innerChild","getInnerChild$1","enterHooks","resolveTransitionHooks","setTransitionHooks","oldInnerChild","isSameVNodeType","leavingHooks","afterLeave","delayLeave","earlyRemove","delayedLeave","leavingVNodesCache","getLeavingNodesForType","hasFound","BaseTransition","postClone","callHook","callAsyncHook","hook2","leavingVNode","afterHook","cancelHook","called","cancelled","vnode2","hooks2","isKeepAlive","cloneVNode","ssContent","ssFallback","keepComment","parentKey","keyedFragmentCount","Fragment","patchFlag","useId","idPrefix","markAsyncBoundary","useTemplateRef","refs","setRef","rawRef","oldRawRef","isUnmount","isAsyncWrapper","__asyncResolved","refValue","oldRef","setupState","rawSetupState","canSetSetupRef","_isString","_isRef","doSet","hasLoggedMismatchError","logMismatchError","isSVGContainer","namespaceURI","isMathMLContainer","getContainerType","isComment","createHydrationFunctions","rendererInternals","mountComponent","patchProp","hasChildNodes","__VUE_PROD_HYDRATION_MISMATCH_DETAILS__","_vnode","hydrateNode","isFragmentStart","onMismatch","handleMismatch","domType","nextNode","isTemplateNode","replaceNode","Static","needToAdoptContent","staticCount","hydrateFragment","hydrateElement","locateClosingAnchor","createVNode","lastChild","createTextVNode","forcePatch","vnodeHooks","needCallTransitionHooks","needTransition","hasWarned","isMismatchAllowed","clientText","created","propHasMismatch","onVnodeBeforeMount","invokeVNodeHook","onVnodeMounted","queueEffectWithSuspense","enter","parentVNode","normalizeVNode","isText","fragmentSlotScopeIds","isFragment","next2","updateHOCHostEl","newNode","parentNode2","replaceChild","clientValue","mismatchType","mismatchKey","isSetEqual","toClassSet","actualMap","toStyleMap","expectedMap","resolveCssVars","isMapEqual","preSegment","MismatchTypeString","postSegment","styleMap","getCssVars","cssVars","allowMismatchAttr","allowedType","allowedAttr","requestIdleCallback","cancelIdleCallback","hydrateOnIdle","elementIsVisibleInViewport","hydrateOnVisible","ob","IntersectionObserver","isIntersecting","hydrateOnMediaQuery","mql","hydrateOnInteraction","interactions","hasHydrated","doHydrate","forEachElement","defineAsyncComponent","loader","loadingComponent","errorComponent","hydrateStrategy","suspensible","userOnError","resolvedComp","pendingRequest","retries","retry","thisRequest","userRetry","userFail","bum","currentInstance","createInnerComp","suspense","isInSSRComponentSetup","delayed","__isKeepAlive","KeepAliveImpl","exclude","sharedContext","renderer","_unmount","storageContainer","resetShapeFlag","pruneCache","getComponentName","pruneCacheEntry","cached","instance2","isDeactivated","vnodeHook","deactivate","invalidateMount","pendingCacheKey","cacheSubtree","isSuspense","getInnerChild","onUpdated","rawVNode","isVNode","cachedVNode","KeepAlive","onActivated","registerKeepAliveHook","onDeactivated","wrappedHook","__wdc","injectHook","injectToKeepAliveRoot","keepAliveRoot","injected","onUnmounted","__weh","setCurrentInstance","createHook","lifecycle","onBeforeMount","onServerPrefetch","onRenderTriggered","onRenderTracked","onErrorCaptured","COMPONENTS","DIRECTIVES","resolveComponent","maybeSelfReference","resolveAsset","NULL_DYNAMIC_COMPONENT","resolveDynamicComponent","resolveDirective","warnMissing","selfName","registry","renderList","renderItem","sourceIsArray","sourceIsReactiveArray","createSlots","dynamicSlots","renderSlot","fallback","noSlotted","openBlock","createBlock","validSlotContent","ensureValidVNode","slotKey","rendered","toHandlers","preserveCaseIfNecessary","getPublicInstance","isStatefulComponent","publicPropertiesMap","$el","$data","$attrs","$refs","$parent","$host","resolveMergedOptions","$nextTick","$watch","instanceWatch","hasSetupBinding","__isScriptSetup","PublicInstanceProxyHandlers","accessCache","normalizedProps","propsOptions","shouldCacheAccess","publicGetter","cssModule","__cssModules","RuntimeCompiledPublicInstanceProxyHandlers","unscopables","defineProps","defineEmits","defineExpose","exposed","defineOptions","defineSlots","defineModel","withDefaults","useSlots","useAttrs","setupContext","createSetupContext","normalizePropsOrEmits","mergeDefaults","skipFactory","mergeModels","createPropsRestProxy","excludedKeys","withAsyncContext","getAwaitable","awaitable","unsetCurrentInstance","applyOptions","publicThis","dataOptions","computedOptions","watchOptions","provideOptions","injectOptions","beforeUpdate","deactivated","beforeDestroy","destroyed","unmounted","renderTracked","renderTriggered","errorCaptured","serverPrefetch","expose","checkDuplicateProperties","resolveInjections","methodHandler","createWatcher","provides","registerLifecycleHook","_hook","normalizeInject","createPathGetter","mixins","extends","extendsOptions","globalMixins","optionsCache","optionMergeStrategies","strats","asMixin","strat","internalOptionMergeStrats","mergeDataFn","mergeEmitsOrPropsOptions","mergeObjectOptions","mergeAsArray","mergeWatchOptions","mergeInject","merged","createAppContext","isNativeTag","compilerOptions","propsCache","emitsCache","uid$1","createAppAPI","rootComponent","rootProps","installedPlugins","pluginCleanupFns","_uid","_component","_props","_container","mixin","rootContainer","isHydrate","_ceVNode","__vue_app__","lastApp","currentApp","parentProvides","treatDefaultAsFactory","hasInjectionContext","internalObjectProto","createInternalObject","isInternalObject","initProps","isStateful","propsDefaults","setFullProps","updateProps","rawPrevProps","rawCurrentProps","hasAttrsChanged","kebabKey","resolvePropValue","propsToUpdate","dynamicProps","isEmitListener","emitsOptions","camelizedKey","needCastKeys","rawCastValues","camelKey","castValues","isAbsent","hasDefault","_setProp","mixinPropsCache","normalizePropsOptions","hasExtends","extendProps","raw2","normalizedKey","validatePropName","propType","shouldCast","shouldCastTrue","isInternalKey","normalizeSlotValue","rawSlot","normalizeObjectSlots","rawSlots","normalizeVNodeSlots","assignSlots","initSlots","updateSlots","needDeletionCheck","deletionComparisonTarget","$stable","initFeatureFlags","createRenderer","baseCreateRenderer","createHydrationRenderer","createHydrationFns","__VUE__","hostInsert","hostPatchProp","hostCreateElement","hostCreateText","hostCreateComment","setText","hostSetText","setElementText","hostSetElementText","hostParentNode","hostNextSibling","setScopeId","hostSetScopeId","insertStaticContent","hostInsertStaticContent","getNextHostNode","processText","processCommentNode","mountStaticNode","processFragment","processElement","processComponent","moveStaticNode","removeStaticNode","mountElement","patchElement","resolveChildrenNamespace","cloneIfMounted","oldProps","newProps","toggleRecurse","onVnodeBeforeUpdate","patchProps","onVnodeUpdated","oldChildren","newChildren","fallbackContainer","oldVNode","newVNode","fragmentStartAnchor","fragmentEndAnchor","updateComponent","initialVNode","createComponentInstance","setupComponent","asyncDep","registerDep","setupRenderEffect","shouldUpdateComponent","asyncResolved","updateComponentPreRender","componentUpdateFn","nonHydratedAsyncRoot","locateNonHydratedAsyncRoot","originNext","nextTree","renderComponentRoot","prevTree","bm","isAsyncWrapperVNode","hydrateSubTree","__asyncHydrate","_injectChildStyle","scopedInitialVNode","nextVNode","prevProps","prevShapeFlag","patchKeyedChildren","patchUnkeyedChildren","unmountChildren","oldLength","commonLength","nextChild","l2","nextPos","keyToNewIndexMap","patched","toBePatched","moved","maxNewIndexSoFar","newIndexToOldIndexMap","prevChild","increasingNewIndexSequence","getSequence","nextIndex","needTransition2","leave","remove2","performLeave","cacheIndex","renderCache","shouldInvokeDirs","shouldInvokeVnodeHook","onVnodeBeforeUnmount","unmountComponent","hasOnce","removeFragment","performRemove","pendingBranch","suspenseId","pendingId","teleportEnd","isFlushing","currentNamespace","ch1","ch2","arrI","subComponent","ssrContextKey","useSSRContext","watchEffect","doWatch","watchPostEffect","watchSyncEffect","baseWatchOptions","runsImmediately","ssrCleanup","__watcherHandles","watchStopHandle","isPre","isFirstRun","useModel","camelizedName","hyphenatedName","getModelModifiers","localValue","prevEmittedValue","prevSetValue","propValue","emittedValue","i2","modelName","modelModifiers","rawArgs","isModelListener","handlerName","onceHandler","emitted","normalizeEmitsOptions","extendEmits","normalizedFromExtend","withProxy","fallthroughAttrs","proxyToUse","thisProxy","render2","getFunctionalFallthrough","blockStack","filterModelListeners","filterSingleRoot","singleRoot","prevChildren","nextProps","nextChildren","hasPropsChanged","nextKeys","activeBranch","__isSuspense","SuspenseImpl","mountSuspense","isInFallback","patchSuspense","hydrateSuspense","normalize","normalizeSuspenseChildren","Suspense","triggerEvent","eventListener","hiddenContainer","createSuspenseBoundary","setActiveBranch","newBranch","newFallback","isHydrating","parentSuspenseId","isSuspensible","isVNodeSuspensible","initialAnchor","sync","parentComponent2","delayEnter","hasUnresolvedAncestor","fallbackVNode","namespace2","mountFallback","optimized2","isInPendingSuspense","hydratedEl","asyncSetupResult","handleSetupResult","parentSuspense2","isSlotChildren","normalizeSuspenseSlot","block","trackBlock","isBlockTreeEnabled","currentBlock","closeBlock","singleChild","branch","disableTracking","vnodeArgsTransformer","inVOnce","setupBlock","createElementBlock","createBaseVNode","__v_isVNode","transformVNodeArgs","transformer","normalizeKey","normalizeRef","ref_key","ref_for","isBlockNode","needFullChildrenNormalization","__v_skip","normalizeChildren","_createVNode","cloned","isClassComponent","guardReactiveProps","extraProps","mergeRef","cloneTransition","mergedProps","mergeProps","flag","createStaticVNode","numberOfNodes","createCommentVNode","asBlock","slotFlag","toMerge","incoming","emptyAppContext","exposeProxy","rtg","rtc","internalSetCurrentInstance","setInSSRSetupState","registerGlobalSetter","setters","compile","installWithProxy","setupResult","setupStatefulComponent","isAsyncSetup","resolvedResult","finishComponentSetup","__ssrInlineRender","ssrRender","registerRuntimeCompiler","_compile","_rc","isRuntimeOnly","skipOptions","template","delimiters","componentCompilerOptions","finalCompilerOptions","attrsProxyHandlers","classifyRE","classify","includeInferred","__name","__file","inferFromRegistry","propsOrChildren","initCustomFormatter","withMemo","isMemoSame","ErrorTypeStrings","setDevtoolsHook","_ssrUtils","ssrUtils","resolveFilter","compatUtils","DeprecationTypes","policy","trustedTypes","createPolicy","createHTML","unsafeToTrustedHTML","svgNS","mathmlNS","templateContainer","nodeOps","createElementNS","multiple","createTextNode","nodeValue","cloneNode","wrapper","TRANSITION","ANIMATION","vtcKey","DOMTransitionPropsValidators","enterFromClass","enterActiveClass","enterToClass","appearFromClass","appearActiveClass","appearToClass","leaveFromClass","leaveActiveClass","leaveToClass","TransitionPropsValidators","decorate$1","resolveTransitionProps","hasExplicitCallback","baseProps","durations","normalizeDuration","enterDuration","leaveDuration","finishEnter","isAppear","isCancelled","_enterCancelled","removeTransitionClass","finishLeave","_isLeaving","makeEnterHook","nextFrame","addTransitionClass","whenTransitionEnds","forceReflow","NumberOf","_vtc","endId","expectedType","explicitTimeout","_endId","resolveIfNotStale","propCount","getTransitionInfo","endEvent","getStyleProperties","transitionDelays","transitionDurations","transitionTimeout","getTimeout","animationDelays","animationDurations","animationTimeout","hasTransform","delays","toMs","offsetHeight","patchClass","transitionClasses","vShowOriginalDisplay","vShowHidden","vShow","setDisplay","initVShowForSSR","getSSRProps","CSS_VAR_TEXT","useCssVars","updateTeleports","vars","setVarsOnNode","setVars","setVarsOnVNode","displayRE","patchStyle","isCssString","hasControlledDisplay","prevStyle","setStyle","cssVarText","importantRE","prefixed","autoPrefix","prefixCache","rawName","xlinkNS","patchAttr","isBoolean","removeAttributeNS","setAttributeNS","patchDOMProp","needRemove","veiKey","patchEvent","prevValue","nextValue","invokers","existingInvoker","parseName","invoker","createInvoker","optionsModifierRE","cachedNow","getNow","initialValue","_vts","attached","patchStopImmediatePropagation","originalStop","_stopped","isNativeOn","shouldSetAsProp","_isVueCE","_trueValue","_falseValue","REMOVAL","defineCustomElement","_createApp","Comp","VueCustomElement","initialProps","defineSSRCustomElement","createSSRApp","BaseClass","_def","_nonce","nonce","_connected","_resolved","_numberProps","_styleChildren","_ob","_root","attachShadow","_resolveProps","isConnected","_parseSlots","_parent","_setParent","_update","_pendingResolve","_resolveDef","_setAttr","isAsync","numberProps","_applyStyles","_mount","asyncDef","configureApp","declaredPropKeys","_getProp","shouldReflect","shouldUpdate","_renderSlots","CustomEvent","detail","_slots","slotName","outlets","walker","createTreeWalker","useHost","useShadowRoot","useCssModule","mod","positionMap","newPositionMap","moveCbKey","decorate","TransitionGroupImpl","moveClass","hasCSSTransform","callPendingCbs","recordPosition","movedChildren","applyTranslation","webkitTransform","propertyName","cssTransitionProps","oldPos","dx","dy","getModelAssigner","onCompositionStart","onCompositionEnd","assignKey","vModelText","lazy","castToNumber","domValue","elValue","vModelCheckbox","_modelValue","elementValue","filtered","getCheckboxValue","setChecked","vModelRadio","vModelSelect","isSetModel","selectedVal","_assigning","setSelected","_binding","isMultiple","isArrayValue","optionValue","optionType","selectedIndex","vModelDynamic","callModelHook","resolveDynamicModel","modelToUse","initVModelForSSR","systemModifiers","modifierGuards","ctrl","exact","withModifiers","_withMods","cacheKey","keyNames","space","up","down","withKeys","_withKeys","rendererOptions","enabledHydration","ensureRenderer","ensureHydrationRenderer","containerOrSelector","normalizeContainer","resolveRootNamespace","ssrDirectiveInitialized","initDirectivesForSSR","requireObjectCoercible","activeXDocument","definePropertiesModule","documentCreateElement","GT","LT","PROTOTYPE","SCRIPT","EmptyConstructor","scriptTag","NullProtoObjectViaActiveX","parentWindow","NullProtoObjectViaIFrame","iframeDocument","NullProtoObject","ActiveXObject","getIteratorDirect","INVALID_SIZE","SetRecord","intSize","numSize","isAbsoluteURL","combineURLs","requestedURL","VERSION","thing","deprecatedWarnings","schema","allowUnknown","formatMessage","userAgentStartsWith","Bun","functionToString","isSubsetOf","CancelToken","resolvePromise","_listeners","onfulfilled","bgNode","useCheckboxProps","useCheckboxEmits","useCheckbox","scrollPositionX","scrollPositionY","maxScrollTop","bodyLeft","bodyTop","closeTimer","registered","vpPendingUpdate","onWheel","shouldPreventScroll","getEventPath","deltaX","deltaY","onAppleScroll","onAppleResize","hasViewport","overflowY","overflowX","qScrollPrevented","passiveCapture","notPassive","alignMap","between","around","evenly","alignValues","arrow","dropdown","chevron","colorPicker","spectrum","tune","pullToRefresh","carousel","navigationIcon","chip","arrowLeft","arrowRight","today","editor","strikethrough","unorderedList","orderedList","subscript","superscript","hyperlink","toggleFullscreen","justify","print","outdent","removeFormat","formatting","fontSize","undo","redo","heading","viewSource","expansionItem","denseIcon","activeIcon","pagination","rating","stepper","tabs","arrowUp","firstPage","prevPage","lastPage","uploader","removeQueue","removeUploaded","__icons","setObject","rtl","materialIcons","createIteratorProxy","callWithSafeIterationClosing","IS_PURE","IteratorProxy","isLE","mLen","nBytes","eLen","eMax","eBias","nBits","feature","detection","POLYFILL","NATIVE","iterateSet","checkedIcon","uncheckedIcon","indeterminateIcon","iconColor","getInner","isIndeterminate","computedIcon","computedIconColor","$findLast","findLast","keysIter","usingIterator","iteratorMethod","extendStatics","__extends","__decorate","decorators","__param","paramIndex","decorator","__esDecorate","descriptorIn","contextIn","initializers","extraInitializers","accept","access","addInitializer","__runInitializers","useValue","__propKey","__setFunctionName","__metadata","metadataKey","metadataValue","ops","Iterator","verb","__createBinding","k2","__exportStar","__values","__read","__spread","__spreadArrays","il","jl","pack","__await","__asyncGenerator","asyncIterator","AsyncIterator","awaitReturn","settle","fulfill","__asyncDelegator","__asyncValues","__makeTemplateObject","cooked","__setModuleDefault","__importStar","__importDefault","__classPrivateFieldGet","__classPrivateFieldSet","__classPrivateFieldIn","__addDisposableResource","dispose","asyncDispose","_SuppressedError","SuppressedError","suppressed","__disposeResources","__rewriteRelativeImportExtension","preserveJsx","tsx","ENVIRONMENT","ENTRIES","$defineProperty","ENUMERABLE","WRITABLE","Attributes","touchTarget","keyboardTarget","mouseTarget","darkPercentage","useBtn","blurTargetRef","avoidMouseRipple","mouseTimer","localTouchTargetEl","percentageStyle","onLoadingEvt","onTouchstartPassive","Ripple","nodeProps","onClickCleanup","__qNavigate","onPressEnd","destroying","blurTarget","hDir","promisifyRequest","promisifyRequestCall","promisifyCursorRequestCall","Cursor","proxyProperties","ProxyClass","targetProp","proxyRequestMethods","proxyMethods","proxyCursorRequestMethods","_index","_cursor","ObjectStore","_store","idbTransaction","_tx","UpgradeDB","_db","DB","openDb","upgradeCallback","deleteDb","IDBIndex","IDBCursor","IDBObjectStore","IDBTransaction","IDBDatabase","funcName","nativeObject","iterateCursor","radio","QRadio","checkbox","QCheckbox","QToggle","typeValues","inline","onUpdateModelValue","makeMap","EMPTY_OBJ","EMPTY_ARR","NOOP","NO","isOn","isMap","toTypeString","isSet","toRawType","isIntegerKey","isReservedProp","isBuiltInDirective","cacheStringFunction","hit","camelizeRE","camelize","hyphenateRE","hyphenate","capitalize","toHandlerKey","hasChanged","invokeArrayFns","fns","looseToNumber","toNumber","_globalThis","getGlobalThis","GLOBALS_ALLOWED","isGloballyAllowed","normalizeStyle","parseStringStyle","listDelimiterRE","propertyDelimiterRE","styleCommentRE","stringifyStyle","normalizeClass","normalizeProps","HTML_TAGS","SVG_TAGS","MATH_TAGS","isHTMLTag","isSVGTag","isMathMLTag","specialBooleanAttrs","isSpecialBooleanAttr","isBooleanAttr","includeBooleanAttr","isKnownHtmlAttr","isKnownSvgAttr","isRenderableAttrValue","cssVarNameEscapeSymbolsRE","getEscapedCssVarName","doubleEscape","looseCompareArrays","equal","looseEqual","aValidType","bValidType","aKeysCount","bKeysCount","aHasKey","bHasKey","looseIndexOf","toDisplayString","replacer","val2","stringifySymbol","isOnGlobalDialog","checkGlobalDialog","portalEl","focusObj","onGlobalDialog","addFocusWaitFlag","removeFocusWaitFlag","toPrimitive","IndexedObject","IS_FIND_LAST_INDEX","callbackfn","boundFunction","transitionStyle","isSupersetOf","CONSTANTS","NODE_CLIENT","NODE_ADMIN","assertion","assertionError","stringToByteArray$1","byteArrayToString","c4","byteToCharMap_","charToByteMap_","byteToCharMapWebSafe_","charToByteMapWebSafe_","ENCODED_VALS_BASE","HAS_NATIVE_SUPPORT","encodeByteArray","webSafe","init_","byteToCharMap","haveByte2","haveByte3","byte3","outByte1","outByte2","outByte3","outByte4","decodeString","decodeStringToByteArray","charToByteMap","haveByte4","byte4","ENCODED_VALS","ENCODED_VALS_WEBSAFE","utf8Bytes","base64urlEncodeWithoutPadding","base64Decode","deepCopy","deepExtend","dateValue","isValidKey","wrapCallback","createMockUserToken","alg","project","iat","iss","aud","exp","auth_time","sign_in_provider","identities","getUA","isMobileCordova","isNode","isBrowserExtension","isReactNative","isElectron","isIE","isUWP","isNodeSdk","isSafari","validateIndexedDBOpenable","preExist_1","DB_CHECK_NAME_1","areCookiesEnabled","ERROR_NAME","FirebaseError","serviceName","fullCode","replaceTemplate","fullMessage","PATTERN","jsonEval","claims","isValidTimestamp","validSince","validUntil","isValidFormat","isAdmin","safeGet","contextObj","deepEqual","aKeys","bKeys","aKeys_1","aProp","bProp","bKeys_1","querystring","querystringParams","arrayVal","querystringDecode","extractQuerystring","queryStart","fragmentStart","Sha1","chain_","buf_","W_","inbuf_","total_","blockSize","compress_","lengthMinusBlock","inbuf","totalBits","createSubscribe","onNoObservers","ObserverProxy","unsubscribes","observerCount","forEachObserver","implementsAnyMethods","unsub","unsubscribeOne","finalError","sendOne","methods_1","validateArgCount","fnName","minCount","maxCount","argError","errorPrefix","argName","validateNamespace","validateCallback","argumentName","validateContextObject","stringToByteArray","high","stringLength","DEFAULT_INTERVAL_MILLIS","DEFAULT_BACKOFF_FACTOR","MAX_VALUE_MILLIS","RANDOM_FACTOR","calculateBackoffMillis","backoffFactor","currBaseValue","randomWait","ordinal","indicator","cent","getModularInstance","LogLevel","levelStringToEnum","VERBOSE","defaultLogLevel","ConsoleMethod","defaultLogHandler","logType","_logLevel","_logHandler","_userLogHandler","setUserLogHandler","logCallback","customLogLevel","userLogHandler","instances_1","IteratorPrototype","PrototypeOfArrayIteratorPrototype","arrayIterator","BUGGY_SAFARI_ITERATORS","NEW_ITERATOR_PROTOTYPE","Source","escDown","installQuasar","cookies","buildFullPath","parseHeaders","isURLSameOrigin","onCanceled","requestData","requestHeaders","username","unescape","responseHeaders","getAllResponseHeaders","responseURL","ontimeout","timeoutErrorMessage","xsrfValue","onDownloadProgress","onUploadProgress","NATIVE_SYMBOL","USE_SYMBOL_AS_UID","WellKnownSymbolsStore","createWellKnownSymbol","withoutSetter","normalizeArray","allowAboveRoot","basename","matchedSlash","resolvedPath","resolvedAbsolute","isAbsolute","trailingSlash","relative","fromParts","toParts","samePartsLength","outputParts","hasRoot","extname","startDot","startPart","preDotState","Ad","ld","sd","ud","vd","firebaseEndpoint","secureTokenEndpoint","identityPlatformEndpoint","$goog_Thenable","ib","eb","fb","gb","jb","kb","lb","mb","nb","pb","qb","rb","sb","tb","ub","vb","createScript","createScriptURL","xb","yb","zb","Ab","Bb","Cb","Db","Eb","Fb","Gb","Hb","Ib","Jb","Kb","Lb","Mb","Nb","Ob","Pb","Qb","Rb","Sb","Tb","Ub","Vb","Wb","Xb","Yb","Zb","$b","documentMode","htmlFor","cellpadding","cellspacing","frameborder","usemap","valign","port2","Window","ad","bd","relatedTarget","screenY","screenX","pointerId","fromElement","toElement","pageX","pageY","cd","ed","fd","gd","jd","kd","nd","od","pd","qd","rd","td","wd","xd","yd","detachEvent","zd","Bd","Cd","handleEvent","Dd","Ed","Fd","Gd","Hd","Jd","Kd","Ld","Md","Nd","Od","Pd","Qd","Rd","Sd","Td","Ud","$d","Vd","decodeURI","Wd","Xd","Yd","Zd","availHeight","availWidth","resizable","statusbar","toolbar","scrollbars","standalone","noreferrer","opener","noopener","WorkerGlobalScope","importScripts","___jsl","CP","bf","toUTCString","df","gf","jf","abcd","kf","lf","mf","of","pf","qf","rf","sf","tf","uf","factorId","enrollmentTime","vf","wf","yf","zf","Af","Bf","Cf","Df","Ef","Ff","Gf","Hf","If","phoneNumber","Jf","Kf","Lf","Mf","Nf","continueUrl","Of","languageCode","Pf","tenantId","Qf","recoverEmail","resetPassword","revertSecondFactorAddition","signIn","verifyAndChangeEmail","verifyEmail","Rf","Sf","Tf","Uf","Vf","Wf","Xf","Yf","Zf","$f","ag","bg","canHandleCodeInApp","androidPackageName","androidMinimumVersion","androidInstallApp","iOSBundleId","dynamicLinkDomain","cg","dg","eg","fg","gg","hg","ig","provider_id","tenant","is_anonymous","jg","kg","mg","ng","og","pg","qg","rg","sg","tg","ug","vg","wg","isNewUser","rawUserInfo","providerId","profile","login","xg","yg","zg","Ag","Bg","Cg","Dg","Eg","Gg","pendingToken","requestUri","Jg","signInMethod","Kg","idToken","oauthToken","oauthTokenSecret","Lg","id_token","access_token","secret","oauth_token_secret","postBody","Mg","oauthIdToken","oauthAccessToken","Ng","isOAuthProvider","Og","Pg","Qg","Rg","credential","Sg","Tg","Ug","Vg","Wg","Xg","Yg","Zg","EMAIL_LINK_SIGN_IN_METHOD","EMAIL_PASSWORD_SIGN_IN_METHOD","dh","eh","fh","gh","kh","verificationId","verificationCode","temporaryProof","hh","sessionInfo","lh","ph","qh","rawNonce","rh","th","eventId","urlResponse","sessionId","uh","multiFactorSession","pendingCredential","Fg","Hg","Ig","$g","oobCode","ah","bh","PROVIDER_ID","ih","jh","session","mh","phoneEnrollmentInfo","recaptchaToken","nh","mfaPendingCredential","mfaEnrollmentId","multiFactorHint","multiFactorUid","phoneSignInInfo","oh","PHONE_SIGN_IN_METHOD","Ch","vh","wh","xh","yh","zh","Ah","Bh","Dh","Eh","Fh","Gh","XDomainRequest","onprogress","Hh","Ih","Kh","Lh","Jh","Mh","Nh","Oh","Ph","Qh","Rh","Sh","Th","Uh","Vh","Wh","Xh","$h","Zh","Yh","FormData","getResponse","mozResponseArrayBuffer","secureTokenTimeout","secureTokenHeaders","firebaseTimeout","firebaseHeaders","gapi","grant_type","refresh_token","aj","bj","identifier","continueUri","signinMethods","cj","dj","authorizedDomains","ej","setApiKey","setToken","authType","fj","gj","hj","photoUrl","mj","oj","phoneSessionInfo","pj","phoneVerificationInfo","qj","phoneResponseInfo","sj","deleteProvider","tj","uj","vj","needConfirmation","wj","returnIdpCredential","xj","yj","autoCreate","zj","Aj","deleteAttribute","requestType","ij","kj","newEmail","lj","nj","Bj","newPassword","Cj","Dj","Ej","Fj","Gj","Hj","Ij","Jj","recaptchaSiteKey","Kj","USER_NOT_FOUND","Lj","returnSecureToken","keyInvalid","ipRefererBlocked","INVALID_CUSTOM_TOKEN","CREDENTIAL_MISMATCH","MISSING_CUSTOM_TOKEN","INVALID_IDENTIFIER","MISSING_CONTINUE_URI","INVALID_EMAIL","INVALID_PASSWORD","USER_DISABLED","MISSING_PASSWORD","EMAIL_EXISTS","PASSWORD_LOGIN_DISABLED","INVALID_IDP_RESPONSE","INVALID_PENDING_TOKEN","FEDERATED_USER_ID_ALREADY_LINKED","MISSING_OR_INVALID_NONCE","INVALID_MESSAGE_PAYLOAD","INVALID_RECIPIENT_EMAIL","INVALID_SENDER","EMAIL_NOT_FOUND","RESET_PASSWORD_EXCEED_LIMIT","EXPIRED_OOB_CODE","INVALID_OOB_CODE","MISSING_OOB_CODE","INVALID_PROVIDER_ID","CREDENTIAL_TOO_OLD_LOGIN_AGAIN","INVALID_ID_TOKEN","TOKEN_EXPIRED","CORS_UNSUPPORTED","DYNAMIC_LINK_NOT_ACTIVATED","INVALID_APP_ID","TOO_MANY_ATTEMPTS_TRY_LATER","WEAK_PASSWORD","OPERATION_NOT_ALLOWED","USER_CANCELLED","CAPTCHA_CHECK_FAILED","INVALID_APP_CREDENTIAL","INVALID_CODE","INVALID_PHONE_NUMBER","INVALID_SESSION_INFO","INVALID_TEMPORARY_PROOF","MISSING_APP_CREDENTIAL","MISSING_CODE","MISSING_PHONE_NUMBER","MISSING_SESSION_INFO","QUOTA_EXCEEDED","SESSION_EXPIRED","REJECTED_CREDENTIAL","INVALID_CONTINUE_URI","MISSING_ANDROID_PACKAGE_NAME","MISSING_IOS_BUNDLE_ID","UNAUTHORIZED_DOMAIN","INVALID_DYNAMIC_LINK_DOMAIN","INVALID_OAUTH_CLIENT_ID","INVALID_CERT_HASH","UNSUPPORTED_TENANT_OPERATION","INVALID_TENANT_ID","TENANT_ID_MISMATCH","ADMIN_ONLY_OPERATION","INVALID_MFA_PENDING_CREDENTIAL","MFA_ENROLLMENT_NOT_FOUND","MISSING_MFA_PENDING_CREDENTIAL","MISSING_MFA_ENROLLMENT_ID","EMAIL_CHANGE_NEEDS_VERIFICATION","SECOND_FACTOR_EXISTS","SECOND_FACTOR_LIMIT_EXCEEDED","UNSUPPORTED_FIRST_FACTOR","UNVERIFIED_EMAIL","Mj","Nj","Oj","messageHandlersFilter","dontclear","restyle","setHideOnLeave","Pj","ping","Qj","Rj","Sj","Tj","Uj","Vj","Wj","Xj","Yj","Zj","ak","bk","dk","ek","authEvent","ck","webStorageSupport","fk","reactNative","AsyncStorage","gk","rk","hk","ik","jk","kk","lk","mk","messageChannel","nk","pk","qk","keyProcessed","sk","tk","uk","vk","wk","xk","yk","zk","fbase_key","Ak","Bk","Ck","Dk","Ek","Fk","Gk","Hk","Ik","Jk","Kk","sessionStorage","Lk","Browser","Mk","Nk","ReactNative","Ok","Pk","ports","Qk","Uk","Rk","NONE","Sk","Tk","Vk","Wk","Xk","Yk","Zk","$k","al","setInterval","clearInterval","dl","gl","kl","ml","nl","ol","ql","tl","ul","vl","ibi","apn","appDisplayName","zl","wl","Al","yl","handleOpenURL","Bl","Cl","Dl","El","Fl","Gl","Hl","Il","Jl","signInViaRedirect","linkViaRedirect","reauthViaRedirect","signInViaPopup","linkViaPopup","reauthViaPopup","Kl","Ll","Ml","Nl","Ol","Pl","Ql","Rl","Sl","Tl","Ul","Vl","Wl","Xl","Yl","$l","Zl","am","dm","em","fm","gm","hm","expirationTime","authTime","signInProvider","signInSecondFactor","sign_in_second_factor","im","jm","km","confirm","lm","mm","om","pm","qm","rm","tm","multiFactor","enrolledFactors","mfaInfo","xm","zm","ym","Am","Bm","Cm","Dm","Em","expires_in","Fm","lastSignInTime","Gm","Hm","photoURL","Im","authDomain","emulatorConfig","Jm","Km","Lm","Mm","Nm","Om","Pm","Qm","Rm","Sm","Tm","Um","Vm","Wm","emailVerified","isAnonymous","createdAt","lastLoginAt","providerData","Xm","Ym","Zm","$m","wm","providerUserInfo","rawId","additionalUserInfo","operationType","stsTokenManager","redirectEventId","users","localId","passwordHash","logFramework","zIndex","textAlign","disableWarnings","userLanguage","appVerificationDisabledForTesting","Persistence","LOCAL","SESSION","appVerificationDisabled","ActionCodeInfo","Operation","EMAIL_SIGNIN","PASSWORD_RESET","RECOVER_EMAIL","REVERT_SECOND_FACTOR_ADDITION","VERIFY_AND_CHANGE_EMAIL","VERIFY_EMAIL","Auth","AuthCredential","instanceFactory","multipleInstances","serviceProps","instantiationMode","onInstanceCreated","extendNamespace","User","typeGuard","getFormDomProps","DataTransfer","ClipboardEvent","clipboardData","getNormalizedVNodes","vmHasRouter","ordinaryToPrimitive","TO_PRIMITIVE","exoticToPrim","isDisjointFrom","ignoreDuplicateOf","pipe","product","assignValue","stripBOM","defineBuiltIns","createIterResultObject","ITERATOR_HELPER","WRAP_FOR_VALID_ITERATOR","setInternalState","createIteratorProxyPrototype","nextHandler","returnHandlerResult","returnMethod","WrapForValidIteratorPrototype","IteratorHelperPrototype","RETURN_HANDLER_RESULT","trueValue","falseValue","indeterminateValue","toggleOrder","toggleIndeterminate","modelIsArray","isFalse","getNextValue","getInnerContent","SHARED","copyright","license","INCORRECT_VALUE","simple","commonjsGlobal","goog","class_2","PerformanceNavigationTiming","nextHopProtocol","Image","d_1","concurrentRequestLimit","fastHandshake","messageHeaders","clientProtocolHeaderRequired","messageContentType","__sm__","getLastError","createWebChannelTransport","getStatEventTarget","Stat","FetchXmlHttpFactory","WebChannel","XhrIo","normalizedName","nonConfigurable","nonWritable","contentStyle","hMergeSlotSafely","_a$1","name$c","name$b","name$a","name$9","name$8","name$7","name$6","name$5","name$4","name$3","name$2","PLATFORM_LOG_STRING","FirebaseAppImpl","firebase_","isDeleted_","name_","automaticDataCollectionEnabled_","options_","_addComponent","checkDestroyed_","removeApp","getProviders","_getService","isInitialized","clearInstance","addComponent","_addOrOverwriteComponent","addOrOverwriteComponent","createFirebaseNamespaceCore","firebaseAppImpl","apps","initializeApp","onLog","useAsService","rawConfig","name_1","getApps","componentName","serviceNamespace","appArg","serviceFxn","libraryKeyOrName","variant","library","libraryMismatch","versionMismatch","useService","createFirebaseNamespace","firebase$1","PlatformLoggerService","providers","isVersionServiceProvider","logString","registerCoreComponents","otherwise","hUniqueSlot","getDirsFn","reactiveState","createInstance","axios","spread","mapper","aFunction","hasRouter","linkTag","linkRoute","linkActiveIndex","$route","linkIsActive","linkIsExactActive","linkClass","canShow","processShow","processHide","processModelChange","publicMethods","$propertyIsEnumerable","NASHORN_BUG","aPossiblePrototype","CORRECT_SETTER","actualIndex","hasPassive","notPassiveCapture","leftClick","touches","targetTouches","cancelable","preventDraggable","__dragPrevented","targetName","$Symbol","wrapErrorConstructorWithCause","WEB_ASSEMBLY","WebAssembly","exportGlobalErrorCauseWrapper","exportWebAssemblyErrorCauseWrapper","createSetLike","createSetLikeWithInfinitySize","error2","V8","lastKeyCompositionStatus","isComposing","originalModule","$length","CORRECT_PROTOTYPE_GETTER","ObjectPrototype","layoutKey","pageContainerKey","tabsKey","tickFn","uncurryThisWithBind","$default","proxyAccessor","inheritIfRequired","normalizeStringArgument","installErrorCause","installErrorStack","FULL_NAME","IS_AGGREGATE_ERROR","STACK_TRACE_LIMIT","OPTIONS_POSITION","OriginalError","OriginalErrorPrototype","BaseError","WrappedError","relativeURL","getOwnPropertyDescriptorModule","exceptions","refocusRef","setSDKVersion","DOMStorageWrapper","domStorage_","prefix_","prefixedName_","storedVal","MemoryStorage","cache_","isInMemoryStorage","createStoragefor","domStorageName","domStorage","PersistentStorage","SessionStorage","logClient","LUIDGenerator","sha1","sha1Bytes","buildLogMessage_","varArgs","firstLog_","enableLogging","logger_","logWrapper","fatal","warnIfPageIsSecure","isInvalidJSONNumber","executeWhenDOMReady","called_1","wrappedFn_1","MIN_NAME","MAX_NAME","nameCompare","aAsInt","tryParseInt","bAsInt","stringCompare","requireKey","ObjectToUniqueKey","splitStringBySize","segsize","dataSegs","doubleToIEEE754String","ebits","fbits","bias","hexByteString","hexByte","isChromeExtensionContentScript","isWindowsStoreApp","Windows","UI","errorForServerCode","INTEGER_REGEXP_","INTEGER_32_MIN","INTEGER_32_MAX","intVal","exceptionGuard","beingCrawled","setTimeoutNonBlocking","AppCheckTokenProvider","appName_","addTokenChangeListener","notifyForInvalidToken","FirebaseAuthTokenProvider","firebaseOptions_","authProvider_","auth_","removeTokenChangeListener","EmulatorTokenProvider","OWNER","PROTOCOL_VERSION","VERSION_PARAM","TRANSPORT_SESSION_PARAM","REFERER_PARAM","FORGE_REF","FORGE_DOMAIN_RE","LAST_SESSION_PARAM","APPLICATION_ID_PARAM","APP_CHECK_TOKEN_PARAM","WEBSOCKET","LONG_POLLING","RepoInfo","webSocketOnly","nodeAdmin","includeNamespaceInQueryParams","_domain","internalHost","isCacheableHost","isCustomHost","newHost","toURLString","repoInfoNeedsQueryParam","repoInfo","repoInfoConnectionURL","connURL","StatsCollection","counters_","incrementCounter","collections","reporters","statsManagerGetCollection","hashString","statsManagerGetOrCreateReporter","creatorFunction","PacketReceiver","onMessage_","pendingResponses","currentResponseNum","closeAfterResponse","onClose","closeAfter","responseNum","handleResponse","requestNum","toProcess","this_1","_loop_2","FIREBASE_LONGPOLL_START_PARAM","FIREBASE_LONGPOLL_CLOSE_COMMAND","FIREBASE_LONGPOLL_COMMAND_CB_NAME","FIREBASE_LONGPOLL_DATA_CB_NAME","FIREBASE_LONGPOLL_ID_PARAM","FIREBASE_LONGPOLL_PW_PARAM","FIREBASE_LONGPOLL_SERIAL_PARAM","FIREBASE_LONGPOLL_CALLBACK_ID_PARAM","FIREBASE_LONGPOLL_SEGMENT_NUM_PARAM","FIREBASE_LONGPOLL_SEGMENTS_IN_PACKET","FIREBASE_LONGPOLL_DATA_PARAM","FIREBASE_LONGPOLL_DISCONN_FRAME_REQUEST_PARAM","MAX_URL_DATA_SIZE","SEG_HEADER_SIZE","MAX_PAYLOAD_SIZE","KEEPALIVE_REQUEST_INTERVAL","LP_CONNECT_TIMEOUT","BrowserPollConnection","connId","applicationId","transportSessionId","lastSessionId","bytesSent","bytesReceived","everConnected_","log_","stats_","urlFn","onDisconnect","curSegmentNum","onDisconnect_","myPacketOrderer","isClosed_","connectTimeoutTimer_","onClosed_","scriptTagHolder","FirebaseIFrameScriptHolder","arg1","arg2","incrementIncomingBytes_","sendNewPolls","pN","uniqueCallbackIdentifier","connectURL","addTag","startLongPoll","addDisconnectPingFrame","forceAllow","forceAllow_","forceDisallow","forceDisallow_","markConnectionHealthy","shutdown_","myDisconnFrame","dataStr","base64data","enqueueSegment","pw","commandCB","onMessageCB","outstandingRequests","pendingSegs","currentSerial","myIFrame","createIFrame_","currentDomain","iframeContents","alive","myID","myPW","newRequest_","theURL","curDataString","nextSeg","theSeg","seg","addLongPollTag_","segnum","totalsegs","serial","doNewRequest","keepaliveTimeout","readyStateCB","loadCB","doNodeLongPoll","newScript_1","rstate","WEBSOCKET_MAX_FRAME_SIZE","WEBSOCKET_KEEPALIVE_INTERVAL","WebSocketImpl","MozWebSocket","WebSocket","WebSocketConnection","keepaliveTimer","frames","totalFrames","connectionURL_","mySock","onopen","onclose","handleIncomingFrame","isOldAndroid","oldAndroidRegex","oldAndroidMatch","previouslyFailed","appendFrame_","fullMess","jsonMess","handleNewFrameCount_","frameCount","extractFrameCount_","mess","resetKeepAlive","remainingData","sendString_","responsesRequiredToBeHealthy","healthyTimeout","TransportManager","initTransports_","isWebSocketsAvailable","isSkipPollConnection","transports_","transports","ALL_TRANSPORTS","initialTransport","upgradeTransport","UPGRADE_TIMEOUT","DELAY_BEFORE_SENDING_EXTRA_REQUESTS","BYTES_SENT_HEALTHY_OVERRIDE","BYTES_RECEIVED_HEALTHY_OVERRIDE","MESSAGE_TYPE","MESSAGE_DATA","CONTROL_SHUTDOWN","CONTROL_RESET","CONTROL_ERROR","CONTROL_PONG","SWITCH_ACK","END_TRANSMISSION","PING","SERVER_HELLO","Connection","repoInfo_","applicationId_","appCheckToken_","authToken_","onReady_","onKill_","connectionCount","pendingDataMessages","state_","transportManager_","conn","conn_","nextTransportId_","primaryResponsesRequired_","onMessageReceived","connReceiver_","onConnectionLost","disconnReceiver_","tx_","rx_","secondaryConn_","isHealthy_","healthyTimeoutMS","healthyTimeout_","everConnected","onConnectionLost_","onSecondaryConnectionLost_","onPrimaryMessageReceived_","onSecondaryMessageReceived_","dataMsg","sendData_","tryCleanupConnection","onSecondaryControl_","controlData","upgradeIfSecondaryHealthy_","secondaryResponsesRequired_","parsedData","layer","proceedWithUpgrade_","onControl_","onDataMessage_","onPrimaryResponse_","onHandshake_","onConnectionShutdown_","onReset_","sendPingOnPrimaryIfNecessary_","handshake","onConnectionEstablished_","tryStartUpgrade_","startUpgrade_","closeConnections_","ServerActions","pathString","onComplete","refreshAppCheckToken","onDisconnectPut","onDisconnectMerge","onDisconnectCancel","reportStats","stats","EventEmitter","allowedEvents_","listeners_","validateEventType_","eventData","getInitialEvent","OnlineMonitor","online_","currentlyOnline","MAX_PATH_DEPTH","MAX_PATH_LENGTH_BYTES","Path","pathOrString","pieceNum","pieces_","copyTo","pieceNum_","newEmptyPath","pathGetFront","pathGetLength","pathPopFront","pathGetBack","pathToUrlEncodedString","pathSlice","begin","pathParent","pieces","pathChild","childPathObj","childPieces","pathIsEmpty","newRelativePath","outerPath","innerPath","pathCompare","leftKeys","rightKeys","cmp","pathEquals","pathContains","ValidationPath","errorPrefix_","parts_","byteLength_","validationPathCheckValid","validationPathPush","validationPath","validationPathPop","validationPathToErrorString","__EMPTY_NODE","MAX_NODE$2","VisibilityMonitor","visibilityChange","visible_","visible","RECONNECT_MIN_DELAY","RECONNECT_MAX_DELAY_DEFAULT","GET_CONNECT_TIMEOUT","RECONNECT_MAX_DELAY_FOR_ADMINS","RECONNECT_DELAY_MULTIPLIER","RECONNECT_DELAY_RESET_TIMEOUT","SERVER_KILL_INTERRUPT_REASON","INVALID_TOKEN_THRESHOLD","PersistentConnection","onDataUpdate_","onConnectStatus_","onServerInfoUpdate_","authTokenProvider_","appCheckTokenProvider_","authOverride_","nextPersistentConnectionId_","interruptReasons_","listens","outstandingPuts_","outstandingGets_","outstandingPutCount_","outstandingGetCount_","onDisconnectRequestQueue_","connected_","reconnectDelay_","maxReconnectDelay_","securityDebugCallback_","establishConnectionTimer_","requestCBHash_","requestNumber_","realtime_","forceTokenRefresh_","invalidAuthTokenCount_","invalidAppCheckTokenCount_","firstConnection_","lastConnectionAttemptTime_","lastConnectionEstablishedTime_","onVisible_","onOnline_","onResponse","curReqNum","initConnection_","_queryObject","outstandingGet","sendGet_","currentHashFn","queryId","_queryIdentifier","_queryParams","isDefault","loadsAllData","listenSpec","hashFn","sendListen_","warnOnListenWarnings_","currentListenSpec","removeListen_","warnings","indexSpec","getIndex","indexPath","tryAuth","reduceReconnectDelayIfAdminCredential_","isFirebaseSecret","tryAppCheck","token_1","authMethod","cred","onAuthRevoked_","onAppCheckRevoked_","unlisten","sendUnlisten_","queryObj","sendOnDisconnect_","putInternal","sendPut_","queued","errorReason","reqNum","onDataPush_","onListenRevoked_","onSecurityDebugPacket_","handleTimestamp_","sendConnectStats_","restoreState_","scheduleConnect_","establishConnection_","online","onRealtimeDisconnect_","cancelSentTransactions_","shouldReconnect_","timeSinceLastConnectSucceeded","timeSinceLastConnectAttempt","reconnectDelay","onDataMessage","onReady","onDisconnect_1","canceled_1","connection_1","closeFn","sendRequestFn","nextConnectionId_","interrupt","serverTimeOffset","normalizedPathString","statusCode","explanation","clientName","NamedNode","Wrap","getCompare","indexedValueChanged","oldWrapped","newWrapped","minPost","MIN","KeyIndex","isDefinedOn","maxPost","makePost","indexValue","KEY_INDEX","SortedMapIterator","startKey","isReverse_","resultGenerator_","nodeStack_","LLRBNode","SortedMap","EMPTY_NODE","min_","fixUp_","removeMin_","isRed_","moveRedLeft_","smallest","rotateRight_","moveRedRight_","rotateLeft_","colorFlip_","checkMaxDepth_","blackDepth","check_","LLRBEmptyNode","comparator_","root_","getPredecessorKey","rightParent","resultGenerator","NAME_ONLY_COMPARATOR","NAME_COMPARATOR","setMaxNode$1","__childrenNodeConstructor","nodeFromJSON$1","MAX_NODE$1","priorityHashText","validatePriorityNode","priorityNode","isLeafNode","getPriority","LeafNode","value_","priorityNode_","lazyHash_","updatePriority","newPriorityNode","getImmediateChild","childName","getPredecessorChildName","updateImmediateChild","newChildNode","updateChild","front","numChildren","exportFormat","toHash","compareToLeafNode_","otherLeaf","otherLeafType","thisLeafType","otherIndex","VALUE_TYPE_ORDER","thisIndex","withIndex","isIndexed","setNodeFromJSON","setMaxNode","_defaultIndexMap","PriorityIndex","aPriority","bPriority","indexCmp","PRIORITY_INDEX","LOG_2","Base12Num","logBase2","bitMask","current_","bits_","nextBitIsOne","buildChildSet","keyFn","mapSortFn","buildBalancedTree","namedNode","buildFrom12Array","base12","buildPennant","childTree","attachPennant","pennant","isOne","fallbackObject","IndexMap","indexes_","indexSet_","indexKey","sortedMap","hasIndex","indexDefinition","addIndex","existingChildren","sawIndexedValue","indexName","newIndexSet","newIndexes","addToIndexes","indexedChildren","existingSnap","removeFromIndexes","ChildrenNode","children_","indexMap_","Default","newIndexMap","newImmediateChild","numKeys","allIntegerKeys","toHash_1","childHash","resolveIndex_","predecessor","getFirstChildName","getFirstChild","getLastChildName","getLastChild","wrappedNode","startPost","endPost","MAX_NODE","otherChildrenNode","thisIter","otherIter","thisCurrent","otherCurrent","MaxNode","USE_HINZE","nodeFromJSON","jsonLeaf","node_1","childData","children_1","childrenHavePriority_1","hinzeJsonObj","childSet","sortedChildSet","PathIndex","indexPath_","extractChild","snap","aChild","bChild","valueNode","ValueIndex","VALUE_INDEX","PUSH_CHARS","MIN_PUSH_CHAR","MAX_PUSH_CHAR","MAX_KEY_LEN","nextPushId","lastPushTime","lastRandChars","duplicateTime","timeStampChars","successor","keyAsInt","i_1","sourcePlusOne","changeValue","snapshotNode","changeChildAdded","changeChildRemoved","changeChildChanged","oldSnap","changeChildMoved","IndexedFilter","index_","newChild","affectedPath","optChangeAccumulator","oldChild","trackChildChange","updateFullNode","newSnap","filtersNodes","getIndexedFilter","RangedFilter","indexedFilter_","startPost_","getStartPost_","endPost_","getEndPost_","getStartPost","getEndPost","hasStart","startName","getIndexStartName","getIndexStartValue","hasEnd","endName","getIndexEndName","getIndexEndValue","LimitedFilter","rangedFilter_","limit_","getLimit","reverse_","isViewFromLeft","fullLimitUpdateChild_","inRange","indexCompare_1","foundStartPost","childKey","childSnap","changeAccumulator","indexCmp_1","oldEventCache","newChildNamedNode","windowBoundary","oldChildSnap","getChildAfterChild","compareNext","remainsInWindow","newEventCache","nextChildInRange","QueryParams","limitSet_","startSet_","startNameSet_","startAfterSet_","endSet_","endNameSet_","endBeforeSet_","viewFrom_","indexStartValue_","indexStartName_","indexEndValue_","indexEndName_","hasStartAfter","hasEndBefore","hasLimit","hasAnchoredLimit","queryParamsGetNodeFilter","queryParams","queryParamsLimitToFirst","newLimit","queryParamsLimitToLast","queryParamsStartAt","queryParamsStartAfter","queryParamsEndAt","queryParamsEndBefore","queryParamsOrderBy","queryParamsToRestQueryStringParameters","queryParamsGetQueryObject","viewFrom","ReadonlyRestClient","listens_","getListenId_","listenId","thisListen","queryStringParameters","restRequest_","SnapshotHolder","rootNode_","updateSnapshot","newSnapshotNode","newSparseSnapshotTree","sparseSnapshotTreeRemember","sparseSnapshotTree","sparseSnapshotTreeForget","safeToRemove","sparseSnapshotTreeForEachTree","prefixPath","sparseSnapshotTreeForEachChild","OperationType","StatsListener","collection_","last_","newStats","FIRST_STATS_MIN_TIME","FIRST_STATS_MAX_TIME","REPORT_STATS_INTERVAL","StatsReporter","server_","statsToReport_","statsListener_","reportStats_","reportedStats","haveStatsToReport","statsReporterIncludeStat","reporter","newOperationSourceUser","fromUser","fromServer","tagged","newOperationSourceServer","newOperationSourceServerTaggedQuery","emptyChildrenSingleton","AckUserWrite","affectedTree","revert","ACK_USER_WRITE","operationForChild","ListenComplete","LISTEN_COMPLETE","Overwrite","OVERWRITE","Merge","MERGE","CacheNode","node_","fullyInitialized_","filtered_","isFullyInitialized","isFiltered","isCompleteForPath","isCompleteForChild","EventGenerator","query_","eventGeneratorGenerateEventsForChanges","eventGenerator","eventCache","eventRegistrations","moves","change","eventGeneratorGenerateEventsForType","registrations","filteredChanges","eventGeneratorCompareChanges","materializedChange","eventGeneratorMaterializeSingleChange","respondsTo","prevName","aWrapped","bWrapped","newViewCache","serverCache","viewCacheUpdateEventSnap","viewCache","eventSnap","viewCacheUpdateServerSnap","serverSnap","viewCacheGetCompleteEventSnap","viewCacheGetCompleteServerSnap","EmptyChildren","ImmutableTree","findRootMostMatchingPathAndValue","childExistingPathAndValue","findRootMostValueAndPath","toSet","setTree","newTree","fold","fold_","pathSoFar","accum","findOnPath","findOnPath_","pathToFollow","foreachOnPath","foreachOnPath_","currentRelativePath","foreach","foreach_","foreachChild","CompoundWrite","writeTree_","compoundWriteAddWrite","compoundWrite","rootmost","rootMostPath","newWriteTree","compoundWriteAddWrites","updates","newWrite","compoundWriteRemoveWrite","compoundWriteHasCompleteWrite","compoundWriteGetCompleteNode","compoundWriteGetCompleteChildren","compoundWriteChildCompoundWrite","shadowingNode","compoundWriteIsEmpty","compoundWriteApply","applySubtreeWrite","writeTree","priorityWrite_1","writeTreeChildWrites","newWriteTreeRef","writeTreeAddOverwrite","writeId","lastWriteId","allWrites","visibleWrites","writeTreeAddMerge","changedChildren","writeTreeGetWrite","writeTreeRemoveWrite","writeToRemove","removedWriteWasVisible","removedWriteOverlapsWithOtherWrites","currentWrite","writeTreeRecordContainsPath_","writeTreeResetTree_","writeRecord","writeTreeLayerTree_","writeTreeDefaultFilter_","treeRoot","writePath","deepNode","writeTreeCalcCompleteEventCache","treePath","completeServerCache","writeIdsToExclude","includeHiddenWrites","mergeAtPath","layeredCache","subMerge","writeTreeCalcCompleteEventChildren","completeServerChildren","completeChildren","topLevelSet","merge_1","writeTreeCalcEventCacheAfterServerOverwrite","existingEventSnap","existingServerSnap","childMerge","writeTreeCalcCompleteChild","writeTreeShadowingWrite","writeTreeCalcIndexedSlice","completeServerData","toIterate","writeTreeRefCalcCompleteEventCache","writeTreeRef","writeTreeRefCalcCompleteEventChildren","writeTreeRefCalcEventCacheAfterServerOverwrite","writeTreeRefShadowingWrite","writeTreeRefCalcIndexedSlice","writeTreeRefCalcCompleteChild","existingServerCache","writeTreeRefChild","ChildChangeAccumulator","changeMap","oldChange","oldType","getChanges","NoCompleteChildSource_","getCompleteChild","NO_COMPLETE_CHILD_SOURCE","WriteTreeCompleteChildSource","writes_","viewCache_","optCompleteServerCache_","serverNode","newViewProcessor","viewProcessorAssertIndexed","viewProcessor","viewProcessorApplyOperation","oldViewCache","writesCache","completeCache","filterServerNode","viewProcessorApplyUserOverwrite","viewProcessorApplyServerOverwrite","viewProcessorApplyUserMerge","viewProcessorApplyServerMerge","ackUserWrite","viewProcessorRevertUserWrite","viewProcessorAckUserWrite","viewProcessorListenComplete","viewProcessorMaybeAddValueEvent","isLeafOrEmpty","oldCompleteSnap","viewProcessorGenerateEventCacheAfterServerEvent","changePath","oldEventSnap","completeEventChildren","completeNode","oldEventNode","updatedPriority","childChangePath","newEventChild","eventChildUpdate","changedSnap","newServerCache","oldServerSnap","serverFilter","newServerNode","newEventSnap","viewProcessorCacheHasChild","curViewCache","viewProcessorApplyMerge","viewMergeTree","serverChild","childMergeTree","isUnknownDeepMerge","ackPath","changedChildren_1","changedChildren_2","mergePath","serverCachePath","oldServerNode","serverChildren","referenceConstructor$1","View","initialViewCache","eventRegistrations_","indexFilter","processor_","initialServerCache","initialEventCache","eventGenerator_","viewGetServerCache","viewGetCompleteNode","viewGetCompleteServerCache","viewIsEmpty","viewAddEventRegistration","eventRegistration","viewRemoveEventRegistration","cancelError","cancelEvents","path_1","maybeEvent","createCancelEvent","hasAnyCallback","viewApplyOperation","viewGenerateEventsForChanges_","viewGetInitialEvents","initialChanges","eventNode","referenceConstructor","SyncPoint","views","syncPointSetReferenceConstructor","syncPointGetReferenceConstructor","syncPointIsEmpty","syncPoint","syncPointApplyOperation","optCompleteServerCache","syncPointGetView","serverCacheComplete","eventCacheComplete","syncPointAddEventRegistration","syncPointRemoveEventRegistration","removed","hadCompleteView","syncPointHasCompleteView","viewQueryId","_repo","syncPointGetQueryViews","e_3_1","syncPointGetCompleteServerCache","e_4","e_4_1","syncPointViewForQuery","syncPointGetCompleteView","syncPointViewExistsForQuery","e_5","e_5_1","syncTreeSetReferenceConstructor","syncTreeGetReferenceConstructor","syncTreeNextQueryTag_","SyncTree","listenProvider_","syncPointTree_","pendingWriteTree_","tagToQueryMap","queryToTagMap","syncTreeApplyUserOverwrite","syncTree","newData","syncTreeApplyOperationToSyncPoints_","syncTreeApplyUserMerge","changeTree","syncTreeAckUserWrite","needToReevaluate","affectedTree_1","syncTreeApplyServerOverwrite","syncTreeApplyServerMerge","syncTreeApplyListenComplete","syncTreeApplyTaggedListenComplete","queryKey","syncTreeQueryKeyForTag_","syncTreeParseQueryKey_","queryPath","syncTreeApplyTaggedOperation_","syncTreeRemoveEventRegistration","maybeSyncPoint","removedAndEvents","removingDefault","covered","parentSyncPoint","newViews","syncTreeCollectDistinctViewsForSubTree_","newQuery","syncTreeCreateListenerForView_","startListening","syncTreeQueryForListening_","syncTreeTagForQuery_","defaultTag","stopListening","queryToRemove","tagToRemove","syncTreeMakeQueryKey_","syncTreeRemoveTags_","syncTreeApplyTaggedQueryOverwrite","syncTreeApplyTaggedQueryMerge","syncTreeAddEventRegistration","foundAncestorDefaultView","pathToSyncPoint","childSyncPoint","viewAlreadyExists","syncTreeGetNextQueryTag_","syncTreeSetupListener_","syncTreeCalcCompleteEventCache","includeHiddenSets","syncTreeGetServerValue","serverCacheNode","syncTreeApplyOperationHelper_","syncPointTree","syncTreeApplyOperationDescendantsHelper_","childOperation","childServerCache","childWritesCache","splitIndex","maybeChildSyncPoint","childMap","completeView","views_1","childViews","removedQuery","removedQueryKey","removedQueryTag","queriesToStop","queries_1","childQueries","queryToStop","ExistingValueProvider","DeferredValueProvider","syncTree_","generateWithValues","resolveDeferredLeafValue","existingVal","serverValues","resolveScalarDeferredValue","resolveComplexDeferredValue","existingNode","leaf","resolveDeferredValueTree","resolveDeferredValue","resolveDeferredValueSnapshot","rawPri","leafNode","childrenNode","Tree","childCount","treeSubTree","pathObj","treeGetValue","treeSetValue","treeUpdateParents","treeHasChildren","treeIsEmpty","treeForEachChild","treeForEachDescendant","includeSelf","childrenFirst","treeForEachAncestor","treeGetPath","treeUpdateChild","childEmpty","childExists","INVALID_KEY_REGEX_","INVALID_PATH_REGEX_","MAX_LEAF_SIZE_","isValidPathString","isValidRootPathString","isValidPriority","validateFirebaseDataArg","validateFirebaseData","hasDotValue_1","hasActualChild_1","validateFirebaseMergePaths","mergePaths","curPath","prevPath","validateFirebaseMergeDataArg","errorPrefix$1","validatePriority","validateEventType","validateKey","validatePathString","validateRootPathString","validateWritablePath","validateUrl","parsedUrl","validateBoolean","bool","EventQueue","eventLists_","recursionDepth_","eventQueueQueueEvents","eventQueue","eventDataList","currList","getPath","eventQueueRaiseEventsAtPath","eventQueueRaiseQueuedEventsMatchingPredicate","eventPath","eventQueueRaiseEventsForChangedPath","changedPath","sentAll","eventList","eventListRaise","eventFn","getEventRunner","INTERRUPT_REASON","MAX_TRANSACTION_RETRIES","Repo","forceRestClient_","appCheckProvider_","dataUpdateCount","eventQueue_","nextWriteId_","interceptServerDataCallback_","transactionQueueTree_","persistentConnection_","repoStart","repo","authOverride","isMerge","repoOnDataUpdate","repoOnConnectStatus","connectStatus","repoOnServerInfoUpdate","statsReporter_","infoData_","infoSyncTree_","infoEvents","repoUpdateInfo","serverSyncTree_","repoServerTime","offsetNode","repoGenerateServerValues","taggedChildren","taggedSnap","repoRerunTransactions","repoInterceptServerData","repoRunOnDisconnectEvents","repoGetNextWriteId","repoGetValue","repoLog","repoSetWithPriority","newNodeUnresolved","clearEvents","repoCallOnCompleteCallback","repoAbortTransactions","repoUpdate","childrenToMerge","changedKey","changedValue","writeId_1","resolvedOnDisconnectTree","repoOnDisconnectCancel","repoOnDisconnectSet","repoOnDisconnectSetWithPriority","repoOnDisconnectUpdate","repoAddEventCallbackForQuery","repoRemoveEventCallbackForQuery","repoInterrupt","repoResume","repoStats","showDelta","longestName","paddedStat","repoStatsIncrementCounter","repoStartTransaction","transactionUpdate","unwatcher","applyLocally","retryCount","abortReason","currentWriteId","currentInputSnapshot","currentOutputSnapshotRaw","currentOutputSnapshotResolved","repoGetLatestState","queueNode","nodeQueue","priorityForNode","currentNode","repoSendReadyTransactions","excludeSets","repoPruneCompletedTransactionsBelowNode","repoBuildTransactionQueue","allRun","repoSendTransactionQueue","setsToIgnore","txn","latestState","snapToSend","latestHash","dataToSend","pathToSend","rootMostTransactionNode","repoGetAncestorTransactionNode","repoRerunTransactionQueue","txnsToRerun","abortTransaction","newDataNode","hasExplicitPriority","oldWriteId","newNodeResolved","transactionNode","transactionQueue","repoAggregateTransactionQueuesForNode","repoAbortTransactionsOnNode","lastSent","decodePath","pathStringDecoded","piece","decodeQuery","kv","parseRepoInfo","parseDatabaseURL","subdomain","colonInd","slashInd","questionMarkInd","hostWithoutPort","dotInd","DataEvent","exportVal","CancelEvent","CallbackContext","snapshotCallback","cancelCallback","onValue","expDataSnapshot","previousChildName","hasCancelCallback","userCallback","OnDisconnect$1","OnDisconnect","setWithPriority","QueryImpl","_orderByCalled","ReferenceImpl","sameRepo","samePath","sameQueryIdentifier","validateNoPreviousOrderByCall","validateQueryEndpoints","startNode","endNode","tooManyArgsError","wrongArgTypeError","validateLimit","DataSnapshot$1","DataSnapshot","childRef","hasChildren","_checkNotDeleted","parsedURL","thennablePushRef","pushRef","setPriority","ValueEventRegistration","callbackContext","ChildEventRegistration","eventToCheck","cancelCallbackOrListenOptions","onlyOnce","userCallback_1","onceCallback","dataSnapshot","onChildAdded","onChildChanged","onChildMoved","onChildRemoved","expCallback","QueryConstraint","QueryEndAtConstraint","QueryEndBeforeConstraint","QueryStartAtConstraint","QueryStartAfterConstraint","QueryLimitToFirstConstraint","_limit","limitToFirst","QueryLimitToLastConstraint","QueryOrderByChildConstraint","parsedPath","orderByChild","QueryOrderByKeyConstraint","orderByKey","QueryOrderByPriorityConstraint","orderByPriority","QueryOrderByValueConstraint","orderByValue","QueryEqualToValueConstraint","equalTo","queryConstraints","queryImpl","queryConstraints_1","queryConstraints_1_1","constraint","FIREBASE_DATABASE_EMULATOR_HOST_VAR","repos","useRestClient","repoManagerApplyEmulatorSettings","tokenProvider","repoManagerDatabaseFromApp","dbUrl","databaseURL","isEmulator","dbEmulatorHost","authTokenProvider","repoManagerCreateRepo","Database$1","repoManagerDeleteRepo","appRepos","repoManagerForceRestClient","forceRestClient","Database","_repoInternal","_instanceStarted","_rootInternal","apiName","connectDatabaseEmulator","goOffline","goOnline","SERVER_TIMESTAMP","TransactionResult$1","TransactionResult","promiseComplete","objectToMerge","newObjectToMerge","_database","getRef","cancelCallbackOrContext","getCancelAndContextArgs_","valueCallback","expSnapshot","failureCallbackOrContext","cancelOrContext","getParent","getRoot","transactionResult","expPromise","expRef","ServerValue","TIMESTAMP","forceWebSockets","setSecurityDebugCallback","statsIncrementCounter","interceptServerData","initStandalone","customAuthImpl","setComponent","DataConnection","simpleListen","echo","onEcho","RealTimeConnection","hijackHash","newHash","oldPut","ConnectionTarget","queryIdentifier","TEST_ACCESS","registerDatabase","ArrayPrototype","anInstance","createProperty","CONSTRUCTOR","NativeIterator","IteratorConstructor","defineIteratorPrototypeAccessor","insetMap","true","spaced","inset","orientation","orientClass","insetClass","Uint8ClampedArrayPrototype","TypedArray","TYPED_ARRAY_TAG","TYPED_ARRAY_CONSTRUCTOR","TYPED_ARRAY_TAG_REQUIRED","TypedArrayConstructorsList","BigIntArrayConstructorsList","BigInt64Array","BigUint64Array","aTypedArrayConstructor","KEY","ARRAY","TypedArrayConstructor","exportTypedArrayStaticMethod","rnds8","byteToHex","v4","rnds","isoName","nativeName","refresh","daysShort","monthsShort","firstDayOfWeek","format24h","pluralDay","noData","noResults","selectedRecords","recordsPerPage","allRows","heading1","heading2","heading3","heading4","heading5","heading6","paragraph","size1","size2","size3","size4","size5","size6","size7","defaultFont","noNodes","getLocale","__langPack","langObject","langEn","bordered","focusedEl","nextElementSibling","prim","BigInt","originalDefaults","spinnerSize","spinnerColor","messageColor","boxClass","customClass","TO_STRING_TAG_SUPPORT","CORRECT_ARGUMENTS","tryGet","callee","use","eject","waitFlags","Provider","instancesDeferred","instancesOptions","onInitCallbacks","normalizedIdentifier","normalizeInstanceIdentifier","shouldAutoInitialize","getOrInitializeService","isComponentEager","instanceDeferred","services","isComponentSet","normalizedDeferredIdentifier","existingCallbacks","existingInstance","invokeOnInitCallbacks","normalizeIdentifierForFactory","ComponentContainer"],"mappings":"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,EACR,GAAQ,EACR,GAAQ,EACR,GAAQ,EACR,GAAQ,EACR,GAAQ,EACR,GAAQ,EACR,GAAQ,EACR,GAAQ,EACR,GAAQ,EACR,GAAQ,EACR,GAAQ,EACR,GAAQ,EACR,GAAQ,EACR,GAAQ,EACR,GAAQ,EACR,GAAQ,EACR,GAAQ,EACR,GAAQ,EACR,GAAQ,EACR,GAAQ,EACR,GAAQ,EACR,GAAQ,EACR,GAAQ,EACR,GAAQ,EACR,GAAQ,EACR,GAAQ,EACR,GAAQ,EACR,GAAQ,EACR,GAAQ,EACR,GAAQ,EACR,GAAQ,EACR,GAAQ,EACR,GAAQ,EACR,GAAQ,EACR,GAAQ,EACR,GAAQ,EACR,GAAQ,EACR,GAAQ,EACR,GAAQ,EACR,GAAQ,EACR,GAAQ,EACR,GAAQ,EACR,GAAQ,EACR,GAAQ,EACR,GAAQ,EACR,GAAQ,EACR,GAAQ,EACR,GAAQ,EACR,GAAQ,EACR,GAAQ,EACR,GAAQ,EACR,IAAQ,EACR,IAAQ,EACR,IAAQ,EACR,IAAQ,EACR,IAAQ,EACR,IAAQ,EACR,IAAQ,EACR,IAAQ,EACR,IAAQ,EACR,IAAQ,EACR,IAAQ,EACR,IAAQ,EACR,IAAQ,EACR,IAAQ,EACR,IAAQ,EACR,IAAQ,EACR,IAAQ,EACR,IAAQ,EACR,IAAQ,EACR,IAAQ,EACR,IAAQ,EACR,IAAQ,EACR,IAAQ,EACR,IAAQ,EACR,IAAQ,EACR,IAAQ,EACR,IAAQ,EACR,IAAQ,EACR,IAAQ,EACR,IAAQ,EACR,IAAQ,EACR,IAAQ,EACR,IAAQ,EACR,IAAQ,EACR,IAAQ,EACR,IAAQ,EACR,IAAQ,EACR,IAAQ,EACR,IAAQ,EACR,IAAQ,EACR,IAAQ,EACR,IAAQ,EACR,IAAQ,EACR,IAAQ,EACR,IAAQ,EACR,IAAQ,EACR,IAAQ,EACR,IAAQ,EACR,IAAQ,EACR,IAAQ,EACR,IAAQ,EACR,IAAQ,EACR,IAAQ,EACR,IAAQ,EACR,IAAQ,EACR,IAAQ,EACR,IAAQ,EACR,IAAQ,EACR,IAAQ,EACR,IAAQ,EACR,IAAQ,EACR,IAAQ,EACR,IAAQ,EACR,IAAQ,EACR,IAAQ,EACR,IAAQ,EACR,IAAQ,EACR,IAAQ,EACR,IAAQ,EACR,IAAQ,EACR,IAAQ,EACR,IAAQ,EACR,IAAQ,EACR,IAAQ,EACR,IAAQ,EACR,IAAQ,EACR,IAAQ,EACR,IAAQ,EACR,IAAQ,EACR,IAAQ,EACR,IAAQ,EACR,IAAQ,EACR,IAAQ,EACR,IAAQ,EACR,IAAQ,EACR,IAAQ,EACR,IAAQ,EACR,IAAQ,EACR,IAAQ,EACR,IAAQ,EACR,IAAQ,EACR,IAAQ,EACR,IAAQ,EACR,IAAQ,EACR,IAAQ,EACR,IAAQ,EACR,IAAQ,EACR,IAAQ,EACR,IAAQ,EACR,IAAQ,EACR,IAAQ,EACR,IAAQ,EACR,IAAQ,EACR,IAAQ,EACR,IAAQ,EACR,IAAQ,EACR,IAAQ,EACR,IAAQ,EACR,IAAQ,EACR,IAAQ,EACR,IAAQ,EACR,IAAQ,EACR,IAAQ,EACR,IAAQ,EACR,IAAQ,EACR,IAAQ,EACR,IAAQ,EACR,IAAQ,EACR,IAAQ,EACR,IAAQ,EACR,IAAQ,EACR,IAAQ,EACR,IAAQ,EACR,IAAQ,EACR,IAAQ,EACR,IAAQ,EACR,IAAQ,EACR,IAAQ,EACR,IAAQ,EACR,IAAQ,EACR,IAAQ,EACR,IAAQ,EACR,IAAQ,EACR,IAAQ,EACR,IAAQ,EACR,IAAQ,EACR,IAAQ,EACR,IAAQ,EACR,IAAQ,EACR,IAAQ,EACR,IAAQ,EACR,IAAQ,EACR,IAAQ,EACR,IAAQ,EACR,IAAQ,EACR,IAAQ,EACR,IAAQ,EACR,IAAQ,EACR,IAAQ,EACR,IAAQ,EACR,IAAQ,EACR,IAAQ,EACR,IAAQ,EACR,IAAQ,EACR,IAAQ,EACR,IAAQ,EACR,IAAQ,EACR,IAAQ,EACR,IAAQ,EACR,IAAQ,EACR,IAAQ,EACR,IAAQ,EACR,IAAQ,EACR,IAAQ,EACR,IAAQ,EACR,IAAQ,EACR,IAAQ,EACR,IAAQ,EACR,IAAQ,EACR,IAAQ,EACR,IAAQ,EACR,IAAQ,EACR,IAAQ,EACR,IAAQ,EACR,IAAQ,EACR,IAAQ,EACR,IAAQ,EACR,IAAQ,EACR,IAAQ,EACR,IAAQ,EACR,IAAQ,EACR,IAAQ,EACR,IAAQ,EACR,IAAQ,EACR,IAAQ,EACR,IAAQ,EACR,IAAQ,EACR,IAAQ,EACR,IAAQ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","file":"js/chunk-vendors.827c366c.js","sourcesContent":["import { h, defineComponent, computed, getCurrentInstance } from 'vue'\n\nimport useSize, { useSizeProps } from '../../composables/private/use-size.js'\nimport { hSlot, hMergeSlot } from '../../utils/private/render.js'\n\nconst sameFn = i => i\nconst ionFn = i => `ionicons ${ i }`\n\nconst libMap = {\n 'icon-': sameFn, // fontawesome equiv\n 'bt-': i => `bt ${ i }`,\n 'eva-': i => `eva ${ i }`,\n 'ion-md': ionFn,\n 'ion-ios': ionFn,\n 'ion-logo': ionFn,\n 'mdi-': i => `mdi ${ i }`,\n 'iconfont ': sameFn,\n 'ti-': i => `themify-icon ${ i }`,\n 'bi-': i => `bootstrap-icons ${ i }`\n}\n\nconst matMap = {\n o_: '-outlined',\n r_: '-round',\n s_: '-sharp'\n}\n\nconst libRE = new RegExp('^(' + Object.keys(libMap).join('|') + ')')\nconst matRE = new RegExp('^(' + Object.keys(matMap).join('|') + ')')\nconst mRE = /^M/\nconst imgRE = /^img:/\nconst svgUseRE = /^svguse:/\nconst ionRE = /^ion-/\nconst faLaRE = /^[l|f]a[s|r|l|b|d]? /\n\nexport default defineComponent({\n name: 'QIcon',\n\n props: {\n ...useSizeProps,\n\n tag: {\n type: String,\n default: 'i'\n },\n\n name: String,\n color: String,\n left: Boolean,\n right: Boolean\n },\n\n setup (props, { slots }) {\n const { proxy: { $q } } = getCurrentInstance()\n const sizeStyle = useSize(props)\n\n const classes = computed(() =>\n 'q-icon'\n + (props.left === true ? ' on-left' : '')\n + (props.right === true ? ' on-right' : '')\n + (props.color !== void 0 ? ` text-${ props.color }` : '')\n )\n\n const type = computed(() => {\n let cls\n let icon = props.name\n\n if (!icon) {\n return {\n none: true,\n cls: classes.value\n }\n }\n\n if ($q.iconMapFn !== null) {\n const res = $q.iconMapFn(icon)\n if (res !== void 0) {\n if (res.icon !== void 0) {\n icon = res.icon\n }\n else {\n return {\n cls: res.cls + ' ' + classes.value,\n content: res.content !== void 0\n ? res.content\n : ' '\n }\n }\n }\n }\n\n if (mRE.test(icon) === true) {\n const [ def, viewBox ] = icon.split('|')\n\n return {\n svg: true,\n cls: classes.value,\n nodes: def.split('&&').map(path => {\n const [ d, style, transform ] = path.split('@@')\n return h('path', {\n style,\n d,\n transform\n })\n }),\n viewBox: viewBox !== void 0 ? viewBox : '0 0 24 24'\n }\n }\n\n if (imgRE.test(icon) === true) {\n return {\n img: true,\n cls: classes.value,\n src: icon.substring(4)\n }\n }\n\n if (svgUseRE.test(icon) === true) {\n const [ def, viewBox ] = icon.split('|')\n\n return {\n svguse: true,\n cls: classes.value,\n src: def.substring(7),\n viewBox: viewBox !== void 0 ? viewBox : '0 0 24 24'\n }\n }\n\n let content = ' '\n const matches = icon.match(libRE)\n\n if (matches !== null) {\n cls = libMap[ matches[ 1 ] ](icon)\n }\n else if (faLaRE.test(icon) === true) {\n cls = icon\n }\n else if (ionRE.test(icon) === true) {\n cls = `ionicons ion-${ $q.platform.is.ios === true ? 'ios' : 'md' }${ icon.substr(3) }`\n }\n else {\n // \"notranslate\" class is for Google Translate\n // to avoid tampering with Material Icons ligature font\n //\n // Caution: To be able to add suffix to the class name,\n // keep the 'material-icons' at the end of the string.\n cls = 'notranslate material-icons'\n\n const matches = icon.match(matRE)\n if (matches !== null) {\n icon = icon.substring(2)\n cls += matMap[ matches[ 1 ] ]\n }\n\n content = icon\n }\n\n return {\n cls: cls + ' ' + classes.value,\n content\n }\n })\n\n return () => {\n const data = {\n class: type.value.cls,\n style: sizeStyle.value,\n 'aria-hidden': 'true',\n role: 'presentation'\n }\n\n if (type.value.none === true) {\n return h(props.tag, data, hSlot(slots.default))\n }\n\n if (type.value.img === true) {\n data.src = type.value.src\n return h('img', data)\n }\n\n if (type.value.svg === true) {\n data.viewBox = type.value.viewBox\n\n return h('svg', data, hMergeSlot(slots.default, type.value.nodes))\n }\n\n if (type.value.svguse === true) {\n data.viewBox = type.value.viewBox\n\n return h(\n 'svg',\n data,\n hMergeSlot(slots.default, [ h('use', { 'xlink:href': type.value.src }) ])\n )\n }\n\n return h(props.tag, data, hMergeSlot(slots.default, [\n type.value.content\n ]))\n }\n }\n})\n","'use strict';\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar test = {};\n\ntest[TO_STRING_TAG] = 'z';\n\nmodule.exports = String(test) === '[object z]';\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this-clause');\nvar aCallable = require('../internals/a-callable');\nvar NATIVE_BIND = require('../internals/function-bind-native');\n\nvar bind = uncurryThis(uncurryThis.bind);\n\n// optional / simple context binding\nmodule.exports = function (fn, that) {\n aCallable(fn);\n return that === undefined ? fn : NATIVE_BIND ? bind(fn, that) : function (/* ...args */) {\n return fn.apply(that, arguments);\n };\n};\n","'use strict';\n/* eslint-disable es/no-symbol -- required for testing */\nvar V8_VERSION = require('../internals/environment-v8-version');\nvar fails = require('../internals/fails');\nvar globalThis = require('../internals/global-this');\n\nvar $String = globalThis.String;\n\n// eslint-disable-next-line es/no-object-getownpropertysymbols -- required for testing\nmodule.exports = !!Object.getOwnPropertySymbols && !fails(function () {\n var symbol = Symbol('symbol detection');\n // Chrome 38 Symbol has incorrect toString conversion\n // `get-own-property-symbols` polyfill symbols converted to object are not Symbol instances\n // nb: Do not call `String` directly to avoid this being optimized out to `symbol+''` which will,\n // of course, fail.\n return !$String(symbol) || !(Object(symbol) instanceof Symbol) ||\n // Chrome 38-40 symbols are not inherited from DOM collections prototypes to instances\n !Symbol.sham && V8_VERSION && V8_VERSION < 41;\n});\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar call = require('../internals/function-call');\nvar propertyIsEnumerableModule = require('../internals/object-property-is-enumerable');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar toPropertyKey = require('../internals/to-property-key');\nvar hasOwn = require('../internals/has-own-property');\nvar IE8_DOM_DEFINE = require('../internals/ie8-dom-define');\n\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar $getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// `Object.getOwnPropertyDescriptor` method\n// https://tc39.es/ecma262/#sec-object.getownpropertydescriptor\nexports.f = DESCRIPTORS ? $getOwnPropertyDescriptor : function getOwnPropertyDescriptor(O, P) {\n O = toIndexedObject(O);\n P = toPropertyKey(P);\n if (IE8_DOM_DEFINE) try {\n return $getOwnPropertyDescriptor(O, P);\n } catch (error) { /* empty */ }\n if (hasOwn(O, P)) return createPropertyDescriptor(!call(propertyIsEnumerableModule.f, O, P), O[P]);\n};\n","'use strict';\nvar toLength = require('../internals/to-length');\n\n// `LengthOfArrayLike` abstract operation\n// https://tc39.es/ecma262/#sec-lengthofarraylike\nmodule.exports = function (obj) {\n return toLength(obj.length);\n};\n","import { css, getElement } from './dom.js'\n\nconst scrollTargets = __QUASAR_SSR_SERVER__\n ? []\n : [ null, document, document.body, document.scrollingElement, document.documentElement ]\n\nexport function getScrollTarget (el, targetEl) {\n let target = getElement(targetEl)\n\n if (target === void 0) {\n if (el === void 0 || el === null) {\n return window\n }\n\n target = el.closest('.scroll,.scroll-y,.overflow-auto')\n }\n\n return scrollTargets.includes(target)\n ? window\n : target\n}\n\nexport function getScrollHeight (el) {\n return (el === window ? document.body : el).scrollHeight\n}\n\nexport function getScrollWidth (el) {\n return (el === window ? document.body : el).scrollWidth\n}\n\nexport function getVerticalScrollPosition (scrollTarget) {\n return scrollTarget === window\n ? window.pageYOffset || window.scrollY || document.body.scrollTop || 0\n : scrollTarget.scrollTop\n}\n\nexport function getHorizontalScrollPosition (scrollTarget) {\n return scrollTarget === window\n ? window.pageXOffset || window.scrollX || document.body.scrollLeft || 0\n : scrollTarget.scrollLeft\n}\n\nexport function animVerticalScrollTo (el, to, duration = 0 /* , prevTime */) {\n const prevTime = arguments[ 3 ] === void 0 ? performance.now() : arguments[ 3 ]\n const pos = getVerticalScrollPosition(el)\n\n if (duration <= 0) {\n if (pos !== to) {\n setScroll(el, to)\n }\n return\n }\n\n requestAnimationFrame(nowTime => {\n const frameTime = nowTime - prevTime\n const newPos = pos + (to - pos) / Math.max(frameTime, duration) * frameTime\n setScroll(el, newPos)\n if (newPos !== to) {\n animVerticalScrollTo(el, to, duration - frameTime, nowTime)\n }\n })\n}\n\nexport function animHorizontalScrollTo (el, to, duration = 0 /* , prevTime */) {\n const prevTime = arguments[ 3 ] === void 0 ? performance.now() : arguments[ 3 ]\n const pos = getHorizontalScrollPosition(el)\n\n if (duration <= 0) {\n if (pos !== to) {\n setHorizontalScroll(el, to)\n }\n return\n }\n\n requestAnimationFrame(nowTime => {\n const frameTime = nowTime - prevTime\n const newPos = pos + (to - pos) / Math.max(frameTime, duration) * frameTime\n setHorizontalScroll(el, newPos)\n if (newPos !== to) {\n animHorizontalScrollTo(el, to, duration - frameTime, nowTime)\n }\n })\n}\n\nfunction setScroll (scrollTarget, offset) {\n if (scrollTarget === window) {\n window.scrollTo(window.pageXOffset || window.scrollX || document.body.scrollLeft || 0, offset)\n return\n }\n scrollTarget.scrollTop = offset\n}\n\nfunction setHorizontalScroll (scrollTarget, offset) {\n if (scrollTarget === window) {\n window.scrollTo(offset, window.pageYOffset || window.scrollY || document.body.scrollTop || 0)\n return\n }\n scrollTarget.scrollLeft = offset\n}\n\nexport function setVerticalScrollPosition (scrollTarget, offset, duration) {\n if (duration) {\n animVerticalScrollTo(scrollTarget, offset, duration)\n return\n }\n setScroll(scrollTarget, offset)\n}\n\nexport function setHorizontalScrollPosition (scrollTarget, offset, duration) {\n if (duration) {\n animHorizontalScrollTo(scrollTarget, offset, duration)\n return\n }\n setHorizontalScroll(scrollTarget, offset)\n}\n\nlet size\nexport function getScrollbarWidth () {\n if (size !== undefined) {\n return size\n }\n\n const\n inner = document.createElement('p'),\n outer = document.createElement('div')\n\n css(inner, {\n width: '100%',\n height: '200px'\n })\n css(outer, {\n position: 'absolute',\n top: '0px',\n left: '0px',\n visibility: 'hidden',\n width: '200px',\n height: '150px',\n overflow: 'hidden'\n })\n\n outer.appendChild(inner)\n\n document.body.appendChild(outer)\n\n const w1 = inner.offsetWidth\n outer.style.overflow = 'scroll'\n let w2 = inner.offsetWidth\n\n if (w1 === w2) {\n w2 = outer.clientWidth\n }\n\n outer.remove()\n size = w1 - w2\n\n return size\n}\n\nexport function hasScrollbar (el, onY = true) {\n if (!el || el.nodeType !== Node.ELEMENT_NODE) {\n return false\n }\n\n return onY\n ? (\n el.scrollHeight > el.clientHeight && (\n el.classList.contains('scroll')\n || el.classList.contains('overflow-auto')\n || [ 'auto', 'scroll' ].includes(window.getComputedStyle(el)[ 'overflow-y' ])\n )\n )\n : (\n el.scrollWidth > el.clientWidth && (\n el.classList.contains('scroll')\n || el.classList.contains('overflow-auto')\n || [ 'auto', 'scroll' ].includes(window.getComputedStyle(el)[ 'overflow-x' ])\n )\n )\n}\n\nexport default {\n getScrollTarget,\n\n getScrollHeight,\n getScrollWidth,\n\n getVerticalScrollPosition,\n getHorizontalScrollPosition,\n\n animVerticalScrollTo,\n animHorizontalScrollTo,\n\n setVerticalScrollPosition,\n setHorizontalScrollPosition,\n\n getScrollbarWidth,\n hasScrollbar\n}\n","/* eslint-disable no-useless-escape */\n/* eslint-disable no-unused-expressions */\n/* eslint-disable no-mixed-operators */\n\nimport { ref, reactive } from 'vue'\n\n/**\n * __ QUASAR_SSR __ -> runs on SSR on client or server\n * __ QUASAR_SSR_SERVER __ -> runs on SSR on server\n * __ QUASAR_SSR_CLIENT __ -> runs on SSR on client\n * __ QUASAR_SSR_PWA __ -> built with SSR+PWA; may run on SSR on client or on PWA client\n * (needs runtime detection)\n */\n\nexport const isRuntimeSsrPreHydration = __QUASAR_SSR_SERVER__\n ? { value: true }\n : ref(\n __QUASAR_SSR_CLIENT__ && (\n __QUASAR_SSR_PWA__ ? document.body.getAttribute('data-server-rendered') !== null : true\n )\n )\n\nexport let iosEmulated = false\nexport let iosCorrection\n\nfunction getMatch (userAgent, platformMatch) {\n const match = /(edge|edga|edgios)\\/([\\w.]+)/.exec(userAgent)\n || /(opr)[\\/]([\\w.]+)/.exec(userAgent)\n || /(vivaldi)[\\/]([\\w.]+)/.exec(userAgent)\n || /(chrome|crios)[\\/]([\\w.]+)/.exec(userAgent)\n || /(iemobile)[\\/]([\\w.]+)/.exec(userAgent)\n || /(version)(applewebkit)[\\/]([\\w.]+).*(safari)[\\/]([\\w.]+)/.exec(userAgent)\n || /(webkit)[\\/]([\\w.]+).*(version)[\\/]([\\w.]+).*(safari)[\\/]([\\w.]+)/.exec(userAgent)\n || /(firefox|fxios)[\\/]([\\w.]+)/.exec(userAgent)\n || /(webkit)[\\/]([\\w.]+)/.exec(userAgent)\n || /(opera)(?:.*version|)[\\/]([\\w.]+)/.exec(userAgent)\n || /(msie) ([\\w.]+)/.exec(userAgent)\n || (userAgent.indexOf('trident') >= 0 && /(rv)(?::| )([\\w.]+)/.exec(userAgent))\n || (userAgent.indexOf('compatible') < 0 && /(mozilla)(?:.*? rv:([\\w.]+)|)/.exec(userAgent))\n || []\n\n return {\n browser: match[ 5 ] || match[ 3 ] || match[ 1 ] || '',\n version: match[ 2 ] || match[ 4 ] || '0',\n versionNumber: match[ 4 ] || match[ 2 ] || '0',\n platform: platformMatch[ 0 ] || ''\n }\n}\n\nfunction getPlatformMatch (userAgent) {\n return /(ipad)/.exec(userAgent)\n || /(ipod)/.exec(userAgent)\n || /(windows phone)/.exec(userAgent)\n || /(iphone)/.exec(userAgent)\n || /(kindle)/.exec(userAgent)\n || /(silk)/.exec(userAgent)\n || /(android)/.exec(userAgent)\n || /(win)/.exec(userAgent)\n || /(mac)/.exec(userAgent)\n || /(linux)/.exec(userAgent)\n || /(cros)/.exec(userAgent)\n || /(playbook)/.exec(userAgent)\n || /(bb)/.exec(userAgent)\n || /(blackberry)/.exec(userAgent)\n || []\n}\n\nconst hasTouch = __QUASAR_SSR_SERVER__\n ? false\n : 'ontouchstart' in window || window.navigator.maxTouchPoints > 0\n\nfunction applyIosCorrection (is) {\n iosCorrection = { is: { ...is } }\n\n delete is.mac\n delete is.desktop\n\n const platform = Math.min(window.innerHeight, window.innerWidth) > 414\n ? 'ipad'\n : 'iphone'\n\n Object.assign(is, {\n mobile: true,\n ios: true,\n platform,\n [ platform ]: true\n })\n}\n\nfunction getPlatform (UA) {\n const\n userAgent = UA.toLowerCase(),\n platformMatch = getPlatformMatch(userAgent),\n matched = getMatch(userAgent, platformMatch),\n browser = {}\n\n if (matched.browser) {\n browser[ matched.browser ] = true\n browser.version = matched.version\n browser.versionNumber = parseInt(matched.versionNumber, 10)\n }\n\n if (matched.platform) {\n browser[ matched.platform ] = true\n }\n\n const knownMobiles = browser.android\n || browser.ios\n || browser.bb\n || browser.blackberry\n || browser.ipad\n || browser.iphone\n || browser.ipod\n || browser.kindle\n || browser.playbook\n || browser.silk\n || browser[ 'windows phone' ]\n\n // These are all considered mobile platforms, meaning they run a mobile browser\n if (knownMobiles === true || userAgent.indexOf('mobile') > -1) {\n browser.mobile = true\n\n if (browser.edga || browser.edgios) {\n browser.edge = true\n matched.browser = 'edge'\n }\n else if (browser.crios) {\n browser.chrome = true\n matched.browser = 'chrome'\n }\n else if (browser.fxios) {\n browser.firefox = true\n matched.browser = 'firefox'\n }\n }\n // If it's not mobile we should consider it's desktop platform, meaning it runs a desktop browser\n // It's a workaround for anonymized user agents\n // (browser.cros || browser.mac || browser.linux || browser.win)\n else {\n browser.desktop = true\n }\n\n // Set iOS if on iPod, iPad or iPhone\n if (browser.ipod || browser.ipad || browser.iphone) {\n browser.ios = true\n }\n\n if (browser[ 'windows phone' ]) {\n browser.winphone = true\n delete browser[ 'windows phone' ]\n }\n\n // Chrome, Opera 15+, Vivaldi and Safari are webkit based browsers\n if (\n browser.chrome\n || browser.opr\n || browser.safari\n || browser.vivaldi\n // we expect unknown, non iOS mobile browsers to be webkit based\n || (\n browser.mobile === true\n && browser.ios !== true\n && knownMobiles !== true\n )\n ) {\n browser.webkit = true\n }\n\n // Blackberry browsers are marked as Safari on BlackBerry\n if (browser.safari && browser.blackberry || browser.bb) {\n matched.browser = 'blackberry'\n browser.blackberry = true\n }\n\n // Playbook browsers are marked as Safari on Playbook\n if (browser.safari && browser.playbook) {\n matched.browser = 'playbook'\n browser.playbook = true\n }\n\n // Opera 15+ are identified as opr\n if (browser.opr) {\n matched.browser = 'opera'\n browser.opera = true\n }\n\n // Stock Android browsers are marked as Safari on Android.\n if (browser.safari && browser.android) {\n matched.browser = 'android'\n browser.android = true\n }\n\n // Kindle browsers are marked as Safari on Kindle\n if (browser.safari && browser.kindle) {\n matched.browser = 'kindle'\n browser.kindle = true\n }\n\n // Kindle Silk browsers are marked as Safari on Kindle\n if (browser.safari && browser.silk) {\n matched.browser = 'silk'\n browser.silk = true\n }\n\n if (browser.vivaldi) {\n matched.browser = 'vivaldi'\n browser.vivaldi = true\n }\n\n // Assign the name and platform variable\n browser.name = matched.browser\n browser.platform = matched.platform\n\n if (__QUASAR_SSR_SERVER__ !== true) {\n if (userAgent.indexOf('electron') > -1) {\n browser.electron = true\n }\n else if (document.location.href.indexOf('-extension://') > -1) {\n browser.bex = true\n }\n else {\n if (window.Capacitor !== void 0) {\n browser.capacitor = true\n browser.nativeMobile = true\n browser.nativeMobileWrapper = 'capacitor'\n }\n else if (window._cordovaNative !== void 0 || window.cordova !== void 0) {\n browser.cordova = true\n browser.nativeMobile = true\n browser.nativeMobileWrapper = 'cordova'\n }\n\n if (\n hasTouch === true\n && browser.mac === true\n && (\n (browser.desktop === true && browser.safari === true)\n || (\n browser.nativeMobile === true\n && browser.android !== true\n && browser.ios !== true\n && browser.ipad !== true\n )\n )\n ) {\n /*\n * Correction needed for iOS since the default\n * setting on iPad is to request desktop view; if we have\n * touch support and the user agent says it's a\n * desktop, we infer that it's an iPhone/iPad with desktop view\n * so we must fix the false positives\n */\n applyIosCorrection(browser)\n }\n }\n }\n\n return browser\n}\n\nconst userAgent = __QUASAR_SSR_SERVER__\n ? ''\n : navigator.userAgent || navigator.vendor || window.opera\n\nconst ssrClient = {\n has: {\n touch: false,\n webStorage: false\n },\n within: { iframe: false }\n}\n\n// We export \"client\" for hydration error-free parts,\n// like touch directives who do not (and must NOT) wait\n// for the client takeover;\n// Do NOT import this directly in your app, unless you really know\n// what you are doing.\nexport const client = __QUASAR_SSR_SERVER__\n ? ssrClient\n : {\n userAgent,\n is: getPlatform(userAgent),\n has: {\n touch: hasTouch,\n webStorage: (() => {\n try {\n if (window.localStorage) {\n return true\n }\n }\n catch (e) {}\n return false\n })()\n },\n within: {\n iframe: window.self !== window.top\n }\n }\n\nconst Platform = {\n install (opts) {\n const { $q } = opts\n\n if (__QUASAR_SSR_SERVER__) {\n $q.platform = this.parseSSR(opts.ssrContext)\n }\n else if (isRuntimeSsrPreHydration.value === true) {\n // takeover should increase accuracy for\n // the rest of the props; we also avoid\n // hydration errors\n opts.onSSRHydrated.push(() => {\n isRuntimeSsrPreHydration.value = false\n Object.assign($q.platform, client)\n iosCorrection = void 0\n })\n\n // we need to make platform reactive\n // for the takeover phase\n $q.platform = reactive(this)\n }\n else {\n $q.platform = this\n }\n }\n}\n\nif (__QUASAR_SSR_SERVER__) {\n Platform.parseSSR = (ssrContext) => {\n const userAgent = ssrContext.req.headers[ 'user-agent' ] || ssrContext.req.headers[ 'User-Agent' ] || ''\n return {\n ...client,\n userAgent,\n is: getPlatform(userAgent)\n }\n }\n}\nelse {\n iosEmulated = client.is.ios === true\n && window.navigator.vendor.toLowerCase().indexOf('apple') === -1\n\n if (isRuntimeSsrPreHydration.value === true) {\n // must match with server-side before\n // client taking over in order to prevent\n // hydration errors\n Object.assign(Platform, client, iosCorrection, ssrClient)\n }\n else {\n Object.assign(Platform, client)\n }\n}\n\nexport default Platform\n","'use strict';\n\nvar utils = require('./../utils');\nvar buildURL = require('../helpers/buildURL');\nvar InterceptorManager = require('./InterceptorManager');\nvar dispatchRequest = require('./dispatchRequest');\nvar mergeConfig = require('./mergeConfig');\nvar validator = require('../helpers/validator');\n\nvar validators = validator.validators;\n/**\n * Create a new instance of Axios\n *\n * @param {Object} instanceConfig The default config for the instance\n */\nfunction Axios(instanceConfig) {\n this.defaults = instanceConfig;\n this.interceptors = {\n request: new InterceptorManager(),\n response: new InterceptorManager()\n };\n}\n\n/**\n * Dispatch a request\n *\n * @param {Object} config The config specific for this request (merged with this.defaults)\n */\nAxios.prototype.request = function request(config) {\n /*eslint no-param-reassign:0*/\n // Allow for axios('example/url'[, config]) a la fetch API\n if (typeof config === 'string') {\n config = arguments[1] || {};\n config.url = arguments[0];\n } else {\n config = config || {};\n }\n\n config = mergeConfig(this.defaults, config);\n\n // Set config.method\n if (config.method) {\n config.method = config.method.toLowerCase();\n } else if (this.defaults.method) {\n config.method = this.defaults.method.toLowerCase();\n } else {\n config.method = 'get';\n }\n\n var transitional = config.transitional;\n\n if (transitional !== undefined) {\n validator.assertOptions(transitional, {\n silentJSONParsing: validators.transitional(validators.boolean),\n forcedJSONParsing: validators.transitional(validators.boolean),\n clarifyTimeoutError: validators.transitional(validators.boolean)\n }, false);\n }\n\n // filter out skipped interceptors\n var requestInterceptorChain = [];\n var synchronousRequestInterceptors = true;\n this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) {\n if (typeof interceptor.runWhen === 'function' && interceptor.runWhen(config) === false) {\n return;\n }\n\n synchronousRequestInterceptors = synchronousRequestInterceptors && interceptor.synchronous;\n\n requestInterceptorChain.unshift(interceptor.fulfilled, interceptor.rejected);\n });\n\n var responseInterceptorChain = [];\n this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) {\n responseInterceptorChain.push(interceptor.fulfilled, interceptor.rejected);\n });\n\n var promise;\n\n if (!synchronousRequestInterceptors) {\n var chain = [dispatchRequest, undefined];\n\n Array.prototype.unshift.apply(chain, requestInterceptorChain);\n chain = chain.concat(responseInterceptorChain);\n\n promise = Promise.resolve(config);\n while (chain.length) {\n promise = promise.then(chain.shift(), chain.shift());\n }\n\n return promise;\n }\n\n\n var newConfig = config;\n while (requestInterceptorChain.length) {\n var onFulfilled = requestInterceptorChain.shift();\n var onRejected = requestInterceptorChain.shift();\n try {\n newConfig = onFulfilled(newConfig);\n } catch (error) {\n onRejected(error);\n break;\n }\n }\n\n try {\n promise = dispatchRequest(newConfig);\n } catch (error) {\n return Promise.reject(error);\n }\n\n while (responseInterceptorChain.length) {\n promise = promise.then(responseInterceptorChain.shift(), responseInterceptorChain.shift());\n }\n\n return promise;\n};\n\nAxios.prototype.getUri = function getUri(config) {\n config = mergeConfig(this.defaults, config);\n return buildURL(config.url, config.params, config.paramsSerializer).replace(/^\\?/, '');\n};\n\n// Provide aliases for supported request methods\nutils.forEach(['delete', 'get', 'head', 'options'], function forEachMethodNoData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function(url, config) {\n return this.request(mergeConfig(config || {}, {\n method: method,\n url: url,\n data: (config || {}).data\n }));\n };\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function(url, data, config) {\n return this.request(mergeConfig(config || {}, {\n method: method,\n url: url,\n data: data\n }));\n };\n});\n\nmodule.exports = Axios;\n","'use strict';\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\nvar toLength = require('../internals/to-length');\n\nvar $RangeError = RangeError;\n\n// `ToIndex` abstract operation\n// https://tc39.es/ecma262/#sec-toindex\nmodule.exports = function (it) {\n if (it === undefined) return 0;\n var number = toIntegerOrInfinity(it);\n var length = toLength(number);\n if (number !== length) throw new $RangeError('Wrong length or index');\n return length;\n};\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar fails = require('../internals/fails');\nvar createElement = require('../internals/document-create-element');\n\n// Thanks to IE8 for its funny defineProperty\nmodule.exports = !DESCRIPTORS && !fails(function () {\n // eslint-disable-next-line es/no-object-defineproperty -- required for testing\n return Object.defineProperty(createElement('div'), 'a', {\n get: function () { return 7; }\n }).a !== 7;\n});\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\n\nvar $Error = Error;\nvar replace = uncurryThis(''.replace);\n\nvar TEST = (function (arg) { return String(new $Error(arg).stack); })('zxcasd');\n// eslint-disable-next-line redos/no-vulnerable, sonarjs/slow-regex -- safe\nvar V8_OR_CHAKRA_STACK_ENTRY = /\\n\\s*at [^:]*:[^\\n]*/;\nvar IS_V8_OR_CHAKRA_STACK = V8_OR_CHAKRA_STACK_ENTRY.test(TEST);\n\nmodule.exports = function (stack, dropEntries) {\n if (IS_V8_OR_CHAKRA_STACK && typeof stack == 'string' && !$Error.prepareStackTrace) {\n while (dropEntries--) stack = replace(stack, V8_OR_CHAKRA_STACK_ENTRY, '');\n } return stack;\n};\n","'use strict';\nvar $String = String;\n\nmodule.exports = function (argument) {\n try {\n return $String(argument);\n } catch (error) {\n return 'Object';\n }\n};\n","import { computed } from 'vue'\nimport { useSizeDefaults } from '../../composables/private/use-size.js'\n\nexport const useSpinnerProps = {\n size: {\n type: [ Number, String ],\n default: '1em'\n },\n color: String\n}\n\nexport default function useSpinner (props) {\n return {\n cSize: computed(() => (\n props.size in useSizeDefaults\n ? `${ useSizeDefaults[ props.size ] }px`\n : props.size\n )),\n\n classes: computed(() =>\n 'q-spinner' + (props.color ? ` text-${ props.color }` : '')\n )\n }\n}\n","import { h, defineComponent } from 'vue'\n\nimport useSpinner, { useSpinnerProps } from './use-spinner.js'\n\nexport default defineComponent({\n name: 'QSpinner',\n\n props: {\n ...useSpinnerProps,\n\n thickness: {\n type: Number,\n default: 5\n }\n },\n\n setup (props) {\n const { cSize, classes } = useSpinner(props)\n\n return () => h('svg', {\n class: classes.value + ' q-spinner-mat',\n width: cSize.value,\n height: cSize.value,\n viewBox: '25 25 50 50'\n }, [\n h('circle', {\n class: 'path',\n cx: '50',\n cy: '50',\n r: '20',\n fill: 'none',\n stroke: 'currentColor',\n 'stroke-width': props.thickness,\n 'stroke-miterlimit': '10'\n })\n ])\n }\n})\n","'use strict';\n\n/**\n * Syntactic sugar for invoking a function and expanding an array for arguments.\n *\n * Common use case would be to use `Function.prototype.apply`.\n *\n * ```js\n * function f(x, y, z) {}\n * var args = [1, 2, 3];\n * f.apply(null, args);\n * ```\n *\n * With `spread` this example can be re-written.\n *\n * ```js\n * spread(function(x, y, z) {})([1, 2, 3]);\n * ```\n *\n * @param {Function} callback\n * @returns {Function}\n */\nmodule.exports = function spread(callback) {\n return function wrap(arr) {\n return callback.apply(null, arr);\n };\n};\n","import { computed } from 'vue'\n\nimport useAlign, { useAlignProps } from '../../composables/private/use-align.js'\nimport useSize, { useSizeProps } from '../../composables/private/use-size.js'\nimport useRouterLink, { useRouterLinkProps } from '../../composables/private/use-router-link.js'\n\nconst padding = {\n none: 0,\n xs: 4,\n sm: 8,\n md: 16,\n lg: 24,\n xl: 32\n}\n\nconst defaultSizes = {\n xs: 8,\n sm: 10,\n md: 14,\n lg: 20,\n xl: 24\n}\n\nexport const useBtnProps = {\n ...useSizeProps,\n ...useRouterLinkProps,\n\n type: {\n type: String,\n default: 'button'\n },\n\n label: [ Number, String ],\n icon: String,\n iconRight: String,\n\n round: Boolean,\n outline: Boolean,\n flat: Boolean,\n unelevated: Boolean,\n rounded: Boolean,\n push: Boolean,\n glossy: Boolean,\n\n size: String,\n fab: Boolean,\n fabMini: Boolean,\n padding: String,\n\n color: String,\n textColor: String,\n noCaps: Boolean,\n noWrap: Boolean,\n dense: Boolean,\n\n tabindex: [ Number, String ],\n\n ripple: {\n type: [ Boolean, Object ],\n default: true\n },\n\n align: {\n ...useAlignProps.align,\n default: 'center'\n },\n stack: Boolean,\n stretch: Boolean,\n loading: {\n type: Boolean,\n default: null\n },\n disable: Boolean\n}\n\nexport default function (props) {\n const sizeStyle = useSize(props, defaultSizes)\n const alignClass = useAlign(props)\n const { hasLink, linkProps, navigateToLink } = useRouterLink()\n\n const style = computed(() => {\n const obj = props.fab === false && props.fabMini === false\n ? sizeStyle.value\n : {}\n\n return props.padding !== void 0\n ? Object.assign({}, obj, {\n padding: props.padding\n .split(/\\s+/)\n .map(v => (v in padding ? padding[ v ] + 'px' : v))\n .join(' '),\n minWidth: '0',\n minHeight: '0'\n })\n : obj\n })\n\n const isRounded = computed(() =>\n props.rounded === true || props.fab === true || props.fabMini === true\n )\n\n const isActionable = computed(() =>\n props.disable !== true && props.loading !== true\n )\n\n const tabIndex = computed(() => (\n isActionable.value === true ? props.tabindex || 0 : -1\n ))\n\n const isLink = computed(() =>\n props.type === 'a' || hasLink.value === true\n )\n\n const design = computed(() => {\n if (props.flat === true) return 'flat'\n if (props.outline === true) return 'outline'\n if (props.push === true) return 'push'\n if (props.unelevated === true) return 'unelevated'\n return 'standard'\n })\n\n const attributes = computed(() => {\n const acc = { tabindex: tabIndex.value }\n\n if (props.type !== 'a') {\n acc.type = props.type\n }\n\n if (hasLink.value === true) {\n Object.assign(acc, linkProps.value)\n }\n else {\n acc.role = props.type === 'a' ? 'link' : 'button'\n }\n\n if (props.loading === true && props.percentage !== void 0) {\n Object.assign(acc, {\n role: 'progressbar',\n 'aria-valuemin': 0,\n 'aria-valuemax': 100,\n 'aria-valuenow': props.percentage\n })\n }\n\n if (props.disable === true) {\n acc.disabled = ''\n acc[ 'aria-disabled' ] = 'true'\n }\n\n return acc\n })\n\n const classes = computed(() => {\n let colors\n\n if (props.color !== void 0) {\n if (props.flat === true || props.outline === true) {\n colors = `text-${ props.textColor || props.color }`\n }\n else {\n colors = `bg-${ props.color } text-${ props.textColor || 'white' }`\n }\n }\n else if (props.textColor) {\n colors = `text-${ props.textColor }`\n }\n\n return `q-btn--${ design.value } `\n + `q-btn--${ props.round === true ? 'round' : `rectangle${ isRounded.value === true ? ' q-btn--rounded' : '' }` }`\n + (colors !== void 0 ? ' ' + colors : '')\n + (isActionable.value === true ? ' q-btn--actionable q-focusable q-hoverable' : (props.disable === true ? ' disabled' : ''))\n + (props.fab === true ? ' q-btn--fab' : (props.fabMini === true ? ' q-btn--fab-mini' : ''))\n + (props.noCaps === true ? ' q-btn--no-uppercase' : '')\n + (props.dense === true ? ' q-btn--dense' : '')\n + (props.stretch === true ? ' no-border-radius self-stretch' : '')\n + (props.glossy === true ? ' glossy' : '')\n })\n\n const innerClasses = computed(() =>\n alignClass.value + (props.stack === true ? ' column' : ' row')\n + (props.noWrap === true ? ' no-wrap text-no-wrap' : '')\n + (props.loading === true ? ' q-btn__content--hidden' : '')\n )\n\n return {\n classes,\n style,\n innerClasses,\n attributes,\n hasLink,\n isLink,\n navigateToLink,\n isActionable\n }\n}\n","var r=function(r){return function(r){return!!r&&\"object\"==typeof r}(r)&&!function(r){var t=Object.prototype.toString.call(r);return\"[object RegExp]\"===t||\"[object Date]\"===t||function(r){return r.$$typeof===e}(r)}(r)},e=\"function\"==typeof Symbol&&Symbol.for?Symbol.for(\"react.element\"):60103;function t(r,e){return!1!==e.clone&&e.isMergeableObject(r)?u(Array.isArray(r)?[]:{},r,e):r}function n(r,e,n){return r.concat(e).map(function(r){return t(r,n)})}function o(r){return Object.keys(r).concat(function(r){return Object.getOwnPropertySymbols?Object.getOwnPropertySymbols(r).filter(function(e){return r.propertyIsEnumerable(e)}):[]}(r))}function c(r,e){try{return e in r}catch(r){return!1}}function u(e,i,a){(a=a||{}).arrayMerge=a.arrayMerge||n,a.isMergeableObject=a.isMergeableObject||r,a.cloneUnlessOtherwiseSpecified=t;var f=Array.isArray(i);return f===Array.isArray(e)?f?a.arrayMerge(e,i,a):function(r,e,n){var i={};return n.isMergeableObject(r)&&o(r).forEach(function(e){i[e]=t(r[e],n)}),o(e).forEach(function(o){(function(r,e){return c(r,e)&&!(Object.hasOwnProperty.call(r,e)&&Object.propertyIsEnumerable.call(r,e))})(r,o)||(i[o]=c(r,o)&&n.isMergeableObject(e[o])?function(r,e){if(!e.customMerge)return u;var t=e.customMerge(r);return\"function\"==typeof t?t:u}(o,n)(r[o],e[o],n):t(e[o],n))}),i}(e,i,a):t(i,a)}u.all=function(r,e){if(!Array.isArray(r))throw new Error(\"first argument should be an array\");return r.reduce(function(r,t){return u(r,t,e)},{})};var i=u;function a(r){var e=(r=r||{}).storage||window&&window.localStorage,t=r.key||\"vuex\";function n(r,e){var t=e.getItem(r);try{return\"string\"==typeof t?JSON.parse(t):\"object\"==typeof t?t:void 0}catch(r){}}function o(){return!0}function c(r,e,t){return t.setItem(r,JSON.stringify(e))}function u(r,e){return Array.isArray(e)?e.reduce(function(e,t){return function(r,e,t,n){return!/^(__proto__|constructor|prototype)$/.test(e)&&((e=e.split?e.split(\".\"):e.slice(0)).slice(0,-1).reduce(function(r,e){return r[e]=r[e]||{}},r)[e.pop()]=t),r}(e,t,(n=r,void 0===(n=((o=t).split?o.split(\".\"):o).reduce(function(r,e){return r&&r[e]},n))?void 0:n));var n,o},{}):r}function a(r){return function(e){return r.subscribe(e)}}(r.assertStorage||function(){e.setItem(\"@@\",1),e.removeItem(\"@@\")})(e);var f,s=function(){return(r.getState||n)(t,e)};return r.fetchBeforeUse&&(f=s()),function(n){r.fetchBeforeUse||(f=s()),\"object\"==typeof f&&null!==f&&(n.replaceState(r.overwrite?f:i(n.state,f,{arrayMerge:r.arrayMerger||function(r,e){return e},clone:!1})),(r.rehydrated||function(){})(n)),(r.subscriber||a)(n)(function(n,i){(r.filter||o)(n)&&(r.setState||c)(t,(r.reducer||u)(i,r.paths),e)})}}export default a;\n//# sourceMappingURL=vuex-persistedstate.es.js.map\n","/*! xlsx.js (C) 2013-present SheetJS -- http://sheetjs.com */\n/* vim: set ts=2: */\n/*exported XLSX */\n/*global global, exports, module, require:false, process:false, Buffer:false, ArrayBuffer:false */\nvar XLSX = {};\nfunction make_xlsx_lib(XLSX){\nXLSX.version = '0.14.5';\nvar current_codepage = 1200, current_ansi = 1252;\n/*global cptable:true, window */\nif(typeof module !== \"undefined\" && typeof require !== 'undefined') {\n\tif(typeof cptable === 'undefined') {\n\t\tif(typeof global !== 'undefined') global.cptable = require('./dist/cpexcel.js');\n\t\telse if(typeof window !== 'undefined') window.cptable = require('./dist/cpexcel.js');\n\t}\n}\n\nvar VALID_ANSI = [ 874, 932, 936, 949, 950 ];\nfor(var i = 0; i <= 8; ++i) VALID_ANSI.push(1250 + i);\n/* ECMA-376 Part I 18.4.1 charset to codepage mapping */\nvar CS2CP = ({\n0: 1252, /* ANSI */\n1: 65001, /* DEFAULT */\n2: 65001, /* SYMBOL */\n77: 10000, /* MAC */\n128: 932, /* SHIFTJIS */\n129: 949, /* HANGUL */\n130: 1361, /* JOHAB */\n134: 936, /* GB2312 */\n136: 950, /* CHINESEBIG5 */\n161: 1253, /* GREEK */\n162: 1254, /* TURKISH */\n163: 1258, /* VIETNAMESE */\n177: 1255, /* HEBREW */\n178: 1256, /* ARABIC */\n186: 1257, /* BALTIC */\n204: 1251, /* RUSSIAN */\n222: 874, /* THAI */\n238: 1250, /* EASTEUROPE */\n255: 1252, /* OEM */\n69: 6969 /* MISC */\n});\n\nvar set_ansi = function(cp) { if(VALID_ANSI.indexOf(cp) == -1) return; current_ansi = CS2CP[0] = cp; };\nfunction reset_ansi() { set_ansi(1252); }\n\nvar set_cp = function(cp) { current_codepage = cp; set_ansi(cp); };\nfunction reset_cp() { set_cp(1200); reset_ansi(); }\n\nfunction char_codes(data) { var o = []; for(var i = 0, len = data.length; i < len; ++i) o[i] = data.charCodeAt(i); return o; }\n\nfunction utf16leread(data) {\n\tvar o = [];\n\tfor(var i = 0; i < (data.length>>1); ++i) o[i] = String.fromCharCode(data.charCodeAt(2*i) + (data.charCodeAt(2*i+1)<<8));\n\treturn o.join(\"\");\n}\nfunction utf16beread(data) {\n\tvar o = [];\n\tfor(var i = 0; i < (data.length>>1); ++i) o[i] = String.fromCharCode(data.charCodeAt(2*i+1) + (data.charCodeAt(2*i)<<8));\n\treturn o.join(\"\");\n}\n\nvar debom = function(data) {\n\tvar c1 = data.charCodeAt(0), c2 = data.charCodeAt(1);\n\tif(c1 == 0xFF && c2 == 0xFE) return utf16leread(data.slice(2));\n\tif(c1 == 0xFE && c2 == 0xFF) return utf16beread(data.slice(2));\n\tif(c1 == 0xFEFF) return data.slice(1);\n\treturn data;\n};\n\nvar _getchar = function _gc1(x) { return String.fromCharCode(x); };\nvar _getansi = function _ga1(x) { return String.fromCharCode(x); };\nif(typeof cptable !== 'undefined') {\n\tset_cp = function(cp) { current_codepage = cp; set_ansi(cp); };\n\tdebom = function(data) {\n\t\tif(data.charCodeAt(0) === 0xFF && data.charCodeAt(1) === 0xFE) { return cptable.utils.decode(1200, char_codes(data.slice(2))); }\n\t\treturn data;\n\t};\n\t_getchar = function _gc2(x) {\n\t\tif(current_codepage === 1200) return String.fromCharCode(x);\n\t\treturn cptable.utils.decode(current_codepage, [x&255,x>>8])[0];\n\t};\n\t_getansi = function _ga2(x) {\n\t\treturn cptable.utils.decode(current_ansi, [x])[0];\n\t};\n}\nvar DENSE = null;\nvar DIF_XL = true;\nvar Base64 = (function make_b64(){\n\tvar map = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\";\n\treturn {\n\t\tencode: function(input) {\n\t\t\tvar o = \"\";\n\t\t\tvar c1=0, c2=0, c3=0, e1=0, e2=0, e3=0, e4=0;\n\t\t\tfor(var i = 0; i < input.length; ) {\n\t\t\t\tc1 = input.charCodeAt(i++);\n\t\t\t\te1 = (c1 >> 2);\n\n\t\t\t\tc2 = input.charCodeAt(i++);\n\t\t\t\te2 = ((c1 & 3) << 4) | (c2 >> 4);\n\n\t\t\t\tc3 = input.charCodeAt(i++);\n\t\t\t\te3 = ((c2 & 15) << 2) | (c3 >> 6);\n\t\t\t\te4 = (c3 & 63);\n\t\t\t\tif (isNaN(c2)) { e3 = e4 = 64; }\n\t\t\t\telse if (isNaN(c3)) { e4 = 64; }\n\t\t\t\to += map.charAt(e1) + map.charAt(e2) + map.charAt(e3) + map.charAt(e4);\n\t\t\t}\n\t\t\treturn o;\n\t\t},\n\t\tdecode: function b64_decode(input) {\n\t\t\tvar o = \"\";\n\t\t\tvar c1=0, c2=0, c3=0, e1=0, e2=0, e3=0, e4=0;\n\t\t\tinput = input.replace(/[^\\w\\+\\/\\=]/g, \"\");\n\t\t\tfor(var i = 0; i < input.length;) {\n\t\t\t\te1 = map.indexOf(input.charAt(i++));\n\t\t\t\te2 = map.indexOf(input.charAt(i++));\n\t\t\t\tc1 = (e1 << 2) | (e2 >> 4);\n\t\t\t\to += String.fromCharCode(c1);\n\n\t\t\t\te3 = map.indexOf(input.charAt(i++));\n\t\t\t\tc2 = ((e2 & 15) << 4) | (e3 >> 2);\n\t\t\t\tif (e3 !== 64) { o += String.fromCharCode(c2); }\n\n\t\t\t\te4 = map.indexOf(input.charAt(i++));\n\t\t\t\tc3 = ((e3 & 3) << 6) | e4;\n\t\t\t\tif (e4 !== 64) { o += String.fromCharCode(c3); }\n\t\t\t}\n\t\t\treturn o;\n\t\t}\n\t};\n})();\nvar has_buf = (typeof Buffer !== 'undefined' && typeof process !== 'undefined' && typeof process.versions !== 'undefined' && !!process.versions.node);\n\nvar Buffer_from = function(){};\n\nif(typeof Buffer !== 'undefined') {\n\tvar nbfs = !Buffer.from;\n\tif(!nbfs) try { Buffer.from(\"foo\", \"utf8\"); } catch(e) { nbfs = true; }\n\tBuffer_from = nbfs ? function(buf, enc) { return (enc) ? new Buffer(buf, enc) : new Buffer(buf); } : Buffer.from.bind(Buffer);\n\t// $FlowIgnore\n\tif(!Buffer.alloc) Buffer.alloc = function(n) { return new Buffer(n); };\n\t// $FlowIgnore\n\tif(!Buffer.allocUnsafe) Buffer.allocUnsafe = function(n) { return new Buffer(n); };\n}\n\nfunction new_raw_buf(len) {\n\t/* jshint -W056 */\n\treturn has_buf ? Buffer.alloc(len) : new Array(len);\n\t/* jshint +W056 */\n}\n\nfunction new_unsafe_buf(len) {\n\t/* jshint -W056 */\n\treturn has_buf ? Buffer.allocUnsafe(len) : new Array(len);\n\t/* jshint +W056 */\n}\n\nvar s2a = function s2a(s) {\n\t// $FlowIgnore\n\tif(has_buf) return Buffer_from(s, \"binary\");\n\treturn s.split(\"\").map(function(x){ return x.charCodeAt(0) & 0xff; });\n};\n\nfunction s2ab(s) {\n\tif(typeof ArrayBuffer === 'undefined') return s2a(s);\n\tvar buf = new ArrayBuffer(s.length), view = new Uint8Array(buf);\n\tfor (var i=0; i!=s.length; ++i) view[i] = s.charCodeAt(i) & 0xFF;\n\treturn buf;\n}\n\nfunction a2s(data) {\n\tif(Array.isArray(data)) return data.map(_chr).join(\"\");\n\tvar o = []; for(var i = 0; i < data.length; ++i) o[i] = _chr(data[i]); return o.join(\"\");\n}\n\nfunction a2u(data) {\n\tif(typeof Uint8Array === 'undefined') throw new Error(\"Unsupported\");\n\treturn new Uint8Array(data);\n}\n\nfunction ab2a(data) {\n\tif(typeof ArrayBuffer == 'undefined') throw new Error(\"Unsupported\");\n\tif(data instanceof ArrayBuffer) return ab2a(new Uint8Array(data));\nvar o = new Array(data.length);\n\tfor(var i = 0; i < data.length; ++i) o[i] = data[i];\n\treturn o;\n}\n\nvar bconcat = function(bufs) { return [].concat.apply([], bufs); };\n\nvar chr0 = /\\u0000/g, chr1 = /[\\u0001-\\u0006]/g;\n/* ssf.js (C) 2013-present SheetJS -- http://sheetjs.com */\n/*jshint -W041 */\nvar SSF = ({});\nvar make_ssf = function make_ssf(SSF){\nSSF.version = '0.10.2';\nfunction _strrev(x) { var o = \"\", i = x.length-1; while(i>=0) o += x.charAt(i--); return o; }\nfunction fill(c,l) { var o = \"\"; while(o.length < l) o+=c; return o; }\nfunction pad0(v,d){var t=\"\"+v; return t.length>=d?t:fill('0',d-t.length)+t;}\nfunction pad_(v,d){var t=\"\"+v;return t.length>=d?t:fill(' ',d-t.length)+t;}\nfunction rpad_(v,d){var t=\"\"+v; return t.length>=d?t:t+fill(' ',d-t.length);}\nfunction pad0r1(v,d){var t=\"\"+Math.round(v); return t.length>=d?t:fill('0',d-t.length)+t;}\nfunction pad0r2(v,d){var t=\"\"+v; return t.length>=d?t:fill('0',d-t.length)+t;}\nvar p2_32 = Math.pow(2,32);\nfunction pad0r(v,d){if(v>p2_32||v<-p2_32) return pad0r1(v,d); var i = Math.round(v); return pad0r2(i,d); }\nfunction isgeneral(s, i) { i = i || 0; return s.length >= 7 + i && (s.charCodeAt(i)|32) === 103 && (s.charCodeAt(i+1)|32) === 101 && (s.charCodeAt(i+2)|32) === 110 && (s.charCodeAt(i+3)|32) === 101 && (s.charCodeAt(i+4)|32) === 114 && (s.charCodeAt(i+5)|32) === 97 && (s.charCodeAt(i+6)|32) === 108; }\nvar days = [\n\t['Sun', 'Sunday'],\n\t['Mon', 'Monday'],\n\t['Tue', 'Tuesday'],\n\t['Wed', 'Wednesday'],\n\t['Thu', 'Thursday'],\n\t['Fri', 'Friday'],\n\t['Sat', 'Saturday']\n];\nvar months = [\n\t['J', 'Jan', 'January'],\n\t['F', 'Feb', 'February'],\n\t['M', 'Mar', 'March'],\n\t['A', 'Apr', 'April'],\n\t['M', 'May', 'May'],\n\t['J', 'Jun', 'June'],\n\t['J', 'Jul', 'July'],\n\t['A', 'Aug', 'August'],\n\t['S', 'Sep', 'September'],\n\t['O', 'Oct', 'October'],\n\t['N', 'Nov', 'November'],\n\t['D', 'Dec', 'December']\n];\nfunction init_table(t) {\n\tt[0]= 'General';\n\tt[1]= '0';\n\tt[2]= '0.00';\n\tt[3]= '#,##0';\n\tt[4]= '#,##0.00';\n\tt[9]= '0%';\n\tt[10]= '0.00%';\n\tt[11]= '0.00E+00';\n\tt[12]= '# ?/?';\n\tt[13]= '# ??/??';\n\tt[14]= 'm/d/yy';\n\tt[15]= 'd-mmm-yy';\n\tt[16]= 'd-mmm';\n\tt[17]= 'mmm-yy';\n\tt[18]= 'h:mm AM/PM';\n\tt[19]= 'h:mm:ss AM/PM';\n\tt[20]= 'h:mm';\n\tt[21]= 'h:mm:ss';\n\tt[22]= 'm/d/yy h:mm';\n\tt[37]= '#,##0 ;(#,##0)';\n\tt[38]= '#,##0 ;[Red](#,##0)';\n\tt[39]= '#,##0.00;(#,##0.00)';\n\tt[40]= '#,##0.00;[Red](#,##0.00)';\n\tt[45]= 'mm:ss';\n\tt[46]= '[h]:mm:ss';\n\tt[47]= 'mmss.0';\n\tt[48]= '##0.0E+0';\n\tt[49]= '@';\n\tt[56]= '\"上午/下午 \"hh\"時\"mm\"分\"ss\"秒 \"';\n\tt[65535]= 'General';\n}\n\nvar table_fmt = {};\ninit_table(table_fmt);\nfunction frac(x, D, mixed) {\n\tvar sgn = x < 0 ? -1 : 1;\n\tvar B = x * sgn;\n\tvar P_2 = 0, P_1 = 1, P = 0;\n\tvar Q_2 = 1, Q_1 = 0, Q = 0;\n\tvar A = Math.floor(B);\n\twhile(Q_1 < D) {\n\t\tA = Math.floor(B);\n\t\tP = A * P_1 + P_2;\n\t\tQ = A * Q_1 + Q_2;\n\t\tif((B - A) < 0.00000005) break;\n\t\tB = 1 / (B - A);\n\t\tP_2 = P_1; P_1 = P;\n\t\tQ_2 = Q_1; Q_1 = Q;\n\t}\n\tif(Q > D) { if(Q_1 > D) { Q = Q_2; P = P_2; } else { Q = Q_1; P = P_1; } }\n\tif(!mixed) return [0, sgn * P, Q];\n\tvar q = Math.floor(sgn * P/Q);\n\treturn [q, sgn*P - q*Q, Q];\n}\nfunction parse_date_code(v,opts,b2) {\n\tif(v > 2958465 || v < 0) return null;\n\tvar date = (v|0), time = Math.floor(86400 * (v - date)), dow=0;\n\tvar dout=[];\n\tvar out={D:date, T:time, u:86400*(v-date)-time,y:0,m:0,d:0,H:0,M:0,S:0,q:0};\n\tif(Math.abs(out.u) < 1e-6) out.u = 0;\n\tif(opts && opts.date1904) date += 1462;\n\tif(out.u > 0.9999) {\n\t\tout.u = 0;\n\t\tif(++time == 86400) { out.T = time = 0; ++date; ++out.D; }\n\t}\n\tif(date === 60) {dout = b2 ? [1317,10,29] : [1900,2,29]; dow=3;}\n\telse if(date === 0) {dout = b2 ? [1317,8,29] : [1900,1,0]; dow=6;}\n\telse {\n\t\tif(date > 60) --date;\n\t\t/* 1 = Jan 1 1900 in Gregorian */\n\t\tvar d = new Date(1900, 0, 1);\n\t\td.setDate(d.getDate() + date - 1);\n\t\tdout = [d.getFullYear(), d.getMonth()+1,d.getDate()];\n\t\tdow = d.getDay();\n\t\tif(date < 60) dow = (dow + 6) % 7;\n\t\tif(b2) dow = fix_hijri(d, dout);\n\t}\n\tout.y = dout[0]; out.m = dout[1]; out.d = dout[2];\n\tout.S = time % 60; time = Math.floor(time / 60);\n\tout.M = time % 60; time = Math.floor(time / 60);\n\tout.H = time;\n\tout.q = dow;\n\treturn out;\n}\nSSF.parse_date_code = parse_date_code;\nvar basedate = new Date(1899, 11, 31, 0, 0, 0);\nvar dnthresh = basedate.getTime();\nvar base1904 = new Date(1900, 2, 1, 0, 0, 0);\nfunction datenum_local(v, date1904) {\n\tvar epoch = v.getTime();\n\tif(date1904) epoch -= 1461*24*60*60*1000;\n\telse if(v >= base1904) epoch += 24*60*60*1000;\n\treturn (epoch - (dnthresh + (v.getTimezoneOffset() - basedate.getTimezoneOffset()) * 60000)) / (24 * 60 * 60 * 1000);\n}\nfunction general_fmt_int(v) { return v.toString(10); }\nSSF._general_int = general_fmt_int;\nvar general_fmt_num = (function make_general_fmt_num() {\nvar gnr1 = /\\.(\\d*[1-9])0+$/, gnr2 = /\\.0*$/, gnr4 = /\\.(\\d*[1-9])0+/, gnr5 = /\\.0*[Ee]/, gnr6 = /(E[+-])(\\d)$/;\nfunction gfn2(v) {\n\tvar w = (v<0?12:11);\n\tvar o = gfn5(v.toFixed(12)); if(o.length <= w) return o;\n\to = v.toPrecision(10); if(o.length <= w) return o;\n\treturn v.toExponential(5);\n}\nfunction gfn3(v) {\n\tvar o = v.toFixed(11).replace(gnr1,\".$1\");\n\tif(o.length > (v<0?12:11)) o = v.toPrecision(6);\n\treturn o;\n}\nfunction gfn4(o) {\n\tfor(var i = 0; i != o.length; ++i) if((o.charCodeAt(i) | 0x20) === 101) return o.replace(gnr4,\".$1\").replace(gnr5,\"E\").replace(\"e\",\"E\").replace(gnr6,\"$10$2\");\n\treturn o;\n}\nfunction gfn5(o) {\n\treturn o.indexOf(\".\") > -1 ? o.replace(gnr2,\"\").replace(gnr1,\".$1\") : o;\n}\nreturn function general_fmt_num(v) {\n\tvar V = Math.floor(Math.log(Math.abs(v))*Math.LOG10E), o;\n\tif(V >= -4 && V <= -1) o = v.toPrecision(10+V);\n\telse if(Math.abs(V) <= 9) o = gfn2(v);\n\telse if(V === 10) o = v.toFixed(10).substr(0,12);\n\telse o = gfn3(v);\n\treturn gfn5(gfn4(o));\n};})();\nSSF._general_num = general_fmt_num;\nfunction general_fmt(v, opts) {\n\tswitch(typeof v) {\n\t\tcase 'string': return v;\n\t\tcase 'boolean': return v ? \"TRUE\" : \"FALSE\";\n\t\tcase 'number': return (v|0) === v ? general_fmt_int(v) : general_fmt_num(v);\n\t\tcase 'undefined': return \"\";\n\t\tcase 'object':\n\t\t\tif(v == null) return \"\";\n\t\t\tif(v instanceof Date) return format(14, datenum_local(v, opts && opts.date1904), opts);\n\t}\n\tthrow new Error(\"unsupported value in General format: \" + v);\n}\nSSF._general = general_fmt;\nfunction fix_hijri() { return 0; }\n/*jshint -W086 */\nfunction write_date(type, fmt, val, ss0) {\n\tvar o=\"\", ss=0, tt=0, y = val.y, out, outl = 0;\n\tswitch(type) {\n\t\tcase 98: /* 'b' buddhist year */\n\t\t\ty = val.y + 543;\n\t\t\t/* falls through */\n\t\tcase 121: /* 'y' year */\n\t\tswitch(fmt.length) {\n\t\t\tcase 1: case 2: out = y % 100; outl = 2; break;\n\t\t\tdefault: out = y % 10000; outl = 4; break;\n\t\t} break;\n\t\tcase 109: /* 'm' month */\n\t\tswitch(fmt.length) {\n\t\t\tcase 1: case 2: out = val.m; outl = fmt.length; break;\n\t\t\tcase 3: return months[val.m-1][1];\n\t\t\tcase 5: return months[val.m-1][0];\n\t\t\tdefault: return months[val.m-1][2];\n\t\t} break;\n\t\tcase 100: /* 'd' day */\n\t\tswitch(fmt.length) {\n\t\t\tcase 1: case 2: out = val.d; outl = fmt.length; break;\n\t\t\tcase 3: return days[val.q][0];\n\t\t\tdefault: return days[val.q][1];\n\t\t} break;\n\t\tcase 104: /* 'h' 12-hour */\n\t\tswitch(fmt.length) {\n\t\t\tcase 1: case 2: out = 1+(val.H+11)%12; outl = fmt.length; break;\n\t\t\tdefault: throw 'bad hour format: ' + fmt;\n\t\t} break;\n\t\tcase 72: /* 'H' 24-hour */\n\t\tswitch(fmt.length) {\n\t\t\tcase 1: case 2: out = val.H; outl = fmt.length; break;\n\t\t\tdefault: throw 'bad hour format: ' + fmt;\n\t\t} break;\n\t\tcase 77: /* 'M' minutes */\n\t\tswitch(fmt.length) {\n\t\t\tcase 1: case 2: out = val.M; outl = fmt.length; break;\n\t\t\tdefault: throw 'bad minute format: ' + fmt;\n\t\t} break;\n\t\tcase 115: /* 's' seconds */\n\t\t\tif(fmt != 's' && fmt != 'ss' && fmt != '.0' && fmt != '.00' && fmt != '.000') throw 'bad second format: ' + fmt;\n\t\t\tif(val.u === 0 && (fmt == \"s\" || fmt == \"ss\")) return pad0(val.S, fmt.length);\nif(ss0 >= 2) tt = ss0 === 3 ? 1000 : 100;\n\t\t\telse tt = ss0 === 1 ? 10 : 1;\n\t\t\tss = Math.round((tt)*(val.S + val.u));\n\t\t\tif(ss >= 60*tt) ss = 0;\n\t\t\tif(fmt === 's') return ss === 0 ? \"0\" : \"\"+ss/tt;\n\t\t\to = pad0(ss,2 + ss0);\n\t\t\tif(fmt === 'ss') return o.substr(0,2);\n\t\t\treturn \".\" + o.substr(2,fmt.length-1);\n\t\tcase 90: /* 'Z' absolute time */\n\t\tswitch(fmt) {\n\t\t\tcase '[h]': case '[hh]': out = val.D*24+val.H; break;\n\t\t\tcase '[m]': case '[mm]': out = (val.D*24+val.H)*60+val.M; break;\n\t\t\tcase '[s]': case '[ss]': out = ((val.D*24+val.H)*60+val.M)*60+Math.round(val.S+val.u); break;\n\t\t\tdefault: throw 'bad abstime format: ' + fmt;\n\t\t} outl = fmt.length === 3 ? 1 : 2; break;\n\t\tcase 101: /* 'e' era */\n\t\t\tout = y; outl = 1;\n\t}\n\tif(outl > 0) return pad0(out, outl); else return \"\";\n}\n/*jshint +W086 */\nfunction commaify(s) {\n\tvar w = 3;\n\tif(s.length <= w) return s;\n\tvar j = (s.length % w), o = s.substr(0,j);\n\tfor(; j!=s.length; j+=w) o+=(o.length > 0 ? \",\" : \"\") + s.substr(j,w);\n\treturn o;\n}\nvar write_num = (function make_write_num(){\nvar pct1 = /%/g;\nfunction write_num_pct(type, fmt, val){\n\tvar sfmt = fmt.replace(pct1,\"\"), mul = fmt.length - sfmt.length;\n\treturn write_num(type, sfmt, val * Math.pow(10,2*mul)) + fill(\"%\",mul);\n}\nfunction write_num_cm(type, fmt, val){\n\tvar idx = fmt.length - 1;\n\twhile(fmt.charCodeAt(idx-1) === 44) --idx;\n\treturn write_num(type, fmt.substr(0,idx), val / Math.pow(10,3*(fmt.length-idx)));\n}\nfunction write_num_exp(fmt, val){\n\tvar o;\n\tvar idx = fmt.indexOf(\"E\") - fmt.indexOf(\".\") - 1;\n\tif(fmt.match(/^#+0.0E\\+0$/)) {\n\t\tif(val == 0) return \"0.0E+0\";\n\t\telse if(val < 0) return \"-\" + write_num_exp(fmt, -val);\n\t\tvar period = fmt.indexOf(\".\"); if(period === -1) period=fmt.indexOf('E');\n\t\tvar ee = Math.floor(Math.log(val)*Math.LOG10E)%period;\n\t\tif(ee < 0) ee += period;\n\t\to = (val/Math.pow(10,ee)).toPrecision(idx+1+(period+ee)%period);\n\t\tif(o.indexOf(\"e\") === -1) {\n\t\t\tvar fakee = Math.floor(Math.log(val)*Math.LOG10E);\n\t\t\tif(o.indexOf(\".\") === -1) o = o.charAt(0) + \".\" + o.substr(1) + \"E+\" + (fakee - o.length+ee);\n\t\t\telse o += \"E+\" + (fakee - ee);\n\t\t\twhile(o.substr(0,2) === \"0.\") {\n\t\t\t\to = o.charAt(0) + o.substr(2,period) + \".\" + o.substr(2+period);\n\t\t\t\to = o.replace(/^0+([1-9])/,\"$1\").replace(/^0+\\./,\"0.\");\n\t\t\t}\n\t\t\to = o.replace(/\\+-/,\"-\");\n\t\t}\n\t\to = o.replace(/^([+-]?)(\\d*)\\.(\\d*)[Ee]/,function($$,$1,$2,$3) { return $1 + $2 + $3.substr(0,(period+ee)%period) + \".\" + $3.substr(ee) + \"E\"; });\n\t} else o = val.toExponential(idx);\n\tif(fmt.match(/E\\+00$/) && o.match(/e[+-]\\d$/)) o = o.substr(0,o.length-1) + \"0\" + o.charAt(o.length-1);\n\tif(fmt.match(/E\\-/) && o.match(/e\\+/)) o = o.replace(/e\\+/,\"e\");\n\treturn o.replace(\"e\",\"E\");\n}\nvar frac1 = /# (\\?+)( ?)\\/( ?)(\\d+)/;\nfunction write_num_f1(r, aval, sign) {\n\tvar den = parseInt(r[4],10), rr = Math.round(aval * den), base = Math.floor(rr/den);\n\tvar myn = (rr - base*den), myd = den;\n\treturn sign + (base === 0 ? \"\" : \"\"+base) + \" \" + (myn === 0 ? fill(\" \", r[1].length + 1 + r[4].length) : pad_(myn,r[1].length) + r[2] + \"/\" + r[3] + pad0(myd,r[4].length));\n}\nfunction write_num_f2(r, aval, sign) {\n\treturn sign + (aval === 0 ? \"\" : \"\"+aval) + fill(\" \", r[1].length + 2 + r[4].length);\n}\nvar dec1 = /^#*0*\\.([0#]+)/;\nvar closeparen = /\\).*[0#]/;\nvar phone = /\\(###\\) ###\\\\?-####/;\nfunction hashq(str) {\n\tvar o = \"\", cc;\n\tfor(var i = 0; i != str.length; ++i) switch((cc=str.charCodeAt(i))) {\n\t\tcase 35: break;\n\t\tcase 63: o+= \" \"; break;\n\t\tcase 48: o+= \"0\"; break;\n\t\tdefault: o+= String.fromCharCode(cc);\n\t}\n\treturn o;\n}\nfunction rnd(val, d) { var dd = Math.pow(10,d); return \"\"+(Math.round(val * dd)/dd); }\nfunction dec(val, d) {\n\tif (d < ('' + Math.round((val-Math.floor(val))*Math.pow(10,d))).length) {\n\t\treturn 0;\n\t}\n\treturn Math.round((val-Math.floor(val))*Math.pow(10,d));\n}\nfunction carry(val, d) {\n\tif (d < ('' + Math.round((val-Math.floor(val))*Math.pow(10,d))).length) {\n\t\treturn 1;\n\t}\n\treturn 0;\n}\nfunction flr(val) { if(val < 2147483647 && val > -2147483648) return \"\"+(val >= 0 ? (val|0) : (val-1|0)); return \"\"+Math.floor(val); }\nfunction write_num_flt(type, fmt, val) {\n\tif(type.charCodeAt(0) === 40 && !fmt.match(closeparen)) {\n\t\tvar ffmt = fmt.replace(/\\( */,\"\").replace(/ \\)/,\"\").replace(/\\)/,\"\");\n\t\tif(val >= 0) return write_num_flt('n', ffmt, val);\n\t\treturn '(' + write_num_flt('n', ffmt, -val) + ')';\n\t}\n\tif(fmt.charCodeAt(fmt.length - 1) === 44) return write_num_cm(type, fmt, val);\n\tif(fmt.indexOf('%') !== -1) return write_num_pct(type, fmt, val);\n\tif(fmt.indexOf('E') !== -1) return write_num_exp(fmt, val);\n\tif(fmt.charCodeAt(0) === 36) return \"$\"+write_num_flt(type,fmt.substr(fmt.charAt(1)==' '?2:1),val);\n\tvar o;\n\tvar r, ri, ff, aval = Math.abs(val), sign = val < 0 ? \"-\" : \"\";\n\tif(fmt.match(/^00+$/)) return sign + pad0r(aval,fmt.length);\n\tif(fmt.match(/^[#?]+$/)) {\n\t\to = pad0r(val,0); if(o === \"0\") o = \"\";\n\t\treturn o.length > fmt.length ? o : hashq(fmt.substr(0,fmt.length-o.length)) + o;\n\t}\n\tif((r = fmt.match(frac1))) return write_num_f1(r, aval, sign);\n\tif(fmt.match(/^#+0+$/)) return sign + pad0r(aval,fmt.length - fmt.indexOf(\"0\"));\n\tif((r = fmt.match(dec1))) {\n\t\to = rnd(val, r[1].length).replace(/^([^\\.]+)$/,\"$1.\"+hashq(r[1])).replace(/\\.$/,\".\"+hashq(r[1])).replace(/\\.(\\d*)$/,function($$, $1) { return \".\" + $1 + fill(\"0\", hashq(r[1]).length-$1.length); });\n\t\treturn fmt.indexOf(\"0.\") !== -1 ? o : o.replace(/^0\\./,\".\");\n\t}\n\tfmt = fmt.replace(/^#+([0.])/, \"$1\");\n\tif((r = fmt.match(/^(0*)\\.(#*)$/))) {\n\t\treturn sign + rnd(aval, r[2].length).replace(/\\.(\\d*[1-9])0*$/,\".$1\").replace(/^(-?\\d*)$/,\"$1.\").replace(/^0\\./,r[1].length?\"0.\":\".\");\n\t}\n\tif((r = fmt.match(/^#{1,3},##0(\\.?)$/))) return sign + commaify(pad0r(aval,0));\n\tif((r = fmt.match(/^#,##0\\.([#0]*0)$/))) {\n\t\treturn val < 0 ? \"-\" + write_num_flt(type, fmt, -val) : commaify(\"\"+(Math.floor(val) + carry(val, r[1].length))) + \".\" + pad0(dec(val, r[1].length),r[1].length);\n\t}\n\tif((r = fmt.match(/^#,#*,#0/))) return write_num_flt(type,fmt.replace(/^#,#*,/,\"\"),val);\n\tif((r = fmt.match(/^([0#]+)(\\\\?-([0#]+))+$/))) {\n\t\to = _strrev(write_num_flt(type, fmt.replace(/[\\\\-]/g,\"\"), val));\n\t\tri = 0;\n\t\treturn _strrev(_strrev(fmt.replace(/\\\\/g,\"\")).replace(/[0#]/g,function(x){return ri= 0) return write_num_int('n', ffmt, val);\n\t\treturn '(' + write_num_int('n', ffmt, -val) + ')';\n\t}\n\tif(fmt.charCodeAt(fmt.length - 1) === 44) return write_num_cm2(type, fmt, val);\n\tif(fmt.indexOf('%') !== -1) return write_num_pct2(type, fmt, val);\n\tif(fmt.indexOf('E') !== -1) return write_num_exp2(fmt, val);\n\tif(fmt.charCodeAt(0) === 36) return \"$\"+write_num_int(type,fmt.substr(fmt.charAt(1)==' '?2:1),val);\n\tvar o;\n\tvar r, ri, ff, aval = Math.abs(val), sign = val < 0 ? \"-\" : \"\";\n\tif(fmt.match(/^00+$/)) return sign + pad0(aval,fmt.length);\n\tif(fmt.match(/^[#?]+$/)) {\n\t\to = (\"\"+val); if(val === 0) o = \"\";\n\t\treturn o.length > fmt.length ? o : hashq(fmt.substr(0,fmt.length-o.length)) + o;\n\t}\n\tif((r = fmt.match(frac1))) return write_num_f2(r, aval, sign);\n\tif(fmt.match(/^#+0+$/)) return sign + pad0(aval,fmt.length - fmt.indexOf(\"0\"));\n\tif((r = fmt.match(dec1))) {\no = (\"\"+val).replace(/^([^\\.]+)$/,\"$1.\"+hashq(r[1])).replace(/\\.$/,\".\"+hashq(r[1]));\n\t\to = o.replace(/\\.(\\d*)$/,function($$, $1) {\nreturn \".\" + $1 + fill(\"0\", hashq(r[1]).length-$1.length); });\n\t\treturn fmt.indexOf(\"0.\") !== -1 ? o : o.replace(/^0\\./,\".\");\n\t}\n\tfmt = fmt.replace(/^#+([0.])/, \"$1\");\n\tif((r = fmt.match(/^(0*)\\.(#*)$/))) {\n\t\treturn sign + (\"\"+aval).replace(/\\.(\\d*[1-9])0*$/,\".$1\").replace(/^(-?\\d*)$/,\"$1.\").replace(/^0\\./,r[1].length?\"0.\":\".\");\n\t}\n\tif((r = fmt.match(/^#{1,3},##0(\\.?)$/))) return sign + commaify((\"\"+aval));\n\tif((r = fmt.match(/^#,##0\\.([#0]*0)$/))) {\n\t\treturn val < 0 ? \"-\" + write_num_int(type, fmt, -val) : commaify((\"\"+val)) + \".\" + fill('0',r[1].length);\n\t}\n\tif((r = fmt.match(/^#,#*,#0/))) return write_num_int(type,fmt.replace(/^#,#*,/,\"\"),val);\n\tif((r = fmt.match(/^([0#]+)(\\\\?-([0#]+))+$/))) {\n\t\to = _strrev(write_num_int(type, fmt.replace(/[\\\\-]/g,\"\"), val));\n\t\tri = 0;\n\t\treturn _strrev(_strrev(fmt.replace(/\\\\/g,\"\")).replace(/[0#]/g,function(x){return ri -1 || (c=='\\\\' && fmt.charAt(i+1) == \"-\" && \"0#\".indexOf(fmt.charAt(i+2))>-1))){/* empty */}\n\t\t\t\tbreak;\n\t\t\tcase '?': while(fmt.charAt(++i) === c){/* empty */} break;\n\t\t\tcase '*': ++i; if(fmt.charAt(i) == ' ' || fmt.charAt(i) == '*') ++i; break;\n\t\t\tcase '(': case ')': ++i; break;\n\t\t\tcase '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9':\n\t\t\t\twhile(i < fmt.length && \"0123456789\".indexOf(fmt.charAt(++i)) > -1){/* empty */} break;\n\t\t\tcase ' ': ++i; break;\n\t\t\tdefault: ++i; break;\n\t\t}\n\t}\n\treturn false;\n}\nSSF.is_date = fmt_is_date;\nfunction eval_fmt(fmt, v, opts, flen) {\n\tvar out = [], o = \"\", i = 0, c = \"\", lst='t', dt, j, cc;\n\tvar hr='H';\n\t/* Tokenize */\n\twhile(i < fmt.length) {\n\t\tswitch((c = fmt.charAt(i))) {\n\t\t\tcase 'G': /* General */\n\t\t\t\tif(!isgeneral(fmt, i)) throw new Error('unrecognized character ' + c + ' in ' +fmt);\n\t\t\t\tout[out.length] = {t:'G', v:'General'}; i+=7; break;\n\t\t\tcase '\"': /* Literal text */\n\t\t\t\tfor(o=\"\";(cc=fmt.charCodeAt(++i)) !== 34 && i < fmt.length;) o += String.fromCharCode(cc);\n\t\t\t\tout[out.length] = {t:'t', v:o}; ++i; break;\n\t\t\tcase '\\\\': var w = fmt.charAt(++i), t = (w === \"(\" || w === \")\") ? w : 't';\n\t\t\t\tout[out.length] = {t:t, v:w}; ++i; break;\n\t\t\tcase '_': out[out.length] = {t:'t', v:\" \"}; i+=2; break;\n\t\t\tcase '@': /* Text Placeholder */\n\t\t\t\tout[out.length] = {t:'T', v:v}; ++i; break;\n\t\t\tcase 'B': case 'b':\n\t\t\t\tif(fmt.charAt(i+1) === \"1\" || fmt.charAt(i+1) === \"2\") {\n\t\t\t\t\tif(dt==null) { dt=parse_date_code(v, opts, fmt.charAt(i+1) === \"2\"); if(dt==null) return \"\"; }\n\t\t\t\t\tout[out.length] = {t:'X', v:fmt.substr(i,2)}; lst = c; i+=2; break;\n\t\t\t\t}\n\t\t\t\t/* falls through */\n\t\t\tcase 'M': case 'D': case 'Y': case 'H': case 'S': case 'E':\n\t\t\t\tc = c.toLowerCase();\n\t\t\t\t/* falls through */\n\t\t\tcase 'm': case 'd': case 'y': case 'h': case 's': case 'e': case 'g':\n\t\t\t\tif(v < 0) return \"\";\n\t\t\t\tif(dt==null) { dt=parse_date_code(v, opts); if(dt==null) return \"\"; }\n\t\t\t\to = c; while(++i < fmt.length && fmt.charAt(i).toLowerCase() === c) o+=c;\n\t\t\t\tif(c === 'm' && lst.toLowerCase() === 'h') c = 'M';\n\t\t\t\tif(c === 'h') c = hr;\n\t\t\t\tout[out.length] = {t:c, v:o}; lst = c; break;\n\t\t\tcase 'A': case 'a':\n\t\t\t\tvar q={t:c, v:c};\n\t\t\t\tif(dt==null) dt=parse_date_code(v, opts);\n\t\t\t\tif(fmt.substr(i, 3).toUpperCase() === \"A/P\") { if(dt!=null) q.v = dt.H >= 12 ? \"P\" : \"A\"; q.t = 'T'; hr='h';i+=3;}\n\t\t\t\telse if(fmt.substr(i,5).toUpperCase() === \"AM/PM\") { if(dt!=null) q.v = dt.H >= 12 ? \"PM\" : \"AM\"; q.t = 'T'; i+=5; hr='h'; }\n\t\t\t\telse { q.t = \"t\"; ++i; }\n\t\t\t\tif(dt==null && q.t === 'T') return \"\";\n\t\t\t\tout[out.length] = q; lst = c; break;\n\t\t\tcase '[':\n\t\t\t\to = c;\n\t\t\t\twhile(fmt.charAt(i++) !== ']' && i < fmt.length) o += fmt.charAt(i);\n\t\t\t\tif(o.slice(-1) !== ']') throw 'unterminated \"[\" block: |' + o + '|';\n\t\t\t\tif(o.match(abstime)) {\n\t\t\t\t\tif(dt==null) { dt=parse_date_code(v, opts); if(dt==null) return \"\"; }\n\t\t\t\t\tout[out.length] = {t:'Z', v:o.toLowerCase()};\n\t\t\t\t\tlst = o.charAt(1);\n\t\t\t\t} else if(o.indexOf(\"$\") > -1) {\n\t\t\t\t\to = (o.match(/\\$([^-\\[\\]]*)/)||[])[1]||\"$\";\n\t\t\t\t\tif(!fmt_is_date(fmt)) out[out.length] = {t:'t',v:o};\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t/* Numbers */\n\t\t\tcase '.':\n\t\t\t\tif(dt != null) {\n\t\t\t\t\to = c; while(++i < fmt.length && (c=fmt.charAt(i)) === \"0\") o += c;\n\t\t\t\t\tout[out.length] = {t:'s', v:o}; break;\n\t\t\t\t}\n\t\t\t\t/* falls through */\n\t\t\tcase '0': case '#':\n\t\t\t\to = c; while((++i < fmt.length && \"0#?.,E+-%\".indexOf(c=fmt.charAt(i)) > -1) || (c=='\\\\' && fmt.charAt(i+1) == \"-\" && i < fmt.length - 2 && \"0#\".indexOf(fmt.charAt(i+2))>-1)) o += c;\n\t\t\t\tout[out.length] = {t:'n', v:o}; break;\n\t\t\tcase '?':\n\t\t\t\to = c; while(fmt.charAt(++i) === c) o+=c;\n\t\t\t\tout[out.length] = {t:c, v:o}; lst = c; break;\n\t\t\tcase '*': ++i; if(fmt.charAt(i) == ' ' || fmt.charAt(i) == '*') ++i; break; // **\n\t\t\tcase '(': case ')': out[out.length] = {t:(flen===1?'t':c), v:c}; ++i; break;\n\t\t\tcase '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9':\n\t\t\t\to = c; while(i < fmt.length && \"0123456789\".indexOf(fmt.charAt(++i)) > -1) o+=fmt.charAt(i);\n\t\t\t\tout[out.length] = {t:'D', v:o}; break;\n\t\t\tcase ' ': out[out.length] = {t:c, v:c}; ++i; break;\n\t\t\tdefault:\n\t\t\t\tif(\",$-+/():!^&'~{}<>=€acfijklopqrtuvwxzP\".indexOf(c) === -1) throw new Error('unrecognized character ' + c + ' in ' + fmt);\n\t\t\t\tout[out.length] = {t:'t', v:c}; ++i; break;\n\t\t}\n\t}\n\tvar bt = 0, ss0 = 0, ssm;\n\tfor(i=out.length-1, lst='t'; i >= 0; --i) {\n\t\tswitch(out[i].t) {\n\t\t\tcase 'h': case 'H': out[i].t = hr; lst='h'; if(bt < 1) bt = 1; break;\n\t\t\tcase 's':\n\t\t\t\tif((ssm=out[i].v.match(/\\.0+$/))) ss0=Math.max(ss0,ssm[0].length-1);\n\t\t\t\tif(bt < 3) bt = 3;\n\t\t\t/* falls through */\n\t\t\tcase 'd': case 'y': case 'M': case 'e': lst=out[i].t; break;\n\t\t\tcase 'm': if(lst === 's') { out[i].t = 'M'; if(bt < 2) bt = 2; } break;\n\t\t\tcase 'X': /*if(out[i].v === \"B2\");*/\n\t\t\t\tbreak;\n\t\t\tcase 'Z':\n\t\t\t\tif(bt < 1 && out[i].v.match(/[Hh]/)) bt = 1;\n\t\t\t\tif(bt < 2 && out[i].v.match(/[Mm]/)) bt = 2;\n\t\t\t\tif(bt < 3 && out[i].v.match(/[Ss]/)) bt = 3;\n\t\t}\n\t}\n\tswitch(bt) {\n\t\tcase 0: break;\n\t\tcase 1:\nif(dt.u >= 0.5) { dt.u = 0; ++dt.S; }\n\t\t\tif(dt.S >= 60) { dt.S = 0; ++dt.M; }\n\t\t\tif(dt.M >= 60) { dt.M = 0; ++dt.H; }\n\t\t\tbreak;\n\t\tcase 2:\nif(dt.u >= 0.5) { dt.u = 0; ++dt.S; }\n\t\t\tif(dt.S >= 60) { dt.S = 0; ++dt.M; }\n\t\t\tbreak;\n\t}\n\t/* replace fields */\n\tvar nstr = \"\", jj;\n\tfor(i=0; i < out.length; ++i) {\n\t\tswitch(out[i].t) {\n\t\t\tcase 't': case 'T': case ' ': case 'D': break;\n\t\t\tcase 'X': out[i].v = \"\"; out[i].t = \";\"; break;\n\t\t\tcase 'd': case 'm': case 'y': case 'h': case 'H': case 'M': case 's': case 'e': case 'b': case 'Z':\nout[i].v = write_date(out[i].t.charCodeAt(0), out[i].v, dt, ss0);\n\t\t\t\tout[i].t = 't'; break;\n\t\t\tcase 'n': case '(': case '?':\n\t\t\t\tjj = i+1;\n\t\t\t\twhile(out[jj] != null && (\n\t\t\t\t\t(c=out[jj].t) === \"?\" || c === \"D\" ||\n\t\t\t\t\t((c === \" \" || c === \"t\") && out[jj+1] != null && (out[jj+1].t === '?' || out[jj+1].t === \"t\" && out[jj+1].v === '/')) ||\n\t\t\t\t\t(out[i].t === '(' && (c === ' ' || c === 'n' || c === ')')) ||\n\t\t\t\t\t(c === 't' && (out[jj].v === '/' || out[jj].v === ' ' && out[jj+1] != null && out[jj+1].t == '?'))\n\t\t\t\t)) {\n\t\t\t\t\tout[i].v += out[jj].v;\n\t\t\t\t\tout[jj] = {v:\"\", t:\";\"}; ++jj;\n\t\t\t\t}\n\t\t\t\tnstr += out[i].v;\n\t\t\t\ti = jj-1; break;\n\t\t\tcase 'G': out[i].t = 't'; out[i].v = general_fmt(v,opts); break;\n\t\t}\n\t}\n\tvar vv = \"\", myv, ostr;\n\tif(nstr.length > 0) {\n\t\tif(nstr.charCodeAt(0) == 40) /* '(' */ {\n\t\t\tmyv = (v<0&&nstr.charCodeAt(0) === 45 ? -v : v);\n\t\t\tostr = write_num('(', nstr, myv);\n\t\t} else {\n\t\t\tmyv = (v<0 && flen > 1 ? -v : v);\n\t\t\tostr = write_num('n', nstr, myv);\n\t\t\tif(myv < 0 && out[0] && out[0].t == 't') {\n\t\t\t\tostr = ostr.substr(1);\n\t\t\t\tout[0].v = \"-\" + out[0].v;\n\t\t\t}\n\t\t}\n\t\tjj=ostr.length-1;\n\t\tvar decpt = out.length;\n\t\tfor(i=0; i < out.length; ++i) if(out[i] != null && out[i].t != 't' && out[i].v.indexOf(\".\") > -1) { decpt = i; break; }\n\t\tvar lasti=out.length;\n\t\tif(decpt === out.length && ostr.indexOf(\"E\") === -1) {\n\t\t\tfor(i=out.length-1; i>= 0;--i) {\n\t\t\t\tif(out[i] == null || 'n?('.indexOf(out[i].t) === -1) continue;\n\t\t\t\tif(jj>=out[i].v.length-1) { jj -= out[i].v.length; out[i].v = ostr.substr(jj+1, out[i].v.length); }\n\t\t\t\telse if(jj < 0) out[i].v = \"\";\n\t\t\t\telse { out[i].v = ostr.substr(0, jj+1); jj = -1; }\n\t\t\t\tout[i].t = 't';\n\t\t\t\tlasti = i;\n\t\t\t}\n\t\t\tif(jj>=0 && lasti= 0; --i) {\n\t\t\t\tif(out[i] == null || 'n?('.indexOf(out[i].t) === -1) continue;\n\t\t\t\tj=out[i].v.indexOf(\".\")>-1&&i===decpt?out[i].v.indexOf(\".\")-1:out[i].v.length-1;\n\t\t\t\tvv = out[i].v.substr(j+1);\n\t\t\t\tfor(; j>=0; --j) {\n\t\t\t\t\tif(jj>=0 && (out[i].v.charAt(j) === \"0\" || out[i].v.charAt(j) === \"#\")) vv = ostr.charAt(jj--) + vv;\n\t\t\t\t}\n\t\t\t\tout[i].v = vv;\n\t\t\t\tout[i].t = 't';\n\t\t\t\tlasti = i;\n\t\t\t}\n\t\t\tif(jj>=0 && lasti-1&&i===decpt?out[i].v.indexOf(\".\")+1:0;\n\t\t\t\tvv = out[i].v.substr(0,j);\n\t\t\t\tfor(; j-1) {\n\t\tmyv = (flen >1 && v < 0 && i>0 && out[i-1].v === \"-\" ? -v:v);\n\t\tout[i].v = write_num(out[i].t, out[i].v, myv);\n\t\tout[i].t = 't';\n\t}\n\tvar retval = \"\";\n\tfor(i=0; i !== out.length; ++i) if(out[i] != null) retval += out[i].v;\n\treturn retval;\n}\nSSF._eval = eval_fmt;\nvar cfregex = /\\[[=<>]/;\nvar cfregex2 = /\\[(=|>[=]?|<[>=]?)(-?\\d+(?:\\.\\d*)?)\\]/;\nfunction chkcond(v, rr) {\n\tif(rr == null) return false;\n\tvar thresh = parseFloat(rr[2]);\n\tswitch(rr[1]) {\n\t\tcase \"=\": if(v == thresh) return true; break;\n\t\tcase \">\": if(v > thresh) return true; break;\n\t\tcase \"<\": if(v < thresh) return true; break;\n\t\tcase \"<>\": if(v != thresh) return true; break;\n\t\tcase \">=\": if(v >= thresh) return true; break;\n\t\tcase \"<=\": if(v <= thresh) return true; break;\n\t}\n\treturn false;\n}\nfunction choose_fmt(f, v) {\n\tvar fmt = split_fmt(f);\n\tvar l = fmt.length, lat = fmt[l-1].indexOf(\"@\");\n\tif(l<4 && lat>-1) --l;\n\tif(fmt.length > 4) throw new Error(\"cannot find right format for |\" + fmt.join(\"|\") + \"|\");\n\tif(typeof v !== \"number\") return [4, fmt.length === 4 || lat>-1?fmt[fmt.length-1]:\"@\"];\n\tswitch(fmt.length) {\n\t\tcase 1: fmt = lat>-1 ? [\"General\", \"General\", \"General\", fmt[0]] : [fmt[0], fmt[0], fmt[0], \"@\"]; break;\n\t\tcase 2: fmt = lat>-1 ? [fmt[0], fmt[0], fmt[0], fmt[1]] : [fmt[0], fmt[1], fmt[0], \"@\"]; break;\n\t\tcase 3: fmt = lat>-1 ? [fmt[0], fmt[1], fmt[0], fmt[2]] : [fmt[0], fmt[1], fmt[2], \"@\"]; break;\n\t\tcase 4: break;\n\t}\n\tvar ff = v > 0 ? fmt[0] : v < 0 ? fmt[1] : fmt[2];\n\tif(fmt[0].indexOf(\"[\") === -1 && fmt[1].indexOf(\"[\") === -1) return [l, ff];\n\tif(fmt[0].match(cfregex) != null || fmt[1].match(cfregex) != null) {\n\t\tvar m1 = fmt[0].match(cfregex2);\n\t\tvar m2 = fmt[1].match(cfregex2);\n\t\treturn chkcond(v, m1) ? [l, fmt[0]] : chkcond(v, m2) ? [l, fmt[1]] : [l, fmt[m1 != null && m2 != null ? 2 : 1]];\n\t}\n\treturn [l, ff];\n}\nfunction format(fmt,v,o) {\n\tif(o == null) o = {};\n\tvar sfmt = \"\";\n\tswitch(typeof fmt) {\n\t\tcase \"string\":\n\t\t\tif(fmt == \"m/d/yy\" && o.dateNF) sfmt = o.dateNF;\n\t\t\telse sfmt = fmt;\n\t\t\tbreak;\n\t\tcase \"number\":\n\t\t\tif(fmt == 14 && o.dateNF) sfmt = o.dateNF;\n\t\t\telse sfmt = (o.table != null ? (o.table) : table_fmt)[fmt];\n\t\t\tbreak;\n\t}\n\tif(isgeneral(sfmt,0)) return general_fmt(v, o);\n\tif(v instanceof Date) v = datenum_local(v, o.date1904);\n\tvar f = choose_fmt(sfmt, v);\n\tif(isgeneral(f[1])) return general_fmt(v, o);\n\tif(v === true) v = \"TRUE\"; else if(v === false) v = \"FALSE\";\n\telse if(v === \"\" || v == null) return \"\";\n\treturn eval_fmt(f[1], v, o, f[0]);\n}\nfunction load_entry(fmt, idx) {\n\tif(typeof idx != 'number') {\n\t\tidx = +idx || -1;\nfor(var i = 0; i < 0x0188; ++i) {\nif(table_fmt[i] == undefined) { if(idx < 0) idx = i; continue; }\n\t\t\tif(table_fmt[i] == fmt) { idx = i; break; }\n\t\t}\nif(idx < 0) idx = 0x187;\n\t}\ntable_fmt[idx] = fmt;\n\treturn idx;\n}\nSSF.load = load_entry;\nSSF._table = table_fmt;\nSSF.get_table = function get_table() { return table_fmt; };\nSSF.load_table = function load_table(tbl) {\n\tfor(var i=0; i!=0x0188; ++i)\n\t\tif(tbl[i] !== undefined) load_entry(tbl[i], i);\n};\nSSF.init_table = init_table;\nSSF.format = format;\n};\nmake_ssf(SSF);\n/* map from xlml named formats to SSF TODO: localize */\nvar XLMLFormatMap/*{[string]:string}*/ = ({\n\t\"General Number\": \"General\",\n\t\"General Date\": SSF._table[22],\n\t\"Long Date\": \"dddd, mmmm dd, yyyy\",\n\t\"Medium Date\": SSF._table[15],\n\t\"Short Date\": SSF._table[14],\n\t\"Long Time\": SSF._table[19],\n\t\"Medium Time\": SSF._table[18],\n\t\"Short Time\": SSF._table[20],\n\t\"Currency\": '\"$\"#,##0.00_);[Red]\\\\(\"$\"#,##0.00\\\\)',\n\t\"Fixed\": SSF._table[2],\n\t\"Standard\": SSF._table[4],\n\t\"Percent\": SSF._table[10],\n\t\"Scientific\": SSF._table[11],\n\t\"Yes/No\": '\"Yes\";\"Yes\";\"No\";@',\n\t\"True/False\": '\"True\";\"True\";\"False\";@',\n\t\"On/Off\": '\"Yes\";\"Yes\";\"No\";@'\n});\n\nvar SSFImplicit/*{[number]:string}*/ = ({\n\t\"5\": '\"$\"#,##0_);\\\\(\"$\"#,##0\\\\)',\n\t\"6\": '\"$\"#,##0_);[Red]\\\\(\"$\"#,##0\\\\)',\n\t\"7\": '\"$\"#,##0.00_);\\\\(\"$\"#,##0.00\\\\)',\n\t\"8\": '\"$\"#,##0.00_);[Red]\\\\(\"$\"#,##0.00\\\\)',\n\t\"23\": 'General', \"24\": 'General', \"25\": 'General', \"26\": 'General',\n\t\"27\": 'm/d/yy', \"28\": 'm/d/yy', \"29\": 'm/d/yy', \"30\": 'm/d/yy', \"31\": 'm/d/yy',\n\t\"32\": 'h:mm:ss', \"33\": 'h:mm:ss', \"34\": 'h:mm:ss', \"35\": 'h:mm:ss',\n\t\"36\": 'm/d/yy',\n\t\"41\": '_(* #,##0_);_(* \\(#,##0\\);_(* \"-\"_);_(@_)',\n\t\"42\": '_(\"$\"* #,##0_);_(\"$\"* \\(#,##0\\);_(\"$\"* \"-\"_);_(@_)',\n\t\"43\": '_(* #,##0.00_);_(* \\(#,##0.00\\);_(* \"-\"??_);_(@_)',\n\t\"44\": '_(\"$\"* #,##0.00_);_(\"$\"* \\(#,##0.00\\);_(\"$\"* \"-\"??_);_(@_)',\n\t\"50\": 'm/d/yy', \"51\": 'm/d/yy', \"52\": 'm/d/yy', \"53\": 'm/d/yy', \"54\": 'm/d/yy',\n\t\"55\": 'm/d/yy', \"56\": 'm/d/yy', \"57\": 'm/d/yy', \"58\": 'm/d/yy',\n\t\"59\": '0',\n\t\"60\": '0.00',\n\t\"61\": '#,##0',\n\t\"62\": '#,##0.00',\n\t\"63\": '\"$\"#,##0_);\\\\(\"$\"#,##0\\\\)',\n\t\"64\": '\"$\"#,##0_);[Red]\\\\(\"$\"#,##0\\\\)',\n\t\"65\": '\"$\"#,##0.00_);\\\\(\"$\"#,##0.00\\\\)',\n\t\"66\": '\"$\"#,##0.00_);[Red]\\\\(\"$\"#,##0.00\\\\)',\n\t\"67\": '0%',\n\t\"68\": '0.00%',\n\t\"69\": '# ?/?',\n\t\"70\": '# ??/??',\n\t\"71\": 'm/d/yy',\n\t\"72\": 'm/d/yy',\n\t\"73\": 'd-mmm-yy',\n\t\"74\": 'd-mmm',\n\t\"75\": 'mmm-yy',\n\t\"76\": 'h:mm',\n\t\"77\": 'h:mm:ss',\n\t\"78\": 'm/d/yy h:mm',\n\t\"79\": 'mm:ss',\n\t\"80\": '[h]:mm:ss',\n\t\"81\": 'mmss.0'\n});\n\n/* dateNF parse TODO: move to SSF */\nvar dateNFregex = /[dD]+|[mM]+|[yYeE]+|[Hh]+|[Ss]+/g;\nfunction dateNF_regex(dateNF) {\n\tvar fmt = typeof dateNF == \"number\" ? SSF._table[dateNF] : dateNF;\n\tfmt = fmt.replace(dateNFregex, \"(\\\\d+)\");\n\treturn new RegExp(\"^\" + fmt + \"$\");\n}\nfunction dateNF_fix(str, dateNF, match) {\n\tvar Y = -1, m = -1, d = -1, H = -1, M = -1, S = -1;\n\t(dateNF.match(dateNFregex)||[]).forEach(function(n, i) {\n\t\tvar v = parseInt(match[i+1], 10);\n\t\tswitch(n.toLowerCase().charAt(0)) {\n\t\t\tcase 'y': Y = v; break; case 'd': d = v; break;\n\t\t\tcase 'h': H = v; break; case 's': S = v; break;\n\t\t\tcase 'm': if(H >= 0) M = v; else m = v; break;\n\t\t}\n\t});\n\tif(S >= 0 && M == -1 && m >= 0) { M = m; m = -1; }\n\tvar datestr = ((\"\" + (Y>=0?Y: new Date().getFullYear())).slice(-4) + \"-\" + (\"00\" + (m>=1?m:1)).slice(-2) + \"-\" + (\"00\" + (d>=1?d:1)).slice(-2));\n\tif(datestr.length == 7) datestr = \"0\" + datestr;\n\tif(datestr.length == 8) datestr = \"20\" + datestr;\n\tvar timestr = ((\"00\" + (H>=0?H:0)).slice(-2) + \":\" + (\"00\" + (M>=0?M:0)).slice(-2) + \":\" + (\"00\" + (S>=0?S:0)).slice(-2));\n\tif(H == -1 && M == -1 && S == -1) return datestr;\n\tif(Y == -1 && m == -1 && d == -1) return timestr;\n\treturn datestr + \"T\" + timestr;\n}\n\nvar DO_NOT_EXPORT_CFB = true;\n/* cfb.js (C) 2013-present SheetJS -- http://sheetjs.com */\n/* vim: set ts=2: */\n/*jshint eqnull:true */\n/*exported CFB */\n/*global module, require:false, process:false, Buffer:false, Uint8Array:false, Uint16Array:false */\n\n/* crc32.js (C) 2014-present SheetJS -- http://sheetjs.com */\n/* vim: set ts=2: */\n/*exported CRC32 */\nvar CRC32;\n(function (factory) {\n\t/*jshint ignore:start */\n\t/*eslint-disable */\n\tfactory(CRC32 = {});\n\t/*eslint-enable */\n\t/*jshint ignore:end */\n}(function(CRC32) {\nCRC32.version = '1.2.0';\n/* see perf/crc32table.js */\n/*global Int32Array */\nfunction signed_crc_table() {\n\tvar c = 0, table = new Array(256);\n\n\tfor(var n =0; n != 256; ++n){\n\t\tc = n;\n\t\tc = ((c&1) ? (-306674912 ^ (c >>> 1)) : (c >>> 1));\n\t\tc = ((c&1) ? (-306674912 ^ (c >>> 1)) : (c >>> 1));\n\t\tc = ((c&1) ? (-306674912 ^ (c >>> 1)) : (c >>> 1));\n\t\tc = ((c&1) ? (-306674912 ^ (c >>> 1)) : (c >>> 1));\n\t\tc = ((c&1) ? (-306674912 ^ (c >>> 1)) : (c >>> 1));\n\t\tc = ((c&1) ? (-306674912 ^ (c >>> 1)) : (c >>> 1));\n\t\tc = ((c&1) ? (-306674912 ^ (c >>> 1)) : (c >>> 1));\n\t\tc = ((c&1) ? (-306674912 ^ (c >>> 1)) : (c >>> 1));\n\t\ttable[n] = c;\n\t}\n\n\treturn typeof Int32Array !== 'undefined' ? new Int32Array(table) : table;\n}\n\nvar T = signed_crc_table();\nfunction crc32_bstr(bstr, seed) {\n\tvar C = seed ^ -1, L = bstr.length - 1;\n\tfor(var i = 0; i < L;) {\n\t\tC = (C>>>8) ^ T[(C^bstr.charCodeAt(i++))&0xFF];\n\t\tC = (C>>>8) ^ T[(C^bstr.charCodeAt(i++))&0xFF];\n\t}\n\tif(i === L) C = (C>>>8) ^ T[(C ^ bstr.charCodeAt(i))&0xFF];\n\treturn C ^ -1;\n}\n\nfunction crc32_buf(buf, seed) {\n\tif(buf.length > 10000) return crc32_buf_8(buf, seed);\n\tvar C = seed ^ -1, L = buf.length - 3;\n\tfor(var i = 0; i < L;) {\n\t\tC = (C>>>8) ^ T[(C^buf[i++])&0xFF];\n\t\tC = (C>>>8) ^ T[(C^buf[i++])&0xFF];\n\t\tC = (C>>>8) ^ T[(C^buf[i++])&0xFF];\n\t\tC = (C>>>8) ^ T[(C^buf[i++])&0xFF];\n\t}\n\twhile(i < L+3) C = (C>>>8) ^ T[(C^buf[i++])&0xFF];\n\treturn C ^ -1;\n}\n\nfunction crc32_buf_8(buf, seed) {\n\tvar C = seed ^ -1, L = buf.length - 7;\n\tfor(var i = 0; i < L;) {\n\t\tC = (C>>>8) ^ T[(C^buf[i++])&0xFF];\n\t\tC = (C>>>8) ^ T[(C^buf[i++])&0xFF];\n\t\tC = (C>>>8) ^ T[(C^buf[i++])&0xFF];\n\t\tC = (C>>>8) ^ T[(C^buf[i++])&0xFF];\n\t\tC = (C>>>8) ^ T[(C^buf[i++])&0xFF];\n\t\tC = (C>>>8) ^ T[(C^buf[i++])&0xFF];\n\t\tC = (C>>>8) ^ T[(C^buf[i++])&0xFF];\n\t\tC = (C>>>8) ^ T[(C^buf[i++])&0xFF];\n\t}\n\twhile(i < L+7) C = (C>>>8) ^ T[(C^buf[i++])&0xFF];\n\treturn C ^ -1;\n}\n\nfunction crc32_str(str, seed) {\n\tvar C = seed ^ -1;\n\tfor(var i = 0, L=str.length, c, d; i < L;) {\n\t\tc = str.charCodeAt(i++);\n\t\tif(c < 0x80) {\n\t\t\tC = (C>>>8) ^ T[(C ^ c)&0xFF];\n\t\t} else if(c < 0x800) {\n\t\t\tC = (C>>>8) ^ T[(C ^ (192|((c>>6)&31)))&0xFF];\n\t\t\tC = (C>>>8) ^ T[(C ^ (128|(c&63)))&0xFF];\n\t\t} else if(c >= 0xD800 && c < 0xE000) {\n\t\t\tc = (c&1023)+64; d = str.charCodeAt(i++)&1023;\n\t\t\tC = (C>>>8) ^ T[(C ^ (240|((c>>8)&7)))&0xFF];\n\t\t\tC = (C>>>8) ^ T[(C ^ (128|((c>>2)&63)))&0xFF];\n\t\t\tC = (C>>>8) ^ T[(C ^ (128|((d>>6)&15)|((c&3)<<4)))&0xFF];\n\t\t\tC = (C>>>8) ^ T[(C ^ (128|(d&63)))&0xFF];\n\t\t} else {\n\t\t\tC = (C>>>8) ^ T[(C ^ (224|((c>>12)&15)))&0xFF];\n\t\t\tC = (C>>>8) ^ T[(C ^ (128|((c>>6)&63)))&0xFF];\n\t\t\tC = (C>>>8) ^ T[(C ^ (128|(c&63)))&0xFF];\n\t\t}\n\t}\n\treturn C ^ -1;\n}\nCRC32.table = T;\nCRC32.bstr = crc32_bstr;\nCRC32.buf = crc32_buf;\nCRC32.str = crc32_str;\n}));\n/* [MS-CFB] v20171201 */\nvar CFB = (function _CFB(){\nvar exports = {};\nexports.version = '1.1.2';\n/* [MS-CFB] 2.6.4 */\nfunction namecmp(l, r) {\n\tvar L = l.split(\"/\"), R = r.split(\"/\");\n\tfor(var i = 0, c = 0, Z = Math.min(L.length, R.length); i < Z; ++i) {\n\t\tif((c = L[i].length - R[i].length)) return c;\n\t\tif(L[i] != R[i]) return L[i] < R[i] ? -1 : 1;\n\t}\n\treturn L.length - R.length;\n}\nfunction dirname(p) {\n\tif(p.charAt(p.length - 1) == \"/\") return (p.slice(0,-1).indexOf(\"/\") === -1) ? p : dirname(p.slice(0, -1));\n\tvar c = p.lastIndexOf(\"/\");\n\treturn (c === -1) ? p : p.slice(0, c+1);\n}\n\nfunction filename(p) {\n\tif(p.charAt(p.length - 1) == \"/\") return filename(p.slice(0, -1));\n\tvar c = p.lastIndexOf(\"/\");\n\treturn (c === -1) ? p : p.slice(c+1);\n}\n/* -------------------------------------------------------------------------- */\n/* DOS Date format:\n high|YYYYYYYm.mmmddddd.HHHHHMMM.MMMSSSSS|low\n add 1980 to stored year\n stored second should be doubled\n*/\n\n/* write JS date to buf as a DOS date */\nfunction write_dos_date(buf, date) {\n\tif(typeof date === \"string\") date = new Date(date);\n\tvar hms = date.getHours();\n\thms = hms << 6 | date.getMinutes();\n\thms = hms << 5 | (date.getSeconds()>>>1);\n\tbuf.write_shift(2, hms);\n\tvar ymd = (date.getFullYear() - 1980);\n\tymd = ymd << 4 | (date.getMonth()+1);\n\tymd = ymd << 5 | date.getDate();\n\tbuf.write_shift(2, ymd);\n}\n\n/* read four bytes from buf and interpret as a DOS date */\nfunction parse_dos_date(buf) {\n\tvar hms = buf.read_shift(2) & 0xFFFF;\n\tvar ymd = buf.read_shift(2) & 0xFFFF;\n\tvar val = new Date();\n\tvar d = ymd & 0x1F; ymd >>>= 5;\n\tvar m = ymd & 0x0F; ymd >>>= 4;\n\tval.setMilliseconds(0);\n\tval.setFullYear(ymd + 1980);\n\tval.setMonth(m-1);\n\tval.setDate(d);\n\tvar S = hms & 0x1F; hms >>>= 5;\n\tvar M = hms & 0x3F; hms >>>= 6;\n\tval.setHours(hms);\n\tval.setMinutes(M);\n\tval.setSeconds(S<<1);\n\treturn val;\n}\nfunction parse_extra_field(blob) {\n\tprep_blob(blob, 0);\n\tvar o = {};\n\tvar flags = 0;\n\twhile(blob.l <= blob.length - 4) {\n\t\tvar type = blob.read_shift(2);\n\t\tvar sz = blob.read_shift(2), tgt = blob.l + sz;\n\t\tvar p = {};\n\t\tswitch(type) {\n\t\t\t/* UNIX-style Timestamps */\n\t\t\tcase 0x5455: {\n\t\t\t\tflags = blob.read_shift(1);\n\t\t\t\tif(flags & 1) p.mtime = blob.read_shift(4);\n\t\t\t\t/* for some reason, CD flag corresponds to LFH */\n\t\t\t\tif(sz > 5) {\n\t\t\t\t\tif(flags & 2) p.atime = blob.read_shift(4);\n\t\t\t\t\tif(flags & 4) p.ctime = blob.read_shift(4);\n\t\t\t\t}\n\t\t\t\tif(p.mtime) p.mt = new Date(p.mtime*1000);\n\t\t\t}\n\t\t\tbreak;\n\t\t}\n\t\tblob.l = tgt;\n\t\to[type] = p;\n\t}\n\treturn o;\n}\nvar fs;\nfunction get_fs() { return fs || (fs = require('fs')); }\nfunction parse(file, options) {\nif(file[0] == 0x50 && file[1] == 0x4b) return parse_zip(file, options);\nif(file.length < 512) throw new Error(\"CFB file size \" + file.length + \" < 512\");\nvar mver = 3;\nvar ssz = 512;\nvar nmfs = 0; // number of mini FAT sectors\nvar difat_sec_cnt = 0;\nvar dir_start = 0;\nvar minifat_start = 0;\nvar difat_start = 0;\n\nvar fat_addrs = []; // locations of FAT sectors\n\n/* [MS-CFB] 2.2 Compound File Header */\nvar blob = file.slice(0,512);\nprep_blob(blob, 0);\n\n/* major version */\nvar mv = check_get_mver(blob);\nmver = mv[0];\nswitch(mver) {\n\tcase 3: ssz = 512; break; case 4: ssz = 4096; break;\n\tcase 0: if(mv[1] == 0) return parse_zip(file, options);\n\t/* falls through */\n\tdefault: throw new Error(\"Major Version: Expected 3 or 4 saw \" + mver);\n}\n\n/* reprocess header */\nif(ssz !== 512) { blob = file.slice(0,ssz); prep_blob(blob, 28 /* blob.l */); }\n/* Save header for final object */\nvar header = file.slice(0,ssz);\n\ncheck_shifts(blob, mver);\n\n// Number of Directory Sectors\nvar dir_cnt = blob.read_shift(4, 'i');\nif(mver === 3 && dir_cnt !== 0) throw new Error('# Directory Sectors: Expected 0 saw ' + dir_cnt);\n\n// Number of FAT Sectors\nblob.l += 4;\n\n// First Directory Sector Location\ndir_start = blob.read_shift(4, 'i');\n\n// Transaction Signature\nblob.l += 4;\n\n// Mini Stream Cutoff Size\nblob.chk('00100000', 'Mini Stream Cutoff Size: ');\n\n// First Mini FAT Sector Location\nminifat_start = blob.read_shift(4, 'i');\n\n// Number of Mini FAT Sectors\nnmfs = blob.read_shift(4, 'i');\n\n// First DIFAT sector location\ndifat_start = blob.read_shift(4, 'i');\n\n// Number of DIFAT Sectors\ndifat_sec_cnt = blob.read_shift(4, 'i');\n\n// Grab FAT Sector Locations\nfor(var q = -1, j = 0; j < 109; ++j) { /* 109 = (512 - blob.l)>>>2; */\n\tq = blob.read_shift(4, 'i');\n\tif(q<0) break;\n\tfat_addrs[j] = q;\n}\n\n/** Break the file up into sectors */\nvar sectors = sectorify(file, ssz);\n\nsleuth_fat(difat_start, difat_sec_cnt, sectors, ssz, fat_addrs);\n\n/** Chains */\nvar sector_list = make_sector_list(sectors, dir_start, fat_addrs, ssz);\n\nsector_list[dir_start].name = \"!Directory\";\nif(nmfs > 0 && minifat_start !== ENDOFCHAIN) sector_list[minifat_start].name = \"!MiniFAT\";\nsector_list[fat_addrs[0]].name = \"!FAT\";\nsector_list.fat_addrs = fat_addrs;\nsector_list.ssz = ssz;\n\n/* [MS-CFB] 2.6.1 Compound File Directory Entry */\nvar files = {}, Paths = [], FileIndex = [], FullPaths = [];\nread_directory(dir_start, sector_list, sectors, Paths, nmfs, files, FileIndex, minifat_start);\n\nbuild_full_paths(FileIndex, FullPaths, Paths);\nPaths.shift();\n\nvar o = {\n\tFileIndex: FileIndex,\n\tFullPaths: FullPaths\n};\n\n// $FlowIgnore\nif(options && options.raw) o.raw = {header: header, sectors: sectors};\nreturn o;\n} // parse\n\n/* [MS-CFB] 2.2 Compound File Header -- read up to major version */\nfunction check_get_mver(blob) {\n\tif(blob[blob.l] == 0x50 && blob[blob.l + 1] == 0x4b) return [0, 0];\n\t// header signature 8\n\tblob.chk(HEADER_SIGNATURE, 'Header Signature: ');\n\n\t// clsid 16\n\t//blob.chk(HEADER_CLSID, 'CLSID: ');\n\tblob.l += 16;\n\n\t// minor version 2\n\tvar mver = blob.read_shift(2, 'u');\n\n\treturn [blob.read_shift(2,'u'), mver];\n}\nfunction check_shifts(blob, mver) {\n\tvar shift = 0x09;\n\n\t// Byte Order\n\t//blob.chk('feff', 'Byte Order: '); // note: some writers put 0xffff\n\tblob.l += 2;\n\n\t// Sector Shift\n\tswitch((shift = blob.read_shift(2))) {\n\t\tcase 0x09: if(mver != 3) throw new Error('Sector Shift: Expected 9 saw ' + shift); break;\n\t\tcase 0x0c: if(mver != 4) throw new Error('Sector Shift: Expected 12 saw ' + shift); break;\n\t\tdefault: throw new Error('Sector Shift: Expected 9 or 12 saw ' + shift);\n\t}\n\n\t// Mini Sector Shift\n\tblob.chk('0600', 'Mini Sector Shift: ');\n\n\t// Reserved\n\tblob.chk('000000000000', 'Reserved: ');\n}\n\n/** Break the file up into sectors */\nfunction sectorify(file, ssz) {\n\tvar nsectors = Math.ceil(file.length/ssz)-1;\n\tvar sectors = [];\n\tfor(var i=1; i < nsectors; ++i) sectors[i-1] = file.slice(i*ssz,(i+1)*ssz);\n\tsectors[nsectors-1] = file.slice(nsectors*ssz);\n\treturn sectors;\n}\n\n/* [MS-CFB] 2.6.4 Red-Black Tree */\nfunction build_full_paths(FI, FP, Paths) {\n\tvar i = 0, L = 0, R = 0, C = 0, j = 0, pl = Paths.length;\n\tvar dad = [], q = [];\n\n\tfor(; i < pl; ++i) { dad[i]=q[i]=i; FP[i]=Paths[i]; }\n\n\tfor(; j < q.length; ++j) {\n\t\ti = q[j];\n\t\tL = FI[i].L; R = FI[i].R; C = FI[i].C;\n\t\tif(dad[i] === i) {\n\t\t\tif(L !== -1 /*NOSTREAM*/ && dad[L] !== L) dad[i] = dad[L];\n\t\t\tif(R !== -1 && dad[R] !== R) dad[i] = dad[R];\n\t\t}\n\t\tif(C !== -1 /*NOSTREAM*/) dad[C] = i;\n\t\tif(L !== -1 && i != dad[i]) { dad[L] = dad[i]; if(q.lastIndexOf(L) < j) q.push(L); }\n\t\tif(R !== -1 && i != dad[i]) { dad[R] = dad[i]; if(q.lastIndexOf(R) < j) q.push(R); }\n\t}\n\tfor(i=1; i < pl; ++i) if(dad[i] === i) {\n\t\tif(R !== -1 /*NOSTREAM*/ && dad[R] !== R) dad[i] = dad[R];\n\t\telse if(L !== -1 && dad[L] !== L) dad[i] = dad[L];\n\t}\n\n\tfor(i=1; i < pl; ++i) {\n\t\tif(FI[i].type === 0 /* unknown */) continue;\n\t\tj = i;\n\t\tif(j != dad[j]) do {\n\t\t\tj = dad[j];\n\t\t\tFP[i] = FP[j] + \"/\" + FP[i];\n\t\t} while (j !== 0 && -1 !== dad[j] && j != dad[j]);\n\t\tdad[i] = -1;\n\t}\n\n\tFP[0] += \"/\";\n\tfor(i=1; i < pl; ++i) {\n\t\tif(FI[i].type !== 2 /* stream */) FP[i] += \"/\";\n\t}\n}\n\nfunction get_mfat_entry(entry, payload, mini) {\n\tvar start = entry.start, size = entry.size;\n\t//return (payload.slice(start*MSSZ, start*MSSZ + size));\n\tvar o = [];\n\tvar idx = start;\n\twhile(mini && size > 0 && idx >= 0) {\n\t\to.push(payload.slice(idx * MSSZ, idx * MSSZ + MSSZ));\n\t\tsize -= MSSZ;\n\t\tidx = __readInt32LE(mini, idx * 4);\n\t}\n\tif(o.length === 0) return (new_buf(0));\n\treturn (bconcat(o).slice(0, entry.size));\n}\n\n/** Chase down the rest of the DIFAT chain to build a comprehensive list\n DIFAT chains by storing the next sector number as the last 32 bits */\nfunction sleuth_fat(idx, cnt, sectors, ssz, fat_addrs) {\n\tvar q = ENDOFCHAIN;\n\tif(idx === ENDOFCHAIN) {\n\t\tif(cnt !== 0) throw new Error(\"DIFAT chain shorter than expected\");\n\t} else if(idx !== -1 /*FREESECT*/) {\n\t\tvar sector = sectors[idx], m = (ssz>>>2)-1;\n\t\tif(!sector) return;\n\t\tfor(var i = 0; i < m; ++i) {\n\t\t\tif((q = __readInt32LE(sector,i*4)) === ENDOFCHAIN) break;\n\t\t\tfat_addrs.push(q);\n\t\t}\n\t\tsleuth_fat(__readInt32LE(sector,ssz-4),cnt - 1, sectors, ssz, fat_addrs);\n\t}\n}\n\n/** Follow the linked list of sectors for a given starting point */\nfunction get_sector_list(sectors, start, fat_addrs, ssz, chkd) {\n\tvar buf = [], buf_chain = [];\n\tif(!chkd) chkd = [];\n\tvar modulus = ssz - 1, j = 0, jj = 0;\n\tfor(j=start; j>=0;) {\n\t\tchkd[j] = true;\n\t\tbuf[buf.length] = j;\n\t\tbuf_chain.push(sectors[j]);\n\t\tvar addr = fat_addrs[Math.floor(j*4/ssz)];\n\t\tjj = ((j*4) & modulus);\n\t\tif(ssz < 4 + jj) throw new Error(\"FAT boundary crossed: \" + j + \" 4 \"+ssz);\n\t\tif(!sectors[addr]) break;\n\t\tj = __readInt32LE(sectors[addr], jj);\n\t}\n\treturn {nodes: buf, data:__toBuffer([buf_chain])};\n}\n\n/** Chase down the sector linked lists */\nfunction make_sector_list(sectors, dir_start, fat_addrs, ssz) {\n\tvar sl = sectors.length, sector_list = ([]);\n\tvar chkd = [], buf = [], buf_chain = [];\n\tvar modulus = ssz - 1, i=0, j=0, k=0, jj=0;\n\tfor(i=0; i < sl; ++i) {\n\t\tbuf = ([]);\n\t\tk = (i + dir_start); if(k >= sl) k-=sl;\n\t\tif(chkd[k]) continue;\n\t\tbuf_chain = [];\n\t\tfor(j=k; j>=0;) {\n\t\t\tchkd[j] = true;\n\t\t\tbuf[buf.length] = j;\n\t\t\tbuf_chain.push(sectors[j]);\n\t\t\tvar addr = fat_addrs[Math.floor(j*4/ssz)];\n\t\t\tjj = ((j*4) & modulus);\n\t\t\tif(ssz < 4 + jj) throw new Error(\"FAT boundary crossed: \" + j + \" 4 \"+ssz);\n\t\t\tif(!sectors[addr]) break;\n\t\t\tj = __readInt32LE(sectors[addr], jj);\n\t\t}\n\t\tsector_list[k] = ({nodes: buf, data:__toBuffer([buf_chain])});\n\t}\n\treturn sector_list;\n}\n\n/* [MS-CFB] 2.6.1 Compound File Directory Entry */\nfunction read_directory(dir_start, sector_list, sectors, Paths, nmfs, files, FileIndex, mini) {\n\tvar minifat_store = 0, pl = (Paths.length?2:0);\n\tvar sector = sector_list[dir_start].data;\n\tvar i = 0, namelen = 0, name;\n\tfor(; i < sector.length; i+= 128) {\n\t\tvar blob = sector.slice(i, i+128);\n\t\tprep_blob(blob, 64);\n\t\tnamelen = blob.read_shift(2);\n\t\tname = __utf16le(blob,0,namelen-pl);\n\t\tPaths.push(name);\n\t\tvar o = ({\n\t\t\tname: name,\n\t\t\ttype: blob.read_shift(1),\n\t\t\tcolor: blob.read_shift(1),\n\t\t\tL: blob.read_shift(4, 'i'),\n\t\t\tR: blob.read_shift(4, 'i'),\n\t\t\tC: blob.read_shift(4, 'i'),\n\t\t\tclsid: blob.read_shift(16),\n\t\t\tstate: blob.read_shift(4, 'i'),\n\t\t\tstart: 0,\n\t\t\tsize: 0\n\t\t});\n\t\tvar ctime = blob.read_shift(2) + blob.read_shift(2) + blob.read_shift(2) + blob.read_shift(2);\n\t\tif(ctime !== 0) o.ct = read_date(blob, blob.l-8);\n\t\tvar mtime = blob.read_shift(2) + blob.read_shift(2) + blob.read_shift(2) + blob.read_shift(2);\n\t\tif(mtime !== 0) o.mt = read_date(blob, blob.l-8);\n\t\to.start = blob.read_shift(4, 'i');\n\t\to.size = blob.read_shift(4, 'i');\n\t\tif(o.size < 0 && o.start < 0) { o.size = o.type = 0; o.start = ENDOFCHAIN; o.name = \"\"; }\n\t\tif(o.type === 5) { /* root */\n\t\t\tminifat_store = o.start;\n\t\t\tif(nmfs > 0 && minifat_store !== ENDOFCHAIN) sector_list[minifat_store].name = \"!StreamData\";\n\t\t\t/*minifat_size = o.size;*/\n\t\t} else if(o.size >= 4096 /* MSCSZ */) {\n\t\t\to.storage = 'fat';\n\t\t\tif(sector_list[o.start] === undefined) sector_list[o.start] = get_sector_list(sectors, o.start, sector_list.fat_addrs, sector_list.ssz);\n\t\t\tsector_list[o.start].name = o.name;\n\t\t\to.content = (sector_list[o.start].data.slice(0,o.size));\n\t\t} else {\n\t\t\to.storage = 'minifat';\n\t\t\tif(o.size < 0) o.size = 0;\n\t\t\telse if(minifat_store !== ENDOFCHAIN && o.start !== ENDOFCHAIN && sector_list[minifat_store]) {\n\t\t\t\to.content = get_mfat_entry(o, sector_list[minifat_store].data, (sector_list[mini]||{}).data);\n\t\t\t}\n\t\t}\n\t\tif(o.content) prep_blob(o.content, 0);\n\t\tfiles[name] = o;\n\t\tFileIndex.push(o);\n\t}\n}\n\nfunction read_date(blob, offset) {\n\treturn new Date(( ( (__readUInt32LE(blob,offset+4)/1e7)*Math.pow(2,32)+__readUInt32LE(blob,offset)/1e7 ) - 11644473600)*1000);\n}\n\nfunction read_file(filename, options) {\n\tget_fs();\n\treturn parse(fs.readFileSync(filename), options);\n}\n\nfunction read(blob, options) {\n\tswitch(options && options.type || \"base64\") {\n\t\tcase \"file\": return read_file(blob, options);\n\t\tcase \"base64\": return parse(s2a(Base64.decode(blob)), options);\n\t\tcase \"binary\": return parse(s2a(blob), options);\n\t}\n\treturn parse(blob, options);\n}\n\nfunction init_cfb(cfb, opts) {\n\tvar o = opts || {}, root = o.root || \"Root Entry\";\n\tif(!cfb.FullPaths) cfb.FullPaths = [];\n\tif(!cfb.FileIndex) cfb.FileIndex = [];\n\tif(cfb.FullPaths.length !== cfb.FileIndex.length) throw new Error(\"inconsistent CFB structure\");\n\tif(cfb.FullPaths.length === 0) {\n\t\tcfb.FullPaths[0] = root + \"/\";\n\t\tcfb.FileIndex[0] = ({ name: root, type: 5 });\n\t}\n\tif(o.CLSID) cfb.FileIndex[0].clsid = o.CLSID;\n\tseed_cfb(cfb);\n}\nfunction seed_cfb(cfb) {\n\tvar nm = \"\\u0001Sh33tJ5\";\n\tif(CFB.find(cfb, \"/\" + nm)) return;\n\tvar p = new_buf(4); p[0] = 55; p[1] = p[3] = 50; p[2] = 54;\n\tcfb.FileIndex.push(({ name: nm, type: 2, content:p, size:4, L:69, R:69, C:69 }));\n\tcfb.FullPaths.push(cfb.FullPaths[0] + nm);\n\trebuild_cfb(cfb);\n}\nfunction rebuild_cfb(cfb, f) {\n\tinit_cfb(cfb);\n\tvar gc = false, s = false;\n\tfor(var i = cfb.FullPaths.length - 1; i >= 0; --i) {\n\t\tvar _file = cfb.FileIndex[i];\n\t\tswitch(_file.type) {\n\t\t\tcase 0:\n\t\t\t\tif(s) gc = true;\n\t\t\t\telse { cfb.FileIndex.pop(); cfb.FullPaths.pop(); }\n\t\t\t\tbreak;\n\t\t\tcase 1: case 2: case 5:\n\t\t\t\ts = true;\n\t\t\t\tif(isNaN(_file.R * _file.L * _file.C)) gc = true;\n\t\t\t\tif(_file.R > -1 && _file.L > -1 && _file.R == _file.L) gc = true;\n\t\t\t\tbreak;\n\t\t\tdefault: gc = true; break;\n\t\t}\n\t}\n\tif(!gc && !f) return;\n\n\tvar now = new Date(1987, 1, 19), j = 0;\n\tvar data = [];\n\tfor(i = 0; i < cfb.FullPaths.length; ++i) {\n\t\tif(cfb.FileIndex[i].type === 0) continue;\n\t\tdata.push([cfb.FullPaths[i], cfb.FileIndex[i]]);\n\t}\n\tfor(i = 0; i < data.length; ++i) {\n\t\tvar dad = dirname(data[i][0]);\n\t\ts = false;\n\t\tfor(j = 0; j < data.length; ++j) if(data[j][0] === dad) s = true;\n\t\tif(!s) data.push([dad, ({\n\t\t\tname: filename(dad).replace(\"/\",\"\"),\n\t\t\ttype: 1,\n\t\t\tclsid: HEADER_CLSID,\n\t\t\tct: now, mt: now,\n\t\t\tcontent: null\n\t\t})]);\n\t}\n\n\tdata.sort(function(x,y) { return namecmp(x[0], y[0]); });\n\tcfb.FullPaths = []; cfb.FileIndex = [];\n\tfor(i = 0; i < data.length; ++i) { cfb.FullPaths[i] = data[i][0]; cfb.FileIndex[i] = data[i][1]; }\n\tfor(i = 0; i < data.length; ++i) {\n\t\tvar elt = cfb.FileIndex[i];\n\t\tvar nm = cfb.FullPaths[i];\n\n\t\telt.name = filename(nm).replace(\"/\",\"\");\n\t\telt.L = elt.R = elt.C = -(elt.color = 1);\n\t\telt.size = elt.content ? elt.content.length : 0;\n\t\telt.start = 0;\n\t\telt.clsid = (elt.clsid || HEADER_CLSID);\n\t\tif(i === 0) {\n\t\t\telt.C = data.length > 1 ? 1 : -1;\n\t\t\telt.size = 0;\n\t\t\telt.type = 5;\n\t\t} else if(nm.slice(-1) == \"/\") {\n\t\t\tfor(j=i+1;j < data.length; ++j) if(dirname(cfb.FullPaths[j])==nm) break;\n\t\t\telt.C = j >= data.length ? -1 : j;\n\t\t\tfor(j=i+1;j < data.length; ++j) if(dirname(cfb.FullPaths[j])==dirname(nm)) break;\n\t\t\telt.R = j >= data.length ? -1 : j;\n\t\t\telt.type = 1;\n\t\t} else {\n\t\t\tif(dirname(cfb.FullPaths[i+1]||\"\") == dirname(nm)) elt.R = i + 1;\n\t\t\telt.type = 2;\n\t\t}\n\t}\n\n}\n\nfunction _write(cfb, options) {\n\tvar _opts = options || {};\n\trebuild_cfb(cfb);\n\tif(_opts.fileType == 'zip') return write_zip(cfb, _opts);\n\tvar L = (function(cfb){\n\t\tvar mini_size = 0, fat_size = 0;\n\t\tfor(var i = 0; i < cfb.FileIndex.length; ++i) {\n\t\t\tvar file = cfb.FileIndex[i];\n\t\t\tif(!file.content) continue;\nvar flen = file.content.length;\n\t\t\tif(flen > 0){\n\t\t\t\tif(flen < 0x1000) mini_size += (flen + 0x3F) >> 6;\n\t\t\t\telse fat_size += (flen + 0x01FF) >> 9;\n\t\t\t}\n\t\t}\n\t\tvar dir_cnt = (cfb.FullPaths.length +3) >> 2;\n\t\tvar mini_cnt = (mini_size + 7) >> 3;\n\t\tvar mfat_cnt = (mini_size + 0x7F) >> 7;\n\t\tvar fat_base = mini_cnt + fat_size + dir_cnt + mfat_cnt;\n\t\tvar fat_cnt = (fat_base + 0x7F) >> 7;\n\t\tvar difat_cnt = fat_cnt <= 109 ? 0 : Math.ceil((fat_cnt-109)/0x7F);\n\t\twhile(((fat_base + fat_cnt + difat_cnt + 0x7F) >> 7) > fat_cnt) difat_cnt = ++fat_cnt <= 109 ? 0 : Math.ceil((fat_cnt-109)/0x7F);\n\t\tvar L = [1, difat_cnt, fat_cnt, mfat_cnt, dir_cnt, fat_size, mini_size, 0];\n\t\tcfb.FileIndex[0].size = mini_size << 6;\n\t\tL[7] = (cfb.FileIndex[0].start=L[0]+L[1]+L[2]+L[3]+L[4]+L[5])+((L[6]+7) >> 3);\n\t\treturn L;\n\t})(cfb);\n\tvar o = new_buf(L[7] << 9);\n\tvar i = 0, T = 0;\n\t{\n\t\tfor(i = 0; i < 8; ++i) o.write_shift(1, HEADER_SIG[i]);\n\t\tfor(i = 0; i < 8; ++i) o.write_shift(2, 0);\n\t\to.write_shift(2, 0x003E);\n\t\to.write_shift(2, 0x0003);\n\t\to.write_shift(2, 0xFFFE);\n\t\to.write_shift(2, 0x0009);\n\t\to.write_shift(2, 0x0006);\n\t\tfor(i = 0; i < 3; ++i) o.write_shift(2, 0);\n\t\to.write_shift(4, 0);\n\t\to.write_shift(4, L[2]);\n\t\to.write_shift(4, L[0] + L[1] + L[2] + L[3] - 1);\n\t\to.write_shift(4, 0);\n\t\to.write_shift(4, 1<<12);\n\t\to.write_shift(4, L[3] ? L[0] + L[1] + L[2] - 1: ENDOFCHAIN);\n\t\to.write_shift(4, L[3]);\n\t\to.write_shift(-4, L[1] ? L[0] - 1: ENDOFCHAIN);\n\t\to.write_shift(4, L[1]);\n\t\tfor(i = 0; i < 109; ++i) o.write_shift(-4, i < L[2] ? L[1] + i : -1);\n\t}\n\tif(L[1]) {\n\t\tfor(T = 0; T < L[1]; ++T) {\n\t\t\tfor(; i < 236 + T * 127; ++i) o.write_shift(-4, i < L[2] ? L[1] + i : -1);\n\t\t\to.write_shift(-4, T === L[1] - 1 ? ENDOFCHAIN : T + 1);\n\t\t}\n\t}\n\tvar chainit = function(w) {\n\t\tfor(T += w; i> 9);\n\t}\n\tchainit((L[6] + 7) >> 3);\n\twhile(o.l & 0x1FF) o.write_shift(-4, consts.ENDOFCHAIN);\n\tT = i = 0;\n\tfor(j = 0; j < cfb.FileIndex.length; ++j) {\n\t\tfile = cfb.FileIndex[j];\n\t\tif(!file.content) continue;\nflen = file.content.length;\n\t\tif(!flen || flen >= 0x1000) continue;\n\t\tfile.start = T;\n\t\tchainit((flen + 0x3F) >> 6);\n\t}\n\twhile(o.l & 0x1FF) o.write_shift(-4, consts.ENDOFCHAIN);\n\tfor(i = 0; i < L[4]<<2; ++i) {\n\t\tvar nm = cfb.FullPaths[i];\n\t\tif(!nm || nm.length === 0) {\n\t\t\tfor(j = 0; j < 17; ++j) o.write_shift(4, 0);\n\t\t\tfor(j = 0; j < 3; ++j) o.write_shift(4, -1);\n\t\t\tfor(j = 0; j < 12; ++j) o.write_shift(4, 0);\n\t\t\tcontinue;\n\t\t}\n\t\tfile = cfb.FileIndex[i];\n\t\tif(i === 0) file.start = file.size ? file.start - 1 : ENDOFCHAIN;\n\t\tvar _nm = (i === 0 && _opts.root) || file.name;\n\t\tflen = 2*(_nm.length+1);\n\t\to.write_shift(64, _nm, \"utf16le\");\n\t\to.write_shift(2, flen);\n\t\to.write_shift(1, file.type);\n\t\to.write_shift(1, file.color);\n\t\to.write_shift(-4, file.L);\n\t\to.write_shift(-4, file.R);\n\t\to.write_shift(-4, file.C);\n\t\tif(!file.clsid) for(j = 0; j < 4; ++j) o.write_shift(4, 0);\n\t\telse o.write_shift(16, file.clsid, \"hex\");\n\t\to.write_shift(4, file.state || 0);\n\t\to.write_shift(4, 0); o.write_shift(4, 0);\n\t\to.write_shift(4, 0); o.write_shift(4, 0);\n\t\to.write_shift(4, file.start);\n\t\to.write_shift(4, file.size); o.write_shift(4, 0);\n\t}\n\tfor(i = 1; i < cfb.FileIndex.length; ++i) {\n\t\tfile = cfb.FileIndex[i];\nif(file.size >= 0x1000) {\n\t\t\to.l = (file.start+1) << 9;\n\t\t\tfor(j = 0; j < file.size; ++j) o.write_shift(1, file.content[j]);\n\t\t\tfor(; j & 0x1FF; ++j) o.write_shift(1, 0);\n\t\t}\n\t}\n\tfor(i = 1; i < cfb.FileIndex.length; ++i) {\n\t\tfile = cfb.FileIndex[i];\nif(file.size > 0 && file.size < 0x1000) {\n\t\t\tfor(j = 0; j < file.size; ++j) o.write_shift(1, file.content[j]);\n\t\t\tfor(; j & 0x3F; ++j) o.write_shift(1, 0);\n\t\t}\n\t}\n\twhile(o.l < o.length) o.write_shift(1, 0);\n\treturn o;\n}\n/* [MS-CFB] 2.6.4 (Unicode 3.0.1 case conversion) */\nfunction find(cfb, path) {\n\tvar UCFullPaths = cfb.FullPaths.map(function(x) { return x.toUpperCase(); });\n\tvar UCPaths = UCFullPaths.map(function(x) { var y = x.split(\"/\"); return y[y.length - (x.slice(-1) == \"/\" ? 2 : 1)]; });\n\tvar k = false;\n\tif(path.charCodeAt(0) === 47 /* \"/\" */) { k = true; path = UCFullPaths[0].slice(0, -1) + path; }\n\telse k = path.indexOf(\"/\") !== -1;\n\tvar UCPath = path.toUpperCase();\n\tvar w = k === true ? UCFullPaths.indexOf(UCPath) : UCPaths.indexOf(UCPath);\n\tif(w !== -1) return cfb.FileIndex[w];\n\n\tvar m = !UCPath.match(chr1);\n\tUCPath = UCPath.replace(chr0,'');\n\tif(m) UCPath = UCPath.replace(chr1,'!');\n\tfor(w = 0; w < UCFullPaths.length; ++w) {\n\t\tif((m ? UCFullPaths[w].replace(chr1,'!') : UCFullPaths[w]).replace(chr0,'') == UCPath) return cfb.FileIndex[w];\n\t\tif((m ? UCPaths[w].replace(chr1,'!') : UCPaths[w]).replace(chr0,'') == UCPath) return cfb.FileIndex[w];\n\t}\n\treturn null;\n}\n/** CFB Constants */\nvar MSSZ = 64; /* Mini Sector Size = 1<<6 */\n//var MSCSZ = 4096; /* Mini Stream Cutoff Size */\n/* 2.1 Compound File Sector Numbers and Types */\nvar ENDOFCHAIN = -2;\n/* 2.2 Compound File Header */\nvar HEADER_SIGNATURE = 'd0cf11e0a1b11ae1';\nvar HEADER_SIG = [0xD0, 0xCF, 0x11, 0xE0, 0xA1, 0xB1, 0x1A, 0xE1];\nvar HEADER_CLSID = '00000000000000000000000000000000';\nvar consts = {\n\t/* 2.1 Compund File Sector Numbers and Types */\n\tMAXREGSECT: -6,\n\tDIFSECT: -4,\n\tFATSECT: -3,\n\tENDOFCHAIN: ENDOFCHAIN,\n\tFREESECT: -1,\n\t/* 2.2 Compound File Header */\n\tHEADER_SIGNATURE: HEADER_SIGNATURE,\n\tHEADER_MINOR_VERSION: '3e00',\n\tMAXREGSID: -6,\n\tNOSTREAM: -1,\n\tHEADER_CLSID: HEADER_CLSID,\n\t/* 2.6.1 Compound File Directory Entry */\n\tEntryTypes: ['unknown','storage','stream','lockbytes','property','root']\n};\n\nfunction write_file(cfb, filename, options) {\n\tget_fs();\n\tvar o = _write(cfb, options);\nfs.writeFileSync(filename, o);\n}\n\nfunction a2s(o) {\n\tvar out = new Array(o.length);\n\tfor(var i = 0; i < o.length; ++i) out[i] = String.fromCharCode(o[i]);\n\treturn out.join(\"\");\n}\n\nfunction write(cfb, options) {\n\tvar o = _write(cfb, options);\n\tswitch(options && options.type) {\n\t\tcase \"file\": get_fs(); fs.writeFileSync(options.filename, (o)); return o;\n\t\tcase \"binary\": return a2s(o);\n\t\tcase \"base64\": return Base64.encode(a2s(o));\n\t}\n\treturn o;\n}\n/* node < 8.1 zlib does not expose bytesRead, so default to pure JS */\nvar _zlib;\nfunction use_zlib(zlib) { try {\n\tvar InflateRaw = zlib.InflateRaw;\n\tvar InflRaw = new InflateRaw();\n\tInflRaw._processChunk(new Uint8Array([3, 0]), InflRaw._finishFlushFlag);\n\tif(InflRaw.bytesRead) _zlib = zlib;\n\telse throw new Error(\"zlib does not expose bytesRead\");\n} catch(e) {console.error(\"cannot use native zlib: \" + (e.message || e)); } }\n\nfunction _inflateRawSync(payload, usz) {\n\tif(!_zlib) return _inflate(payload, usz);\n\tvar InflateRaw = _zlib.InflateRaw;\n\tvar InflRaw = new InflateRaw();\n\tvar out = InflRaw._processChunk(payload.slice(payload.l), InflRaw._finishFlushFlag);\n\tpayload.l += InflRaw.bytesRead;\n\treturn out;\n}\n\nfunction _deflateRawSync(payload) {\n\treturn _zlib ? _zlib.deflateRawSync(payload) : _deflate(payload);\n}\nvar CLEN_ORDER = [ 16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15 ];\n\n/* LEN_ID = [ 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285 ]; */\nvar LEN_LN = [ 3, 4, 5, 6, 7, 8, 9, 10, 11, 13 , 15, 17, 19, 23, 27, 31, 35, 43, 51, 59, 67, 83, 99, 115, 131, 163, 195, 227, 258 ];\n\n/* DST_ID = [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29 ]; */\nvar DST_LN = [ 1, 2, 3, 4, 5, 7, 9, 13, 17, 25, 33, 49, 65, 97, 129, 193, 257, 385, 513, 769, 1025, 1537, 2049, 3073, 4097, 6145, 8193, 12289, 16385, 24577 ];\n\nfunction bit_swap_8(n) { var t = (((((n<<1)|(n<<11)) & 0x22110) | (((n<<5)|(n<<15)) & 0x88440))); return ((t>>16) | (t>>8) |t)&0xFF; }\n\nvar use_typed_arrays = typeof Uint8Array !== 'undefined';\n\nvar bitswap8 = use_typed_arrays ? new Uint8Array(1<<8) : [];\nfor(var q = 0; q < (1<<8); ++q) bitswap8[q] = bit_swap_8(q);\n\nfunction bit_swap_n(n, b) {\n\tvar rev = bitswap8[n & 0xFF];\n\tif(b <= 8) return rev >>> (8-b);\n\trev = (rev << 8) | bitswap8[(n>>8)&0xFF];\n\tif(b <= 16) return rev >>> (16-b);\n\trev = (rev << 8) | bitswap8[(n>>16)&0xFF];\n\treturn rev >>> (24-b);\n}\n\n/* helpers for unaligned bit reads */\nfunction read_bits_2(buf, bl) { var w = (bl&7), h = (bl>>>3); return ((buf[h]|(w <= 6 ? 0 : buf[h+1]<<8))>>>w)& 0x03; }\nfunction read_bits_3(buf, bl) { var w = (bl&7), h = (bl>>>3); return ((buf[h]|(w <= 5 ? 0 : buf[h+1]<<8))>>>w)& 0x07; }\nfunction read_bits_4(buf, bl) { var w = (bl&7), h = (bl>>>3); return ((buf[h]|(w <= 4 ? 0 : buf[h+1]<<8))>>>w)& 0x0F; }\nfunction read_bits_5(buf, bl) { var w = (bl&7), h = (bl>>>3); return ((buf[h]|(w <= 3 ? 0 : buf[h+1]<<8))>>>w)& 0x1F; }\nfunction read_bits_7(buf, bl) { var w = (bl&7), h = (bl>>>3); return ((buf[h]|(w <= 1 ? 0 : buf[h+1]<<8))>>>w)& 0x7F; }\n\n/* works up to n = 3 * 8 + 1 = 25 */\nfunction read_bits_n(buf, bl, n) {\n\tvar w = (bl&7), h = (bl>>>3), f = ((1<>> w;\n\tif(n < 8 - w) return v & f;\n\tv |= buf[h+1]<<(8-w);\n\tif(n < 16 - w) return v & f;\n\tv |= buf[h+2]<<(16-w);\n\tif(n < 24 - w) return v & f;\n\tv |= buf[h+3]<<(24-w);\n\treturn v & f;\n}\n\n/* until ArrayBuffer#realloc is a thing, fake a realloc */\nfunction realloc(b, sz) {\n\tvar L = b.length, M = 2*L > sz ? 2*L : sz + 5, i = 0;\n\tif(L >= sz) return b;\n\tif(has_buf) {\n\t\tvar o = new_unsafe_buf(M);\n\t\t// $FlowIgnore\n\t\tif(b.copy) b.copy(o);\n\t\telse for(; i < b.length; ++i) o[i] = b[i];\n\t\treturn o;\n\t} else if(use_typed_arrays) {\n\t\tvar a = new Uint8Array(M);\n\t\tif(a.set) a.set(b);\n\t\telse for(; i < b.length; ++i) a[i] = b[i];\n\t\treturn a;\n\t}\n\tb.length = M;\n\treturn b;\n}\n\n/* zero-filled arrays for older browsers */\nfunction zero_fill_array(n) {\n\tvar o = new Array(n);\n\tfor(var i = 0; i < n; ++i) o[i] = 0;\n\treturn o;\n}var _deflate = (function() {\nvar _deflateRaw = (function() {\n\treturn function deflateRaw(data, out) {\n\t\tvar boff = 0;\n\t\twhile(boff < data.length) {\n\t\t\tvar L = Math.min(0xFFFF, data.length - boff);\n\t\t\tvar h = boff + L == data.length;\n\t\t\t/* TODO: this is only type 0 stored */\n\t\t\tout.write_shift(1, +h);\n\t\t\tout.write_shift(2, L);\n\t\t\tout.write_shift(2, (~L) & 0xFFFF);\n\t\t\twhile(L-- > 0) out[out.l++] = data[boff++];\n\t\t}\n\t\treturn out.l;\n\t};\n})();\n\nreturn function(data) {\n\tvar buf = new_buf(50+Math.floor(data.length*1.1));\n\tvar off = _deflateRaw(data, buf);\n\treturn buf.slice(0, off);\n};\n})();\n/* modified inflate function also moves original read head */\n\n/* build tree (used for literals and lengths) */\nfunction build_tree(clens, cmap, MAX) {\n\tvar maxlen = 1, w = 0, i = 0, j = 0, ccode = 0, L = clens.length;\n\n\tvar bl_count = use_typed_arrays ? new Uint16Array(32) : zero_fill_array(32);\n\tfor(i = 0; i < 32; ++i) bl_count[i] = 0;\n\n\tfor(i = L; i < MAX; ++i) clens[i] = 0;\n\tL = clens.length;\n\n\tvar ctree = use_typed_arrays ? new Uint16Array(L) : zero_fill_array(L); // []\n\n\t/* build code tree */\n\tfor(i = 0; i < L; ++i) {\n\t\tbl_count[(w = clens[i])]++;\n\t\tif(maxlen < w) maxlen = w;\n\t\tctree[i] = 0;\n\t}\n\tbl_count[0] = 0;\n\tfor(i = 1; i <= maxlen; ++i) bl_count[i+16] = (ccode = (ccode + bl_count[i-1])<<1);\n\tfor(i = 0; i < L; ++i) {\n\t\tccode = clens[i];\n\t\tif(ccode != 0) ctree[i] = bl_count[ccode+16]++;\n\t}\n\n\t/* cmap[maxlen + 4 bits] = (off&15) + (lit<<4) reverse mapping */\n\tvar cleni = 0;\n\tfor(i = 0; i < L; ++i) {\n\t\tcleni = clens[i];\n\t\tif(cleni != 0) {\n\t\t\tccode = bit_swap_n(ctree[i], maxlen)>>(maxlen-cleni);\n\t\t\tfor(j = (1<<(maxlen + 4 - cleni)) - 1; j>=0; --j)\n\t\t\t\tcmap[ccode|(j<>(8-cleni);\n\t\t\tfor(var j = (1<<(7-cleni))-1; j>=0; --j) dyn_cmap[ccode|(j<>>= 3)) {\n\t\t\tcase 16:\n\t\t\t\tw = 3 + read_bits_2(data, boff); boff += 2;\n\t\t\t\tccode = hcodes[hcodes.length - 1];\n\t\t\t\twhile(w-- > 0) hcodes.push(ccode);\n\t\t\t\tbreak;\n\t\t\tcase 17:\n\t\t\t\tw = 3 + read_bits_3(data, boff); boff += 3;\n\t\t\t\twhile(w-- > 0) hcodes.push(0);\n\t\t\t\tbreak;\n\t\t\tcase 18:\n\t\t\t\tw = 11 + read_bits_7(data, boff); boff += 7;\n\t\t\t\twhile(w -- > 0) hcodes.push(0);\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\thcodes.push(ccode);\n\t\t\t\tif(maxlen < ccode) maxlen = ccode;\n\t\t\t\tbreak;\n\t\t}\n\t}\n\n\t/* build literal / length trees */\n\tvar h1 = hcodes.slice(0, _HLIT), h2 = hcodes.slice(_HLIT);\n\tfor(i = _HLIT; i < 286; ++i) h1[i] = 0;\n\tfor(i = _HDIST; i < 30; ++i) h2[i] = 0;\n\tdyn_len_1 = build_tree(h1, dyn_lmap, 286);\n\tdyn_len_2 = build_tree(h2, dyn_dmap, 30);\n\treturn boff;\n}\n\n/* return [ data, bytesRead ] */\nfunction inflate(data, usz) {\n\t/* shortcircuit for empty buffer [0x03, 0x00] */\n\tif(data[0] == 3 && !(data[1] & 0x3)) { return [new_raw_buf(usz), 2]; }\n\n\t/* bit offset */\n\tvar boff = 0;\n\n\t/* header includes final bit and type bits */\n\tvar header = 0;\n\n\tvar outbuf = new_unsafe_buf(usz ? usz : (1<<18));\n\tvar woff = 0;\n\tvar OL = outbuf.length>>>0;\n\tvar max_len_1 = 0, max_len_2 = 0;\n\n\twhile((header&1) == 0) {\n\t\theader = read_bits_3(data, boff); boff += 3;\n\t\tif((header >>> 1) == 0) {\n\t\t\t/* Stored block */\n\t\t\tif(boff & 7) boff += 8 - (boff&7);\n\t\t\t/* 2 bytes sz, 2 bytes bit inverse */\n\t\t\tvar sz = data[boff>>>3] | data[(boff>>>3)+1]<<8;\n\t\t\tboff += 32;\n\t\t\t/* push sz bytes */\n\t\t\tif(!usz && OL < woff + sz) { outbuf = realloc(outbuf, woff + sz); OL = outbuf.length; }\n\t\t\tif(typeof data.copy === 'function') {\n\t\t\t\t// $FlowIgnore\n\t\t\t\tdata.copy(outbuf, woff, boff>>>3, (boff>>>3)+sz);\n\t\t\t\twoff += sz; boff += 8*sz;\n\t\t\t} else while(sz-- > 0) { outbuf[woff++] = data[boff>>>3]; boff += 8; }\n\t\t\tcontinue;\n\t\t} else if((header >>> 1) == 1) {\n\t\t\t/* Fixed Huffman */\n\t\t\tmax_len_1 = 9; max_len_2 = 5;\n\t\t} else {\n\t\t\t/* Dynamic Huffman */\n\t\t\tboff = dyn(data, boff);\n\t\t\tmax_len_1 = dyn_len_1; max_len_2 = dyn_len_2;\n\t\t}\n\t\tif(!usz && (OL < woff + 32767)) { outbuf = realloc(outbuf, woff + 32767); OL = outbuf.length; }\n\t\tfor(;;) { // while(true) is apparently out of vogue in modern JS circles\n\t\t\t/* ingest code and move read head */\n\t\t\tvar bits = read_bits_n(data, boff, max_len_1);\n\t\t\tvar code = (header>>>1) == 1 ? fix_lmap[bits] : dyn_lmap[bits];\n\t\t\tboff += code & 15; code >>>= 4;\n\t\t\t/* 0-255 are literals, 256 is end of block token, 257+ are copy tokens */\n\t\t\tif(((code>>>8)&0xFF) === 0) outbuf[woff++] = code;\n\t\t\telse if(code == 256) break;\n\t\t\telse {\n\t\t\t\tcode -= 257;\n\t\t\t\tvar len_eb = (code < 8) ? 0 : ((code-4)>>2); if(len_eb > 5) len_eb = 0;\n\t\t\t\tvar tgt = woff + LEN_LN[code];\n\t\t\t\t/* length extra bits */\n\t\t\t\tif(len_eb > 0) {\n\t\t\t\t\ttgt += read_bits_n(data, boff, len_eb);\n\t\t\t\t\tboff += len_eb;\n\t\t\t\t}\n\n\t\t\t\t/* dist code */\n\t\t\t\tbits = read_bits_n(data, boff, max_len_2);\n\t\t\t\tcode = (header>>>1) == 1 ? fix_dmap[bits] : dyn_dmap[bits];\n\t\t\t\tboff += code & 15; code >>>= 4;\n\t\t\t\tvar dst_eb = (code < 4 ? 0 : (code-2)>>1);\n\t\t\t\tvar dst = DST_LN[code];\n\t\t\t\t/* dist extra bits */\n\t\t\t\tif(dst_eb > 0) {\n\t\t\t\t\tdst += read_bits_n(data, boff, dst_eb);\n\t\t\t\t\tboff += dst_eb;\n\t\t\t\t}\n\n\t\t\t\t/* in the common case, manual byte copy is faster than TA set / Buffer copy */\n\t\t\t\tif(!usz && OL < tgt) { outbuf = realloc(outbuf, tgt); OL = outbuf.length; }\n\t\t\t\twhile(woff < tgt) { outbuf[woff] = outbuf[woff - dst]; ++woff; }\n\t\t\t}\n\t\t}\n\t}\n\treturn [usz ? outbuf : outbuf.slice(0, woff), (boff+7)>>>3];\n}\n\nfunction _inflate(payload, usz) {\n\tvar data = payload.slice(payload.l||0);\n\tvar out = inflate(data, usz);\n\tpayload.l += out[1];\n\treturn out[0];\n}\n\nfunction warn_or_throw(wrn, msg) {\n\tif(wrn) { if(typeof console !== 'undefined') console.error(msg); }\n\telse throw new Error(msg);\n}\n\nfunction parse_zip(file, options) {\n\tvar blob = file;\n\tprep_blob(blob, 0);\n\n\tvar FileIndex = [], FullPaths = [];\n\tvar o = {\n\t\tFileIndex: FileIndex,\n\t\tFullPaths: FullPaths\n\t};\n\tinit_cfb(o, { root: options.root });\n\n\t/* find end of central directory, start just after signature */\n\tvar i = blob.length - 4;\n\twhile((blob[i] != 0x50 || blob[i+1] != 0x4b || blob[i+2] != 0x05 || blob[i+3] != 0x06) && i >= 0) --i;\n\tblob.l = i + 4;\n\n\t/* parse end of central directory */\n\tblob.l += 4;\n\tvar fcnt = blob.read_shift(2);\n\tblob.l += 6;\n\tvar start_cd = blob.read_shift(4);\n\n\t/* parse central directory */\n\tblob.l = start_cd;\n\n\tfor(i = 0; i < fcnt; ++i) {\n\t\t/* trust local file header instead of CD entry */\n\t\tblob.l += 20;\n\t\tvar csz = blob.read_shift(4);\n\t\tvar usz = blob.read_shift(4);\n\t\tvar namelen = blob.read_shift(2);\n\t\tvar efsz = blob.read_shift(2);\n\t\tvar fcsz = blob.read_shift(2);\n\t\tblob.l += 8;\n\t\tvar offset = blob.read_shift(4);\n\t\tvar EF = parse_extra_field(blob.slice(blob.l+namelen, blob.l+namelen+efsz));\n\t\tblob.l += namelen + efsz + fcsz;\n\n\t\tvar L = blob.l;\n\t\tblob.l = offset + 4;\n\t\tparse_local_file(blob, csz, usz, o, EF);\n\t\tblob.l = L;\n\t}\n\n\treturn o;\n}\n\n\n/* head starts just after local file header signature */\nfunction parse_local_file(blob, csz, usz, o, EF) {\n\t/* [local file header] */\n\tblob.l += 2;\n\tvar flags = blob.read_shift(2);\n\tvar meth = blob.read_shift(2);\n\tvar date = parse_dos_date(blob);\n\n\tif(flags & 0x2041) throw new Error(\"Unsupported ZIP encryption\");\n\tvar crc32 = blob.read_shift(4);\n\tvar _csz = blob.read_shift(4);\n\tvar _usz = blob.read_shift(4);\n\n\tvar namelen = blob.read_shift(2);\n\tvar efsz = blob.read_shift(2);\n\n\t// TODO: flags & (1<<11) // UTF8\n\tvar name = \"\"; for(var i = 0; i < namelen; ++i) name += String.fromCharCode(blob[blob.l++]);\n\tif(efsz) {\n\t\tvar ef = parse_extra_field(blob.slice(blob.l, blob.l + efsz));\n\t\tif((ef[0x5455]||{}).mt) date = ef[0x5455].mt;\n\t\tif(((EF||{})[0x5455]||{}).mt) date = EF[0x5455].mt;\n\t}\n\tblob.l += efsz;\n\n\t/* [encryption header] */\n\n\t/* [file data] */\n\tvar data = blob.slice(blob.l, blob.l + _csz);\n\tswitch(meth) {\n\t\tcase 8: data = _inflateRawSync(blob, _usz); break;\n\t\tcase 0: break;\n\t\tdefault: throw new Error(\"Unsupported ZIP Compression method \" + meth);\n\t}\n\n\t/* [data descriptor] */\n\tvar wrn = false;\n\tif(flags & 8) {\n\t\tcrc32 = blob.read_shift(4);\n\t\tif(crc32 == 0x08074b50) { crc32 = blob.read_shift(4); wrn = true; }\n\t\t_csz = blob.read_shift(4);\n\t\t_usz = blob.read_shift(4);\n\t}\n\n\tif(_csz != csz) warn_or_throw(wrn, \"Bad compressed size: \" + csz + \" != \" + _csz);\n\tif(_usz != usz) warn_or_throw(wrn, \"Bad uncompressed size: \" + usz + \" != \" + _usz);\n\tvar _crc32 = CRC32.buf(data, 0);\n\tif(crc32 != _crc32) warn_or_throw(wrn, \"Bad CRC32 checksum: \" + crc32 + \" != \" + _crc32);\n\tcfb_add(o, name, data, {unsafe: true, mt: date});\n}\nfunction write_zip(cfb, options) {\n\tvar _opts = options || {};\n\tvar out = [], cdirs = [];\n\tvar o = new_buf(1);\n\tvar method = (_opts.compression ? 8 : 0), flags = 0;\n\tvar desc = false;\n\tif(desc) flags |= 8;\n\tvar i = 0, j = 0;\n\n\tvar start_cd = 0, fcnt = 0;\n\tvar root = cfb.FullPaths[0], fp = root, fi = cfb.FileIndex[0];\n\tvar crcs = [];\n\tvar sz_cd = 0;\n\n\tfor(i = 1; i < cfb.FullPaths.length; ++i) {\n\t\tfp = cfb.FullPaths[i].slice(root.length); fi = cfb.FileIndex[i];\n\t\tif(!fi.size || !fi.content || fp == \"\\u0001Sh33tJ5\") continue;\n\t\tvar start = start_cd;\n\n\t\t/* TODO: CP437 filename */\n\t\tvar namebuf = new_buf(fp.length);\n\t\tfor(j = 0; j < fp.length; ++j) namebuf.write_shift(1, fp.charCodeAt(j) & 0x7F);\n\t\tnamebuf = namebuf.slice(0, namebuf.l);\n\t\tcrcs[fcnt] = CRC32.buf(fi.content, 0);\n\n\t\tvar outbuf = fi.content;\n\t\tif(method == 8) outbuf = _deflateRawSync(outbuf);\n\n\t\t/* local file header */\n\t\to = new_buf(30);\n\t\to.write_shift(4, 0x04034b50);\n\t\to.write_shift(2, 20);\n\t\to.write_shift(2, flags);\n\t\to.write_shift(2, method);\n\t\t/* TODO: last mod file time/date */\n\t\tif(fi.mt) write_dos_date(o, fi.mt);\n\t\telse o.write_shift(4, 0);\n\t\to.write_shift(-4, (flags & 8) ? 0 : crcs[fcnt]);\n\t\to.write_shift(4, (flags & 8) ? 0 : outbuf.length);\n\t\to.write_shift(4, (flags & 8) ? 0 : fi.content.length);\n\t\to.write_shift(2, namebuf.length);\n\t\to.write_shift(2, 0);\n\n\t\tstart_cd += o.length;\n\t\tout.push(o);\n\t\tstart_cd += namebuf.length;\n\t\tout.push(namebuf);\n\n\t\t/* TODO: encryption header ? */\n\t\tstart_cd += outbuf.length;\n\t\tout.push(outbuf);\n\n\t\t/* data descriptor */\n\t\tif(flags & 8) {\n\t\t\to = new_buf(12);\n\t\t\to.write_shift(-4, crcs[fcnt]);\n\t\t\to.write_shift(4, outbuf.length);\n\t\t\to.write_shift(4, fi.content.length);\n\t\t\tstart_cd += o.l;\n\t\t\tout.push(o);\n\t\t}\n\n\t\t/* central directory */\n\t\to = new_buf(46);\n\t\to.write_shift(4, 0x02014b50);\n\t\to.write_shift(2, 0);\n\t\to.write_shift(2, 20);\n\t\to.write_shift(2, flags);\n\t\to.write_shift(2, method);\n\t\to.write_shift(4, 0); /* TODO: last mod file time/date */\n\t\to.write_shift(-4, crcs[fcnt]);\n\n\t\to.write_shift(4, outbuf.length);\n\t\to.write_shift(4, fi.content.length);\n\t\to.write_shift(2, namebuf.length);\n\t\to.write_shift(2, 0);\n\t\to.write_shift(2, 0);\n\t\to.write_shift(2, 0);\n\t\to.write_shift(2, 0);\n\t\to.write_shift(4, 0);\n\t\to.write_shift(4, start);\n\n\t\tsz_cd += o.l;\n\t\tcdirs.push(o);\n\t\tsz_cd += namebuf.length;\n\t\tcdirs.push(namebuf);\n\t\t++fcnt;\n\t}\n\n\t/* end of central directory */\n\to = new_buf(22);\n\to.write_shift(4, 0x06054b50);\n\to.write_shift(2, 0);\n\to.write_shift(2, 0);\n\to.write_shift(2, fcnt);\n\to.write_shift(2, fcnt);\n\to.write_shift(4, sz_cd);\n\to.write_shift(4, start_cd);\n\to.write_shift(2, 0);\n\n\treturn bconcat(([bconcat((out)), bconcat(cdirs), o]));\n}\nfunction cfb_new(opts) {\n\tvar o = ({});\n\tinit_cfb(o, opts);\n\treturn o;\n}\n\nfunction cfb_add(cfb, name, content, opts) {\n\tvar unsafe = opts && opts.unsafe;\n\tif(!unsafe) init_cfb(cfb);\n\tvar file = !unsafe && CFB.find(cfb, name);\n\tif(!file) {\n\t\tvar fpath = cfb.FullPaths[0];\n\t\tif(name.slice(0, fpath.length) == fpath) fpath = name;\n\t\telse {\n\t\t\tif(fpath.slice(-1) != \"/\") fpath += \"/\";\n\t\t\tfpath = (fpath + name).replace(\"//\",\"/\");\n\t\t}\n\t\tfile = ({name: filename(name), type: 2});\n\t\tcfb.FileIndex.push(file);\n\t\tcfb.FullPaths.push(fpath);\n\t\tif(!unsafe) CFB.utils.cfb_gc(cfb);\n\t}\nfile.content = (content);\n\tfile.size = content ? content.length : 0;\n\tif(opts) {\n\t\tif(opts.CLSID) file.clsid = opts.CLSID;\n\t\tif(opts.mt) file.mt = opts.mt;\n\t\tif(opts.ct) file.ct = opts.ct;\n\t}\n\treturn file;\n}\n\nfunction cfb_del(cfb, name) {\n\tinit_cfb(cfb);\n\tvar file = CFB.find(cfb, name);\n\tif(file) for(var j = 0; j < cfb.FileIndex.length; ++j) if(cfb.FileIndex[j] == file) {\n\t\tcfb.FileIndex.splice(j, 1);\n\t\tcfb.FullPaths.splice(j, 1);\n\t\treturn true;\n\t}\n\treturn false;\n}\n\nfunction cfb_mov(cfb, old_name, new_name) {\n\tinit_cfb(cfb);\n\tvar file = CFB.find(cfb, old_name);\n\tif(file) for(var j = 0; j < cfb.FileIndex.length; ++j) if(cfb.FileIndex[j] == file) {\n\t\tcfb.FileIndex[j].name = filename(new_name);\n\t\tcfb.FullPaths[j] = new_name;\n\t\treturn true;\n\t}\n\treturn false;\n}\n\nfunction cfb_gc(cfb) { rebuild_cfb(cfb, true); }\n\nexports.find = find;\nexports.read = read;\nexports.parse = parse;\nexports.write = write;\nexports.writeFile = write_file;\nexports.utils = {\n\tcfb_new: cfb_new,\n\tcfb_add: cfb_add,\n\tcfb_del: cfb_del,\n\tcfb_mov: cfb_mov,\n\tcfb_gc: cfb_gc,\n\tReadShift: ReadShift,\n\tCheckField: CheckField,\n\tprep_blob: prep_blob,\n\tbconcat: bconcat,\n\tuse_zlib: use_zlib,\n\t_deflateRaw: _deflate,\n\t_inflateRaw: _inflate,\n\tconsts: consts\n};\n\nreturn exports;\n})();\n\nif(typeof require !== 'undefined' && typeof module !== 'undefined' && typeof DO_NOT_EXPORT_CFB === 'undefined') { module.exports = CFB; }\nvar _fs;\nif(typeof require !== 'undefined') try { _fs = require('fs'); } catch(e) {}\n\n/* normalize data for blob ctor */\nfunction blobify(data) {\n\tif(typeof data === \"string\") return s2ab(data);\n\tif(Array.isArray(data)) return a2u(data);\n\treturn data;\n}\n/* write or download file */\nfunction write_dl(fname, payload, enc) {\n\t/*global IE_SaveFile, Blob, navigator, saveAs, URL, document, File, chrome */\n\tif(typeof _fs !== 'undefined' && _fs.writeFileSync) return enc ? _fs.writeFileSync(fname, payload, enc) : _fs.writeFileSync(fname, payload);\n\tvar data = (enc == \"utf8\") ? utf8write(payload) : payload;\nif(typeof IE_SaveFile !== 'undefined') return IE_SaveFile(data, fname);\n\tif(typeof Blob !== 'undefined') {\n\t\tvar blob = new Blob([blobify(data)], {type:\"application/octet-stream\"});\nif(typeof navigator !== 'undefined' && navigator.msSaveBlob) return navigator.msSaveBlob(blob, fname);\nif(typeof saveAs !== 'undefined') return saveAs(blob, fname);\n\t\tif(typeof URL !== 'undefined' && typeof document !== 'undefined' && document.createElement && URL.createObjectURL) {\n\t\t\tvar url = URL.createObjectURL(blob);\nif(typeof chrome === 'object' && typeof (chrome.downloads||{}).download == \"function\") {\n\t\t\t\tif(URL.revokeObjectURL && typeof setTimeout !== 'undefined') setTimeout(function() { URL.revokeObjectURL(url); }, 60000);\n\t\t\t\treturn chrome.downloads.download({ url: url, filename: fname, saveAs: true});\n\t\t\t}\n\t\t\tvar a = document.createElement(\"a\");\n\t\t\tif(a.download != null) {\na.download = fname; a.href = url; document.body.appendChild(a); a.click();\ndocument.body.removeChild(a);\n\t\t\t\tif(URL.revokeObjectURL && typeof setTimeout !== 'undefined') setTimeout(function() { URL.revokeObjectURL(url); }, 60000);\n\t\t\t\treturn url;\n\t\t\t}\n\t\t}\n\t}\n\t// $FlowIgnore\n\tif(typeof $ !== 'undefined' && typeof File !== 'undefined' && typeof Folder !== 'undefined') try { // extendscript\n\t\t// $FlowIgnore\n\t\tvar out = File(fname); out.open(\"w\"); out.encoding = \"binary\";\n\t\tif(Array.isArray(payload)) payload = a2s(payload);\n\t\tout.write(payload); out.close(); return payload;\n\t} catch(e) { if(!e.message || !e.message.match(/onstruct/)) throw e; }\n\tthrow new Error(\"cannot save file \" + fname);\n}\n\n/* read binary data from file */\nfunction read_binary(path) {\n\tif(typeof _fs !== 'undefined') return _fs.readFileSync(path);\n\t// $FlowIgnore\n\tif(typeof $ !== 'undefined' && typeof File !== 'undefined' && typeof Folder !== 'undefined') try { // extendscript\n\t\t// $FlowIgnore\n\t\tvar infile = File(path); infile.open(\"r\"); infile.encoding = \"binary\";\n\t\tvar data = infile.read(); infile.close();\n\t\treturn data;\n\t} catch(e) { if(!e.message || !e.message.match(/onstruct/)) throw e; }\n\tthrow new Error(\"Cannot access file \" + path);\n}\nfunction keys(o) {\n\tvar ks = Object.keys(o), o2 = [];\n\tfor(var i = 0; i < ks.length; ++i) if(o.hasOwnProperty(ks[i])) o2.push(ks[i]);\n\treturn o2;\n}\n\nfunction evert_key(obj, key) {\n\tvar o = ([]), K = keys(obj);\n\tfor(var i = 0; i !== K.length; ++i) if(o[obj[K[i]][key]] == null) o[obj[K[i]][key]] = K[i];\n\treturn o;\n}\n\nfunction evert(obj) {\n\tvar o = ([]), K = keys(obj);\n\tfor(var i = 0; i !== K.length; ++i) o[obj[K[i]]] = K[i];\n\treturn o;\n}\n\nfunction evert_num(obj) {\n\tvar o = ([]), K = keys(obj);\n\tfor(var i = 0; i !== K.length; ++i) o[obj[K[i]]] = parseInt(K[i],10);\n\treturn o;\n}\n\nfunction evert_arr(obj) {\n\tvar o = ([]), K = keys(obj);\n\tfor(var i = 0; i !== K.length; ++i) {\n\t\tif(o[obj[K[i]]] == null) o[obj[K[i]]] = [];\n\t\to[obj[K[i]]].push(K[i]);\n\t}\n\treturn o;\n}\n\nvar basedate = new Date(1899, 11, 30, 0, 0, 0); // 2209161600000\nvar dnthresh = basedate.getTime() + (new Date().getTimezoneOffset() - basedate.getTimezoneOffset()) * 60000;\nfunction datenum(v, date1904) {\n\tvar epoch = v.getTime();\n\tif(date1904) epoch -= 1462*24*60*60*1000;\n\treturn (epoch - dnthresh) / (24 * 60 * 60 * 1000);\n}\nfunction numdate(v) {\n\tvar out = new Date();\n\tout.setTime(v * 24 * 60 * 60 * 1000 + dnthresh);\n\treturn out;\n}\n\n/* ISO 8601 Duration */\nfunction parse_isodur(s) {\n\tvar sec = 0, mt = 0, time = false;\n\tvar m = s.match(/P([0-9\\.]+Y)?([0-9\\.]+M)?([0-9\\.]+D)?T([0-9\\.]+H)?([0-9\\.]+M)?([0-9\\.]+S)?/);\n\tif(!m) throw new Error(\"|\" + s + \"| is not an ISO8601 Duration\");\n\tfor(var i = 1; i != m.length; ++i) {\n\t\tif(!m[i]) continue;\n\t\tmt = 1;\n\t\tif(i > 3) time = true;\n\t\tswitch(m[i].slice(m[i].length-1)) {\n\t\t\tcase 'Y':\n\t\t\t\tthrow new Error(\"Unsupported ISO Duration Field: \" + m[i].slice(m[i].length-1));\n\t\t\tcase 'D': mt *= 24;\n\t\t\t\t/* falls through */\n\t\t\tcase 'H': mt *= 60;\n\t\t\t\t/* falls through */\n\t\t\tcase 'M':\n\t\t\t\tif(!time) throw new Error(\"Unsupported ISO Duration Field: M\");\n\t\t\t\telse mt *= 60;\n\t\t\t\t/* falls through */\n\t\t\tcase 'S': break;\n\t\t}\n\t\tsec += mt * parseInt(m[i], 10);\n\t}\n\treturn sec;\n}\n\nvar good_pd_date = new Date('2017-02-19T19:06:09.000Z');\nif(isNaN(good_pd_date.getFullYear())) good_pd_date = new Date('2/19/17');\nvar good_pd = good_pd_date.getFullYear() == 2017;\n/* parses a date as a local date */\nfunction parseDate(str, fixdate) {\n\tvar d = new Date(str);\n\tif(good_pd) {\nif(fixdate > 0) d.setTime(d.getTime() + d.getTimezoneOffset() * 60 * 1000);\n\t\telse if(fixdate < 0) d.setTime(d.getTime() - d.getTimezoneOffset() * 60 * 1000);\n\t\treturn d;\n\t}\n\tif(str instanceof Date) return str;\n\tif(good_pd_date.getFullYear() == 1917 && !isNaN(d.getFullYear())) {\n\t\tvar s = d.getFullYear();\n\t\tif(str.indexOf(\"\" + s) > -1) return d;\n\t\td.setFullYear(d.getFullYear() + 100); return d;\n\t}\n\tvar n = str.match(/\\d+/g)||[\"2017\",\"2\",\"19\",\"0\",\"0\",\"0\"];\n\tvar out = new Date(+n[0], +n[1] - 1, +n[2], (+n[3]||0), (+n[4]||0), (+n[5]||0));\n\tif(str.indexOf(\"Z\") > -1) out = new Date(out.getTime() - out.getTimezoneOffset() * 60 * 1000);\n\treturn out;\n}\n\nfunction cc2str(arr) {\n\tvar o = \"\";\n\tfor(var i = 0; i != arr.length; ++i) o += String.fromCharCode(arr[i]);\n\treturn o;\n}\n\nfunction dup(o) {\n\tif(typeof JSON != 'undefined' && !Array.isArray(o)) return JSON.parse(JSON.stringify(o));\n\tif(typeof o != 'object' || o == null) return o;\n\tif(o instanceof Date) return new Date(o.getTime());\n\tvar out = {};\n\tfor(var k in o) if(o.hasOwnProperty(k)) out[k] = dup(o[k]);\n\treturn out;\n}\n\nfunction fill(c,l) { var o = \"\"; while(o.length < l) o+=c; return o; }\n\n/* TODO: stress test */\nfunction fuzzynum(s) {\n\tvar v = Number(s);\n\tif(!isNaN(v)) return v;\n\tvar wt = 1;\n\tvar ss = s.replace(/([\\d]),([\\d])/g,\"$1$2\").replace(/[$]/g,\"\").replace(/[%]/g, function() { wt *= 100; return \"\";});\n\tif(!isNaN(v = Number(ss))) return v / wt;\n\tss = ss.replace(/[(](.*)[)]/,function($$, $1) { wt = -wt; return $1;});\n\tif(!isNaN(v = Number(ss))) return v / wt;\n\treturn v;\n}\nfunction fuzzydate(s) {\n\tvar o = new Date(s), n = new Date(NaN);\n\tvar y = o.getYear(), m = o.getMonth(), d = o.getDate();\n\tif(isNaN(d)) return n;\n\tif(y < 0 || y > 8099) return n;\n\tif((m > 0 || d > 1) && y != 101) return o;\n\tif(s.toLowerCase().match(/jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec/)) return o;\n\tif(s.match(/[^-0-9:,\\/\\\\]/)) return n;\n\treturn o;\n}\n\nvar safe_split_regex = \"abacaba\".split(/(:?b)/i).length == 5;\nfunction split_regex(str, re, def) {\n\tif(safe_split_regex || typeof re == \"string\") return str.split(re);\n\tvar p = str.split(re), o = [p[0]];\n\tfor(var i = 1; i < p.length; ++i) { o.push(def); o.push(p[i]); }\n\treturn o;\n}\nfunction getdatastr(data) {\n\tif(!data) return null;\n\tif(data.data) return debom(data.data);\n\tif(data.asNodeBuffer && has_buf) return debom(data.asNodeBuffer().toString('binary'));\n\tif(data.asBinary) return debom(data.asBinary());\n\tif(data._data && data._data.getContent) return debom(cc2str(Array.prototype.slice.call(data._data.getContent(),0)));\n\treturn null;\n}\n\nfunction getdatabin(data) {\n\tif(!data) return null;\n\tif(data.data) return char_codes(data.data);\n\tif(data.asNodeBuffer && has_buf) return data.asNodeBuffer();\n\tif(data._data && data._data.getContent) {\n\t\tvar o = data._data.getContent();\n\t\tif(typeof o == \"string\") return char_codes(o);\n\t\treturn Array.prototype.slice.call(o);\n\t}\n\treturn null;\n}\n\nfunction getdata(data) { return (data && data.name.slice(-4) === \".bin\") ? getdatabin(data) : getdatastr(data); }\n\n/* Part 2 Section 10.1.2 \"Mapping Content Types\" Names are case-insensitive */\n/* OASIS does not comment on filename case sensitivity */\nfunction safegetzipfile(zip, file) {\n\tvar k = keys(zip.files);\n\tvar f = file.toLowerCase(), g = f.replace(/\\//g,'\\\\');\n\tfor(var i=0; i\\/]+)\\s*=\\s*((?:\")([^\"]*)(?:\")|(?:')([^']*)(?:')|([^'\">\\s]+))/g;\nvar tagregex=/<[\\/\\?]?[a-zA-Z0-9:]+(?:\\s+[^\"\\s?>\\/]+\\s*=\\s*(?:\"[^\"]*\"|'[^']*'|[^'\">\\s=]+))*\\s?[\\/\\?]?>/g;\nif(!(XML_HEADER.match(tagregex))) tagregex = /<[^>]*>/g;\nvar nsregex=/<\\w*:/, nsregex2 = /<(\\/?)\\w+:/;\nfunction parsexmltag(tag, skip_root) {\n\tvar z = ({});\n\tvar eq = 0, c = 0;\n\tfor(; eq !== tag.length; ++eq) if((c = tag.charCodeAt(eq)) === 32 || c === 10 || c === 13) break;\n\tif(!skip_root) z[0] = tag.slice(0, eq);\n\tif(eq === tag.length) return z;\n\tvar m = tag.match(attregexg), j=0, v=\"\", i=0, q=\"\", cc=\"\", quot = 1;\n\tif(m) for(i = 0; i != m.length; ++i) {\n\t\tcc = m[i];\n\t\tfor(c=0; c != cc.length; ++c) if(cc.charCodeAt(c) === 61) break;\n\t\tq = cc.slice(0,c).trim();\n\t\twhile(cc.charCodeAt(c+1) == 32) ++c;\n\t\tquot = ((eq=cc.charCodeAt(c+1)) == 34 || eq == 39) ? 1 : 0;\n\t\tv = cc.slice(c+1+quot, cc.length-quot);\n\t\tfor(j=0;j!=q.length;++j) if(q.charCodeAt(j) === 58) break;\n\t\tif(j===q.length) {\n\t\t\tif(q.indexOf(\"_\") > 0) q = q.slice(0, q.indexOf(\"_\")); // from ods\n\t\t\tz[q] = v;\n\t\t\tz[q.toLowerCase()] = v;\n\t\t}\n\t\telse {\n\t\t\tvar k = (j===5 && q.slice(0,5)===\"xmlns\"?\"xmlns\":\"\")+q.slice(j+1);\n\t\t\tif(z[k] && q.slice(j-3,j) == \"ext\") continue; // from ods\n\t\t\tz[k] = v;\n\t\t\tz[k.toLowerCase()] = v;\n\t\t}\n\t}\n\treturn z;\n}\nfunction strip_ns(x) { return x.replace(nsregex2, \"<$1\"); }\n\nvar encodings = {\n\t'"': '\"',\n\t''': \"'\",\n\t'>': '>',\n\t'<': '<',\n\t'&': '&'\n};\nvar rencoding = evert(encodings);\n//var rencstr = \"&<>'\\\"\".split(\"\");\n\n// TODO: CP remap (need to read file version to determine OS)\nvar unescapexml = (function() {\n\t/* 22.4.2.4 bstr (Basic String) */\n\tvar encregex = /&(?:quot|apos|gt|lt|amp|#x?([\\da-fA-F]+));/g, coderegex = /_x([\\da-fA-F]{4})_/g;\n\treturn function unescapexml(text) {\n\t\tvar s = text + '', i = s.indexOf(\"-1?16:10))||$$; }).replace(coderegex,function(m,c) {return String.fromCharCode(parseInt(c,16));});\n\t\tvar j = s.indexOf(\"]]>\");\n\t\treturn unescapexml(s.slice(0, i)) + s.slice(i+9,j) + unescapexml(s.slice(j+3));\n\t};\n})();\n\nvar decregex=/[&<>'\"]/g, charegex = /[\\u0000-\\u0008\\u000b-\\u001f]/g;\nfunction escapexml(text){\n\tvar s = text + '';\n\treturn s.replace(decregex, function(y) { return rencoding[y]; }).replace(charegex,function(s) { return \"_x\" + (\"000\"+s.charCodeAt(0).toString(16)).slice(-4) + \"_\";});\n}\nfunction escapexmltag(text){ return escapexml(text).replace(/ /g,\"_x0020_\"); }\n\nvar htmlcharegex = /[\\u0000-\\u001f]/g;\nfunction escapehtml(text){\n\tvar s = text + '';\n\treturn s.replace(decregex, function(y) { return rencoding[y]; }).replace(/\\n/g, \"
\").replace(htmlcharegex,function(s) { return \"&#x\" + (\"000\"+s.charCodeAt(0).toString(16)).slice(-4) + \";\"; });\n}\n\nfunction escapexlml(text){\n\tvar s = text + '';\n\treturn s.replace(decregex, function(y) { return rencoding[y]; }).replace(htmlcharegex,function(s) { return \"&#x\" + (s.charCodeAt(0).toString(16)).toUpperCase() + \";\"; });\n}\n\n/* TODO: handle codepages */\nvar xlml_fixstr = (function() {\n\tvar entregex = /&#(\\d+);/g;\n\tfunction entrepl($$,$1) { return String.fromCharCode(parseInt($1,10)); }\n\treturn function xlml_fixstr(str) { return str.replace(entregex,entrepl); };\n})();\nvar xlml_unfixstr = (function() {\n\treturn function xlml_unfixstr(str) { return str.replace(/(\\r\\n|[\\r\\n])/g,\"\\ \"); };\n})();\n\nfunction parsexmlbool(value) {\n\tswitch(value) {\n\t\tcase 1: case true: case '1': case 'true': case 'TRUE': return true;\n\t\t/* case '0': case 'false': case 'FALSE':*/\n\t\tdefault: return false;\n\t}\n}\n\nvar utf8read = function utf8reada(orig) {\n\tvar out = \"\", i = 0, c = 0, d = 0, e = 0, f = 0, w = 0;\n\twhile (i < orig.length) {\n\t\tc = orig.charCodeAt(i++);\n\t\tif (c < 128) { out += String.fromCharCode(c); continue; }\n\t\td = orig.charCodeAt(i++);\n\t\tif (c>191 && c<224) { f = ((c & 31) << 6); f |= (d & 63); out += String.fromCharCode(f); continue; }\n\t\te = orig.charCodeAt(i++);\n\t\tif (c < 240) { out += String.fromCharCode(((c & 15) << 12) | ((d & 63) << 6) | (e & 63)); continue; }\n\t\tf = orig.charCodeAt(i++);\n\t\tw = (((c & 7) << 18) | ((d & 63) << 12) | ((e & 63) << 6) | (f & 63))-65536;\n\t\tout += String.fromCharCode(0xD800 + ((w>>>10)&1023));\n\t\tout += String.fromCharCode(0xDC00 + (w&1023));\n\t}\n\treturn out;\n};\n\nvar utf8write = function(orig) {\n\tvar out = [], i = 0, c = 0, d = 0;\n\twhile(i < orig.length) {\n\t\tc = orig.charCodeAt(i++);\n\t\tswitch(true) {\n\t\t\tcase c < 128: out.push(String.fromCharCode(c)); break;\n\t\t\tcase c < 2048:\n\t\t\t\tout.push(String.fromCharCode(192 + (c >> 6)));\n\t\t\t\tout.push(String.fromCharCode(128 + (c & 63)));\n\t\t\t\tbreak;\n\t\t\tcase c >= 55296 && c < 57344:\n\t\t\t\tc -= 55296; d = orig.charCodeAt(i++) - 56320 + (c<<10);\n\t\t\t\tout.push(String.fromCharCode(240 + ((d >>18) & 7)));\n\t\t\t\tout.push(String.fromCharCode(144 + ((d >>12) & 63)));\n\t\t\t\tout.push(String.fromCharCode(128 + ((d >> 6) & 63)));\n\t\t\t\tout.push(String.fromCharCode(128 + (d & 63)));\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tout.push(String.fromCharCode(224 + (c >> 12)));\n\t\t\t\tout.push(String.fromCharCode(128 + ((c >> 6) & 63)));\n\t\t\t\tout.push(String.fromCharCode(128 + (c & 63)));\n\t\t}\n\t}\n\treturn out.join(\"\");\n};\n\nif(has_buf) {\n\tvar utf8readb = function utf8readb(data) {\n\t\tvar out = Buffer.alloc(2*data.length), w, i, j = 1, k = 0, ww=0, c;\n\t\tfor(i = 0; i < data.length; i+=j) {\n\t\t\tj = 1;\n\t\t\tif((c=data.charCodeAt(i)) < 128) w = c;\n\t\t\telse if(c < 224) { w = (c&31)*64+(data.charCodeAt(i+1)&63); j=2; }\n\t\t\telse if(c < 240) { w=(c&15)*4096+(data.charCodeAt(i+1)&63)*64+(data.charCodeAt(i+2)&63); j=3; }\n\t\t\telse { j = 4;\n\t\t\t\tw = (c & 7)*262144+(data.charCodeAt(i+1)&63)*4096+(data.charCodeAt(i+2)&63)*64+(data.charCodeAt(i+3)&63);\n\t\t\t\tw -= 65536; ww = 0xD800 + ((w>>>10)&1023); w = 0xDC00 + (w&1023);\n\t\t\t}\n\t\t\tif(ww !== 0) { out[k++] = ww&255; out[k++] = ww>>>8; ww = 0; }\n\t\t\tout[k++] = w%256; out[k++] = w>>>8;\n\t\t}\n\t\treturn out.slice(0,k).toString('ucs2');\n\t};\n\tvar corpus = \"foo bar baz\\u00e2\\u0098\\u0083\\u00f0\\u009f\\u008d\\u00a3\";\n\tif(utf8read(corpus) == utf8readb(corpus)) utf8read = utf8readb;\n\t// $FlowIgnore\n\tvar utf8readc = function utf8readc(data) { return Buffer_from(data, 'binary').toString('utf8'); };\n\tif(utf8read(corpus) == utf8readc(corpus)) utf8read = utf8readc;\n\n\t// $FlowIgnore\n\tutf8write = function(data) { return Buffer_from(data, 'utf8').toString(\"binary\"); };\n}\n\n// matches ... extracts content\nvar matchtag = (function() {\n\tvar mtcache = ({});\n\treturn function matchtag(f,g) {\n\t\tvar t = f+\"|\"+(g||\"\");\n\t\tif(mtcache[t]) return mtcache[t];\n\t\treturn (mtcache[t] = new RegExp('<(?:\\\\w+:)?'+f+'(?: xml:space=\"preserve\")?(?:[^>]*)>([\\\\s\\\\S]*?)',((g||\"\"))));\n\t};\n})();\n\nvar htmldecode = (function() {\n\tvar entities = [\n\t\t['nbsp', ' '], ['middot', '·'],\n\t\t['quot', '\"'], ['apos', \"'\"], ['gt', '>'], ['lt', '<'], ['amp', '&']\n\t].map(function(x) { return [new RegExp('&' + x[0] + ';', \"g\"), x[1]]; });\n\treturn function htmldecode(str) {\n\t\tvar o = str.replace(/^[\\t\\n\\r ]+/, \"\").replace(/[\\t\\n\\r ]+$/,\"\").replace(/[\\t\\n\\r ]+/g, \" \").replace(/<\\s*[bB][rR]\\s*\\/?>/g,\"\\n\").replace(/<[^>]*>/g,\"\");\n\t\tfor(var i = 0; i < entities.length; ++i) o = o.replace(entities[i][0], entities[i][1]);\n\t\treturn o;\n\t};\n})();\n\nvar vtregex = (function(){ var vt_cache = {};\n\treturn function vt_regex(bt) {\n\t\tif(vt_cache[bt] !== undefined) return vt_cache[bt];\n\t\treturn (vt_cache[bt] = new RegExp(\"<(?:vt:)?\" + bt + \">([\\\\s\\\\S]*?)\", 'g') );\n};})();\nvar vtvregex = /<\\/?(?:vt:)?variant>/g, vtmregex = /<(?:vt:)([^>]*)>([\\s\\S]*)' + g + ''; }\n\nfunction wxt_helper(h) { return keys(h).map(function(k) { return \" \" + k + '=\"' + h[k] + '\"';}).join(\"\"); }\nfunction writextag(f,g,h) { return '<' + f + ((h != null) ? wxt_helper(h) : \"\") + ((g != null) ? (g.match(wtregex)?' xml:space=\"preserve\"' : \"\") + '>' + g + '';}\n\nfunction write_w3cdtf(d, t) { try { return d.toISOString().replace(/\\.\\d*/,\"\"); } catch(e) { if(t) throw e; } return \"\"; }\n\nfunction write_vt(s) {\n\tswitch(typeof s) {\n\t\tcase 'string': return writextag('vt:lpwstr', s);\n\t\tcase 'number': return writextag((s|0)==s?'vt:i4':'vt:r8', String(s));\n\t\tcase 'boolean': return writextag('vt:bool',s?'true':'false');\n\t}\n\tif(s instanceof Date) return writextag('vt:filetime', write_w3cdtf(s));\n\tthrow new Error(\"Unable to serialize \" + s);\n}\n\nvar XMLNS = ({\n\t'dc': 'http://purl.org/dc/elements/1.1/',\n\t'dcterms': 'http://purl.org/dc/terms/',\n\t'dcmitype': 'http://purl.org/dc/dcmitype/',\n\t'mx': 'http://schemas.microsoft.com/office/mac/excel/2008/main',\n\t'r': 'http://schemas.openxmlformats.org/officeDocument/2006/relationships',\n\t'sjs': 'http://schemas.openxmlformats.org/package/2006/sheetjs/core-properties',\n\t'vt': 'http://schemas.openxmlformats.org/officeDocument/2006/docPropsVTypes',\n\t'xsi': 'http://www.w3.org/2001/XMLSchema-instance',\n\t'xsd': 'http://www.w3.org/2001/XMLSchema'\n});\n\nXMLNS.main = [\n\t'http://schemas.openxmlformats.org/spreadsheetml/2006/main',\n\t'http://purl.oclc.org/ooxml/spreadsheetml/main',\n\t'http://schemas.microsoft.com/office/excel/2006/main',\n\t'http://schemas.microsoft.com/office/excel/2006/2'\n];\n\nvar XLMLNS = ({\n\t'o': 'urn:schemas-microsoft-com:office:office',\n\t'x': 'urn:schemas-microsoft-com:office:excel',\n\t'ss': 'urn:schemas-microsoft-com:office:spreadsheet',\n\t'dt': 'uuid:C2F41010-65B3-11d1-A29F-00AA00C14882',\n\t'mv': 'http://macVmlSchemaUri',\n\t'v': 'urn:schemas-microsoft-com:vml',\n\t'html': 'http://www.w3.org/TR/REC-html40'\n});\nfunction read_double_le(b, idx) {\n\tvar s = 1 - 2 * (b[idx + 7] >>> 7);\n\tvar e = ((b[idx + 7] & 0x7f) << 4) + ((b[idx + 6] >>> 4) & 0x0f);\n\tvar m = (b[idx+6]&0x0f);\n\tfor(var i = 5; i >= 0; --i) m = m * 256 + b[idx + i];\n\tif(e == 0x7ff) return m == 0 ? (s * Infinity) : NaN;\n\tif(e == 0) e = -1022;\n\telse { e -= 1023; m += Math.pow(2,52); }\n\treturn s * Math.pow(2, e - 52) * m;\n}\n\nfunction write_double_le(b, v, idx) {\n\tvar bs = ((((v < 0) || (1/v == -Infinity)) ? 1 : 0) << 7), e = 0, m = 0;\n\tvar av = bs ? (-v) : v;\n\tif(!isFinite(av)) { e = 0x7ff; m = isNaN(v) ? 0x6969 : 0; }\n\telse if(av == 0) e = m = 0;\n\telse {\n\t\te = Math.floor(Math.log(av) / Math.LN2);\n\t\tm = av * Math.pow(2, 52 - e);\n\t\tif((e <= -1023) && (!isFinite(m) || (m < Math.pow(2,52)))) { e = -1022; }\n\t\telse { m -= Math.pow(2,52); e+=1023; }\n\t}\n\tfor(var i = 0; i <= 5; ++i, m/=256) b[idx + i] = m & 0xff;\n\tb[idx + 6] = ((e & 0x0f) << 4) | (m & 0xf);\n\tb[idx + 7] = (e >> 4) | bs;\n}\n\nvar __toBuffer = function(bufs) { var x=[],w=10240; for(var i=0;i 0 ? __utf8(b, i+4,i+4+len-1) : \"\";};\nvar ___lpstr = __lpstr;\nvar __cpstr = function(b,i) { var len = __readUInt32LE(b,i); return len > 0 ? __utf8(b, i+4,i+4+len-1) : \"\";};\nvar ___cpstr = __cpstr;\nvar __lpwstr = function(b,i) { var len = 2*__readUInt32LE(b,i); return len > 0 ? __utf8(b, i+4,i+4+len-1) : \"\";};\nvar ___lpwstr = __lpwstr;\nvar __lpp4, ___lpp4;\n__lpp4 = ___lpp4 = function lpp4_(b,i) { var len = __readUInt32LE(b,i); return len > 0 ? __utf16le(b, i+4,i+4+len) : \"\";};\nvar __8lpp4 = function(b,i) { var len = __readUInt32LE(b,i); return len > 0 ? __utf8(b, i+4,i+4+len) : \"\";};\nvar ___8lpp4 = __8lpp4;\nvar __double, ___double;\n__double = ___double = function(b, idx) { return read_double_le(b, idx);};\nvar is_buf = function is_buf_a(a) { return Array.isArray(a); };\n\nif(has_buf) {\n\t__utf16le = function(b,s,e) { if(!Buffer.isBuffer(b)) return ___utf16le(b,s,e); return b.toString('utf16le',s,e).replace(chr0,'')/*.replace(chr1,'!')*/; };\n\t__hexlify = function(b,s,l) { return Buffer.isBuffer(b) ? b.toString('hex',s,s+l) : ___hexlify(b,s,l); };\n\t__lpstr = function lpstr_b(b, i) { if(!Buffer.isBuffer(b)) return ___lpstr(b, i); var len = b.readUInt32LE(i); return len > 0 ? b.toString('utf8',i+4,i+4+len-1) : \"\";};\n\t__cpstr = function cpstr_b(b, i) { if(!Buffer.isBuffer(b)) return ___cpstr(b, i); var len = b.readUInt32LE(i); return len > 0 ? b.toString('utf8',i+4,i+4+len-1) : \"\";};\n\t__lpwstr = function lpwstr_b(b, i) { if(!Buffer.isBuffer(b)) return ___lpwstr(b, i); var len = 2*b.readUInt32LE(i); return b.toString('utf16le',i+4,i+4+len-1);};\n\t__lpp4 = function lpp4_b(b, i) { if(!Buffer.isBuffer(b)) return ___lpp4(b, i); var len = b.readUInt32LE(i); return b.toString('utf16le',i+4,i+4+len);};\n\t__8lpp4 = function lpp4_8b(b, i) { if(!Buffer.isBuffer(b)) return ___8lpp4(b, i); var len = b.readUInt32LE(i); return b.toString('utf8',i+4,i+4+len);};\n\t__utf8 = function utf8_b(b, s, e) { return (Buffer.isBuffer(b)) ? b.toString('utf8',s,e) : ___utf8(b,s,e); };\n\t__toBuffer = function(bufs) { return (bufs[0].length > 0 && Buffer.isBuffer(bufs[0][0])) ? Buffer.concat(bufs[0]) : ___toBuffer(bufs);};\n\tbconcat = function(bufs) { return Buffer.isBuffer(bufs[0]) ? Buffer.concat(bufs) : [].concat.apply([], bufs); };\n\t__double = function double_(b, i) { if(Buffer.isBuffer(b)) return b.readDoubleLE(i); return ___double(b,i); };\n\tis_buf = function is_buf_b(a) { return Buffer.isBuffer(a) || Array.isArray(a); };\n}\n\n/* from js-xls */\nif(typeof cptable !== 'undefined') {\n\t__utf16le = function(b,s,e) { return cptable.utils.decode(1200, b.slice(s,e)).replace(chr0, ''); };\n\t__utf8 = function(b,s,e) { return cptable.utils.decode(65001, b.slice(s,e)); };\n\t__lpstr = function(b,i) { var len = __readUInt32LE(b,i); return len > 0 ? cptable.utils.decode(current_ansi, b.slice(i+4, i+4+len-1)) : \"\";};\n\t__cpstr = function(b,i) { var len = __readUInt32LE(b,i); return len > 0 ? cptable.utils.decode(current_codepage, b.slice(i+4, i+4+len-1)) : \"\";};\n\t__lpwstr = function(b,i) { var len = 2*__readUInt32LE(b,i); return len > 0 ? cptable.utils.decode(1200, b.slice(i+4,i+4+len-1)) : \"\";};\n\t__lpp4 = function(b,i) { var len = __readUInt32LE(b,i); return len > 0 ? cptable.utils.decode(1200, b.slice(i+4,i+4+len)) : \"\";};\n\t__8lpp4 = function(b,i) { var len = __readUInt32LE(b,i); return len > 0 ? cptable.utils.decode(65001, b.slice(i+4,i+4+len)) : \"\";};\n}\n\nvar __readUInt8 = function(b, idx) { return b[idx]; };\nvar __readUInt16LE = function(b, idx) { return (b[idx+1]*(1<<8))+b[idx]; };\nvar __readInt16LE = function(b, idx) { var u = (b[idx+1]*(1<<8))+b[idx]; return (u < 0x8000) ? u : ((0xffff - u + 1) * -1); };\nvar __readUInt32LE = function(b, idx) { return b[idx+3]*(1<<24)+(b[idx+2]<<16)+(b[idx+1]<<8)+b[idx]; };\nvar __readInt32LE = function(b, idx) { return (b[idx+3]<<24)|(b[idx+2]<<16)|(b[idx+1]<<8)|b[idx]; };\nvar __readInt32BE = function(b, idx) { return (b[idx]<<24)|(b[idx+1]<<16)|(b[idx+2]<<8)|b[idx+3]; };\n\nfunction ReadShift(size, t) {\n\tvar o=\"\", oI, oR, oo=[], w, vv, i, loc;\n\tswitch(t) {\n\t\tcase 'dbcs':\n\t\t\tloc = this.l;\n\t\t\tif(has_buf && Buffer.isBuffer(this)) o = this.slice(this.l, this.l+2*size).toString(\"utf16le\");\n\t\t\telse for(i = 0; i < size; ++i) { o+=String.fromCharCode(__readUInt16LE(this, loc)); loc+=2; }\n\t\t\tsize *= 2;\n\t\t\tbreak;\n\n\t\tcase 'utf8': o = __utf8(this, this.l, this.l + size); break;\n\t\tcase 'utf16le': size *= 2; o = __utf16le(this, this.l, this.l + size); break;\n\n\t\tcase 'wstr':\n\t\t\tif(typeof cptable !== 'undefined') o = cptable.utils.decode(current_codepage, this.slice(this.l, this.l+2*size));\n\t\t\telse return ReadShift.call(this, size, 'dbcs');\n\t\t\tsize = 2 * size; break;\n\n\t\t/* [MS-OLEDS] 2.1.4 LengthPrefixedAnsiString */\n\t\tcase 'lpstr-ansi': o = __lpstr(this, this.l); size = 4 + __readUInt32LE(this, this.l); break;\n\t\tcase 'lpstr-cp': o = __cpstr(this, this.l); size = 4 + __readUInt32LE(this, this.l); break;\n\t\t/* [MS-OLEDS] 2.1.5 LengthPrefixedUnicodeString */\n\t\tcase 'lpwstr': o = __lpwstr(this, this.l); size = 4 + 2 * __readUInt32LE(this, this.l); break;\n\t\t/* [MS-OFFCRYPTO] 2.1.2 Length-Prefixed Padded Unicode String (UNICODE-LP-P4) */\n\t\tcase 'lpp4': size = 4 + __readUInt32LE(this, this.l); o = __lpp4(this, this.l); if(size & 0x02) size += 2; break;\n\t\t/* [MS-OFFCRYPTO] 2.1.3 Length-Prefixed UTF-8 String (UTF-8-LP-P4) */\n\t\tcase '8lpp4': size = 4 + __readUInt32LE(this, this.l); o = __8lpp4(this, this.l); if(size & 0x03) size += 4 - (size & 0x03); break;\n\n\t\tcase 'cstr': size = 0; o = \"\";\n\t\t\twhile((w=__readUInt8(this, this.l + size++))!==0) oo.push(_getchar(w));\n\t\t\to = oo.join(\"\"); break;\n\t\tcase '_wstr': size = 0; o = \"\";\n\t\t\twhile((w=__readUInt16LE(this,this.l +size))!==0){oo.push(_getchar(w));size+=2;}\n\t\t\tsize+=2; o = oo.join(\"\"); break;\n\n\t\t/* sbcs and dbcs support continue records in the SST way TODO codepages */\n\t\tcase 'dbcs-cont': o = \"\"; loc = this.l;\n\t\t\tfor(i = 0; i < size; ++i) {\n\t\t\t\tif(this.lens && this.lens.indexOf(loc) !== -1) {\n\t\t\t\t\tw = __readUInt8(this, loc);\n\t\t\t\t\tthis.l = loc + 1;\n\t\t\t\t\tvv = ReadShift.call(this, size-i, w ? 'dbcs-cont' : 'sbcs-cont');\n\t\t\t\t\treturn oo.join(\"\") + vv;\n\t\t\t\t}\n\t\t\t\too.push(_getchar(__readUInt16LE(this, loc)));\n\t\t\t\tloc+=2;\n\t\t\t} o = oo.join(\"\"); size *= 2; break;\n\n\t\tcase 'cpstr':\n\t\t\tif(typeof cptable !== 'undefined') {\n\t\t\t\to = cptable.utils.decode(current_codepage, this.slice(this.l, this.l + size));\n\t\t\t\tbreak;\n\t\t\t}\n\t\t/* falls through */\n\t\tcase 'sbcs-cont': o = \"\"; loc = this.l;\n\t\t\tfor(i = 0; i != size; ++i) {\n\t\t\t\tif(this.lens && this.lens.indexOf(loc) !== -1) {\n\t\t\t\t\tw = __readUInt8(this, loc);\n\t\t\t\t\tthis.l = loc + 1;\n\t\t\t\t\tvv = ReadShift.call(this, size-i, w ? 'dbcs-cont' : 'sbcs-cont');\n\t\t\t\t\treturn oo.join(\"\") + vv;\n\t\t\t\t}\n\t\t\t\too.push(_getchar(__readUInt8(this, loc)));\n\t\t\t\tloc+=1;\n\t\t\t} o = oo.join(\"\"); break;\n\n\t\tdefault:\n\tswitch(size) {\n\t\tcase 1: oI = __readUInt8(this, this.l); this.l++; return oI;\n\t\tcase 2: oI = (t === 'i' ? __readInt16LE : __readUInt16LE)(this, this.l); this.l += 2; return oI;\n\t\tcase 4: case -4:\n\t\t\tif(t === 'i' || ((this[this.l+3] & 0x80)===0)) { oI = ((size > 0) ? __readInt32LE : __readInt32BE)(this, this.l); this.l += 4; return oI; }\n\t\t\telse { oR = __readUInt32LE(this, this.l); this.l += 4; } return oR;\n\t\tcase 8: case -8:\n\t\t\tif(t === 'f') {\n\t\t\t\tif(size == 8) oR = __double(this, this.l);\n\t\t\t\telse oR = __double([this[this.l+7],this[this.l+6],this[this.l+5],this[this.l+4],this[this.l+3],this[this.l+2],this[this.l+1],this[this.l+0]], 0);\n\t\t\t\tthis.l += 8; return oR;\n\t\t\t} else size = 8;\n\t\t/* falls through */\n\t\tcase 16: o = __hexlify(this, this.l, size); break;\n\t}}\n\tthis.l+=size; return o;\n}\n\nvar __writeUInt32LE = function(b, val, idx) { b[idx] = (val & 0xFF); b[idx+1] = ((val >>> 8) & 0xFF); b[idx+2] = ((val >>> 16) & 0xFF); b[idx+3] = ((val >>> 24) & 0xFF); };\nvar __writeInt32LE = function(b, val, idx) { b[idx] = (val & 0xFF); b[idx+1] = ((val >> 8) & 0xFF); b[idx+2] = ((val >> 16) & 0xFF); b[idx+3] = ((val >> 24) & 0xFF); };\nvar __writeUInt16LE = function(b, val, idx) { b[idx] = (val & 0xFF); b[idx+1] = ((val >>> 8) & 0xFF); };\n\nfunction WriteShift(t, val, f) {\n\tvar size = 0, i = 0;\n\tif(f === 'dbcs') {\nfor(i = 0; i != val.length; ++i) __writeUInt16LE(this, val.charCodeAt(i), this.l + 2 * i);\n\t\tsize = 2 * val.length;\n\t} else if(f === 'sbcs') {\n\t\t/* TODO: codepage */\nval = val.replace(/[^\\x00-\\x7F]/g, \"_\");\nfor(i = 0; i != val.length; ++i) this[this.l + i] = (val.charCodeAt(i) & 0xFF);\n\t\tsize = val.length;\n\t} else if(f === 'hex') {\n\t\tfor(; i < t; ++i) {\nthis[this.l++] = (parseInt(val.slice(2*i, 2*i+2), 16)||0);\n\t\t} return this;\n\t} else if(f === 'utf16le') {\nvar end = Math.min(this.l + t, this.length);\n\t\t\tfor(i = 0; i < Math.min(val.length, t); ++i) {\n\t\t\t\tvar cc = val.charCodeAt(i);\n\t\t\t\tthis[this.l++] = (cc & 0xff);\n\t\t\t\tthis[this.l++] = (cc >> 8);\n\t\t\t}\n\t\t\twhile(this.l < end) this[this.l++] = 0;\n\t\t\treturn this;\n\t} else switch(t) {\n\t\tcase 1: size = 1; this[this.l] = val&0xFF; break;\n\t\tcase 2: size = 2; this[this.l] = val&0xFF; val >>>= 8; this[this.l+1] = val&0xFF; break;\n\t\tcase 3: size = 3; this[this.l] = val&0xFF; val >>>= 8; this[this.l+1] = val&0xFF; val >>>= 8; this[this.l+2] = val&0xFF; break;\n\t\tcase 4: size = 4; __writeUInt32LE(this, val, this.l); break;\n\t\tcase 8: size = 8; if(f === 'f') { write_double_le(this, val, this.l); break; }\n\t\t/* falls through */\n\t\tcase 16: break;\n\t\tcase -4: size = 4; __writeInt32LE(this, val, this.l); break;\n\t}\n\tthis.l += size; return this;\n}\n\nfunction CheckField(hexstr, fld) {\n\tvar m = __hexlify(this,this.l,hexstr.length>>1);\n\tif(m !== hexstr) throw new Error(fld + 'Expected ' + hexstr + ' saw ' + m);\n\tthis.l += hexstr.length>>1;\n}\n\nfunction prep_blob(blob, pos) {\n\tblob.l = pos;\n\tblob.read_shift = ReadShift;\n\tblob.chk = CheckField;\n\tblob.write_shift = WriteShift;\n}\n\nfunction parsenoop(blob, length) { blob.l += length; }\n\nfunction new_buf(sz) {\n\tvar o = new_raw_buf(sz);\n\tprep_blob(o, 0);\n\treturn o;\n}\n\n/* [MS-XLSB] 2.1.4 Record */\nfunction recordhopper(data, cb, opts) {\n\tif(!data) return;\n\tvar tmpbyte, cntbyte, length;\n\tprep_blob(data, data.l || 0);\n\tvar L = data.length, RT = 0, tgt = 0;\n\twhile(data.l < L) {\n\t\tRT = data.read_shift(1);\n\t\tif(RT & 0x80) RT = (RT & 0x7F) + ((data.read_shift(1) & 0x7F)<<7);\n\t\tvar R = XLSBRecordEnum[RT] || XLSBRecordEnum[0xFFFF];\n\t\ttmpbyte = data.read_shift(1);\n\t\tlength = tmpbyte & 0x7F;\n\t\tfor(cntbyte = 1; cntbyte <4 && (tmpbyte & 0x80); ++cntbyte) length += ((tmpbyte = data.read_shift(1)) & 0x7F)<<(7*cntbyte);\n\t\ttgt = data.l + length;\n\t\tvar d = (R.f||parsenoop)(data, length, opts);\n\t\tdata.l = tgt;\n\t\tif(cb(d, R.n, RT)) return;\n\t}\n}\n\n/* control buffer usage for fixed-length buffers */\nfunction buf_array() {\n\tvar bufs = [], blksz = has_buf ? 256 : 2048;\n\tvar newblk = function ba_newblk(sz) {\n\t\tvar o = (new_buf(sz));\n\t\tprep_blob(o, 0);\n\t\treturn o;\n\t};\n\n\tvar curbuf = newblk(blksz);\n\n\tvar endbuf = function ba_endbuf() {\n\t\tif(!curbuf) return;\n\t\tif(curbuf.length > curbuf.l) { curbuf = curbuf.slice(0, curbuf.l); curbuf.l = curbuf.length; }\n\t\tif(curbuf.length > 0) bufs.push(curbuf);\n\t\tcurbuf = null;\n\t};\n\n\tvar next = function ba_next(sz) {\n\t\tif(curbuf && (sz < (curbuf.length - curbuf.l))) return curbuf;\n\t\tendbuf();\n\t\treturn (curbuf = newblk(Math.max(sz+1, blksz)));\n\t};\n\n\tvar end = function ba_end() {\n\t\tendbuf();\n\t\treturn __toBuffer([bufs]);\n\t};\n\n\tvar push = function ba_push(buf) { endbuf(); curbuf = buf; if(curbuf.l == null) curbuf.l = curbuf.length; next(blksz); };\n\n\treturn ({ next:next, push:push, end:end, _bufs:bufs });\n}\n\nfunction write_record(ba, type, payload, length) {\n\tvar t = +XLSBRE[type], l;\n\tif(isNaN(t)) return; // TODO: throw something here?\n\tif(!length) length = XLSBRecordEnum[t].p || (payload||[]).length || 0;\n\tl = 1 + (t >= 0x80 ? 1 : 0) + 1/* + length*/;\n\tif(length >= 0x80) ++l; if(length >= 0x4000) ++l; if(length >= 0x200000) ++l;\n\tvar o = ba.next(l);\n\tif(t <= 0x7F) o.write_shift(1, t);\n\telse {\n\t\to.write_shift(1, (t & 0x7F) + 0x80);\n\t\to.write_shift(1, (t >> 7));\n\t}\n\tfor(var i = 0; i != 4; ++i) {\n\t\tif(length >= 0x80) { o.write_shift(1, (length & 0x7F)+0x80); length >>= 7; }\n\t\telse { o.write_shift(1, length); break; }\n\t}\n\tif(length > 0 && is_buf(payload)) ba.push(payload);\n}\n/* XLS ranges enforced */\nfunction shift_cell_xls(cell, tgt, opts) {\n\tvar out = dup(cell);\n\tif(tgt.s) {\n\t\tif(out.cRel) out.c += tgt.s.c;\n\t\tif(out.rRel) out.r += tgt.s.r;\n\t} else {\n\t\tif(out.cRel) out.c += tgt.c;\n\t\tif(out.rRel) out.r += tgt.r;\n\t}\n\tif(!opts || opts.biff < 12) {\n\t\twhile(out.c >= 0x100) out.c -= 0x100;\n\t\twhile(out.r >= 0x10000) out.r -= 0x10000;\n\t}\n\treturn out;\n}\n\nfunction shift_range_xls(cell, range, opts) {\n\tvar out = dup(cell);\n\tout.s = shift_cell_xls(out.s, range.s, opts);\n\tout.e = shift_cell_xls(out.e, range.s, opts);\n\treturn out;\n}\n\nfunction encode_cell_xls(c, biff) {\n\tif(c.cRel && c.c < 0) { c = dup(c); c.c += (biff > 8) ? 0x4000 : 0x100; }\n\tif(c.rRel && c.r < 0) { c = dup(c); c.r += (biff > 8) ? 0x100000 : ((biff > 5) ? 0x10000 : 0x4000); }\n\tvar s = encode_cell(c);\n\tif(c.cRel === 0) s = fix_col(s);\n\tif(c.rRel === 0) s = fix_row(s);\n\treturn s;\n}\n\nfunction encode_range_xls(r, opts) {\n\tif(r.s.r == 0 && !r.s.rRel) {\n\t\tif(r.e.r == (opts.biff >= 12 ? 0xFFFFF : (opts.biff >= 8 ? 0x10000 : 0x4000)) && !r.e.rRel) {\n\t\t\treturn (r.s.cRel ? \"\" : \"$\") + encode_col(r.s.c) + \":\" + (r.e.cRel ? \"\" : \"$\") + encode_col(r.e.c);\n\t\t}\n\t}\n\tif(r.s.c == 0 && !r.s.cRel) {\n\t\tif(r.e.c == (opts.biff >= 12 ? 0xFFFF : 0xFF) && !r.e.cRel) {\n\t\t\treturn (r.s.rRel ? \"\" : \"$\") + encode_row(r.s.r) + \":\" + (r.e.rRel ? \"\" : \"$\") + encode_row(r.e.r);\n\t\t}\n\t}\n\treturn encode_cell_xls(r.s, opts.biff) + \":\" + encode_cell_xls(r.e, opts.biff);\n}\nvar OFFCRYPTO = {};\n\nvar make_offcrypto = function(O, _crypto) {\n\tvar crypto;\n\tif(typeof _crypto !== 'undefined') crypto = _crypto;\n\telse if(typeof require !== 'undefined') {\n\t\ttry { crypto = require('crypto'); }\n\t\tcatch(e) { crypto = null; }\n\t}\n\n\tO.rc4 = function(key, data) {\n\t\tvar S = new Array(256);\n\t\tvar c = 0, i = 0, j = 0, t = 0;\n\t\tfor(i = 0; i != 256; ++i) S[i] = i;\n\t\tfor(i = 0; i != 256; ++i) {\n\t\t\tj = (j + S[i] + (key[i%key.length]).charCodeAt(0))&255;\n\t\t\tt = S[i]; S[i] = S[j]; S[j] = t;\n\t\t}\n\t\t// $FlowIgnore\n\t\ti = j = 0; var out = Buffer(data.length);\n\t\tfor(c = 0; c != data.length; ++c) {\n\t\t\ti = (i + 1)&255;\n\t\t\tj = (j + S[i])%256;\n\t\t\tt = S[i]; S[i] = S[j]; S[j] = t;\n\t\t\tout[c] = (data[c] ^ S[(S[i]+S[j])&255]);\n\t\t}\n\t\treturn out;\n\t};\n\n\tO.md5 = function(hex) {\n\t\tif(!crypto) throw new Error(\"Unsupported crypto\");\n\t\treturn crypto.createHash('md5').update(hex).digest('hex');\n\t};\n};\n/*global crypto:true */\nmake_offcrypto(OFFCRYPTO, typeof crypto !== \"undefined\" ? crypto : undefined);\n\nfunction decode_row(rowstr) { return parseInt(unfix_row(rowstr),10) - 1; }\nfunction encode_row(row) { return \"\" + (row + 1); }\nfunction fix_row(cstr) { return cstr.replace(/([A-Z]|^)(\\d+)$/,\"$1$$$2\"); }\nfunction unfix_row(cstr) { return cstr.replace(/\\$(\\d+)$/,\"$1\"); }\n\nfunction decode_col(colstr) { var c = unfix_col(colstr), d = 0, i = 0; for(; i !== c.length; ++i) d = 26*d + c.charCodeAt(i) - 64; return d - 1; }\nfunction encode_col(col) { var s=\"\"; for(++col; col; col=Math.floor((col-1)/26)) s = String.fromCharCode(((col-1)%26) + 65) + s; return s; }\nfunction fix_col(cstr) { return cstr.replace(/^([A-Z])/,\"$$$1\"); }\nfunction unfix_col(cstr) { return cstr.replace(/^\\$([A-Z])/,\"$1\"); }\n\nfunction split_cell(cstr) { return cstr.replace(/(\\$?[A-Z]*)(\\$?\\d*)/,\"$1,$2\").split(\",\"); }\nfunction decode_cell(cstr) { var splt = split_cell(cstr); return { c:decode_col(splt[0]), r:decode_row(splt[1]) }; }\nfunction encode_cell(cell) { return encode_col(cell.c) + encode_row(cell.r); }\nfunction decode_range(range) { var x =range.split(\":\").map(decode_cell); return {s:x[0],e:x[x.length-1]}; }\nfunction encode_range(cs,ce) {\n\tif(typeof ce === 'undefined' || typeof ce === 'number') {\nreturn encode_range(cs.s, cs.e);\n\t}\nif(typeof cs !== 'string') cs = encode_cell((cs));\n\tif(typeof ce !== 'string') ce = encode_cell((ce));\nreturn cs == ce ? cs : cs + \":\" + ce;\n}\n\nfunction safe_decode_range(range) {\n\tvar o = {s:{c:0,r:0},e:{c:0,r:0}};\n\tvar idx = 0, i = 0, cc = 0;\n\tvar len = range.length;\n\tfor(idx = 0; i < len; ++i) {\n\t\tif((cc=range.charCodeAt(i)-64) < 1 || cc > 26) break;\n\t\tidx = 26*idx + cc;\n\t}\n\to.s.c = --idx;\n\n\tfor(idx = 0; i < len; ++i) {\n\t\tif((cc=range.charCodeAt(i)-48) < 0 || cc > 9) break;\n\t\tidx = 10*idx + cc;\n\t}\n\to.s.r = --idx;\n\n\tif(i === len || range.charCodeAt(++i) === 58) { o.e.c=o.s.c; o.e.r=o.s.r; return o; }\n\n\tfor(idx = 0; i != len; ++i) {\n\t\tif((cc=range.charCodeAt(i)-64) < 1 || cc > 26) break;\n\t\tidx = 26*idx + cc;\n\t}\n\to.e.c = --idx;\n\n\tfor(idx = 0; i != len; ++i) {\n\t\tif((cc=range.charCodeAt(i)-48) < 0 || cc > 9) break;\n\t\tidx = 10*idx + cc;\n\t}\n\to.e.r = --idx;\n\treturn o;\n}\n\nfunction safe_format_cell(cell, v) {\n\tvar q = (cell.t == 'd' && v instanceof Date);\n\tif(cell.z != null) try { return (cell.w = SSF.format(cell.z, q ? datenum(v) : v)); } catch(e) { }\n\ttry { return (cell.w = SSF.format((cell.XF||{}).numFmtId||(q ? 14 : 0), q ? datenum(v) : v)); } catch(e) { return ''+v; }\n}\n\nfunction format_cell(cell, v, o) {\n\tif(cell == null || cell.t == null || cell.t == 'z') return \"\";\n\tif(cell.w !== undefined) return cell.w;\n\tif(cell.t == 'd' && !cell.z && o && o.dateNF) cell.z = o.dateNF;\n\tif(v == undefined) return safe_format_cell(cell, cell.v);\n\treturn safe_format_cell(cell, v);\n}\n\nfunction sheet_to_workbook(sheet, opts) {\n\tvar n = opts && opts.sheet ? opts.sheet : \"Sheet1\";\n\tvar sheets = {}; sheets[n] = sheet;\n\treturn { SheetNames: [n], Sheets: sheets };\n}\n\nfunction sheet_add_aoa(_ws, data, opts) {\n\tvar o = opts || {};\n\tvar dense = _ws ? Array.isArray(_ws) : o.dense;\n\tif(DENSE != null && dense == null) dense = DENSE;\n\tvar ws = _ws || (dense ? ([]) : ({}));\n\tvar _R = 0, _C = 0;\n\tif(ws && o.origin != null) {\n\t\tif(typeof o.origin == 'number') _R = o.origin;\n\t\telse {\n\t\t\tvar _origin = typeof o.origin == \"string\" ? decode_cell(o.origin) : o.origin;\n\t\t\t_R = _origin.r; _C = _origin.c;\n\t\t}\n\t}\n\tvar range = ({s: {c:10000000, r:10000000}, e: {c:0, r:0}});\n\tif(ws['!ref']) {\n\t\tvar _range = safe_decode_range(ws['!ref']);\n\t\trange.s.c = _range.s.c;\n\t\trange.s.r = _range.s.r;\n\t\trange.e.c = Math.max(range.e.c, _range.e.c);\n\t\trange.e.r = Math.max(range.e.r, _range.e.r);\n\t\tif(_R == -1) range.e.r = _R = _range.e.r + 1;\n\t}\n\tfor(var R = 0; R != data.length; ++R) {\n\t\tif(!data[R]) continue;\n\t\tif(!Array.isArray(data[R])) throw new Error(\"aoa_to_sheet expects an array of arrays\");\n\t\tfor(var C = 0; C != data[R].length; ++C) {\n\t\t\tif(typeof data[R][C] === 'undefined') continue;\n\t\t\tvar cell = ({v: data[R][C] });\n\t\t\tvar __R = _R + R, __C = _C + C;\n\t\t\tif(range.s.r > __R) range.s.r = __R;\n\t\t\tif(range.s.c > __C) range.s.c = __C;\n\t\t\tif(range.e.r < __R) range.e.r = __R;\n\t\t\tif(range.e.c < __C) range.e.c = __C;\n\t\t\tif(data[R][C] && typeof data[R][C] === 'object' && !Array.isArray(data[R][C]) && !(data[R][C] instanceof Date)) cell = data[R][C];\n\t\t\telse {\n\t\t\t\tif(Array.isArray(cell.v)) { cell.f = data[R][C][1]; cell.v = cell.v[0]; }\n\t\t\t\tif(cell.v === null) { if(cell.f) cell.t = 'n'; else if(!o.sheetStubs) continue; else cell.t = 'z'; }\n\t\t\t\telse if(typeof cell.v === 'number') cell.t = 'n';\n\t\t\t\telse if(typeof cell.v === 'boolean') cell.t = 'b';\n\t\t\t\telse if(cell.v instanceof Date) {\n\t\t\t\t\tcell.z = o.dateNF || SSF._table[14];\n\t\t\t\t\tif(o.cellDates) { cell.t = 'd'; cell.w = SSF.format(cell.z, datenum(cell.v)); }\n\t\t\t\t\telse { cell.t = 'n'; cell.v = datenum(cell.v); cell.w = SSF.format(cell.z, cell.v); }\n\t\t\t\t}\n\t\t\t\telse cell.t = 's';\n\t\t\t}\n\t\t\tif(dense) {\n\t\t\t\tif(!ws[__R]) ws[__R] = [];\n\t\t\t\tws[__R][__C] = cell;\n\t\t\t} else {\n\t\t\t\tvar cell_ref = encode_cell(({c:__C,r:__R}));\n\t\t\t\tws[cell_ref] = cell;\n\t\t\t}\n\t\t}\n\t}\n\tif(range.s.c < 10000000) ws['!ref'] = encode_range(range);\n\treturn ws;\n}\nfunction aoa_to_sheet(data, opts) { return sheet_add_aoa(null, data, opts); }\n\nfunction write_UInt32LE(x, o) {\n\tif(!o) o = new_buf(4);\n\to.write_shift(4, x);\n\treturn o;\n}\n\n/* [MS-XLSB] 2.5.168 */\nfunction parse_XLWideString(data) {\n\tvar cchCharacters = data.read_shift(4);\n\treturn cchCharacters === 0 ? \"\" : data.read_shift(cchCharacters, 'dbcs');\n}\nfunction write_XLWideString(data, o) {\n\tvar _null = false; if(o == null) { _null = true; o = new_buf(4+2*data.length); }\n\to.write_shift(4, data.length);\n\tif(data.length > 0) o.write_shift(0, data, 'dbcs');\n\treturn _null ? o.slice(0, o.l) : o;\n}\n\n/* [MS-XLSB] 2.5.143 */\nfunction parse_StrRun(data) {\n\treturn { ich: data.read_shift(2), ifnt: data.read_shift(2) };\n}\nfunction write_StrRun(run, o) {\n\tif(!o) o = new_buf(4);\n\to.write_shift(2, run.ich || 0);\n\to.write_shift(2, run.ifnt || 0);\n\treturn o;\n}\n\n/* [MS-XLSB] 2.5.121 */\nfunction parse_RichStr(data, length) {\n\tvar start = data.l;\n\tvar flags = data.read_shift(1);\n\tvar str = parse_XLWideString(data);\n\tvar rgsStrRun = [];\n\tvar z = ({ t: str, h: str });\n\tif((flags & 1) !== 0) { /* fRichStr */\n\t\t/* TODO: formatted string */\n\t\tvar dwSizeStrRun = data.read_shift(4);\n\t\tfor(var i = 0; i != dwSizeStrRun; ++i) rgsStrRun.push(parse_StrRun(data));\n\t\tz.r = rgsStrRun;\n\t}\n\telse z.r = [{ich:0, ifnt:0}];\n\t//if((flags & 2) !== 0) { /* fExtStr */\n\t//\t/* TODO: phonetic string */\n\t//}\n\tdata.l = start + length;\n\treturn z;\n}\nfunction write_RichStr(str, o) {\n\t/* TODO: formatted string */\n\tvar _null = false; if(o == null) { _null = true; o = new_buf(15+4*str.t.length); }\n\to.write_shift(1,0);\n\twrite_XLWideString(str.t, o);\n\treturn _null ? o.slice(0, o.l) : o;\n}\n/* [MS-XLSB] 2.4.328 BrtCommentText (RichStr w/1 run) */\nvar parse_BrtCommentText = parse_RichStr;\nfunction write_BrtCommentText(str, o) {\n\t/* TODO: formatted string */\n\tvar _null = false; if(o == null) { _null = true; o = new_buf(23+4*str.t.length); }\n\to.write_shift(1,1);\n\twrite_XLWideString(str.t, o);\n\to.write_shift(4,1);\n\twrite_StrRun({ich:0,ifnt:0}, o);\n\treturn _null ? o.slice(0, o.l) : o;\n}\n\n/* [MS-XLSB] 2.5.9 */\nfunction parse_XLSBCell(data) {\n\tvar col = data.read_shift(4);\n\tvar iStyleRef = data.read_shift(2);\n\tiStyleRef += data.read_shift(1) <<16;\n\tdata.l++; //var fPhShow = data.read_shift(1);\n\treturn { c:col, iStyleRef: iStyleRef };\n}\nfunction write_XLSBCell(cell, o) {\n\tif(o == null) o = new_buf(8);\n\to.write_shift(-4, cell.c);\n\to.write_shift(3, cell.iStyleRef || cell.s);\n\to.write_shift(1, 0); /* fPhShow */\n\treturn o;\n}\n\n\n/* [MS-XLSB] 2.5.21 */\nvar parse_XLSBCodeName = parse_XLWideString;\nvar write_XLSBCodeName = write_XLWideString;\n\n/* [MS-XLSB] 2.5.166 */\nfunction parse_XLNullableWideString(data) {\n\tvar cchCharacters = data.read_shift(4);\n\treturn cchCharacters === 0 || cchCharacters === 0xFFFFFFFF ? \"\" : data.read_shift(cchCharacters, 'dbcs');\n}\nfunction write_XLNullableWideString(data, o) {\n\tvar _null = false; if(o == null) { _null = true; o = new_buf(127); }\n\to.write_shift(4, data.length > 0 ? data.length : 0xFFFFFFFF);\n\tif(data.length > 0) o.write_shift(0, data, 'dbcs');\n\treturn _null ? o.slice(0, o.l) : o;\n}\n\n/* [MS-XLSB] 2.5.165 */\nvar parse_XLNameWideString = parse_XLWideString;\n//var write_XLNameWideString = write_XLWideString;\n\n/* [MS-XLSB] 2.5.114 */\nvar parse_RelID = parse_XLNullableWideString;\nvar write_RelID = write_XLNullableWideString;\n\n\n/* [MS-XLS] 2.5.217 ; [MS-XLSB] 2.5.122 */\nfunction parse_RkNumber(data) {\n\tvar b = data.slice(data.l, data.l+4);\n\tvar fX100 = (b[0] & 1), fInt = (b[0] & 2);\n\tdata.l+=4;\n\tb[0] &= 0xFC; // b[0] &= ~3;\n\tvar RK = fInt === 0 ? __double([0,0,0,0,b[0],b[1],b[2],b[3]],0) : __readInt32LE(b,0)>>2;\n\treturn fX100 ? (RK/100) : RK;\n}\nfunction write_RkNumber(data, o) {\n\tif(o == null) o = new_buf(4);\n\tvar fX100 = 0, fInt = 0, d100 = data * 100;\n\tif((data == (data | 0)) && (data >= -(1<<29)) && (data < (1 << 29))) { fInt = 1; }\n\telse if((d100 == (d100 | 0)) && (d100 >= -(1<<29)) && (d100 < (1 << 29))) { fInt = 1; fX100 = 1; }\n\tif(fInt) o.write_shift(-4, ((fX100 ? d100 : data) << 2) + (fX100 + 2));\n\telse throw new Error(\"unsupported RkNumber \" + data); // TODO\n}\n\n\n/* [MS-XLSB] 2.5.117 RfX */\nfunction parse_RfX(data ) {\n\tvar cell = ({s: {}, e: {}});\n\tcell.s.r = data.read_shift(4);\n\tcell.e.r = data.read_shift(4);\n\tcell.s.c = data.read_shift(4);\n\tcell.e.c = data.read_shift(4);\n\treturn cell;\n}\nfunction write_RfX(r, o) {\n\tif(!o) o = new_buf(16);\n\to.write_shift(4, r.s.r);\n\to.write_shift(4, r.e.r);\n\to.write_shift(4, r.s.c);\n\to.write_shift(4, r.e.c);\n\treturn o;\n}\n\n/* [MS-XLSB] 2.5.153 UncheckedRfX */\nvar parse_UncheckedRfX = parse_RfX;\nvar write_UncheckedRfX = write_RfX;\n\n/* [MS-XLS] 2.5.342 ; [MS-XLSB] 2.5.171 */\n/* TODO: error checking, NaN and Infinity values are not valid Xnum */\nfunction parse_Xnum(data) { return data.read_shift(8, 'f'); }\nfunction write_Xnum(data, o) { return (o || new_buf(8)).write_shift(8, data, 'f'); }\n\n/* [MS-XLSB] 2.5.97.2 */\nvar BErr = {\n0x00: \"#NULL!\",\n0x07: \"#DIV/0!\",\n0x0F: \"#VALUE!\",\n0x17: \"#REF!\",\n0x1D: \"#NAME?\",\n0x24: \"#NUM!\",\n0x2A: \"#N/A\",\n0x2B: \"#GETTING_DATA\",\n0xFF: \"#WTF?\"\n};\nvar RBErr = evert_num(BErr);\n\n/* [MS-XLSB] 2.4.324 BrtColor */\nfunction parse_BrtColor(data) {\n\tvar out = {};\n\tvar d = data.read_shift(1);\n\n\t//var fValidRGB = d & 1;\n\tvar xColorType = d >>> 1;\n\n\tvar index = data.read_shift(1);\n\tvar nTS = data.read_shift(2, 'i');\n\tvar bR = data.read_shift(1);\n\tvar bG = data.read_shift(1);\n\tvar bB = data.read_shift(1);\n\tdata.l++; //var bAlpha = data.read_shift(1);\n\n\tswitch(xColorType) {\n\t\tcase 0: out.auto = 1; break;\n\t\tcase 1:\n\t\t\tout.index = index;\n\t\t\tvar icv = XLSIcv[index];\n\t\t\t/* automatic pseudo index 81 */\n\t\t\tif(icv) out.rgb = rgb2Hex(icv);\n\t\t\tbreak;\n\t\tcase 2:\n\t\t\t/* if(!fValidRGB) throw new Error(\"invalid\"); */\n\t\t\tout.rgb = rgb2Hex([bR, bG, bB]);\n\t\t\tbreak;\n\t\tcase 3: out.theme = index; break;\n\t}\n\tif(nTS != 0) out.tint = nTS > 0 ? nTS / 32767 : nTS / 32768;\n\n\treturn out;\n}\nfunction write_BrtColor(color, o) {\n\tif(!o) o = new_buf(8);\n\tif(!color||color.auto) { o.write_shift(4, 0); o.write_shift(4, 0); return o; }\n\tif(color.index) {\n\t\to.write_shift(1, 0x02);\n\t\to.write_shift(1, color.index);\n\t} else if(color.theme) {\n\t\to.write_shift(1, 0x06);\n\t\to.write_shift(1, color.theme);\n\t} else {\n\t\to.write_shift(1, 0x05);\n\t\to.write_shift(1, 0);\n\t}\n\tvar nTS = color.tint || 0;\n\tif(nTS > 0) nTS *= 32767;\n\telse if(nTS < 0) nTS *= 32768;\n\to.write_shift(2, nTS);\n\tif(!color.rgb) {\n\t\to.write_shift(2, 0);\n\t\to.write_shift(1, 0);\n\t\to.write_shift(1, 0);\n\t} else {\n\t\tvar rgb = (color.rgb || 'FFFFFF');\n\t\to.write_shift(1, parseInt(rgb.slice(0,2),16));\n\t\to.write_shift(1, parseInt(rgb.slice(2,4),16));\n\t\to.write_shift(1, parseInt(rgb.slice(4,6),16));\n\t\to.write_shift(1, 0xFF);\n\t}\n\treturn o;\n}\n\n/* [MS-XLSB] 2.5.52 */\nfunction parse_FontFlags(data) {\n\tvar d = data.read_shift(1);\n\tdata.l++;\n\tvar out = {\n\t\t/* fBold: d & 0x01 */\n\t\tfItalic: d & 0x02,\n\t\t/* fUnderline: d & 0x04 */\n\t\tfStrikeout: d & 0x08,\n\t\tfOutline: d & 0x10,\n\t\tfShadow: d & 0x20,\n\t\tfCondense: d & 0x40,\n\t\tfExtend: d & 0x80\n\t};\n\treturn out;\n}\nfunction write_FontFlags(font, o) {\n\tif(!o) o = new_buf(2);\n\tvar grbit =\n\t\t(font.italic ? 0x02 : 0) |\n\t\t(font.strike ? 0x08 : 0) |\n\t\t(font.outline ? 0x10 : 0) |\n\t\t(font.shadow ? 0x20 : 0) |\n\t\t(font.condense ? 0x40 : 0) |\n\t\t(font.extend ? 0x80 : 0);\n\to.write_shift(1, grbit);\n\to.write_shift(1, 0);\n\treturn o;\n}\n\n/* [MS-OLEDS] 2.3.1 and 2.3.2 */\nfunction parse_ClipboardFormatOrString(o, w) {\n\t// $FlowIgnore\n\tvar ClipFmt = {2:\"BITMAP\",3:\"METAFILEPICT\",8:\"DIB\",14:\"ENHMETAFILE\"};\n\tvar m = o.read_shift(4);\n\tswitch(m) {\n\t\tcase 0x00000000: return \"\";\n\t\tcase 0xffffffff: case 0xfffffffe: return ClipFmt[o.read_shift(4)]||\"\";\n\t}\n\tif(m > 0x190) throw new Error(\"Unsupported Clipboard: \" + m.toString(16));\n\to.l -= 4;\n\treturn o.read_shift(0, w == 1 ? \"lpstr\" : \"lpwstr\");\n}\nfunction parse_ClipboardFormatOrAnsiString(o) { return parse_ClipboardFormatOrString(o, 1); }\nfunction parse_ClipboardFormatOrUnicodeString(o) { return parse_ClipboardFormatOrString(o, 2); }\n\n/* [MS-OLEPS] 2.2 PropertyType */\n//var VT_EMPTY = 0x0000;\n//var VT_NULL = 0x0001;\nvar VT_I2 = 0x0002;\nvar VT_I4 = 0x0003;\n//var VT_R4 = 0x0004;\n//var VT_R8 = 0x0005;\n//var VT_CY = 0x0006;\n//var VT_DATE = 0x0007;\n//var VT_BSTR = 0x0008;\n//var VT_ERROR = 0x000A;\nvar VT_BOOL = 0x000B;\nvar VT_VARIANT = 0x000C;\n//var VT_DECIMAL = 0x000E;\n//var VT_I1 = 0x0010;\n//var VT_UI1 = 0x0011;\n//var VT_UI2 = 0x0012;\nvar VT_UI4 = 0x0013;\n//var VT_I8 = 0x0014;\n//var VT_UI8 = 0x0015;\n//var VT_INT = 0x0016;\n//var VT_UINT = 0x0017;\nvar VT_LPSTR = 0x001E;\n//var VT_LPWSTR = 0x001F;\nvar VT_FILETIME = 0x0040;\nvar VT_BLOB = 0x0041;\n//var VT_STREAM = 0x0042;\n//var VT_STORAGE = 0x0043;\n//var VT_STREAMED_Object = 0x0044;\n//var VT_STORED_Object = 0x0045;\n//var VT_BLOB_Object = 0x0046;\nvar VT_CF = 0x0047;\n//var VT_CLSID = 0x0048;\n//var VT_VERSIONED_STREAM = 0x0049;\nvar VT_VECTOR = 0x1000;\n//var VT_ARRAY = 0x2000;\n\nvar VT_STRING = 0x0050; // 2.3.3.1.11 VtString\nvar VT_USTR = 0x0051; // 2.3.3.1.12 VtUnalignedString\nvar VT_CUSTOM = [VT_STRING, VT_USTR];\n\n/* [MS-OSHARED] 2.3.3.2.2.1 Document Summary Information PIDDSI */\nvar DocSummaryPIDDSI = {\n0x01: { n: 'CodePage', t: VT_I2 },\n0x02: { n: 'Category', t: VT_STRING },\n0x03: { n: 'PresentationFormat', t: VT_STRING },\n0x04: { n: 'ByteCount', t: VT_I4 },\n0x05: { n: 'LineCount', t: VT_I4 },\n0x06: { n: 'ParagraphCount', t: VT_I4 },\n0x07: { n: 'SlideCount', t: VT_I4 },\n0x08: { n: 'NoteCount', t: VT_I4 },\n0x09: { n: 'HiddenCount', t: VT_I4 },\n0x0a: { n: 'MultimediaClipCount', t: VT_I4 },\n0x0b: { n: 'ScaleCrop', t: VT_BOOL },\n0x0c: { n: 'HeadingPairs', t: VT_VECTOR | VT_VARIANT },\n0x0d: { n: 'TitlesOfParts', t: VT_VECTOR | VT_LPSTR },\n0x0e: { n: 'Manager', t: VT_STRING },\n0x0f: { n: 'Company', t: VT_STRING },\n0x10: { n: 'LinksUpToDate', t: VT_BOOL },\n0x11: { n: 'CharacterCount', t: VT_I4 },\n0x13: { n: 'SharedDoc', t: VT_BOOL },\n0x16: { n: 'HyperlinksChanged', t: VT_BOOL },\n0x17: { n: 'AppVersion', t: VT_I4, p: 'version' },\n0x18: { n: 'DigSig', t: VT_BLOB },\n0x1A: { n: 'ContentType', t: VT_STRING },\n0x1B: { n: 'ContentStatus', t: VT_STRING },\n0x1C: { n: 'Language', t: VT_STRING },\n0x1D: { n: 'Version', t: VT_STRING },\n0xFF: {}\n};\n\n/* [MS-OSHARED] 2.3.3.2.1.1 Summary Information Property Set PIDSI */\nvar SummaryPIDSI = {\n0x01: { n: 'CodePage', t: VT_I2 },\n0x02: { n: 'Title', t: VT_STRING },\n0x03: { n: 'Subject', t: VT_STRING },\n0x04: { n: 'Author', t: VT_STRING },\n0x05: { n: 'Keywords', t: VT_STRING },\n0x06: { n: 'Comments', t: VT_STRING },\n0x07: { n: 'Template', t: VT_STRING },\n0x08: { n: 'LastAuthor', t: VT_STRING },\n0x09: { n: 'RevNumber', t: VT_STRING },\n0x0A: { n: 'EditTime', t: VT_FILETIME },\n0x0B: { n: 'LastPrinted', t: VT_FILETIME },\n0x0C: { n: 'CreatedDate', t: VT_FILETIME },\n0x0D: { n: 'ModifiedDate', t: VT_FILETIME },\n0x0E: { n: 'PageCount', t: VT_I4 },\n0x0F: { n: 'WordCount', t: VT_I4 },\n0x10: { n: 'CharCount', t: VT_I4 },\n0x11: { n: 'Thumbnail', t: VT_CF },\n0x12: { n: 'Application', t: VT_STRING },\n0x13: { n: 'DocSecurity', t: VT_I4 },\n0xFF: {}\n};\n\n/* [MS-OLEPS] 2.18 */\nvar SpecialProperties = {\n0x80000000: { n: 'Locale', t: VT_UI4 },\n0x80000003: { n: 'Behavior', t: VT_UI4 },\n0x72627262: {}\n};\n\n(function() {\n\tfor(var y in SpecialProperties) if(SpecialProperties.hasOwnProperty(y))\n\tDocSummaryPIDDSI[y] = SummaryPIDSI[y] = SpecialProperties[y];\n})();\n\nvar DocSummaryRE = evert_key(DocSummaryPIDDSI, \"n\");\nvar SummaryRE = evert_key(SummaryPIDSI, \"n\");\n\n/* [MS-XLS] 2.4.63 Country/Region codes */\nvar CountryEnum = {\n0x0001: \"US\", // United States\n0x0002: \"CA\", // Canada\n0x0003: \"\", // Latin America (except Brazil)\n0x0007: \"RU\", // Russia\n0x0014: \"EG\", // Egypt\n0x001E: \"GR\", // Greece\n0x001F: \"NL\", // Netherlands\n0x0020: \"BE\", // Belgium\n0x0021: \"FR\", // France\n0x0022: \"ES\", // Spain\n0x0024: \"HU\", // Hungary\n0x0027: \"IT\", // Italy\n0x0029: \"CH\", // Switzerland\n0x002B: \"AT\", // Austria\n0x002C: \"GB\", // United Kingdom\n0x002D: \"DK\", // Denmark\n0x002E: \"SE\", // Sweden\n0x002F: \"NO\", // Norway\n0x0030: \"PL\", // Poland\n0x0031: \"DE\", // Germany\n0x0034: \"MX\", // Mexico\n0x0037: \"BR\", // Brazil\n0x003d: \"AU\", // Australia\n0x0040: \"NZ\", // New Zealand\n0x0042: \"TH\", // Thailand\n0x0051: \"JP\", // Japan\n0x0052: \"KR\", // Korea\n0x0054: \"VN\", // Viet Nam\n0x0056: \"CN\", // China\n0x005A: \"TR\", // Turkey\n0x0069: \"JS\", // Ramastan\n0x00D5: \"DZ\", // Algeria\n0x00D8: \"MA\", // Morocco\n0x00DA: \"LY\", // Libya\n0x015F: \"PT\", // Portugal\n0x0162: \"IS\", // Iceland\n0x0166: \"FI\", // Finland\n0x01A4: \"CZ\", // Czech Republic\n0x0376: \"TW\", // Taiwan\n0x03C1: \"LB\", // Lebanon\n0x03C2: \"JO\", // Jordan\n0x03C3: \"SY\", // Syria\n0x03C4: \"IQ\", // Iraq\n0x03C5: \"KW\", // Kuwait\n0x03C6: \"SA\", // Saudi Arabia\n0x03CB: \"AE\", // United Arab Emirates\n0x03CC: \"IL\", // Israel\n0x03CE: \"QA\", // Qatar\n0x03D5: \"IR\", // Iran\n0xFFFF: \"US\" // United States\n};\n\n/* [MS-XLS] 2.5.127 */\nvar XLSFillPattern = [\n\tnull,\n\t'solid',\n\t'mediumGray',\n\t'darkGray',\n\t'lightGray',\n\t'darkHorizontal',\n\t'darkVertical',\n\t'darkDown',\n\t'darkUp',\n\t'darkGrid',\n\t'darkTrellis',\n\t'lightHorizontal',\n\t'lightVertical',\n\t'lightDown',\n\t'lightUp',\n\t'lightGrid',\n\t'lightTrellis',\n\t'gray125',\n\t'gray0625'\n];\n\nfunction rgbify(arr) { return arr.map(function(x) { return [(x>>16)&255,(x>>8)&255,x&255]; }); }\n\n/* [MS-XLS] 2.5.161 */\n/* [MS-XLSB] 2.5.75 Icv */\nvar XLSIcv = rgbify([\n\t/* Color Constants */\n\t0x000000,\n\t0xFFFFFF,\n\t0xFF0000,\n\t0x00FF00,\n\t0x0000FF,\n\t0xFFFF00,\n\t0xFF00FF,\n\t0x00FFFF,\n\n\t/* Overridable Defaults */\n\t0x000000,\n\t0xFFFFFF,\n\t0xFF0000,\n\t0x00FF00,\n\t0x0000FF,\n\t0xFFFF00,\n\t0xFF00FF,\n\t0x00FFFF,\n\n\t0x800000,\n\t0x008000,\n\t0x000080,\n\t0x808000,\n\t0x800080,\n\t0x008080,\n\t0xC0C0C0,\n\t0x808080,\n\t0x9999FF,\n\t0x993366,\n\t0xFFFFCC,\n\t0xCCFFFF,\n\t0x660066,\n\t0xFF8080,\n\t0x0066CC,\n\t0xCCCCFF,\n\n\t0x000080,\n\t0xFF00FF,\n\t0xFFFF00,\n\t0x00FFFF,\n\t0x800080,\n\t0x800000,\n\t0x008080,\n\t0x0000FF,\n\t0x00CCFF,\n\t0xCCFFFF,\n\t0xCCFFCC,\n\t0xFFFF99,\n\t0x99CCFF,\n\t0xFF99CC,\n\t0xCC99FF,\n\t0xFFCC99,\n\n\t0x3366FF,\n\t0x33CCCC,\n\t0x99CC00,\n\t0xFFCC00,\n\t0xFF9900,\n\t0xFF6600,\n\t0x666699,\n\t0x969696,\n\t0x003366,\n\t0x339966,\n\t0x003300,\n\t0x333300,\n\t0x993300,\n\t0x993366,\n\t0x333399,\n\t0x333333,\n\n\t/* Other entries to appease BIFF8/12 */\n\t0xFFFFFF, /* 0x40 icvForeground ?? */\n\t0x000000, /* 0x41 icvBackground ?? */\n\t0x000000, /* 0x42 icvFrame ?? */\n\t0x000000, /* 0x43 icv3D ?? */\n\t0x000000, /* 0x44 icv3DText ?? */\n\t0x000000, /* 0x45 icv3DHilite ?? */\n\t0x000000, /* 0x46 icv3DShadow ?? */\n\t0x000000, /* 0x47 icvHilite ?? */\n\t0x000000, /* 0x48 icvCtlText ?? */\n\t0x000000, /* 0x49 icvCtlScrl ?? */\n\t0x000000, /* 0x4A icvCtlInv ?? */\n\t0x000000, /* 0x4B icvCtlBody ?? */\n\t0x000000, /* 0x4C icvCtlFrame ?? */\n\t0x000000, /* 0x4D icvCtlFore ?? */\n\t0x000000, /* 0x4E icvCtlBack ?? */\n\t0x000000, /* 0x4F icvCtlNeutral */\n\t0x000000, /* 0x50 icvInfoBk ?? */\n\t0x000000 /* 0x51 icvInfoText ?? */\n]);\n\n/* Parts enumerated in OPC spec, MS-XLSB and MS-XLSX */\n/* 12.3 Part Summary */\n/* 14.2 Part Summary */\n/* [MS-XLSX] 2.1 Part Enumerations ; [MS-XLSB] 2.1.7 Part Enumeration */\nvar ct2type/*{[string]:string}*/ = ({\n\t/* Workbook */\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml\": \"workbooks\",\n\n\t/* Worksheet */\n\t\"application/vnd.ms-excel.binIndexWs\": \"TODO\", /* Binary Index */\n\n\t/* Macrosheet */\n\t\"application/vnd.ms-excel.intlmacrosheet\": \"TODO\",\n\t\"application/vnd.ms-excel.binIndexMs\": \"TODO\", /* Binary Index */\n\n\t/* File Properties */\n\t\"application/vnd.openxmlformats-package.core-properties+xml\": \"coreprops\",\n\t\"application/vnd.openxmlformats-officedocument.custom-properties+xml\": \"custprops\",\n\t\"application/vnd.openxmlformats-officedocument.extended-properties+xml\": \"extprops\",\n\n\t/* Custom Data Properties */\n\t\"application/vnd.openxmlformats-officedocument.customXmlProperties+xml\": \"TODO\",\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.customProperty\": \"TODO\",\n\n\t/* PivotTable */\n\t\"application/vnd.ms-excel.pivotTable\": \"TODO\",\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.pivotTable+xml\": \"TODO\",\n\n\t/* Chart Colors */\n\t\"application/vnd.ms-office.chartcolorstyle+xml\": \"TODO\",\n\n\t/* Chart Style */\n\t\"application/vnd.ms-office.chartstyle+xml\": \"TODO\",\n\n\t/* Calculation Chain */\n\t\"application/vnd.ms-excel.calcChain\": \"calcchains\",\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.calcChain+xml\": \"calcchains\",\n\n\t/* Printer Settings */\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.printerSettings\": \"TODO\",\n\n\t/* ActiveX */\n\t\"application/vnd.ms-office.activeX\": \"TODO\",\n\t\"application/vnd.ms-office.activeX+xml\": \"TODO\",\n\n\t/* Custom Toolbars */\n\t\"application/vnd.ms-excel.attachedToolbars\": \"TODO\",\n\n\t/* External Data Connections */\n\t\"application/vnd.ms-excel.connections\": \"TODO\",\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.connections+xml\": \"TODO\",\n\n\t/* External Links */\n\t\"application/vnd.ms-excel.externalLink\": \"links\",\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.externalLink+xml\": \"links\",\n\n\t/* Metadata */\n\t\"application/vnd.ms-excel.sheetMetadata\": \"TODO\",\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.sheetMetadata+xml\": \"TODO\",\n\n\t/* PivotCache */\n\t\"application/vnd.ms-excel.pivotCacheDefinition\": \"TODO\",\n\t\"application/vnd.ms-excel.pivotCacheRecords\": \"TODO\",\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.pivotCacheDefinition+xml\": \"TODO\",\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.pivotCacheRecords+xml\": \"TODO\",\n\n\t/* Query Table */\n\t\"application/vnd.ms-excel.queryTable\": \"TODO\",\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.queryTable+xml\": \"TODO\",\n\n\t/* Shared Workbook */\n\t\"application/vnd.ms-excel.userNames\": \"TODO\",\n\t\"application/vnd.ms-excel.revisionHeaders\": \"TODO\",\n\t\"application/vnd.ms-excel.revisionLog\": \"TODO\",\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.revisionHeaders+xml\": \"TODO\",\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.revisionLog+xml\": \"TODO\",\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.userNames+xml\": \"TODO\",\n\n\t/* Single Cell Table */\n\t\"application/vnd.ms-excel.tableSingleCells\": \"TODO\",\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.tableSingleCells+xml\": \"TODO\",\n\n\t/* Slicer */\n\t\"application/vnd.ms-excel.slicer\": \"TODO\",\n\t\"application/vnd.ms-excel.slicerCache\": \"TODO\",\n\t\"application/vnd.ms-excel.slicer+xml\": \"TODO\",\n\t\"application/vnd.ms-excel.slicerCache+xml\": \"TODO\",\n\n\t/* Sort Map */\n\t\"application/vnd.ms-excel.wsSortMap\": \"TODO\",\n\n\t/* Table */\n\t\"application/vnd.ms-excel.table\": \"TODO\",\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.table+xml\": \"TODO\",\n\n\t/* Themes */\n\t\"application/vnd.openxmlformats-officedocument.theme+xml\": \"themes\",\n\n\t/* Theme Override */\n\t\"application/vnd.openxmlformats-officedocument.themeOverride+xml\": \"TODO\",\n\n\t/* Timeline */\n\t\"application/vnd.ms-excel.Timeline+xml\": \"TODO\", /* verify */\n\t\"application/vnd.ms-excel.TimelineCache+xml\": \"TODO\", /* verify */\n\n\t/* VBA */\n\t\"application/vnd.ms-office.vbaProject\": \"vba\",\n\t\"application/vnd.ms-office.vbaProjectSignature\": \"vba\",\n\n\t/* Volatile Dependencies */\n\t\"application/vnd.ms-office.volatileDependencies\": \"TODO\",\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.volatileDependencies+xml\": \"TODO\",\n\n\t/* Control Properties */\n\t\"application/vnd.ms-excel.controlproperties+xml\": \"TODO\",\n\n\t/* Data Model */\n\t\"application/vnd.openxmlformats-officedocument.model+data\": \"TODO\",\n\n\t/* Survey */\n\t\"application/vnd.ms-excel.Survey+xml\": \"TODO\",\n\n\t/* Drawing */\n\t\"application/vnd.openxmlformats-officedocument.drawing+xml\": \"drawings\",\n\t\"application/vnd.openxmlformats-officedocument.drawingml.chart+xml\": \"TODO\",\n\t\"application/vnd.openxmlformats-officedocument.drawingml.chartshapes+xml\": \"TODO\",\n\t\"application/vnd.openxmlformats-officedocument.drawingml.diagramColors+xml\": \"TODO\",\n\t\"application/vnd.openxmlformats-officedocument.drawingml.diagramData+xml\": \"TODO\",\n\t\"application/vnd.openxmlformats-officedocument.drawingml.diagramLayout+xml\": \"TODO\",\n\t\"application/vnd.openxmlformats-officedocument.drawingml.diagramStyle+xml\": \"TODO\",\n\n\t/* VML */\n\t\"application/vnd.openxmlformats-officedocument.vmlDrawing\": \"TODO\",\n\n\t\"application/vnd.openxmlformats-package.relationships+xml\": \"rels\",\n\t\"application/vnd.openxmlformats-officedocument.oleObject\": \"TODO\",\n\n\t/* Image */\n\t\"image/png\": \"TODO\",\n\n\t\"sheet\": \"js\"\n});\n\nvar CT_LIST = (function(){\n\tvar o = {\n\t\tworkbooks: {\n\t\t\txlsx: \"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml\",\n\t\t\txlsm: \"application/vnd.ms-excel.sheet.macroEnabled.main+xml\",\n\t\t\txlsb: \"application/vnd.ms-excel.sheet.binary.macroEnabled.main\",\n\t\t\txlam: \"application/vnd.ms-excel.addin.macroEnabled.main+xml\",\n\t\t\txltx: \"application/vnd.openxmlformats-officedocument.spreadsheetml.template.main+xml\"\n\t\t},\n\t\tstrs: { /* Shared Strings */\n\t\t\txlsx: \"application/vnd.openxmlformats-officedocument.spreadsheetml.sharedStrings+xml\",\n\t\t\txlsb: \"application/vnd.ms-excel.sharedStrings\"\n\t\t},\n\t\tcomments: { /* Comments */\n\t\t\txlsx: \"application/vnd.openxmlformats-officedocument.spreadsheetml.comments+xml\",\n\t\t\txlsb: \"application/vnd.ms-excel.comments\"\n\t\t},\n\t\tsheets: { /* Worksheet */\n\t\t\txlsx: \"application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml\",\n\t\t\txlsb: \"application/vnd.ms-excel.worksheet\"\n\t\t},\n\t\tcharts: { /* Chartsheet */\n\t\t\txlsx: \"application/vnd.openxmlformats-officedocument.spreadsheetml.chartsheet+xml\",\n\t\t\txlsb: \"application/vnd.ms-excel.chartsheet\"\n\t\t},\n\t\tdialogs: { /* Dialogsheet */\n\t\t\txlsx: \"application/vnd.openxmlformats-officedocument.spreadsheetml.dialogsheet+xml\",\n\t\t\txlsb: \"application/vnd.ms-excel.dialogsheet\"\n\t\t},\n\t\tmacros: { /* Macrosheet (Excel 4.0 Macros) */\n\t\t\txlsx: \"application/vnd.ms-excel.macrosheet+xml\",\n\t\t\txlsb: \"application/vnd.ms-excel.macrosheet\"\n\t\t},\n\t\tstyles: { /* Styles */\n\t\t\txlsx: \"application/vnd.openxmlformats-officedocument.spreadsheetml.styles+xml\",\n\t\t\txlsb: \"application/vnd.ms-excel.styles\"\n\t\t}\n\t};\n\tkeys(o).forEach(function(k) { [\"xlsm\", \"xlam\"].forEach(function(v) { if(!o[k][v]) o[k][v] = o[k].xlsx; }); });\n\tkeys(o).forEach(function(k){ keys(o[k]).forEach(function(v) { ct2type[o[k][v]] = k; }); });\n\treturn o;\n})();\n\nvar type2ct/*{[string]:Array}*/ = evert_arr(ct2type);\n\nXMLNS.CT = 'http://schemas.openxmlformats.org/package/2006/content-types';\n\nfunction new_ct() {\n\treturn ({\n\t\tworkbooks:[], sheets:[], charts:[], dialogs:[], macros:[],\n\t\trels:[], strs:[], comments:[], links:[],\n\t\tcoreprops:[], extprops:[], custprops:[], themes:[], styles:[],\n\t\tcalcchains:[], vba: [], drawings: [],\n\t\tTODO:[], xmlns: \"\" });\n}\n\nfunction parse_ct(data) {\n\tvar ct = new_ct();\n\tif(!data || !data.match) return ct;\n\tvar ctext = {};\n\t(data.match(tagregex)||[]).forEach(function(x) {\n\t\tvar y = parsexmltag(x);\n\t\tswitch(y[0].replace(nsregex,\"<\")) {\n\t\t\tcase ' 0 ? ct.calcchains[0] : \"\";\n\tct.sst = ct.strs.length > 0 ? ct.strs[0] : \"\";\n\tct.style = ct.styles.length > 0 ? ct.styles[0] : \"\";\n\tct.defaults = ctext;\n\tdelete ct.calcchains;\n\treturn ct;\n}\n\nvar CTYPE_XML_ROOT = writextag('Types', null, {\n\t'xmlns': XMLNS.CT,\n\t'xmlns:xsd': XMLNS.xsd,\n\t'xmlns:xsi': XMLNS.xsi\n});\n\nvar CTYPE_DEFAULTS = [\n\t['xml', 'application/xml'],\n\t['bin', 'application/vnd.ms-excel.sheet.binary.macroEnabled.main'],\n\t['vml', 'application/vnd.openxmlformats-officedocument.vmlDrawing'],\n\t/* from test files */\n\t['bmp', 'image/bmp'],\n\t['png', 'image/png'],\n\t['gif', 'image/gif'],\n\t['emf', 'image/x-emf'],\n\t['wmf', 'image/x-wmf'],\n\t['jpg', 'image/jpeg'], ['jpeg', 'image/jpeg'],\n\t['tif', 'image/tiff'], ['tiff', 'image/tiff'],\n\t['pdf', 'application/pdf'],\n\t['rels', type2ct.rels[0]]\n].map(function(x) {\n\treturn writextag('Default', null, {'Extension':x[0], 'ContentType': x[1]});\n});\n\nfunction write_ct(ct, opts) {\n\tvar o = [], v;\n\to[o.length] = (XML_HEADER);\n\to[o.length] = (CTYPE_XML_ROOT);\n\to = o.concat(CTYPE_DEFAULTS);\n\tvar f1 = function(w) {\n\t\tif(ct[w] && ct[w].length > 0) {\n\t\t\tv = ct[w][0];\n\t\t\to[o.length] = (writextag('Override', null, {\n\t\t\t\t'PartName': (v[0] == '/' ? \"\":\"/\") + v,\n\t\t\t\t'ContentType': CT_LIST[w][opts.bookType || 'xlsx']\n\t\t\t}));\n\t\t}\n\t};\n\tvar f2 = function(w) {\n\t\t(ct[w]||[]).forEach(function(v) {\n\t\t\to[o.length] = (writextag('Override', null, {\n\t\t\t\t'PartName': (v[0] == '/' ? \"\":\"/\") + v,\n\t\t\t\t'ContentType': CT_LIST[w][opts.bookType || 'xlsx']\n\t\t\t}));\n\t\t});\n\t};\n\tvar f3 = function(t) {\n\t\t(ct[t]||[]).forEach(function(v) {\n\t\t\to[o.length] = (writextag('Override', null, {\n\t\t\t\t'PartName': (v[0] == '/' ? \"\":\"/\") + v,\n\t\t\t\t'ContentType': type2ct[t][0]\n\t\t\t}));\n\t\t});\n\t};\n\tf1('workbooks');\n\tf2('sheets');\n\tf2('charts');\n\tf3('themes');\n\t['strs', 'styles'].forEach(f1);\n\t['coreprops', 'extprops', 'custprops'].forEach(f3);\n\tf3('vba');\n\tf3('comments');\n\tf3('drawings');\n\tif(o.length>2){ o[o.length] = (''); o[1]=o[1].replace(\"/>\",\">\"); }\n\treturn o.join(\"\");\n}\n/* 9.3 Relationships */\nvar RELS = ({\n\tWB: \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument\",\n\tSHEET: \"http://sheetjs.openxmlformats.org/officeDocument/2006/relationships/officeDocument\",\n\tHLINK: \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/hyperlink\",\n\tVML: \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/vmlDrawing\",\n\tVBA: \"http://schemas.microsoft.com/office/2006/relationships/vbaProject\"\n});\n\n/* 9.3.3 Representing Relationships */\nfunction get_rels_path(file) {\n\tvar n = file.lastIndexOf(\"/\");\n\treturn file.slice(0,n+1) + '_rels/' + file.slice(n+1) + \".rels\";\n}\n\nfunction parse_rels(data, currentFilePath) {\n\tif (!data) return data;\n\tif (currentFilePath.charAt(0) !== '/') {\n\t\tcurrentFilePath = '/'+currentFilePath;\n\t}\n\tvar rels = {};\n\tvar hash = {};\n\n\t(data.match(tagregex)||[]).forEach(function(x) {\n\t\tvar y = parsexmltag(x);\n\t\t/* 9.3.2.2 OPC_Relationships */\n\t\tif (y[0] === '2){ o[o.length] = (''); o[1]=o[1].replace(\"/>\",\">\"); }\n\treturn o.join(\"\");\n}\n\nfunction add_rels(rels, rId, f, type, relobj) {\n\tif(!relobj) relobj = {};\n\tif(!rels['!id']) rels['!id'] = {};\n\tif(rId < 0) for(rId = 1; rels['!id']['rId' + rId]; ++rId){/* empty */}\n\trelobj.Id = 'rId' + rId;\n\trelobj.Type = type;\n\trelobj.Target = f;\n\tif(relobj.Type == RELS.HLINK) relobj.TargetMode = \"External\";\n\tif(rels['!id'][relobj.Id]) throw new Error(\"Cannot rewrite rId \" + rId);\n\trels['!id'][relobj.Id] = relobj;\n\trels[('/' + relobj.Target).replace(\"//\",\"/\")] = relobj;\n\treturn rId;\n}\n/* Open Document Format for Office Applications (OpenDocument) Version 1.2 */\n/* Part 3 Section 4 Manifest File */\nvar CT_ODS = \"application/vnd.oasis.opendocument.spreadsheet\";\nfunction parse_manifest(d, opts) {\n\tvar str = xlml_normalize(d);\n\tvar Rn;\n\tvar FEtag;\n\twhile((Rn = xlmlregex.exec(str))) switch(Rn[3]) {\n\t\tcase 'manifest': break; // 4.2 \n\t\tcase 'file-entry': // 4.3 \n\t\t\tFEtag = parsexmltag(Rn[0], false);\n\t\t\tif(FEtag.path == '/' && FEtag.type !== CT_ODS) throw new Error(\"This OpenDocument is not a spreadsheet\");\n\t\t\tbreak;\n\t\tcase 'encryption-data': // 4.4 \n\t\tcase 'algorithm': // 4.5 \n\t\tcase 'start-key-generation': // 4.6 \n\t\tcase 'key-derivation': // 4.7 \n\t\t\tthrow new Error(\"Unsupported ODS Encryption\");\n\t\tdefault: if(opts && opts.WTF) throw Rn;\n\t}\n}\n\nfunction write_manifest(manifest) {\n\tvar o = [XML_HEADER];\n\to.push('\\n');\n\to.push(' \\n');\n\tfor(var i = 0; i < manifest.length; ++i) o.push(' \\n');\n\to.push('');\n\treturn o.join(\"\");\n}\n\n/* Part 3 Section 6 Metadata Manifest File */\nfunction write_rdf_type(file, res, tag) {\n\treturn [\n\t\t' \\n',\n\t\t' \\n',\n\t\t' \\n'\n\t].join(\"\");\n}\nfunction write_rdf_has(base, file) {\n\treturn [\n\t\t' \\n',\n\t\t' \\n',\n\t\t' \\n'\n\t].join(\"\");\n}\nfunction write_rdf(rdf) {\n\tvar o = [XML_HEADER];\n\to.push('\\n');\n\tfor(var i = 0; i != rdf.length; ++i) {\n\t\to.push(write_rdf_type(rdf[i][0], rdf[i][1]));\n\t\to.push(write_rdf_has(\"\",rdf[i][0]));\n\t}\n\to.push(write_rdf_type(\"\",\"Document\", \"pkg\"));\n\to.push('');\n\treturn o.join(\"\");\n}\n/* TODO: pull properties */\nvar write_meta_ods = (function() {\n\tvar payload = 'Sheet' + 'JS ' + XLSX.version + '';\n\treturn function wmo() {\n\t\treturn payload;\n\t};\n})();\n\n/* ECMA-376 Part II 11.1 Core Properties Part */\n/* [MS-OSHARED] 2.3.3.2.[1-2].1 (PIDSI/PIDDSI) */\nvar CORE_PROPS = [\n\t[\"cp:category\", \"Category\"],\n\t[\"cp:contentStatus\", \"ContentStatus\"],\n\t[\"cp:keywords\", \"Keywords\"],\n\t[\"cp:lastModifiedBy\", \"LastAuthor\"],\n\t[\"cp:lastPrinted\", \"LastPrinted\"],\n\t[\"cp:revision\", \"RevNumber\"],\n\t[\"cp:version\", \"Version\"],\n\t[\"dc:creator\", \"Author\"],\n\t[\"dc:description\", \"Comments\"],\n\t[\"dc:identifier\", \"Identifier\"],\n\t[\"dc:language\", \"Language\"],\n\t[\"dc:subject\", \"Subject\"],\n\t[\"dc:title\", \"Title\"],\n\t[\"dcterms:created\", \"CreatedDate\", 'date'],\n\t[\"dcterms:modified\", \"ModifiedDate\", 'date']\n];\n\nXMLNS.CORE_PROPS = \"http://schemas.openxmlformats.org/package/2006/metadata/core-properties\";\nRELS.CORE_PROPS = 'http://schemas.openxmlformats.org/package/2006/relationships/metadata/core-properties';\n\nvar CORE_PROPS_REGEX = (function() {\n\tvar r = new Array(CORE_PROPS.length);\n\tfor(var i = 0; i < CORE_PROPS.length; ++i) {\n\t\tvar f = CORE_PROPS[i];\n\t\tvar g = \"(?:\"+ f[0].slice(0,f[0].indexOf(\":\")) +\":)\"+ f[0].slice(f[0].indexOf(\":\")+1);\n\t\tr[i] = new RegExp(\"<\" + g + \"[^>]*>([\\\\s\\\\S]*?)<\\/\" + g + \">\");\n\t}\n\treturn r;\n})();\n\nfunction parse_core_props(data) {\n\tvar p = {};\n\tdata = utf8read(data);\n\n\tfor(var i = 0; i < CORE_PROPS.length; ++i) {\n\t\tvar f = CORE_PROPS[i], cur = data.match(CORE_PROPS_REGEX[i]);\n\t\tif(cur != null && cur.length > 0) p[f[1]] = cur[1];\n\t\tif(f[2] === 'date' && p[f[1]]) p[f[1]] = parseDate(p[f[1]]);\n\t}\n\n\treturn p;\n}\n\nvar CORE_PROPS_XML_ROOT = writextag('cp:coreProperties', null, {\n\t//'xmlns': XMLNS.CORE_PROPS,\n\t'xmlns:cp': XMLNS.CORE_PROPS,\n\t'xmlns:dc': XMLNS.dc,\n\t'xmlns:dcterms': XMLNS.dcterms,\n\t'xmlns:dcmitype': XMLNS.dcmitype,\n\t'xmlns:xsi': XMLNS.xsi\n});\n\nfunction cp_doit(f, g, h, o, p) {\n\tif(p[f] != null || g == null || g === \"\") return;\n\tp[f] = g;\n\to[o.length] = (h ? writextag(f,g,h) : writetag(f,g));\n}\n\nfunction write_core_props(cp, _opts) {\n\tvar opts = _opts || {};\n\tvar o = [XML_HEADER, CORE_PROPS_XML_ROOT], p = {};\n\tif(!cp && !opts.Props) return o.join(\"\");\n\n\tif(cp) {\n\t\tif(cp.CreatedDate != null) cp_doit(\"dcterms:created\", typeof cp.CreatedDate === \"string\" ? cp.CreatedDate : write_w3cdtf(cp.CreatedDate, opts.WTF), {\"xsi:type\":\"dcterms:W3CDTF\"}, o, p);\n\t\tif(cp.ModifiedDate != null) cp_doit(\"dcterms:modified\", typeof cp.ModifiedDate === \"string\" ? cp.ModifiedDate : write_w3cdtf(cp.ModifiedDate, opts.WTF), {\"xsi:type\":\"dcterms:W3CDTF\"}, o, p);\n\t}\n\n\tfor(var i = 0; i != CORE_PROPS.length; ++i) {\n\t\tvar f = CORE_PROPS[i];\n\t\tvar v = opts.Props && opts.Props[f[1]] != null ? opts.Props[f[1]] : cp ? cp[f[1]] : null;\n\t\tif(v === true) v = \"1\";\n\t\telse if(v === false) v = \"0\";\n\t\telse if(typeof v == \"number\") v = String(v);\n\t\tif(v != null) cp_doit(f[0], v, null, o, p);\n\t}\n\tif(o.length>2){ o[o.length] = (''); o[1]=o[1].replace(\"/>\",\">\"); }\n\treturn o.join(\"\");\n}\n/* 15.2.12.3 Extended File Properties Part */\n/* [MS-OSHARED] 2.3.3.2.[1-2].1 (PIDSI/PIDDSI) */\nvar EXT_PROPS = [\n\t[\"Application\", \"Application\", \"string\"],\n\t[\"AppVersion\", \"AppVersion\", \"string\"],\n\t[\"Company\", \"Company\", \"string\"],\n\t[\"DocSecurity\", \"DocSecurity\", \"string\"],\n\t[\"Manager\", \"Manager\", \"string\"],\n\t[\"HyperlinksChanged\", \"HyperlinksChanged\", \"bool\"],\n\t[\"SharedDoc\", \"SharedDoc\", \"bool\"],\n\t[\"LinksUpToDate\", \"LinksUpToDate\", \"bool\"],\n\t[\"ScaleCrop\", \"ScaleCrop\", \"bool\"],\n\t[\"HeadingPairs\", \"HeadingPairs\", \"raw\"],\n\t[\"TitlesOfParts\", \"TitlesOfParts\", \"raw\"]\n];\n\nXMLNS.EXT_PROPS = \"http://schemas.openxmlformats.org/officeDocument/2006/extended-properties\";\nRELS.EXT_PROPS = 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/extended-properties';\n\nvar PseudoPropsPairs = [\n\t\"Worksheets\", \"SheetNames\",\n\t\"NamedRanges\", \"DefinedNames\",\n\t\"Chartsheets\", \"ChartNames\"\n];\nfunction load_props_pairs(HP, TOP, props, opts) {\n\tvar v = [];\n\tif(typeof HP == \"string\") v = parseVector(HP, opts);\n\telse for(var j = 0; j < HP.length; ++j) v = v.concat(HP[j].map(function(hp) { return {v:hp}; }));\n\tvar parts = (typeof TOP == \"string\") ? parseVector(TOP, opts).map(function (x) { return x.v; }) : TOP;\n\tvar idx = 0, len = 0;\n\tif(parts.length > 0) for(var i = 0; i !== v.length; i += 2) {\n\t\tlen = +(v[i+1].v);\n\t\tswitch(v[i].v) {\n\t\t\tcase \"Worksheets\":\n\t\t\tcase \"工作表\":\n\t\t\tcase \"Листы\":\n\t\t\tcase \"أوراق العمل\":\n\t\t\tcase \"ワークシート\":\n\t\t\tcase \"גליונות עבודה\":\n\t\t\tcase \"Arbeitsblätter\":\n\t\t\tcase \"Çalışma Sayfaları\":\n\t\t\tcase \"Feuilles de calcul\":\n\t\t\tcase \"Fogli di lavoro\":\n\t\t\tcase \"Folhas de cálculo\":\n\t\t\tcase \"Planilhas\":\n\t\t\tcase \"Regneark\":\n\t\t\tcase \"Werkbladen\":\n\t\t\t\tprops.Worksheets = len;\n\t\t\t\tprops.SheetNames = parts.slice(idx, idx + len);\n\t\t\t\tbreak;\n\n\t\t\tcase \"Named Ranges\":\n\t\t\tcase \"名前付き一覧\":\n\t\t\tcase \"Benannte Bereiche\":\n\t\t\tcase \"Navngivne områder\":\n\t\t\t\tprops.NamedRanges = len;\n\t\t\t\tprops.DefinedNames = parts.slice(idx, idx + len);\n\t\t\t\tbreak;\n\n\t\t\tcase \"Charts\":\n\t\t\tcase \"Diagramme\":\n\t\t\t\tprops.Chartsheets = len;\n\t\t\t\tprops.ChartNames = parts.slice(idx, idx + len);\n\t\t\t\tbreak;\n\t\t}\n\t\tidx += len;\n\t}\n}\n\nfunction parse_ext_props(data, p, opts) {\n\tvar q = {}; if(!p) p = {};\n\tdata = utf8read(data);\n\n\tEXT_PROPS.forEach(function(f) {\n\t\tswitch(f[2]) {\n\t\t\tcase \"string\": p[f[1]] = (data.match(matchtag(f[0]))||[])[1]; break;\n\t\t\tcase \"bool\": p[f[1]] = (data.match(matchtag(f[0]))||[])[1] === \"true\"; break;\n\t\t\tcase \"raw\":\n\t\t\t\tvar cur = data.match(new RegExp(\"<\" + f[0] + \"[^>]*>([\\\\s\\\\S]*?)<\\/\" + f[0] + \">\"));\n\t\t\t\tif(cur && cur.length > 0) q[f[1]] = cur[1];\n\t\t\t\tbreak;\n\t\t}\n\t});\n\n\tif(q.HeadingPairs && q.TitlesOfParts) load_props_pairs(q.HeadingPairs, q.TitlesOfParts, p, opts);\n\n\treturn p;\n}\n\nvar EXT_PROPS_XML_ROOT = writextag('Properties', null, {\n\t'xmlns': XMLNS.EXT_PROPS,\n\t'xmlns:vt': XMLNS.vt\n});\n\nfunction write_ext_props(cp) {\n\tvar o = [], W = writextag;\n\tif(!cp) cp = {};\n\tcp.Application = \"SheetJS\";\n\to[o.length] = (XML_HEADER);\n\to[o.length] = (EXT_PROPS_XML_ROOT);\n\n\tEXT_PROPS.forEach(function(f) {\n\t\tif(cp[f[1]] === undefined) return;\n\t\tvar v;\n\t\tswitch(f[2]) {\n\t\t\tcase 'string': v = String(cp[f[1]]); break;\n\t\t\tcase 'bool': v = cp[f[1]] ? 'true' : 'false'; break;\n\t\t}\n\t\tif(v !== undefined) o[o.length] = (W(f[0], v));\n\t});\n\n\t/* TODO: HeadingPairs, TitlesOfParts */\n\to[o.length] = (W('HeadingPairs', W('vt:vector', W('vt:variant', 'Worksheets')+W('vt:variant', W('vt:i4', String(cp.Worksheets))), {size:2, baseType:\"variant\"})));\n\to[o.length] = (W('TitlesOfParts', W('vt:vector', cp.SheetNames.map(function(s) { return \"\" + escapexml(s) + \"\"; }).join(\"\"), {size: cp.Worksheets, baseType:\"lpstr\"})));\n\tif(o.length>2){ o[o.length] = (''); o[1]=o[1].replace(\"/>\",\">\"); }\n\treturn o.join(\"\");\n}\n/* 15.2.12.2 Custom File Properties Part */\nXMLNS.CUST_PROPS = \"http://schemas.openxmlformats.org/officeDocument/2006/custom-properties\";\nRELS.CUST_PROPS = 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/custom-properties';\n\nvar custregex = /<[^>]+>[^<]*/g;\nfunction parse_cust_props(data, opts) {\n\tvar p = {}, name = \"\";\n\tvar m = data.match(custregex);\n\tif(m) for(var i = 0; i != m.length; ++i) {\n\t\tvar x = m[i], y = parsexmltag(x);\n\t\tswitch(y[0]) {\n\t\t\tcase '': name = null; break;\n\t\t\tdefault: if (x.indexOf('');\n\t\t\t\tvar type = toks[0].slice(4), text = toks[1];\n\t\t\t\t/* 22.4.2.32 (CT_Variant). Omit the binary types from 22.4 (Variant Types) */\n\t\t\t\tswitch(type) {\n\t\t\t\t\tcase 'lpstr': case 'bstr': case 'lpwstr':\n\t\t\t\t\t\tp[name] = unescapexml(text);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'bool':\n\t\t\t\t\t\tp[name] = parsexmlbool(text);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'i1': case 'i2': case 'i4': case 'i8': case 'int': case 'uint':\n\t\t\t\t\t\tp[name] = parseInt(text, 10);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'r4': case 'r8': case 'decimal':\n\t\t\t\t\t\tp[name] = parseFloat(text);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'filetime': case 'date':\n\t\t\t\t\t\tp[name] = parseDate(text);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'cy': case 'error':\n\t\t\t\t\t\tp[name] = unescapexml(text);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tif(type.slice(-1) == '/') break;\n\t\t\t\t\t\tif(opts.WTF && typeof console !== 'undefined') console.warn('Unexpected', x, type, toks);\n\t\t\t\t}\n\t\t\t} else if(x.slice(0,2) === \"2){ o[o.length] = ''; o[1]=o[1].replace(\"/>\",\">\"); }\n\treturn o.join(\"\");\n}\n/* Common Name -> XLML Name */\nvar XLMLDocPropsMap = {\n\tTitle: 'Title',\n\tSubject: 'Subject',\n\tAuthor: 'Author',\n\tKeywords: 'Keywords',\n\tComments: 'Description',\n\tLastAuthor: 'LastAuthor',\n\tRevNumber: 'Revision',\n\tApplication: 'AppName',\n\t/* TotalTime: 'TotalTime', */\n\tLastPrinted: 'LastPrinted',\n\tCreatedDate: 'Created',\n\tModifiedDate: 'LastSaved',\n\t/* Pages */\n\t/* Words */\n\t/* Characters */\n\tCategory: 'Category',\n\t/* PresentationFormat */\n\tManager: 'Manager',\n\tCompany: 'Company',\n\t/* Guid */\n\t/* HyperlinkBase */\n\t/* Bytes */\n\t/* Lines */\n\t/* Paragraphs */\n\t/* CharactersWithSpaces */\n\tAppVersion: 'Version',\n\n\tContentStatus: 'ContentStatus', /* NOTE: missing from schema */\n\tIdentifier: 'Identifier', /* NOTE: missing from schema */\n\tLanguage: 'Language' /* NOTE: missing from schema */\n};\nvar evert_XLMLDPM = evert(XLMLDocPropsMap);\n\nfunction xlml_set_prop(Props, tag, val) {\n\ttag = evert_XLMLDPM[tag] || tag;\n\tProps[tag] = val;\n}\n\nfunction xlml_write_docprops(Props, opts) {\n\tvar o = [];\n\tkeys(XLMLDocPropsMap).map(function(m) {\n\t\tfor(var i = 0; i < CORE_PROPS.length; ++i) if(CORE_PROPS[i][1] == m) return CORE_PROPS[i];\n\t\tfor(i = 0; i < EXT_PROPS.length; ++i) if(EXT_PROPS[i][1] == m) return EXT_PROPS[i];\n\t\tthrow m;\n\t}).forEach(function(p) {\n\t\tif(Props[p[1]] == null) return;\n\t\tvar m = opts && opts.Props && opts.Props[p[1]] != null ? opts.Props[p[1]] : Props[p[1]];\n\t\tswitch(p[2]) {\n\t\t\tcase 'date': m = new Date(m).toISOString().replace(/\\.\\d*Z/,\"Z\"); break;\n\t\t}\n\t\tif(typeof m == 'number') m = String(m);\n\t\telse if(m === true || m === false) { m = m ? \"1\" : \"0\"; }\n\t\telse if(m instanceof Date) m = new Date(m).toISOString().replace(/\\.\\d*Z/,\"\");\n\t\to.push(writetag(XLMLDocPropsMap[p[1]] || p[1], m));\n\t});\n\treturn writextag('DocumentProperties', o.join(\"\"), {xmlns:XLMLNS.o });\n}\nfunction xlml_write_custprops(Props, Custprops) {\n\tvar BLACKLIST = [\"Worksheets\",\"SheetNames\"];\n\tvar T = 'CustomDocumentProperties';\n\tvar o = [];\n\tif(Props) keys(Props).forEach(function(k) {\nif(!Props.hasOwnProperty(k)) return;\n\t\tfor(var i = 0; i < CORE_PROPS.length; ++i) if(k == CORE_PROPS[i][1]) return;\n\t\tfor(i = 0; i < EXT_PROPS.length; ++i) if(k == EXT_PROPS[i][1]) return;\n\t\tfor(i = 0; i < BLACKLIST.length; ++i) if(k == BLACKLIST[i]) return;\n\n\t\tvar m = Props[k];\n\t\tvar t = \"string\";\n\t\tif(typeof m == 'number') { t = \"float\"; m = String(m); }\n\t\telse if(m === true || m === false) { t = \"boolean\"; m = m ? \"1\" : \"0\"; }\n\t\telse m = String(m);\n\t\to.push(writextag(escapexmltag(k), m, {\"dt:dt\":t}));\n\t});\n\tif(Custprops) keys(Custprops).forEach(function(k) {\nif(!Custprops.hasOwnProperty(k)) return;\n\t\tif(Props && Props.hasOwnProperty(k)) return;\n\t\tvar m = Custprops[k];\n\t\tvar t = \"string\";\n\t\tif(typeof m == 'number') { t = \"float\"; m = String(m); }\n\t\telse if(m === true || m === false) { t = \"boolean\"; m = m ? \"1\" : \"0\"; }\n\t\telse if(m instanceof Date) { t = \"dateTime.tz\"; m = m.toISOString(); }\n\t\telse m = String(m);\n\t\to.push(writextag(escapexmltag(k), m, {\"dt:dt\":t}));\n\t});\n\treturn '<' + T + ' xmlns=\"' + XLMLNS.o + '\">' + o.join(\"\") + '';\n}\n/* [MS-DTYP] 2.3.3 FILETIME */\n/* [MS-OLEDS] 2.1.3 FILETIME (Packet Version) */\n/* [MS-OLEPS] 2.8 FILETIME (Packet Version) */\nfunction parse_FILETIME(blob) {\n\tvar dwLowDateTime = blob.read_shift(4), dwHighDateTime = blob.read_shift(4);\n\treturn new Date(((dwHighDateTime/1e7*Math.pow(2,32) + dwLowDateTime/1e7) - 11644473600)*1000).toISOString().replace(/\\.000/,\"\");\n}\nfunction write_FILETIME(time) {\n\tvar date = (typeof time == \"string\") ? new Date(Date.parse(time)) : time;\n\tvar t = date.getTime() / 1000 + 11644473600;\n\tvar l = t % Math.pow(2,32), h = (t - l) / Math.pow(2,32);\n\tl *= 1e7; h *= 1e7;\n\tvar w = (l / Math.pow(2,32)) | 0;\n\tif(w > 0) { l = l % Math.pow(2,32); h += w; }\n\tvar o = new_buf(8); o.write_shift(4, l); o.write_shift(4, h); return o;\n}\n\n/* [MS-OSHARED] 2.3.3.1.4 Lpstr */\nfunction parse_lpstr(blob, type, pad) {\n\tvar start = blob.l;\n\tvar str = blob.read_shift(0, 'lpstr-cp');\n\tif(pad) while((blob.l - start) & 3) ++blob.l;\n\treturn str;\n}\n\n/* [MS-OSHARED] 2.3.3.1.6 Lpwstr */\nfunction parse_lpwstr(blob, type, pad) {\n\tvar str = blob.read_shift(0, 'lpwstr');\n\tif(pad) blob.l += (4 - ((str.length+1) & 3)) & 3;\n\treturn str;\n}\n\n\n/* [MS-OSHARED] 2.3.3.1.11 VtString */\n/* [MS-OSHARED] 2.3.3.1.12 VtUnalignedString */\nfunction parse_VtStringBase(blob, stringType, pad) {\n\tif(stringType === 0x1F /*VT_LPWSTR*/) return parse_lpwstr(blob);\n\treturn parse_lpstr(blob, stringType, pad);\n}\n\nfunction parse_VtString(blob, t, pad) { return parse_VtStringBase(blob, t, pad === false ? 0: 4); }\nfunction parse_VtUnalignedString(blob, t) { if(!t) throw new Error(\"VtUnalignedString must have positive length\"); return parse_VtStringBase(blob, t, 0); }\n\n/* [MS-OSHARED] 2.3.3.1.9 VtVecUnalignedLpstrValue */\nfunction parse_VtVecUnalignedLpstrValue(blob) {\n\tvar length = blob.read_shift(4);\n\tvar ret = [];\n\tfor(var i = 0; i != length; ++i) ret[i] = blob.read_shift(0, 'lpstr-cp').replace(chr0,'');\n\treturn ret;\n}\n\n/* [MS-OSHARED] 2.3.3.1.10 VtVecUnalignedLpstr */\nfunction parse_VtVecUnalignedLpstr(blob) {\n\treturn parse_VtVecUnalignedLpstrValue(blob);\n}\n\n/* [MS-OSHARED] 2.3.3.1.13 VtHeadingPair */\nfunction parse_VtHeadingPair(blob) {\n\tvar headingString = parse_TypedPropertyValue(blob, VT_USTR);\n\tvar headerParts = parse_TypedPropertyValue(blob, VT_I4);\n\treturn [headingString, headerParts];\n}\n\n/* [MS-OSHARED] 2.3.3.1.14 VtVecHeadingPairValue */\nfunction parse_VtVecHeadingPairValue(blob) {\n\tvar cElements = blob.read_shift(4);\n\tvar out = [];\n\tfor(var i = 0; i != cElements / 2; ++i) out.push(parse_VtHeadingPair(blob));\n\treturn out;\n}\n\n/* [MS-OSHARED] 2.3.3.1.15 VtVecHeadingPair */\nfunction parse_VtVecHeadingPair(blob) {\n\t// NOTE: When invoked, wType & padding were already consumed\n\treturn parse_VtVecHeadingPairValue(blob);\n}\n\n/* [MS-OLEPS] 2.18.1 Dictionary (uses 2.17, 2.16) */\nfunction parse_dictionary(blob,CodePage) {\n\tvar cnt = blob.read_shift(4);\n\tvar dict = ({});\n\tfor(var j = 0; j != cnt; ++j) {\n\t\tvar pid = blob.read_shift(4);\n\t\tvar len = blob.read_shift(4);\n\t\tdict[pid] = blob.read_shift(len, (CodePage === 0x4B0 ?'utf16le':'utf8')).replace(chr0,'').replace(chr1,'!');\n\t\tif(CodePage === 0x4B0 && (len % 2)) blob.l += 2;\n\t}\n\tif(blob.l & 3) blob.l = (blob.l>>2+1)<<2;\n\treturn dict;\n}\n\n/* [MS-OLEPS] 2.9 BLOB */\nfunction parse_BLOB(blob) {\n\tvar size = blob.read_shift(4);\n\tvar bytes = blob.slice(blob.l,blob.l+size);\n\tblob.l += size;\n\tif((size & 3) > 0) blob.l += (4 - (size & 3)) & 3;\n\treturn bytes;\n}\n\n/* [MS-OLEPS] 2.11 ClipboardData */\nfunction parse_ClipboardData(blob) {\n\t// TODO\n\tvar o = {};\n\to.Size = blob.read_shift(4);\n\t//o.Format = blob.read_shift(4);\n\tblob.l += o.Size + 3 - (o.Size - 1) % 4;\n\treturn o;\n}\n\n/* [MS-OLEPS] 2.15 TypedPropertyValue */\nfunction parse_TypedPropertyValue(blob, type, _opts) {\n\tvar t = blob.read_shift(2), ret, opts = _opts||{};\n\tblob.l += 2;\n\tif(type !== VT_VARIANT)\n\tif(t !== type && VT_CUSTOM.indexOf(type)===-1) throw new Error('Expected type ' + type + ' saw ' + t);\n\tswitch(type === VT_VARIANT ? t : type) {\n\t\tcase 0x02 /*VT_I2*/: ret = blob.read_shift(2, 'i'); if(!opts.raw) blob.l += 2; return ret;\n\t\tcase 0x03 /*VT_I4*/: ret = blob.read_shift(4, 'i'); return ret;\n\t\tcase 0x0B /*VT_BOOL*/: return blob.read_shift(4) !== 0x0;\n\t\tcase 0x13 /*VT_UI4*/: ret = blob.read_shift(4); return ret;\n\t\tcase 0x1E /*VT_LPSTR*/: return parse_lpstr(blob, t, 4).replace(chr0,'');\n\t\tcase 0x1F /*VT_LPWSTR*/: return parse_lpwstr(blob);\n\t\tcase 0x40 /*VT_FILETIME*/: return parse_FILETIME(blob);\n\t\tcase 0x41 /*VT_BLOB*/: return parse_BLOB(blob);\n\t\tcase 0x47 /*VT_CF*/: return parse_ClipboardData(blob);\n\t\tcase 0x50 /*VT_STRING*/: return parse_VtString(blob, t, !opts.raw).replace(chr0,'');\n\t\tcase 0x51 /*VT_USTR*/: return parse_VtUnalignedString(blob, t/*, 4*/).replace(chr0,'');\n\t\tcase 0x100C /*VT_VECTOR|VT_VARIANT*/: return parse_VtVecHeadingPair(blob);\n\t\tcase 0x101E /*VT_LPSTR*/: return parse_VtVecUnalignedLpstr(blob);\n\t\tdefault: throw new Error(\"TypedPropertyValue unrecognized type \" + type + \" \" + t);\n\t}\n}\nfunction write_TypedPropertyValue(type, value) {\n\tvar o = new_buf(4), p = new_buf(4);\n\to.write_shift(4, type == 0x50 ? 0x1F : type);\n\tswitch(type) {\n\t\tcase 0x03 /*VT_I4*/: p.write_shift(-4, value); break;\n\t\tcase 0x05 /*VT_I4*/: p = new_buf(8); p.write_shift(8, value, 'f'); break;\n\t\tcase 0x0B /*VT_BOOL*/: p.write_shift(4, value ? 0x01 : 0x00); break;\n\t\tcase 0x40 /*VT_FILETIME*/: p = write_FILETIME(value); break;\n\t\tcase 0x1F /*VT_LPWSTR*/:\n\t\tcase 0x50 /*VT_STRING*/:\np = new_buf(4 + 2 * (value.length + 1) + (value.length % 2 ? 0 : 2));\n\t\t\tp.write_shift(4, value.length + 1);\n\t\t\tp.write_shift(0, value, \"dbcs\");\n\t\t\twhile(p.l != p.length) p.write_shift(1, 0);\n\t\t\tbreak;\n\t\tdefault: throw new Error(\"TypedPropertyValue unrecognized type \" + type + \" \" + value);\n\t}\n\treturn bconcat([o, p]);\n}\n\n/* [MS-OLEPS] 2.20 PropertySet */\nfunction parse_PropertySet(blob, PIDSI) {\n\tvar start_addr = blob.l;\n\tvar size = blob.read_shift(4);\n\tvar NumProps = blob.read_shift(4);\n\tvar Props = [], i = 0;\n\tvar CodePage = 0;\n\tvar Dictionary = -1, DictObj = ({});\n\tfor(i = 0; i != NumProps; ++i) {\n\t\tvar PropID = blob.read_shift(4);\n\t\tvar Offset = blob.read_shift(4);\n\t\tProps[i] = [PropID, Offset + start_addr];\n\t}\n\tProps.sort(function(x,y) { return x[1] - y[1]; });\n\tvar PropH = {};\n\tfor(i = 0; i != NumProps; ++i) {\n\t\tif(blob.l !== Props[i][1]) {\n\t\t\tvar fail = true;\n\t\t\tif(i>0 && PIDSI) switch(PIDSI[Props[i-1][0]].t) {\n\t\t\t\tcase 0x02 /*VT_I2*/: if(blob.l+2 === Props[i][1]) { blob.l+=2; fail = false; } break;\n\t\t\t\tcase 0x50 /*VT_STRING*/: if(blob.l <= Props[i][1]) { blob.l=Props[i][1]; fail = false; } break;\n\t\t\t\tcase 0x100C /*VT_VECTOR|VT_VARIANT*/: if(blob.l <= Props[i][1]) { blob.l=Props[i][1]; fail = false; } break;\n\t\t\t}\n\t\t\tif((!PIDSI||i==0) && blob.l <= Props[i][1]) { fail=false; blob.l = Props[i][1]; }\n\t\t\tif(fail) throw new Error(\"Read Error: Expected address \" + Props[i][1] + ' at ' + blob.l + ' :' + i);\n\t\t}\n\t\tif(PIDSI) {\n\t\t\tvar piddsi = PIDSI[Props[i][0]];\n\t\t\tPropH[piddsi.n] = parse_TypedPropertyValue(blob, piddsi.t, {raw:true});\n\t\t\tif(piddsi.p === 'version') PropH[piddsi.n] = String(PropH[piddsi.n] >> 16) + \".\" + (\"0000\" + String(PropH[piddsi.n] & 0xFFFF)).slice(-4);\n\t\t\tif(piddsi.n == \"CodePage\") switch(PropH[piddsi.n]) {\n\t\t\t\tcase 0: PropH[piddsi.n] = 1252;\n\t\t\t\t\t/* falls through */\n\t\t\t\tcase 874:\n\t\t\t\tcase 932:\n\t\t\t\tcase 936:\n\t\t\t\tcase 949:\n\t\t\t\tcase 950:\n\t\t\t\tcase 1250:\n\t\t\t\tcase 1251:\n\t\t\t\tcase 1253:\n\t\t\t\tcase 1254:\n\t\t\t\tcase 1255:\n\t\t\t\tcase 1256:\n\t\t\t\tcase 1257:\n\t\t\t\tcase 1258:\n\t\t\t\tcase 10000:\n\t\t\t\tcase 1200:\n\t\t\t\tcase 1201:\n\t\t\t\tcase 1252:\n\t\t\t\tcase 65000: case -536:\n\t\t\t\tcase 65001: case -535:\n\t\t\t\t\tset_cp(CodePage = (PropH[piddsi.n]>>>0) & 0xFFFF); break;\n\t\t\t\tdefault: throw new Error(\"Unsupported CodePage: \" + PropH[piddsi.n]);\n\t\t\t}\n\t\t} else {\n\t\t\tif(Props[i][0] === 0x1) {\n\t\t\t\tCodePage = PropH.CodePage = (parse_TypedPropertyValue(blob, VT_I2));\n\t\t\t\tset_cp(CodePage);\n\t\t\t\tif(Dictionary !== -1) {\n\t\t\t\t\tvar oldpos = blob.l;\n\t\t\t\t\tblob.l = Props[Dictionary][1];\n\t\t\t\t\tDictObj = parse_dictionary(blob,CodePage);\n\t\t\t\t\tblob.l = oldpos;\n\t\t\t\t}\n\t\t\t} else if(Props[i][0] === 0) {\n\t\t\t\tif(CodePage === 0) { Dictionary = i; blob.l = Props[i+1][1]; continue; }\n\t\t\t\tDictObj = parse_dictionary(blob,CodePage);\n\t\t\t} else {\n\t\t\t\tvar name = DictObj[Props[i][0]];\n\t\t\t\tvar val;\n\t\t\t\t/* [MS-OSHARED] 2.3.3.2.3.1.2 + PROPVARIANT */\n\t\t\t\tswitch(blob[blob.l]) {\n\t\t\t\t\tcase 0x41 /*VT_BLOB*/: blob.l += 4; val = parse_BLOB(blob); break;\n\t\t\t\t\tcase 0x1E /*VT_LPSTR*/: blob.l += 4; val = parse_VtString(blob, blob[blob.l-4]).replace(/\\u0000+$/,\"\"); break;\n\t\t\t\t\tcase 0x1F /*VT_LPWSTR*/: blob.l += 4; val = parse_VtString(blob, blob[blob.l-4]).replace(/\\u0000+$/,\"\"); break;\n\t\t\t\t\tcase 0x03 /*VT_I4*/: blob.l += 4; val = blob.read_shift(4, 'i'); break;\n\t\t\t\t\tcase 0x13 /*VT_UI4*/: blob.l += 4; val = blob.read_shift(4); break;\n\t\t\t\t\tcase 0x05 /*VT_R8*/: blob.l += 4; val = blob.read_shift(8, 'f'); break;\n\t\t\t\t\tcase 0x0B /*VT_BOOL*/: blob.l += 4; val = parsebool(blob, 4); break;\n\t\t\t\t\tcase 0x40 /*VT_FILETIME*/: blob.l += 4; val = parseDate(parse_FILETIME(blob)); break;\n\t\t\t\t\tdefault: throw new Error(\"unparsed value: \" + blob[blob.l]);\n\t\t\t\t}\n\t\t\t\tPropH[name] = val;\n\t\t\t}\n\t\t}\n\t}\n\tblob.l = start_addr + size; /* step ahead to skip padding */\n\treturn PropH;\n}\nvar XLSPSSkip = [ \"CodePage\", \"Thumbnail\", \"_PID_LINKBASE\", \"_PID_HLINKS\", \"SystemIdentifier\", \"FMTID\" ].concat(PseudoPropsPairs);\nfunction guess_property_type(val) {\n\tswitch(typeof val) {\n\t\tcase \"boolean\": return 0x0B;\n\t\tcase \"number\": return ((val|0)==val) ? 0x03 : 0x05;\n\t\tcase \"string\": return 0x1F;\n\t\tcase \"object\": if(val instanceof Date) return 0x40; break;\n\t}\n\treturn -1;\n}\nfunction write_PropertySet(entries, RE, PIDSI) {\n\tvar hdr = new_buf(8), piao = [], prop = [];\n\tvar sz = 8, i = 0;\n\n\tvar pr = new_buf(8), pio = new_buf(8);\n\tpr.write_shift(4, 0x0002);\n\tpr.write_shift(4, 0x04B0);\n\tpio.write_shift(4, 0x0001);\n\tprop.push(pr); piao.push(pio);\n\tsz += 8 + pr.length;\n\n\tif(!RE) {\n\t\tpio = new_buf(8);\n\t\tpio.write_shift(4, 0);\n\t\tpiao.unshift(pio);\n\n\t\tvar bufs = [new_buf(4)];\n\t\tbufs[0].write_shift(4, entries.length);\n\t\tfor(i = 0; i < entries.length; ++i) {\n\t\t\tvar value = entries[i][0];\n\t\t\tpr = new_buf(4 + 4 + 2 * (value.length + 1) + (value.length % 2 ? 0 : 2));\n\t\t\tpr.write_shift(4, i+2);\n\t\t\tpr.write_shift(4, value.length + 1);\n\t\t\tpr.write_shift(0, value, \"dbcs\");\n\t\t\twhile(pr.l != pr.length) pr.write_shift(1, 0);\n\t\t\tbufs.push(pr);\n\t\t}\n\t\tpr = bconcat(bufs);\n\t\tprop.unshift(pr);\n\t\tsz += 8 + pr.length;\n\t}\n\n\tfor(i = 0; i < entries.length; ++i) {\n\t\tif(RE && !RE[entries[i][0]]) continue;\n\t\tif(XLSPSSkip.indexOf(entries[i][0]) > -1) continue;\n\t\tif(entries[i][1] == null) continue;\n\n\t\tvar val = entries[i][1], idx = 0;\n\t\tif(RE) {\n\t\t\tidx = +RE[entries[i][0]];\n\t\t\tvar pinfo = (PIDSI)[idx];\n\t\t\tif(pinfo.p == \"version\" && typeof val == \"string\") {\nvar arr = val.split(\".\");\n\t\t\t\tval = ((+arr[0])<<16) + ((+arr[1])||0);\n\t\t\t}\n\t\t\tpr = write_TypedPropertyValue(pinfo.t, val);\n\t\t} else {\n\t\t\tvar T = guess_property_type(val);\n\t\t\tif(T == -1) { T = 0x1F; val = String(val); }\n\t\t\tpr = write_TypedPropertyValue(T, val);\n\t\t}\n\t\tprop.push(pr);\n\n\t\tpio = new_buf(8);\n\t\tpio.write_shift(4, !RE ? 2+i : idx);\n\t\tpiao.push(pio);\n\n\t\tsz += 8 + pr.length;\n\t}\n\n\tvar w = 8 * (prop.length + 1);\n\tfor(i = 0; i < prop.length; ++i) { piao[i].write_shift(4, w); w += prop[i].length; }\n\thdr.write_shift(4, sz);\n\thdr.write_shift(4, prop.length);\n\treturn bconcat([hdr].concat(piao).concat(prop));\n}\n\n/* [MS-OLEPS] 2.21 PropertySetStream */\nfunction parse_PropertySetStream(file, PIDSI, clsid) {\n\tvar blob = file.content;\n\tif(!blob) return ({});\n\tprep_blob(blob, 0);\n\n\tvar NumSets, FMTID0, FMTID1, Offset0, Offset1 = 0;\n\tblob.chk('feff', 'Byte Order: ');\n\n\t/*var vers = */blob.read_shift(2); // TODO: check version\n\tvar SystemIdentifier = blob.read_shift(4);\n\tvar CLSID = blob.read_shift(16);\n\tif(CLSID !== CFB.utils.consts.HEADER_CLSID && CLSID !== clsid) throw new Error(\"Bad PropertySet CLSID \" + CLSID);\n\tNumSets = blob.read_shift(4);\n\tif(NumSets !== 1 && NumSets !== 2) throw new Error(\"Unrecognized #Sets: \" + NumSets);\n\tFMTID0 = blob.read_shift(16); Offset0 = blob.read_shift(4);\n\n\tif(NumSets === 1 && Offset0 !== blob.l) throw new Error(\"Length mismatch: \" + Offset0 + \" !== \" + blob.l);\n\telse if(NumSets === 2) { FMTID1 = blob.read_shift(16); Offset1 = blob.read_shift(4); }\n\tvar PSet0 = parse_PropertySet(blob, PIDSI);\n\n\tvar rval = ({ SystemIdentifier: SystemIdentifier });\n\tfor(var y in PSet0) rval[y] = PSet0[y];\n\t//rval.blob = blob;\n\trval.FMTID = FMTID0;\n\t//rval.PSet0 = PSet0;\n\tif(NumSets === 1) return rval;\n\tif(Offset1 - blob.l == 2) blob.l += 2;\n\tif(blob.l !== Offset1) throw new Error(\"Length mismatch 2: \" + blob.l + \" !== \" + Offset1);\n\tvar PSet1;\n\ttry { PSet1 = parse_PropertySet(blob, null); } catch(e) {/* empty */}\n\tfor(y in PSet1) rval[y] = PSet1[y];\n\trval.FMTID = [FMTID0, FMTID1]; // TODO: verify FMTID0/1\n\treturn rval;\n}\nfunction write_PropertySetStream(entries, clsid, RE, PIDSI, entries2, clsid2) {\n\tvar hdr = new_buf(entries2 ? 68 : 48);\n\tvar bufs = [hdr];\n\thdr.write_shift(2, 0xFFFE);\n\thdr.write_shift(2, 0x0000); /* TODO: type 1 props */\n\thdr.write_shift(4, 0x32363237);\n\thdr.write_shift(16, CFB.utils.consts.HEADER_CLSID, \"hex\");\n\thdr.write_shift(4, (entries2 ? 2 : 1));\n\thdr.write_shift(16, clsid, \"hex\");\n\thdr.write_shift(4, (entries2 ? 68 : 48));\n\tvar ps0 = write_PropertySet(entries, RE, PIDSI);\n\tbufs.push(ps0);\n\n\tif(entries2) {\n\t\tvar ps1 = write_PropertySet(entries2, null, null);\n\t\thdr.write_shift(16, clsid2, \"hex\");\n\t\thdr.write_shift(4, 68 + ps0.length);\n\t\tbufs.push(ps1);\n\t}\n\treturn bconcat(bufs);\n}\n\nfunction parsenoop2(blob, length) { blob.read_shift(length); return null; }\nfunction writezeroes(n, o) { if(!o) o=new_buf(n); for(var j=0; j= 12 ? 2 : 1);\n\tvar encoding = 'sbcs-cont';\n\tvar cp = current_codepage;\n\tif(opts && opts.biff >= 8) current_codepage = 1200;\n\tif(!opts || opts.biff == 8 ) {\n\t\tvar fHighByte = blob.read_shift(1);\n\t\tif(fHighByte) { encoding = 'dbcs-cont'; }\n\t} else if(opts.biff == 12) {\n\t\tencoding = 'wstr';\n\t}\n\tif(opts.biff >= 2 && opts.biff <= 5) encoding = 'cpstr';\n\tvar o = cch ? blob.read_shift(cch, encoding) : \"\";\n\tcurrent_codepage = cp;\n\treturn o;\n}\n\n/* 2.5.293 XLUnicodeRichExtendedString */\nfunction parse_XLUnicodeRichExtendedString(blob) {\n\tvar cp = current_codepage;\n\tcurrent_codepage = 1200;\n\tvar cch = blob.read_shift(2), flags = blob.read_shift(1);\n\tvar /*fHighByte = flags & 0x1,*/ fExtSt = flags & 0x4, fRichSt = flags & 0x8;\n\tvar width = 1 + (flags & 0x1); // 0x0 -> utf8, 0x1 -> dbcs\n\tvar cRun = 0, cbExtRst;\n\tvar z = {};\n\tif(fRichSt) cRun = blob.read_shift(2);\n\tif(fExtSt) cbExtRst = blob.read_shift(4);\n\tvar encoding = width == 2 ? 'dbcs-cont' : 'sbcs-cont';\n\tvar msg = cch === 0 ? \"\" : blob.read_shift(cch, encoding);\n\tif(fRichSt) blob.l += 4 * cRun; //TODO: parse this\n\tif(fExtSt) blob.l += cbExtRst; //TODO: parse this\n\tz.t = msg;\n\tif(!fRichSt) { z.raw = \"\" + z.t + \"\"; z.r = z.t; }\n\tcurrent_codepage = cp;\n\treturn z;\n}\n\n/* 2.5.296 XLUnicodeStringNoCch */\nfunction parse_XLUnicodeStringNoCch(blob, cch, opts) {\n\tvar retval;\n\tif(opts) {\n\t\tif(opts.biff >= 2 && opts.biff <= 5) return blob.read_shift(cch, 'cpstr');\n\t\tif(opts.biff >= 12) return blob.read_shift(cch, 'dbcs-cont');\n\t}\n\tvar fHighByte = blob.read_shift(1);\n\tif(fHighByte===0) { retval = blob.read_shift(cch, 'sbcs-cont'); }\n\telse { retval = blob.read_shift(cch, 'dbcs-cont'); }\n\treturn retval;\n}\n\n/* 2.5.294 XLUnicodeString */\nfunction parse_XLUnicodeString(blob, length, opts) {\n\tvar cch = blob.read_shift(opts && opts.biff == 2 ? 1 : 2);\n\tif(cch === 0) { blob.l++; return \"\"; }\n\treturn parse_XLUnicodeStringNoCch(blob, cch, opts);\n}\n/* BIFF5 override */\nfunction parse_XLUnicodeString2(blob, length, opts) {\n\tif(opts.biff > 5) return parse_XLUnicodeString(blob, length, opts);\n\tvar cch = blob.read_shift(1);\n\tif(cch === 0) { blob.l++; return \"\"; }\n\treturn blob.read_shift(cch, (opts.biff <= 4 || !blob.lens ) ? 'cpstr' : 'sbcs-cont');\n}\n/* TODO: BIFF5 and lower, codepage awareness */\nfunction write_XLUnicodeString(str, opts, o) {\n\tif(!o) o = new_buf(3 + 2 * str.length);\n\to.write_shift(2, str.length);\n\to.write_shift(1, 1);\n\to.write_shift(31, str, 'utf16le');\n\treturn o;\n}\n\n/* [MS-XLS] 2.5.61 ControlInfo */\nfunction parse_ControlInfo(blob) {\n\tvar flags = blob.read_shift(1);\n\tblob.l++;\n\tvar accel = blob.read_shift(2);\n\tblob.l += 2;\n\treturn [flags, accel];\n}\n\n/* [MS-OSHARED] 2.3.7.6 URLMoniker TODO: flags */\nfunction parse_URLMoniker(blob) {\n\tvar len = blob.read_shift(4), start = blob.l;\n\tvar extra = false;\n\tif(len > 24) {\n\t\t/* look ahead */\n\t\tblob.l += len - 24;\n\t\tif(blob.read_shift(16) === \"795881f43b1d7f48af2c825dc4852763\") extra = true;\n\t\tblob.l = start;\n\t}\n\tvar url = blob.read_shift((extra?len-24:len)>>1, 'utf16le').replace(chr0,\"\");\n\tif(extra) blob.l += 24;\n\treturn url;\n}\n\n/* [MS-OSHARED] 2.3.7.8 FileMoniker TODO: all fields */\nfunction parse_FileMoniker(blob) {\n\tblob.l += 2; //var cAnti = blob.read_shift(2);\n\tvar ansiPath = blob.read_shift(0, 'lpstr-ansi');\n\tblob.l += 2; //var endServer = blob.read_shift(2);\n\tif(blob.read_shift(2) != 0xDEAD) throw new Error(\"Bad FileMoniker\");\n\tvar sz = blob.read_shift(4);\n\tif(sz === 0) return ansiPath.replace(/\\\\/g,\"/\");\n\tvar bytes = blob.read_shift(4);\n\tif(blob.read_shift(2) != 3) throw new Error(\"Bad FileMoniker\");\n\tvar unicodePath = blob.read_shift(bytes>>1, 'utf16le').replace(chr0,\"\");\n\treturn unicodePath;\n}\n\n/* [MS-OSHARED] 2.3.7.2 HyperlinkMoniker TODO: all the monikers */\nfunction parse_HyperlinkMoniker(blob, length) {\n\tvar clsid = blob.read_shift(16); length -= 16;\n\tswitch(clsid) {\n\t\tcase \"e0c9ea79f9bace118c8200aa004ba90b\": return parse_URLMoniker(blob, length);\n\t\tcase \"0303000000000000c000000000000046\": return parse_FileMoniker(blob, length);\n\t\tdefault: throw new Error(\"Unsupported Moniker \" + clsid);\n\t}\n}\n\n/* [MS-OSHARED] 2.3.7.9 HyperlinkString */\nfunction parse_HyperlinkString(blob) {\n\tvar len = blob.read_shift(4);\n\tvar o = len > 0 ? blob.read_shift(len, 'utf16le').replace(chr0, \"\") : \"\";\n\treturn o;\n}\n\n/* [MS-OSHARED] 2.3.7.1 Hyperlink Object */\nfunction parse_Hyperlink(blob, length) {\n\tvar end = blob.l + length;\n\tvar sVer = blob.read_shift(4);\n\tif(sVer !== 2) throw new Error(\"Unrecognized streamVersion: \" + sVer);\n\tvar flags = blob.read_shift(2);\n\tblob.l += 2;\n\tvar displayName, targetFrameName, moniker, oleMoniker, Loc=\"\", guid, fileTime;\n\tif(flags & 0x0010) displayName = parse_HyperlinkString(blob, end - blob.l);\n\tif(flags & 0x0080) targetFrameName = parse_HyperlinkString(blob, end - blob.l);\n\tif((flags & 0x0101) === 0x0101) moniker = parse_HyperlinkString(blob, end - blob.l);\n\tif((flags & 0x0101) === 0x0001) oleMoniker = parse_HyperlinkMoniker(blob, end - blob.l);\n\tif(flags & 0x0008) Loc = parse_HyperlinkString(blob, end - blob.l);\n\tif(flags & 0x0020) guid = blob.read_shift(16);\n\tif(flags & 0x0040) fileTime = parse_FILETIME(blob/*, 8*/);\n\tblob.l = end;\n\tvar target = targetFrameName||moniker||oleMoniker||\"\";\n\tif(target && Loc) target+=\"#\"+Loc;\n\tif(!target) target = \"#\" + Loc;\n\tvar out = ({Target:target});\n\tif(guid) out.guid = guid;\n\tif(fileTime) out.time = fileTime;\n\tif(displayName) out.Tooltip = displayName;\n\treturn out;\n}\nfunction write_Hyperlink(hl) {\n\tvar out = new_buf(512), i = 0;\n\tvar Target = hl.Target;\n\tvar F = Target.indexOf(\"#\") > -1 ? 0x1f : 0x17;\n\tswitch(Target.charAt(0)) { case \"#\": F=0x1c; break; case \".\": F&=~2; break; }\n\tout.write_shift(4,2); out.write_shift(4, F);\n\tvar data = [8,6815827,6619237,4849780,83]; for(i = 0; i < data.length; ++i) out.write_shift(4, data[i]);\n\tif(F == 0x1C) {\n\t\tTarget = Target.slice(1);\n\t\tout.write_shift(4, Target.length + 1);\n\t\tfor(i = 0; i < Target.length; ++i) out.write_shift(2, Target.charCodeAt(i));\n\t\tout.write_shift(2, 0);\n\t} else if(F & 0x02) {\n\t\tdata = \"e0 c9 ea 79 f9 ba ce 11 8c 82 00 aa 00 4b a9 0b\".split(\" \");\n\t\tfor(i = 0; i < data.length; ++i) out.write_shift(1, parseInt(data[i], 16));\n\t\tout.write_shift(4, 2*(Target.length + 1));\n\t\tfor(i = 0; i < Target.length; ++i) out.write_shift(2, Target.charCodeAt(i));\n\t\tout.write_shift(2, 0);\n\t} else {\n\t\tdata = \"03 03 00 00 00 00 00 00 c0 00 00 00 00 00 00 46\".split(\" \");\n\t\tfor(i = 0; i < data.length; ++i) out.write_shift(1, parseInt(data[i], 16));\n\t\tvar P = 0;\n\t\twhile(Target.slice(P*3,P*3+3)==\"../\"||Target.slice(P*3,P*3+3)==\"..\\\\\") ++P;\n\t\tout.write_shift(2, P);\n\t\tout.write_shift(4, Target.length + 1);\n\t\tfor(i = 0; i < Target.length; ++i) out.write_shift(1, Target.charCodeAt(i) & 0xFF);\n\t\tout.write_shift(1, 0);\n\t\tout.write_shift(2, 0xFFFF);\n\t\tout.write_shift(2, 0xDEAD);\n\t\tfor(i = 0; i < 6; ++i) out.write_shift(4, 0);\n\t}\n\treturn out.slice(0, out.l);\n}\n\n/* 2.5.178 LongRGBA */\nfunction parse_LongRGBA(blob) { var r = blob.read_shift(1), g = blob.read_shift(1), b = blob.read_shift(1), a = blob.read_shift(1); return [r,g,b,a]; }\n\n/* 2.5.177 LongRGB */\nfunction parse_LongRGB(blob, length) { var x = parse_LongRGBA(blob, length); x[3] = 0; return x; }\n\n\n/* [MS-XLS] 2.5.19 */\nfunction parse_XLSCell(blob) {\n\tvar rw = blob.read_shift(2); // 0-indexed\n\tvar col = blob.read_shift(2);\n\tvar ixfe = blob.read_shift(2);\n\treturn ({r:rw, c:col, ixfe:ixfe});\n}\nfunction write_XLSCell(R, C, ixfe, o) {\n\tif(!o) o = new_buf(6);\n\to.write_shift(2, R);\n\to.write_shift(2, C);\n\to.write_shift(2, ixfe||0);\n\treturn o;\n}\n\n/* [MS-XLS] 2.5.134 */\nfunction parse_frtHeader(blob) {\n\tvar rt = blob.read_shift(2);\n\tvar flags = blob.read_shift(2); // TODO: parse these flags\n\tblob.l += 8;\n\treturn {type: rt, flags: flags};\n}\n\n\n\nfunction parse_OptXLUnicodeString(blob, length, opts) { return length === 0 ? \"\" : parse_XLUnicodeString2(blob, length, opts); }\n\n/* [MS-XLS] 2.5.344 */\nfunction parse_XTI(blob, length, opts) {\n\tvar w = opts.biff > 8 ? 4 : 2;\n\tvar iSupBook = blob.read_shift(w), itabFirst = blob.read_shift(w,'i'), itabLast = blob.read_shift(w,'i');\n\treturn [iSupBook, itabFirst, itabLast];\n}\n\n/* [MS-XLS] 2.5.218 */\nfunction parse_RkRec(blob) {\n\tvar ixfe = blob.read_shift(2);\n\tvar RK = parse_RkNumber(blob);\n\treturn [ixfe, RK];\n}\n\n/* [MS-XLS] 2.5.1 */\nfunction parse_AddinUdf(blob, length, opts) {\n\tblob.l += 4; length -= 4;\n\tvar l = blob.l + length;\n\tvar udfName = parse_ShortXLUnicodeString(blob, length, opts);\n\tvar cb = blob.read_shift(2);\n\tl -= blob.l;\n\tif(cb !== l) throw new Error(\"Malformed AddinUdf: padding = \" + l + \" != \" + cb);\n\tblob.l += cb;\n\treturn udfName;\n}\n\n/* [MS-XLS] 2.5.209 TODO: Check sizes */\nfunction parse_Ref8U(blob) {\n\tvar rwFirst = blob.read_shift(2);\n\tvar rwLast = blob.read_shift(2);\n\tvar colFirst = blob.read_shift(2);\n\tvar colLast = blob.read_shift(2);\n\treturn {s:{c:colFirst, r:rwFirst}, e:{c:colLast,r:rwLast}};\n}\nfunction write_Ref8U(r, o) {\n\tif(!o) o = new_buf(8);\n\to.write_shift(2, r.s.r);\n\to.write_shift(2, r.e.r);\n\to.write_shift(2, r.s.c);\n\to.write_shift(2, r.e.c);\n\treturn o;\n}\n\n/* [MS-XLS] 2.5.211 */\nfunction parse_RefU(blob) {\n\tvar rwFirst = blob.read_shift(2);\n\tvar rwLast = blob.read_shift(2);\n\tvar colFirst = blob.read_shift(1);\n\tvar colLast = blob.read_shift(1);\n\treturn {s:{c:colFirst, r:rwFirst}, e:{c:colLast,r:rwLast}};\n}\n\n/* [MS-XLS] 2.5.207 */\nvar parse_Ref = parse_RefU;\n\n/* [MS-XLS] 2.5.143 */\nfunction parse_FtCmo(blob) {\n\tblob.l += 4;\n\tvar ot = blob.read_shift(2);\n\tvar id = blob.read_shift(2);\n\tvar flags = blob.read_shift(2);\n\tblob.l+=12;\n\treturn [id, ot, flags];\n}\n\n/* [MS-XLS] 2.5.149 */\nfunction parse_FtNts(blob) {\n\tvar out = {};\n\tblob.l += 4;\n\tblob.l += 16; // GUID TODO\n\tout.fSharedNote = blob.read_shift(2);\n\tblob.l += 4;\n\treturn out;\n}\n\n/* [MS-XLS] 2.5.142 */\nfunction parse_FtCf(blob) {\n\tvar out = {};\n\tblob.l += 4;\n\tblob.cf = blob.read_shift(2);\n\treturn out;\n}\n\n/* [MS-XLS] 2.5.140 - 2.5.154 and friends */\nfunction parse_FtSkip(blob) { blob.l += 2; blob.l += blob.read_shift(2); }\nvar FtTab = {\n0x00: parse_FtSkip, /* FtEnd */\n0x04: parse_FtSkip, /* FtMacro */\n0x05: parse_FtSkip, /* FtButton */\n0x06: parse_FtSkip, /* FtGmo */\n0x07: parse_FtCf, /* FtCf */\n0x08: parse_FtSkip, /* FtPioGrbit */\n0x09: parse_FtSkip, /* FtPictFmla */\n0x0A: parse_FtSkip, /* FtCbls */\n0x0B: parse_FtSkip, /* FtRbo */\n0x0C: parse_FtSkip, /* FtSbs */\n0x0D: parse_FtNts, /* FtNts */\n0x0E: parse_FtSkip, /* FtSbsFmla */\n0x0F: parse_FtSkip, /* FtGboData */\n0x10: parse_FtSkip, /* FtEdoData */\n0x11: parse_FtSkip, /* FtRboData */\n0x12: parse_FtSkip, /* FtCblsData */\n0x13: parse_FtSkip, /* FtLbsData */\n0x14: parse_FtSkip, /* FtCblsFmla */\n0x15: parse_FtCmo\n};\nfunction parse_FtArray(blob, length) {\n\tvar tgt = blob.l + length;\n\tvar fts = [];\n\twhile(blob.l < tgt) {\n\t\tvar ft = blob.read_shift(2);\n\t\tblob.l-=2;\n\t\ttry {\n\t\t\tfts.push(FtTab[ft](blob, tgt - blob.l));\n\t\t} catch(e) { blob.l = tgt; return fts; }\n\t}\n\tif(blob.l != tgt) blob.l = tgt; //throw new Error(\"bad Object Ft-sequence\");\n\treturn fts;\n}\n\n/* --- 2.4 Records --- */\n\n/* [MS-XLS] 2.4.21 */\nfunction parse_BOF(blob, length) {\n\tvar o = {BIFFVer:0, dt:0};\n\to.BIFFVer = blob.read_shift(2); length -= 2;\n\tif(length >= 2) { o.dt = blob.read_shift(2); blob.l -= 2; }\n\tswitch(o.BIFFVer) {\n\t\tcase 0x0600: /* BIFF8 */\n\t\tcase 0x0500: /* BIFF5 */\n\t\tcase 0x0400: /* BIFF4 */\n\t\tcase 0x0300: /* BIFF3 */\n\t\tcase 0x0200: /* BIFF2 */\n\t\tcase 0x0002: case 0x0007: /* BIFF2 */\n\t\t\tbreak;\n\t\tdefault: if(length > 6) throw new Error(\"Unexpected BIFF Ver \" + o.BIFFVer);\n\t}\n\n\tblob.read_shift(length);\n\treturn o;\n}\nfunction write_BOF(wb, t, o) {\n\tvar h = 0x0600, w = 16;\n\tswitch(o.bookType) {\n\t\tcase 'biff8': break;\n\t\tcase 'biff5': h = 0x0500; w = 8; break;\n\t\tcase 'biff4': h = 0x0004; w = 6; break;\n\t\tcase 'biff3': h = 0x0003; w = 6; break;\n\t\tcase 'biff2': h = 0x0002; w = 4; break;\n\t\tcase 'xla': break;\n\t\tdefault: throw new Error(\"unsupported BIFF version\");\n\t}\n\tvar out = new_buf(w);\n\tout.write_shift(2, h);\n\tout.write_shift(2, t);\n\tif(w > 4) out.write_shift(2, 0x7262);\n\tif(w > 6) out.write_shift(2, 0x07CD);\n\tif(w > 8) {\n\t\tout.write_shift(2, 0xC009);\n\t\tout.write_shift(2, 0x0001);\n\t\tout.write_shift(2, 0x0706);\n\t\tout.write_shift(2, 0x0000);\n\t}\n\treturn out;\n}\n\n\n/* [MS-XLS] 2.4.146 */\nfunction parse_InterfaceHdr(blob, length) {\n\tif(length === 0) return 0x04b0;\n\tif((blob.read_shift(2))!==0x04b0){/* empty */}\n\treturn 0x04b0;\n}\n\n\n/* [MS-XLS] 2.4.349 */\nfunction parse_WriteAccess(blob, length, opts) {\n\tif(opts.enc) { blob.l += length; return \"\"; }\n\tvar l = blob.l;\n\t// TODO: make sure XLUnicodeString doesnt overrun\n\tvar UserName = parse_XLUnicodeString2(blob, 0, opts);\n\tblob.read_shift(length + l - blob.l);\n\treturn UserName;\n}\nfunction write_WriteAccess(s, opts) {\n\tvar b8 = !opts || opts.biff == 8;\n\tvar o = new_buf(b8 ? 112 : 54);\n\to.write_shift(opts.biff == 8 ? 2 : 1, 7);\n\tif(b8) o.write_shift(1, 0);\n\to.write_shift(4, 0x33336853);\n\to.write_shift(4, (0x00534A74 | (b8 ? 0 : 0x20000000)));\n\twhile(o.l < o.length) o.write_shift(1, (b8 ? 0 : 32));\n\treturn o;\n}\n\n/* [MS-XLS] 2.4.351 */\nfunction parse_WsBool(blob, length, opts) {\n\tvar flags = opts && opts.biff == 8 || length == 2 ? blob.read_shift(2) : (blob.l += length, 0);\n\treturn { fDialog: flags & 0x10 };\n}\n\n/* [MS-XLS] 2.4.28 */\nfunction parse_BoundSheet8(blob, length, opts) {\n\tvar pos = blob.read_shift(4);\n\tvar hidden = blob.read_shift(1) & 0x03;\n\tvar dt = blob.read_shift(1);\n\tswitch(dt) {\n\t\tcase 0: dt = 'Worksheet'; break;\n\t\tcase 1: dt = 'Macrosheet'; break;\n\t\tcase 2: dt = 'Chartsheet'; break;\n\t\tcase 6: dt = 'VBAModule'; break;\n\t}\n\tvar name = parse_ShortXLUnicodeString(blob, 0, opts);\n\tif(name.length === 0) name = \"Sheet1\";\n\treturn { pos:pos, hs:hidden, dt:dt, name:name };\n}\nfunction write_BoundSheet8(data, opts) {\n\tvar w = (!opts || opts.biff >= 8 ? 2 : 1);\n\tvar o = new_buf(8 + w * data.name.length);\n\to.write_shift(4, data.pos);\n\to.write_shift(1, data.hs || 0);\n\to.write_shift(1, data.dt);\n\to.write_shift(1, data.name.length);\n\tif(opts.biff >= 8) o.write_shift(1, 1);\n\to.write_shift(w * data.name.length, data.name, opts.biff < 8 ? 'sbcs' : 'utf16le');\n\tvar out = o.slice(0, o.l);\n\tout.l = o.l; return out;\n}\n\n/* [MS-XLS] 2.4.265 TODO */\nfunction parse_SST(blob, length) {\n\tvar end = blob.l + length;\n\tvar cnt = blob.read_shift(4);\n\tvar ucnt = blob.read_shift(4);\n\tvar strs = ([]);\n\tfor(var i = 0; i != ucnt && blob.l < end; ++i) {\n\t\tstrs.push(parse_XLUnicodeRichExtendedString(blob));\n\t}\n\tstrs.Count = cnt; strs.Unique = ucnt;\n\treturn strs;\n}\n\n/* [MS-XLS] 2.4.107 */\nfunction parse_ExtSST(blob, length) {\n\tvar extsst = {};\n\textsst.dsst = blob.read_shift(2);\n\tblob.l += length-2;\n\treturn extsst;\n}\n\n\n/* [MS-XLS] 2.4.221 TODO: check BIFF2-4 */\nfunction parse_Row(blob) {\n\tvar z = ({});\n\tz.r = blob.read_shift(2);\n\tz.c = blob.read_shift(2);\n\tz.cnt = blob.read_shift(2) - z.c;\n\tvar miyRw = blob.read_shift(2);\n\tblob.l += 4; // reserved(2), unused(2)\n\tvar flags = blob.read_shift(1); // various flags\n\tblob.l += 3; // reserved(8), ixfe(12), flags(4)\n\tif(flags & 0x07) z.level = flags & 0x07;\n\t// collapsed: flags & 0x10\n\tif(flags & 0x20) z.hidden = true;\n\tif(flags & 0x40) z.hpt = miyRw / 20;\n\treturn z;\n}\n\n\n/* [MS-XLS] 2.4.125 */\nfunction parse_ForceFullCalculation(blob) {\n\tvar header = parse_frtHeader(blob);\n\tif(header.type != 0x08A3) throw new Error(\"Invalid Future Record \" + header.type);\n\tvar fullcalc = blob.read_shift(4);\n\treturn fullcalc !== 0x0;\n}\n\n\n\n\n\n/* [MS-XLS] 2.4.215 rt */\nfunction parse_RecalcId(blob) {\n\tblob.read_shift(2);\n\treturn blob.read_shift(4);\n}\n\n/* [MS-XLS] 2.4.87 */\nfunction parse_DefaultRowHeight(blob, length, opts) {\n\tvar f = 0;\n\tif(!(opts && opts.biff == 2)) {\n\t\tf = blob.read_shift(2);\n\t}\n\tvar miyRw = blob.read_shift(2);\n\tif((opts && opts.biff == 2)) {\n\t\tf = 1 - (miyRw >> 15); miyRw &= 0x7fff;\n\t}\n\tvar fl = {Unsynced:f&1,DyZero:(f&2)>>1,ExAsc:(f&4)>>2,ExDsc:(f&8)>>3};\n\treturn [fl, miyRw];\n}\n\n/* [MS-XLS] 2.4.345 TODO */\nfunction parse_Window1(blob) {\n\tvar xWn = blob.read_shift(2), yWn = blob.read_shift(2), dxWn = blob.read_shift(2), dyWn = blob.read_shift(2);\n\tvar flags = blob.read_shift(2), iTabCur = blob.read_shift(2), iTabFirst = blob.read_shift(2);\n\tvar ctabSel = blob.read_shift(2), wTabRatio = blob.read_shift(2);\n\treturn { Pos: [xWn, yWn], Dim: [dxWn, dyWn], Flags: flags, CurTab: iTabCur,\n\t\tFirstTab: iTabFirst, Selected: ctabSel, TabRatio: wTabRatio };\n}\nfunction write_Window1() {\n\tvar o = new_buf(18);\n\to.write_shift(2, 0);\n\to.write_shift(2, 0);\n\to.write_shift(2, 0x7260);\n\to.write_shift(2, 0x44c0);\n\to.write_shift(2, 0x38);\n\to.write_shift(2, 0);\n\to.write_shift(2, 0);\n\to.write_shift(2, 1);\n\to.write_shift(2, 0x01f4);\n\treturn o;\n}\n/* [MS-XLS] 2.4.346 TODO */\nfunction parse_Window2(blob, length, opts) {\n\tif(opts && opts.biff >= 2 && opts.biff < 8) return {};\n\tvar f = blob.read_shift(2);\n\treturn { RTL: f & 0x40 };\n}\nfunction write_Window2(view) {\n\tvar o = new_buf(18), f = 0x6b6;\n\tif(view && view.RTL) f |= 0x40;\n\to.write_shift(2, f);\n\to.write_shift(4, 0);\n\to.write_shift(4, 64);\n\to.write_shift(4, 0);\n\to.write_shift(4, 0);\n\treturn o;\n}\n\n/* [MS-XLS] 2.4.122 TODO */\nfunction parse_Font(blob, length, opts) {\n\tvar o = {\n\t\tdyHeight: blob.read_shift(2),\n\t\tfl: blob.read_shift(2)\n\t};\n\tswitch((opts && opts.biff) || 8) {\n\t\tcase 2: break;\n\t\tcase 3: case 4: blob.l += 2; break;\n\t\tdefault: blob.l += 10; break;\n\t}\n\to.name = parse_ShortXLUnicodeString(blob, 0, opts);\n\treturn o;\n}\nfunction write_Font(data, opts) {\n\tvar name = data.name || \"Arial\";\n\tvar b5 = (opts && (opts.biff == 5)), w = (b5 ? (15 + name.length) : (16 + 2 * name.length));\n\tvar o = new_buf(w);\n\to.write_shift(2, (data.sz || 12) * 20);\n\to.write_shift(4, 0);\n\to.write_shift(2, 400);\n\to.write_shift(4, 0);\n\to.write_shift(2, 0);\n\to.write_shift(1, name.length);\n\tif(!b5) o.write_shift(1, 1);\n\to.write_shift((b5 ? 1 : 2) * name.length, name, (b5 ? \"sbcs\" : \"utf16le\"));\n\treturn o;\n}\n\n/* [MS-XLS] 2.4.149 */\nfunction parse_LabelSst(blob) {\n\tvar cell = parse_XLSCell(blob);\n\tcell.isst = blob.read_shift(4);\n\treturn cell;\n}\n\n/* [MS-XLS] 2.4.148 */\nfunction parse_Label(blob, length, opts) {\n\tvar target = blob.l + length;\n\tvar cell = parse_XLSCell(blob, 6);\n\tif(opts.biff == 2) blob.l++;\n\tvar str = parse_XLUnicodeString(blob, target - blob.l, opts);\n\tcell.val = str;\n\treturn cell;\n}\nfunction write_Label(R, C, v, os, opts) {\n\tvar b8 = !opts || opts.biff == 8;\n\tvar o = new_buf(6 + 2 + (+b8) + (1 + b8) * v.length);\n\twrite_XLSCell(R, C, os, o);\n\to.write_shift(2, v.length);\n\tif(b8) o.write_shift(1, 1);\n\to.write_shift((1 + b8) * v.length, v, b8 ? 'utf16le' : 'sbcs');\n\treturn o;\n}\n\n\n/* [MS-XLS] 2.4.126 Number Formats */\nfunction parse_Format(blob, length, opts) {\n\tvar numFmtId = blob.read_shift(2);\n\tvar fmtstr = parse_XLUnicodeString2(blob, 0, opts);\n\treturn [numFmtId, fmtstr];\n}\nfunction write_Format(i, f, opts, o) {\n\tvar b5 = (opts && (opts.biff == 5));\n\tif(!o) o = new_buf(b5 ? (3 + f.length) : (5 + 2 * f.length));\n\to.write_shift(2, i);\n\to.write_shift((b5 ? 1 : 2), f.length);\n\tif(!b5) o.write_shift(1, 1);\n\to.write_shift((b5 ? 1 : 2) * f.length, f, (b5 ? 'sbcs' : 'utf16le'));\n\tvar out = (o.length > o.l) ? o.slice(0, o.l) : o;\n\tif(out.l == null) out.l = out.length;\n\treturn out;\n}\nvar parse_BIFF2Format = parse_XLUnicodeString2;\n\n/* [MS-XLS] 2.4.90 */\nfunction parse_Dimensions(blob, length, opts) {\n\tvar end = blob.l + length;\n\tvar w = opts.biff == 8 || !opts.biff ? 4 : 2;\n\tvar r = blob.read_shift(w), R = blob.read_shift(w);\n\tvar c = blob.read_shift(2), C = blob.read_shift(2);\n\tblob.l = end;\n\treturn {s: {r:r, c:c}, e: {r:R, c:C}};\n}\nfunction write_Dimensions(range, opts) {\n\tvar w = opts.biff == 8 || !opts.biff ? 4 : 2;\n\tvar o = new_buf(2*w + 6);\n\to.write_shift(w, range.s.r);\n\to.write_shift(w, range.e.r + 1);\n\to.write_shift(2, range.s.c);\n\to.write_shift(2, range.e.c + 1);\n\to.write_shift(2, 0);\n\treturn o;\n}\n\n/* [MS-XLS] 2.4.220 */\nfunction parse_RK(blob) {\n\tvar rw = blob.read_shift(2), col = blob.read_shift(2);\n\tvar rkrec = parse_RkRec(blob);\n\treturn {r:rw, c:col, ixfe:rkrec[0], rknum:rkrec[1]};\n}\n\n/* [MS-XLS] 2.4.175 */\nfunction parse_MulRk(blob, length) {\n\tvar target = blob.l + length - 2;\n\tvar rw = blob.read_shift(2), col = blob.read_shift(2);\n\tvar rkrecs = [];\n\twhile(blob.l < target) rkrecs.push(parse_RkRec(blob));\n\tif(blob.l !== target) throw new Error(\"MulRK read error\");\n\tvar lastcol = blob.read_shift(2);\n\tif(rkrecs.length != lastcol - col + 1) throw new Error(\"MulRK length mismatch\");\n\treturn {r:rw, c:col, C:lastcol, rkrec:rkrecs};\n}\n/* [MS-XLS] 2.4.174 */\nfunction parse_MulBlank(blob, length) {\n\tvar target = blob.l + length - 2;\n\tvar rw = blob.read_shift(2), col = blob.read_shift(2);\n\tvar ixfes = [];\n\twhile(blob.l < target) ixfes.push(blob.read_shift(2));\n\tif(blob.l !== target) throw new Error(\"MulBlank read error\");\n\tvar lastcol = blob.read_shift(2);\n\tif(ixfes.length != lastcol - col + 1) throw new Error(\"MulBlank length mismatch\");\n\treturn {r:rw, c:col, C:lastcol, ixfe:ixfes};\n}\n\n/* [MS-XLS] 2.5.20 2.5.249 TODO: interpret values here */\nfunction parse_CellStyleXF(blob, length, style, opts) {\n\tvar o = {};\n\tvar a = blob.read_shift(4), b = blob.read_shift(4);\n\tvar c = blob.read_shift(4), d = blob.read_shift(2);\n\to.patternType = XLSFillPattern[c >> 26];\n\n\tif(!opts.cellStyles) return o;\n\to.alc = a & 0x07;\n\to.fWrap = (a >> 3) & 0x01;\n\to.alcV = (a >> 4) & 0x07;\n\to.fJustLast = (a >> 7) & 0x01;\n\to.trot = (a >> 8) & 0xFF;\n\to.cIndent = (a >> 16) & 0x0F;\n\to.fShrinkToFit = (a >> 20) & 0x01;\n\to.iReadOrder = (a >> 22) & 0x02;\n\to.fAtrNum = (a >> 26) & 0x01;\n\to.fAtrFnt = (a >> 27) & 0x01;\n\to.fAtrAlc = (a >> 28) & 0x01;\n\to.fAtrBdr = (a >> 29) & 0x01;\n\to.fAtrPat = (a >> 30) & 0x01;\n\to.fAtrProt = (a >> 31) & 0x01;\n\n\to.dgLeft = b & 0x0F;\n\to.dgRight = (b >> 4) & 0x0F;\n\to.dgTop = (b >> 8) & 0x0F;\n\to.dgBottom = (b >> 12) & 0x0F;\n\to.icvLeft = (b >> 16) & 0x7F;\n\to.icvRight = (b >> 23) & 0x7F;\n\to.grbitDiag = (b >> 30) & 0x03;\n\n\to.icvTop = c & 0x7F;\n\to.icvBottom = (c >> 7) & 0x7F;\n\to.icvDiag = (c >> 14) & 0x7F;\n\to.dgDiag = (c >> 21) & 0x0F;\n\n\to.icvFore = d & 0x7F;\n\to.icvBack = (d >> 7) & 0x7F;\n\to.fsxButton = (d >> 14) & 0x01;\n\treturn o;\n}\n//function parse_CellXF(blob, length, opts) {return parse_CellStyleXF(blob,length,0, opts);}\n//function parse_StyleXF(blob, length, opts) {return parse_CellStyleXF(blob,length,1, opts);}\n\n/* [MS-XLS] 2.4.353 TODO: actually do this right */\nfunction parse_XF(blob, length, opts) {\n\tvar o = {};\n\to.ifnt = blob.read_shift(2); o.numFmtId = blob.read_shift(2); o.flags = blob.read_shift(2);\n\to.fStyle = (o.flags >> 2) & 0x01;\n\tlength -= 6;\n\to.data = parse_CellStyleXF(blob, length, o.fStyle, opts);\n\treturn o;\n}\nfunction write_XF(data, ixfeP, opts, o) {\n\tvar b5 = (opts && (opts.biff == 5));\n\tif(!o) o = new_buf(b5 ? 16 : 20);\n\to.write_shift(2, 0);\n\tif(data.style) {\n\t\to.write_shift(2, (data.numFmtId||0));\n\t\to.write_shift(2, 0xFFF4);\n\t} else {\n\t\to.write_shift(2, (data.numFmtId||0));\n\t\to.write_shift(2, (ixfeP<<4));\n\t}\n\to.write_shift(4, 0);\n\to.write_shift(4, 0);\n\tif(!b5) o.write_shift(4, 0);\n\to.write_shift(2, 0);\n\treturn o;\n}\n\n/* [MS-XLS] 2.4.134 */\nfunction parse_Guts(blob) {\n\tblob.l += 4;\n\tvar out = [blob.read_shift(2), blob.read_shift(2)];\n\tif(out[0] !== 0) out[0]--;\n\tif(out[1] !== 0) out[1]--;\n\tif(out[0] > 7 || out[1] > 7) throw new Error(\"Bad Gutters: \" + out.join(\"|\"));\n\treturn out;\n}\nfunction write_Guts(guts) {\n\tvar o = new_buf(8);\n\to.write_shift(4, 0);\n\to.write_shift(2, guts[0] ? guts[0] + 1 : 0);\n\to.write_shift(2, guts[1] ? guts[1] + 1 : 0);\n\treturn o;\n}\n\n/* [MS-XLS] 2.4.24 */\nfunction parse_BoolErr(blob, length, opts) {\n\tvar cell = parse_XLSCell(blob, 6);\n\tif(opts.biff == 2) ++blob.l;\n\tvar val = parse_Bes(blob, 2);\n\tcell.val = val;\n\tcell.t = (val === true || val === false) ? 'b' : 'e';\n\treturn cell;\n}\nfunction write_BoolErr(R, C, v, os, opts, t) {\n\tvar o = new_buf(8);\n\twrite_XLSCell(R, C, os, o);\n\twrite_Bes(v, t, o);\n\treturn o;\n}\n\n/* [MS-XLS] 2.4.180 Number */\nfunction parse_Number(blob) {\n\tvar cell = parse_XLSCell(blob, 6);\n\tvar xnum = parse_Xnum(blob, 8);\n\tcell.val = xnum;\n\treturn cell;\n}\nfunction write_Number(R, C, v, os) {\n\tvar o = new_buf(14);\n\twrite_XLSCell(R, C, os, o);\n\twrite_Xnum(v, o);\n\treturn o;\n}\n\nvar parse_XLHeaderFooter = parse_OptXLUnicodeString; // TODO: parse 2.4.136\n\n/* [MS-XLS] 2.4.271 */\nfunction parse_SupBook(blob, length, opts) {\n\tvar end = blob.l + length;\n\tvar ctab = blob.read_shift(2);\n\tvar cch = blob.read_shift(2);\n\topts.sbcch = cch;\n\tif(cch == 0x0401 || cch == 0x3A01) return [cch, ctab];\n\tif(cch < 0x01 || cch >0xff) throw new Error(\"Unexpected SupBook type: \"+cch);\n\tvar virtPath = parse_XLUnicodeStringNoCch(blob, cch);\n\t/* TODO: 2.5.277 Virtual Path */\n\tvar rgst = [];\n\twhile(end > blob.l) rgst.push(parse_XLUnicodeString(blob));\n\treturn [cch, ctab, virtPath, rgst];\n}\n\n/* [MS-XLS] 2.4.105 TODO */\nfunction parse_ExternName(blob, length, opts) {\n\tvar flags = blob.read_shift(2);\n\tvar body;\n\tvar o = ({\n\t\tfBuiltIn: flags & 0x01,\n\t\tfWantAdvise: (flags >>> 1) & 0x01,\n\t\tfWantPict: (flags >>> 2) & 0x01,\n\t\tfOle: (flags >>> 3) & 0x01,\n\t\tfOleLink: (flags >>> 4) & 0x01,\n\t\tcf: (flags >>> 5) & 0x3FF,\n\t\tfIcon: flags >>> 15 & 0x01\n\t});\n\tif(opts.sbcch === 0x3A01) body = parse_AddinUdf(blob, length-2, opts);\n\t//else throw new Error(\"unsupported SupBook cch: \" + opts.sbcch);\n\to.body = body || blob.read_shift(length-2);\n\tif(typeof body === \"string\") o.Name = body;\n\treturn o;\n}\n\n/* [MS-XLS] 2.4.150 TODO */\nvar XLSLblBuiltIn = [\n\t\"_xlnm.Consolidate_Area\",\n\t\"_xlnm.Auto_Open\",\n\t\"_xlnm.Auto_Close\",\n\t\"_xlnm.Extract\",\n\t\"_xlnm.Database\",\n\t\"_xlnm.Criteria\",\n\t\"_xlnm.Print_Area\",\n\t\"_xlnm.Print_Titles\",\n\t\"_xlnm.Recorder\",\n\t\"_xlnm.Data_Form\",\n\t\"_xlnm.Auto_Activate\",\n\t\"_xlnm.Auto_Deactivate\",\n\t\"_xlnm.Sheet_Title\",\n\t\"_xlnm._FilterDatabase\"\n];\nfunction parse_Lbl(blob, length, opts) {\n\tvar target = blob.l + length;\n\tvar flags = blob.read_shift(2);\n\tvar chKey = blob.read_shift(1);\n\tvar cch = blob.read_shift(1);\n\tvar cce = blob.read_shift(opts && opts.biff == 2 ? 1 : 2);\n\tvar itab = 0;\n\tif(!opts || opts.biff >= 5) {\n\t\tif(opts.biff != 5) blob.l += 2;\n\t\titab = blob.read_shift(2);\n\t\tif(opts.biff == 5) blob.l += 2;\n\t\tblob.l += 4;\n\t}\n\tvar name = parse_XLUnicodeStringNoCch(blob, cch, opts);\n\tif(flags & 0x20) name = XLSLblBuiltIn[name.charCodeAt(0)];\n\tvar npflen = target - blob.l; if(opts && opts.biff == 2) --npflen;\n\tvar rgce = target == blob.l || cce === 0 ? [] : parse_NameParsedFormula(blob, npflen, opts, cce);\n\treturn {\n\t\tchKey: chKey,\n\t\tName: name,\n\t\titab: itab,\n\t\trgce: rgce\n\t};\n}\n\n/* [MS-XLS] 2.4.106 TODO: verify filename encoding */\nfunction parse_ExternSheet(blob, length, opts) {\n\tif(opts.biff < 8) return parse_BIFF5ExternSheet(blob, length, opts);\n\tvar o = [], target = blob.l + length, len = blob.read_shift(opts.biff > 8 ? 4 : 2);\n\twhile(len-- !== 0) o.push(parse_XTI(blob, opts.biff > 8 ? 12 : 6, opts));\n\t\t// [iSupBook, itabFirst, itabLast];\n\tif(blob.l != target) throw new Error(\"Bad ExternSheet: \" + blob.l + \" != \" + target);\n\treturn o;\n}\nfunction parse_BIFF5ExternSheet(blob, length, opts) {\n\tif(blob[blob.l + 1] == 0x03) blob[blob.l]++;\n\tvar o = parse_ShortXLUnicodeString(blob, length, opts);\n\treturn o.charCodeAt(0) == 0x03 ? o.slice(1) : o;\n}\n\n/* [MS-XLS] 2.4.176 TODO: check older biff */\nfunction parse_NameCmt(blob, length, opts) {\n\tif(opts.biff < 8) { blob.l += length; return; }\n\tvar cchName = blob.read_shift(2);\n\tvar cchComment = blob.read_shift(2);\n\tvar name = parse_XLUnicodeStringNoCch(blob, cchName, opts);\n\tvar comment = parse_XLUnicodeStringNoCch(blob, cchComment, opts);\n\treturn [name, comment];\n}\n\n/* [MS-XLS] 2.4.260 */\nfunction parse_ShrFmla(blob, length, opts) {\n\tvar ref = parse_RefU(blob, 6);\n\tblob.l++;\n\tvar cUse = blob.read_shift(1);\n\tlength -= 8;\n\treturn [parse_SharedParsedFormula(blob, length, opts), cUse, ref];\n}\n\n/* [MS-XLS] 2.4.4 TODO */\nfunction parse_Array(blob, length, opts) {\n\tvar ref = parse_Ref(blob, 6);\n\t/* TODO: fAlwaysCalc */\n\tswitch(opts.biff) {\n\t\tcase 2: blob.l ++; length -= 7; break;\n\t\tcase 3: case 4: blob.l += 2; length -= 8; break;\n\t\tdefault: blob.l += 6; length -= 12;\n\t}\n\treturn [ref, parse_ArrayParsedFormula(blob, length, opts, ref)];\n}\n\n/* [MS-XLS] 2.4.173 */\nfunction parse_MTRSettings(blob) {\n\tvar fMTREnabled = blob.read_shift(4) !== 0x00;\n\tvar fUserSetThreadCount = blob.read_shift(4) !== 0x00;\n\tvar cUserThreadCount = blob.read_shift(4);\n\treturn [fMTREnabled, fUserSetThreadCount, cUserThreadCount];\n}\n\n/* [MS-XLS] 2.5.186 TODO: BIFF5 */\nfunction parse_NoteSh(blob, length, opts) {\n\tif(opts.biff < 8) return;\n\tvar row = blob.read_shift(2), col = blob.read_shift(2);\n\tvar flags = blob.read_shift(2), idObj = blob.read_shift(2);\n\tvar stAuthor = parse_XLUnicodeString2(blob, 0, opts);\n\tif(opts.biff < 8) blob.read_shift(1);\n\treturn [{r:row,c:col}, stAuthor, idObj, flags];\n}\n\n/* [MS-XLS] 2.4.179 */\nfunction parse_Note(blob, length, opts) {\n\t/* TODO: Support revisions */\n\treturn parse_NoteSh(blob, length, opts);\n}\n\n/* [MS-XLS] 2.4.168 */\nfunction parse_MergeCells(blob, length) {\n\tvar merges = [];\n\tvar cmcs = blob.read_shift(2);\n\twhile (cmcs--) merges.push(parse_Ref8U(blob,length));\n\treturn merges;\n}\nfunction write_MergeCells(merges) {\n\tvar o = new_buf(2 + merges.length * 8);\n\to.write_shift(2, merges.length);\n\tfor(var i = 0; i < merges.length; ++i) write_Ref8U(merges[i], o);\n\treturn o;\n}\n\n/* [MS-XLS] 2.4.181 TODO: parse all the things! */\nfunction parse_Obj(blob, length, opts) {\n\tif(opts && opts.biff < 8) return parse_BIFF5Obj(blob, length, opts);\n\tvar cmo = parse_FtCmo(blob, 22); // id, ot, flags\n\tvar fts = parse_FtArray(blob, length-22, cmo[1]);\n\treturn { cmo: cmo, ft:fts };\n}\n/* from older spec */\nvar parse_BIFF5OT = [];\nparse_BIFF5OT[0x08] = function(blob, length) {\n\tvar tgt = blob.l + length;\n\tblob.l += 10; // todo\n\tvar cf = blob.read_shift(2);\n\tblob.l += 4;\n\tblob.l += 2; //var cbPictFmla = blob.read_shift(2);\n\tblob.l += 2;\n\tblob.l += 2; //var grbit = blob.read_shift(2);\n\tblob.l += 4;\n\tvar cchName = blob.read_shift(1);\n\tblob.l += cchName; // TODO: stName\n\tblob.l = tgt; // TODO: fmla\n\treturn { fmt:cf };\n};\n\nfunction parse_BIFF5Obj(blob, length, opts) {\n\tblob.l += 4; //var cnt = blob.read_shift(4);\n\tvar ot = blob.read_shift(2);\n\tvar id = blob.read_shift(2);\n\tvar grbit = blob.read_shift(2);\n\tblob.l += 2; //var colL = blob.read_shift(2);\n\tblob.l += 2; //var dxL = blob.read_shift(2);\n\tblob.l += 2; //var rwT = blob.read_shift(2);\n\tblob.l += 2; //var dyT = blob.read_shift(2);\n\tblob.l += 2; //var colR = blob.read_shift(2);\n\tblob.l += 2; //var dxR = blob.read_shift(2);\n\tblob.l += 2; //var rwB = blob.read_shift(2);\n\tblob.l += 2; //var dyB = blob.read_shift(2);\n\tblob.l += 2; //var cbMacro = blob.read_shift(2);\n\tblob.l += 6;\n\tlength -= 36;\n\tvar fts = [];\n\tfts.push((parse_BIFF5OT[ot]||parsenoop)(blob, length, opts));\n\treturn { cmo: [id, ot, grbit], ft:fts };\n}\n\n/* [MS-XLS] 2.4.329 TODO: parse properly */\nfunction parse_TxO(blob, length, opts) {\n\tvar s = blob.l;\n\tvar texts = \"\";\ntry {\n\tblob.l += 4;\n\tvar ot = (opts.lastobj||{cmo:[0,0]}).cmo[1];\n\tvar controlInfo; // eslint-disable-line no-unused-vars\n\tif([0,5,7,11,12,14].indexOf(ot) == -1) blob.l += 6;\n\telse controlInfo = parse_ControlInfo(blob, 6, opts);\n\tvar cchText = blob.read_shift(2);\n\t/*var cbRuns = */blob.read_shift(2);\n\t/*var ifntEmpty = */parseuint16(blob, 2);\n\tvar len = blob.read_shift(2);\n\tblob.l += len;\n\t//var fmla = parse_ObjFmla(blob, s + length - blob.l);\n\n\tfor(var i = 1; i < blob.lens.length-1; ++i) {\n\t\tif(blob.l-s != blob.lens[i]) throw new Error(\"TxO: bad continue record\");\n\t\tvar hdr = blob[blob.l];\n\t\tvar t = parse_XLUnicodeStringNoCch(blob, blob.lens[i+1]-blob.lens[i]-1);\n\t\ttexts += t;\n\t\tif(texts.length >= (hdr ? cchText : 2*cchText)) break;\n\t}\n\tif(texts.length !== cchText && texts.length !== cchText*2) {\n\t\tthrow new Error(\"cchText: \" + cchText + \" != \" + texts.length);\n\t}\n\n\tblob.l = s + length;\n\t/* [MS-XLS] 2.5.272 TxORuns */\n//\tvar rgTxoRuns = [];\n//\tfor(var j = 0; j != cbRuns/8-1; ++j) blob.l += 8;\n//\tvar cchText2 = blob.read_shift(2);\n//\tif(cchText2 !== cchText) throw new Error(\"TxOLastRun mismatch: \" + cchText2 + \" \" + cchText);\n//\tblob.l += 6;\n//\tif(s + length != blob.l) throw new Error(\"TxO \" + (s + length) + \", at \" + blob.l);\n\treturn { t: texts };\n} catch(e) { blob.l = s + length; return { t: texts }; }\n}\n\n/* [MS-XLS] 2.4.140 */\nfunction parse_HLink(blob, length) {\n\tvar ref = parse_Ref8U(blob, 8);\n\tblob.l += 16; /* CLSID */\n\tvar hlink = parse_Hyperlink(blob, length-24);\n\treturn [ref, hlink];\n}\nfunction write_HLink(hl) {\n\tvar O = new_buf(24);\n\tvar ref = decode_cell(hl[0]);\n\tO.write_shift(2, ref.r); O.write_shift(2, ref.r);\n\tO.write_shift(2, ref.c); O.write_shift(2, ref.c);\n\tvar clsid = \"d0 c9 ea 79 f9 ba ce 11 8c 82 00 aa 00 4b a9 0b\".split(\" \");\n\tfor(var i = 0; i < 16; ++i) O.write_shift(1, parseInt(clsid[i], 16));\n\treturn bconcat([O, write_Hyperlink(hl[1])]);\n}\n\n\n/* [MS-XLS] 2.4.141 */\nfunction parse_HLinkTooltip(blob, length) {\n\tblob.read_shift(2);\n\tvar ref = parse_Ref8U(blob, 8);\n\tvar wzTooltip = blob.read_shift((length-10)/2, 'dbcs-cont');\n\twzTooltip = wzTooltip.replace(chr0,\"\");\n\treturn [ref, wzTooltip];\n}\nfunction write_HLinkTooltip(hl) {\n\tvar TT = hl[1].Tooltip;\n\tvar O = new_buf(10 + 2 * (TT.length + 1));\n\tO.write_shift(2, 0x0800);\n\tvar ref = decode_cell(hl[0]);\n\tO.write_shift(2, ref.r); O.write_shift(2, ref.r);\n\tO.write_shift(2, ref.c); O.write_shift(2, ref.c);\n\tfor(var i = 0; i < TT.length; ++i) O.write_shift(2, TT.charCodeAt(i));\n\tO.write_shift(2, 0);\n\treturn O;\n}\n\n/* [MS-XLS] 2.4.63 */\nfunction parse_Country(blob) {\n\tvar o = [0,0], d;\n\td = blob.read_shift(2); o[0] = CountryEnum[d] || d;\n\td = blob.read_shift(2); o[1] = CountryEnum[d] || d;\n\treturn o;\n}\nfunction write_Country(o) {\n\tif(!o) o = new_buf(4);\n\to.write_shift(2, 0x01);\n\to.write_shift(2, 0x01);\n\treturn o;\n}\n\n/* [MS-XLS] 2.4.50 ClrtClient */\nfunction parse_ClrtClient(blob) {\n\tvar ccv = blob.read_shift(2);\n\tvar o = [];\n\twhile(ccv-->0) o.push(parse_LongRGB(blob, 8));\n\treturn o;\n}\n\n/* [MS-XLS] 2.4.188 */\nfunction parse_Palette(blob) {\n\tvar ccv = blob.read_shift(2);\n\tvar o = [];\n\twhile(ccv-->0) o.push(parse_LongRGB(blob, 8));\n\treturn o;\n}\n\n/* [MS-XLS] 2.4.354 */\nfunction parse_XFCRC(blob) {\n\tblob.l += 2;\n\tvar o = {cxfs:0, crc:0};\n\to.cxfs = blob.read_shift(2);\n\to.crc = blob.read_shift(4);\n\treturn o;\n}\n\n/* [MS-XLS] 2.4.53 TODO: parse flags */\n/* [MS-XLSB] 2.4.323 TODO: parse flags */\nfunction parse_ColInfo(blob, length, opts) {\n\tif(!opts.cellStyles) return parsenoop(blob, length);\n\tvar w = opts && opts.biff >= 12 ? 4 : 2;\n\tvar colFirst = blob.read_shift(w);\n\tvar colLast = blob.read_shift(w);\n\tvar coldx = blob.read_shift(w);\n\tvar ixfe = blob.read_shift(w);\n\tvar flags = blob.read_shift(2);\n\tif(w == 2) blob.l += 2;\n\treturn {s:colFirst, e:colLast, w:coldx, ixfe:ixfe, flags:flags};\n}\n\n/* [MS-XLS] 2.4.257 */\nfunction parse_Setup(blob, length) {\n\tvar o = {};\n\tif(length < 32) return o;\n\tblob.l += 16;\n\to.header = parse_Xnum(blob, 8);\n\to.footer = parse_Xnum(blob, 8);\n\tblob.l += 2;\n\treturn o;\n}\n\n/* [MS-XLS] 2.4.261 */\nfunction parse_ShtProps(blob, length, opts) {\n\tvar def = {area:false};\n\tif(opts.biff != 5) { blob.l += length; return def; }\n\tvar d = blob.read_shift(1); blob.l += 3;\n\tif((d & 0x10)) def.area = true;\n\treturn def;\n}\n\n/* [MS-XLS] 2.4.241 */\nfunction write_RRTabId(n) {\n\tvar out = new_buf(2 * n);\n\tfor(var i = 0; i < n; ++i) out.write_shift(2, i+1);\n\treturn out;\n}\n\nvar parse_Blank = parse_XLSCell; /* [MS-XLS] 2.4.20 Just the cell */\nvar parse_Scl = parseuint16a; /* [MS-XLS] 2.4.247 num, den */\nvar parse_String = parse_XLUnicodeString; /* [MS-XLS] 2.4.268 */\n\n/* --- Specific to versions before BIFF8 --- */\nfunction parse_ImData(blob) {\n\tvar cf = blob.read_shift(2);\n\tvar env = blob.read_shift(2);\n\tvar lcb = blob.read_shift(4);\n\tvar o = {fmt:cf, env:env, len:lcb, data:blob.slice(blob.l,blob.l+lcb)};\n\tblob.l += lcb;\n\treturn o;\n}\n\n/* BIFF2_??? where ??? is the name from [XLS] */\nfunction parse_BIFF2STR(blob, length, opts) {\n\tvar cell = parse_XLSCell(blob, 6);\n\t++blob.l;\n\tvar str = parse_XLUnicodeString2(blob, length-7, opts);\n\tcell.t = 'str';\n\tcell.val = str;\n\treturn cell;\n}\n\nfunction parse_BIFF2NUM(blob) {\n\tvar cell = parse_XLSCell(blob, 6);\n\t++blob.l;\n\tvar num = parse_Xnum(blob, 8);\n\tcell.t = 'n';\n\tcell.val = num;\n\treturn cell;\n}\nfunction write_BIFF2NUM(r, c, val) {\n\tvar out = new_buf(15);\n\twrite_BIFF2Cell(out, r, c);\n\tout.write_shift(8, val, 'f');\n\treturn out;\n}\n\nfunction parse_BIFF2INT(blob) {\n\tvar cell = parse_XLSCell(blob, 6);\n\t++blob.l;\n\tvar num = blob.read_shift(2);\n\tcell.t = 'n';\n\tcell.val = num;\n\treturn cell;\n}\nfunction write_BIFF2INT(r, c, val) {\n\tvar out = new_buf(9);\n\twrite_BIFF2Cell(out, r, c);\n\tout.write_shift(2, val);\n\treturn out;\n}\n\nfunction parse_BIFF2STRING(blob) {\n\tvar cch = blob.read_shift(1);\n\tif(cch === 0) { blob.l++; return \"\"; }\n\treturn blob.read_shift(cch, 'sbcs-cont');\n}\n\n/* TODO: convert to BIFF8 font struct */\nfunction parse_BIFF2FONTXTRA(blob, length) {\n\tblob.l += 6; // unknown\n\tblob.l += 2; // font weight \"bls\"\n\tblob.l += 1; // charset\n\tblob.l += 3; // unknown\n\tblob.l += 1; // font family\n\tblob.l += length - 13;\n}\n\n/* TODO: parse rich text runs */\nfunction parse_RString(blob, length, opts) {\n\tvar end = blob.l + length;\n\tvar cell = parse_XLSCell(blob, 6);\n\tvar cch = blob.read_shift(2);\n\tvar str = parse_XLUnicodeStringNoCch(blob, cch, opts);\n\tblob.l = end;\n\tcell.t = 'str';\n\tcell.val = str;\n\treturn cell;\n}\n/* from js-harb (C) 2014-present SheetJS */\nvar DBF = (function() {\nvar dbf_codepage_map = {\n\t/* Code Pages Supported by Visual FoxPro */\n0x01: 437, 0x02: 850,\n0x03: 1252, 0x04: 10000,\n0x64: 852, 0x65: 866,\n0x66: 865, 0x67: 861,\n0x68: 895, 0x69: 620,\n0x6A: 737, 0x6B: 857,\n0x78: 950, 0x79: 949,\n0x7A: 936, 0x7B: 932,\n0x7C: 874, 0x7D: 1255,\n0x7E: 1256, 0x96: 10007,\n0x97: 10029, 0x98: 10006,\n0xC8: 1250, 0xC9: 1251,\n0xCA: 1254, 0xCB: 1253,\n\n\t/* shapefile DBF extension */\n0x00: 20127, 0x08: 865,\n0x09: 437, 0x0A: 850,\n0x0B: 437, 0x0D: 437,\n0x0E: 850, 0x0F: 437,\n0x10: 850, 0x11: 437,\n0x12: 850, 0x13: 932,\n0x14: 850, 0x15: 437,\n0x16: 850, 0x17: 865,\n0x18: 437, 0x19: 437,\n0x1A: 850, 0x1B: 437,\n0x1C: 863, 0x1D: 850,\n0x1F: 852, 0x22: 852,\n0x23: 852, 0x24: 860,\n0x25: 850, 0x26: 866,\n0x37: 850, 0x40: 852,\n0x4D: 936, 0x4E: 949,\n0x4F: 950, 0x50: 874,\n0x57: 1252, 0x58: 1252,\n0x59: 1252,\n\n0xFF: 16969\n};\nvar dbf_reverse_map = evert({\n0x01: 437, 0x02: 850,\n0x03: 1252, 0x04: 10000,\n0x64: 852, 0x65: 866,\n0x66: 865, 0x67: 861,\n0x68: 895, 0x69: 620,\n0x6A: 737, 0x6B: 857,\n0x78: 950, 0x79: 949,\n0x7A: 936, 0x7B: 932,\n0x7C: 874, 0x7D: 1255,\n0x7E: 1256, 0x96: 10007,\n0x97: 10029, 0x98: 10006,\n0xC8: 1250, 0xC9: 1251,\n0xCA: 1254, 0xCB: 1253,\n0x00: 20127\n});\n/* TODO: find an actual specification */\nfunction dbf_to_aoa(buf, opts) {\n\tvar out = [];\n\t/* TODO: browser based */\n\tvar d = (new_raw_buf(1));\n\tswitch(opts.type) {\n\t\tcase 'base64': d = s2a(Base64.decode(buf)); break;\n\t\tcase 'binary': d = s2a(buf); break;\n\t\tcase 'buffer':\n\t\tcase 'array': d = buf; break;\n\t}\n\tprep_blob(d, 0);\n\t/* header */\n\tvar ft = d.read_shift(1);\n\tvar memo = false;\n\tvar vfp = false, l7 = false;\n\tswitch(ft) {\n\t\tcase 0x02: case 0x03: break;\n\t\tcase 0x30: vfp = true; memo = true; break;\n\t\tcase 0x31: vfp = true; break;\n\t\tcase 0x83: memo = true; break;\n\t\tcase 0x8B: memo = true; break;\n\t\tcase 0x8C: memo = true; l7 = true; break;\n\t\tcase 0xF5: memo = true; break;\n\t\tdefault: throw new Error(\"DBF Unsupported Version: \" + ft.toString(16));\n\t}\n\tvar /*filedate = new Date(),*/ nrow = 0, fpos = 0;\n\tif(ft == 0x02) nrow = d.read_shift(2);\n\t/*filedate = new Date(d.read_shift(1) + 1900, d.read_shift(1) - 1, d.read_shift(1));*/d.l += 3;\n\tif(ft != 0x02) nrow = d.read_shift(4);\n\tif(ft != 0x02) fpos = d.read_shift(2);\n\tvar rlen = d.read_shift(2);\n\n\tvar /*flags = 0,*/ current_cp = 1252;\n\tif(ft != 0x02) {\n\td.l+=16;\n\t/*flags = */d.read_shift(1);\n\t//if(memo && ((flags & 0x02) === 0)) throw new Error(\"DBF Flags \" + flags.toString(16) + \" ft \" + ft.toString(16));\n\n\t/* codepage present in FoxPro */\n\tif(d[d.l] !== 0) current_cp = dbf_codepage_map[d[d.l]];\n\td.l+=1;\n\n\td.l+=2;\n\t}\n\tif(l7) d.l += 36;\nvar fields = [], field = ({});\n\tvar hend = fpos - 10 - (vfp ? 264 : 0), ww = l7 ? 32 : 11;\n\twhile(ft == 0x02 ? d.l < d.length && d[d.l] != 0x0d: d.l < hend) {\n\t\tfield = ({});\n\t\tfield.name = cptable.utils.decode(current_cp, d.slice(d.l, d.l+ww)).replace(/[\\u0000\\r\\n].*$/g,\"\");\n\t\td.l += ww;\n\t\tfield.type = String.fromCharCode(d.read_shift(1));\n\t\tif(ft != 0x02 && !l7) field.offset = d.read_shift(4);\n\t\tfield.len = d.read_shift(1);\n\t\tif(ft == 0x02) field.offset = d.read_shift(2);\n\t\tfield.dec = d.read_shift(1);\n\t\tif(field.name.length) fields.push(field);\n\t\tif(ft != 0x02) d.l += l7 ? 13 : 14;\n\t\tswitch(field.type) {\n\t\t\tcase 'B': // VFP Double\n\t\t\t\tif((!vfp || field.len != 8) && opts.WTF) console.log('Skipping ' + field.name + ':' + field.type);\n\t\t\t\tbreak;\n\t\t\tcase 'G': // General\n\t\t\tcase 'P': // Picture\n\t\t\t\tif(opts.WTF) console.log('Skipping ' + field.name + ':' + field.type);\n\t\t\t\tbreak;\n\t\t\tcase 'C': // character\n\t\t\tcase 'D': // date\n\t\t\tcase 'F': // floating point\n\t\t\tcase 'I': // long\n\t\t\tcase 'L': // boolean\n\t\t\tcase 'M': // memo\n\t\t\tcase 'N': // number\n\t\t\tcase 'O': // double\n\t\t\tcase 'T': // datetime\n\t\t\tcase 'Y': // currency\n\t\t\tcase '0': // VFP _NullFlags\n\t\t\tcase '@': // timestamp\n\t\t\tcase '+': // autoincrement\n\t\t\t\tbreak;\n\t\t\tdefault: throw new Error('Unknown Field Type: ' + field.type);\n\t\t}\n\t}\n\tif(d[d.l] !== 0x0D) d.l = fpos-1;\n\telse if(ft == 0x02) d.l = 0x209;\n\tif(ft != 0x02) {\n\t\tif(d.read_shift(1) !== 0x0D) throw new Error(\"DBF Terminator not found \" + d.l + \" \" + d[d.l]);\n\t\td.l = fpos;\n\t}\n\t/* data */\n\tvar R = 0, C = 0;\n\tout[0] = [];\n\tfor(C = 0; C != fields.length; ++C) out[0][C] = fields[C].name;\n\twhile(nrow-- > 0) {\n\t\tif(d[d.l] === 0x2A) { d.l+=rlen; continue; }\n\t\t++d.l;\n\t\tout[++R] = []; C = 0;\n\t\tfor(C = 0; C != fields.length; ++C) {\n\t\t\tvar dd = d.slice(d.l, d.l+fields[C].len); d.l+=fields[C].len;\n\t\t\tprep_blob(dd, 0);\n\t\t\tvar s = cptable.utils.decode(current_cp, dd);\n\t\t\tswitch(fields[C].type) {\n\t\t\t\tcase 'C':\n\t\t\t\t\tout[R][C] = cptable.utils.decode(current_cp, dd);\n\t\t\t\t\tout[R][C] = out[R][C].trim();\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'D':\n\t\t\t\t\tif(s.length === 8) out[R][C] = new Date(+s.slice(0,4), +s.slice(4,6)-1, +s.slice(6,8));\n\t\t\t\t\telse out[R][C] = s;\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'F': out[R][C] = parseFloat(s.trim()); break;\n\t\t\t\tcase '+': case 'I': out[R][C] = l7 ? dd.read_shift(-4, 'i') ^ 0x80000000 : dd.read_shift(4, 'i'); break;\n\t\t\t\tcase 'L': switch(s.toUpperCase()) {\n\t\t\t\t\tcase 'Y': case 'T': out[R][C] = true; break;\n\t\t\t\t\tcase 'N': case 'F': out[R][C] = false; break;\n\t\t\t\t\tcase ' ': case '?': out[R][C] = false; break; /* NOTE: technically uninitialized */\n\t\t\t\t\tdefault: throw new Error(\"DBF Unrecognized L:|\" + s + \"|\");\n\t\t\t\t\t} break;\n\t\t\t\tcase 'M': /* TODO: handle memo files */\n\t\t\t\t\tif(!memo) throw new Error(\"DBF Unexpected MEMO for type \" + ft.toString(16));\n\t\t\t\t\tout[R][C] = \"##MEMO##\" + (l7 ? parseInt(s.trim(), 10): dd.read_shift(4));\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'N': out[R][C] = +s.replace(/\\u0000/g,\"\").trim(); break;\n\t\t\t\tcase '@': out[R][C] = new Date(dd.read_shift(-8, 'f') - 0x388317533400); break;\n\t\t\t\tcase 'T': out[R][C] = new Date((dd.read_shift(4) - 0x253D8C) * 0x5265C00 + dd.read_shift(4)); break;\n\t\t\t\tcase 'Y': out[R][C] = dd.read_shift(4,'i')/1e4; break;\n\t\t\t\tcase 'O': out[R][C] = -dd.read_shift(-8, 'f'); break;\n\t\t\t\tcase 'B': if(vfp && fields[C].len == 8) { out[R][C] = dd.read_shift(8,'f'); break; }\n\t\t\t\t\t/* falls through */\n\t\t\t\tcase 'G': case 'P': dd.l += fields[C].len; break;\n\t\t\t\tcase '0':\n\t\t\t\t\tif(fields[C].name === '_NullFlags') break;\n\t\t\t\t\t/* falls through */\n\t\t\t\tdefault: throw new Error(\"DBF Unsupported data type \" + fields[C].type);\n\t\t\t}\n\t\t}\n\t}\n\tif(ft != 0x02) if(d.l < d.length && d[d.l++] != 0x1A) throw new Error(\"DBF EOF Marker missing \" + (d.l-1) + \" of \" + d.length + \" \" + d[d.l-1].toString(16));\n\tif(opts && opts.sheetRows) out = out.slice(0, opts.sheetRows);\n\treturn out;\n}\n\nfunction dbf_to_sheet(buf, opts) {\n\tvar o = opts || {};\n\tif(!o.dateNF) o.dateNF = \"yyyymmdd\";\n\treturn aoa_to_sheet(dbf_to_aoa(buf, o), o);\n}\n\nfunction dbf_to_workbook(buf, opts) {\n\ttry { return sheet_to_workbook(dbf_to_sheet(buf, opts), opts); }\n\tcatch(e) { if(opts && opts.WTF) throw e; }\n\treturn ({SheetNames:[],Sheets:{}});\n}\n\nvar _RLEN = { 'B': 8, 'C': 250, 'L': 1, 'D': 8, '?': 0, '': 0 };\nfunction sheet_to_dbf(ws, opts) {\n\tvar o = opts || {};\n\tif(+o.codepage >= 0) set_cp(+o.codepage);\n\tif(o.type == \"string\") throw new Error(\"Cannot write DBF to JS string\");\n\tvar ba = buf_array();\n\tvar aoa = sheet_to_json(ws, {header:1, raw:true, cellDates:true});\n\tvar headers = aoa[0], data = aoa.slice(1);\n\tvar i = 0, j = 0, hcnt = 0, rlen = 1;\n\tfor(i = 0; i < headers.length; ++i) {\n\t\tif(i == null) continue;\n\t\t++hcnt;\n\t\tif(typeof headers[i] === 'number') headers[i] = headers[i].toString(10);\n\t\tif(typeof headers[i] !== 'string') throw new Error(\"DBF Invalid column name \" + headers[i] + \" |\" + (typeof headers[i]) + \"|\");\n\t\tif(headers.indexOf(headers[i]) !== i) for(j=0; j<1024;++j)\n\t\t\tif(headers.indexOf(headers[i] + \"_\" + j) == -1) { headers[i] += \"_\" + j; break; }\n\t}\n\tvar range = safe_decode_range(ws['!ref']);\n\tvar coltypes = [];\n\tfor(i = 0; i <= range.e.c - range.s.c; ++i) {\n\t\tvar col = [];\n\t\tfor(j=0; j < data.length; ++j) {\n\t\t\tif(data[j][i] != null) col.push(data[j][i]);\n\t\t}\n\t\tif(col.length == 0 || headers[i] == null) { coltypes[i] = '?'; continue; }\n\t\tvar guess = '', _guess = '';\n\t\tfor(j = 0; j < col.length; ++j) {\n\t\t\tswitch(typeof col[j]) {\n\t\t\t\t/* TODO: check if L2 compat is desired */\n\t\t\t\tcase 'number': _guess = 'B'; break;\n\t\t\t\tcase 'string': _guess = 'C'; break;\n\t\t\t\tcase 'boolean': _guess = 'L'; break;\n\t\t\t\tcase 'object': _guess = col[j] instanceof Date ? 'D' : 'C'; break;\n\t\t\t\tdefault: _guess = 'C';\n\t\t\t}\n\t\t\tguess = guess && guess != _guess ? 'C' : _guess;\n\t\t\tif(guess == 'C') break;\n\t\t}\n\t\trlen += _RLEN[guess] || 0;\n\t\tcoltypes[i] = guess;\n\t}\n\n\tvar h = ba.next(32);\n\th.write_shift(4, 0x13021130);\n\th.write_shift(4, data.length);\n\th.write_shift(2, 296 + 32 * hcnt);\n\th.write_shift(2, rlen);\n\tfor(i=0; i < 4; ++i) h.write_shift(4, 0);\n\th.write_shift(4, 0x00000000 | ((+dbf_reverse_map[current_ansi] || 0x03)<<8));\n\n\tfor(i = 0, j = 0; i < headers.length; ++i) {\n\t\tif(headers[i] == null) continue;\n\t\tvar hf = ba.next(32);\n\t\tvar _f = (headers[i].slice(-10) + \"\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\").slice(0, 11);\n\t\thf.write_shift(1, _f, \"sbcs\");\n\t\thf.write_shift(1, coltypes[i] == '?' ? 'C' : coltypes[i], \"sbcs\");\n\t\thf.write_shift(4, j);\n\t\thf.write_shift(1, _RLEN[coltypes[i]] || 0);\n\t\thf.write_shift(1, 0);\n\t\thf.write_shift(1, 0x02);\n\t\thf.write_shift(4, 0);\n\t\thf.write_shift(1, 0);\n\t\thf.write_shift(4, 0);\n\t\thf.write_shift(4, 0);\n\t\tj += _RLEN[coltypes[i]] || 0;\n\t}\n\n\tvar hb = ba.next(264);\n\thb.write_shift(4, 0x0000000D);\n\tfor(i=0; i < 65;++i) hb.write_shift(4, 0x00000000);\n\tfor(i=0; i < data.length; ++i) {\n\t\tvar rout = ba.next(rlen);\n\t\trout.write_shift(1, 0);\n\t\tfor(j=0; j\":190, \"?\":191, \"{\":223\n\t};\n\tvar sylk_char_regex = new RegExp(\"\\u001BN(\" + keys(sylk_escapes).join(\"|\").replace(/\\|\\|\\|/, \"|\\\\||\").replace(/([?()+])/g,\"\\\\$1\") + \"|\\\\|)\", \"gm\");\n\tvar sylk_char_fn = function(_, $1){ var o = sylk_escapes[$1]; return typeof o == \"number\" ? _getansi(o) : o; };\n\tvar decode_sylk_char = function($$, $1, $2) { var newcc = (($1.charCodeAt(0) - 0x20)<<4) | ($2.charCodeAt(0) - 0x30); return newcc == 59 ? $$ : _getansi(newcc); };\n\tsylk_escapes[\"|\"] = 254;\n\t/* TODO: find an actual specification */\n\tfunction sylk_to_aoa(d, opts) {\n\t\tswitch(opts.type) {\n\t\t\tcase 'base64': return sylk_to_aoa_str(Base64.decode(d), opts);\n\t\t\tcase 'binary': return sylk_to_aoa_str(d, opts);\n\t\t\tcase 'buffer': return sylk_to_aoa_str(d.toString('binary'), opts);\n\t\t\tcase 'array': return sylk_to_aoa_str(cc2str(d), opts);\n\t\t}\n\t\tthrow new Error(\"Unrecognized type \" + opts.type);\n\t}\n\tfunction sylk_to_aoa_str(str, opts) {\n\t\tvar records = str.split(/[\\n\\r]+/), R = -1, C = -1, ri = 0, rj = 0, arr = [];\n\t\tvar formats = [];\n\t\tvar next_cell_format = null;\n\t\tvar sht = {}, rowinfo = [], colinfo = [], cw = [];\n\t\tvar Mval = 0, j;\n\t\tif(+opts.codepage >= 0) set_cp(+opts.codepage);\n\t\tfor (; ri !== records.length; ++ri) {\n\t\t\tMval = 0;\n\t\t\tvar rstr=records[ri].trim().replace(/\\x1B([\\x20-\\x2F])([\\x30-\\x3F])/g, decode_sylk_char).replace(sylk_char_regex, sylk_char_fn);\n\t\t\tvar record=rstr.replace(/;;/g, \"\\u0000\").split(\";\").map(function(x) { return x.replace(/\\u0000/g, \";\"); });\n\t\t\tvar RT=record[0], val;\n\t\t\tif(rstr.length > 0) switch(RT) {\n\t\t\tcase 'ID': break; /* header */\n\t\t\tcase 'E': break; /* EOF */\n\t\t\tcase 'B': break; /* dimensions */\n\t\t\tcase 'O': break; /* options? */\n\t\t\tcase 'P':\n\t\t\t\tif(record[1].charAt(0) == 'P')\n\t\t\t\t\tformats.push(rstr.slice(3).replace(/;;/g, \";\"));\n\t\t\t\tbreak;\n\t\t\tcase 'C':\n\t\t\tvar C_seen_K = false, C_seen_X = false;\n\t\t\tfor(rj=1; rj 0) { rowinfo[R].hpt = Mval; rowinfo[R].hpx = pt2px(Mval); }\n\t\t\t\t\telse if(Mval === 0) rowinfo[R].hidden = true;\n\t\t\t\t\tbreak;\n\t\t\t\tdefault: if(opts && opts.WTF) throw new Error(\"SYLK bad record \" + rstr);\n\t\t\t}\n\t\t\tif(F_seen < 1) next_cell_format = null; break;\n\t\t\tdefault: if(opts && opts.WTF) throw new Error(\"SYLK bad record \" + rstr);\n\t\t\t}\n\t\t}\n\t\tif(rowinfo.length > 0) sht['!rows'] = rowinfo;\n\t\tif(colinfo.length > 0) sht['!cols'] = colinfo;\n\t\tif(opts && opts.sheetRows) arr = arr.slice(0, opts.sheetRows);\n\t\treturn [arr, sht];\n\t}\n\n\tfunction sylk_to_sheet(d, opts) {\n\t\tvar aoasht = sylk_to_aoa(d, opts);\n\t\tvar aoa = aoasht[0], ws = aoasht[1];\n\t\tvar o = aoa_to_sheet(aoa, opts);\n\t\tkeys(ws).forEach(function(k) { o[k] = ws[k]; });\n\t\treturn o;\n\t}\n\n\tfunction sylk_to_workbook(d, opts) { return sheet_to_workbook(sylk_to_sheet(d, opts), opts); }\n\n\tfunction write_ws_cell_sylk(cell, ws, R, C) {\n\t\tvar o = \"C;Y\" + (R+1) + \";X\" + (C+1) + \";K\";\n\t\tswitch(cell.t) {\n\t\t\tcase 'n':\n\t\t\t\to += (cell.v||0);\n\t\t\t\tif(cell.f && !cell.F) o += \";E\" + a1_to_rc(cell.f, {r:R, c:C}); break;\n\t\t\tcase 'b': o += cell.v ? \"TRUE\" : \"FALSE\"; break;\n\t\t\tcase 'e': o += cell.w || cell.v; break;\n\t\t\tcase 'd': o += '\"' + (cell.w || cell.v) + '\"'; break;\n\t\t\tcase 's': o += '\"' + cell.v.replace(/\"/g,\"\") + '\"'; break;\n\t\t}\n\t\treturn o;\n\t}\n\n\tfunction write_ws_cols_sylk(out, cols) {\n\t\tcols.forEach(function(col, i) {\n\t\t\tvar rec = \"F;W\" + (i+1) + \" \" + (i+1) + \" \";\n\t\t\tif(col.hidden) rec += \"0\";\n\t\t\telse {\n\t\t\t\tif(typeof col.width == 'number') col.wpx = width2px(col.width);\n\t\t\t\tif(typeof col.wpx == 'number') col.wch = px2char(col.wpx);\n\t\t\t\tif(typeof col.wch == 'number') rec += Math.round(col.wch);\n\t\t\t}\n\t\t\tif(rec.charAt(rec.length - 1) != \" \") out.push(rec);\n\t\t});\n\t}\n\n\tfunction write_ws_rows_sylk(out, rows) {\n\t\trows.forEach(function(row, i) {\n\t\t\tvar rec = \"F;\";\n\t\t\tif(row.hidden) rec += \"M0;\";\n\t\t\telse if(row.hpt) rec += \"M\" + 20 * row.hpt + \";\";\n\t\t\telse if(row.hpx) rec += \"M\" + 20 * px2pt(row.hpx) + \";\";\n\t\t\tif(rec.length > 2) out.push(rec + \"R\" + (i+1));\n\t\t});\n\t}\n\n\tfunction sheet_to_sylk(ws, opts) {\n\t\tvar preamble = [\"ID;PWXL;N;E\"], o = [];\n\t\tvar r = safe_decode_range(ws['!ref']), cell;\n\t\tvar dense = Array.isArray(ws);\n\t\tvar RS = \"\\r\\n\";\n\n\t\tpreamble.push(\"P;PGeneral\");\n\t\tpreamble.push(\"F;P0;DG0G8;M255\");\n\t\tif(ws['!cols']) write_ws_cols_sylk(preamble, ws['!cols']);\n\t\tif(ws['!rows']) write_ws_rows_sylk(preamble, ws['!rows']);\n\n\t\tpreamble.push(\"B;Y\" + (r.e.r - r.s.r + 1) + \";X\" + (r.e.c - r.s.c + 1) + \";D\" + [r.s.c,r.s.r,r.e.c,r.e.r].join(\" \"));\n\t\tfor(var R = r.s.r; R <= r.e.r; ++R) {\n\t\t\tfor(var C = r.s.c; C <= r.e.c; ++C) {\n\t\t\t\tvar coord = encode_cell({r:R,c:C});\n\t\t\t\tcell = dense ? (ws[R]||[])[C]: ws[coord];\n\t\t\t\tif(!cell || (cell.v == null && (!cell.f || cell.F))) continue;\n\t\t\t\to.push(write_ws_cell_sylk(cell, ws, R, C, opts));\n\t\t\t}\n\t\t}\n\t\treturn preamble.join(RS) + RS + o.join(RS) + RS + \"E\" + RS;\n\t}\n\n\treturn {\n\t\tto_workbook: sylk_to_workbook,\n\t\tto_sheet: sylk_to_sheet,\n\t\tfrom_sheet: sheet_to_sylk\n\t};\n})();\n\nvar DIF = (function() {\n\tfunction dif_to_aoa(d, opts) {\n\t\tswitch(opts.type) {\n\t\t\tcase 'base64': return dif_to_aoa_str(Base64.decode(d), opts);\n\t\t\tcase 'binary': return dif_to_aoa_str(d, opts);\n\t\t\tcase 'buffer': return dif_to_aoa_str(d.toString('binary'), opts);\n\t\t\tcase 'array': return dif_to_aoa_str(cc2str(d), opts);\n\t\t}\n\t\tthrow new Error(\"Unrecognized type \" + opts.type);\n\t}\n\tfunction dif_to_aoa_str(str, opts) {\n\t\tvar records = str.split('\\n'), R = -1, C = -1, ri = 0, arr = [];\n\t\tfor (; ri !== records.length; ++ri) {\n\t\t\tif (records[ri].trim() === 'BOT') { arr[++R] = []; C = 0; continue; }\n\t\t\tif (R < 0) continue;\n\t\t\tvar metadata = records[ri].trim().split(\",\");\n\t\t\tvar type = metadata[0], value = metadata[1];\n\t\t\t++ri;\n\t\t\tvar data = records[ri].trim();\n\t\t\tswitch (+type) {\n\t\t\t\tcase -1:\n\t\t\t\t\tif (data === 'BOT') { arr[++R] = []; C = 0; continue; }\n\t\t\t\t\telse if (data !== 'EOD') throw new Error(\"Unrecognized DIF special command \" + data);\n\t\t\t\t\tbreak;\n\t\t\t\tcase 0:\n\t\t\t\t\tif(data === 'TRUE') arr[R][C] = true;\n\t\t\t\t\telse if(data === 'FALSE') arr[R][C] = false;\n\t\t\t\t\telse if(!isNaN(fuzzynum(value))) arr[R][C] = fuzzynum(value);\n\t\t\t\t\telse if(!isNaN(fuzzydate(value).getDate())) arr[R][C] = parseDate(value);\n\t\t\t\t\telse arr[R][C] = value;\n\t\t\t\t\t++C; break;\n\t\t\t\tcase 1:\n\t\t\t\t\tdata = data.slice(1,data.length-1);\n\t\t\t\t\tarr[R][C++] = data !== '' ? data : null;\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif (data === 'EOD') break;\n\t\t}\n\t\tif(opts && opts.sheetRows) arr = arr.slice(0, opts.sheetRows);\n\t\treturn arr;\n\t}\n\n\tfunction dif_to_sheet(str, opts) { return aoa_to_sheet(dif_to_aoa(str, opts), opts); }\n\tfunction dif_to_workbook(str, opts) { return sheet_to_workbook(dif_to_sheet(str, opts), opts); }\n\n\tvar sheet_to_dif = (function() {\n\t\tvar push_field = function pf(o, topic, v, n, s) {\n\t\t\to.push(topic);\n\t\t\to.push(v + \",\" + n);\n\t\t\to.push('\"' + s.replace(/\"/g,'\"\"') + '\"');\n\t\t};\n\t\tvar push_value = function po(o, type, v, s) {\n\t\t\to.push(type + \",\" + v);\n\t\t\to.push(type == 1 ? '\"' + s.replace(/\"/g,'\"\"') + '\"' : s);\n\t\t};\n\t\treturn function sheet_to_dif(ws) {\n\t\t\tvar o = [];\n\t\t\tvar r = safe_decode_range(ws['!ref']), cell;\n\t\t\tvar dense = Array.isArray(ws);\n\t\t\tpush_field(o, \"TABLE\", 0, 1, \"sheetjs\");\n\t\t\tpush_field(o, \"VECTORS\", 0, r.e.r - r.s.r + 1,\"\");\n\t\t\tpush_field(o, \"TUPLES\", 0, r.e.c - r.s.c + 1,\"\");\n\t\t\tpush_field(o, \"DATA\", 0, 0,\"\");\n\t\t\tfor(var R = r.s.r; R <= r.e.r; ++R) {\n\t\t\t\tpush_value(o, -1, 0, \"BOT\");\n\t\t\t\tfor(var C = r.s.c; C <= r.e.c; ++C) {\n\t\t\t\t\tvar coord = encode_cell({r:R,c:C});\n\t\t\t\t\tcell = dense ? (ws[R]||[])[C] : ws[coord];\n\t\t\t\t\tif(!cell) { push_value(o, 1, 0, \"\"); continue;}\n\t\t\t\t\tswitch(cell.t) {\n\t\t\t\t\t\tcase 'n':\n\t\t\t\t\t\t\tvar val = DIF_XL ? cell.w : cell.v;\n\t\t\t\t\t\t\tif(!val && cell.v != null) val = cell.v;\n\t\t\t\t\t\t\tif(val == null) {\n\t\t\t\t\t\t\t\tif(DIF_XL && cell.f && !cell.F) push_value(o, 1, 0, \"=\" + cell.f);\n\t\t\t\t\t\t\t\telse push_value(o, 1, 0, \"\");\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse push_value(o, 0, val, \"V\");\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 'b':\n\t\t\t\t\t\t\tpush_value(o, 0, cell.v ? 1 : 0, cell.v ? \"TRUE\" : \"FALSE\");\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 's':\n\t\t\t\t\t\t\tpush_value(o, 1, 0, (!DIF_XL || isNaN(cell.v)) ? cell.v : '=\"' + cell.v + '\"');\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 'd':\n\t\t\t\t\t\t\tif(!cell.w) cell.w = SSF.format(cell.z || SSF._table[14], datenum(parseDate(cell.v)));\n\t\t\t\t\t\t\tif(DIF_XL) push_value(o, 0, cell.w, \"V\");\n\t\t\t\t\t\t\telse push_value(o, 1, 0, cell.w);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tdefault: push_value(o, 1, 0, \"\");\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tpush_value(o, -1, 0, \"EOD\");\n\t\t\tvar RS = \"\\r\\n\";\n\t\t\tvar oo = o.join(RS);\n\t\t\t//while((oo.length & 0x7F) != 0) oo += \"\\0\";\n\t\t\treturn oo;\n\t\t};\n\t})();\n\treturn {\n\t\tto_workbook: dif_to_workbook,\n\t\tto_sheet: dif_to_sheet,\n\t\tfrom_sheet: sheet_to_dif\n\t};\n})();\n\nvar ETH = (function() {\n\tfunction decode(s) { return s.replace(/\\\\b/g,\"\\\\\").replace(/\\\\c/g,\":\").replace(/\\\\n/g,\"\\n\"); }\n\tfunction encode(s) { return s.replace(/\\\\/g, \"\\\\b\").replace(/:/g, \"\\\\c\").replace(/\\n/g,\"\\\\n\"); }\n\n\tfunction eth_to_aoa(str, opts) {\n\t\tvar records = str.split('\\n'), R = -1, C = -1, ri = 0, arr = [];\n\t\tfor (; ri !== records.length; ++ri) {\n\t\t\tvar record = records[ri].trim().split(\":\");\n\t\t\tif(record[0] !== 'cell') continue;\n\t\t\tvar addr = decode_cell(record[1]);\n\t\t\tif(arr.length <= addr.r) for(R = arr.length; R <= addr.r; ++R) if(!arr[R]) arr[R] = [];\n\t\t\tR = addr.r; C = addr.c;\n\t\t\tswitch(record[2]) {\n\t\t\t\tcase 't': arr[R][C] = decode(record[3]); break;\n\t\t\t\tcase 'v': arr[R][C] = +record[3]; break;\n\t\t\t\tcase 'vtf': var _f = record[record.length - 1];\n\t\t\t\t\t/* falls through */\n\t\t\t\tcase 'vtc':\n\t\t\t\t\tswitch(record[3]) {\n\t\t\t\t\t\tcase 'nl': arr[R][C] = +record[4] ? true : false; break;\n\t\t\t\t\t\tdefault: arr[R][C] = +record[4]; break;\n\t\t\t\t\t}\n\t\t\t\t\tif(record[2] == 'vtf') arr[R][C] = [arr[R][C], _f];\n\t\t\t}\n\t\t}\n\t\tif(opts && opts.sheetRows) arr = arr.slice(0, opts.sheetRows);\n\t\treturn arr;\n\t}\n\n\tfunction eth_to_sheet(d, opts) { return aoa_to_sheet(eth_to_aoa(d, opts), opts); }\n\tfunction eth_to_workbook(d, opts) { return sheet_to_workbook(eth_to_sheet(d, opts), opts); }\n\n\tvar header = [\n\t\t\"socialcalc:version:1.5\",\n\t\t\"MIME-Version: 1.0\",\n\t\t\"Content-Type: multipart/mixed; boundary=SocialCalcSpreadsheetControlSave\"\n\t].join(\"\\n\");\n\n\tvar sep = [\n\t\t\"--SocialCalcSpreadsheetControlSave\",\n\t\t\"Content-type: text/plain; charset=UTF-8\"\n\t].join(\"\\n\") + \"\\n\";\n\n\t/* TODO: the other parts */\n\tvar meta = [\n\t\t\"# SocialCalc Spreadsheet Control Save\",\n\t\t\"part:sheet\"\n\t].join(\"\\n\");\n\n\tvar end = \"--SocialCalcSpreadsheetControlSave--\";\n\n\tfunction sheet_to_eth_data(ws) {\n\t\tif(!ws || !ws['!ref']) return \"\";\n\t\tvar o = [], oo = [], cell, coord = \"\";\n\t\tvar r = decode_range(ws['!ref']);\n\t\tvar dense = Array.isArray(ws);\n\t\tfor(var R = r.s.r; R <= r.e.r; ++R) {\n\t\t\tfor(var C = r.s.c; C <= r.e.c; ++C) {\n\t\t\t\tcoord = encode_cell({r:R,c:C});\n\t\t\t\tcell = dense ? (ws[R]||[])[C] : ws[coord];\n\t\t\t\tif(!cell || cell.v == null || cell.t === 'z') continue;\n\t\t\t\too = [\"cell\", coord, 't'];\n\t\t\t\tswitch(cell.t) {\n\t\t\t\t\tcase 's': case 'str': oo.push(encode(cell.v)); break;\n\t\t\t\t\tcase 'n':\n\t\t\t\t\t\tif(!cell.f) { oo[2]='v'; oo[3]=cell.v; }\n\t\t\t\t\t\telse { oo[2]='vtf'; oo[3]='n'; oo[4]=cell.v; oo[5]=encode(cell.f); }\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'b':\n\t\t\t\t\t\too[2] = 'vt'+(cell.f?'f':'c'); oo[3]='nl'; oo[4]=cell.v?\"1\":\"0\";\n\t\t\t\t\t\too[5] = encode(cell.f||(cell.v?'TRUE':'FALSE'));\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'd':\n\t\t\t\t\t\tvar t = datenum(parseDate(cell.v));\n\t\t\t\t\t\too[2] = 'vtc'; oo[3] = 'nd'; oo[4] = \"\"+t;\n\t\t\t\t\t\too[5] = cell.w || SSF.format(cell.z || SSF._table[14], t);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'e': continue;\n\t\t\t\t}\n\t\t\t\to.push(oo.join(\":\"));\n\t\t\t}\n\t\t}\n\t\to.push(\"sheet:c:\" + (r.e.c-r.s.c+1) + \":r:\" + (r.e.r-r.s.r+1) + \":tvf:1\");\n\t\to.push(\"valueformat:1:text-wiki\");\n\t\t//o.push(\"copiedfrom:\" + ws['!ref']); // clipboard only\n\t\treturn o.join(\"\\n\");\n\t}\n\n\tfunction sheet_to_eth(ws) {\n\t\treturn [header, sep, meta, sep, sheet_to_eth_data(ws), end].join(\"\\n\");\n\t\t// return [\"version:1.5\", sheet_to_eth_data(ws)].join(\"\\n\"); // clipboard form\n\t}\n\n\treturn {\n\t\tto_workbook: eth_to_workbook,\n\t\tto_sheet: eth_to_sheet,\n\t\tfrom_sheet: sheet_to_eth\n\t};\n})();\n\nvar PRN = (function() {\n\tfunction set_text_arr(data, arr, R, C, o) {\n\t\tif(o.raw) arr[R][C] = data;\n\t\telse if(data === 'TRUE') arr[R][C] = true;\n\t\telse if(data === 'FALSE') arr[R][C] = false;\n\t\telse if(data === \"\"){/* empty */}\n\t\telse if(!isNaN(fuzzynum(data))) arr[R][C] = fuzzynum(data);\n\t\telse if(!isNaN(fuzzydate(data).getDate())) arr[R][C] = parseDate(data);\n\t\telse arr[R][C] = data;\n\t}\n\n\tfunction prn_to_aoa_str(f, opts) {\n\t\tvar o = opts || {};\n\t\tvar arr = ([]);\n\t\tif(!f || f.length === 0) return arr;\n\t\tvar lines = f.split(/[\\r\\n]/);\n\t\tvar L = lines.length - 1;\n\t\twhile(L >= 0 && lines[L].length === 0) --L;\n\t\tvar start = 10, idx = 0;\n\t\tvar R = 0;\n\t\tfor(; R <= L; ++R) {\n\t\t\tidx = lines[R].indexOf(\" \");\n\t\t\tif(idx == -1) idx = lines[R].length; else idx++;\n\t\t\tstart = Math.max(start, idx);\n\t\t}\n\t\tfor(R = 0; R <= L; ++R) {\n\t\t\tarr[R] = [];\n\t\t\t/* TODO: confirm that widths are always 10 */\n\t\t\tvar C = 0;\n\t\t\tset_text_arr(lines[R].slice(0, start).trim(), arr, R, C, o);\n\t\t\tfor(C = 1; C <= (lines[R].length - start)/10 + 1; ++C)\n\t\t\t\tset_text_arr(lines[R].slice(start+(C-1)*10,start+C*10).trim(),arr,R,C,o);\n\t\t}\n\t\tif(o.sheetRows) arr = arr.slice(0, o.sheetRows);\n\t\treturn arr;\n\t}\n\n\t// List of accepted CSV separators\n\tvar guess_seps = {\n0x2C: ',',\n0x09: \"\\t\",\n0x3B: ';'\n\t};\n\n\t// CSV separator weights to be used in case of equal numbers\n\tvar guess_sep_weights = {\n0x2C: 3,\n0x09: 2,\n0x3B: 1\n\t};\n\n\tfunction guess_sep(str) {\n\t\tvar cnt = {}, instr = false, end = 0, cc = 0;\n\t\tfor(;end < str.length;++end) {\n\t\t\tif((cc=str.charCodeAt(end)) == 0x22) instr = !instr;\n\t\t\telse if(!instr && cc in guess_seps) cnt[cc] = (cnt[cc]||0)+1;\n\t\t}\n\n\t\tcc = [];\n\t\tfor(end in cnt) if ( cnt.hasOwnProperty(end) ) {\n\t\t\tcc.push([ cnt[end], end ]);\n\t\t}\n\n\t\tif ( !cc.length ) {\n\t\t\tcnt = guess_sep_weights;\n\t\t\tfor(end in cnt) if ( cnt.hasOwnProperty(end) ) {\n\t\t\t\tcc.push([ cnt[end], end ]);\n\t\t\t}\n\t\t}\n\n\t\tcc.sort(function(a, b) { return a[0] - b[0] || guess_sep_weights[a[1]] - guess_sep_weights[b[1]]; });\n\n\t\treturn guess_seps[cc.pop()[1]];\n\t}\n\n\tfunction dsv_to_sheet_str(str, opts) {\n\t\tvar o = opts || {};\n\t\tvar sep = \"\";\n\t\tif(DENSE != null && o.dense == null) o.dense = DENSE;\n\t\tvar ws = o.dense ? ([]) : ({});\n\t\tvar range = ({s: {c:0, r:0}, e: {c:0, r:0}});\n\n\t\tif(str.slice(0,4) == \"sep=\" && str.charCodeAt(5) == 10) { sep = str.charAt(4); str = str.slice(6); }\n\t\telse sep = guess_sep(str.slice(0,1024));\n\t\tvar R = 0, C = 0, v = 0;\n\t\tvar start = 0, end = 0, sepcc = sep.charCodeAt(0), instr = false, cc=0;\n\t\tstr = str.replace(/\\r\\n/mg, \"\\n\");\n\t\tvar _re = o.dateNF != null ? dateNF_regex(o.dateNF) : null;\n\t\tfunction finish_cell() {\n\t\t\tvar s = str.slice(start, end);\n\t\t\tvar cell = ({});\n\t\t\tif(s.charAt(0) == '\"' && s.charAt(s.length - 1) == '\"') s = s.slice(1,-1).replace(/\"\"/g,'\"');\n\t\t\tif(s.length === 0) cell.t = 'z';\n\t\t\telse if(o.raw) { cell.t = 's'; cell.v = s; }\n\t\t\telse if(s.trim().length === 0) { cell.t = 's'; cell.v = s; }\n\t\t\telse if(s.charCodeAt(0) == 0x3D) {\n\t\t\t\tif(s.charCodeAt(1) == 0x22 && s.charCodeAt(s.length - 1) == 0x22) { cell.t = 's'; cell.v = s.slice(2,-1).replace(/\"\"/g,'\"'); }\n\t\t\t\telse if(fuzzyfmla(s)) { cell.t = 'n'; cell.f = s.slice(1); }\n\t\t\t\telse { cell.t = 's'; cell.v = s; } }\n\t\t\telse if(s == \"TRUE\") { cell.t = 'b'; cell.v = true; }\n\t\t\telse if(s == \"FALSE\") { cell.t = 'b'; cell.v = false; }\n\t\t\telse if(!isNaN(v = fuzzynum(s))) { cell.t = 'n'; if(o.cellText !== false) cell.w = s; cell.v = v; }\n\t\t\telse if(!isNaN(fuzzydate(s).getDate()) || _re && s.match(_re)) {\n\t\t\t\tcell.z = o.dateNF || SSF._table[14];\n\t\t\t\tvar k = 0;\n\t\t\t\tif(_re && s.match(_re)){ s=dateNF_fix(s, o.dateNF, (s.match(_re)||[])); k=1; }\n\t\t\t\tif(o.cellDates) { cell.t = 'd'; cell.v = parseDate(s, k); }\n\t\t\t\telse { cell.t = 'n'; cell.v = datenum(parseDate(s, k)); }\n\t\t\t\tif(o.cellText !== false) cell.w = SSF.format(cell.z, cell.v instanceof Date ? datenum(cell.v):cell.v);\n\t\t\t\tif(!o.cellNF) delete cell.z;\n\t\t\t} else {\n\t\t\t\tcell.t = 's';\n\t\t\t\tcell.v = s;\n\t\t\t}\n\t\t\tif(cell.t == 'z'){}\n\t\t\telse if(o.dense) { if(!ws[R]) ws[R] = []; ws[R][C] = cell; }\n\t\t\telse ws[encode_cell({c:C,r:R})] = cell;\n\t\t\tstart = end+1;\n\t\t\tif(range.e.c < C) range.e.c = C;\n\t\t\tif(range.e.r < R) range.e.r = R;\n\t\t\tif(cc == sepcc) ++C; else { C = 0; ++R; if(o.sheetRows && o.sheetRows <= R) return true; }\n\t\t}\n\t\touter: for(;end < str.length;++end) switch((cc=str.charCodeAt(end))) {\n\t\t\tcase 0x22: instr = !instr; break;\n\t\t\tcase sepcc: case 0x0a: case 0x0d: if(!instr && finish_cell()) break outer; break;\n\t\t\tdefault: break;\n\t\t}\n\t\tif(end - start > 0) finish_cell();\n\n\t\tws['!ref'] = encode_range(range);\n\t\treturn ws;\n\t}\n\n\tfunction prn_to_sheet_str(str, opts) {\n\t\tif(str.slice(0,4) == \"sep=\") return dsv_to_sheet_str(str, opts);\n\t\tif(str.indexOf(\"\\t\") >= 0 || str.indexOf(\",\") >= 0 || str.indexOf(\";\") >= 0) return dsv_to_sheet_str(str, opts);\n\t\treturn aoa_to_sheet(prn_to_aoa_str(str, opts), opts);\n\t}\n\n\tfunction prn_to_sheet(d, opts) {\n\t\tvar str = \"\", bytes = opts.type == 'string' ? [0,0,0,0] : firstbyte(d, opts);\n\t\tswitch(opts.type) {\n\t\t\tcase 'base64': str = Base64.decode(d); break;\n\t\t\tcase 'binary': str = d; break;\n\t\t\tcase 'buffer':\n\t\t\t\tif(opts.codepage == 65001) str = d.toString('utf8');\n\t\t\t\telse if(opts.codepage && typeof cptable !== 'undefined') str = cptable.utils.decode(opts.codepage, d);\n\t\t\t\telse str = d.toString('binary');\n\t\t\t\tbreak;\n\t\t\tcase 'array': str = cc2str(d); break;\n\t\t\tcase 'string': str = d; break;\n\t\t\tdefault: throw new Error(\"Unrecognized type \" + opts.type);\n\t\t}\n\t\tif(bytes[0] == 0xEF && bytes[1] == 0xBB && bytes[2] == 0xBF) str = utf8read(str.slice(3));\n\t\telse if((opts.type == 'binary') && typeof cptable !== 'undefined' && opts.codepage) str = cptable.utils.decode(opts.codepage, cptable.utils.encode(1252,str));\n\t\tif(str.slice(0,19) == \"socialcalc:version:\") return ETH.to_sheet(opts.type == 'string' ? str : utf8read(str), opts);\n\t\treturn prn_to_sheet_str(str, opts);\n\t}\n\n\tfunction prn_to_workbook(d, opts) { return sheet_to_workbook(prn_to_sheet(d, opts), opts); }\n\n\tfunction sheet_to_prn(ws) {\n\t\tvar o = [];\n\t\tvar r = safe_decode_range(ws['!ref']), cell;\n\t\tvar dense = Array.isArray(ws);\n\t\tfor(var R = r.s.r; R <= r.e.r; ++R) {\n\t\t\tvar oo = [];\n\t\t\tfor(var C = r.s.c; C <= r.e.c; ++C) {\n\t\t\t\tvar coord = encode_cell({r:R,c:C});\n\t\t\t\tcell = dense ? (ws[R]||[])[C] : ws[coord];\n\t\t\t\tif(!cell || cell.v == null) { oo.push(\" \"); continue; }\n\t\t\t\tvar w = (cell.w || (format_cell(cell), cell.w) || \"\").slice(0,10);\n\t\t\t\twhile(w.length < 10) w += \" \";\n\t\t\t\too.push(w + (C === 0 ? \" \" : \"\"));\n\t\t\t}\n\t\t\to.push(oo.join(\"\"));\n\t\t}\n\t\treturn o.join(\"\\n\");\n\t}\n\n\treturn {\n\t\tto_workbook: prn_to_workbook,\n\t\tto_sheet: prn_to_sheet,\n\t\tfrom_sheet: sheet_to_prn\n\t};\n})();\n\n/* Excel defaults to SYLK but warns if data is not valid */\nfunction read_wb_ID(d, opts) {\n\tvar o = opts || {}, OLD_WTF = !!o.WTF; o.WTF = true;\n\ttry {\n\t\tvar out = SYLK.to_workbook(d, o);\n\t\to.WTF = OLD_WTF;\n\t\treturn out;\n\t} catch(e) {\n\t\to.WTF = OLD_WTF;\n\t\tif(!e.message.match(/SYLK bad record ID/) && OLD_WTF) throw e;\n\t\treturn PRN.to_workbook(d, opts);\n\t}\n}\n\nvar WK_ = (function() {\n\tfunction lotushopper(data, cb, opts) {\n\t\tif(!data) return;\n\t\tprep_blob(data, data.l || 0);\n\t\tvar Enum = opts.Enum || WK1Enum;\n\t\twhile(data.l < data.length) {\n\t\t\tvar RT = data.read_shift(2);\n\t\t\tvar R = Enum[RT] || Enum[0xFF];\n\t\t\tvar length = data.read_shift(2);\n\t\t\tvar tgt = data.l + length;\n\t\t\tvar d = (R.f||parsenoop)(data, length, opts);\n\t\t\tdata.l = tgt;\n\t\t\tif(cb(d, R.n, RT)) return;\n\t\t}\n\t}\n\n\tfunction lotus_to_workbook(d, opts) {\n\t\tswitch(opts.type) {\n\t\t\tcase 'base64': return lotus_to_workbook_buf(s2a(Base64.decode(d)), opts);\n\t\t\tcase 'binary': return lotus_to_workbook_buf(s2a(d), opts);\n\t\t\tcase 'buffer':\n\t\t\tcase 'array': return lotus_to_workbook_buf(d, opts);\n\t\t}\n\t\tthrow \"Unsupported type \" + opts.type;\n\t}\n\n\tfunction lotus_to_workbook_buf(d, opts) {\n\t\tif(!d) return d;\n\t\tvar o = opts || {};\n\t\tif(DENSE != null && o.dense == null) o.dense = DENSE;\n\t\tvar s = ((o.dense ? [] : {})), n = \"Sheet1\", sidx = 0;\n\t\tvar sheets = {}, snames = [n];\n\n\t\tvar refguess = {s: {r:0, c:0}, e: {r:0, c:0} };\n\t\tvar sheetRows = o.sheetRows || 0;\n\n\t\tif(d[2] == 0x02) o.Enum = WK1Enum;\n\t\telse if(d[2] == 0x1a) o.Enum = WK3Enum;\n\t\telse if(d[2] == 0x0e) { o.Enum = WK3Enum; o.qpro = true; d.l = 0; }\n\t\telse throw new Error(\"Unrecognized LOTUS BOF \" + d[2]);\n\t\tlotushopper(d, function(val, Rn, RT) {\n\t\t\tif(d[2] == 0x02) switch(RT) {\n\t\t\t\tcase 0x00:\n\t\t\t\t\to.vers = val;\n\t\t\t\t\tif(val >= 0x1000) o.qpro = true;\n\t\t\t\t\tbreak;\n\t\t\t\tcase 0x06: refguess = val; break; /* RANGE */\n\t\t\t\tcase 0x0F: /* LABEL */\n\t\t\t\t\tif(!o.qpro) val[1].v = val[1].v.slice(1);\n\t\t\t\t\t/* falls through */\n\t\t\t\tcase 0x0D: /* INTEGER */\n\t\t\t\tcase 0x0E: /* NUMBER */\n\t\t\t\tcase 0x10: /* FORMULA */\n\t\t\t\tcase 0x33: /* STRING */\n\t\t\t\t\t/* TODO: actual translation of the format code */\n\t\t\t\t\tif(RT == 0x0E && (val[2] & 0x70) == 0x70 && (val[2] & 0x0F) > 1 && (val[2] & 0x0F) < 15) {\n\t\t\t\t\t\tval[1].z = o.dateNF || SSF._table[14];\n\t\t\t\t\t\tif(o.cellDates) { val[1].t = 'd'; val[1].v = numdate(val[1].v); }\n\t\t\t\t\t}\n\t\t\t\t\tif(o.dense) {\n\t\t\t\t\t\tif(!s[val[0].r]) s[val[0].r] = [];\n\t\t\t\t\t\ts[val[0].r][val[0].c] = val[1];\n\t\t\t\t\t} else s[encode_cell(val[0])] = val[1];\n\t\t\t\t\tbreak;\n\t\t\t} else switch(RT) {\n\t\t\t\tcase 0x16: /* LABEL16 */\n\t\t\t\t\tval[1].v = val[1].v.slice(1);\n\t\t\t\t\t/* falls through */\n\t\t\t\tcase 0x17: /* NUMBER17 */\n\t\t\t\tcase 0x18: /* NUMBER18 */\n\t\t\t\tcase 0x19: /* FORMULA19 */\n\t\t\t\tcase 0x25: /* NUMBER25 */\n\t\t\t\tcase 0x27: /* NUMBER27 */\n\t\t\t\tcase 0x28: /* FORMULA28 */\n\t\t\t\t\tif(val[3] > sidx) {\n\t\t\t\t\t\ts[\"!ref\"] = encode_range(refguess);\n\t\t\t\t\t\tsheets[n] = s;\n\t\t\t\t\t\ts = (o.dense ? [] : {});\n\t\t\t\t\t\trefguess = {s: {r:0, c:0}, e: {r:0, c:0} };\n\t\t\t\t\t\tsidx = val[3]; n = \"Sheet\" + (sidx + 1);\n\t\t\t\t\t\tsnames.push(n);\n\t\t\t\t\t}\n\t\t\t\t\tif(sheetRows > 0 && val[0].r >= sheetRows) break;\n\t\t\t\t\tif(o.dense) {\n\t\t\t\t\t\tif(!s[val[0].r]) s[val[0].r] = [];\n\t\t\t\t\t\ts[val[0].r][val[0].c] = val[1];\n\t\t\t\t\t} else s[encode_cell(val[0])] = val[1];\n\t\t\t\t\tif(refguess.e.c < val[0].c) refguess.e.c = val[0].c;\n\t\t\t\t\tif(refguess.e.r < val[0].r) refguess.e.r = val[0].r;\n\t\t\t\t\tbreak;\n\t\t\t\tdefault: break;\n\t\t\t}\n\t\t}, o);\n\n\t\ts[\"!ref\"] = encode_range(refguess);\n\t\tsheets[n] = s;\n\t\treturn { SheetNames: snames, Sheets:sheets };\n\t}\n\n\tfunction parse_RANGE(blob) {\n\t\tvar o = {s:{c:0,r:0},e:{c:0,r:0}};\n\t\to.s.c = blob.read_shift(2);\n\t\to.s.r = blob.read_shift(2);\n\t\to.e.c = blob.read_shift(2);\n\t\to.e.r = blob.read_shift(2);\n\t\tif(o.s.c == 0xFFFF) o.s.c = o.e.c = o.s.r = o.e.r = 0;\n\t\treturn o;\n\t}\n\n\tfunction parse_cell(blob, length, opts) {\n\t\tvar o = [{c:0,r:0}, {t:'n',v:0}, 0];\n\t\tif(opts.qpro && opts.vers != 0x5120) {\n\t\t\to[0].c = blob.read_shift(1);\n\t\t\tblob.l++;\n\t\t\to[0].r = blob.read_shift(2);\n\t\t\tblob.l+=2;\n\t\t} else {\n\t\t\to[2] = blob.read_shift(1);\n\t\t\to[0].c = blob.read_shift(2); o[0].r = blob.read_shift(2);\n\t\t}\n\t\treturn o;\n\t}\n\n\tfunction parse_LABEL(blob, length, opts) {\n\t\tvar tgt = blob.l + length;\n\t\tvar o = parse_cell(blob, length, opts);\n\t\to[1].t = 's';\n\t\tif(opts.vers == 0x5120) {\n\t\t\tblob.l++;\n\t\t\tvar len = blob.read_shift(1);\n\t\t\to[1].v = blob.read_shift(len, 'utf8');\n\t\t\treturn o;\n\t\t}\n\t\tif(opts.qpro) blob.l++;\n\t\to[1].v = blob.read_shift(tgt - blob.l, 'cstr');\n\t\treturn o;\n\t}\n\n\tfunction parse_INTEGER(blob, length, opts) {\n\t\tvar o = parse_cell(blob, length, opts);\n\t\to[1].v = blob.read_shift(2, 'i');\n\t\treturn o;\n\t}\n\n\tfunction parse_NUMBER(blob, length, opts) {\n\t\tvar o = parse_cell(blob, length, opts);\n\t\to[1].v = blob.read_shift(8, 'f');\n\t\treturn o;\n\t}\n\n\tfunction parse_FORMULA(blob, length, opts) {\n\t\tvar tgt = blob.l + length;\n\t\tvar o = parse_cell(blob, length, opts);\n\t\t/* TODO: formula */\n\t\to[1].v = blob.read_shift(8, 'f');\n\t\tif(opts.qpro) blob.l = tgt;\n\t\telse {\n\t\t\tvar flen = blob.read_shift(2);\n\t\t\tblob.l += flen;\n\t\t}\n\t\treturn o;\n\t}\n\n\tfunction parse_cell_3(blob) {\n\t\tvar o = [{c:0,r:0}, {t:'n',v:0}, 0];\n\t\to[0].r = blob.read_shift(2); o[3] = blob[blob.l++]; o[0].c = blob[blob.l++];\n\t\treturn o;\n\t}\n\n\tfunction parse_LABEL_16(blob, length) {\n\t\tvar o = parse_cell_3(blob, length);\n\t\to[1].t = 's';\n\t\to[1].v = blob.read_shift(length - 4, 'cstr');\n\t\treturn o;\n\t}\n\n\tfunction parse_NUMBER_18(blob, length) {\n\t\tvar o = parse_cell_3(blob, length);\n\t\to[1].v = blob.read_shift(2);\n\t\tvar v = o[1].v >> 1;\n\t\t/* TODO: figure out all of the corner cases */\n\t\tif(o[1].v & 0x1) {\n\t\t\tswitch(v & 0x07) {\n\t\t\t\tcase 1: v = (v >> 3) * 500; break;\n\t\t\t\tcase 2: v = (v >> 3) / 20; break;\n\t\t\t\tcase 4: v = (v >> 3) / 2000; break;\n\t\t\t\tcase 6: v = (v >> 3) / 16; break;\n\t\t\t\tcase 7: v = (v >> 3) / 64; break;\n\t\t\t\tdefault: throw \"unknown NUMBER_18 encoding \" + (v & 0x07);\n\t\t\t}\n\t\t}\n\t\to[1].v = v;\n\t\treturn o;\n\t}\n\n\tfunction parse_NUMBER_17(blob, length) {\n\t\tvar o = parse_cell_3(blob, length);\n\t\tvar v1 = blob.read_shift(4);\n\t\tvar v2 = blob.read_shift(4);\n\t\tvar e = blob.read_shift(2);\n\t\tif(e == 0xFFFF) { o[1].v = 0; return o; }\n\t\tvar s = e & 0x8000; e = (e&0x7FFF) - 16446;\n\t\to[1].v = (s*2 - 1) * ((e > 0 ? (v2 << e) : (v2 >>> -e)) + (e > -32 ? (v1 << (e + 32)) : (v1 >>> -(e + 32))));\n\t\treturn o;\n\t}\n\n\tfunction parse_FORMULA_19(blob, length) {\n\t\tvar o = parse_NUMBER_17(blob, 14);\n\t\tblob.l += length - 14; /* TODO: formula */\n\t\treturn o;\n\t}\n\n\tfunction parse_NUMBER_25(blob, length) {\n\t\tvar o = parse_cell_3(blob, length);\n\t\tvar v1 = blob.read_shift(4);\n\t\to[1].v = v1 >> 6;\n\t\treturn o;\n\t}\n\n\tfunction parse_NUMBER_27(blob, length) {\n\t\tvar o = parse_cell_3(blob, length);\n\t\tvar v1 = blob.read_shift(8,'f');\n\t\to[1].v = v1;\n\t\treturn o;\n\t}\n\n\tfunction parse_FORMULA_28(blob, length) {\n\t\tvar o = parse_NUMBER_27(blob, 14);\n\t\tblob.l += length - 10; /* TODO: formula */\n\t\treturn o;\n\t}\n\n\tvar WK1Enum = {\n0x0000: { n:\"BOF\", f:parseuint16 },\n0x0001: { n:\"EOF\" },\n0x0002: { n:\"CALCMODE\" },\n0x0003: { n:\"CALCORDER\" },\n0x0004: { n:\"SPLIT\" },\n0x0005: { n:\"SYNC\" },\n0x0006: { n:\"RANGE\", f:parse_RANGE },\n0x0007: { n:\"WINDOW1\" },\n0x0008: { n:\"COLW1\" },\n0x0009: { n:\"WINTWO\" },\n0x000A: { n:\"COLW2\" },\n0x000B: { n:\"NAME\" },\n0x000C: { n:\"BLANK\" },\n0x000D: { n:\"INTEGER\", f:parse_INTEGER },\n0x000E: { n:\"NUMBER\", f:parse_NUMBER },\n0x000F: { n:\"LABEL\", f:parse_LABEL },\n0x0010: { n:\"FORMULA\", f:parse_FORMULA },\n0x0018: { n:\"TABLE\" },\n0x0019: { n:\"ORANGE\" },\n0x001A: { n:\"PRANGE\" },\n0x001B: { n:\"SRANGE\" },\n0x001C: { n:\"FRANGE\" },\n0x001D: { n:\"KRANGE1\" },\n0x0020: { n:\"HRANGE\" },\n0x0023: { n:\"KRANGE2\" },\n0x0024: { n:\"PROTEC\" },\n0x0025: { n:\"FOOTER\" },\n0x0026: { n:\"HEADER\" },\n0x0027: { n:\"SETUP\" },\n0x0028: { n:\"MARGINS\" },\n0x0029: { n:\"LABELFMT\" },\n0x002A: { n:\"TITLES\" },\n0x002B: { n:\"SHEETJS\" },\n0x002D: { n:\"GRAPH\" },\n0x002E: { n:\"NGRAPH\" },\n0x002F: { n:\"CALCCOUNT\" },\n0x0030: { n:\"UNFORMATTED\" },\n0x0031: { n:\"CURSORW12\" },\n0x0032: { n:\"WINDOW\" },\n0x0033: { n:\"STRING\", f:parse_LABEL },\n0x0037: { n:\"PASSWORD\" },\n0x0038: { n:\"LOCKED\" },\n0x003C: { n:\"QUERY\" },\n0x003D: { n:\"QUERYNAME\" },\n0x003E: { n:\"PRINT\" },\n0x003F: { n:\"PRINTNAME\" },\n0x0040: { n:\"GRAPH2\" },\n0x0041: { n:\"GRAPHNAME\" },\n0x0042: { n:\"ZOOM\" },\n0x0043: { n:\"SYMSPLIT\" },\n0x0044: { n:\"NSROWS\" },\n0x0045: { n:\"NSCOLS\" },\n0x0046: { n:\"RULER\" },\n0x0047: { n:\"NNAME\" },\n0x0048: { n:\"ACOMM\" },\n0x0049: { n:\"AMACRO\" },\n0x004A: { n:\"PARSE\" },\n0x00FF: { n:\"\", f:parsenoop }\n\t};\n\n\tvar WK3Enum = {\n0x0000: { n:\"BOF\" },\n0x0001: { n:\"EOF\" },\n0x0003: { n:\"??\" },\n0x0004: { n:\"??\" },\n0x0005: { n:\"??\" },\n0x0006: { n:\"??\" },\n0x0007: { n:\"??\" },\n0x0009: { n:\"??\" },\n0x000a: { n:\"??\" },\n0x000b: { n:\"??\" },\n0x000c: { n:\"??\" },\n0x000e: { n:\"??\" },\n0x000f: { n:\"??\" },\n0x0010: { n:\"??\" },\n0x0011: { n:\"??\" },\n0x0012: { n:\"??\" },\n0x0013: { n:\"??\" },\n0x0015: { n:\"??\" },\n0x0016: { n:\"LABEL16\", f:parse_LABEL_16},\n0x0017: { n:\"NUMBER17\", f:parse_NUMBER_17 },\n0x0018: { n:\"NUMBER18\", f:parse_NUMBER_18 },\n0x0019: { n:\"FORMULA19\", f:parse_FORMULA_19},\n0x001a: { n:\"??\" },\n0x001b: { n:\"??\" },\n0x001c: { n:\"??\" },\n0x001d: { n:\"??\" },\n0x001e: { n:\"??\" },\n0x001f: { n:\"??\" },\n0x0021: { n:\"??\" },\n0x0025: { n:\"NUMBER25\", f:parse_NUMBER_25 },\n0x0027: { n:\"NUMBER27\", f:parse_NUMBER_27 },\n0x0028: { n:\"FORMULA28\", f:parse_FORMULA_28 },\n0x00FF: { n:\"\", f:parsenoop }\n\t};\n\treturn {\n\t\tto_workbook: lotus_to_workbook\n\t};\n})();\n/* Parse a list of tags */\nvar parse_rs = (function parse_rs_factory() {\n\tvar tregex = matchtag(\"t\"), rpregex = matchtag(\"rPr\"), rregex = /<(?:\\w+:)?r>/g, rend = /<\\/(?:\\w+:)?r>/, nlregex = /\\r\\n/g;\n\t/* 18.4.7 rPr CT_RPrElt */\n\tvar parse_rpr = function parse_rpr(rpr, intro, outro) {\n\t\tvar font = {}, cp = 65001, align = \"\";\n\t\tvar pass = false;\n\t\tvar m = rpr.match(tagregex), i = 0;\n\t\tif(m) for(;i!=m.length; ++i) {\n\t\t\tvar y = parsexmltag(m[i]);\n\t\t\tswitch(y[0].replace(/\\w*:/g,\"\")) {\n\t\t\t\t/* 18.8.12 condense CT_BooleanProperty */\n\t\t\t\t/* ** not required . */\n\t\t\t\tcase '':\n\t\t\t\tcase '': font.shadow = 1; break;\n\t\t\t\tcase '': break;\n\n\t\t\t\t/* 18.4.1 charset CT_IntProperty TODO */\n\t\t\t\tcase '':\n\t\t\t\tcase '': font.outline = 1; break;\n\t\t\t\tcase '': break;\n\n\t\t\t\t/* 18.4.5 rFont CT_FontName */\n\t\t\t\tcase '':\n\t\t\t\tcase '': font.strike = 1; break;\n\t\t\t\tcase '': break;\n\n\t\t\t\t/* 18.4.13 u CT_UnderlineProperty */\n\t\t\t\tcase '':\n\t\t\t\tcase '': font.u = 1; break;\n\t\t\t\tcase '': break;\n\n\t\t\t\t/* 18.8.2 b */\n\t\t\t\tcase '':\n\t\t\t\tcase '': font.b = 1; break;\n\t\t\t\tcase '': break;\n\n\t\t\t\t/* 18.8.26 i */\n\t\t\t\tcase '':\n\t\t\t\tcase '': font.i = 1; break;\n\t\t\t\tcase '': break;\n\n\t\t\t\t/* 18.3.1.15 color CT_Color TODO: tint, theme, auto, indexed */\n\t\t\t\tcase '': case '': break;\n\t\t\t\tcase '': pass = false; break;\n\t\t\t\tdefault:\n\t\t\t\t\tif(y[0].charCodeAt(1) !== 47 && !pass) throw new Error('Unrecognized rich format ' + y[0]);\n\t\t\t}\n\t\t}\n\t\tvar style = [];\n\n\t\tif(font.u) style.push(\"text-decoration: underline;\");\n\t\tif(font.uval) style.push(\"text-underline-style:\" + font.uval + \";\");\n\t\tif(font.sz) style.push(\"font-size:\" + font.sz + \"pt;\");\n\t\tif(font.outline) style.push(\"text-effect: outline;\");\n\t\tif(font.shadow) style.push(\"text-shadow: auto;\");\n\t\tintro.push('');\n\n\t\tif(font.b) { intro.push(\"\"); outro.push(\"\"); }\n\t\tif(font.i) { intro.push(\"\"); outro.push(\"\"); }\n\t\tif(font.strike) { intro.push(\"\"); outro.push(\"\"); }\n\n\t\tif(align == \"superscript\") align = \"sup\";\n\t\telse if(align == \"subscript\") align = \"sub\";\n\t\tif(align != \"\") { intro.push(\"<\" + align + \">\"); outro.push(\"\"); }\n\n\t\toutro.push(\"\");\n\t\treturn cp;\n\t};\n\n\t/* 18.4.4 r CT_RElt */\n\tfunction parse_r(r) {\n\t\tvar terms = [[],\"\",[]];\n\t\t/* 18.4.12 t ST_Xstring */\n\t\tvar t = r.match(tregex)/*, cp = 65001*/;\n\t\tif(!t) return \"\";\n\t\tterms[1] = t[1];\n\n\t\tvar rpr = r.match(rpregex);\n\t\tif(rpr) /*cp = */parse_rpr(rpr[1], terms[0], terms[2]);\n\n\t\treturn terms[0].join(\"\") + terms[1].replace(nlregex,'
') + terms[2].join(\"\");\n\t}\n\treturn function parse_rs(rs) {\n\t\treturn rs.replace(rregex,\"\").split(rend).map(parse_r).join(\"\");\n\t};\n})();\n\n/* 18.4.8 si CT_Rst */\nvar sitregex = /<(?:\\w+:)?t[^>]*>([^<]*)<\\/(?:\\w+:)?t>/g, sirregex = /<(?:\\w+:)?r>/;\nvar sirphregex = /<(?:\\w+:)?rPh.*?>([\\s\\S]*?)<\\/(?:\\w+:)?rPh>/g;\nfunction parse_si(x, opts) {\n\tvar html = opts ? opts.cellHTML : true;\n\tvar z = {};\n\tif(!x) return null;\n\t//var y;\n\t/* 18.4.12 t ST_Xstring (Plaintext String) */\n\t// TODO: is whitespace actually valid here?\n\tif(x.match(/^\\s*<(?:\\w+:)?t[^>]*>/)) {\n\t\tz.t = unescapexml(utf8read(x.slice(x.indexOf(\">\")+1).split(/<\\/(?:\\w+:)?t>/)[0]||\"\"));\n\t\tz.r = utf8read(x);\n\t\tif(html) z.h = escapehtml(z.t);\n\t}\n\t/* 18.4.4 r CT_RElt (Rich Text Run) */\n\telse if((/*y = */x.match(sirregex))) {\n\t\tz.r = utf8read(x);\n\t\tz.t = unescapexml(utf8read((x.replace(sirphregex, '').match(sitregex)||[]).join(\"\").replace(tagregex,\"\")));\n\t\tif(html) z.h = parse_rs(z.r);\n\t}\n\t/* 18.4.3 phoneticPr CT_PhoneticPr (TODO: needed for Asian support) */\n\t/* 18.4.6 rPh CT_PhoneticRun (TODO: needed for Asian support) */\n\treturn z;\n}\n\n/* 18.4 Shared String Table */\nvar sstr0 = /<(?:\\w+:)?sst([^>]*)>([\\s\\S]*)<\\/(?:\\w+:)?sst>/;\nvar sstr1 = /<(?:\\w+:)?(?:si|sstItem)>/g;\nvar sstr2 = /<\\/(?:\\w+:)?(?:si|sstItem)>/;\nfunction parse_sst_xml(data, opts) {\n\tvar s = ([]), ss = \"\";\n\tif(!data) return s;\n\t/* 18.4.9 sst CT_Sst */\n\tvar sst = data.match(sstr0);\n\tif(sst) {\n\t\tss = sst[2].replace(sstr1,\"\").split(sstr2);\n\t\tfor(var i = 0; i != ss.length; ++i) {\n\t\t\tvar o = parse_si(ss[i].trim(), opts);\n\t\t\tif(o != null) s[s.length] = o;\n\t\t}\n\t\tsst = parsexmltag(sst[1]); s.Count = sst.count; s.Unique = sst.uniqueCount;\n\t}\n\treturn s;\n}\n\nRELS.SST = \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/sharedStrings\";\nvar straywsregex = /^\\s|\\s$|[\\t\\n\\r]/;\nfunction write_sst_xml(sst, opts) {\n\tif(!opts.bookSST) return \"\";\n\tvar o = [XML_HEADER];\n\to[o.length] = (writextag('sst', null, {\n\t\txmlns: XMLNS.main[0],\n\t\tcount: sst.Count,\n\t\tuniqueCount: sst.Unique\n\t}));\n\tfor(var i = 0; i != sst.length; ++i) { if(sst[i] == null) continue;\n\t\tvar s = sst[i];\n\t\tvar sitag = \"\";\n\t\tif(s.r) sitag += s.r;\n\t\telse {\n\t\t\tsitag += \"\" + escapexml(s.t) + \"\";\n\t\t}\n\t\tsitag += \"\";\n\t\to[o.length] = (sitag);\n\t}\n\tif(o.length>2){ o[o.length] = (''); o[1]=o[1].replace(\"/>\",\">\"); }\n\treturn o.join(\"\");\n}\n/* [MS-XLSB] 2.4.221 BrtBeginSst */\nfunction parse_BrtBeginSst(data) {\n\treturn [data.read_shift(4), data.read_shift(4)];\n}\n\n/* [MS-XLSB] 2.1.7.45 Shared Strings */\nfunction parse_sst_bin(data, opts) {\n\tvar s = ([]);\n\tvar pass = false;\n\trecordhopper(data, function hopper_sst(val, R_n, RT) {\n\t\tswitch(RT) {\n\t\t\tcase 0x009F: /* 'BrtBeginSst' */\n\t\t\t\ts.Count = val[0]; s.Unique = val[1]; break;\n\t\t\tcase 0x0013: /* 'BrtSSTItem' */\n\t\t\t\ts.push(val); break;\n\t\t\tcase 0x00A0: /* 'BrtEndSst' */\n\t\t\t\treturn true;\n\n\t\t\tcase 0x0023: /* 'BrtFRTBegin' */\n\t\t\t\tpass = true; break;\n\t\t\tcase 0x0024: /* 'BrtFRTEnd' */\n\t\t\t\tpass = false; break;\n\n\t\t\tdefault:\n\t\t\t\tif(R_n.indexOf(\"Begin\") > 0){/* empty */}\n\t\t\t\telse if(R_n.indexOf(\"End\") > 0){/* empty */}\n\t\t\t\tif(!pass || opts.WTF) throw new Error(\"Unexpected record \" + RT + \" \" + R_n);\n\t\t}\n\t});\n\treturn s;\n}\n\nfunction write_BrtBeginSst(sst, o) {\n\tif(!o) o = new_buf(8);\n\to.write_shift(4, sst.Count);\n\to.write_shift(4, sst.Unique);\n\treturn o;\n}\n\nvar write_BrtSSTItem = write_RichStr;\n\nfunction write_sst_bin(sst) {\n\tvar ba = buf_array();\n\twrite_record(ba, \"BrtBeginSst\", write_BrtBeginSst(sst));\n\tfor(var i = 0; i < sst.length; ++i) write_record(ba, \"BrtSSTItem\", write_BrtSSTItem(sst[i]));\n\t/* FRTSST */\n\twrite_record(ba, \"BrtEndSst\");\n\treturn ba.end();\n}\nfunction _JS2ANSI(str) {\n\tif(typeof cptable !== 'undefined') return cptable.utils.encode(current_ansi, str);\n\tvar o = [], oo = str.split(\"\");\n\tfor(var i = 0; i < oo.length; ++i) o[i] = oo[i].charCodeAt(0);\n\treturn o;\n}\n\n/* [MS-OFFCRYPTO] 2.1.4 Version */\nfunction parse_CRYPTOVersion(blob, length) {\n\tvar o = {};\n\to.Major = blob.read_shift(2);\n\to.Minor = blob.read_shift(2);\nif(length >= 4) blob.l += length - 4;\n\treturn o;\n}\n\n/* [MS-OFFCRYPTO] 2.1.5 DataSpaceVersionInfo */\nfunction parse_DataSpaceVersionInfo(blob) {\n\tvar o = {};\n\to.id = blob.read_shift(0, 'lpp4');\n\to.R = parse_CRYPTOVersion(blob, 4);\n\to.U = parse_CRYPTOVersion(blob, 4);\n\to.W = parse_CRYPTOVersion(blob, 4);\n\treturn o;\n}\n\n/* [MS-OFFCRYPTO] 2.1.6.1 DataSpaceMapEntry Structure */\nfunction parse_DataSpaceMapEntry(blob) {\n\tvar len = blob.read_shift(4);\n\tvar end = blob.l + len - 4;\n\tvar o = {};\n\tvar cnt = blob.read_shift(4);\n\tvar comps = [];\n\t/* [MS-OFFCRYPTO] 2.1.6.2 DataSpaceReferenceComponent Structure */\n\twhile(cnt-- > 0) comps.push({ t: blob.read_shift(4), v: blob.read_shift(0, 'lpp4') });\n\to.name = blob.read_shift(0, 'lpp4');\n\to.comps = comps;\n\tif(blob.l != end) throw new Error(\"Bad DataSpaceMapEntry: \" + blob.l + \" != \" + end);\n\treturn o;\n}\n\n/* [MS-OFFCRYPTO] 2.1.6 DataSpaceMap */\nfunction parse_DataSpaceMap(blob) {\n\tvar o = [];\n\tblob.l += 4; // must be 0x8\n\tvar cnt = blob.read_shift(4);\n\twhile(cnt-- > 0) o.push(parse_DataSpaceMapEntry(blob));\n\treturn o;\n}\n\n/* [MS-OFFCRYPTO] 2.1.7 DataSpaceDefinition */\nfunction parse_DataSpaceDefinition(blob) {\n\tvar o = [];\n\tblob.l += 4; // must be 0x8\n\tvar cnt = blob.read_shift(4);\n\twhile(cnt-- > 0) o.push(blob.read_shift(0, 'lpp4'));\n\treturn o;\n}\n\n/* [MS-OFFCRYPTO] 2.1.8 DataSpaceDefinition */\nfunction parse_TransformInfoHeader(blob) {\n\tvar o = {};\n\t/*var len = */blob.read_shift(4);\n\tblob.l += 4; // must be 0x1\n\to.id = blob.read_shift(0, 'lpp4');\n\to.name = blob.read_shift(0, 'lpp4');\n\to.R = parse_CRYPTOVersion(blob, 4);\n\to.U = parse_CRYPTOVersion(blob, 4);\n\to.W = parse_CRYPTOVersion(blob, 4);\n\treturn o;\n}\n\nfunction parse_Primary(blob) {\n\t/* [MS-OFFCRYPTO] 2.2.6 IRMDSTransformInfo */\n\tvar hdr = parse_TransformInfoHeader(blob);\n\t/* [MS-OFFCRYPTO] 2.1.9 EncryptionTransformInfo */\n\thdr.ename = blob.read_shift(0, '8lpp4');\n\thdr.blksz = blob.read_shift(4);\n\thdr.cmode = blob.read_shift(4);\n\tif(blob.read_shift(4) != 0x04) throw new Error(\"Bad !Primary record\");\n\treturn hdr;\n}\n\n/* [MS-OFFCRYPTO] 2.3.2 Encryption Header */\nfunction parse_EncryptionHeader(blob, length) {\n\tvar tgt = blob.l + length;\n\tvar o = {};\n\to.Flags = (blob.read_shift(4) & 0x3F);\n\tblob.l += 4;\n\to.AlgID = blob.read_shift(4);\n\tvar valid = false;\n\tswitch(o.AlgID) {\n\t\tcase 0x660E: case 0x660F: case 0x6610: valid = (o.Flags == 0x24); break;\n\t\tcase 0x6801: valid = (o.Flags == 0x04); break;\n\t\tcase 0: valid = (o.Flags == 0x10 || o.Flags == 0x04 || o.Flags == 0x24); break;\n\t\tdefault: throw 'Unrecognized encryption algorithm: ' + o.AlgID;\n\t}\n\tif(!valid) throw new Error(\"Encryption Flags/AlgID mismatch\");\n\to.AlgIDHash = blob.read_shift(4);\n\to.KeySize = blob.read_shift(4);\n\to.ProviderType = blob.read_shift(4);\n\tblob.l += 8;\n\to.CSPName = blob.read_shift((tgt-blob.l)>>1, 'utf16le');\n\tblob.l = tgt;\n\treturn o;\n}\n\n/* [MS-OFFCRYPTO] 2.3.3 Encryption Verifier */\nfunction parse_EncryptionVerifier(blob, length) {\n\tvar o = {}, tgt = blob.l + length;\n\tblob.l += 4; // SaltSize must be 0x10\n\to.Salt = blob.slice(blob.l, blob.l+16); blob.l += 16;\n\to.Verifier = blob.slice(blob.l, blob.l+16); blob.l += 16;\n\t/*var sz = */blob.read_shift(4);\n\to.VerifierHash = blob.slice(blob.l, tgt); blob.l = tgt;\n\treturn o;\n}\n\n/* [MS-OFFCRYPTO] 2.3.4.* EncryptionInfo Stream */\nfunction parse_EncryptionInfo(blob) {\n\tvar vers = parse_CRYPTOVersion(blob);\n\tswitch(vers.Minor) {\n\t\tcase 0x02: return [vers.Minor, parse_EncInfoStd(blob, vers)];\n\t\tcase 0x03: return [vers.Minor, parse_EncInfoExt(blob, vers)];\n\t\tcase 0x04: return [vers.Minor, parse_EncInfoAgl(blob, vers)];\n\t}\n\tthrow new Error(\"ECMA-376 Encrypted file unrecognized Version: \" + vers.Minor);\n}\n\n/* [MS-OFFCRYPTO] 2.3.4.5 EncryptionInfo Stream (Standard Encryption) */\nfunction parse_EncInfoStd(blob) {\n\tvar flags = blob.read_shift(4);\n\tif((flags & 0x3F) != 0x24) throw new Error(\"EncryptionInfo mismatch\");\n\tvar sz = blob.read_shift(4);\n\t//var tgt = blob.l + sz;\n\tvar hdr = parse_EncryptionHeader(blob, sz);\n\tvar verifier = parse_EncryptionVerifier(blob, blob.length - blob.l);\n\treturn { t:\"Std\", h:hdr, v:verifier };\n}\n/* [MS-OFFCRYPTO] 2.3.4.6 EncryptionInfo Stream (Extensible Encryption) */\nfunction parse_EncInfoExt() { throw new Error(\"File is password-protected: ECMA-376 Extensible\"); }\n/* [MS-OFFCRYPTO] 2.3.4.10 EncryptionInfo Stream (Agile Encryption) */\nfunction parse_EncInfoAgl(blob) {\n\tvar KeyData = [\"saltSize\",\"blockSize\",\"keyBits\",\"hashSize\",\"cipherAlgorithm\",\"cipherChaining\",\"hashAlgorithm\",\"saltValue\"];\n\tblob.l+=4;\n\tvar xml = blob.read_shift(blob.length - blob.l, 'utf8');\n\tvar o = {};\n\txml.replace(tagregex, function xml_agile(x) {\n\t\tvar y = parsexmltag(x);\n\t\tswitch(strip_ns(y[0])) {\n\t\t\tcase '': break;\n\t\t\tcase '': case '': break;\n\n\t\t\tcase '': break;\n\t\t\tcase ' 4 || vers.Major < 2) throw new Error('unrecognized major version code: ' + vers.Major);\n\to.Flags = blob.read_shift(4); length -= 4;\n\tvar sz = blob.read_shift(4); length -= 4;\n\to.EncryptionHeader = parse_EncryptionHeader(blob, sz); length -= sz;\n\to.EncryptionVerifier = parse_EncryptionVerifier(blob, length);\n\treturn o;\n}\n/* [MS-OFFCRYPTO] 2.3.6.1 RC4 Encryption Header */\nfunction parse_RC4Header(blob) {\n\tvar o = {};\n\tvar vers = o.EncryptionVersionInfo = parse_CRYPTOVersion(blob, 4);\n\tif(vers.Major != 1 || vers.Minor != 1) throw 'unrecognized version code ' + vers.Major + ' : ' + vers.Minor;\n\to.Salt = blob.read_shift(16);\n\to.EncryptedVerifier = blob.read_shift(16);\n\to.EncryptedVerifierHash = blob.read_shift(16);\n\treturn o;\n}\n\n/* [MS-OFFCRYPTO] 2.3.7.1 Binary Document Password Verifier Derivation */\nfunction crypto_CreatePasswordVerifier_Method1(Password) {\n\tvar Verifier = 0x0000, PasswordArray;\n\tvar PasswordDecoded = _JS2ANSI(Password);\n\tvar len = PasswordDecoded.length + 1, i, PasswordByte;\n\tvar Intermediate1, Intermediate2, Intermediate3;\n\tPasswordArray = new_raw_buf(len);\n\tPasswordArray[0] = PasswordDecoded.length;\n\tfor(i = 1; i != len; ++i) PasswordArray[i] = PasswordDecoded[i-1];\n\tfor(i = len-1; i >= 0; --i) {\n\t\tPasswordByte = PasswordArray[i];\n\t\tIntermediate1 = ((Verifier & 0x4000) === 0x0000) ? 0 : 1;\n\t\tIntermediate2 = (Verifier << 1) & 0x7FFF;\n\t\tIntermediate3 = Intermediate1 | Intermediate2;\n\t\tVerifier = Intermediate3 ^ PasswordByte;\n\t}\n\treturn Verifier ^ 0xCE4B;\n}\n\n/* [MS-OFFCRYPTO] 2.3.7.2 Binary Document XOR Array Initialization */\nvar crypto_CreateXorArray_Method1 = (function() {\n\tvar PadArray = [0xBB, 0xFF, 0xFF, 0xBA, 0xFF, 0xFF, 0xB9, 0x80, 0x00, 0xBE, 0x0F, 0x00, 0xBF, 0x0F, 0x00];\n\tvar InitialCode = [0xE1F0, 0x1D0F, 0xCC9C, 0x84C0, 0x110C, 0x0E10, 0xF1CE, 0x313E, 0x1872, 0xE139, 0xD40F, 0x84F9, 0x280C, 0xA96A, 0x4EC3];\n\tvar XorMatrix = [0xAEFC, 0x4DD9, 0x9BB2, 0x2745, 0x4E8A, 0x9D14, 0x2A09, 0x7B61, 0xF6C2, 0xFDA5, 0xEB6B, 0xC6F7, 0x9DCF, 0x2BBF, 0x4563, 0x8AC6, 0x05AD, 0x0B5A, 0x16B4, 0x2D68, 0x5AD0, 0x0375, 0x06EA, 0x0DD4, 0x1BA8, 0x3750, 0x6EA0, 0xDD40, 0xD849, 0xA0B3, 0x5147, 0xA28E, 0x553D, 0xAA7A, 0x44D5, 0x6F45, 0xDE8A, 0xAD35, 0x4A4B, 0x9496, 0x390D, 0x721A, 0xEB23, 0xC667, 0x9CEF, 0x29FF, 0x53FE, 0xA7FC, 0x5FD9, 0x47D3, 0x8FA6, 0x0F6D, 0x1EDA, 0x3DB4, 0x7B68, 0xF6D0, 0xB861, 0x60E3, 0xC1C6, 0x93AD, 0x377B, 0x6EF6, 0xDDEC, 0x45A0, 0x8B40, 0x06A1, 0x0D42, 0x1A84, 0x3508, 0x6A10, 0xAA51, 0x4483, 0x8906, 0x022D, 0x045A, 0x08B4, 0x1168, 0x76B4, 0xED68, 0xCAF1, 0x85C3, 0x1BA7, 0x374E, 0x6E9C, 0x3730, 0x6E60, 0xDCC0, 0xA9A1, 0x4363, 0x86C6, 0x1DAD, 0x3331, 0x6662, 0xCCC4, 0x89A9, 0x0373, 0x06E6, 0x0DCC, 0x1021, 0x2042, 0x4084, 0x8108, 0x1231, 0x2462, 0x48C4];\n\tvar Ror = function(Byte) { return ((Byte/2) | (Byte*128)) & 0xFF; };\n\tvar XorRor = function(byte1, byte2) { return Ror(byte1 ^ byte2); };\n\tvar CreateXorKey_Method1 = function(Password) {\n\t\tvar XorKey = InitialCode[Password.length - 1];\n\t\tvar CurrentElement = 0x68;\n\t\tfor(var i = Password.length-1; i >= 0; --i) {\n\t\t\tvar Char = Password[i];\n\t\t\tfor(var j = 0; j != 7; ++j) {\n\t\t\t\tif(Char & 0x40) XorKey ^= XorMatrix[CurrentElement];\n\t\t\t\tChar *= 2; --CurrentElement;\n\t\t\t}\n\t\t}\n\t\treturn XorKey;\n\t};\n\treturn function(password) {\n\t\tvar Password = _JS2ANSI(password);\n\t\tvar XorKey = CreateXorKey_Method1(Password);\n\t\tvar Index = Password.length;\n\t\tvar ObfuscationArray = new_raw_buf(16);\n\t\tfor(var i = 0; i != 16; ++i) ObfuscationArray[i] = 0x00;\n\t\tvar Temp, PasswordLastChar, PadIndex;\n\t\tif((Index & 1) === 1) {\n\t\t\tTemp = XorKey >> 8;\n\t\t\tObfuscationArray[Index] = XorRor(PadArray[0], Temp);\n\t\t\t--Index;\n\t\t\tTemp = XorKey & 0xFF;\n\t\t\tPasswordLastChar = Password[Password.length - 1];\n\t\t\tObfuscationArray[Index] = XorRor(PasswordLastChar, Temp);\n\t\t}\n\t\twhile(Index > 0) {\n\t\t\t--Index;\n\t\t\tTemp = XorKey >> 8;\n\t\t\tObfuscationArray[Index] = XorRor(Password[Index], Temp);\n\t\t\t--Index;\n\t\t\tTemp = XorKey & 0xFF;\n\t\t\tObfuscationArray[Index] = XorRor(Password[Index], Temp);\n\t\t}\n\t\tIndex = 15;\n\t\tPadIndex = 15 - Password.length;\n\t\twhile(PadIndex > 0) {\n\t\t\tTemp = XorKey >> 8;\n\t\t\tObfuscationArray[Index] = XorRor(PadArray[PadIndex], Temp);\n\t\t\t--Index;\n\t\t\t--PadIndex;\n\t\t\tTemp = XorKey & 0xFF;\n\t\t\tObfuscationArray[Index] = XorRor(Password[Index], Temp);\n\t\t\t--Index;\n\t\t\t--PadIndex;\n\t\t}\n\t\treturn ObfuscationArray;\n\t};\n})();\n\n/* [MS-OFFCRYPTO] 2.3.7.3 Binary Document XOR Data Transformation Method 1 */\nvar crypto_DecryptData_Method1 = function(password, Data, XorArrayIndex, XorArray, O) {\n\t/* If XorArray is set, use it; if O is not set, make changes in-place */\n\tif(!O) O = Data;\n\tif(!XorArray) XorArray = crypto_CreateXorArray_Method1(password);\n\tvar Index, Value;\n\tfor(Index = 0; Index != Data.length; ++Index) {\n\t\tValue = Data[Index];\n\t\tValue ^= XorArray[XorArrayIndex];\n\t\tValue = ((Value>>5) | (Value<<3)) & 0xFF;\n\t\tO[Index] = Value;\n\t\t++XorArrayIndex;\n\t}\n\treturn [O, XorArrayIndex, XorArray];\n};\n\nvar crypto_MakeXorDecryptor = function(password) {\n\tvar XorArrayIndex = 0, XorArray = crypto_CreateXorArray_Method1(password);\n\treturn function(Data) {\n\t\tvar O = crypto_DecryptData_Method1(\"\", Data, XorArrayIndex, XorArray);\n\t\tXorArrayIndex = O[1];\n\t\treturn O[0];\n\t};\n};\n\n/* 2.5.343 */\nfunction parse_XORObfuscation(blob, length, opts, out) {\n\tvar o = ({ key: parseuint16(blob), verificationBytes: parseuint16(blob) });\n\tif(opts.password) o.verifier = crypto_CreatePasswordVerifier_Method1(opts.password);\n\tout.valid = o.verificationBytes === o.verifier;\n\tif(out.valid) out.insitu = crypto_MakeXorDecryptor(opts.password);\n\treturn o;\n}\n\n/* 2.4.117 */\nfunction parse_FilePassHeader(blob, length, oo) {\n\tvar o = oo || {}; o.Info = blob.read_shift(2); blob.l -= 2;\n\tif(o.Info === 1) o.Data = parse_RC4Header(blob, length);\n\telse o.Data = parse_RC4CryptoHeader(blob, length);\n\treturn o;\n}\nfunction parse_FilePass(blob, length, opts) {\n\tvar o = ({ Type: opts.biff >= 8 ? blob.read_shift(2) : 0 }); /* wEncryptionType */\n\tif(o.Type) parse_FilePassHeader(blob, length-2, o);\n\telse parse_XORObfuscation(blob, opts.biff >= 8 ? length : length - 2, opts, o);\n\treturn o;\n}\n\n\nvar RTF = (function() {\n\tfunction rtf_to_sheet(d, opts) {\n\t\tswitch(opts.type) {\n\t\t\tcase 'base64': return rtf_to_sheet_str(Base64.decode(d), opts);\n\t\t\tcase 'binary': return rtf_to_sheet_str(d, opts);\n\t\t\tcase 'buffer': return rtf_to_sheet_str(d.toString('binary'), opts);\n\t\t\tcase 'array': return rtf_to_sheet_str(cc2str(d), opts);\n\t\t}\n\t\tthrow new Error(\"Unrecognized type \" + opts.type);\n\t}\n\n\tfunction rtf_to_sheet_str(str, opts) {\n\t\tvar o = opts || {};\n\t\tvar ws = o.dense ? ([]) : ({});\n\t\tvar range = ({s: {c:0, r:0}, e: {c:0, r:0}});\n\n\t\t// TODO: parse\n\t\tif(!str.match(/\\\\trowd/)) throw new Error(\"RTF missing table\");\n\n\t\tws['!ref'] = encode_range(range);\n\t\treturn ws;\n\t}\n\n\tfunction rtf_to_workbook(d, opts) { return sheet_to_workbook(rtf_to_sheet(d, opts), opts); }\n\n\t/* TODO: this is a stub */\n\tfunction sheet_to_rtf(ws) {\n\t\tvar o = [\"{\\\\rtf1\\\\ansi\"];\n\t\tvar r = safe_decode_range(ws['!ref']), cell;\n\t\tvar dense = Array.isArray(ws);\n\t\tfor(var R = r.s.r; R <= r.e.r; ++R) {\n\t\t\to.push(\"\\\\trowd\\\\trautofit1\");\n\t\t\tfor(var C = r.s.c; C <= r.e.c; ++C) o.push(\"\\\\cellx\" + (C+1));\n\t\t\to.push(\"\\\\pard\\\\intbl\");\n\t\t\tfor(C = r.s.c; C <= r.e.c; ++C) {\n\t\t\t\tvar coord = encode_cell({r:R,c:C});\n\t\t\t\tcell = dense ? (ws[R]||[])[C]: ws[coord];\n\t\t\t\tif(!cell || cell.v == null && (!cell.f || cell.F)) continue;\n\t\t\t\to.push(\" \" + (cell.w || (format_cell(cell), cell.w)));\n\t\t\t\to.push(\"\\\\cell\");\n\t\t\t}\n\t\t\to.push(\"\\\\pard\\\\intbl\\\\row\");\n\t\t}\n\t\treturn o.join(\"\") + \"}\";\n\t}\n\n\treturn {\n\t\tto_workbook: rtf_to_workbook,\n\t\tto_sheet: rtf_to_sheet,\n\t\tfrom_sheet: sheet_to_rtf\n\t};\n})();\nfunction hex2RGB(h) {\n\tvar o = h.slice(h[0]===\"#\"?1:0).slice(0,6);\n\treturn [parseInt(o.slice(0,2),16),parseInt(o.slice(2,4),16),parseInt(o.slice(4,6),16)];\n}\nfunction rgb2Hex(rgb) {\n\tfor(var i=0,o=1; i!=3; ++i) o = o*256 + (rgb[i]>255?255:rgb[i]<0?0:rgb[i]);\n\treturn o.toString(16).toUpperCase().slice(1);\n}\n\nfunction rgb2HSL(rgb) {\n\tvar R = rgb[0]/255, G = rgb[1]/255, B=rgb[2]/255;\n\tvar M = Math.max(R, G, B), m = Math.min(R, G, B), C = M - m;\n\tif(C === 0) return [0, 0, R];\n\n\tvar H6 = 0, S = 0, L2 = (M + m);\n\tS = C / (L2 > 1 ? 2 - L2 : L2);\n\tswitch(M){\n\t\tcase R: H6 = ((G - B) / C + 6)%6; break;\n\t\tcase G: H6 = ((B - R) / C + 2); break;\n\t\tcase B: H6 = ((R - G) / C + 4); break;\n\t}\n\treturn [H6 / 6, S, L2 / 2];\n}\n\nfunction hsl2RGB(hsl){\n\tvar H = hsl[0], S = hsl[1], L = hsl[2];\n\tvar C = S * 2 * (L < 0.5 ? L : 1 - L), m = L - C/2;\n\tvar rgb = [m,m,m], h6 = 6*H;\n\n\tvar X;\n\tif(S !== 0) switch(h6|0) {\n\t\tcase 0: case 6: X = C * h6; rgb[0] += C; rgb[1] += X; break;\n\t\tcase 1: X = C * (2 - h6); rgb[0] += X; rgb[1] += C; break;\n\t\tcase 2: X = C * (h6 - 2); rgb[1] += C; rgb[2] += X; break;\n\t\tcase 3: X = C * (4 - h6); rgb[1] += X; rgb[2] += C; break;\n\t\tcase 4: X = C * (h6 - 4); rgb[2] += C; rgb[0] += X; break;\n\t\tcase 5: X = C * (6 - h6); rgb[2] += X; rgb[0] += C; break;\n\t}\n\tfor(var i = 0; i != 3; ++i) rgb[i] = Math.round(rgb[i]*255);\n\treturn rgb;\n}\n\n/* 18.8.3 bgColor tint algorithm */\nfunction rgb_tint(hex, tint) {\n\tif(tint === 0) return hex;\n\tvar hsl = rgb2HSL(hex2RGB(hex));\n\tif (tint < 0) hsl[2] = hsl[2] * (1 + tint);\n\telse hsl[2] = 1 - (1 - hsl[2]) * (1 - tint);\n\treturn rgb2Hex(hsl2RGB(hsl));\n}\n\n/* 18.3.1.13 width calculations */\n/* [MS-OI29500] 2.1.595 Column Width & Formatting */\nvar DEF_MDW = 6, MAX_MDW = 15, MIN_MDW = 1, MDW = DEF_MDW;\nfunction width2px(width) { return Math.floor(( width + (Math.round(128/MDW))/256 )* MDW ); }\nfunction px2char(px) { return (Math.floor((px - 5)/MDW * 100 + 0.5))/100; }\nfunction char2width(chr) { return (Math.round((chr * MDW + 5)/MDW*256))/256; }\n//function px2char_(px) { return (((px - 5)/MDW * 100 + 0.5))/100; }\n//function char2width_(chr) { return (((chr * MDW + 5)/MDW*256))/256; }\nfunction cycle_width(collw) { return char2width(px2char(width2px(collw))); }\n/* XLSX/XLSB/XLS specify width in units of MDW */\nfunction find_mdw_colw(collw) {\n\tvar delta = Math.abs(collw - cycle_width(collw)), _MDW = MDW;\n\tif(delta > 0.005) for(MDW=MIN_MDW; MDW 0.5) guess--;\n\t\tif(Math.abs(guess) < delta) { delta = Math.abs(guess); _MDW = MDW; }\n\t}\n\tMDW = _MDW;\n}*/\n\nfunction process_col(coll) {\n\tif(coll.width) {\n\t\tcoll.wpx = width2px(coll.width);\n\t\tcoll.wch = px2char(coll.wpx);\n\t\tcoll.MDW = MDW;\n\t} else if(coll.wpx) {\n\t\tcoll.wch = px2char(coll.wpx);\n\t\tcoll.width = char2width(coll.wch);\n\t\tcoll.MDW = MDW;\n\t} else if(typeof coll.wch == 'number') {\n\t\tcoll.width = char2width(coll.wch);\n\t\tcoll.wpx = width2px(coll.width);\n\t\tcoll.MDW = MDW;\n\t}\n\tif(coll.customWidth) delete coll.customWidth;\n}\n\nvar DEF_PPI = 96, PPI = DEF_PPI;\nfunction px2pt(px) { return px * 96 / PPI; }\nfunction pt2px(pt) { return pt * PPI / 96; }\n\n/* [MS-EXSPXML3] 2.4.54 ST_enmPattern */\nvar XLMLPatternTypeMap = {\n\t\"None\": \"none\",\n\t\"Solid\": \"solid\",\n\t\"Gray50\": \"mediumGray\",\n\t\"Gray75\": \"darkGray\",\n\t\"Gray25\": \"lightGray\",\n\t\"HorzStripe\": \"darkHorizontal\",\n\t\"VertStripe\": \"darkVertical\",\n\t\"ReverseDiagStripe\": \"darkDown\",\n\t\"DiagStripe\": \"darkUp\",\n\t\"DiagCross\": \"darkGrid\",\n\t\"ThickDiagCross\": \"darkTrellis\",\n\t\"ThinHorzStripe\": \"lightHorizontal\",\n\t\"ThinVertStripe\": \"lightVertical\",\n\t\"ThinReverseDiagStripe\": \"lightDown\",\n\t\"ThinHorzCross\": \"lightGrid\"\n};\n\n/* 18.8.5 borders CT_Borders */\nfunction parse_borders(t, styles, themes, opts) {\n\tstyles.Borders = [];\n\tvar border = {}/*, sub_border = {}*/;\n\tvar pass = false;\n\tt[0].match(tagregex).forEach(function(x) {\n\t\tvar y = parsexmltag(x);\n\t\tswitch(strip_ns(y[0])) {\n\t\t\tcase '': case '': break;\n\n\t\t\t/* 18.8.4 border CT_Border */\n\t\t\tcase '': case '':\n\t\t\t\tborder = {};\n\t\t\t\tif (y.diagonalUp) { border.diagonalUp = y.diagonalUp; }\n\t\t\t\tif (y.diagonalDown) { border.diagonalDown = y.diagonalDown; }\n\t\t\t\tstyles.Borders.push(border);\n\t\t\t\tbreak;\n\t\t\tcase '': break;\n\n\t\t\t/* note: not in spec, appears to be CT_BorderPr */\n\t\t\tcase '': break;\n\t\t\tcase '': break;\n\t\t\tcase '': break;\n\n\t\t\t/* note: not in spec, appears to be CT_BorderPr */\n\t\t\tcase '': break;\n\t\t\tcase '': break;\n\t\t\tcase '': break;\n\n\t\t\t/* 18.8.43 top CT_BorderPr */\n\t\t\tcase '': break;\n\t\t\tcase '': break;\n\t\t\tcase '': break;\n\n\t\t\t/* 18.8.6 bottom CT_BorderPr */\n\t\t\tcase '': break;\n\t\t\tcase '': break;\n\t\t\tcase '': break;\n\n\t\t\t/* 18.8.13 diagonal CT_BorderPr */\n\t\t\tcase '': case '': break;\n\t\t\tcase '': break;\n\n\t\t\t/* 18.8.25 horizontal CT_BorderPr */\n\t\t\tcase '': case '': break;\n\t\t\tcase '': break;\n\n\t\t\t/* 18.8.44 vertical CT_BorderPr */\n\t\t\tcase '': case '': break;\n\t\t\tcase '': break;\n\n\t\t\t/* 18.8.37 start CT_BorderPr */\n\t\t\tcase '': case '': break;\n\t\t\tcase '': break;\n\n\t\t\t/* 18.8.16 end CT_BorderPr */\n\t\t\tcase '': case '': break;\n\t\t\tcase '': break;\n\n\t\t\t/* 18.8.? color CT_Color */\n\t\t\tcase '': break;\n\t\t\tcase '': case '': break;\n\n\t\t\t/* 18.2.10 extLst CT_ExtensionList ? */\n\t\t\tcase '': case '': break;\n\t\t\tcase '': pass = false; break;\n\t\t\tdefault: if(opts && opts.WTF) {\n\t\t\t\tif(!pass) throw new Error('unrecognized ' + y[0] + ' in borders');\n\t\t\t}\n\t\t}\n\t});\n}\n\n/* 18.8.21 fills CT_Fills */\nfunction parse_fills(t, styles, themes, opts) {\n\tstyles.Fills = [];\n\tvar fill = {};\n\tvar pass = false;\n\tt[0].match(tagregex).forEach(function(x) {\n\t\tvar y = parsexmltag(x);\n\t\tswitch(strip_ns(y[0])) {\n\t\t\tcase '': case '': break;\n\n\t\t\t/* 18.8.20 fill CT_Fill */\n\t\t\tcase '': case '':\n\t\t\t\tfill = {}; styles.Fills.push(fill); break;\n\t\t\tcase '': break;\n\n\t\t\t/* 18.8.24 gradientFill CT_GradientFill */\n\t\t\tcase '': break;\n\t\t\tcase '': styles.Fills.push(fill); fill = {}; break;\n\n\t\t\t/* 18.8.32 patternFill CT_PatternFill */\n\t\t\tcase '':\n\t\t\t\tif(y.patternType) fill.patternType = y.patternType;\n\t\t\t\tbreak;\n\t\t\tcase '': case '': break;\n\n\t\t\t/* 18.8.3 bgColor CT_Color */\n\t\t\tcase '': case '': break;\n\n\t\t\t/* 18.8.19 fgColor CT_Color */\n\t\t\tcase '': case '': break;\n\n\t\t\t/* 18.8.38 stop CT_GradientStop */\n\t\t\tcase '': break;\n\t\t\tcase '': break;\n\n\t\t\t/* 18.8.? color CT_Color */\n\t\t\tcase '': break;\n\t\t\tcase '': break;\n\n\t\t\t/* 18.2.10 extLst CT_ExtensionList ? */\n\t\t\tcase '': case '': break;\n\t\t\tcase '': pass = false; break;\n\t\t\tdefault: if(opts && opts.WTF) {\n\t\t\t\tif(!pass) throw new Error('unrecognized ' + y[0] + ' in fills');\n\t\t\t}\n\t\t}\n\t});\n}\n\n/* 18.8.23 fonts CT_Fonts */\nfunction parse_fonts(t, styles, themes, opts) {\n\tstyles.Fonts = [];\n\tvar font = {};\n\tvar pass = false;\n\tt[0].match(tagregex).forEach(function(x) {\n\t\tvar y = parsexmltag(x);\n\t\tswitch(strip_ns(y[0])) {\n\t\t\tcase '': case '': break;\n\n\t\t\t/* 18.8.22 font CT_Font */\n\t\t\tcase '': break;\n\t\t\tcase '': case '':\n\t\t\t\tstyles.Fonts.push(font);\n\t\t\t\tfont = {};\n\t\t\t\tbreak;\n\n\t\t\t/* 18.8.29 name CT_FontName */\n\t\t\tcase '': case '': break;\n\n\t\t\t/* 18.8.2 b CT_BooleanProperty */\n\t\t\tcase '': font.bold = 1; break;\n\n\t\t\t/* 18.8.26 i CT_BooleanProperty */\n\t\t\tcase '': font.italic = 1; break;\n\n\t\t\t/* 18.4.13 u CT_UnderlineProperty */\n\t\t\tcase '': font.underline = 1; break;\n\n\t\t\t/* 18.4.10 strike CT_BooleanProperty */\n\t\t\tcase '': font.strike = 1; break;\n\n\t\t\t/* 18.4.2 outline CT_BooleanProperty */\n\t\t\tcase '': font.outline = 1; break;\n\n\t\t\t/* 18.8.36 shadow CT_BooleanProperty */\n\t\t\tcase '': font.shadow = 1; break;\n\n\t\t\t/* 18.8.12 condense CT_BooleanProperty */\n\t\t\tcase '': font.condense = 1; break;\n\n\t\t\t/* 18.8.17 extend CT_BooleanProperty */\n\t\t\tcase '': font.extend = 1; break;\n\n\t\t\t/* 18.4.11 sz CT_FontSize */\n\t\t\tcase '': case '': break;\n\n\t\t\t/* 18.4.14 vertAlign CT_VerticalAlignFontProperty */\n\t\t\tcase '': case '': break;\n\n\t\t\t/* 18.8.18 family CT_FontFamily */\n\t\t\tcase '': case '': break;\n\n\t\t\t/* 18.8.35 scheme CT_FontScheme */\n\t\t\tcase '': case '': break;\n\n\t\t\t/* 18.4.1 charset CT_IntProperty */\n\t\t\tcase '': case '': break;\n\n\t\t\t/* 18.2.10 extLst CT_ExtensionList ? */\n\t\t\tcase '': case '': break;\n\t\t\tcase '': pass = false; break;\n\t\t\tdefault: if(opts && opts.WTF) {\n\t\t\t\tif(!pass) throw new Error('unrecognized ' + y[0] + ' in fonts');\n\t\t\t}\n\t\t}\n\t});\n}\n\n/* 18.8.31 numFmts CT_NumFmts */\nfunction parse_numFmts(t, styles, opts) {\n\tstyles.NumberFmt = [];\n\tvar k/*Array*/ = (keys(SSF._table));\n\tfor(var i=0; i < k.length; ++i) styles.NumberFmt[k[i]] = SSF._table[k[i]];\n\tvar m = t[0].match(tagregex);\n\tif(!m) return;\n\tfor(i=0; i < m.length; ++i) {\n\t\tvar y = parsexmltag(m[i]);\n\t\tswitch(strip_ns(y[0])) {\n\t\t\tcase '': case '': case '': break;\n\t\t\tcase '0) {\n\t\t\t\t\tif(j > 0x188) {\n\t\t\t\t\t\tfor(j = 0x188; j > 0x3c; --j) if(styles.NumberFmt[j] == null) break;\n\t\t\t\t\t\tstyles.NumberFmt[j] = f;\n\t\t\t\t\t}\n\t\t\t\t\tSSF.load(f,j);\n\t\t\t\t}\n\t\t\t} break;\n\t\t\tcase '': break;\n\t\t\tdefault: if(opts.WTF) throw new Error('unrecognized ' + y[0] + ' in numFmts');\n\t\t}\n\t}\n}\n\nfunction write_numFmts(NF) {\n\tvar o = [\"\"];\n\t[[5,8],[23,26],[41,44],[/*63*/50,/*66],[164,*/392]].forEach(function(r) {\n\t\tfor(var i = r[0]; i <= r[1]; ++i) if(NF[i] != null) o[o.length] = (writextag('numFmt',null,{numFmtId:i,formatCode:escapexml(NF[i])}));\n\t});\n\tif(o.length === 1) return \"\";\n\to[o.length] = (\"\");\n\to[0] = writextag('numFmts', null, { count:o.length-2 }).replace(\"/>\", \">\");\n\treturn o.join(\"\");\n}\n\n/* 18.8.10 cellXfs CT_CellXfs */\nvar cellXF_uint = [ \"numFmtId\", \"fillId\", \"fontId\", \"borderId\", \"xfId\" ];\nvar cellXF_bool = [ \"applyAlignment\", \"applyBorder\", \"applyFill\", \"applyFont\", \"applyNumberFormat\", \"applyProtection\", \"pivotButton\", \"quotePrefix\" ];\nfunction parse_cellXfs(t, styles, opts) {\n\tstyles.CellXf = [];\n\tvar xf;\n\tvar pass = false;\n\tt[0].match(tagregex).forEach(function(x) {\n\t\tvar y = parsexmltag(x), i = 0;\n\t\tswitch(strip_ns(y[0])) {\n\t\t\tcase '': case '': case '': break;\n\n\t\t\t/* 18.8.45 xf CT_Xf */\n\t\t\tcase '':\n\t\t\t\txf = y;\n\t\t\t\tdelete xf[0];\n\t\t\t\tfor(i = 0; i < cellXF_uint.length; ++i) if(xf[cellXF_uint[i]])\n\t\t\t\t\txf[cellXF_uint[i]] = parseInt(xf[cellXF_uint[i]], 10);\n\t\t\t\tfor(i = 0; i < cellXF_bool.length; ++i) if(xf[cellXF_bool[i]])\n\t\t\t\t\txf[cellXF_bool[i]] = parsexmlbool(xf[cellXF_bool[i]]);\n\t\t\t\tif(xf.numFmtId > 0x188) {\n\t\t\t\t\tfor(i = 0x188; i > 0x3c; --i) if(styles.NumberFmt[xf.numFmtId] == styles.NumberFmt[i]) { xf.numFmtId = i; break; }\n\t\t\t\t}\n\t\t\t\tstyles.CellXf.push(xf); break;\n\t\t\tcase '': break;\n\n\t\t\t/* 18.8.1 alignment CT_CellAlignment */\n\t\t\tcase '':\n\t\t\t\tvar alignment = {};\n\t\t\t\tif(y.vertical) alignment.vertical = y.vertical;\n\t\t\t\tif(y.horizontal) alignment.horizontal = y.horizontal;\n\t\t\t\tif(y.textRotation != null) alignment.textRotation = y.textRotation;\n\t\t\t\tif(y.indent) alignment.indent = y.indent;\n\t\t\t\tif(y.wrapText) alignment.wrapText = y.wrapText;\n\t\t\t\txf.alignment = alignment;\n\t\t\t\tbreak;\n\t\t\tcase '': break;\n\n\t\t\t/* 18.8.33 protection CT_CellProtection */\n\t\t\tcase '': case '': break;\n\n\t\t\t/* 18.2.10 extLst CT_ExtensionList ? */\n\t\t\tcase '': case '': break;\n\t\t\tcase '': pass = false; break;\n\t\t\tdefault: if(opts && opts.WTF) {\n\t\t\t\tif(!pass) throw new Error('unrecognized ' + y[0] + ' in cellXfs');\n\t\t\t}\n\t\t}\n\t});\n}\n\nfunction write_cellXfs(cellXfs) {\n\tvar o = [];\n\to[o.length] = (writextag('cellXfs',null));\n\tcellXfs.forEach(function(c) { o[o.length] = (writextag('xf', null, c)); });\n\to[o.length] = (\"\");\n\tif(o.length === 2) return \"\";\n\to[0] = writextag('cellXfs',null, {count:o.length-2}).replace(\"/>\",\">\");\n\treturn o.join(\"\");\n}\n\n/* 18.8 Styles CT_Stylesheet*/\nvar parse_sty_xml= (function make_pstyx() {\nvar numFmtRegex = /<(?:\\w+:)?numFmts([^>]*)>[\\S\\s]*?<\\/(?:\\w+:)?numFmts>/;\nvar cellXfRegex = /<(?:\\w+:)?cellXfs([^>]*)>[\\S\\s]*?<\\/(?:\\w+:)?cellXfs>/;\nvar fillsRegex = /<(?:\\w+:)?fills([^>]*)>[\\S\\s]*?<\\/(?:\\w+:)?fills>/;\nvar fontsRegex = /<(?:\\w+:)?fonts([^>]*)>[\\S\\s]*?<\\/(?:\\w+:)?fonts>/;\nvar bordersRegex = /<(?:\\w+:)?borders([^>]*)>[\\S\\s]*?<\\/(?:\\w+:)?borders>/;\n\nreturn function parse_sty_xml(data, themes, opts) {\n\tvar styles = {};\n\tif(!data) return styles;\n\tdata = data.replace(//mg,\"\").replace(//gm,\"\");\n\t/* 18.8.39 styleSheet CT_Stylesheet */\n\tvar t;\n\n\t/* 18.8.31 numFmts CT_NumFmts ? */\n\tif((t=data.match(numFmtRegex))) parse_numFmts(t, styles, opts);\n\n\t/* 18.8.23 fonts CT_Fonts ? */\n\tif((t=data.match(fontsRegex))) parse_fonts(t, styles, themes, opts);\n\n\t/* 18.8.21 fills CT_Fills ? */\n\tif((t=data.match(fillsRegex))) parse_fills(t, styles, themes, opts);\n\n\t/* 18.8.5 borders CT_Borders ? */\n\tif((t=data.match(bordersRegex))) parse_borders(t, styles, themes, opts);\n\n\t/* 18.8.9 cellStyleXfs CT_CellStyleXfs ? */\n\n\t/* 18.8.10 cellXfs CT_CellXfs ? */\n\tif((t=data.match(cellXfRegex))) parse_cellXfs(t, styles, opts);\n\n\t/* 18.8.8 cellStyles CT_CellStyles ? */\n\t/* 18.8.15 dxfs CT_Dxfs ? */\n\t/* 18.8.42 tableStyles CT_TableStyles ? */\n\t/* 18.8.11 colors CT_Colors ? */\n\t/* 18.2.10 extLst CT_ExtensionList ? */\n\n\treturn styles;\n};\n})();\n\nvar STYLES_XML_ROOT = writextag('styleSheet', null, {\n\t'xmlns': XMLNS.main[0],\n\t'xmlns:vt': XMLNS.vt\n});\n\nRELS.STY = \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/styles\";\n\nfunction write_sty_xml(wb, opts) {\n\tvar o = [XML_HEADER, STYLES_XML_ROOT], w;\n\tif(wb.SSF && (w = write_numFmts(wb.SSF)) != null) o[o.length] = w;\n\to[o.length] = ('');\n\to[o.length] = ('');\n\to[o.length] = ('');\n\to[o.length] = ('');\n\tif((w = write_cellXfs(opts.cellXfs))) o[o.length] = (w);\n\to[o.length] = ('');\n\to[o.length] = ('');\n\to[o.length] = ('');\n\n\tif(o.length>2){ o[o.length] = (''); o[1]=o[1].replace(\"/>\",\">\"); }\n\treturn o.join(\"\");\n}\n/* [MS-XLSB] 2.4.657 BrtFmt */\nfunction parse_BrtFmt(data, length) {\n\tvar numFmtId = data.read_shift(2);\n\tvar stFmtCode = parse_XLWideString(data,length-2);\n\treturn [numFmtId, stFmtCode];\n}\nfunction write_BrtFmt(i, f, o) {\n\tif(!o) o = new_buf(6 + 4 * f.length);\n\to.write_shift(2, i);\n\twrite_XLWideString(f, o);\n\tvar out = (o.length > o.l) ? o.slice(0, o.l) : o;\n\tif(o.l == null) o.l = o.length;\n\treturn out;\n}\n\n/* [MS-XLSB] 2.4.659 BrtFont TODO */\nfunction parse_BrtFont(data, length, opts) {\n\tvar out = ({});\n\n\tout.sz = data.read_shift(2) / 20;\n\n\tvar grbit = parse_FontFlags(data, 2, opts);\n\tif(grbit.fCondense) out.condense = 1;\n\tif(grbit.fExtend) out.extend = 1;\n\tif(grbit.fShadow) out.shadow = 1;\n\tif(grbit.fOutline) out.outline = 1;\n\tif(grbit.fStrikeout) out.strike = 1;\n\tif(grbit.fItalic) out.italic = 1;\n\n\tvar bls = data.read_shift(2);\n\tif(bls === 0x02BC) out.bold = 1;\n\n\tswitch(data.read_shift(2)) {\n\t\t/* case 0: out.vertAlign = \"baseline\"; break; */\n\t\tcase 1: out.vertAlign = \"superscript\"; break;\n\t\tcase 2: out.vertAlign = \"subscript\"; break;\n\t}\n\n\tvar underline = data.read_shift(1);\n\tif(underline != 0) out.underline = underline;\n\n\tvar family = data.read_shift(1);\n\tif(family > 0) out.family = family;\n\n\tvar bCharSet = data.read_shift(1);\n\tif(bCharSet > 0) out.charset = bCharSet;\n\n\tdata.l++;\n\tout.color = parse_BrtColor(data, 8);\n\n\tswitch(data.read_shift(1)) {\n\t\t/* case 0: out.scheme = \"none\": break; */\n\t\tcase 1: out.scheme = \"major\"; break;\n\t\tcase 2: out.scheme = \"minor\"; break;\n\t}\n\n\tout.name = parse_XLWideString(data, length - 21);\n\n\treturn out;\n}\nfunction write_BrtFont(font, o) {\n\tif(!o) o = new_buf(25+4*32);\n\to.write_shift(2, font.sz * 20);\n\twrite_FontFlags(font, o);\n\to.write_shift(2, font.bold ? 0x02BC : 0x0190);\n\tvar sss = 0;\n\tif(font.vertAlign == \"superscript\") sss = 1;\n\telse if(font.vertAlign == \"subscript\") sss = 2;\n\to.write_shift(2, sss);\n\to.write_shift(1, font.underline || 0);\n\to.write_shift(1, font.family || 0);\n\to.write_shift(1, font.charset || 0);\n\to.write_shift(1, 0);\n\twrite_BrtColor(font.color, o);\n\tvar scheme = 0;\n\tif(font.scheme == \"major\") scheme = 1;\n\tif(font.scheme == \"minor\") scheme = 2;\n\to.write_shift(1, scheme);\n\twrite_XLWideString(font.name, o);\n\treturn o.length > o.l ? o.slice(0, o.l) : o;\n}\n\n/* [MS-XLSB] 2.4.650 BrtFill */\nvar XLSBFillPTNames = [\n\t\"none\",\n\t\"solid\",\n\t\"mediumGray\",\n\t\"darkGray\",\n\t\"lightGray\",\n\t\"darkHorizontal\",\n\t\"darkVertical\",\n\t\"darkDown\",\n\t\"darkUp\",\n\t\"darkGrid\",\n\t\"darkTrellis\",\n\t\"lightHorizontal\",\n\t\"lightVertical\",\n\t\"lightDown\",\n\t\"lightUp\",\n\t\"lightGrid\",\n\t\"lightTrellis\",\n\t\"gray125\",\n\t\"gray0625\"\n];\nvar rev_XLSBFillPTNames = (evert(XLSBFillPTNames));\n/* TODO: gradient fill representation */\nvar parse_BrtFill = parsenoop;\nfunction write_BrtFill(fill, o) {\n\tif(!o) o = new_buf(4*3 + 8*7 + 16*1);\n\tvar fls = rev_XLSBFillPTNames[fill.patternType];\n\tif(fls == null) fls = 0x28;\n\to.write_shift(4, fls);\n\tvar j = 0;\n\tif(fls != 0x28) {\n\t\t/* TODO: custom FG Color */\n\t\twrite_BrtColor({auto:1}, o);\n\t\t/* TODO: custom BG Color */\n\t\twrite_BrtColor({auto:1}, o);\n\n\t\tfor(; j < 12; ++j) o.write_shift(4, 0);\n\t} else {\n\t\tfor(; j < 4; ++j) o.write_shift(4, 0);\n\n\t\tfor(; j < 12; ++j) o.write_shift(4, 0); /* TODO */\n\t\t/* iGradientType */\n\t\t/* xnumDegree */\n\t\t/* xnumFillToLeft */\n\t\t/* xnumFillToRight */\n\t\t/* xnumFillToTop */\n\t\t/* xnumFillToBottom */\n\t\t/* cNumStop */\n\t\t/* xfillGradientStop */\n\t}\n\treturn o.length > o.l ? o.slice(0, o.l) : o;\n}\n\n/* [MS-XLSB] 2.4.824 BrtXF */\nfunction parse_BrtXF(data, length) {\n\tvar tgt = data.l + length;\n\tvar ixfeParent = data.read_shift(2);\n\tvar ifmt = data.read_shift(2);\n\tdata.l = tgt;\n\treturn {ixfe:ixfeParent, numFmtId:ifmt };\n}\nfunction write_BrtXF(data, ixfeP, o) {\n\tif(!o) o = new_buf(16);\n\to.write_shift(2, ixfeP||0);\n\to.write_shift(2, data.numFmtId||0);\n\to.write_shift(2, 0); /* iFont */\n\to.write_shift(2, 0); /* iFill */\n\to.write_shift(2, 0); /* ixBorder */\n\to.write_shift(1, 0); /* trot */\n\to.write_shift(1, 0); /* indent */\n\to.write_shift(1, 0); /* flags */\n\to.write_shift(1, 0); /* flags */\n\to.write_shift(1, 0); /* xfGrbitAtr */\n\to.write_shift(1, 0);\n\treturn o;\n}\n\n/* [MS-XLSB] 2.5.4 Blxf TODO */\nfunction write_Blxf(data, o) {\n\tif(!o) o = new_buf(10);\n\to.write_shift(1, 0); /* dg */\n\to.write_shift(1, 0);\n\to.write_shift(4, 0); /* color */\n\to.write_shift(4, 0); /* color */\n\treturn o;\n}\n/* [MS-XLSB] 2.4.302 BrtBorder TODO */\nvar parse_BrtBorder = parsenoop;\nfunction write_BrtBorder(border, o) {\n\tif(!o) o = new_buf(51);\n\to.write_shift(1, 0); /* diagonal */\n\twrite_Blxf(null, o); /* top */\n\twrite_Blxf(null, o); /* bottom */\n\twrite_Blxf(null, o); /* left */\n\twrite_Blxf(null, o); /* right */\n\twrite_Blxf(null, o); /* diag */\n\treturn o.length > o.l ? o.slice(0, o.l) : o;\n}\n\n/* [MS-XLSB] 2.4.763 BrtStyle TODO */\nfunction write_BrtStyle(style, o) {\n\tif(!o) o = new_buf(12+4*10);\n\to.write_shift(4, style.xfId);\n\to.write_shift(2, 1);\n\to.write_shift(1, +style.builtinId);\n\to.write_shift(1, 0); /* iLevel */\n\twrite_XLNullableWideString(style.name || \"\", o);\n\treturn o.length > o.l ? o.slice(0, o.l) : o;\n}\n\n/* [MS-XLSB] 2.4.272 BrtBeginTableStyles */\nfunction write_BrtBeginTableStyles(cnt, defTableStyle, defPivotStyle) {\n\tvar o = new_buf(4+256*2*4);\n\to.write_shift(4, cnt);\n\twrite_XLNullableWideString(defTableStyle, o);\n\twrite_XLNullableWideString(defPivotStyle, o);\n\treturn o.length > o.l ? o.slice(0, o.l) : o;\n}\n\n/* [MS-XLSB] 2.1.7.50 Styles */\nfunction parse_sty_bin(data, themes, opts) {\n\tvar styles = {};\n\tstyles.NumberFmt = ([]);\n\tfor(var y in SSF._table) styles.NumberFmt[y] = SSF._table[y];\n\n\tstyles.CellXf = [];\n\tstyles.Fonts = [];\n\tvar state = [];\n\tvar pass = false;\n\trecordhopper(data, function hopper_sty(val, R_n, RT) {\n\t\tswitch(RT) {\n\t\t\tcase 0x002C: /* 'BrtFmt' */\n\t\t\t\tstyles.NumberFmt[val[0]] = val[1]; SSF.load(val[1], val[0]);\n\t\t\t\tbreak;\n\t\t\tcase 0x002B: /* 'BrtFont' */\n\t\t\t\tstyles.Fonts.push(val);\n\t\t\t\tif(val.color.theme != null && themes && themes.themeElements && themes.themeElements.clrScheme) {\n\t\t\t\t\tval.color.rgb = rgb_tint(themes.themeElements.clrScheme[val.color.theme].rgb, val.color.tint || 0);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase 0x0401: /* 'BrtKnownFonts' */ break;\n\t\t\tcase 0x002D: /* 'BrtFill' */ break;\n\t\t\tcase 0x002E: /* 'BrtBorder' */ break;\n\t\t\tcase 0x002F: /* 'BrtXF' */\n\t\t\t\tif(state[state.length - 1] == \"BrtBeginCellXFs\") {\n\t\t\t\t\tstyles.CellXf.push(val);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase 0x0030: /* 'BrtStyle' */\n\t\t\tcase 0x01FB: /* 'BrtDXF' */\n\t\t\tcase 0x023C: /* 'BrtMRUColor' */\n\t\t\tcase 0x01DB: /* 'BrtIndexedColor': */\n\t\t\t\tbreak;\n\n\t\t\tcase 0x0493: /* 'BrtDXF14' */\n\t\t\tcase 0x0836: /* 'BrtDXF15' */\n\t\t\tcase 0x046A: /* 'BrtSlicerStyleElement' */\n\t\t\tcase 0x0200: /* 'BrtTableStyleElement' */\n\t\t\tcase 0x082F: /* 'BrtTimelineStyleElement' */\n\t\t\tcase 0x0C00: /* 'BrtUid' */\n\t\t\t\tbreak;\n\n\t\t\tcase 0x0023: /* 'BrtFRTBegin' */\n\t\t\t\tpass = true; break;\n\t\t\tcase 0x0024: /* 'BrtFRTEnd' */\n\t\t\t\tpass = false; break;\n\t\t\tcase 0x0025: /* 'BrtACBegin' */\n\t\t\t\tstate.push(R_n); break;\n\t\t\tcase 0x0026: /* 'BrtACEnd' */\n\t\t\t\tstate.pop(); break;\n\n\t\t\tdefault:\n\t\t\t\tif((R_n||\"\").indexOf(\"Begin\") > 0) state.push(R_n);\n\t\t\t\telse if((R_n||\"\").indexOf(\"End\") > 0) state.pop();\n\t\t\t\telse if(!pass || opts.WTF) throw new Error(\"Unexpected record \" + RT + \" \" + R_n);\n\t\t}\n\t});\n\treturn styles;\n}\n\nfunction write_FMTS_bin(ba, NF) {\n\tif(!NF) return;\n\tvar cnt = 0;\n\t[[5,8],[23,26],[41,44],[/*63*/50,/*66],[164,*/392]].forEach(function(r) {\nfor(var i = r[0]; i <= r[1]; ++i) if(NF[i] != null) ++cnt;\n\t});\n\n\tif(cnt == 0) return;\n\twrite_record(ba, \"BrtBeginFmts\", write_UInt32LE(cnt));\n\t[[5,8],[23,26],[41,44],[/*63*/50,/*66],[164,*/392]].forEach(function(r) {\nfor(var i = r[0]; i <= r[1]; ++i) if(NF[i] != null) write_record(ba, \"BrtFmt\", write_BrtFmt(i, NF[i]));\n\t});\n\twrite_record(ba, \"BrtEndFmts\");\n}\n\nfunction write_FONTS_bin(ba) {\n\tvar cnt = 1;\n\n\tif(cnt == 0) return;\n\twrite_record(ba, \"BrtBeginFonts\", write_UInt32LE(cnt));\n\twrite_record(ba, \"BrtFont\", write_BrtFont({\n\t\tsz:12,\n\t\tcolor: {theme:1},\n\t\tname: \"Calibri\",\n\t\tfamily: 2,\n\t\tscheme: \"minor\"\n\t}));\n\t/* 1*65491BrtFont [ACFONTS] */\n\twrite_record(ba, \"BrtEndFonts\");\n}\n\nfunction write_FILLS_bin(ba) {\n\tvar cnt = 2;\n\n\tif(cnt == 0) return;\n\twrite_record(ba, \"BrtBeginFills\", write_UInt32LE(cnt));\n\twrite_record(ba, \"BrtFill\", write_BrtFill({patternType:\"none\"}));\n\twrite_record(ba, \"BrtFill\", write_BrtFill({patternType:\"gray125\"}));\n\t/* 1*65431BrtFill */\n\twrite_record(ba, \"BrtEndFills\");\n}\n\nfunction write_BORDERS_bin(ba) {\n\tvar cnt = 1;\n\n\tif(cnt == 0) return;\n\twrite_record(ba, \"BrtBeginBorders\", write_UInt32LE(cnt));\n\twrite_record(ba, \"BrtBorder\", write_BrtBorder({}));\n\t/* 1*65430BrtBorder */\n\twrite_record(ba, \"BrtEndBorders\");\n}\n\nfunction write_CELLSTYLEXFS_bin(ba) {\n\tvar cnt = 1;\n\twrite_record(ba, \"BrtBeginCellStyleXFs\", write_UInt32LE(cnt));\n\twrite_record(ba, \"BrtXF\", write_BrtXF({\n\t\tnumFmtId:0,\n\t\tfontId:0,\n\t\tfillId:0,\n\t\tborderId:0\n\t}, 0xFFFF));\n\t/* 1*65430(BrtXF *FRT) */\n\twrite_record(ba, \"BrtEndCellStyleXFs\");\n}\n\nfunction write_CELLXFS_bin(ba, data) {\n\twrite_record(ba, \"BrtBeginCellXFs\", write_UInt32LE(data.length));\n\tdata.forEach(function(c) { write_record(ba, \"BrtXF\", write_BrtXF(c,0)); });\n\t/* 1*65430(BrtXF *FRT) */\n\twrite_record(ba, \"BrtEndCellXFs\");\n}\n\nfunction write_STYLES_bin(ba) {\n\tvar cnt = 1;\n\n\twrite_record(ba, \"BrtBeginStyles\", write_UInt32LE(cnt));\n\twrite_record(ba, \"BrtStyle\", write_BrtStyle({\n\t\txfId:0,\n\t\tbuiltinId:0,\n\t\tname:\"Normal\"\n\t}));\n\t/* 1*65430(BrtStyle *FRT) */\n\twrite_record(ba, \"BrtEndStyles\");\n}\n\nfunction write_DXFS_bin(ba) {\n\tvar cnt = 0;\n\n\twrite_record(ba, \"BrtBeginDXFs\", write_UInt32LE(cnt));\n\t/* *2147483647(BrtDXF *FRT) */\n\twrite_record(ba, \"BrtEndDXFs\");\n}\n\nfunction write_TABLESTYLES_bin(ba) {\n\tvar cnt = 0;\n\n\twrite_record(ba, \"BrtBeginTableStyles\", write_BrtBeginTableStyles(cnt, \"TableStyleMedium9\", \"PivotStyleMedium4\"));\n\t/* *TABLESTYLE */\n\twrite_record(ba, \"BrtEndTableStyles\");\n}\n\nfunction write_COLORPALETTE_bin() {\n\treturn;\n\t/* BrtBeginColorPalette [INDEXEDCOLORS] [MRUCOLORS] BrtEndColorPalette */\n}\n\n/* [MS-XLSB] 2.1.7.50 Styles */\nfunction write_sty_bin(wb, opts) {\n\tvar ba = buf_array();\n\twrite_record(ba, \"BrtBeginStyleSheet\");\n\twrite_FMTS_bin(ba, wb.SSF);\n\twrite_FONTS_bin(ba, wb);\n\twrite_FILLS_bin(ba, wb);\n\twrite_BORDERS_bin(ba, wb);\n\twrite_CELLSTYLEXFS_bin(ba, wb);\n\twrite_CELLXFS_bin(ba, opts.cellXfs);\n\twrite_STYLES_bin(ba, wb);\n\twrite_DXFS_bin(ba, wb);\n\twrite_TABLESTYLES_bin(ba, wb);\n\twrite_COLORPALETTE_bin(ba, wb);\n\t/* FRTSTYLESHEET*/\n\twrite_record(ba, \"BrtEndStyleSheet\");\n\treturn ba.end();\n}\nRELS.THEME = \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/theme\";\n\n/* 20.1.6.2 clrScheme CT_ColorScheme */\nfunction parse_clrScheme(t, themes, opts) {\n\tthemes.themeElements.clrScheme = [];\n\tvar color = {};\n\t(t[0].match(tagregex)||[]).forEach(function(x) {\n\t\tvar y = parsexmltag(x);\n\t\tswitch(y[0]) {\n\t\t\t/* 20.1.6.2 clrScheme (Color Scheme) CT_ColorScheme */\n\t\t\tcase '': break;\n\n\t\t\t/* 20.1.2.3.32 srgbClr CT_SRgbColor */\n\t\t\tcase '': case '':\n\t\t\tcase '': case '':\n\t\t\tcase '': case '':\n\t\t\tcase '': case '':\n\t\t\tcase '': case '':\n\t\t\tcase '': case '':\n\t\t\tcase '': case '':\n\t\t\tcase '': case '':\n\t\t\tcase '': case '':\n\t\t\tcase '': case '':\n\t\t\tcase '': case '':\n\t\t\tcase '': case '':\n\t\t\t\tif (y[0].charAt(1) === '/') {\n\t\t\t\t\tthemes.themeElements.clrScheme.push(color);\n\t\t\t\t\tcolor = {};\n\t\t\t\t} else {\n\t\t\t\t\tcolor.name = y[0].slice(3, y[0].length - 1);\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tdefault: if(opts && opts.WTF) throw new Error('Unrecognized ' + y[0] + ' in clrScheme');\n\t\t}\n\t});\n}\n\n/* 20.1.4.1.18 fontScheme CT_FontScheme */\nfunction parse_fontScheme() { }\n\n/* 20.1.4.1.15 fmtScheme CT_StyleMatrix */\nfunction parse_fmtScheme() { }\n\nvar clrsregex = /]*)>[\\s\\S]*<\\/a:clrScheme>/;\nvar fntsregex = /]*)>[\\s\\S]*<\\/a:fontScheme>/;\nvar fmtsregex = /]*)>[\\s\\S]*<\\/a:fmtScheme>/;\n\n/* 20.1.6.10 themeElements CT_BaseStyles */\nfunction parse_themeElements(data, themes, opts) {\n\tthemes.themeElements = {};\n\n\tvar t;\n\n\t[\n\t\t/* clrScheme CT_ColorScheme */\n\t\t['clrScheme', clrsregex, parse_clrScheme],\n\t\t/* fontScheme CT_FontScheme */\n\t\t['fontScheme', fntsregex, parse_fontScheme],\n\t\t/* fmtScheme CT_StyleMatrix */\n\t\t['fmtScheme', fmtsregex, parse_fmtScheme]\n\t].forEach(function(m) {\n\t\tif(!(t=data.match(m[1]))) throw new Error(m[0] + ' not found in themeElements');\n\t\tm[2](t, themes, opts);\n\t});\n}\n\nvar themeltregex = /]*)>[\\s\\S]*<\\/a:themeElements>/;\n\n/* 14.2.7 Theme Part */\nfunction parse_theme_xml(data, opts) {\n\t/* 20.1.6.9 theme CT_OfficeStyleSheet */\n\tif(!data || data.length === 0) return parse_theme_xml(write_theme());\n\n\tvar t;\n\tvar themes = {};\n\n\t/* themeElements CT_BaseStyles */\n\tif(!(t=data.match(themeltregex))) throw new Error('themeElements not found in theme');\n\tparse_themeElements(t[0], themes, opts);\n\n\treturn themes;\n}\n\nfunction write_theme(Themes, opts) {\n\tif(opts && opts.themeXLSX) return opts.themeXLSX;\n\tvar o = [XML_HEADER];\n\to[o.length] = '';\n\to[o.length] = '';\n\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\treturn o.join(\"\");\n}\n/* [MS-XLS] 2.4.326 TODO: payload is a zip file */\nfunction parse_Theme(blob, length, opts) {\n\tvar end = blob.l + length;\n\tvar dwThemeVersion = blob.read_shift(4);\n\tif(dwThemeVersion === 124226) return;\n\tif(!opts.cellStyles || !jszip) { blob.l = end; return; }\n\tvar data = blob.slice(blob.l);\n\tblob.l = end;\n\tvar zip; try { zip = new jszip(data); } catch(e) { return; }\n\tvar themeXML = getzipstr(zip, \"theme/theme/theme1.xml\", true);\n\tif(!themeXML) return;\n\treturn parse_theme_xml(themeXML, opts);\n}\n\n/* 2.5.49 */\nfunction parse_ColorTheme(blob) { return blob.read_shift(4); }\n\n/* 2.5.155 */\nfunction parse_FullColorExt(blob) {\n\tvar o = {};\n\to.xclrType = blob.read_shift(2);\n\to.nTintShade = blob.read_shift(2);\n\tswitch(o.xclrType) {\n\t\tcase 0: blob.l += 4; break;\n\t\tcase 1: o.xclrValue = parse_IcvXF(blob, 4); break;\n\t\tcase 2: o.xclrValue = parse_LongRGBA(blob, 4); break;\n\t\tcase 3: o.xclrValue = parse_ColorTheme(blob, 4); break;\n\t\tcase 4: blob.l += 4; break;\n\t}\n\tblob.l += 8;\n\treturn o;\n}\n\n/* 2.5.164 TODO: read 7 bits*/\nfunction parse_IcvXF(blob, length) {\n\treturn parsenoop(blob, length);\n}\n\n/* 2.5.280 */\nfunction parse_XFExtGradient(blob, length) {\n\treturn parsenoop(blob, length);\n}\n\n/* [MS-XLS] 2.5.108 */\nfunction parse_ExtProp(blob) {\n\tvar extType = blob.read_shift(2);\n\tvar cb = blob.read_shift(2) - 4;\n\tvar o = [extType];\n\tswitch(extType) {\n\t\tcase 0x04: case 0x05: case 0x07: case 0x08:\n\t\tcase 0x09: case 0x0A: case 0x0B: case 0x0D:\n\t\t\to[1] = parse_FullColorExt(blob, cb); break;\n\t\tcase 0x06: o[1] = parse_XFExtGradient(blob, cb); break;\n\t\tcase 0x0E: case 0x0F: o[1] = blob.read_shift(cb === 1 ? 1 : 2); break;\n\t\tdefault: throw new Error(\"Unrecognized ExtProp type: \" + extType + \" \" + cb);\n\t}\n\treturn o;\n}\n\n/* 2.4.355 */\nfunction parse_XFExt(blob, length) {\n\tvar end = blob.l + length;\n\tblob.l += 2;\n\tvar ixfe = blob.read_shift(2);\n\tblob.l += 2;\n\tvar cexts = blob.read_shift(2);\n\tvar ext = [];\n\twhile(cexts-- > 0) ext.push(parse_ExtProp(blob, end-blob.l));\n\treturn {ixfe:ixfe, ext:ext};\n}\n\n/* xf is an XF, see parse_XFExt for xfext */\nfunction update_xfext(xf, xfext) {\n\txfext.forEach(function(xfe) {\n\t\tswitch(xfe[0]) { /* 2.5.108 extPropData */\n\t\t\tcase 0x04: break; /* foreground color */\n\t\t\tcase 0x05: break; /* background color */\n\t\t\tcase 0x06: break; /* gradient fill */\n\t\t\tcase 0x07: break; /* top cell border color */\n\t\t\tcase 0x08: break; /* bottom cell border color */\n\t\t\tcase 0x09: break; /* left cell border color */\n\t\t\tcase 0x0a: break; /* right cell border color */\n\t\t\tcase 0x0b: break; /* diagonal cell border color */\n\t\t\tcase 0x0d: break; /* text color */\n\t\t\tcase 0x0e: break; /* font scheme */\n\t\t\tcase 0x0f: break; /* indentation level */\n\t\t}\n\t});\n}\n\n/* 18.6 Calculation Chain */\nfunction parse_cc_xml(data) {\n\tvar d = [];\n\tif(!data) return d;\n\tvar i = 1;\n\t(data.match(tagregex)||[]).forEach(function(x) {\n\t\tvar y = parsexmltag(x);\n\t\tswitch(y[0]) {\n\t\t\tcase '': case '': break;\n\t\t\t/* 18.6.1 c CT_CalcCell 1 */\n\t\t\tcase ' 0){/* empty */}\n\t\t\t\telse if((R_n||\"\").indexOf(\"End\") > 0){/* empty */}\n\t\t\t\telse if(!pass || opts.WTF) throw new Error(\"Unexpected record \" + RT + \" \" + R_n);\n\t\t}\n\t});\n\treturn out;\n}\n\n//function write_cc_bin(data, opts) { }\n/* 18.14 Supplementary Workbook Data */\nfunction parse_xlink_xml() {\n\t//var opts = _opts || {};\n\t//if(opts.WTF) throw \"XLSX External Link\";\n}\n\n/* [MS-XLSB] 2.1.7.25 External Link */\nfunction parse_xlink_bin(data, name, _opts) {\n\tif(!data) return data;\n\tvar opts = _opts || {};\n\n\tvar pass = false, end = false;\n\n\trecordhopper(data, function xlink_parse(val, R_n, RT) {\n\t\tif(end) return;\n\t\tswitch(RT) {\n\t\t\tcase 0x0167: /* 'BrtSupTabs' */\n\t\t\tcase 0x016B: /* 'BrtExternTableStart' */\n\t\t\tcase 0x016C: /* 'BrtExternTableEnd' */\n\t\t\tcase 0x016E: /* 'BrtExternRowHdr' */\n\t\t\tcase 0x016F: /* 'BrtExternCellBlank' */\n\t\t\tcase 0x0170: /* 'BrtExternCellReal' */\n\t\t\tcase 0x0171: /* 'BrtExternCellBool' */\n\t\t\tcase 0x0172: /* 'BrtExternCellError' */\n\t\t\tcase 0x0173: /* 'BrtExternCellString' */\n\t\t\tcase 0x01D8: /* 'BrtExternValueMeta' */\n\t\t\tcase 0x0241: /* 'BrtSupNameStart' */\n\t\t\tcase 0x0242: /* 'BrtSupNameValueStart' */\n\t\t\tcase 0x0243: /* 'BrtSupNameValueEnd' */\n\t\t\tcase 0x0244: /* 'BrtSupNameNum' */\n\t\t\tcase 0x0245: /* 'BrtSupNameErr' */\n\t\t\tcase 0x0246: /* 'BrtSupNameSt' */\n\t\t\tcase 0x0247: /* 'BrtSupNameNil' */\n\t\t\tcase 0x0248: /* 'BrtSupNameBool' */\n\t\t\tcase 0x0249: /* 'BrtSupNameFmla' */\n\t\t\tcase 0x024A: /* 'BrtSupNameBits' */\n\t\t\tcase 0x024B: /* 'BrtSupNameEnd' */\n\t\t\t\tbreak;\n\n\t\t\tcase 0x0023: /* 'BrtFRTBegin' */\n\t\t\t\tpass = true; break;\n\t\t\tcase 0x0024: /* 'BrtFRTEnd' */\n\t\t\t\tpass = false; break;\n\n\t\t\tdefault:\n\t\t\t\tif((R_n||\"\").indexOf(\"Begin\") > 0){/* empty */}\n\t\t\t\telse if((R_n||\"\").indexOf(\"End\") > 0){/* empty */}\n\t\t\t\telse if(!pass || opts.WTF) throw new Error(\"Unexpected record \" + RT.toString(16) + \" \" + R_n);\n\t\t}\n\t}, opts);\n}\nRELS.IMG = \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/image\";\nRELS.DRAW = \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/drawing\";\n/* 20.5 DrawingML - SpreadsheetML Drawing */\nfunction parse_drawing(data, rels) {\n\tif(!data) return \"??\";\n\t/*\n\t Chartsheet Drawing:\n\t - 20.5.2.35 wsDr CT_Drawing\n\t - 20.5.2.1 absoluteAnchor CT_AbsoluteAnchor\n\t - 20.5.2.16 graphicFrame CT_GraphicalObjectFrame\n\t - 20.1.2.2.16 graphic CT_GraphicalObject\n\t - 20.1.2.2.17 graphicData CT_GraphicalObjectData\n - chart reference\n\t the actual type is based on the URI of the graphicData\n\t\tTODO: handle embedded charts and other types of graphics\n\t*/\n\tvar id = (data.match(/]*r:id=\"([^\"]*)\"/)||[\"\",\"\"])[1];\n\n\treturn rels['!id'][id].Target;\n}\n\n/* L.5.5.2 SpreadsheetML Comments + VML Schema */\nvar _shapeid = 1024;\nfunction write_comments_vml(rId, comments) {\n\tvar csize = [21600, 21600];\n\t/* L.5.2.1.2 Path Attribute */\n\tvar bbox = [\"m0,0l0\",csize[1],csize[0],csize[1],csize[0],\"0xe\"].join(\",\");\n\tvar o = [\n\t\twritextag(\"xml\", null, { 'xmlns:v': XLMLNS.v, 'xmlns:o': XLMLNS.o, 'xmlns:x': XLMLNS.x, 'xmlns:mv': XLMLNS.mv }).replace(/\\/>/,\">\"),\n\t\twritextag(\"o:shapelayout\", writextag(\"o:idmap\", null, {'v:ext':\"edit\", 'data':rId}), {'v:ext':\"edit\"}),\n\t\twritextag(\"v:shapetype\", [\n\t\t\twritextag(\"v:stroke\", null, {joinstyle:\"miter\"}),\n\t\t\twritextag(\"v:path\", null, {gradientshapeok:\"t\", 'o:connecttype':\"rect\"})\n\t\t].join(\"\"), {id:\"_x0000_t202\", 'o:spt':202, coordsize:csize.join(\",\"),path:bbox})\n\t];\n\twhile(_shapeid < rId * 1000) _shapeid += 1000;\n\n\tcomments.forEach(function(x) { var c = decode_cell(x[0]);\n\to = o.concat([\n\t'',\n\t\twritextag('v:fill', writextag(\"o:fill\", null, {type:\"gradientUnscaled\", 'v:ext':\"view\"}), {'color2':\"#BEFF82\", 'angle':\"-180\", 'type':\"gradient\"}),\n\t\twritextag(\"v:shadow\", null, {on:\"t\", 'obscured':\"t\"}),\n\t\twritextag(\"v:path\", null, {'o:connecttype':\"none\"}),\n\t\t'
',\n\t\t'',\n\t\t\t'',\n\t\t\t'',\n\t\t\t/* Part 4 19.4.2.3 Anchor (Anchor) */\n\t\t\twritetag('x:Anchor', [c.c, 0, c.r, 0, c.c+3, 100, c.r+5, 100].join(\",\")),\n\t\t\twritetag('x:AutoFill', \"False\"),\n\t\t\twritetag('x:Row', String(c.r)),\n\t\t\twritetag('x:Column', String(c.c)),\n\t\t\tx[1].hidden ? '' : '',\n\t\t'',\n\t''\n\t]); });\n\to.push('');\n\treturn o.join(\"\");\n}\n\nRELS.CMNT = \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/comments\";\n\nfunction parse_comments(zip, dirComments, sheets, sheetRels, opts) {\n\tfor(var i = 0; i != dirComments.length; ++i) {\n\t\tvar canonicalpath=dirComments[i];\n\t\tvar comments=parse_cmnt(getzipdata(zip, canonicalpath.replace(/^\\//,''), true), canonicalpath, opts);\n\t\tif(!comments || !comments.length) continue;\n\t\t// find the sheets targeted by these comments\n\t\tvar sheetNames = keys(sheets);\n\t\tfor(var j = 0; j != sheetNames.length; ++j) {\n\t\t\tvar sheetName = sheetNames[j];\n\t\t\tvar rels = sheetRels[sheetName];\n\t\t\tif(rels) {\n\t\t\t\tvar rel = rels[canonicalpath];\n\t\t\t\tif(rel) insertCommentsIntoSheet(sheetName, sheets[sheetName], comments);\n\t\t\t}\n\t\t}\n\t}\n}\n\nfunction insertCommentsIntoSheet(sheetName, sheet, comments) {\n\tvar dense = Array.isArray(sheet);\n\tvar cell;\n\tcomments.forEach(function(comment) {\n\t\tvar r = decode_cell(comment.ref);\n\t\tif(dense) {\n\t\t\tif(!sheet[r.r]) sheet[r.r] = [];\n\t\t\tcell = sheet[r.r][r.c];\n\t\t} else cell = sheet[comment.ref];\n\t\tif (!cell) {\n\t\t\tcell = {};\n\t\t\tif(dense) sheet[r.r][r.c] = cell;\n\t\t\telse sheet[comment.ref] = cell;\n\t\t\tvar range = safe_decode_range(sheet[\"!ref\"]||\"BDWGO1000001:A1\");\n\t\t\tif(range.s.r > r.r) range.s.r = r.r;\n\t\t\tif(range.e.r < r.r) range.e.r = r.r;\n\t\t\tif(range.s.c > r.c) range.s.c = r.c;\n\t\t\tif(range.e.c < r.c) range.e.c = r.c;\n\t\t\tvar encoded = encode_range(range);\n\t\t\tif (encoded !== sheet[\"!ref\"]) sheet[\"!ref\"] = encoded;\n\t\t}\n\n\t\tif (!cell.c) cell.c = [];\n\t\tvar o = ({a: comment.author, t: comment.t, r: comment.r});\n\t\tif(comment.h) o.h = comment.h;\n\t\tcell.c.push(o);\n\t});\n}\n\n/* 18.7 Comments */\nfunction parse_comments_xml(data, opts) {\n\t/* 18.7.6 CT_Comments */\n\tif(data.match(/<(?:\\w+:)?comments *\\/>/)) return [];\n\tvar authors = [];\n\tvar commentList = [];\n\tvar authtag = data.match(/<(?:\\w+:)?authors>([\\s\\S]*)<\\/(?:\\w+:)?authors>/);\n\tif(authtag && authtag[1]) authtag[1].split(/<\\/\\w*:?author>/).forEach(function(x) {\n\t\tif(x === \"\" || x.trim() === \"\") return;\n\t\tvar a = x.match(/<(?:\\w+:)?author[^>]*>(.*)/);\n\t\tif(a) authors.push(a[1]);\n\t});\n\tvar cmnttag = data.match(/<(?:\\w+:)?commentList>([\\s\\S]*)<\\/(?:\\w+:)?commentList>/);\n\tif(cmnttag && cmnttag[1]) cmnttag[1].split(/<\\/\\w*:?comment>/).forEach(function(x) {\n\t\tif(x === \"\" || x.trim() === \"\") return;\n\t\tvar cm = x.match(/<(?:\\w+:)?comment[^>]*>/);\n\t\tif(!cm) return;\n\t\tvar y = parsexmltag(cm[0]);\n\t\tvar comment = ({ author: y.authorId && authors[y.authorId] || \"sheetjsghost\", ref: y.ref, guid: y.guid });\n\t\tvar cell = decode_cell(y.ref);\n\t\tif(opts.sheetRows && opts.sheetRows <= cell.r) return;\n\t\tvar textMatch = x.match(/<(?:\\w+:)?text>([\\s\\S]*)<\\/(?:\\w+:)?text>/);\n\t\tvar rt = !!textMatch && !!textMatch[1] && parse_si(textMatch[1]) || {r:\"\",t:\"\",h:\"\"};\n\t\tcomment.r = rt.r;\n\t\tif(rt.r == \"\") rt.t = rt.h = \"\";\n\t\tcomment.t = rt.t.replace(/\\r\\n/g,\"\\n\").replace(/\\r/g,\"\\n\");\n\t\tif(opts.cellHTML) comment.h = rt.h;\n\t\tcommentList.push(comment);\n\t});\n\treturn commentList;\n}\n\nvar CMNT_XML_ROOT = writextag('comments', null, { 'xmlns': XMLNS.main[0] });\nfunction write_comments_xml(data) {\n\tvar o = [XML_HEADER, CMNT_XML_ROOT];\n\n\tvar iauthor = [];\n\to.push(\"\");\n\tdata.forEach(function(x) { x[1].forEach(function(w) { var a = escapexml(w.a);\n\t\tif(iauthor.indexOf(a) > -1) return;\n\t\tiauthor.push(a);\n\t\to.push(\"\" + a + \"\");\n\t}); });\n\to.push(\"\");\n\to.push(\"\");\n\tdata.forEach(function(d) {\n\t\td[1].forEach(function(c) {\n\t\t\t/* 18.7.3 CT_Comment */\n\t\t\to.push('');\n\t\t\to.push(writetag(\"t\", c.t == null ? \"\" : escapexml(c.t)));\n\t\t\to.push('');\n\t\t});\n\t});\n\to.push(\"\");\n\tif(o.length>2) { o[o.length] = (''); o[1]=o[1].replace(\"/>\",\">\"); }\n\treturn o.join(\"\");\n}\n/* [MS-XLSB] 2.4.28 BrtBeginComment */\nfunction parse_BrtBeginComment(data) {\n\tvar out = {};\n\tout.iauthor = data.read_shift(4);\n\tvar rfx = parse_UncheckedRfX(data, 16);\n\tout.rfx = rfx.s;\n\tout.ref = encode_cell(rfx.s);\n\tdata.l += 16; /*var guid = parse_GUID(data); */\n\treturn out;\n}\nfunction write_BrtBeginComment(data, o) {\n\tif(o == null) o = new_buf(36);\n\to.write_shift(4, data[1].iauthor);\n\twrite_UncheckedRfX((data[0]), o);\n\to.write_shift(4, 0);\n\to.write_shift(4, 0);\n\to.write_shift(4, 0);\n\to.write_shift(4, 0);\n\treturn o;\n}\n\n/* [MS-XLSB] 2.4.327 BrtCommentAuthor */\nvar parse_BrtCommentAuthor = parse_XLWideString;\nfunction write_BrtCommentAuthor(data) { return write_XLWideString(data.slice(0, 54)); }\n\n/* [MS-XLSB] 2.1.7.8 Comments */\nfunction parse_comments_bin(data, opts) {\n\tvar out = [];\n\tvar authors = [];\n\tvar c = {};\n\tvar pass = false;\n\trecordhopper(data, function hopper_cmnt(val, R_n, RT) {\n\t\tswitch(RT) {\n\t\t\tcase 0x0278: /* 'BrtCommentAuthor' */\n\t\t\t\tauthors.push(val); break;\n\t\t\tcase 0x027B: /* 'BrtBeginComment' */\n\t\t\t\tc = val; break;\n\t\t\tcase 0x027D: /* 'BrtCommentText' */\n\t\t\t\tc.t = val.t; c.h = val.h; c.r = val.r; break;\n\t\t\tcase 0x027C: /* 'BrtEndComment' */\n\t\t\t\tc.author = authors[c.iauthor];\n\t\t\t\tdelete c.iauthor;\n\t\t\t\tif(opts.sheetRows && opts.sheetRows <= c.rfx.r) break;\n\t\t\t\tif(!c.t) c.t = \"\";\n\t\t\t\tdelete c.rfx; out.push(c); break;\n\n\t\t\tcase 0x0C00: /* 'BrtUid' */\n\t\t\t\tbreak;\n\n\t\t\tcase 0x0023: /* 'BrtFRTBegin' */\n\t\t\t\tpass = true; break;\n\t\t\tcase 0x0024: /* 'BrtFRTEnd' */\n\t\t\t\tpass = false; break;\n\t\t\tcase 0x0025: /* 'BrtACBegin' */ break;\n\t\t\tcase 0x0026: /* 'BrtACEnd' */ break;\n\n\n\t\t\tdefault:\n\t\t\t\tif((R_n||\"\").indexOf(\"Begin\") > 0){/* empty */}\n\t\t\t\telse if((R_n||\"\").indexOf(\"End\") > 0){/* empty */}\n\t\t\t\telse if(!pass || opts.WTF) throw new Error(\"Unexpected record \" + RT + \" \" + R_n);\n\t\t}\n\t});\n\treturn out;\n}\n\nfunction write_comments_bin(data) {\n\tvar ba = buf_array();\n\tvar iauthor = [];\n\twrite_record(ba, \"BrtBeginComments\");\n\n\twrite_record(ba, \"BrtBeginCommentAuthors\");\n\tdata.forEach(function(comment) {\n\t\tcomment[1].forEach(function(c) {\n\t\t\tif(iauthor.indexOf(c.a) > -1) return;\n\t\t\tiauthor.push(c.a.slice(0,54));\n\t\t\twrite_record(ba, \"BrtCommentAuthor\", write_BrtCommentAuthor(c.a));\n\t\t});\n\t});\n\twrite_record(ba, \"BrtEndCommentAuthors\");\n\n\twrite_record(ba, \"BrtBeginCommentList\");\n\tdata.forEach(function(comment) {\n\t\tcomment[1].forEach(function(c) {\n\t\t\tc.iauthor = iauthor.indexOf(c.a);\n\t\t\tvar range = {s:decode_cell(comment[0]),e:decode_cell(comment[0])};\n\t\t\twrite_record(ba, \"BrtBeginComment\", write_BrtBeginComment([range, c]));\n\t\t\tif(c.t && c.t.length > 0) write_record(ba, \"BrtCommentText\", write_BrtCommentText(c));\n\t\t\twrite_record(ba, \"BrtEndComment\");\n\t\t\tdelete c.iauthor;\n\t\t});\n\t});\n\twrite_record(ba, \"BrtEndCommentList\");\n\n\twrite_record(ba, \"BrtEndComments\");\n\treturn ba.end();\n}\nvar CT_VBA = \"application/vnd.ms-office.vbaProject\";\nfunction make_vba_xls(cfb) {\n\tvar newcfb = CFB.utils.cfb_new({root:\"R\"});\n\tcfb.FullPaths.forEach(function(p, i) {\n\t\tif(p.slice(-1) === \"/\" || !p.match(/_VBA_PROJECT_CUR/)) return;\n\t\tvar newpath = p.replace(/^[^\\/]*/,\"R\").replace(/\\/_VBA_PROJECT_CUR\\u0000*/, \"\");\n\t\tCFB.utils.cfb_add(newcfb, newpath, cfb.FileIndex[i].content);\n\t});\n\treturn CFB.write(newcfb);\n}\n\nfunction fill_vba_xls(cfb, vba) {\n\tvba.FullPaths.forEach(function(p, i) {\n\t\tif(i == 0) return;\n\t\tvar newpath = p.replace(/[^\\/]*[\\/]/, \"/_VBA_PROJECT_CUR/\");\n\t\tif(newpath.slice(-1) !== \"/\") CFB.utils.cfb_add(cfb, newpath, vba.FileIndex[i].content);\n\t});\n}\n\nvar VBAFMTS = [ \"xlsb\", \"xlsm\", \"xlam\", \"biff8\", \"xla\" ];\n\nRELS.DS = \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/dialogsheet\";\nRELS.MS = \"http://schemas.microsoft.com/office/2006/relationships/xlMacrosheet\";\n\n/* macro and dialog sheet stubs */\nfunction parse_ds_bin() { return {'!type':'dialog'}; }\nfunction parse_ds_xml() { return {'!type':'dialog'}; }\nfunction parse_ms_bin() { return {'!type':'macro'}; }\nfunction parse_ms_xml() { return {'!type':'macro'}; }\n/* TODO: it will be useful to parse the function str */\nvar rc_to_a1 = (function(){\n\tvar rcregex = /(^|[^A-Za-z])R(\\[?)(-?\\d+|)\\]?C(\\[?)(-?\\d+|)\\]?/g;\n\tvar rcbase = ({r:0,c:0});\n\tfunction rcfunc($$,$1,$2,$3,$4,$5) {\n\t\tvar R = $3.length>0?parseInt($3,10)|0:0, C = $5.length>0?parseInt($5,10)|0:0;\n\t\tif(C<0 && $4.length === 0) C=0;\n\t\tvar cRel = false, rRel = false;\n\t\tif($4.length > 0 || $5.length == 0) cRel = true; if(cRel) C += rcbase.c; else --C;\n\t\tif($2.length > 0 || $3.length == 0) rRel = true; if(rRel) R += rcbase.r; else --R;\n\t\treturn $1 + (cRel ? \"\" : \"$\") + encode_col(C) + (rRel ? \"\" : \"$\") + encode_row(R);\n\t}\n\treturn function rc_to_a1(fstr, base) {\n\t\trcbase = base;\n\t\treturn fstr.replace(rcregex, rcfunc);\n\t};\n})();\n\nvar crefregex = /(^|[^._A-Z0-9])([$]?)([A-Z]{1,2}|[A-W][A-Z]{2}|X[A-E][A-Z]|XF[A-D])([$]?)([1-9]\\d{0,5}|10[0-3]\\d{4}|104[0-7]\\d{3}|1048[0-4]\\d{2}|10485[0-6]\\d|104857[0-6])(?![_.\\(A-Za-z0-9])/g;\nvar a1_to_rc =(function(){\n\treturn function a1_to_rc(fstr, base) {\n\t\treturn fstr.replace(crefregex, function($0, $1, $2, $3, $4, $5) {\n\t\t\tvar c = decode_col($3) - ($2 ? 0 : base.c);\n\t\t\tvar r = decode_row($5) - ($4 ? 0 : base.r);\n\t\t\tvar R = (r == 0 ? \"\" : !$4 ? \"[\" + r + \"]\" : (r+1));\n\t\t\tvar C = (c == 0 ? \"\" : !$2 ? \"[\" + c + \"]\" : (c+1));\n\t\t\treturn $1 + \"R\" + R + \"C\" + C;\n\t\t});\n\t};\n})();\n\n/* no defined name can collide with a valid cell address A1:XFD1048576 ... except LOG10! */\nfunction shift_formula_str(f, delta) {\n\treturn f.replace(crefregex, function($0, $1, $2, $3, $4, $5) {\n\t\treturn $1+($2==\"$\" ? $2+$3 : encode_col(decode_col($3)+delta.c))+($4==\"$\" ? $4+$5 : encode_row(decode_row($5) + delta.r));\n\t});\n}\n\nfunction shift_formula_xlsx(f, range, cell) {\n\tvar r = decode_range(range), s = r.s, c = decode_cell(cell);\n\tvar delta = {r:c.r - s.r, c:c.c - s.c};\n\treturn shift_formula_str(f, delta);\n}\n\n/* TODO: parse formula */\nfunction fuzzyfmla(f) {\n\tif(f.length == 1) return false;\n\treturn true;\n}\n\nfunction _xlfn(f) {\n\treturn f.replace(/_xlfn\\./g,\"\");\n}\nfunction parseread1(blob) { blob.l+=1; return; }\n\n/* [MS-XLS] 2.5.51 */\nfunction parse_ColRelU(blob, length) {\n\tvar c = blob.read_shift(length == 1 ? 1 : 2);\n\treturn [c & 0x3FFF, (c >> 14) & 1, (c >> 15) & 1];\n}\n\n/* [MS-XLS] 2.5.198.105 ; [MS-XLSB] 2.5.97.89 */\nfunction parse_RgceArea(blob, length, opts) {\n\tvar w = 2;\n\tif(opts) {\n\t\tif(opts.biff >= 2 && opts.biff <= 5) return parse_RgceArea_BIFF2(blob, length, opts);\n\t\telse if(opts.biff == 12) w = 4;\n\t}\n\tvar r=blob.read_shift(w), R=blob.read_shift(w);\n\tvar c=parse_ColRelU(blob, 2);\n\tvar C=parse_ColRelU(blob, 2);\n\treturn { s:{r:r, c:c[0], cRel:c[1], rRel:c[2]}, e:{r:R, c:C[0], cRel:C[1], rRel:C[2]} };\n}\n/* BIFF 2-5 encodes flags in the row field */\nfunction parse_RgceArea_BIFF2(blob) {\n\tvar r=parse_ColRelU(blob, 2), R=parse_ColRelU(blob, 2);\n\tvar c=blob.read_shift(1);\n\tvar C=blob.read_shift(1);\n\treturn { s:{r:r[0], c:c, cRel:r[1], rRel:r[2]}, e:{r:R[0], c:C, cRel:R[1], rRel:R[2]} };\n}\n\n/* [MS-XLS] 2.5.198.105 ; [MS-XLSB] 2.5.97.90 */\nfunction parse_RgceAreaRel(blob, length, opts) {\n\tif(opts.biff < 8) return parse_RgceArea_BIFF2(blob, length, opts);\n\tvar r=blob.read_shift(opts.biff == 12 ? 4 : 2), R=blob.read_shift(opts.biff == 12 ? 4 : 2);\n\tvar c=parse_ColRelU(blob, 2);\n\tvar C=parse_ColRelU(blob, 2);\n\treturn { s:{r:r, c:c[0], cRel:c[1], rRel:c[2]}, e:{r:R, c:C[0], cRel:C[1], rRel:C[2]} };\n}\n\n/* [MS-XLS] 2.5.198.109 ; [MS-XLSB] 2.5.97.91 */\nfunction parse_RgceLoc(blob, length, opts) {\n\tif(opts && opts.biff >= 2 && opts.biff <= 5) return parse_RgceLoc_BIFF2(blob, length, opts);\n\tvar r = blob.read_shift(opts && opts.biff == 12 ? 4 : 2);\n\tvar c = parse_ColRelU(blob, 2);\n\treturn {r:r, c:c[0], cRel:c[1], rRel:c[2]};\n}\nfunction parse_RgceLoc_BIFF2(blob) {\n\tvar r = parse_ColRelU(blob, 2);\n\tvar c = blob.read_shift(1);\n\treturn {r:r[0], c:c, cRel:r[1], rRel:r[2]};\n}\n\n/* [MS-XLS] 2.5.198.107, 2.5.47 */\nfunction parse_RgceElfLoc(blob) {\n\tvar r = blob.read_shift(2);\n\tvar c = blob.read_shift(2);\n\treturn {r:r, c:c & 0xFF, fQuoted:!!(c & 0x4000), cRel:c>>15, rRel:c>>15 };\n}\n\n/* [MS-XLS] 2.5.198.111 ; [MS-XLSB] 2.5.97.92 TODO */\nfunction parse_RgceLocRel(blob, length, opts) {\n\tvar biff = opts && opts.biff ? opts.biff : 8;\n\tif(biff >= 2 && biff <= 5) return parse_RgceLocRel_BIFF2(blob, length, opts);\n\tvar r = blob.read_shift(biff >= 12 ? 4 : 2);\n\tvar cl = blob.read_shift(2);\n\tvar cRel = (cl & 0x4000) >> 14, rRel = (cl & 0x8000) >> 15;\n\tcl &= 0x3FFF;\n\tif(rRel == 1) while(r > 0x7FFFF) r -= 0x100000;\n\tif(cRel == 1) while(cl > 0x1FFF) cl = cl - 0x4000;\n\treturn {r:r,c:cl,cRel:cRel,rRel:rRel};\n}\nfunction parse_RgceLocRel_BIFF2(blob) {\n\tvar rl = blob.read_shift(2);\n\tvar c = blob.read_shift(1);\n\tvar rRel = (rl & 0x8000) >> 15, cRel = (rl & 0x4000) >> 14;\n\trl &= 0x3FFF;\n\tif(rRel == 1 && rl >= 0x2000) rl = rl - 0x4000;\n\tif(cRel == 1 && c >= 0x80) c = c - 0x100;\n\treturn {r:rl,c:c,cRel:cRel,rRel:rRel};\n}\n\n/* [MS-XLS] 2.5.198.27 ; [MS-XLSB] 2.5.97.18 */\nfunction parse_PtgArea(blob, length, opts) {\n\tvar type = (blob[blob.l++] & 0x60) >> 5;\n\tvar area = parse_RgceArea(blob, opts.biff >= 2 && opts.biff <= 5 ? 6 : 8, opts);\n\treturn [type, area];\n}\n\n/* [MS-XLS] 2.5.198.28 ; [MS-XLSB] 2.5.97.19 */\nfunction parse_PtgArea3d(blob, length, opts) {\n\tvar type = (blob[blob.l++] & 0x60) >> 5;\n\tvar ixti = blob.read_shift(2, 'i');\n\tvar w = 8;\n\tif(opts) switch(opts.biff) {\n\t\tcase 5: blob.l += 12; w = 6; break;\n\t\tcase 12: w = 12; break;\n\t}\n\tvar area = parse_RgceArea(blob, w, opts);\n\treturn [type, ixti, area];\n}\n\n/* [MS-XLS] 2.5.198.29 ; [MS-XLSB] 2.5.97.20 */\nfunction parse_PtgAreaErr(blob, length, opts) {\n\tvar type = (blob[blob.l++] & 0x60) >> 5;\n\tblob.l += opts && (opts.biff > 8) ? 12 : (opts.biff < 8 ? 6 : 8);\n\treturn [type];\n}\n/* [MS-XLS] 2.5.198.30 ; [MS-XLSB] 2.5.97.21 */\nfunction parse_PtgAreaErr3d(blob, length, opts) {\n\tvar type = (blob[blob.l++] & 0x60) >> 5;\n\tvar ixti = blob.read_shift(2);\n\tvar w = 8;\n\tif(opts) switch(opts.biff) {\n\t\tcase 5: blob.l += 12; w = 6; break;\n\t\tcase 12: w = 12; break;\n\t}\n\tblob.l += w;\n\treturn [type, ixti];\n}\n\n/* [MS-XLS] 2.5.198.31 ; [MS-XLSB] 2.5.97.22 */\nfunction parse_PtgAreaN(blob, length, opts) {\n\tvar type = (blob[blob.l++] & 0x60) >> 5;\n\tvar area = parse_RgceAreaRel(blob, length - 1, opts);\n\treturn [type, area];\n}\n\n/* [MS-XLS] 2.5.198.32 ; [MS-XLSB] 2.5.97.23 */\nfunction parse_PtgArray(blob, length, opts) {\n\tvar type = (blob[blob.l++] & 0x60) >> 5;\n\tblob.l += opts.biff == 2 ? 6 : opts.biff == 12 ? 14 : 7;\n\treturn [type];\n}\n\n/* [MS-XLS] 2.5.198.33 ; [MS-XLSB] 2.5.97.24 */\nfunction parse_PtgAttrBaxcel(blob) {\n\tvar bitSemi = blob[blob.l+1] & 0x01; /* 1 = volatile */\n\tvar bitBaxcel = 1;\n\tblob.l += 4;\n\treturn [bitSemi, bitBaxcel];\n}\n\n/* [MS-XLS] 2.5.198.34 ; [MS-XLSB] 2.5.97.25 */\nfunction parse_PtgAttrChoose(blob, length, opts) {\n\tblob.l +=2;\n\tvar offset = blob.read_shift(opts && opts.biff == 2 ? 1 : 2);\n\tvar o = [];\n\t/* offset is 1 less than the number of elements */\n\tfor(var i = 0; i <= offset; ++i) o.push(blob.read_shift(opts && opts.biff == 2 ? 1 : 2));\n\treturn o;\n}\n\n/* [MS-XLS] 2.5.198.35 ; [MS-XLSB] 2.5.97.26 */\nfunction parse_PtgAttrGoto(blob, length, opts) {\n\tvar bitGoto = (blob[blob.l+1] & 0xFF) ? 1 : 0;\n\tblob.l += 2;\n\treturn [bitGoto, blob.read_shift(opts && opts.biff == 2 ? 1 : 2)];\n}\n\n/* [MS-XLS] 2.5.198.36 ; [MS-XLSB] 2.5.97.27 */\nfunction parse_PtgAttrIf(blob, length, opts) {\n\tvar bitIf = (blob[blob.l+1] & 0xFF) ? 1 : 0;\n\tblob.l += 2;\n\treturn [bitIf, blob.read_shift(opts && opts.biff == 2 ? 1 : 2)];\n}\n\n/* [MS-XLSB] 2.5.97.28 */\nfunction parse_PtgAttrIfError(blob) {\n\tvar bitIf = (blob[blob.l+1] & 0xFF) ? 1 : 0;\n\tblob.l += 2;\n\treturn [bitIf, blob.read_shift(2)];\n}\n\n/* [MS-XLS] 2.5.198.37 ; [MS-XLSB] 2.5.97.29 */\nfunction parse_PtgAttrSemi(blob, length, opts) {\n\tvar bitSemi = (blob[blob.l+1] & 0xFF) ? 1 : 0;\n\tblob.l += opts && opts.biff == 2 ? 3 : 4;\n\treturn [bitSemi];\n}\n\n/* [MS-XLS] 2.5.198.40 ; [MS-XLSB] 2.5.97.32 */\nfunction parse_PtgAttrSpaceType(blob) {\n\tvar type = blob.read_shift(1), cch = blob.read_shift(1);\n\treturn [type, cch];\n}\n\n/* [MS-XLS] 2.5.198.38 ; [MS-XLSB] 2.5.97.30 */\nfunction parse_PtgAttrSpace(blob) {\n\tblob.read_shift(2);\n\treturn parse_PtgAttrSpaceType(blob, 2);\n}\n\n/* [MS-XLS] 2.5.198.39 ; [MS-XLSB] 2.5.97.31 */\nfunction parse_PtgAttrSpaceSemi(blob) {\n\tblob.read_shift(2);\n\treturn parse_PtgAttrSpaceType(blob, 2);\n}\n\n/* [MS-XLS] 2.5.198.84 ; [MS-XLSB] 2.5.97.68 TODO */\nfunction parse_PtgRef(blob, length, opts) {\n\t//var ptg = blob[blob.l] & 0x1F;\n\tvar type = (blob[blob.l] & 0x60)>>5;\n\tblob.l += 1;\n\tvar loc = parse_RgceLoc(blob, 0, opts);\n\treturn [type, loc];\n}\n\n/* [MS-XLS] 2.5.198.88 ; [MS-XLSB] 2.5.97.72 TODO */\nfunction parse_PtgRefN(blob, length, opts) {\n\tvar type = (blob[blob.l] & 0x60)>>5;\n\tblob.l += 1;\n\tvar loc = parse_RgceLocRel(blob, 0, opts);\n\treturn [type, loc];\n}\n\n/* [MS-XLS] 2.5.198.85 ; [MS-XLSB] 2.5.97.69 TODO */\nfunction parse_PtgRef3d(blob, length, opts) {\n\tvar type = (blob[blob.l] & 0x60)>>5;\n\tblob.l += 1;\n\tvar ixti = blob.read_shift(2); // XtiIndex\n\tif(opts && opts.biff == 5) blob.l += 12;\n\tvar loc = parse_RgceLoc(blob, 0, opts); // TODO: or RgceLocRel\n\treturn [type, ixti, loc];\n}\n\n\n/* [MS-XLS] 2.5.198.62 ; [MS-XLSB] 2.5.97.45 TODO */\nfunction parse_PtgFunc(blob, length, opts) {\n\t//var ptg = blob[blob.l] & 0x1F;\n\tvar type = (blob[blob.l] & 0x60)>>5;\n\tblob.l += 1;\n\tvar iftab = blob.read_shift(opts && opts.biff <= 3 ? 1 : 2);\n\treturn [FtabArgc[iftab], Ftab[iftab], type];\n}\n/* [MS-XLS] 2.5.198.63 ; [MS-XLSB] 2.5.97.46 TODO */\nfunction parse_PtgFuncVar(blob, length, opts) {\n\tvar type = blob[blob.l++];\n\tvar cparams = blob.read_shift(1), tab = opts && opts.biff <= 3 ? [(type == 0x58 ? -1 : 0), blob.read_shift(1)]: parsetab(blob);\n\treturn [cparams, (tab[0] === 0 ? Ftab : Cetab)[tab[1]]];\n}\n\nfunction parsetab(blob) {\n\treturn [blob[blob.l+1]>>7, blob.read_shift(2) & 0x7FFF];\n}\n\n/* [MS-XLS] 2.5.198.41 ; [MS-XLSB] 2.5.97.33 */\nfunction parse_PtgAttrSum(blob, length, opts) {\n\tblob.l += opts && opts.biff == 2 ? 3 : 4; return;\n}\n\n/* [MS-XLS] 2.5.198.58 ; [MS-XLSB] 2.5.97.40 */\nfunction parse_PtgExp(blob, length, opts) {\n\tblob.l++;\n\tif(opts && opts.biff == 12) return [blob.read_shift(4, 'i'), 0];\n\tvar row = blob.read_shift(2);\n\tvar col = blob.read_shift(opts && opts.biff == 2 ? 1 : 2);\n\treturn [row, col];\n}\n\n/* [MS-XLS] 2.5.198.57 ; [MS-XLSB] 2.5.97.39 */\nfunction parse_PtgErr(blob) { blob.l++; return BErr[blob.read_shift(1)]; }\n\n/* [MS-XLS] 2.5.198.66 ; [MS-XLSB] 2.5.97.49 */\nfunction parse_PtgInt(blob) { blob.l++; return blob.read_shift(2); }\n\n/* [MS-XLS] 2.5.198.42 ; [MS-XLSB] 2.5.97.34 */\nfunction parse_PtgBool(blob) { blob.l++; return blob.read_shift(1)!==0;}\n\n/* [MS-XLS] 2.5.198.79 ; [MS-XLSB] 2.5.97.63 */\nfunction parse_PtgNum(blob) { blob.l++; return parse_Xnum(blob, 8); }\n\n/* [MS-XLS] 2.5.198.89 ; [MS-XLSB] 2.5.97.74 */\nfunction parse_PtgStr(blob, length, opts) { blob.l++; return parse_ShortXLUnicodeString(blob, length-1, opts); }\n\n/* [MS-XLS] 2.5.192.112 + 2.5.192.11{3,4,5,6,7} */\n/* [MS-XLSB] 2.5.97.93 + 2.5.97.9{4,5,6,7} */\nfunction parse_SerAr(blob, biff) {\n\tvar val = [blob.read_shift(1)];\n\tif(biff == 12) switch(val[0]) {\n\t\tcase 0x02: val[0] = 0x04; break; /* SerBool */\n\t\tcase 0x04: val[0] = 0x10; break; /* SerErr */\n\t\tcase 0x00: val[0] = 0x01; break; /* SerNum */\n\t\tcase 0x01: val[0] = 0x02; break; /* SerStr */\n\t}\n\tswitch(val[0]) {\n\t\tcase 0x04: /* SerBool -- boolean */\n\t\t\tval[1] = parsebool(blob, 1) ? 'TRUE' : 'FALSE';\n\t\t\tif(biff != 12) blob.l += 7; break;\n\t\tcase 0x25: /* appears to be an alias */\n\t\tcase 0x10: /* SerErr -- error */\n\t\t\tval[1] = BErr[blob[blob.l]];\n\t\t\tblob.l += ((biff == 12) ? 4 : 8); break;\n\t\tcase 0x00: /* SerNil -- honestly, I'm not sure how to reproduce this */\n\t\t\tblob.l += 8; break;\n\t\tcase 0x01: /* SerNum -- Xnum */\n\t\t\tval[1] = parse_Xnum(blob, 8); break;\n\t\tcase 0x02: /* SerStr -- XLUnicodeString (<256 chars) */\n\t\t\tval[1] = parse_XLUnicodeString2(blob, 0, {biff:biff > 0 && biff < 8 ? 2 : biff}); break;\n\t\tdefault: throw new Error(\"Bad SerAr: \" + val[0]); /* Unreachable */\n\t}\n\treturn val;\n}\n\n/* [MS-XLS] 2.5.198.61 ; [MS-XLSB] 2.5.97.44 */\nfunction parse_PtgExtraMem(blob, cce, opts) {\n\tvar count = blob.read_shift((opts.biff == 12) ? 4 : 2);\n\tvar out = [];\n\tfor(var i = 0; i != count; ++i) out.push(((opts.biff == 12) ? parse_UncheckedRfX : parse_Ref8U)(blob, 8));\n\treturn out;\n}\n\n/* [MS-XLS] 2.5.198.59 ; [MS-XLSB] 2.5.97.41 */\nfunction parse_PtgExtraArray(blob, length, opts) {\n\tvar rows = 0, cols = 0;\n\tif(opts.biff == 12) {\n\t\trows = blob.read_shift(4); // DRw\n\t\tcols = blob.read_shift(4); // DCol\n\t} else {\n\t\tcols = 1 + blob.read_shift(1); //DColByteU\n\t\trows = 1 + blob.read_shift(2); //DRw\n\t}\n\tif(opts.biff >= 2 && opts.biff < 8) { --rows; if(--cols == 0) cols = 0x100; }\n\t// $FlowIgnore\n\tfor(var i = 0, o = []; i != rows && (o[i] = []); ++i)\n\t\tfor(var j = 0; j != cols; ++j) o[i][j] = parse_SerAr(blob, opts.biff);\n\treturn o;\n}\n\n/* [MS-XLS] 2.5.198.76 ; [MS-XLSB] 2.5.97.60 */\nfunction parse_PtgName(blob, length, opts) {\n\tvar type = (blob.read_shift(1) >>> 5) & 0x03;\n\tvar w = (!opts || (opts.biff >= 8)) ? 4 : 2;\n\tvar nameindex = blob.read_shift(w);\n\tswitch(opts.biff) {\n\t\tcase 2: blob.l += 5; break;\n\t\tcase 3: case 4: blob.l += 8; break;\n\t\tcase 5: blob.l += 12; break;\n\t}\n\treturn [type, 0, nameindex];\n}\n\n/* [MS-XLS] 2.5.198.77 ; [MS-XLSB] 2.5.97.61 */\nfunction parse_PtgNameX(blob, length, opts) {\n\tif(opts.biff == 5) return parse_PtgNameX_BIFF5(blob, length, opts);\n\tvar type = (blob.read_shift(1) >>> 5) & 0x03;\n\tvar ixti = blob.read_shift(2); // XtiIndex\n\tvar nameindex = blob.read_shift(4);\n\treturn [type, ixti, nameindex];\n}\nfunction parse_PtgNameX_BIFF5(blob) {\n\tvar type = (blob.read_shift(1) >>> 5) & 0x03;\n\tvar ixti = blob.read_shift(2, 'i'); // XtiIndex\n\tblob.l += 8;\n\tvar nameindex = blob.read_shift(2);\n\tblob.l += 12;\n\treturn [type, ixti, nameindex];\n}\n\n/* [MS-XLS] 2.5.198.70 ; [MS-XLSB] 2.5.97.54 */\nfunction parse_PtgMemArea(blob, length, opts) {\n\tvar type = (blob.read_shift(1) >>> 5) & 0x03;\n\tblob.l += (opts && opts.biff == 2 ? 3 : 4);\n\tvar cce = blob.read_shift(opts && opts.biff == 2 ? 1 : 2);\n\treturn [type, cce];\n}\n\n/* [MS-XLS] 2.5.198.72 ; [MS-XLSB] 2.5.97.56 */\nfunction parse_PtgMemFunc(blob, length, opts) {\n\tvar type = (blob.read_shift(1) >>> 5) & 0x03;\n\tvar cce = blob.read_shift(opts && opts.biff == 2 ? 1 : 2);\n\treturn [type, cce];\n}\n\n\n/* [MS-XLS] 2.5.198.86 ; [MS-XLSB] 2.5.97.69 */\nfunction parse_PtgRefErr(blob, length, opts) {\n\tvar type = (blob.read_shift(1) >>> 5) & 0x03;\n\tblob.l += 4;\n\tif(opts.biff < 8) blob.l--;\n\tif(opts.biff == 12) blob.l += 2;\n\treturn [type];\n}\n\n/* [MS-XLS] 2.5.198.87 ; [MS-XLSB] 2.5.97.71 */\nfunction parse_PtgRefErr3d(blob, length, opts) {\n\tvar type = (blob[blob.l++] & 0x60) >> 5;\n\tvar ixti = blob.read_shift(2);\n\tvar w = 4;\n\tif(opts) switch(opts.biff) {\n\t\tcase 5: w = 15; break;\n\t\tcase 12: w = 6; break;\n\t}\n\tblob.l += w;\n\treturn [type, ixti];\n}\n\n/* [MS-XLS] 2.5.198.71 ; [MS-XLSB] 2.5.97.55 */\nvar parse_PtgMemErr = parsenoop;\n/* [MS-XLS] 2.5.198.73 ; [MS-XLSB] 2.5.97.57 */\nvar parse_PtgMemNoMem = parsenoop;\n/* [MS-XLS] 2.5.198.92 */\nvar parse_PtgTbl = parsenoop;\n\nfunction parse_PtgElfLoc(blob, length, opts) {\n\tblob.l += 2;\n\treturn [parse_RgceElfLoc(blob, 4, opts)];\n}\nfunction parse_PtgElfNoop(blob) {\n\tblob.l += 6;\n\treturn [];\n}\n/* [MS-XLS] 2.5.198.46 */\nvar parse_PtgElfCol = parse_PtgElfLoc;\n/* [MS-XLS] 2.5.198.47 */\nvar parse_PtgElfColS = parse_PtgElfNoop;\n/* [MS-XLS] 2.5.198.48 */\nvar parse_PtgElfColSV = parse_PtgElfNoop;\n/* [MS-XLS] 2.5.198.49 */\nvar parse_PtgElfColV = parse_PtgElfLoc;\n/* [MS-XLS] 2.5.198.50 */\nfunction parse_PtgElfLel(blob) {\n\tblob.l += 2;\n\treturn [parseuint16(blob), blob.read_shift(2) & 0x01];\n}\n/* [MS-XLS] 2.5.198.51 */\nvar parse_PtgElfRadical = parse_PtgElfLoc;\n/* [MS-XLS] 2.5.198.52 */\nvar parse_PtgElfRadicalLel = parse_PtgElfLel;\n/* [MS-XLS] 2.5.198.53 */\nvar parse_PtgElfRadicalS = parse_PtgElfNoop;\n/* [MS-XLS] 2.5.198.54 */\nvar parse_PtgElfRw = parse_PtgElfLoc;\n/* [MS-XLS] 2.5.198.55 */\nvar parse_PtgElfRwV = parse_PtgElfLoc;\n\n/* [MS-XLSB] 2.5.97.52 TODO */\nvar PtgListRT = [\n\t\"Data\",\n\t\"All\",\n\t\"Headers\",\n\t\"??\",\n\t\"?Data2\",\n\t\"??\",\n\t\"?DataHeaders\",\n\t\"??\",\n\t\"Totals\",\n\t\"??\",\n\t\"??\",\n\t\"??\",\n\t\"?DataTotals\",\n\t\"??\",\n\t\"??\",\n\t\"??\",\n\t\"?Current\"\n];\nfunction parse_PtgList(blob) {\n\tblob.l += 2;\n\tvar ixti = blob.read_shift(2);\n\tvar flags = blob.read_shift(2);\n\tvar idx = blob.read_shift(4);\n\tvar c = blob.read_shift(2);\n\tvar C = blob.read_shift(2);\n\tvar rt = PtgListRT[(flags >> 2) & 0x1F];\n\treturn {ixti: ixti, coltype:(flags&0x3), rt:rt, idx:idx, c:c, C:C};\n}\n/* [MS-XLS] 2.5.198.91 ; [MS-XLSB] 2.5.97.76 */\nfunction parse_PtgSxName(blob) {\n\tblob.l += 2;\n\treturn [blob.read_shift(4)];\n}\n\n/* [XLS] old spec */\nfunction parse_PtgSheet(blob, length, opts) {\n\tblob.l += 5;\n\tblob.l += 2;\n\tblob.l += (opts.biff == 2 ? 1 : 4);\n\treturn [\"PTGSHEET\"];\n}\nfunction parse_PtgEndSheet(blob, length, opts) {\n\tblob.l += (opts.biff == 2 ? 4 : 5);\n\treturn [\"PTGENDSHEET\"];\n}\nfunction parse_PtgMemAreaN(blob) {\n\tvar type = (blob.read_shift(1) >>> 5) & 0x03;\n\tvar cce = blob.read_shift(2);\n\treturn [type, cce];\n}\nfunction parse_PtgMemNoMemN(blob) {\n\tvar type = (blob.read_shift(1) >>> 5) & 0x03;\n\tvar cce = blob.read_shift(2);\n\treturn [type, cce];\n}\nfunction parse_PtgAttrNoop(blob) {\n\tblob.l += 4;\n\treturn [0, 0];\n}\n\n/* [MS-XLS] 2.5.198.25 ; [MS-XLSB] 2.5.97.16 */\nvar PtgTypes = {\n0x01: { n:'PtgExp', f:parse_PtgExp },\n0x02: { n:'PtgTbl', f:parse_PtgTbl },\n0x03: { n:'PtgAdd', f:parseread1 },\n0x04: { n:'PtgSub', f:parseread1 },\n0x05: { n:'PtgMul', f:parseread1 },\n0x06: { n:'PtgDiv', f:parseread1 },\n0x07: { n:'PtgPower', f:parseread1 },\n0x08: { n:'PtgConcat', f:parseread1 },\n0x09: { n:'PtgLt', f:parseread1 },\n0x0A: { n:'PtgLe', f:parseread1 },\n0x0B: { n:'PtgEq', f:parseread1 },\n0x0C: { n:'PtgGe', f:parseread1 },\n0x0D: { n:'PtgGt', f:parseread1 },\n0x0E: { n:'PtgNe', f:parseread1 },\n0x0F: { n:'PtgIsect', f:parseread1 },\n0x10: { n:'PtgUnion', f:parseread1 },\n0x11: { n:'PtgRange', f:parseread1 },\n0x12: { n:'PtgUplus', f:parseread1 },\n0x13: { n:'PtgUminus', f:parseread1 },\n0x14: { n:'PtgPercent', f:parseread1 },\n0x15: { n:'PtgParen', f:parseread1 },\n0x16: { n:'PtgMissArg', f:parseread1 },\n0x17: { n:'PtgStr', f:parse_PtgStr },\n0x1A: { n:'PtgSheet', f:parse_PtgSheet },\n0x1B: { n:'PtgEndSheet', f:parse_PtgEndSheet },\n0x1C: { n:'PtgErr', f:parse_PtgErr },\n0x1D: { n:'PtgBool', f:parse_PtgBool },\n0x1E: { n:'PtgInt', f:parse_PtgInt },\n0x1F: { n:'PtgNum', f:parse_PtgNum },\n0x20: { n:'PtgArray', f:parse_PtgArray },\n0x21: { n:'PtgFunc', f:parse_PtgFunc },\n0x22: { n:'PtgFuncVar', f:parse_PtgFuncVar },\n0x23: { n:'PtgName', f:parse_PtgName },\n0x24: { n:'PtgRef', f:parse_PtgRef },\n0x25: { n:'PtgArea', f:parse_PtgArea },\n0x26: { n:'PtgMemArea', f:parse_PtgMemArea },\n0x27: { n:'PtgMemErr', f:parse_PtgMemErr },\n0x28: { n:'PtgMemNoMem', f:parse_PtgMemNoMem },\n0x29: { n:'PtgMemFunc', f:parse_PtgMemFunc },\n0x2A: { n:'PtgRefErr', f:parse_PtgRefErr },\n0x2B: { n:'PtgAreaErr', f:parse_PtgAreaErr },\n0x2C: { n:'PtgRefN', f:parse_PtgRefN },\n0x2D: { n:'PtgAreaN', f:parse_PtgAreaN },\n0x2E: { n:'PtgMemAreaN', f:parse_PtgMemAreaN },\n0x2F: { n:'PtgMemNoMemN', f:parse_PtgMemNoMemN },\n0x39: { n:'PtgNameX', f:parse_PtgNameX },\n0x3A: { n:'PtgRef3d', f:parse_PtgRef3d },\n0x3B: { n:'PtgArea3d', f:parse_PtgArea3d },\n0x3C: { n:'PtgRefErr3d', f:parse_PtgRefErr3d },\n0x3D: { n:'PtgAreaErr3d', f:parse_PtgAreaErr3d },\n0xFF: {}\n};\n/* These are duplicated in the PtgTypes table */\nvar PtgDupes = {\n0x40: 0x20, 0x60: 0x20,\n0x41: 0x21, 0x61: 0x21,\n0x42: 0x22, 0x62: 0x22,\n0x43: 0x23, 0x63: 0x23,\n0x44: 0x24, 0x64: 0x24,\n0x45: 0x25, 0x65: 0x25,\n0x46: 0x26, 0x66: 0x26,\n0x47: 0x27, 0x67: 0x27,\n0x48: 0x28, 0x68: 0x28,\n0x49: 0x29, 0x69: 0x29,\n0x4A: 0x2A, 0x6A: 0x2A,\n0x4B: 0x2B, 0x6B: 0x2B,\n0x4C: 0x2C, 0x6C: 0x2C,\n0x4D: 0x2D, 0x6D: 0x2D,\n0x4E: 0x2E, 0x6E: 0x2E,\n0x4F: 0x2F, 0x6F: 0x2F,\n0x58: 0x22, 0x78: 0x22,\n0x59: 0x39, 0x79: 0x39,\n0x5A: 0x3A, 0x7A: 0x3A,\n0x5B: 0x3B, 0x7B: 0x3B,\n0x5C: 0x3C, 0x7C: 0x3C,\n0x5D: 0x3D, 0x7D: 0x3D\n};\n(function(){for(var y in PtgDupes) PtgTypes[y] = PtgTypes[PtgDupes[y]];})();\n\nvar Ptg18 = {\n0x01: { n:'PtgElfLel', f:parse_PtgElfLel },\n0x02: { n:'PtgElfRw', f:parse_PtgElfRw },\n0x03: { n:'PtgElfCol', f:parse_PtgElfCol },\n0x06: { n:'PtgElfRwV', f:parse_PtgElfRwV },\n0x07: { n:'PtgElfColV', f:parse_PtgElfColV },\n0x0A: { n:'PtgElfRadical', f:parse_PtgElfRadical },\n0x0B: { n:'PtgElfRadicalS', f:parse_PtgElfRadicalS },\n0x0D: { n:'PtgElfColS', f:parse_PtgElfColS },\n0x0F: { n:'PtgElfColSV', f:parse_PtgElfColSV },\n0x10: { n:'PtgElfRadicalLel', f:parse_PtgElfRadicalLel },\n0x19: { n:'PtgList', f:parse_PtgList },\n0x1D: { n:'PtgSxName', f:parse_PtgSxName },\n0xFF: {}\n};\nvar Ptg19 = {\n0x00: { n:'PtgAttrNoop', f:parse_PtgAttrNoop },\n0x01: { n:'PtgAttrSemi', f:parse_PtgAttrSemi },\n0x02: { n:'PtgAttrIf', f:parse_PtgAttrIf },\n0x04: { n:'PtgAttrChoose', f:parse_PtgAttrChoose },\n0x08: { n:'PtgAttrGoto', f:parse_PtgAttrGoto },\n0x10: { n:'PtgAttrSum', f:parse_PtgAttrSum },\n0x20: { n:'PtgAttrBaxcel', f:parse_PtgAttrBaxcel },\n0x40: { n:'PtgAttrSpace', f:parse_PtgAttrSpace },\n0x41: { n:'PtgAttrSpaceSemi', f:parse_PtgAttrSpaceSemi },\n0x80: { n:'PtgAttrIfError', f:parse_PtgAttrIfError },\n0xFF: {}\n};\nPtg19[0x21] = Ptg19[0x20];\n\n/* [MS-XLS] 2.5.198.103 ; [MS-XLSB] 2.5.97.87 */\nfunction parse_RgbExtra(blob, length, rgce, opts) {\n\tif(opts.biff < 8) return parsenoop(blob, length);\n\tvar target = blob.l + length;\n\tvar o = [];\n\tfor(var i = 0; i !== rgce.length; ++i) {\n\t\tswitch(rgce[i][0]) {\n\t\t\tcase 'PtgArray': /* PtgArray -> PtgExtraArray */\n\t\t\t\trgce[i][1] = parse_PtgExtraArray(blob, 0, opts);\n\t\t\t\to.push(rgce[i][1]);\n\t\t\t\tbreak;\n\t\t\tcase 'PtgMemArea': /* PtgMemArea -> PtgExtraMem */\n\t\t\t\trgce[i][2] = parse_PtgExtraMem(blob, rgce[i][1], opts);\n\t\t\t\to.push(rgce[i][2]);\n\t\t\t\tbreak;\n\t\t\tcase 'PtgExp': /* PtgExp -> PtgExtraCol */\n\t\t\t\tif(opts && opts.biff == 12) {\n\t\t\t\t\trgce[i][1][1] = blob.read_shift(4);\n\t\t\t\t\to.push(rgce[i][1]);\n\t\t\t\t} break;\n\t\t\tcase 'PtgList': /* TODO: PtgList -> PtgExtraList */\n\t\t\tcase 'PtgElfRadicalS': /* TODO: PtgElfRadicalS -> PtgExtraElf */\n\t\t\tcase 'PtgElfColS': /* TODO: PtgElfColS -> PtgExtraElf */\n\t\t\tcase 'PtgElfColSV': /* TODO: PtgElfColSV -> PtgExtraElf */\n\t\t\t\tthrow \"Unsupported \" + rgce[i][0];\n\t\t\tdefault: break;\n\t\t}\n\t}\n\tlength = target - blob.l;\n\t/* note: this is technically an error but Excel disregards */\n\t//if(target !== blob.l && blob.l !== target - length) throw new Error(target + \" != \" + blob.l);\n\tif(length !== 0) o.push(parsenoop(blob, length));\n\treturn o;\n}\n\n/* [MS-XLS] 2.5.198.104 ; [MS-XLSB] 2.5.97.88 */\nfunction parse_Rgce(blob, length, opts) {\n\tvar target = blob.l + length;\n\tvar R, id, ptgs = [];\n\twhile(target != blob.l) {\n\t\tlength = target - blob.l;\n\t\tid = blob[blob.l];\n\t\tR = PtgTypes[id];\n\t\tif(id === 0x18 || id === 0x19) R = (id === 0x18 ? Ptg18 : Ptg19)[blob[blob.l + 1]];\n\t\tif(!R || !R.f) { /*ptgs.push*/(parsenoop(blob, length)); }\n\t\telse { ptgs.push([R.n, R.f(blob, length, opts)]); }\n\t}\n\treturn ptgs;\n}\n\nfunction stringify_array(f) {\n\tvar o = [];\n\tfor(var i = 0; i < f.length; ++i) {\n\t\tvar x = f[i], r = [];\n\t\tfor(var j = 0; j < x.length; ++j) {\n\t\t\tvar y = x[j];\n\t\t\tif(y) switch(y[0]) {\n\t\t\t\t// TODO: handle embedded quotes\n\t\t\t\tcase 0x02:\nr.push('\"' + y[1].replace(/\"/g,'\"\"') + '\"'); break;\n\t\t\t\tdefault: r.push(y[1]);\n\t\t\t} else r.push(\"\");\n\t\t}\n\t\to.push(r.join(\",\"));\n\t}\n\treturn o.join(\";\");\n}\n\n/* [MS-XLS] 2.2.2 ; [MS-XLSB] 2.2.2 TODO */\nvar PtgBinOp = {\n\tPtgAdd: \"+\",\n\tPtgConcat: \"&\",\n\tPtgDiv: \"/\",\n\tPtgEq: \"=\",\n\tPtgGe: \">=\",\n\tPtgGt: \">\",\n\tPtgLe: \"<=\",\n\tPtgLt: \"<\",\n\tPtgMul: \"*\",\n\tPtgNe: \"<>\",\n\tPtgPower: \"^\",\n\tPtgSub: \"-\"\n};\nfunction formula_quote_sheet_name(sname, opts) {\n\tif(!sname && !(opts && opts.biff <= 5 && opts.biff >= 2)) throw new Error(\"empty sheet name\");\n\tif(sname.indexOf(\" \") > -1) return \"'\" + sname + \"'\";\n\treturn sname;\n}\nfunction get_ixti_raw(supbooks, ixti, opts) {\n\tif(!supbooks) return \"SH33TJSERR0\";\n\tif(opts.biff > 8 && (!supbooks.XTI || !supbooks.XTI[ixti])) return supbooks.SheetNames[ixti];\n\tif(!supbooks.XTI) return \"SH33TJSERR6\";\n\tvar XTI = supbooks.XTI[ixti];\n\tif(opts.biff < 8) {\n\t\tif(ixti > 10000) ixti-= 65536;\n\t\tif(ixti < 0) ixti = -ixti;\n\t\treturn ixti == 0 ? \"\" : supbooks.XTI[ixti - 1];\n\t}\n\tif(!XTI) return \"SH33TJSERR1\";\n\tvar o = \"\";\n\tif(opts.biff > 8) switch(supbooks[XTI[0]][0]) {\n\t\tcase 0x0165: /* 'BrtSupSelf' */\n\t\t\to = XTI[1] == -1 ? \"#REF\" : supbooks.SheetNames[XTI[1]];\n\t\t\treturn XTI[1] == XTI[2] ? o : o + \":\" + supbooks.SheetNames[XTI[2]];\n\t\tcase 0x0166: /* 'BrtSupSame' */\n\t\t\tif(opts.SID != null) return supbooks.SheetNames[opts.SID];\n\t\t\treturn \"SH33TJSSAME\" + supbooks[XTI[0]][0];\n\t\tcase 0x0163: /* 'BrtSupBookSrc' */\n\t\t\t/* falls through */\n\t\tdefault: return \"SH33TJSSRC\" + supbooks[XTI[0]][0];\n\t}\n\tswitch(supbooks[XTI[0]][0][0]) {\n\t\tcase 0x0401:\n\t\t\to = XTI[1] == -1 ? \"#REF\" : (supbooks.SheetNames[XTI[1]] || \"SH33TJSERR3\");\n\t\t\treturn XTI[1] == XTI[2] ? o : o + \":\" + supbooks.SheetNames[XTI[2]];\n\t\tcase 0x3A01: return supbooks[XTI[0]].slice(1).map(function(name) { return name.Name; }).join(\";;\"); //return \"SH33TJSERR8\";\n\t\tdefault:\n\t\t\tif(!supbooks[XTI[0]][0][3]) return \"SH33TJSERR2\";\n\t\t\to = XTI[1] == -1 ? \"#REF\" : (supbooks[XTI[0]][0][3][XTI[1]] || \"SH33TJSERR4\");\n\t\t\treturn XTI[1] == XTI[2] ? o : o + \":\" + supbooks[XTI[0]][0][3][XTI[2]];\n\t}\n}\nfunction get_ixti(supbooks, ixti, opts) {\n\treturn formula_quote_sheet_name(get_ixti_raw(supbooks, ixti, opts), opts);\n}\nfunction stringify_formula(formula/*Array*/, range, cell, supbooks, opts) {\n\tvar biff = (opts && opts.biff) || 8;\n\tvar _range = /*range != null ? range :*/ {s:{c:0, r:0},e:{c:0, r:0}};\n\tvar stack = [], e1, e2, c, ixti=0, nameidx=0, r, sname=\"\";\n\tif(!formula[0] || !formula[0][0]) return \"\";\n\tvar last_sp = -1, sp = \"\";\n\tfor(var ff = 0, fflen = formula[0].length; ff < fflen; ++ff) {\n\t\tvar f = formula[0][ff];\n\t\tswitch(f[0]) {\n\t\t\tcase 'PtgUminus': /* [MS-XLS] 2.5.198.93 */\n\t\t\t\tstack.push(\"-\" + stack.pop()); break;\n\t\t\tcase 'PtgUplus': /* [MS-XLS] 2.5.198.95 */\n\t\t\t\tstack.push(\"+\" + stack.pop()); break;\n\t\t\tcase 'PtgPercent': /* [MS-XLS] 2.5.198.81 */\n\t\t\t\tstack.push(stack.pop() + \"%\"); break;\n\n\t\t\tcase 'PtgAdd': /* [MS-XLS] 2.5.198.26 */\n\t\t\tcase 'PtgConcat': /* [MS-XLS] 2.5.198.43 */\n\t\t\tcase 'PtgDiv': /* [MS-XLS] 2.5.198.45 */\n\t\t\tcase 'PtgEq': /* [MS-XLS] 2.5.198.56 */\n\t\t\tcase 'PtgGe': /* [MS-XLS] 2.5.198.64 */\n\t\t\tcase 'PtgGt': /* [MS-XLS] 2.5.198.65 */\n\t\t\tcase 'PtgLe': /* [MS-XLS] 2.5.198.68 */\n\t\t\tcase 'PtgLt': /* [MS-XLS] 2.5.198.69 */\n\t\t\tcase 'PtgMul': /* [MS-XLS] 2.5.198.75 */\n\t\t\tcase 'PtgNe': /* [MS-XLS] 2.5.198.78 */\n\t\t\tcase 'PtgPower': /* [MS-XLS] 2.5.198.82 */\n\t\t\tcase 'PtgSub': /* [MS-XLS] 2.5.198.90 */\n\t\t\t\te1 = stack.pop(); e2 = stack.pop();\n\t\t\t\tif(last_sp >= 0) {\n\t\t\t\t\tswitch(formula[0][last_sp][1][0]) {\n\t\t\t\t\t\tcase 0:\n\t\t\t\t\t\t\t// $FlowIgnore\n\t\t\t\t\t\t\tsp = fill(\" \", formula[0][last_sp][1][1]); break;\n\t\t\t\t\t\tcase 1:\n\t\t\t\t\t\t\t// $FlowIgnore\n\t\t\t\t\t\t\tsp = fill(\"\\r\", formula[0][last_sp][1][1]); break;\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\tsp = \"\";\n\t\t\t\t\t\t\t// $FlowIgnore\n\t\t\t\t\t\t\tif(opts.WTF) throw new Error(\"Unexpected PtgAttrSpaceType \" + formula[0][last_sp][1][0]);\n\t\t\t\t\t}\n\t\t\t\t\te2 = e2 + sp;\n\t\t\t\t\tlast_sp = -1;\n\t\t\t\t}\n\t\t\t\tstack.push(e2+PtgBinOp[f[0]]+e1);\n\t\t\t\tbreak;\n\n\t\t\tcase 'PtgIsect': /* [MS-XLS] 2.5.198.67 */\n\t\t\t\te1 = stack.pop(); e2 = stack.pop();\n\t\t\t\tstack.push(e2+\" \"+e1);\n\t\t\t\tbreak;\n\t\t\tcase 'PtgUnion': /* [MS-XLS] 2.5.198.94 */\n\t\t\t\te1 = stack.pop(); e2 = stack.pop();\n\t\t\t\tstack.push(e2+\",\"+e1);\n\t\t\t\tbreak;\n\t\t\tcase 'PtgRange': /* [MS-XLS] 2.5.198.83 */\n\t\t\t\te1 = stack.pop(); e2 = stack.pop();\n\t\t\t\tstack.push(e2+\":\"+e1);\n\t\t\t\tbreak;\n\n\t\t\tcase 'PtgAttrChoose': /* [MS-XLS] 2.5.198.34 */\n\t\t\t\tbreak;\n\t\t\tcase 'PtgAttrGoto': /* [MS-XLS] 2.5.198.35 */\n\t\t\t\tbreak;\n\t\t\tcase 'PtgAttrIf': /* [MS-XLS] 2.5.198.36 */\n\t\t\t\tbreak;\n\t\t\tcase 'PtgAttrIfError': /* [MS-XLSB] 2.5.97.28 */\n\t\t\t\tbreak;\n\n\n\t\t\tcase 'PtgRef': /* [MS-XLS] 2.5.198.84 */\nc = shift_cell_xls((f[1][1]), _range, opts);\n\t\t\t\tstack.push(encode_cell_xls(c, biff));\n\t\t\t\tbreak;\n\t\t\tcase 'PtgRefN': /* [MS-XLS] 2.5.198.88 */\nc = cell ? shift_cell_xls((f[1][1]), cell, opts) : (f[1][1]);\n\t\t\t\tstack.push(encode_cell_xls(c, biff));\n\t\t\t\tbreak;\n\t\t\tcase 'PtgRef3d': /* [MS-XLS] 2.5.198.85 */\nixti = f[1][1]; c = shift_cell_xls((f[1][2]), _range, opts);\n\t\t\t\tsname = get_ixti(supbooks, ixti, opts);\n\t\t\t\tvar w = sname; /* IE9 fails on defined names */ // eslint-disable-line no-unused-vars\n\t\t\t\tstack.push(sname + \"!\" + encode_cell_xls(c, biff));\n\t\t\t\tbreak;\n\n\t\t\tcase 'PtgFunc': /* [MS-XLS] 2.5.198.62 */\n\t\t\tcase 'PtgFuncVar': /* [MS-XLS] 2.5.198.63 */\n\t\t\t\t/* f[1] = [argc, func, type] */\n\t\t\t\tvar argc = (f[1][0]), func = (f[1][1]);\n\t\t\t\tif(!argc) argc = 0;\n\t\t\t\targc &= 0x7F;\n\t\t\t\tvar args = argc == 0 ? [] : stack.slice(-argc);\n\t\t\t\tstack.length -= argc;\n\t\t\t\tif(func === 'User') func = args.shift();\n\t\t\t\tstack.push(func + \"(\" + args.join(\",\") + \")\");\n\t\t\t\tbreak;\n\n\t\t\tcase 'PtgBool': /* [MS-XLS] 2.5.198.42 */\n\t\t\t\tstack.push(f[1] ? \"TRUE\" : \"FALSE\"); break;\n\t\t\tcase 'PtgInt': /* [MS-XLS] 2.5.198.66 */\n\t\t\t\tstack.push(f[1]); break;\n\t\t\tcase 'PtgNum': /* [MS-XLS] 2.5.198.79 TODO: precision? */\n\t\t\t\tstack.push(String(f[1])); break;\n\t\t\tcase 'PtgStr': /* [MS-XLS] 2.5.198.89 */\n\t\t\t\t// $FlowIgnore\n\t\t\t\tstack.push('\"' + f[1].replace(/\"/g, '\"\"') + '\"'); break;\n\t\t\tcase 'PtgErr': /* [MS-XLS] 2.5.198.57 */\n\t\t\t\tstack.push(f[1]); break;\n\t\t\tcase 'PtgAreaN': /* [MS-XLS] 2.5.198.31 TODO */\nr = shift_range_xls(f[1][1], cell ? {s:cell} : _range, opts);\n\t\t\t\tstack.push(encode_range_xls((r), opts));\n\t\t\t\tbreak;\n\t\t\tcase 'PtgArea': /* [MS-XLS] 2.5.198.27 TODO: fixed points */\nr = shift_range_xls(f[1][1], _range, opts);\n\t\t\t\tstack.push(encode_range_xls((r), opts));\n\t\t\t\tbreak;\n\t\t\tcase 'PtgArea3d': /* [MS-XLS] 2.5.198.28 TODO */\nixti = f[1][1]; r = f[1][2];\n\t\t\t\tsname = get_ixti(supbooks, ixti, opts);\n\t\t\t\tstack.push(sname + \"!\" + encode_range_xls((r), opts));\n\t\t\t\tbreak;\n\t\t\tcase 'PtgAttrSum': /* [MS-XLS] 2.5.198.41 */\n\t\t\t\tstack.push(\"SUM(\" + stack.pop() + \")\");\n\t\t\t\tbreak;\n\n\t\t\tcase 'PtgAttrBaxcel': /* [MS-XLS] 2.5.198.33 */\n\t\t\tcase 'PtgAttrSemi': /* [MS-XLS] 2.5.198.37 */\n\t\t\t\tbreak;\n\n\t\t\tcase 'PtgName': /* [MS-XLS] 2.5.198.76 ; [MS-XLSB] 2.5.97.60 TODO: revisions */\n\t\t\t\t/* f[1] = type, 0, nameindex */\n\t\t\t\tnameidx = (f[1][2]);\n\t\t\t\tvar lbl = (supbooks.names||[])[nameidx-1] || (supbooks[0]||[])[nameidx];\n\t\t\t\tvar name = lbl ? lbl.Name : \"SH33TJSNAME\" + String(nameidx);\n\t\t\t\tif(name in XLSXFutureFunctions) name = XLSXFutureFunctions[name];\n\t\t\t\tstack.push(name);\n\t\t\t\tbreak;\n\n\t\t\tcase 'PtgNameX': /* [MS-XLS] 2.5.198.77 ; [MS-XLSB] 2.5.97.61 TODO: revisions */\n\t\t\t\t/* f[1] = type, ixti, nameindex */\n\t\t\t\tvar bookidx = (f[1][1]); nameidx = (f[1][2]); var externbook;\n\t\t\t\t/* TODO: Properly handle missing values -- this should be using get_ixti_raw primarily */\n\t\t\t\tif(opts.biff <= 5) {\n\t\t\t\t\tif(bookidx < 0) bookidx = -bookidx;\n\t\t\t\t\tif(supbooks[bookidx]) externbook = supbooks[bookidx][nameidx];\n\t\t\t\t} else {\n\t\t\t\t\tvar o = \"\";\n\t\t\t\t\tif(((supbooks[bookidx]||[])[0]||[])[0] == 0x3A01){/* empty */}\n\t\t\t\t\telse if(((supbooks[bookidx]||[])[0]||[])[0] == 0x0401){\n\t\t\t\t\t\tif(supbooks[bookidx][nameidx] && supbooks[bookidx][nameidx].itab > 0) {\n\t\t\t\t\t\t\to = supbooks.SheetNames[supbooks[bookidx][nameidx].itab-1] + \"!\";\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\telse o = supbooks.SheetNames[nameidx-1]+ \"!\";\n\t\t\t\t\tif(supbooks[bookidx] && supbooks[bookidx][nameidx]) o += supbooks[bookidx][nameidx].Name;\n\t\t\t\t\telse if(supbooks[0] && supbooks[0][nameidx]) o += supbooks[0][nameidx].Name;\n\t\t\t\t\telse {\n\t\t\t\t\t\tvar ixtidata = get_ixti_raw(supbooks, bookidx, opts).split(\";;\");\n\t\t\t\t\t\tif(ixtidata[nameidx - 1]) o = ixtidata[nameidx - 1]; // TODO: confirm this is correct\n\t\t\t\t\t\telse o += \"SH33TJSERRX\";\n\t\t\t\t\t}\n\t\t\t\t\tstack.push(o);\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tif(!externbook) externbook = {Name: \"SH33TJSERRY\"};\n\t\t\t\tstack.push(externbook.Name);\n\t\t\t\tbreak;\n\n\t\t\tcase 'PtgParen': /* [MS-XLS] 2.5.198.80 */\n\t\t\t\tvar lp = '(', rp = ')';\n\t\t\t\tif(last_sp >= 0) {\n\t\t\t\t\tsp = \"\";\n\t\t\t\t\tswitch(formula[0][last_sp][1][0]) {\n\t\t\t\t\t\t// $FlowIgnore\n\t\t\t\t\t\tcase 2: lp = fill(\" \", formula[0][last_sp][1][1]) + lp; break;\n\t\t\t\t\t\t// $FlowIgnore\n\t\t\t\t\t\tcase 3: lp = fill(\"\\r\", formula[0][last_sp][1][1]) + lp; break;\n\t\t\t\t\t\t// $FlowIgnore\n\t\t\t\t\t\tcase 4: rp = fill(\" \", formula[0][last_sp][1][1]) + rp; break;\n\t\t\t\t\t\t// $FlowIgnore\n\t\t\t\t\t\tcase 5: rp = fill(\"\\r\", formula[0][last_sp][1][1]) + rp; break;\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t// $FlowIgnore\n\t\t\t\t\t\t\tif(opts.WTF) throw new Error(\"Unexpected PtgAttrSpaceType \" + formula[0][last_sp][1][0]);\n\t\t\t\t\t}\n\t\t\t\t\tlast_sp = -1;\n\t\t\t\t}\n\t\t\t\tstack.push(lp + stack.pop() + rp); break;\n\n\t\t\tcase 'PtgRefErr': /* [MS-XLS] 2.5.198.86 */\n\t\t\t\tstack.push('#REF!'); break;\n\n\t\t\tcase 'PtgRefErr3d': /* [MS-XLS] 2.5.198.87 */\n\t\t\t\tstack.push('#REF!'); break;\n\n\t\t\tcase 'PtgExp': /* [MS-XLS] 2.5.198.58 TODO */\n\t\t\t\tc = {c:(f[1][1]),r:(f[1][0])};\n\t\t\t\tvar q = ({c: cell.c, r:cell.r});\n\t\t\t\tif(supbooks.sharedf[encode_cell(c)]) {\n\t\t\t\t\tvar parsedf = (supbooks.sharedf[encode_cell(c)]);\n\t\t\t\t\tstack.push(stringify_formula(parsedf, _range, q, supbooks, opts));\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tvar fnd = false;\n\t\t\t\t\tfor(e1=0;e1!=supbooks.arrayf.length; ++e1) {\n\t\t\t\t\t\t/* TODO: should be something like range_has */\n\t\t\t\t\t\te2 = supbooks.arrayf[e1];\n\t\t\t\t\t\tif(c.c < e2[0].s.c || c.c > e2[0].e.c) continue;\n\t\t\t\t\t\tif(c.r < e2[0].s.r || c.r > e2[0].e.r) continue;\n\t\t\t\t\t\tstack.push(stringify_formula(e2[1], _range, q, supbooks, opts));\n\t\t\t\t\t\tfnd = true;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\tif(!fnd) stack.push(f[1]);\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase 'PtgArray': /* [MS-XLS] 2.5.198.32 TODO */\n\t\t\t\tstack.push(\"{\" + stringify_array(f[1]) + \"}\");\n\t\t\t\tbreak;\n\n\t\t\tcase 'PtgMemArea': /* [MS-XLS] 2.5.198.70 TODO: confirm this is a non-display */\n\t\t\t\t//stack.push(\"(\" + f[2].map(encode_range).join(\",\") + \")\");\n\t\t\t\tbreak;\n\n\t\t\tcase 'PtgAttrSpace': /* [MS-XLS] 2.5.198.38 */\n\t\t\tcase 'PtgAttrSpaceSemi': /* [MS-XLS] 2.5.198.39 */\n\t\t\t\tlast_sp = ff;\n\t\t\t\tbreak;\n\n\t\t\tcase 'PtgTbl': /* [MS-XLS] 2.5.198.92 TODO */\n\t\t\t\tbreak;\n\n\t\t\tcase 'PtgMemErr': /* [MS-XLS] 2.5.198.71 */\n\t\t\t\tbreak;\n\n\t\t\tcase 'PtgMissArg': /* [MS-XLS] 2.5.198.74 */\n\t\t\t\tstack.push(\"\");\n\t\t\t\tbreak;\n\n\t\t\tcase 'PtgAreaErr': /* [MS-XLS] 2.5.198.29 */\n\t\t\t\tstack.push(\"#REF!\"); break;\n\n\t\t\tcase 'PtgAreaErr3d': /* [MS-XLS] 2.5.198.30 */\n\t\t\t\tstack.push(\"#REF!\"); break;\n\n\t\t\tcase 'PtgList': /* [MS-XLSB] 2.5.97.52 */\n\t\t\t\t// $FlowIgnore\n\t\t\t\tstack.push(\"Table\" + f[1].idx + \"[#\" + f[1].rt + \"]\");\n\t\t\t\tbreak;\n\n\t\t\tcase 'PtgMemAreaN':\n\t\t\tcase 'PtgMemNoMemN':\n\t\t\tcase 'PtgAttrNoop':\n\t\t\tcase 'PtgSheet':\n\t\t\tcase 'PtgEndSheet':\n\t\t\t\tbreak;\n\n\t\t\tcase 'PtgMemFunc': /* [MS-XLS] 2.5.198.72 TODO */\n\t\t\t\tbreak;\n\t\t\tcase 'PtgMemNoMem': /* [MS-XLS] 2.5.198.73 TODO */\n\t\t\t\tbreak;\n\n\t\t\tcase 'PtgElfCol': /* [MS-XLS] 2.5.198.46 */\n\t\t\tcase 'PtgElfColS': /* [MS-XLS] 2.5.198.47 */\n\t\t\tcase 'PtgElfColSV': /* [MS-XLS] 2.5.198.48 */\n\t\t\tcase 'PtgElfColV': /* [MS-XLS] 2.5.198.49 */\n\t\t\tcase 'PtgElfLel': /* [MS-XLS] 2.5.198.50 */\n\t\t\tcase 'PtgElfRadical': /* [MS-XLS] 2.5.198.51 */\n\t\t\tcase 'PtgElfRadicalLel': /* [MS-XLS] 2.5.198.52 */\n\t\t\tcase 'PtgElfRadicalS': /* [MS-XLS] 2.5.198.53 */\n\t\t\tcase 'PtgElfRw': /* [MS-XLS] 2.5.198.54 */\n\t\t\tcase 'PtgElfRwV': /* [MS-XLS] 2.5.198.55 */\n\t\t\t\tthrow new Error(\"Unsupported ELFs\");\n\n\t\t\tcase 'PtgSxName': /* [MS-XLS] 2.5.198.91 TODO -- find a test case */\n\t\t\t\tthrow new Error('Unrecognized Formula Token: ' + String(f));\n\t\t\tdefault: throw new Error('Unrecognized Formula Token: ' + String(f));\n\t\t}\n\t\tvar PtgNonDisp = ['PtgAttrSpace', 'PtgAttrSpaceSemi', 'PtgAttrGoto'];\n\t\tif(opts.biff != 3) if(last_sp >= 0 && PtgNonDisp.indexOf(formula[0][ff][0]) == -1) {\n\t\t\tf = formula[0][last_sp];\n\t\t\tvar _left = true;\n\t\t\tswitch(f[1][0]) {\n\t\t\t\t/* note: some bad XLSB files omit the PtgParen */\n\t\t\t\tcase 4: _left = false;\n\t\t\t\t/* falls through */\n\t\t\t\tcase 0:\n\t\t\t\t\t// $FlowIgnore\n\t\t\t\t\tsp = fill(\" \", f[1][1]); break;\n\t\t\t\tcase 5: _left = false;\n\t\t\t\t/* falls through */\n\t\t\t\tcase 1:\n\t\t\t\t\t// $FlowIgnore\n\t\t\t\t\tsp = fill(\"\\r\", f[1][1]); break;\n\t\t\t\tdefault:\n\t\t\t\t\tsp = \"\";\n\t\t\t\t\t// $FlowIgnore\n\t\t\t\t\tif(opts.WTF) throw new Error(\"Unexpected PtgAttrSpaceType \" + f[1][0]);\n\t\t\t}\n\t\t\tstack.push((_left ? sp : \"\") + stack.pop() + (_left ? \"\" : sp));\n\t\t\tlast_sp = -1;\n\t\t}\n\t}\n\tif(stack.length > 1 && opts.WTF) throw new Error(\"bad formula stack\");\n\treturn stack[0];\n}\n\n/* [MS-XLS] 2.5.198.1 TODO */\nfunction parse_ArrayParsedFormula(blob, length, opts) {\n\tvar target = blob.l + length, len = opts.biff == 2 ? 1 : 2;\n\tvar rgcb, cce = blob.read_shift(len); // length of rgce\n\tif(cce == 0xFFFF) return [[],parsenoop(blob, length-2)];\n\tvar rgce = parse_Rgce(blob, cce, opts);\n\tif(length !== cce + len) rgcb = parse_RgbExtra(blob, length - cce - len, rgce, opts);\n\tblob.l = target;\n\treturn [rgce, rgcb];\n}\n\n/* [MS-XLS] 2.5.198.3 TODO */\nfunction parse_XLSCellParsedFormula(blob, length, opts) {\n\tvar target = blob.l + length, len = opts.biff == 2 ? 1 : 2;\n\tvar rgcb, cce = blob.read_shift(len); // length of rgce\n\tif(cce == 0xFFFF) return [[],parsenoop(blob, length-2)];\n\tvar rgce = parse_Rgce(blob, cce, opts);\n\tif(length !== cce + len) rgcb = parse_RgbExtra(blob, length - cce - len, rgce, opts);\n\tblob.l = target;\n\treturn [rgce, rgcb];\n}\n\n/* [MS-XLS] 2.5.198.21 */\nfunction parse_NameParsedFormula(blob, length, opts, cce) {\n\tvar target = blob.l + length;\n\tvar rgce = parse_Rgce(blob, cce, opts);\n\tvar rgcb;\n\tif(target !== blob.l) rgcb = parse_RgbExtra(blob, target - blob.l, rgce, opts);\n\treturn [rgce, rgcb];\n}\n\n/* [MS-XLS] 2.5.198.118 TODO */\nfunction parse_SharedParsedFormula(blob, length, opts) {\n\tvar target = blob.l + length;\n\tvar rgcb, cce = blob.read_shift(2); // length of rgce\n\tvar rgce = parse_Rgce(blob, cce, opts);\n\tif(cce == 0xFFFF) return [[],parsenoop(blob, length-2)];\n\tif(length !== cce + 2) rgcb = parse_RgbExtra(blob, target - cce - 2, rgce, opts);\n\treturn [rgce, rgcb];\n}\n\n/* [MS-XLS] 2.5.133 TODO: how to emit empty strings? */\nfunction parse_FormulaValue(blob) {\n\tvar b;\n\tif(__readUInt16LE(blob,blob.l + 6) !== 0xFFFF) return [parse_Xnum(blob),'n'];\n\tswitch(blob[blob.l]) {\n\t\tcase 0x00: blob.l += 8; return [\"String\", 's'];\n\t\tcase 0x01: b = blob[blob.l+2] === 0x1; blob.l += 8; return [b,'b'];\n\t\tcase 0x02: b = blob[blob.l+2]; blob.l += 8; return [b,'e'];\n\t\tcase 0x03: blob.l += 8; return [\"\",'s'];\n\t}\n\treturn [];\n}\n\n/* [MS-XLS] 2.4.127 TODO */\nfunction parse_Formula(blob, length, opts) {\n\tvar end = blob.l + length;\n\tvar cell = parse_XLSCell(blob, 6);\n\tif(opts.biff == 2) ++blob.l;\n\tvar val = parse_FormulaValue(blob,8);\n\tvar flags = blob.read_shift(1);\n\tif(opts.biff != 2) {\n\t\tblob.read_shift(1);\n\t\tif(opts.biff >= 5) {\n\t\t\t/*var chn = */blob.read_shift(4);\n\t\t}\n\t}\n\tvar cbf = parse_XLSCellParsedFormula(blob, end - blob.l, opts);\n\treturn {cell:cell, val:val[0], formula:cbf, shared: (flags >> 3) & 1, tt:val[1]};\n}\n\n/* XLSB Parsed Formula records have the same shape */\nfunction parse_XLSBParsedFormula(data, length, opts) {\n\tvar cce = data.read_shift(4);\n\tvar rgce = parse_Rgce(data, cce, opts);\n\tvar cb = data.read_shift(4);\n\tvar rgcb = cb > 0 ? parse_RgbExtra(data, cb, rgce, opts) : null;\n\treturn [rgce, rgcb];\n}\n\n/* [MS-XLSB] 2.5.97.1 ArrayParsedFormula */\nvar parse_XLSBArrayParsedFormula = parse_XLSBParsedFormula;\n/* [MS-XLSB] 2.5.97.4 CellParsedFormula */\nvar parse_XLSBCellParsedFormula = parse_XLSBParsedFormula;\n/* [MS-XLSB] 2.5.97.12 NameParsedFormula */\nvar parse_XLSBNameParsedFormula = parse_XLSBParsedFormula;\n/* [MS-XLSB] 2.5.97.98 SharedParsedFormula */\nvar parse_XLSBSharedParsedFormula = parse_XLSBParsedFormula;\n/* [MS-XLS] 2.5.198.4 */\nvar Cetab = {\n0x0000: 'BEEP',\n0x0001: 'OPEN',\n0x0002: 'OPEN.LINKS',\n0x0003: 'CLOSE.ALL',\n0x0004: 'SAVE',\n0x0005: 'SAVE.AS',\n0x0006: 'FILE.DELETE',\n0x0007: 'PAGE.SETUP',\n0x0008: 'PRINT',\n0x0009: 'PRINTER.SETUP',\n0x000A: 'QUIT',\n0x000B: 'NEW.WINDOW',\n0x000C: 'ARRANGE.ALL',\n0x000D: 'WINDOW.SIZE',\n0x000E: 'WINDOW.MOVE',\n0x000F: 'FULL',\n0x0010: 'CLOSE',\n0x0011: 'RUN',\n0x0016: 'SET.PRINT.AREA',\n0x0017: 'SET.PRINT.TITLES',\n0x0018: 'SET.PAGE.BREAK',\n0x0019: 'REMOVE.PAGE.BREAK',\n0x001A: 'FONT',\n0x001B: 'DISPLAY',\n0x001C: 'PROTECT.DOCUMENT',\n0x001D: 'PRECISION',\n0x001E: 'A1.R1C1',\n0x001F: 'CALCULATE.NOW',\n0x0020: 'CALCULATION',\n0x0022: 'DATA.FIND',\n0x0023: 'EXTRACT',\n0x0024: 'DATA.DELETE',\n0x0025: 'SET.DATABASE',\n0x0026: 'SET.CRITERIA',\n0x0027: 'SORT',\n0x0028: 'DATA.SERIES',\n0x0029: 'TABLE',\n0x002A: 'FORMAT.NUMBER',\n0x002B: 'ALIGNMENT',\n0x002C: 'STYLE',\n0x002D: 'BORDER',\n0x002E: 'CELL.PROTECTION',\n0x002F: 'COLUMN.WIDTH',\n0x0030: 'UNDO',\n0x0031: 'CUT',\n0x0032: 'COPY',\n0x0033: 'PASTE',\n0x0034: 'CLEAR',\n0x0035: 'PASTE.SPECIAL',\n0x0036: 'EDIT.DELETE',\n0x0037: 'INSERT',\n0x0038: 'FILL.RIGHT',\n0x0039: 'FILL.DOWN',\n0x003D: 'DEFINE.NAME',\n0x003E: 'CREATE.NAMES',\n0x003F: 'FORMULA.GOTO',\n0x0040: 'FORMULA.FIND',\n0x0041: 'SELECT.LAST.CELL',\n0x0042: 'SHOW.ACTIVE.CELL',\n0x0043: 'GALLERY.AREA',\n0x0044: 'GALLERY.BAR',\n0x0045: 'GALLERY.COLUMN',\n0x0046: 'GALLERY.LINE',\n0x0047: 'GALLERY.PIE',\n0x0048: 'GALLERY.SCATTER',\n0x0049: 'COMBINATION',\n0x004A: 'PREFERRED',\n0x004B: 'ADD.OVERLAY',\n0x004C: 'GRIDLINES',\n0x004D: 'SET.PREFERRED',\n0x004E: 'AXES',\n0x004F: 'LEGEND',\n0x0050: 'ATTACH.TEXT',\n0x0051: 'ADD.ARROW',\n0x0052: 'SELECT.CHART',\n0x0053: 'SELECT.PLOT.AREA',\n0x0054: 'PATTERNS',\n0x0055: 'MAIN.CHART',\n0x0056: 'OVERLAY',\n0x0057: 'SCALE',\n0x0058: 'FORMAT.LEGEND',\n0x0059: 'FORMAT.TEXT',\n0x005A: 'EDIT.REPEAT',\n0x005B: 'PARSE',\n0x005C: 'JUSTIFY',\n0x005D: 'HIDE',\n0x005E: 'UNHIDE',\n0x005F: 'WORKSPACE',\n0x0060: 'FORMULA',\n0x0061: 'FORMULA.FILL',\n0x0062: 'FORMULA.ARRAY',\n0x0063: 'DATA.FIND.NEXT',\n0x0064: 'DATA.FIND.PREV',\n0x0065: 'FORMULA.FIND.NEXT',\n0x0066: 'FORMULA.FIND.PREV',\n0x0067: 'ACTIVATE',\n0x0068: 'ACTIVATE.NEXT',\n0x0069: 'ACTIVATE.PREV',\n0x006A: 'UNLOCKED.NEXT',\n0x006B: 'UNLOCKED.PREV',\n0x006C: 'COPY.PICTURE',\n0x006D: 'SELECT',\n0x006E: 'DELETE.NAME',\n0x006F: 'DELETE.FORMAT',\n0x0070: 'VLINE',\n0x0071: 'HLINE',\n0x0072: 'VPAGE',\n0x0073: 'HPAGE',\n0x0074: 'VSCROLL',\n0x0075: 'HSCROLL',\n0x0076: 'ALERT',\n0x0077: 'NEW',\n0x0078: 'CANCEL.COPY',\n0x0079: 'SHOW.CLIPBOARD',\n0x007A: 'MESSAGE',\n0x007C: 'PASTE.LINK',\n0x007D: 'APP.ACTIVATE',\n0x007E: 'DELETE.ARROW',\n0x007F: 'ROW.HEIGHT',\n0x0080: 'FORMAT.MOVE',\n0x0081: 'FORMAT.SIZE',\n0x0082: 'FORMULA.REPLACE',\n0x0083: 'SEND.KEYS',\n0x0084: 'SELECT.SPECIAL',\n0x0085: 'APPLY.NAMES',\n0x0086: 'REPLACE.FONT',\n0x0087: 'FREEZE.PANES',\n0x0088: 'SHOW.INFO',\n0x0089: 'SPLIT',\n0x008A: 'ON.WINDOW',\n0x008B: 'ON.DATA',\n0x008C: 'DISABLE.INPUT',\n0x008E: 'OUTLINE',\n0x008F: 'LIST.NAMES',\n0x0090: 'FILE.CLOSE',\n0x0091: 'SAVE.WORKBOOK',\n0x0092: 'DATA.FORM',\n0x0093: 'COPY.CHART',\n0x0094: 'ON.TIME',\n0x0095: 'WAIT',\n0x0096: 'FORMAT.FONT',\n0x0097: 'FILL.UP',\n0x0098: 'FILL.LEFT',\n0x0099: 'DELETE.OVERLAY',\n0x009B: 'SHORT.MENUS',\n0x009F: 'SET.UPDATE.STATUS',\n0x00A1: 'COLOR.PALETTE',\n0x00A2: 'DELETE.STYLE',\n0x00A3: 'WINDOW.RESTORE',\n0x00A4: 'WINDOW.MAXIMIZE',\n0x00A6: 'CHANGE.LINK',\n0x00A7: 'CALCULATE.DOCUMENT',\n0x00A8: 'ON.KEY',\n0x00A9: 'APP.RESTORE',\n0x00AA: 'APP.MOVE',\n0x00AB: 'APP.SIZE',\n0x00AC: 'APP.MINIMIZE',\n0x00AD: 'APP.MAXIMIZE',\n0x00AE: 'BRING.TO.FRONT',\n0x00AF: 'SEND.TO.BACK',\n0x00B9: 'MAIN.CHART.TYPE',\n0x00BA: 'OVERLAY.CHART.TYPE',\n0x00BB: 'SELECT.END',\n0x00BC: 'OPEN.MAIL',\n0x00BD: 'SEND.MAIL',\n0x00BE: 'STANDARD.FONT',\n0x00BF: 'CONSOLIDATE',\n0x00C0: 'SORT.SPECIAL',\n0x00C1: 'GALLERY.3D.AREA',\n0x00C2: 'GALLERY.3D.COLUMN',\n0x00C3: 'GALLERY.3D.LINE',\n0x00C4: 'GALLERY.3D.PIE',\n0x00C5: 'VIEW.3D',\n0x00C6: 'GOAL.SEEK',\n0x00C7: 'WORKGROUP',\n0x00C8: 'FILL.GROUP',\n0x00C9: 'UPDATE.LINK',\n0x00CA: 'PROMOTE',\n0x00CB: 'DEMOTE',\n0x00CC: 'SHOW.DETAIL',\n0x00CE: 'UNGROUP',\n0x00CF: 'OBJECT.PROPERTIES',\n0x00D0: 'SAVE.NEW.OBJECT',\n0x00D1: 'SHARE',\n0x00D2: 'SHARE.NAME',\n0x00D3: 'DUPLICATE',\n0x00D4: 'APPLY.STYLE',\n0x00D5: 'ASSIGN.TO.OBJECT',\n0x00D6: 'OBJECT.PROTECTION',\n0x00D7: 'HIDE.OBJECT',\n0x00D8: 'SET.EXTRACT',\n0x00D9: 'CREATE.PUBLISHER',\n0x00DA: 'SUBSCRIBE.TO',\n0x00DB: 'ATTRIBUTES',\n0x00DC: 'SHOW.TOOLBAR',\n0x00DE: 'PRINT.PREVIEW',\n0x00DF: 'EDIT.COLOR',\n0x00E0: 'SHOW.LEVELS',\n0x00E1: 'FORMAT.MAIN',\n0x00E2: 'FORMAT.OVERLAY',\n0x00E3: 'ON.RECALC',\n0x00E4: 'EDIT.SERIES',\n0x00E5: 'DEFINE.STYLE',\n0x00F0: 'LINE.PRINT',\n0x00F3: 'ENTER.DATA',\n0x00F9: 'GALLERY.RADAR',\n0x00FA: 'MERGE.STYLES',\n0x00FB: 'EDITION.OPTIONS',\n0x00FC: 'PASTE.PICTURE',\n0x00FD: 'PASTE.PICTURE.LINK',\n0x00FE: 'SPELLING',\n0x0100: 'ZOOM',\n0x0103: 'INSERT.OBJECT',\n0x0104: 'WINDOW.MINIMIZE',\n0x0109: 'SOUND.NOTE',\n0x010A: 'SOUND.PLAY',\n0x010B: 'FORMAT.SHAPE',\n0x010C: 'EXTEND.POLYGON',\n0x010D: 'FORMAT.AUTO',\n0x0110: 'GALLERY.3D.BAR',\n0x0111: 'GALLERY.3D.SURFACE',\n0x0112: 'FILL.AUTO',\n0x0114: 'CUSTOMIZE.TOOLBAR',\n0x0115: 'ADD.TOOL',\n0x0116: 'EDIT.OBJECT',\n0x0117: 'ON.DOUBLECLICK',\n0x0118: 'ON.ENTRY',\n0x0119: 'WORKBOOK.ADD',\n0x011A: 'WORKBOOK.MOVE',\n0x011B: 'WORKBOOK.COPY',\n0x011C: 'WORKBOOK.OPTIONS',\n0x011D: 'SAVE.WORKSPACE',\n0x0120: 'CHART.WIZARD',\n0x0121: 'DELETE.TOOL',\n0x0122: 'MOVE.TOOL',\n0x0123: 'WORKBOOK.SELECT',\n0x0124: 'WORKBOOK.ACTIVATE',\n0x0125: 'ASSIGN.TO.TOOL',\n0x0127: 'COPY.TOOL',\n0x0128: 'RESET.TOOL',\n0x0129: 'CONSTRAIN.NUMERIC',\n0x012A: 'PASTE.TOOL',\n0x012E: 'WORKBOOK.NEW',\n0x0131: 'SCENARIO.CELLS',\n0x0132: 'SCENARIO.DELETE',\n0x0133: 'SCENARIO.ADD',\n0x0134: 'SCENARIO.EDIT',\n0x0135: 'SCENARIO.SHOW',\n0x0136: 'SCENARIO.SHOW.NEXT',\n0x0137: 'SCENARIO.SUMMARY',\n0x0138: 'PIVOT.TABLE.WIZARD',\n0x0139: 'PIVOT.FIELD.PROPERTIES',\n0x013A: 'PIVOT.FIELD',\n0x013B: 'PIVOT.ITEM',\n0x013C: 'PIVOT.ADD.FIELDS',\n0x013E: 'OPTIONS.CALCULATION',\n0x013F: 'OPTIONS.EDIT',\n0x0140: 'OPTIONS.VIEW',\n0x0141: 'ADDIN.MANAGER',\n0x0142: 'MENU.EDITOR',\n0x0143: 'ATTACH.TOOLBARS',\n0x0144: 'VBAActivate',\n0x0145: 'OPTIONS.CHART',\n0x0148: 'VBA.INSERT.FILE',\n0x014A: 'VBA.PROCEDURE.DEFINITION',\n0x0150: 'ROUTING.SLIP',\n0x0152: 'ROUTE.DOCUMENT',\n0x0153: 'MAIL.LOGON',\n0x0156: 'INSERT.PICTURE',\n0x0157: 'EDIT.TOOL',\n0x0158: 'GALLERY.DOUGHNUT',\n0x015E: 'CHART.TREND',\n0x0160: 'PIVOT.ITEM.PROPERTIES',\n0x0162: 'WORKBOOK.INSERT',\n0x0163: 'OPTIONS.TRANSITION',\n0x0164: 'OPTIONS.GENERAL',\n0x0172: 'FILTER.ADVANCED',\n0x0175: 'MAIL.ADD.MAILER',\n0x0176: 'MAIL.DELETE.MAILER',\n0x0177: 'MAIL.REPLY',\n0x0178: 'MAIL.REPLY.ALL',\n0x0179: 'MAIL.FORWARD',\n0x017A: 'MAIL.NEXT.LETTER',\n0x017B: 'DATA.LABEL',\n0x017C: 'INSERT.TITLE',\n0x017D: 'FONT.PROPERTIES',\n0x017E: 'MACRO.OPTIONS',\n0x017F: 'WORKBOOK.HIDE',\n0x0180: 'WORKBOOK.UNHIDE',\n0x0181: 'WORKBOOK.DELETE',\n0x0182: 'WORKBOOK.NAME',\n0x0184: 'GALLERY.CUSTOM',\n0x0186: 'ADD.CHART.AUTOFORMAT',\n0x0187: 'DELETE.CHART.AUTOFORMAT',\n0x0188: 'CHART.ADD.DATA',\n0x0189: 'AUTO.OUTLINE',\n0x018A: 'TAB.ORDER',\n0x018B: 'SHOW.DIALOG',\n0x018C: 'SELECT.ALL',\n0x018D: 'UNGROUP.SHEETS',\n0x018E: 'SUBTOTAL.CREATE',\n0x018F: 'SUBTOTAL.REMOVE',\n0x0190: 'RENAME.OBJECT',\n0x019C: 'WORKBOOK.SCROLL',\n0x019D: 'WORKBOOK.NEXT',\n0x019E: 'WORKBOOK.PREV',\n0x019F: 'WORKBOOK.TAB.SPLIT',\n0x01A0: 'FULL.SCREEN',\n0x01A1: 'WORKBOOK.PROTECT',\n0x01A4: 'SCROLLBAR.PROPERTIES',\n0x01A5: 'PIVOT.SHOW.PAGES',\n0x01A6: 'TEXT.TO.COLUMNS',\n0x01A7: 'FORMAT.CHARTTYPE',\n0x01A8: 'LINK.FORMAT',\n0x01A9: 'TRACER.DISPLAY',\n0x01AE: 'TRACER.NAVIGATE',\n0x01AF: 'TRACER.CLEAR',\n0x01B0: 'TRACER.ERROR',\n0x01B1: 'PIVOT.FIELD.GROUP',\n0x01B2: 'PIVOT.FIELD.UNGROUP',\n0x01B3: 'CHECKBOX.PROPERTIES',\n0x01B4: 'LABEL.PROPERTIES',\n0x01B5: 'LISTBOX.PROPERTIES',\n0x01B6: 'EDITBOX.PROPERTIES',\n0x01B7: 'PIVOT.REFRESH',\n0x01B8: 'LINK.COMBO',\n0x01B9: 'OPEN.TEXT',\n0x01BA: 'HIDE.DIALOG',\n0x01BB: 'SET.DIALOG.FOCUS',\n0x01BC: 'ENABLE.OBJECT',\n0x01BD: 'PUSHBUTTON.PROPERTIES',\n0x01BE: 'SET.DIALOG.DEFAULT',\n0x01BF: 'FILTER',\n0x01C0: 'FILTER.SHOW.ALL',\n0x01C1: 'CLEAR.OUTLINE',\n0x01C2: 'FUNCTION.WIZARD',\n0x01C3: 'ADD.LIST.ITEM',\n0x01C4: 'SET.LIST.ITEM',\n0x01C5: 'REMOVE.LIST.ITEM',\n0x01C6: 'SELECT.LIST.ITEM',\n0x01C7: 'SET.CONTROL.VALUE',\n0x01C8: 'SAVE.COPY.AS',\n0x01CA: 'OPTIONS.LISTS.ADD',\n0x01CB: 'OPTIONS.LISTS.DELETE',\n0x01CC: 'SERIES.AXES',\n0x01CD: 'SERIES.X',\n0x01CE: 'SERIES.Y',\n0x01CF: 'ERRORBAR.X',\n0x01D0: 'ERRORBAR.Y',\n0x01D1: 'FORMAT.CHART',\n0x01D2: 'SERIES.ORDER',\n0x01D3: 'MAIL.LOGOFF',\n0x01D4: 'CLEAR.ROUTING.SLIP',\n0x01D5: 'APP.ACTIVATE.MICROSOFT',\n0x01D6: 'MAIL.EDIT.MAILER',\n0x01D7: 'ON.SHEET',\n0x01D8: 'STANDARD.WIDTH',\n0x01D9: 'SCENARIO.MERGE',\n0x01DA: 'SUMMARY.INFO',\n0x01DB: 'FIND.FILE',\n0x01DC: 'ACTIVE.CELL.FONT',\n0x01DD: 'ENABLE.TIPWIZARD',\n0x01DE: 'VBA.MAKE.ADDIN',\n0x01E0: 'INSERTDATATABLE',\n0x01E1: 'WORKGROUP.OPTIONS',\n0x01E2: 'MAIL.SEND.MAILER',\n0x01E5: 'AUTOCORRECT',\n0x01E9: 'POST.DOCUMENT',\n0x01EB: 'PICKLIST',\n0x01ED: 'VIEW.SHOW',\n0x01EE: 'VIEW.DEFINE',\n0x01EF: 'VIEW.DELETE',\n0x01FD: 'SHEET.BACKGROUND',\n0x01FE: 'INSERT.MAP.OBJECT',\n0x01FF: 'OPTIONS.MENONO',\n0x0205: 'MSOCHECKS',\n0x0206: 'NORMAL',\n0x0207: 'LAYOUT',\n0x0208: 'RM.PRINT.AREA',\n0x0209: 'CLEAR.PRINT.AREA',\n0x020A: 'ADD.PRINT.AREA',\n0x020B: 'MOVE.BRK',\n0x0221: 'HIDECURR.NOTE',\n0x0222: 'HIDEALL.NOTES',\n0x0223: 'DELETE.NOTE',\n0x0224: 'TRAVERSE.NOTES',\n0x0225: 'ACTIVATE.NOTES',\n0x026C: 'PROTECT.REVISIONS',\n0x026D: 'UNPROTECT.REVISIONS',\n0x0287: 'OPTIONS.ME',\n0x028D: 'WEB.PUBLISH',\n0x029B: 'NEWWEBQUERY',\n0x02A1: 'PIVOT.TABLE.CHART',\n0x02F1: 'OPTIONS.SAVE',\n0x02F3: 'OPTIONS.SPELL',\n0x0328: 'HIDEALL.INKANNOTS'\n};\n\n/* [MS-XLS] 2.5.198.17 */\n/* [MS-XLSB] 2.5.97.10 */\nvar Ftab = {\n0x0000: 'COUNT',\n0x0001: 'IF',\n0x0002: 'ISNA',\n0x0003: 'ISERROR',\n0x0004: 'SUM',\n0x0005: 'AVERAGE',\n0x0006: 'MIN',\n0x0007: 'MAX',\n0x0008: 'ROW',\n0x0009: 'COLUMN',\n0x000A: 'NA',\n0x000B: 'NPV',\n0x000C: 'STDEV',\n0x000D: 'DOLLAR',\n0x000E: 'FIXED',\n0x000F: 'SIN',\n0x0010: 'COS',\n0x0011: 'TAN',\n0x0012: 'ATAN',\n0x0013: 'PI',\n0x0014: 'SQRT',\n0x0015: 'EXP',\n0x0016: 'LN',\n0x0017: 'LOG10',\n0x0018: 'ABS',\n0x0019: 'INT',\n0x001A: 'SIGN',\n0x001B: 'ROUND',\n0x001C: 'LOOKUP',\n0x001D: 'INDEX',\n0x001E: 'REPT',\n0x001F: 'MID',\n0x0020: 'LEN',\n0x0021: 'VALUE',\n0x0022: 'TRUE',\n0x0023: 'FALSE',\n0x0024: 'AND',\n0x0025: 'OR',\n0x0026: 'NOT',\n0x0027: 'MOD',\n0x0028: 'DCOUNT',\n0x0029: 'DSUM',\n0x002A: 'DAVERAGE',\n0x002B: 'DMIN',\n0x002C: 'DMAX',\n0x002D: 'DSTDEV',\n0x002E: 'VAR',\n0x002F: 'DVAR',\n0x0030: 'TEXT',\n0x0031: 'LINEST',\n0x0032: 'TREND',\n0x0033: 'LOGEST',\n0x0034: 'GROWTH',\n0x0035: 'GOTO',\n0x0036: 'HALT',\n0x0037: 'RETURN',\n0x0038: 'PV',\n0x0039: 'FV',\n0x003A: 'NPER',\n0x003B: 'PMT',\n0x003C: 'RATE',\n0x003D: 'MIRR',\n0x003E: 'IRR',\n0x003F: 'RAND',\n0x0040: 'MATCH',\n0x0041: 'DATE',\n0x0042: 'TIME',\n0x0043: 'DAY',\n0x0044: 'MONTH',\n0x0045: 'YEAR',\n0x0046: 'WEEKDAY',\n0x0047: 'HOUR',\n0x0048: 'MINUTE',\n0x0049: 'SECOND',\n0x004A: 'NOW',\n0x004B: 'AREAS',\n0x004C: 'ROWS',\n0x004D: 'COLUMNS',\n0x004E: 'OFFSET',\n0x004F: 'ABSREF',\n0x0050: 'RELREF',\n0x0051: 'ARGUMENT',\n0x0052: 'SEARCH',\n0x0053: 'TRANSPOSE',\n0x0054: 'ERROR',\n0x0055: 'STEP',\n0x0056: 'TYPE',\n0x0057: 'ECHO',\n0x0058: 'SET.NAME',\n0x0059: 'CALLER',\n0x005A: 'DEREF',\n0x005B: 'WINDOWS',\n0x005C: 'SERIES',\n0x005D: 'DOCUMENTS',\n0x005E: 'ACTIVE.CELL',\n0x005F: 'SELECTION',\n0x0060: 'RESULT',\n0x0061: 'ATAN2',\n0x0062: 'ASIN',\n0x0063: 'ACOS',\n0x0064: 'CHOOSE',\n0x0065: 'HLOOKUP',\n0x0066: 'VLOOKUP',\n0x0067: 'LINKS',\n0x0068: 'INPUT',\n0x0069: 'ISREF',\n0x006A: 'GET.FORMULA',\n0x006B: 'GET.NAME',\n0x006C: 'SET.VALUE',\n0x006D: 'LOG',\n0x006E: 'EXEC',\n0x006F: 'CHAR',\n0x0070: 'LOWER',\n0x0071: 'UPPER',\n0x0072: 'PROPER',\n0x0073: 'LEFT',\n0x0074: 'RIGHT',\n0x0075: 'EXACT',\n0x0076: 'TRIM',\n0x0077: 'REPLACE',\n0x0078: 'SUBSTITUTE',\n0x0079: 'CODE',\n0x007A: 'NAMES',\n0x007B: 'DIRECTORY',\n0x007C: 'FIND',\n0x007D: 'CELL',\n0x007E: 'ISERR',\n0x007F: 'ISTEXT',\n0x0080: 'ISNUMBER',\n0x0081: 'ISBLANK',\n0x0082: 'T',\n0x0083: 'N',\n0x0084: 'FOPEN',\n0x0085: 'FCLOSE',\n0x0086: 'FSIZE',\n0x0087: 'FREADLN',\n0x0088: 'FREAD',\n0x0089: 'FWRITELN',\n0x008A: 'FWRITE',\n0x008B: 'FPOS',\n0x008C: 'DATEVALUE',\n0x008D: 'TIMEVALUE',\n0x008E: 'SLN',\n0x008F: 'SYD',\n0x0090: 'DDB',\n0x0091: 'GET.DEF',\n0x0092: 'REFTEXT',\n0x0093: 'TEXTREF',\n0x0094: 'INDIRECT',\n0x0095: 'REGISTER',\n0x0096: 'CALL',\n0x0097: 'ADD.BAR',\n0x0098: 'ADD.MENU',\n0x0099: 'ADD.COMMAND',\n0x009A: 'ENABLE.COMMAND',\n0x009B: 'CHECK.COMMAND',\n0x009C: 'RENAME.COMMAND',\n0x009D: 'SHOW.BAR',\n0x009E: 'DELETE.MENU',\n0x009F: 'DELETE.COMMAND',\n0x00A0: 'GET.CHART.ITEM',\n0x00A1: 'DIALOG.BOX',\n0x00A2: 'CLEAN',\n0x00A3: 'MDETERM',\n0x00A4: 'MINVERSE',\n0x00A5: 'MMULT',\n0x00A6: 'FILES',\n0x00A7: 'IPMT',\n0x00A8: 'PPMT',\n0x00A9: 'COUNTA',\n0x00AA: 'CANCEL.KEY',\n0x00AB: 'FOR',\n0x00AC: 'WHILE',\n0x00AD: 'BREAK',\n0x00AE: 'NEXT',\n0x00AF: 'INITIATE',\n0x00B0: 'REQUEST',\n0x00B1: 'POKE',\n0x00B2: 'EXECUTE',\n0x00B3: 'TERMINATE',\n0x00B4: 'RESTART',\n0x00B5: 'HELP',\n0x00B6: 'GET.BAR',\n0x00B7: 'PRODUCT',\n0x00B8: 'FACT',\n0x00B9: 'GET.CELL',\n0x00BA: 'GET.WORKSPACE',\n0x00BB: 'GET.WINDOW',\n0x00BC: 'GET.DOCUMENT',\n0x00BD: 'DPRODUCT',\n0x00BE: 'ISNONTEXT',\n0x00BF: 'GET.NOTE',\n0x00C0: 'NOTE',\n0x00C1: 'STDEVP',\n0x00C2: 'VARP',\n0x00C3: 'DSTDEVP',\n0x00C4: 'DVARP',\n0x00C5: 'TRUNC',\n0x00C6: 'ISLOGICAL',\n0x00C7: 'DCOUNTA',\n0x00C8: 'DELETE.BAR',\n0x00C9: 'UNREGISTER',\n0x00CC: 'USDOLLAR',\n0x00CD: 'FINDB',\n0x00CE: 'SEARCHB',\n0x00CF: 'REPLACEB',\n0x00D0: 'LEFTB',\n0x00D1: 'RIGHTB',\n0x00D2: 'MIDB',\n0x00D3: 'LENB',\n0x00D4: 'ROUNDUP',\n0x00D5: 'ROUNDDOWN',\n0x00D6: 'ASC',\n0x00D7: 'DBCS',\n0x00D8: 'RANK',\n0x00DB: 'ADDRESS',\n0x00DC: 'DAYS360',\n0x00DD: 'TODAY',\n0x00DE: 'VDB',\n0x00DF: 'ELSE',\n0x00E0: 'ELSE.IF',\n0x00E1: 'END.IF',\n0x00E2: 'FOR.CELL',\n0x00E3: 'MEDIAN',\n0x00E4: 'SUMPRODUCT',\n0x00E5: 'SINH',\n0x00E6: 'COSH',\n0x00E7: 'TANH',\n0x00E8: 'ASINH',\n0x00E9: 'ACOSH',\n0x00EA: 'ATANH',\n0x00EB: 'DGET',\n0x00EC: 'CREATE.OBJECT',\n0x00ED: 'VOLATILE',\n0x00EE: 'LAST.ERROR',\n0x00EF: 'CUSTOM.UNDO',\n0x00F0: 'CUSTOM.REPEAT',\n0x00F1: 'FORMULA.CONVERT',\n0x00F2: 'GET.LINK.INFO',\n0x00F3: 'TEXT.BOX',\n0x00F4: 'INFO',\n0x00F5: 'GROUP',\n0x00F6: 'GET.OBJECT',\n0x00F7: 'DB',\n0x00F8: 'PAUSE',\n0x00FB: 'RESUME',\n0x00FC: 'FREQUENCY',\n0x00FD: 'ADD.TOOLBAR',\n0x00FE: 'DELETE.TOOLBAR',\n0x00FF: 'User',\n0x0100: 'RESET.TOOLBAR',\n0x0101: 'EVALUATE',\n0x0102: 'GET.TOOLBAR',\n0x0103: 'GET.TOOL',\n0x0104: 'SPELLING.CHECK',\n0x0105: 'ERROR.TYPE',\n0x0106: 'APP.TITLE',\n0x0107: 'WINDOW.TITLE',\n0x0108: 'SAVE.TOOLBAR',\n0x0109: 'ENABLE.TOOL',\n0x010A: 'PRESS.TOOL',\n0x010B: 'REGISTER.ID',\n0x010C: 'GET.WORKBOOK',\n0x010D: 'AVEDEV',\n0x010E: 'BETADIST',\n0x010F: 'GAMMALN',\n0x0110: 'BETAINV',\n0x0111: 'BINOMDIST',\n0x0112: 'CHIDIST',\n0x0113: 'CHIINV',\n0x0114: 'COMBIN',\n0x0115: 'CONFIDENCE',\n0x0116: 'CRITBINOM',\n0x0117: 'EVEN',\n0x0118: 'EXPONDIST',\n0x0119: 'FDIST',\n0x011A: 'FINV',\n0x011B: 'FISHER',\n0x011C: 'FISHERINV',\n0x011D: 'FLOOR',\n0x011E: 'GAMMADIST',\n0x011F: 'GAMMAINV',\n0x0120: 'CEILING',\n0x0121: 'HYPGEOMDIST',\n0x0122: 'LOGNORMDIST',\n0x0123: 'LOGINV',\n0x0124: 'NEGBINOMDIST',\n0x0125: 'NORMDIST',\n0x0126: 'NORMSDIST',\n0x0127: 'NORMINV',\n0x0128: 'NORMSINV',\n0x0129: 'STANDARDIZE',\n0x012A: 'ODD',\n0x012B: 'PERMUT',\n0x012C: 'POISSON',\n0x012D: 'TDIST',\n0x012E: 'WEIBULL',\n0x012F: 'SUMXMY2',\n0x0130: 'SUMX2MY2',\n0x0131: 'SUMX2PY2',\n0x0132: 'CHITEST',\n0x0133: 'CORREL',\n0x0134: 'COVAR',\n0x0135: 'FORECAST',\n0x0136: 'FTEST',\n0x0137: 'INTERCEPT',\n0x0138: 'PEARSON',\n0x0139: 'RSQ',\n0x013A: 'STEYX',\n0x013B: 'SLOPE',\n0x013C: 'TTEST',\n0x013D: 'PROB',\n0x013E: 'DEVSQ',\n0x013F: 'GEOMEAN',\n0x0140: 'HARMEAN',\n0x0141: 'SUMSQ',\n0x0142: 'KURT',\n0x0143: 'SKEW',\n0x0144: 'ZTEST',\n0x0145: 'LARGE',\n0x0146: 'SMALL',\n0x0147: 'QUARTILE',\n0x0148: 'PERCENTILE',\n0x0149: 'PERCENTRANK',\n0x014A: 'MODE',\n0x014B: 'TRIMMEAN',\n0x014C: 'TINV',\n0x014E: 'MOVIE.COMMAND',\n0x014F: 'GET.MOVIE',\n0x0150: 'CONCATENATE',\n0x0151: 'POWER',\n0x0152: 'PIVOT.ADD.DATA',\n0x0153: 'GET.PIVOT.TABLE',\n0x0154: 'GET.PIVOT.FIELD',\n0x0155: 'GET.PIVOT.ITEM',\n0x0156: 'RADIANS',\n0x0157: 'DEGREES',\n0x0158: 'SUBTOTAL',\n0x0159: 'SUMIF',\n0x015A: 'COUNTIF',\n0x015B: 'COUNTBLANK',\n0x015C: 'SCENARIO.GET',\n0x015D: 'OPTIONS.LISTS.GET',\n0x015E: 'ISPMT',\n0x015F: 'DATEDIF',\n0x0160: 'DATESTRING',\n0x0161: 'NUMBERSTRING',\n0x0162: 'ROMAN',\n0x0163: 'OPEN.DIALOG',\n0x0164: 'SAVE.DIALOG',\n0x0165: 'VIEW.GET',\n0x0166: 'GETPIVOTDATA',\n0x0167: 'HYPERLINK',\n0x0168: 'PHONETIC',\n0x0169: 'AVERAGEA',\n0x016A: 'MAXA',\n0x016B: 'MINA',\n0x016C: 'STDEVPA',\n0x016D: 'VARPA',\n0x016E: 'STDEVA',\n0x016F: 'VARA',\n0x0170: 'BAHTTEXT',\n0x0171: 'THAIDAYOFWEEK',\n0x0172: 'THAIDIGIT',\n0x0173: 'THAIMONTHOFYEAR',\n0x0174: 'THAINUMSOUND',\n0x0175: 'THAINUMSTRING',\n0x0176: 'THAISTRINGLENGTH',\n0x0177: 'ISTHAIDIGIT',\n0x0178: 'ROUNDBAHTDOWN',\n0x0179: 'ROUNDBAHTUP',\n0x017A: 'THAIYEAR',\n0x017B: 'RTD',\n\n0x017C: 'CUBEVALUE',\n0x017D: 'CUBEMEMBER',\n0x017E: 'CUBEMEMBERPROPERTY',\n0x017F: 'CUBERANKEDMEMBER',\n0x0180: 'HEX2BIN',\n0x0181: 'HEX2DEC',\n0x0182: 'HEX2OCT',\n0x0183: 'DEC2BIN',\n0x0184: 'DEC2HEX',\n0x0185: 'DEC2OCT',\n0x0186: 'OCT2BIN',\n0x0187: 'OCT2HEX',\n0x0188: 'OCT2DEC',\n0x0189: 'BIN2DEC',\n0x018A: 'BIN2OCT',\n0x018B: 'BIN2HEX',\n0x018C: 'IMSUB',\n0x018D: 'IMDIV',\n0x018E: 'IMPOWER',\n0x018F: 'IMABS',\n0x0190: 'IMSQRT',\n0x0191: 'IMLN',\n0x0192: 'IMLOG2',\n0x0193: 'IMLOG10',\n0x0194: 'IMSIN',\n0x0195: 'IMCOS',\n0x0196: 'IMEXP',\n0x0197: 'IMARGUMENT',\n0x0198: 'IMCONJUGATE',\n0x0199: 'IMAGINARY',\n0x019A: 'IMREAL',\n0x019B: 'COMPLEX',\n0x019C: 'IMSUM',\n0x019D: 'IMPRODUCT',\n0x019E: 'SERIESSUM',\n0x019F: 'FACTDOUBLE',\n0x01A0: 'SQRTPI',\n0x01A1: 'QUOTIENT',\n0x01A2: 'DELTA',\n0x01A3: 'GESTEP',\n0x01A4: 'ISEVEN',\n0x01A5: 'ISODD',\n0x01A6: 'MROUND',\n0x01A7: 'ERF',\n0x01A8: 'ERFC',\n0x01A9: 'BESSELJ',\n0x01AA: 'BESSELK',\n0x01AB: 'BESSELY',\n0x01AC: 'BESSELI',\n0x01AD: 'XIRR',\n0x01AE: 'XNPV',\n0x01AF: 'PRICEMAT',\n0x01B0: 'YIELDMAT',\n0x01B1: 'INTRATE',\n0x01B2: 'RECEIVED',\n0x01B3: 'DISC',\n0x01B4: 'PRICEDISC',\n0x01B5: 'YIELDDISC',\n0x01B6: 'TBILLEQ',\n0x01B7: 'TBILLPRICE',\n0x01B8: 'TBILLYIELD',\n0x01B9: 'PRICE',\n0x01BA: 'YIELD',\n0x01BB: 'DOLLARDE',\n0x01BC: 'DOLLARFR',\n0x01BD: 'NOMINAL',\n0x01BE: 'EFFECT',\n0x01BF: 'CUMPRINC',\n0x01C0: 'CUMIPMT',\n0x01C1: 'EDATE',\n0x01C2: 'EOMONTH',\n0x01C3: 'YEARFRAC',\n0x01C4: 'COUPDAYBS',\n0x01C5: 'COUPDAYS',\n0x01C6: 'COUPDAYSNC',\n0x01C7: 'COUPNCD',\n0x01C8: 'COUPNUM',\n0x01C9: 'COUPPCD',\n0x01CA: 'DURATION',\n0x01CB: 'MDURATION',\n0x01CC: 'ODDLPRICE',\n0x01CD: 'ODDLYIELD',\n0x01CE: 'ODDFPRICE',\n0x01CF: 'ODDFYIELD',\n0x01D0: 'RANDBETWEEN',\n0x01D1: 'WEEKNUM',\n0x01D2: 'AMORDEGRC',\n0x01D3: 'AMORLINC',\n0x01D4: 'CONVERT',\n0x02D4: 'SHEETJS',\n0x01D5: 'ACCRINT',\n0x01D6: 'ACCRINTM',\n0x01D7: 'WORKDAY',\n0x01D8: 'NETWORKDAYS',\n0x01D9: 'GCD',\n0x01DA: 'MULTINOMIAL',\n0x01DB: 'LCM',\n0x01DC: 'FVSCHEDULE',\n0x01DD: 'CUBEKPIMEMBER',\n0x01DE: 'CUBESET',\n0x01DF: 'CUBESETCOUNT',\n0x01E0: 'IFERROR',\n0x01E1: 'COUNTIFS',\n0x01E2: 'SUMIFS',\n0x01E3: 'AVERAGEIF',\n0x01E4: 'AVERAGEIFS'\n};\nvar FtabArgc = {\n0x0002: 1, /* ISNA */\n0x0003: 1, /* ISERROR */\n0x000A: 0, /* NA */\n0x000F: 1, /* SIN */\n0x0010: 1, /* COS */\n0x0011: 1, /* TAN */\n0x0012: 1, /* ATAN */\n0x0013: 0, /* PI */\n0x0014: 1, /* SQRT */\n0x0015: 1, /* EXP */\n0x0016: 1, /* LN */\n0x0017: 1, /* LOG10 */\n0x0018: 1, /* ABS */\n0x0019: 1, /* INT */\n0x001A: 1, /* SIGN */\n0x001B: 2, /* ROUND */\n0x001E: 2, /* REPT */\n0x001F: 3, /* MID */\n0x0020: 1, /* LEN */\n0x0021: 1, /* VALUE */\n0x0022: 0, /* TRUE */\n0x0023: 0, /* FALSE */\n0x0026: 1, /* NOT */\n0x0027: 2, /* MOD */\n0x0028: 3, /* DCOUNT */\n0x0029: 3, /* DSUM */\n0x002A: 3, /* DAVERAGE */\n0x002B: 3, /* DMIN */\n0x002C: 3, /* DMAX */\n0x002D: 3, /* DSTDEV */\n0x002F: 3, /* DVAR */\n0x0030: 2, /* TEXT */\n0x0035: 1, /* GOTO */\n0x003D: 3, /* MIRR */\n0x003F: 0, /* RAND */\n0x0041: 3, /* DATE */\n0x0042: 3, /* TIME */\n0x0043: 1, /* DAY */\n0x0044: 1, /* MONTH */\n0x0045: 1, /* YEAR */\n0x0046: 1, /* WEEKDAY */\n0x0047: 1, /* HOUR */\n0x0048: 1, /* MINUTE */\n0x0049: 1, /* SECOND */\n0x004A: 0, /* NOW */\n0x004B: 1, /* AREAS */\n0x004C: 1, /* ROWS */\n0x004D: 1, /* COLUMNS */\n0x004F: 2, /* ABSREF */\n0x0050: 2, /* RELREF */\n0x0053: 1, /* TRANSPOSE */\n0x0055: 0, /* STEP */\n0x0056: 1, /* TYPE */\n0x0059: 0, /* CALLER */\n0x005A: 1, /* DEREF */\n0x005E: 0, /* ACTIVE.CELL */\n0x005F: 0, /* SELECTION */\n0x0061: 2, /* ATAN2 */\n0x0062: 1, /* ASIN */\n0x0063: 1, /* ACOS */\n0x0065: 3, /* HLOOKUP */\n0x0066: 3, /* VLOOKUP */\n0x0069: 1, /* ISREF */\n0x006A: 1, /* GET.FORMULA */\n0x006C: 2, /* SET.VALUE */\n0x006F: 1, /* CHAR */\n0x0070: 1, /* LOWER */\n0x0071: 1, /* UPPER */\n0x0072: 1, /* PROPER */\n0x0075: 2, /* EXACT */\n0x0076: 1, /* TRIM */\n0x0077: 4, /* REPLACE */\n0x0079: 1, /* CODE */\n0x007E: 1, /* ISERR */\n0x007F: 1, /* ISTEXT */\n0x0080: 1, /* ISNUMBER */\n0x0081: 1, /* ISBLANK */\n0x0082: 1, /* T */\n0x0083: 1, /* N */\n0x0085: 1, /* FCLOSE */\n0x0086: 1, /* FSIZE */\n0x0087: 1, /* FREADLN */\n0x0088: 2, /* FREAD */\n0x0089: 2, /* FWRITELN */\n0x008A: 2, /* FWRITE */\n0x008C: 1, /* DATEVALUE */\n0x008D: 1, /* TIMEVALUE */\n0x008E: 3, /* SLN */\n0x008F: 4, /* SYD */\n0x0090: 4, /* DDB */\n0x00A1: 1, /* DIALOG.BOX */\n0x00A2: 1, /* CLEAN */\n0x00A3: 1, /* MDETERM */\n0x00A4: 1, /* MINVERSE */\n0x00A5: 2, /* MMULT */\n0x00AC: 1, /* WHILE */\n0x00AF: 2, /* INITIATE */\n0x00B0: 2, /* REQUEST */\n0x00B1: 3, /* POKE */\n0x00B2: 2, /* EXECUTE */\n0x00B3: 1, /* TERMINATE */\n0x00B8: 1, /* FACT */\n0x00BA: 1, /* GET.WORKSPACE */\n0x00BD: 3, /* DPRODUCT */\n0x00BE: 1, /* ISNONTEXT */\n0x00C3: 3, /* DSTDEVP */\n0x00C4: 3, /* DVARP */\n0x00C5: 1, /* TRUNC */\n0x00C6: 1, /* ISLOGICAL */\n0x00C7: 3, /* DCOUNTA */\n0x00C9: 1, /* UNREGISTER */\n0x00CF: 4, /* REPLACEB */\n0x00D2: 3, /* MIDB */\n0x00D3: 1, /* LENB */\n0x00D4: 2, /* ROUNDUP */\n0x00D5: 2, /* ROUNDDOWN */\n0x00D6: 1, /* ASC */\n0x00D7: 1, /* DBCS */\n0x00E1: 0, /* END.IF */\n0x00E5: 1, /* SINH */\n0x00E6: 1, /* COSH */\n0x00E7: 1, /* TANH */\n0x00E8: 1, /* ASINH */\n0x00E9: 1, /* ACOSH */\n0x00EA: 1, /* ATANH */\n0x00EB: 3, /* DGET */\n0x00F4: 1, /* INFO */\n0x00F7: 4, /* DB */\n0x00FC: 2, /* FREQUENCY */\n0x0101: 1, /* EVALUATE */\n0x0105: 1, /* ERROR.TYPE */\n0x010F: 1, /* GAMMALN */\n0x0111: 4, /* BINOMDIST */\n0x0112: 2, /* CHIDIST */\n0x0113: 2, /* CHIINV */\n0x0114: 2, /* COMBIN */\n0x0115: 3, /* CONFIDENCE */\n0x0116: 3, /* CRITBINOM */\n0x0117: 1, /* EVEN */\n0x0118: 3, /* EXPONDIST */\n0x0119: 3, /* FDIST */\n0x011A: 3, /* FINV */\n0x011B: 1, /* FISHER */\n0x011C: 1, /* FISHERINV */\n0x011D: 2, /* FLOOR */\n0x011E: 4, /* GAMMADIST */\n0x011F: 3, /* GAMMAINV */\n0x0120: 2, /* CEILING */\n0x0121: 4, /* HYPGEOMDIST */\n0x0122: 3, /* LOGNORMDIST */\n0x0123: 3, /* LOGINV */\n0x0124: 3, /* NEGBINOMDIST */\n0x0125: 4, /* NORMDIST */\n0x0126: 1, /* NORMSDIST */\n0x0127: 3, /* NORMINV */\n0x0128: 1, /* NORMSINV */\n0x0129: 3, /* STANDARDIZE */\n0x012A: 1, /* ODD */\n0x012B: 2, /* PERMUT */\n0x012C: 3, /* POISSON */\n0x012D: 3, /* TDIST */\n0x012E: 4, /* WEIBULL */\n0x012F: 2, /* SUMXMY2 */\n0x0130: 2, /* SUMX2MY2 */\n0x0131: 2, /* SUMX2PY2 */\n0x0132: 2, /* CHITEST */\n0x0133: 2, /* CORREL */\n0x0134: 2, /* COVAR */\n0x0135: 3, /* FORECAST */\n0x0136: 2, /* FTEST */\n0x0137: 2, /* INTERCEPT */\n0x0138: 2, /* PEARSON */\n0x0139: 2, /* RSQ */\n0x013A: 2, /* STEYX */\n0x013B: 2, /* SLOPE */\n0x013C: 4, /* TTEST */\n0x0145: 2, /* LARGE */\n0x0146: 2, /* SMALL */\n0x0147: 2, /* QUARTILE */\n0x0148: 2, /* PERCENTILE */\n0x014B: 2, /* TRIMMEAN */\n0x014C: 2, /* TINV */\n0x0151: 2, /* POWER */\n0x0156: 1, /* RADIANS */\n0x0157: 1, /* DEGREES */\n0x015A: 2, /* COUNTIF */\n0x015B: 1, /* COUNTBLANK */\n0x015E: 4, /* ISPMT */\n0x015F: 3, /* DATEDIF */\n0x0160: 1, /* DATESTRING */\n0x0161: 2, /* NUMBERSTRING */\n0x0168: 1, /* PHONETIC */\n0x0170: 1, /* BAHTTEXT */\n0x0171: 1, /* THAIDAYOFWEEK */\n0x0172: 1, /* THAIDIGIT */\n0x0173: 1, /* THAIMONTHOFYEAR */\n0x0174: 1, /* THAINUMSOUND */\n0x0175: 1, /* THAINUMSTRING */\n0x0176: 1, /* THAISTRINGLENGTH */\n0x0177: 1, /* ISTHAIDIGIT */\n0x0178: 1, /* ROUNDBAHTDOWN */\n0x0179: 1, /* ROUNDBAHTUP */\n0x017A: 1, /* THAIYEAR */\n0x017E: 3, /* CUBEMEMBERPROPERTY */\n0x0181: 1, /* HEX2DEC */\n0x0188: 1, /* OCT2DEC */\n0x0189: 1, /* BIN2DEC */\n0x018C: 2, /* IMSUB */\n0x018D: 2, /* IMDIV */\n0x018E: 2, /* IMPOWER */\n0x018F: 1, /* IMABS */\n0x0190: 1, /* IMSQRT */\n0x0191: 1, /* IMLN */\n0x0192: 1, /* IMLOG2 */\n0x0193: 1, /* IMLOG10 */\n0x0194: 1, /* IMSIN */\n0x0195: 1, /* IMCOS */\n0x0196: 1, /* IMEXP */\n0x0197: 1, /* IMARGUMENT */\n0x0198: 1, /* IMCONJUGATE */\n0x0199: 1, /* IMAGINARY */\n0x019A: 1, /* IMREAL */\n0x019E: 4, /* SERIESSUM */\n0x019F: 1, /* FACTDOUBLE */\n0x01A0: 1, /* SQRTPI */\n0x01A1: 2, /* QUOTIENT */\n0x01A4: 1, /* ISEVEN */\n0x01A5: 1, /* ISODD */\n0x01A6: 2, /* MROUND */\n0x01A8: 1, /* ERFC */\n0x01A9: 2, /* BESSELJ */\n0x01AA: 2, /* BESSELK */\n0x01AB: 2, /* BESSELY */\n0x01AC: 2, /* BESSELI */\n0x01AE: 3, /* XNPV */\n0x01B6: 3, /* TBILLEQ */\n0x01B7: 3, /* TBILLPRICE */\n0x01B8: 3, /* TBILLYIELD */\n0x01BB: 2, /* DOLLARDE */\n0x01BC: 2, /* DOLLARFR */\n0x01BD: 2, /* NOMINAL */\n0x01BE: 2, /* EFFECT */\n0x01BF: 6, /* CUMPRINC */\n0x01C0: 6, /* CUMIPMT */\n0x01C1: 2, /* EDATE */\n0x01C2: 2, /* EOMONTH */\n0x01D0: 2, /* RANDBETWEEN */\n0x01D4: 3, /* CONVERT */\n0x01DC: 2, /* FVSCHEDULE */\n0x01DF: 1, /* CUBESETCOUNT */\n0x01E0: 2, /* IFERROR */\n0xFFFF: 0\n};\n/* [MS-XLSX] 2.2.3 Functions */\n/* [MS-XLSB] 2.5.97.10 Ftab */\nvar XLSXFutureFunctions = {\n\t\"_xlfn.ACOT\": \"ACOT\",\n\t\"_xlfn.ACOTH\": \"ACOTH\",\n\t\"_xlfn.AGGREGATE\": \"AGGREGATE\",\n\t\"_xlfn.ARABIC\": \"ARABIC\",\n\t\"_xlfn.AVERAGEIF\": \"AVERAGEIF\",\n\t\"_xlfn.AVERAGEIFS\": \"AVERAGEIFS\",\n\t\"_xlfn.BASE\": \"BASE\",\n\t\"_xlfn.BETA.DIST\": \"BETA.DIST\",\n\t\"_xlfn.BETA.INV\": \"BETA.INV\",\n\t\"_xlfn.BINOM.DIST\": \"BINOM.DIST\",\n\t\"_xlfn.BINOM.DIST.RANGE\": \"BINOM.DIST.RANGE\",\n\t\"_xlfn.BINOM.INV\": \"BINOM.INV\",\n\t\"_xlfn.BITAND\": \"BITAND\",\n\t\"_xlfn.BITLSHIFT\": \"BITLSHIFT\",\n\t\"_xlfn.BITOR\": \"BITOR\",\n\t\"_xlfn.BITRSHIFT\": \"BITRSHIFT\",\n\t\"_xlfn.BITXOR\": \"BITXOR\",\n\t\"_xlfn.CEILING.MATH\": \"CEILING.MATH\",\n\t\"_xlfn.CEILING.PRECISE\": \"CEILING.PRECISE\",\n\t\"_xlfn.CHISQ.DIST\": \"CHISQ.DIST\",\n\t\"_xlfn.CHISQ.DIST.RT\": \"CHISQ.DIST.RT\",\n\t\"_xlfn.CHISQ.INV\": \"CHISQ.INV\",\n\t\"_xlfn.CHISQ.INV.RT\": \"CHISQ.INV.RT\",\n\t\"_xlfn.CHISQ.TEST\": \"CHISQ.TEST\",\n\t\"_xlfn.COMBINA\": \"COMBINA\",\n\t\"_xlfn.CONCAT\": \"CONCAT\",\n\t\"_xlfn.CONFIDENCE.NORM\": \"CONFIDENCE.NORM\",\n\t\"_xlfn.CONFIDENCE.T\": \"CONFIDENCE.T\",\n\t\"_xlfn.COT\": \"COT\",\n\t\"_xlfn.COTH\": \"COTH\",\n\t\"_xlfn.COUNTIFS\": \"COUNTIFS\",\n\t\"_xlfn.COVARIANCE.P\": \"COVARIANCE.P\",\n\t\"_xlfn.COVARIANCE.S\": \"COVARIANCE.S\",\n\t\"_xlfn.CSC\": \"CSC\",\n\t\"_xlfn.CSCH\": \"CSCH\",\n\t\"_xlfn.DAYS\": \"DAYS\",\n\t\"_xlfn.DECIMAL\": \"DECIMAL\",\n\t\"_xlfn.ECMA.CEILING\": \"ECMA.CEILING\",\n\t\"_xlfn.ERF.PRECISE\": \"ERF.PRECISE\",\n\t\"_xlfn.ERFC.PRECISE\": \"ERFC.PRECISE\",\n\t\"_xlfn.EXPON.DIST\": \"EXPON.DIST\",\n\t\"_xlfn.F.DIST\": \"F.DIST\",\n\t\"_xlfn.F.DIST.RT\": \"F.DIST.RT\",\n\t\"_xlfn.F.INV\": \"F.INV\",\n\t\"_xlfn.F.INV.RT\": \"F.INV.RT\",\n\t\"_xlfn.F.TEST\": \"F.TEST\",\n\t\"_xlfn.FILTERXML\": \"FILTERXML\",\n\t\"_xlfn.FLOOR.MATH\": \"FLOOR.MATH\",\n\t\"_xlfn.FLOOR.PRECISE\": \"FLOOR.PRECISE\",\n\t\"_xlfn.FORECAST.ETS\": \"FORECAST.ETS\",\n\t\"_xlfn.FORECAST.ETS.CONFINT\": \"FORECAST.ETS.CONFINT\",\n\t\"_xlfn.FORECAST.ETS.SEASONALITY\": \"FORECAST.ETS.SEASONALITY\",\n\t\"_xlfn.FORECAST.ETS.STAT\": \"FORECAST.ETS.STAT\",\n\t\"_xlfn.FORECAST.LINEAR\": \"FORECAST.LINEAR\",\n\t\"_xlfn.FORMULATEXT\": \"FORMULATEXT\",\n\t\"_xlfn.GAMMA\": \"GAMMA\",\n\t\"_xlfn.GAMMA.DIST\": \"GAMMA.DIST\",\n\t\"_xlfn.GAMMA.INV\": \"GAMMA.INV\",\n\t\"_xlfn.GAMMALN.PRECISE\": \"GAMMALN.PRECISE\",\n\t\"_xlfn.GAUSS\": \"GAUSS\",\n\t\"_xlfn.HYPGEOM.DIST\": \"HYPGEOM.DIST\",\n\t\"_xlfn.IFERROR\": \"IFERROR\",\n\t\"_xlfn.IFNA\": \"IFNA\",\n\t\"_xlfn.IFS\": \"IFS\",\n\t\"_xlfn.IMCOSH\": \"IMCOSH\",\n\t\"_xlfn.IMCOT\": \"IMCOT\",\n\t\"_xlfn.IMCSC\": \"IMCSC\",\n\t\"_xlfn.IMCSCH\": \"IMCSCH\",\n\t\"_xlfn.IMSEC\": \"IMSEC\",\n\t\"_xlfn.IMSECH\": \"IMSECH\",\n\t\"_xlfn.IMSINH\": \"IMSINH\",\n\t\"_xlfn.IMTAN\": \"IMTAN\",\n\t\"_xlfn.ISFORMULA\": \"ISFORMULA\",\n\t\"_xlfn.ISO.CEILING\": \"ISO.CEILING\",\n\t\"_xlfn.ISOWEEKNUM\": \"ISOWEEKNUM\",\n\t\"_xlfn.LOGNORM.DIST\": \"LOGNORM.DIST\",\n\t\"_xlfn.LOGNORM.INV\": \"LOGNORM.INV\",\n\t\"_xlfn.MAXIFS\": \"MAXIFS\",\n\t\"_xlfn.MINIFS\": \"MINIFS\",\n\t\"_xlfn.MODE.MULT\": \"MODE.MULT\",\n\t\"_xlfn.MODE.SNGL\": \"MODE.SNGL\",\n\t\"_xlfn.MUNIT\": \"MUNIT\",\n\t\"_xlfn.NEGBINOM.DIST\": \"NEGBINOM.DIST\",\n\t\"_xlfn.NETWORKDAYS.INTL\": \"NETWORKDAYS.INTL\",\n\t\"_xlfn.NIGBINOM\": \"NIGBINOM\",\n\t\"_xlfn.NORM.DIST\": \"NORM.DIST\",\n\t\"_xlfn.NORM.INV\": \"NORM.INV\",\n\t\"_xlfn.NORM.S.DIST\": \"NORM.S.DIST\",\n\t\"_xlfn.NORM.S.INV\": \"NORM.S.INV\",\n\t\"_xlfn.NUMBERVALUE\": \"NUMBERVALUE\",\n\t\"_xlfn.PDURATION\": \"PDURATION\",\n\t\"_xlfn.PERCENTILE.EXC\": \"PERCENTILE.EXC\",\n\t\"_xlfn.PERCENTILE.INC\": \"PERCENTILE.INC\",\n\t\"_xlfn.PERCENTRANK.EXC\": \"PERCENTRANK.EXC\",\n\t\"_xlfn.PERCENTRANK.INC\": \"PERCENTRANK.INC\",\n\t\"_xlfn.PERMUTATIONA\": \"PERMUTATIONA\",\n\t\"_xlfn.PHI\": \"PHI\",\n\t\"_xlfn.POISSON.DIST\": \"POISSON.DIST\",\n\t\"_xlfn.QUARTILE.EXC\": \"QUARTILE.EXC\",\n\t\"_xlfn.QUARTILE.INC\": \"QUARTILE.INC\",\n\t\"_xlfn.QUERYSTRING\": \"QUERYSTRING\",\n\t\"_xlfn.RANK.AVG\": \"RANK.AVG\",\n\t\"_xlfn.RANK.EQ\": \"RANK.EQ\",\n\t\"_xlfn.RRI\": \"RRI\",\n\t\"_xlfn.SEC\": \"SEC\",\n\t\"_xlfn.SECH\": \"SECH\",\n\t\"_xlfn.SHEET\": \"SHEET\",\n\t\"_xlfn.SHEETS\": \"SHEETS\",\n\t\"_xlfn.SKEW.P\": \"SKEW.P\",\n\t\"_xlfn.STDEV.P\": \"STDEV.P\",\n\t\"_xlfn.STDEV.S\": \"STDEV.S\",\n\t\"_xlfn.SUMIFS\": \"SUMIFS\",\n\t\"_xlfn.SWITCH\": \"SWITCH\",\n\t\"_xlfn.T.DIST\": \"T.DIST\",\n\t\"_xlfn.T.DIST.2T\": \"T.DIST.2T\",\n\t\"_xlfn.T.DIST.RT\": \"T.DIST.RT\",\n\t\"_xlfn.T.INV\": \"T.INV\",\n\t\"_xlfn.T.INV.2T\": \"T.INV.2T\",\n\t\"_xlfn.T.TEST\": \"T.TEST\",\n\t\"_xlfn.TEXTJOIN\": \"TEXTJOIN\",\n\t\"_xlfn.UNICHAR\": \"UNICHAR\",\n\t\"_xlfn.UNICODE\": \"UNICODE\",\n\t\"_xlfn.VAR.P\": \"VAR.P\",\n\t\"_xlfn.VAR.S\": \"VAR.S\",\n\t\"_xlfn.WEBSERVICE\": \"WEBSERVICE\",\n\t\"_xlfn.WEIBULL.DIST\": \"WEIBULL.DIST\",\n\t\"_xlfn.WORKDAY.INTL\": \"WORKDAY.INTL\",\n\t\"_xlfn.XOR\": \"XOR\",\n\t\"_xlfn.Z.TEST\": \"Z.TEST\"\n};\n\n/* Part 3 TODO: actually parse formulae */\nfunction ods_to_csf_formula(f) {\n\tif(f.slice(0,3) == \"of:\") f = f.slice(3);\n\t/* 5.2 Basic Expressions */\n\tif(f.charCodeAt(0) == 61) {\n\t\tf = f.slice(1);\n\t\tif(f.charCodeAt(0) == 61) f = f.slice(1);\n\t}\n\tf = f.replace(/COM\\.MICROSOFT\\./g, \"\");\n\t/* Part 3 Section 5.8 References */\n\tf = f.replace(/\\[((?:\\.[A-Z]+[0-9]+)(?::\\.[A-Z]+[0-9]+)?)\\]/g, function($$, $1) { return $1.replace(/\\./g,\"\"); });\n\t/* TODO: something other than this */\n\tf = f.replace(/\\[.(#[A-Z]*[?!])\\]/g, \"$1\");\n\treturn f.replace(/[;~]/g,\",\").replace(/\\|/g,\";\");\n}\n\nfunction csf_to_ods_formula(f) {\n\tvar o = \"of:=\" + f.replace(crefregex, \"$1[.$2$3$4$5]\").replace(/\\]:\\[/g,\":\");\n\t/* TODO: something other than this */\n\treturn o.replace(/;/g, \"|\").replace(/,/g,\";\");\n}\n\nfunction ods_to_csf_3D(r) {\n\tvar a = r.split(\":\");\n\tvar s = a[0].split(\".\")[0];\n\treturn [s, a[0].split(\".\")[1] + (a.length > 1 ? (\":\" + (a[1].split(\".\")[1] || a[1].split(\".\")[0])) : \"\")];\n}\n\nfunction csf_to_ods_3D(r) {\n\treturn r.replace(/\\./,\"!\");\n}\n\nvar strs = {}; // shared strings\nvar _ssfopts = {}; // spreadsheet formatting options\n\nRELS.WS = [\n\t\"http://schemas.openxmlformats.org/officeDocument/2006/relationships/worksheet\",\n\t\"http://purl.oclc.org/ooxml/officeDocument/relationships/worksheet\"\n];\n\n/*global Map */\nvar browser_has_Map = typeof Map !== 'undefined';\n\nfunction get_sst_id(sst, str, rev) {\n\tvar i = 0, len = sst.length;\n\tif(rev) {\n\t\tif(browser_has_Map ? rev.has(str) : rev.hasOwnProperty(str)) {\n\t\t\tvar revarr = browser_has_Map ? rev.get(str) : rev[str];\n\t\t\tfor(; i < revarr.length; ++i) {\n\t\t\t\tif(sst[revarr[i]].t === str) { sst.Count ++; return revarr[i]; }\n\t\t\t}\n\t\t}\n\t} else for(; i < len; ++i) {\n\t\tif(sst[i].t === str) { sst.Count ++; return i; }\n\t}\n\tsst[len] = ({t:str}); sst.Count ++; sst.Unique ++;\n\tif(rev) {\n\t\tif(browser_has_Map) {\n\t\t\tif(!rev.has(str)) rev.set(str, []);\n\t\t\trev.get(str).push(len);\n\t\t} else {\n\t\t\tif(!rev.hasOwnProperty(str)) rev[str] = [];\n\t\t\trev[str].push(len);\n\t\t}\n\t}\n\treturn len;\n}\n\nfunction col_obj_w(C, col) {\n\tvar p = ({min:C+1,max:C+1});\n\t/* wch (chars), wpx (pixels) */\n\tvar wch = -1;\n\tif(col.MDW) MDW = col.MDW;\n\tif(col.width != null) p.customWidth = 1;\n\telse if(col.wpx != null) wch = px2char(col.wpx);\n\telse if(col.wch != null) wch = col.wch;\n\tif(wch > -1) { p.width = char2width(wch); p.customWidth = 1; }\n\telse if(col.width != null) p.width = col.width;\n\tif(col.hidden) p.hidden = true;\n\treturn p;\n}\n\nfunction default_margins(margins, mode) {\n\tif(!margins) return;\n\tvar defs = [0.7, 0.7, 0.75, 0.75, 0.3, 0.3];\n\tif(mode == 'xlml') defs = [1, 1, 1, 1, 0.5, 0.5];\n\tif(margins.left == null) margins.left = defs[0];\n\tif(margins.right == null) margins.right = defs[1];\n\tif(margins.top == null) margins.top = defs[2];\n\tif(margins.bottom == null) margins.bottom = defs[3];\n\tif(margins.header == null) margins.header = defs[4];\n\tif(margins.footer == null) margins.footer = defs[5];\n}\n\nfunction get_cell_style(styles, cell, opts) {\n\tvar z = opts.revssf[cell.z != null ? cell.z : \"General\"];\n\tvar i = 0x3c, len = styles.length;\n\tif(z == null && opts.ssf) {\n\t\tfor(; i < 0x188; ++i) if(opts.ssf[i] == null) {\n\t\t\tSSF.load(cell.z, i);\n\t\t\t// $FlowIgnore\n\t\t\topts.ssf[i] = cell.z;\n\t\t\topts.revssf[cell.z] = z = i;\n\t\t\tbreak;\n\t\t}\n\t}\n\tfor(i = 0; i != len; ++i) if(styles[i].numFmtId === z) return i;\n\tstyles[len] = {\n\t\tnumFmtId:z,\n\t\tfontId:0,\n\t\tfillId:0,\n\t\tborderId:0,\n\t\txfId:0,\n\t\tapplyNumberFormat:1\n\t};\n\treturn len;\n}\n\nfunction safe_format(p, fmtid, fillid, opts, themes, styles) {\n\tif(p.t === 'z') return;\n\tif(p.t === 'd' && typeof p.v === 'string') p.v = parseDate(p.v);\n\ttry {\n\t\tif(opts.cellNF) p.z = SSF._table[fmtid];\n\t} catch(e) { if(opts.WTF) throw e; }\n\tif(!opts || opts.cellText !== false) try {\n\t\tif(SSF._table[fmtid] == null) SSF.load(SSFImplicit[fmtid] || \"General\", fmtid);\n\t\tif(p.t === 'e') p.w = p.w || BErr[p.v];\n\t\telse if(fmtid === 0) {\n\t\t\tif(p.t === 'n') {\n\t\t\t\tif((p.v|0) === p.v) p.w = SSF._general_int(p.v);\n\t\t\t\telse p.w = SSF._general_num(p.v);\n\t\t\t}\n\t\t\telse if(p.t === 'd') {\n\t\t\t\tvar dd = datenum(p.v);\n\t\t\t\tif((dd|0) === dd) p.w = SSF._general_int(dd);\n\t\t\t\telse p.w = SSF._general_num(dd);\n\t\t\t}\n\t\t\telse if(p.v === undefined) return \"\";\n\t\t\telse p.w = SSF._general(p.v,_ssfopts);\n\t\t}\n\t\telse if(p.t === 'd') p.w = SSF.format(fmtid,datenum(p.v),_ssfopts);\n\t\telse p.w = SSF.format(fmtid,p.v,_ssfopts);\n\t} catch(e) { if(opts.WTF) throw e; }\n\tif(!opts.cellStyles) return;\n\tif(fillid != null) try {\n\t\tp.s = styles.Fills[fillid];\n\t\tif (p.s.fgColor && p.s.fgColor.theme && !p.s.fgColor.rgb) {\n\t\t\tp.s.fgColor.rgb = rgb_tint(themes.themeElements.clrScheme[p.s.fgColor.theme].rgb, p.s.fgColor.tint || 0);\n\t\t\tif(opts.WTF) p.s.fgColor.raw_rgb = themes.themeElements.clrScheme[p.s.fgColor.theme].rgb;\n\t\t}\n\t\tif (p.s.bgColor && p.s.bgColor.theme) {\n\t\t\tp.s.bgColor.rgb = rgb_tint(themes.themeElements.clrScheme[p.s.bgColor.theme].rgb, p.s.bgColor.tint || 0);\n\t\t\tif(opts.WTF) p.s.bgColor.raw_rgb = themes.themeElements.clrScheme[p.s.bgColor.theme].rgb;\n\t\t}\n\t} catch(e) { if(opts.WTF && styles.Fills) throw e; }\n}\n\nfunction check_ws(ws, sname, i) {\n\tif(ws && ws['!ref']) {\n\t\tvar range = safe_decode_range(ws['!ref']);\n\t\tif(range.e.c < range.s.c || range.e.r < range.s.r) throw new Error(\"Bad range (\" + i + \"): \" + ws['!ref']);\n\t}\n}\nfunction parse_ws_xml_dim(ws, s) {\n\tvar d = safe_decode_range(s);\n\tif(d.s.r<=d.e.r && d.s.c<=d.e.c && d.s.r>=0 && d.s.c>=0) ws[\"!ref\"] = encode_range(d);\n}\nvar mergecregex = /<(?:\\w:)?mergeCell ref=\"[A-Z0-9:]+\"\\s*[\\/]?>/g;\nvar sheetdataregex = /<(?:\\w+:)?sheetData>([\\s\\S]*)<\\/(?:\\w+:)?sheetData>/;\nvar hlinkregex = /<(?:\\w:)?hyperlink [^>]*>/mg;\nvar dimregex = /\"(\\w*:\\w*)\"/;\nvar colregex = /<(?:\\w:)?col\\b[^>]*[\\/]?>/g;\nvar afregex = /<(?:\\w:)?autoFilter[^>]*([\\/]|>([\\s\\S]*)<\\/(?:\\w:)?autoFilter)>/g;\nvar marginregex= /<(?:\\w:)?pageMargins[^>]*\\/>/g;\nvar sheetprregex = /<(?:\\w:)?sheetPr\\b(?:[^>a-z][^>]*)?\\/>/;\nvar svsregex = /<(?:\\w:)?sheetViews[^>]*(?:[\\/]|>([\\s\\S]*)<\\/(?:\\w:)?sheetViews)>/;\n/* 18.3 Worksheets */\nfunction parse_ws_xml(data, opts, idx, rels, wb, themes, styles) {\n\tif(!data) return data;\n\tif(DENSE != null && opts.dense == null) opts.dense = DENSE;\n\n\t/* 18.3.1.99 worksheet CT_Worksheet */\n\tvar s = opts.dense ? ([]) : ({});\n\tvar refguess = ({s: {r:2000000, c:2000000}, e: {r:0, c:0} });\n\n\tvar data1 = \"\", data2 = \"\";\n\tvar mtch = data.match(sheetdataregex);\n\tif(mtch) {\n\t\tdata1 = data.slice(0, mtch.index);\n\t\tdata2 = data.slice(mtch.index + mtch[0].length);\n\t} else data1 = data2 = data;\n\n\t/* 18.3.1.82 sheetPr CT_SheetPr */\n\tvar sheetPr = data1.match(sheetprregex);\n\tif(sheetPr) parse_ws_xml_sheetpr(sheetPr[0], s, wb, idx);\n\n\t/* 18.3.1.35 dimension CT_SheetDimension */\n\t// $FlowIgnore\n\tvar ridx = (data1.match(/<(?:\\w*:)?dimension/)||{index:-1}).index;\n\tif(ridx > 0) {\n\t\tvar ref = data1.slice(ridx,ridx+50).match(dimregex);\n\t\tif(ref) parse_ws_xml_dim(s, ref[1]);\n\t}\n\n\t/* 18.3.1.88 sheetViews CT_SheetViews */\n\tvar svs = data1.match(svsregex);\n\tif(svs && svs[1]) parse_ws_xml_sheetviews(svs[1], wb);\n\n\t/* 18.3.1.17 cols CT_Cols */\n\tvar columns = [];\n\tif(opts.cellStyles) {\n\t\t/* 18.3.1.13 col CT_Col */\n\t\tvar cols = data1.match(colregex);\n\t\tif(cols) parse_ws_xml_cols(columns, cols);\n\t}\n\n\t/* 18.3.1.80 sheetData CT_SheetData ? */\n\tif(mtch) parse_ws_xml_data(mtch[1], s, opts, refguess, themes, styles);\n\n\t/* 18.3.1.2 autoFilter CT_AutoFilter */\n\tvar afilter = data2.match(afregex);\n\tif(afilter) s['!autofilter'] = parse_ws_xml_autofilter(afilter[0]);\n\n\t/* 18.3.1.55 mergeCells CT_MergeCells */\n\tvar merges = [];\n\tvar _merge = data2.match(mergecregex);\n\tif(_merge) for(ridx = 0; ridx != _merge.length; ++ridx)\n\t\tmerges[ridx] = safe_decode_range(_merge[ridx].slice(_merge[ridx].indexOf(\"\\\"\")+1));\n\n\t/* 18.3.1.48 hyperlinks CT_Hyperlinks */\n\tvar hlink = data2.match(hlinkregex);\n\tif(hlink) parse_ws_xml_hlinks(s, hlink, rels);\n\n\t/* 18.3.1.62 pageMargins CT_PageMargins */\n\tvar margins = data2.match(marginregex);\n\tif(margins) s['!margins'] = parse_ws_xml_margins(parsexmltag(margins[0]));\n\n\tif(!s[\"!ref\"] && refguess.e.c >= refguess.s.c && refguess.e.r >= refguess.s.r) s[\"!ref\"] = encode_range(refguess);\n\tif(opts.sheetRows > 0 && s[\"!ref\"]) {\n\t\tvar tmpref = safe_decode_range(s[\"!ref\"]);\n\t\tif(opts.sheetRows <= +tmpref.e.r) {\n\t\t\ttmpref.e.r = opts.sheetRows - 1;\n\t\t\tif(tmpref.e.r > refguess.e.r) tmpref.e.r = refguess.e.r;\n\t\t\tif(tmpref.e.r < tmpref.s.r) tmpref.s.r = tmpref.e.r;\n\t\t\tif(tmpref.e.c > refguess.e.c) tmpref.e.c = refguess.e.c;\n\t\t\tif(tmpref.e.c < tmpref.s.c) tmpref.s.c = tmpref.e.c;\n\t\t\ts[\"!fullref\"] = s[\"!ref\"];\n\t\t\ts[\"!ref\"] = encode_range(tmpref);\n\t\t}\n\t}\n\tif(columns.length > 0) s[\"!cols\"] = columns;\n\tif(merges.length > 0) s[\"!merges\"] = merges;\n\treturn s;\n}\n\nfunction write_ws_xml_merges(merges) {\n\tif(merges.length === 0) return \"\";\n\tvar o = '';\n\tfor(var i = 0; i != merges.length; ++i) o += '';\n\treturn o + '';\n}\n\n/* 18.3.1.82-3 sheetPr CT_ChartsheetPr / CT_SheetPr */\nfunction parse_ws_xml_sheetpr(sheetPr, s, wb, idx) {\n\tvar data = parsexmltag(sheetPr);\n\tif(!wb.Sheets[idx]) wb.Sheets[idx] = {};\n\tif(data.codeName) wb.Sheets[idx].CodeName = data.codeName;\n}\n\n/* 18.3.1.85 sheetProtection CT_SheetProtection */\nfunction write_ws_xml_protection(sp) {\n\t// algorithmName, hashValue, saltValue, spinCountpassword\n\tvar o = ({sheet:1});\n\tvar deffalse = [\"objects\", \"scenarios\", \"selectLockedCells\", \"selectUnlockedCells\"];\n\tvar deftrue = [\n\t\t\"formatColumns\", \"formatRows\", \"formatCells\",\n\t\t\"insertColumns\", \"insertRows\", \"insertHyperlinks\",\n\t\t\"deleteColumns\", \"deleteRows\",\n\t\t\"sort\", \"autoFilter\", \"pivotTables\"\n\t];\n\tdeffalse.forEach(function(n) { if(sp[n] != null && sp[n]) o[n] = \"1\"; });\n\tdeftrue.forEach(function(n) { if(sp[n] != null && !sp[n]) o[n] = \"0\"; });\n\t/* TODO: algorithm */\n\tif(sp.password) o.password = crypto_CreatePasswordVerifier_Method1(sp.password).toString(16).toUpperCase();\n\treturn writextag('sheetProtection', null, o);\n}\n\nfunction parse_ws_xml_hlinks(s, data, rels) {\n\tvar dense = Array.isArray(s);\n\tfor(var i = 0; i != data.length; ++i) {\n\t\tvar val = parsexmltag(utf8read(data[i]), true);\n\t\tif(!val.ref) return;\n\t\tvar rel = ((rels || {})['!id']||[])[val.id];\n\t\tif(rel) {\n\t\t\tval.Target = rel.Target;\n\t\t\tif(val.location) val.Target += \"#\"+val.location;\n\t\t} else {\n\t\t\tval.Target = \"#\" + val.location;\n\t\t\trel = {Target: val.Target, TargetMode: 'Internal'};\n\t\t}\n\t\tval.Rel = rel;\n\t\tif(val.tooltip) { val.Tooltip = val.tooltip; delete val.tooltip; }\n\t\tvar rng = safe_decode_range(val.ref);\n\t\tfor(var R=rng.s.r;R<=rng.e.r;++R) for(var C=rng.s.c;C<=rng.e.c;++C) {\n\t\t\tvar addr = encode_cell({c:C,r:R});\n\t\t\tif(dense) {\n\t\t\t\tif(!s[R]) s[R] = [];\n\t\t\t\tif(!s[R][C]) s[R][C] = {t:\"z\",v:undefined};\n\t\t\t\ts[R][C].l = val;\n\t\t\t} else {\n\t\t\t\tif(!s[addr]) s[addr] = {t:\"z\",v:undefined};\n\t\t\t\ts[addr].l = val;\n\t\t\t}\n\t\t}\n\t}\n}\n\nfunction parse_ws_xml_margins(margin) {\n\tvar o = {};\n\t[\"left\", \"right\", \"top\", \"bottom\", \"header\", \"footer\"].forEach(function(k) {\n\t\tif(margin[k]) o[k] = parseFloat(margin[k]);\n\t});\n\treturn o;\n}\nfunction write_ws_xml_margins(margin) {\n\tdefault_margins(margin);\n\treturn writextag('pageMargins', null, margin);\n}\n\nfunction parse_ws_xml_cols(columns, cols) {\n\tvar seencol = false;\n\tfor(var coli = 0; coli != cols.length; ++coli) {\n\t\tvar coll = parsexmltag(cols[coli], true);\n\t\tif(coll.hidden) coll.hidden = parsexmlbool(coll.hidden);\n\t\tvar colm=parseInt(coll.min, 10)-1, colM=parseInt(coll.max,10)-1;\n\t\tdelete coll.min; delete coll.max; coll.width = +coll.width;\n\t\tif(!seencol && coll.width) { seencol = true; find_mdw_colw(coll.width); }\n\t\tprocess_col(coll);\n\t\twhile(colm <= colM) columns[colm++] = dup(coll);\n\t}\n}\n\nfunction write_ws_xml_cols(ws, cols) {\n\tvar o = [\"\"], col;\n\tfor(var i = 0; i != cols.length; ++i) {\n\t\tif(!(col = cols[i])) continue;\n\t\to[o.length] = (writextag('col', null, col_obj_w(i, col)));\n\t}\n\to[o.length] = \"\";\n\treturn o.join(\"\");\n}\n\nfunction parse_ws_xml_autofilter(data) {\n\tvar o = { ref: (data.match(/ref=\"([^\"]*)\"/)||[])[1]};\n\treturn o;\n}\nfunction write_ws_xml_autofilter(data, ws, wb, idx) {\n\tvar ref = typeof data.ref == \"string\" ? data.ref : encode_range(data.ref);\n\tif(!wb.Workbook) wb.Workbook = {};\n\tif(!wb.Workbook.Names) wb.Workbook.Names = [];\n\tvar names = wb.Workbook.Names;\n\tvar range = decode_range(ref);\n\tif(range.s.r == range.e.r) { range.e.r = decode_range(ws[\"!ref\"]).e.r; ref = encode_range(range); }\n\tfor(var i = 0; i < names.length; ++i) {\n\t\tvar name = names[i];\n\t\tif(name.Name != '_xlnm._FilterDatabase') continue;\n\t\tif(name.Sheet != idx) continue;\n\t\tname.Ref = \"'\" + wb.SheetNames[idx] + \"'!\" + ref; break;\n\t}\n\tif(i == names.length) names.push({ Name: '_xlnm._FilterDatabase', Sheet: idx, Ref: \"'\" + wb.SheetNames[idx] + \"'!\" + ref });\n\treturn writextag(\"autoFilter\", null, {ref:ref});\n}\n\n/* 18.3.1.88 sheetViews CT_SheetViews */\n/* 18.3.1.87 sheetView CT_SheetView */\nvar sviewregex = /<(?:\\w:)?sheetView(?:[^>a-z][^>]*)?\\/>/;\nfunction parse_ws_xml_sheetviews(data, wb) {\n\t(data.match(sviewregex)||[]).forEach(function(r) {\n\t\tvar tag = parsexmltag(r);\n\t\tif(parsexmlbool(tag.rightToLeft)) {\n\t\t\tif(!wb.Views) wb.Views = [{}];\n\t\t\tif(!wb.Views[0]) wb.Views[0] = {};\n\t\t\twb.Views[0].RTL = true;\n\t\t}\n\t});\n}\nfunction write_ws_xml_sheetviews(ws, opts, idx, wb) {\n\tvar sview = {workbookViewId:\"0\"};\n\t// $FlowIgnore\n\tif( (((wb||{}).Workbook||{}).Views||[])[0] ) sview.rightToLeft = wb.Workbook.Views[0].RTL ? \"1\" : \"0\";\n\treturn writextag(\"sheetViews\", writextag(\"sheetView\", null, sview), {});\n}\n\nfunction write_ws_xml_cell(cell, ref, ws, opts) {\n\tif(cell.v === undefined && cell.f === undefined || cell.t === 'z') return \"\";\n\tvar vv = \"\";\n\tvar oldt = cell.t, oldv = cell.v;\n\tswitch(cell.t) {\n\t\tcase 'b': vv = cell.v ? \"1\" : \"0\"; break;\n\t\tcase 'n': vv = ''+cell.v; break;\n\t\tcase 'e': vv = BErr[cell.v]; break;\n\t\tcase 'd':\n\t\t\tif(opts.cellDates) vv = parseDate(cell.v, -1).toISOString();\n\t\t\telse {\n\t\t\t\tcell = dup(cell);\n\t\t\t\tcell.t = 'n';\n\t\t\t\tvv = ''+(cell.v = datenum(parseDate(cell.v)));\n\t\t\t}\n\t\t\tif(typeof cell.z === 'undefined') cell.z = SSF._table[14];\n\t\t\tbreak;\n\t\tdefault: vv = cell.v; break;\n\t}\n\tvar v = writetag('v', escapexml(vv)), o = ({r:ref});\n\t/* TODO: cell style */\n\tvar os = get_cell_style(opts.cellXfs, cell, opts);\n\tif(os !== 0) o.s = os;\n\tswitch(cell.t) {\n\t\tcase 'n': break;\n\t\tcase 'd': o.t = \"d\"; break;\n\t\tcase 'b': o.t = \"b\"; break;\n\t\tcase 'e': o.t = \"e\"; break;\n\t\tdefault: if(cell.v == null) { delete cell.t; break; }\n\t\t\tif(opts.bookSST) {\n\t\t\t\tv = writetag('v', ''+get_sst_id(opts.Strings, cell.v, opts.revStrings));\n\t\t\t\to.t = \"s\"; break;\n\t\t\t}\n\t\t\to.t = \"str\"; break;\n\t}\n\tif(cell.t != oldt) { cell.t = oldt; cell.v = oldv; }\n\tif(cell.f) {\n\t\tvar ff = cell.F && cell.F.slice(0, ref.length) == ref ? {t:\"array\", ref:cell.F} : null;\n\t\tv = writextag('f', escapexml(cell.f), ff) + (cell.v != null ? v : \"\");\n\t}\n\tif(cell.l) ws['!links'].push([ref, cell.l]);\n\tif(cell.c) ws['!comments'].push([ref, cell.c]);\n\treturn writextag('c', v, o);\n}\n\nvar parse_ws_xml_data = (function() {\n\tvar cellregex = /<(?:\\w+:)?c[ >]/, rowregex = /<\\/(?:\\w+:)?row>/;\n\tvar rregex = /r=[\"']([^\"']*)[\"']/, isregex = /<(?:\\w+:)?is>([\\S\\s]*?)<\\/(?:\\w+:)?is>/;\n\tvar refregex = /ref=[\"']([^\"']*)[\"']/;\n\tvar match_v = matchtag(\"v\"), match_f = matchtag(\"f\");\n\nreturn function parse_ws_xml_data(sdata, s, opts, guess, themes, styles) {\n\tvar ri = 0, x = \"\", cells = [], cref = [], idx=0, i=0, cc=0, d=\"\", p;\n\tvar tag, tagr = 0, tagc = 0;\n\tvar sstr, ftag;\n\tvar fmtid = 0, fillid = 0;\n\tvar do_format = Array.isArray(styles.CellXf), cf;\n\tvar arrayf = [];\n\tvar sharedf = [];\n\tvar dense = Array.isArray(s);\n\tvar rows = [], rowobj = {}, rowrite = false;\n\tfor(var marr = sdata.split(rowregex), mt = 0, marrlen = marr.length; mt != marrlen; ++mt) {\n\t\tx = marr[mt].trim();\n\t\tvar xlen = x.length;\n\t\tif(xlen === 0) continue;\n\n\t\t/* 18.3.1.73 row CT_Row */\n\t\tfor(ri = 0; ri < xlen; ++ri) if(x.charCodeAt(ri) === 62) break; ++ri;\n\t\ttag = parsexmltag(x.slice(0,ri), true);\n\t\ttagr = tag.r != null ? parseInt(tag.r, 10) : tagr+1; tagc = -1;\n\t\tif(opts.sheetRows && opts.sheetRows < tagr) continue;\n\t\tif(guess.s.r > tagr - 1) guess.s.r = tagr - 1;\n\t\tif(guess.e.r < tagr - 1) guess.e.r = tagr - 1;\n\n\t\tif(opts && opts.cellStyles) {\n\t\t\trowobj = {}; rowrite = false;\n\t\t\tif(tag.ht) { rowrite = true; rowobj.hpt = parseFloat(tag.ht); rowobj.hpx = pt2px(rowobj.hpt); }\n\t\t\tif(tag.hidden == \"1\") { rowrite = true; rowobj.hidden = true; }\n\t\t\tif(tag.outlineLevel != null) { rowrite = true; rowobj.level = +tag.outlineLevel; }\n\t\t\tif(rowrite) rows[tagr-1] = rowobj;\n\t\t}\n\n\t\t/* 18.3.1.4 c CT_Cell */\n\t\tcells = x.slice(ri).split(cellregex);\n\t\tfor(ri = 0; ri != cells.length; ++ri) {\n\t\t\tx = cells[ri].trim();\n\t\t\tif(x.length === 0) continue;\n\t\t\tcref = x.match(rregex); idx = ri; i=0; cc=0;\n\t\t\tx = \"\":\"\") + x;\n\t\t\tif(cref != null && cref.length === 2) {\n\t\t\t\tidx = 0; d=cref[1];\n\t\t\t\tfor(i=0; i != d.length; ++i) {\n\t\t\t\t\tif((cc=d.charCodeAt(i)-64) < 1 || cc > 26) break;\n\t\t\t\t\tidx = 26*idx + cc;\n\t\t\t\t}\n\t\t\t\t--idx;\n\t\t\t\ttagc = idx;\n\t\t\t} else ++tagc;\n\t\t\tfor(i = 0; i != x.length; ++i) if(x.charCodeAt(i) === 62) break; ++i;\n\t\t\ttag = parsexmltag(x.slice(0,i), true);\n\t\t\tif(!tag.r) tag.r = encode_cell({r:tagr-1, c:tagc});\n\t\t\td = x.slice(i);\n\t\t\tp = ({t:\"\"});\n\n\t\t\tif((cref=d.match(match_v))!= null && cref[1] !== '') p.v=unescapexml(cref[1]);\n\t\t\tif(opts.cellFormula) {\n\t\t\t\tif((cref=d.match(match_f))!= null && cref[1] !== '') {\n\t\t\t\t\t/* TODO: match against XLSXFutureFunctions */\n\t\t\t\t\tp.f=_xlfn(unescapexml(utf8read(cref[1])));\n\t\t\t\t\tif(cref[0].indexOf('t=\"array\"') > -1) {\n\t\t\t\t\t\tp.F = (d.match(refregex)||[])[1];\n\t\t\t\t\t\tif(p.F.indexOf(\":\") > -1) arrayf.push([safe_decode_range(p.F), p.F]);\n\t\t\t\t\t} else if(cref[0].indexOf('t=\"shared\"') > -1) {\n\t\t\t\t\t\t// TODO: parse formula\n\t\t\t\t\t\tftag = parsexmltag(cref[0]);\n\t\t\t\t\t\tsharedf[parseInt(ftag.si, 10)] = [ftag, _xlfn(unescapexml(utf8read(cref[1]))), tag.r];\n\t\t\t\t\t}\n\t\t\t\t} else if((cref=d.match(/]*\\/>/))) {\n\t\t\t\t\tftag = parsexmltag(cref[0]);\n\t\t\t\t\tif(sharedf[ftag.si]) p.f = shift_formula_xlsx(sharedf[ftag.si][1], sharedf[ftag.si][2]/*[0].ref*/, tag.r);\n\t\t\t\t}\n\t\t\t\t/* TODO: factor out contains logic */\n\t\t\t\tvar _tag = decode_cell(tag.r);\n\t\t\t\tfor(i = 0; i < arrayf.length; ++i)\n\t\t\t\t\tif(_tag.r >= arrayf[i][0].s.r && _tag.r <= arrayf[i][0].e.r)\n\t\t\t\t\t\tif(_tag.c >= arrayf[i][0].s.c && _tag.c <= arrayf[i][0].e.c)\n\t\t\t\t\t\t\tp.F = arrayf[i][1];\n\t\t\t}\n\n\t\t\tif(tag.t == null && p.v === undefined) {\n\t\t\t\tif(p.f || p.F) {\n\t\t\t\t\tp.v = 0; p.t = \"n\";\n\t\t\t\t} else if(!opts.sheetStubs) continue;\n\t\t\t\telse p.t = \"z\";\n\t\t\t}\n\t\t\telse p.t = tag.t || \"n\";\n\t\t\tif(guess.s.c > tagc) guess.s.c = tagc;\n\t\t\tif(guess.e.c < tagc) guess.e.c = tagc;\n\t\t\t/* 18.18.11 t ST_CellType */\n\t\t\tswitch(p.t) {\n\t\t\t\tcase 'n':\n\t\t\t\t\tif(p.v == \"\" || p.v == null) {\n\t\t\t\t\t\tif(!opts.sheetStubs) continue;\n\t\t\t\t\t\tp.t = 'z';\n\t\t\t\t\t} else p.v = parseFloat(p.v);\n\t\t\t\t\tbreak;\n\t\t\t\tcase 's':\n\t\t\t\t\tif(typeof p.v == 'undefined') {\n\t\t\t\t\t\tif(!opts.sheetStubs) continue;\n\t\t\t\t\t\tp.t = 'z';\n\t\t\t\t\t} else {\n\t\t\t\t\t\tsstr = strs[parseInt(p.v, 10)];\n\t\t\t\t\t\tp.v = sstr.t;\n\t\t\t\t\t\tp.r = sstr.r;\n\t\t\t\t\t\tif(opts.cellHTML) p.h = sstr.h;\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'str':\n\t\t\t\t\tp.t = \"s\";\n\t\t\t\t\tp.v = (p.v!=null) ? utf8read(p.v) : '';\n\t\t\t\t\tif(opts.cellHTML) p.h = escapehtml(p.v);\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'inlineStr':\n\t\t\t\t\tcref = d.match(isregex);\n\t\t\t\t\tp.t = 's';\n\t\t\t\t\tif(cref != null && (sstr = parse_si(cref[1]))) p.v = sstr.t; else p.v = \"\";\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'b': p.v = parsexmlbool(p.v); break;\n\t\t\t\tcase 'd':\n\t\t\t\t\tif(opts.cellDates) p.v = parseDate(p.v, 1);\n\t\t\t\t\telse { p.v = datenum(parseDate(p.v, 1)); p.t = 'n'; }\n\t\t\t\t\tbreak;\n\t\t\t\t/* error string in .w, number in .v */\n\t\t\t\tcase 'e':\n\t\t\t\t\tif(!opts || opts.cellText !== false) p.w = p.v;\n\t\t\t\t\tp.v = RBErr[p.v]; break;\n\t\t\t}\n\t\t\t/* formatting */\n\t\t\tfmtid = fillid = 0;\n\t\t\tif(do_format && tag.s !== undefined) {\n\t\t\t\tcf = styles.CellXf[tag.s];\n\t\t\t\tif(cf != null) {\n\t\t\t\t\tif(cf.numFmtId != null) fmtid = cf.numFmtId;\n\t\t\t\t\tif(opts.cellStyles) {\n\t\t\t\t\t\tif(cf.fillId != null) fillid = cf.fillId;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tsafe_format(p, fmtid, fillid, opts, themes, styles);\n\t\t\tif(opts.cellDates && do_format && p.t == 'n' && SSF.is_date(SSF._table[fmtid])) { p.t = 'd'; p.v = numdate(p.v); }\n\t\t\tif(dense) {\n\t\t\t\tvar _r = decode_cell(tag.r);\n\t\t\t\tif(!s[_r.r]) s[_r.r] = [];\n\t\t\t\ts[_r.r][_r.c] = p;\n\t\t\t} else s[tag.r] = p;\n\t\t}\n\t}\n\tif(rows.length > 0) s['!rows'] = rows;\n}; })();\n\nfunction write_ws_xml_data(ws, opts, idx, wb) {\n\tvar o = [], r = [], range = safe_decode_range(ws['!ref']), cell=\"\", ref, rr = \"\", cols = [], R=0, C=0, rows = ws['!rows'];\n\tvar dense = Array.isArray(ws);\n\tvar params = ({r:rr}), row, height = -1;\n\tfor(C = range.s.c; C <= range.e.c; ++C) cols[C] = encode_col(C);\n\tfor(R = range.s.r; R <= range.e.r; ++R) {\n\t\tr = [];\n\t\trr = encode_row(R);\n\t\tfor(C = range.s.c; C <= range.e.c; ++C) {\n\t\t\tref = cols[C] + rr;\n\t\t\tvar _cell = dense ? (ws[R]||[])[C]: ws[ref];\n\t\t\tif(_cell === undefined) continue;\n\t\t\tif((cell = write_ws_xml_cell(_cell, ref, ws, opts, idx, wb)) != null) r.push(cell);\n\t\t}\n\t\tif(r.length > 0 || (rows && rows[R])) {\n\t\t\tparams = ({r:rr});\n\t\t\tif(rows && rows[R]) {\n\t\t\t\trow = rows[R];\n\t\t\t\tif(row.hidden) params.hidden = 1;\n\t\t\t\theight = -1;\n\t\t\t\tif(row.hpx) height = px2pt(row.hpx);\n\t\t\t\telse if(row.hpt) height = row.hpt;\n\t\t\t\tif(height > -1) { params.ht = height; params.customHeight = 1; }\n\t\t\t\tif(row.level) { params.outlineLevel = row.level; }\n\t\t\t}\n\t\t\to[o.length] = (writextag('row', r.join(\"\"), params));\n\t\t}\n\t}\n\tif(rows) for(; R < rows.length; ++R) {\n\t\tif(rows && rows[R]) {\n\t\t\tparams = ({r:R+1});\n\t\t\trow = rows[R];\n\t\t\tif(row.hidden) params.hidden = 1;\n\t\t\theight = -1;\n\t\t\tif (row.hpx) height = px2pt(row.hpx);\n\t\t\telse if (row.hpt) height = row.hpt;\n\t\t\tif (height > -1) { params.ht = height; params.customHeight = 1; }\n\t\t\tif (row.level) { params.outlineLevel = row.level; }\n\t\t\to[o.length] = (writextag('row', \"\", params));\n\t\t}\n\t}\n\treturn o.join(\"\");\n}\n\nvar WS_XML_ROOT = writextag('worksheet', null, {\n\t'xmlns': XMLNS.main[0],\n\t'xmlns:r': XMLNS.r\n});\n\nfunction write_ws_xml(idx, opts, wb, rels) {\n\tvar o = [XML_HEADER, WS_XML_ROOT];\n\tvar s = wb.SheetNames[idx], sidx = 0, rdata = \"\";\n\tvar ws = wb.Sheets[s];\n\tif(ws == null) ws = {};\n\tvar ref = ws['!ref'] || 'A1';\n\tvar range = safe_decode_range(ref);\n\tif(range.e.c > 0x3FFF || range.e.r > 0xFFFFF) {\n\t\tif(opts.WTF) throw new Error(\"Range \" + ref + \" exceeds format limit A1:XFD1048576\");\n\t\trange.e.c = Math.min(range.e.c, 0x3FFF);\n\t\trange.e.r = Math.min(range.e.c, 0xFFFFF);\n\t\tref = encode_range(range);\n\t}\n\tif(!rels) rels = {};\n\tws['!comments'] = [];\n\tws['!drawing'] = [];\n\n\tif(opts.bookType !== 'xlsx' && wb.vbaraw) {\n\t\tvar cname = wb.SheetNames[idx];\n\t\ttry { if(wb.Workbook) cname = wb.Workbook.Sheets[idx].CodeName || cname; } catch(e) {}\n\t\to[o.length] = (writextag('sheetPr', null, {'codeName': escapexml(cname)}));\n\t}\n\n\to[o.length] = (writextag('dimension', null, {'ref': ref}));\n\n\to[o.length] = write_ws_xml_sheetviews(ws, opts, idx, wb);\n\n\t/* TODO: store in WB, process styles */\n\tif(opts.sheetFormat) o[o.length] = (writextag('sheetFormatPr', null, {\n\t\tdefaultRowHeight:opts.sheetFormat.defaultRowHeight||'16',\n\t\tbaseColWidth:opts.sheetFormat.baseColWidth||'10',\n\t\toutlineLevelRow:opts.sheetFormat.outlineLevelRow||'7'\n\t}));\n\n\tif(ws['!cols'] != null && ws['!cols'].length > 0) o[o.length] = (write_ws_xml_cols(ws, ws['!cols']));\n\n\to[sidx = o.length] = '';\n\tws['!links'] = [];\n\tif(ws['!ref'] != null) {\n\t\trdata = write_ws_xml_data(ws, opts, idx, wb, rels);\n\t\tif(rdata.length > 0) o[o.length] = (rdata);\n\t}\n\tif(o.length>sidx+1) { o[o.length] = (''); o[sidx]=o[sidx].replace(\"/>\",\">\"); }\n\n\t/* sheetCalcPr */\n\n\tif(ws['!protect'] != null) o[o.length] = write_ws_xml_protection(ws['!protect']);\n\n\t/* protectedRanges */\n\t/* scenarios */\n\n\tif(ws['!autofilter'] != null) o[o.length] = write_ws_xml_autofilter(ws['!autofilter'], ws, wb, idx);\n\n\t/* sortState */\n\t/* dataConsolidate */\n\t/* customSheetViews */\n\n\tif(ws['!merges'] != null && ws['!merges'].length > 0) o[o.length] = (write_ws_xml_merges(ws['!merges']));\n\n\t/* phoneticPr */\n\t/* conditionalFormatting */\n\t/* dataValidations */\n\n\tvar relc = -1, rel, rId = -1;\n\tif(ws['!links'].length > 0) {\n\t\to[o.length] = \"\";\n\t\tws['!links'].forEach(function(l) {\n\t\t\tif(!l[1].Target) return;\n\t\t\trel = ({\"ref\":l[0]});\n\t\t\tif(l[1].Target.charAt(0) != \"#\") {\n\t\t\t\trId = add_rels(rels, -1, escapexml(l[1].Target).replace(/#.*$/, \"\"), RELS.HLINK);\n\t\t\t\trel[\"r:id\"] = \"rId\"+rId;\n\t\t\t}\n\t\t\tif((relc = l[1].Target.indexOf(\"#\")) > -1) rel.location = escapexml(l[1].Target.slice(relc+1));\n\t\t\tif(l[1].Tooltip) rel.tooltip = escapexml(l[1].Tooltip);\n\t\t\to[o.length] = writextag(\"hyperlink\",null,rel);\n\t\t});\n\t\to[o.length] = \"\";\n\t}\n\tdelete ws['!links'];\n\n\t/* printOptions */\n\tif (ws['!margins'] != null) o[o.length] = write_ws_xml_margins(ws['!margins']);\n\t/* pageSetup */\n\n\t//var hfidx = o.length;\n\to[o.length] = \"\";\n\n\t/* rowBreaks */\n\t/* colBreaks */\n\t/* customProperties */\n\t/* cellWatches */\n\n\tif(!opts || opts.ignoreEC || (opts.ignoreEC == (void 0))) o[o.length] = writetag(\"ignoredErrors\", writextag(\"ignoredError\", null, {numberStoredAsText:1, sqref:ref}));\n\n\t/* smartTags */\n\n\tif(ws['!drawing'].length > 0) {\n\t\trId = add_rels(rels, -1, \"../drawings/drawing\" + (idx+1) + \".xml\", RELS.DRAW);\n\t\to[o.length] = writextag(\"drawing\", null, {\"r:id\":\"rId\" + rId});\n\t}\n\telse delete ws['!drawing'];\n\n\tif(ws['!comments'].length > 0) {\n\t\trId = add_rels(rels, -1, \"../drawings/vmlDrawing\" + (idx+1) + \".vml\", RELS.VML);\n\t\to[o.length] = writextag(\"legacyDrawing\", null, {\"r:id\":\"rId\" + rId});\n\t\tws['!legacy'] = rId;\n\t}\n\n\t/* drawingHF */\n\t/* picture */\n\t/* oleObjects */\n\t/* controls */\n\t/* webPublishItems */\n\t/* tableParts */\n\t/* extList */\n\n\tif(o.length>2) { o[o.length] = (''); o[1]=o[1].replace(\"/>\",\">\"); }\n\treturn o.join(\"\");\n}\n\n/* [MS-XLSB] 2.4.726 BrtRowHdr */\nfunction parse_BrtRowHdr(data, length) {\n\tvar z = ({});\n\tvar tgt = data.l + length;\n\tz.r = data.read_shift(4);\n\tdata.l += 4; // TODO: ixfe\n\tvar miyRw = data.read_shift(2);\n\tdata.l += 1; // TODO: top/bot padding\n\tvar flags = data.read_shift(1);\n\tdata.l = tgt;\n\tif(flags & 0x07) z.level = flags & 0x07;\n\tif(flags & 0x10) z.hidden = true;\n\tif(flags & 0x20) z.hpt = miyRw / 20;\n\treturn z;\n}\nfunction write_BrtRowHdr(R, range, ws) {\n\tvar o = new_buf(17+8*16);\n\tvar row = (ws['!rows']||[])[R]||{};\n\to.write_shift(4, R);\n\n\to.write_shift(4, 0); /* TODO: ixfe */\n\n\tvar miyRw = 0x0140;\n\tif(row.hpx) miyRw = px2pt(row.hpx) * 20;\n\telse if(row.hpt) miyRw = row.hpt * 20;\n\to.write_shift(2, miyRw);\n\n\to.write_shift(1, 0); /* top/bot padding */\n\n\tvar flags = 0x0;\n\tif(row.level) flags |= row.level;\n\tif(row.hidden) flags |= 0x10;\n\tif(row.hpx || row.hpt) flags |= 0x20;\n\to.write_shift(1, flags);\n\n\to.write_shift(1, 0); /* phonetic guide */\n\n\t/* [MS-XLSB] 2.5.8 BrtColSpan explains the mechanism */\n\tvar ncolspan = 0, lcs = o.l;\n\to.l += 4;\n\n\tvar caddr = {r:R, c:0};\n\tfor(var i = 0; i < 16; ++i) {\n\t\tif((range.s.c > ((i+1) << 10)) || (range.e.c < (i << 10))) continue;\n\t\tvar first = -1, last = -1;\n\t\tfor(var j = (i<<10); j < ((i+1)<<10); ++j) {\n\t\t\tcaddr.c = j;\n\t\t\tvar cell = Array.isArray(ws) ? (ws[caddr.r]||[])[caddr.c] : ws[encode_cell(caddr)];\n\t\t\tif(cell) { if(first < 0) first = j; last = j; }\n\t\t}\n\t\tif(first < 0) continue;\n\t\t++ncolspan;\n\t\to.write_shift(4, first);\n\t\to.write_shift(4, last);\n\t}\n\n\tvar l = o.l;\n\to.l = lcs;\n\to.write_shift(4, ncolspan);\n\to.l = l;\n\n\treturn o.length > o.l ? o.slice(0, o.l) : o;\n}\nfunction write_row_header(ba, ws, range, R) {\n\tvar o = write_BrtRowHdr(R, range, ws);\n\tif((o.length > 17) || (ws['!rows']||[])[R]) write_record(ba, 'BrtRowHdr', o);\n}\n\n/* [MS-XLSB] 2.4.820 BrtWsDim */\nvar parse_BrtWsDim = parse_UncheckedRfX;\nvar write_BrtWsDim = write_UncheckedRfX;\n\n/* [MS-XLSB] 2.4.821 BrtWsFmtInfo */\nfunction parse_BrtWsFmtInfo() {\n}\n//function write_BrtWsFmtInfo(ws, o) { }\n\n/* [MS-XLSB] 2.4.823 BrtWsProp */\nfunction parse_BrtWsProp(data, length) {\n\tvar z = {};\n\t/* TODO: pull flags */\n\tdata.l += 19;\n\tz.name = parse_XLSBCodeName(data, length - 19);\n\treturn z;\n}\nfunction write_BrtWsProp(str, o) {\n\tif(o == null) o = new_buf(84+4*str.length);\n\tfor(var i = 0; i < 3; ++i) o.write_shift(1,0);\n\twrite_BrtColor({auto:1}, o);\n\to.write_shift(-4,-1);\n\to.write_shift(-4,-1);\n\twrite_XLSBCodeName(str, o);\n\treturn o.slice(0, o.l);\n}\n\n/* [MS-XLSB] 2.4.306 BrtCellBlank */\nfunction parse_BrtCellBlank(data) {\n\tvar cell = parse_XLSBCell(data);\n\treturn [cell];\n}\nfunction write_BrtCellBlank(cell, ncell, o) {\n\tif(o == null) o = new_buf(8);\n\treturn write_XLSBCell(ncell, o);\n}\n\n\n/* [MS-XLSB] 2.4.307 BrtCellBool */\nfunction parse_BrtCellBool(data) {\n\tvar cell = parse_XLSBCell(data);\n\tvar fBool = data.read_shift(1);\n\treturn [cell, fBool, 'b'];\n}\nfunction write_BrtCellBool(cell, ncell, o) {\n\tif(o == null) o = new_buf(9);\n\twrite_XLSBCell(ncell, o);\n\to.write_shift(1, cell.v ? 1 : 0);\n\treturn o;\n}\n\n/* [MS-XLSB] 2.4.308 BrtCellError */\nfunction parse_BrtCellError(data) {\n\tvar cell = parse_XLSBCell(data);\n\tvar bError = data.read_shift(1);\n\treturn [cell, bError, 'e'];\n}\n\n/* [MS-XLSB] 2.4.311 BrtCellIsst */\nfunction parse_BrtCellIsst(data) {\n\tvar cell = parse_XLSBCell(data);\n\tvar isst = data.read_shift(4);\n\treturn [cell, isst, 's'];\n}\nfunction write_BrtCellIsst(cell, ncell, o) {\n\tif(o == null) o = new_buf(12);\n\twrite_XLSBCell(ncell, o);\n\to.write_shift(4, ncell.v);\n\treturn o;\n}\n\n/* [MS-XLSB] 2.4.313 BrtCellReal */\nfunction parse_BrtCellReal(data) {\n\tvar cell = parse_XLSBCell(data);\n\tvar value = parse_Xnum(data);\n\treturn [cell, value, 'n'];\n}\nfunction write_BrtCellReal(cell, ncell, o) {\n\tif(o == null) o = new_buf(16);\n\twrite_XLSBCell(ncell, o);\n\twrite_Xnum(cell.v, o);\n\treturn o;\n}\n\n/* [MS-XLSB] 2.4.314 BrtCellRk */\nfunction parse_BrtCellRk(data) {\n\tvar cell = parse_XLSBCell(data);\n\tvar value = parse_RkNumber(data);\n\treturn [cell, value, 'n'];\n}\nfunction write_BrtCellRk(cell, ncell, o) {\n\tif(o == null) o = new_buf(12);\n\twrite_XLSBCell(ncell, o);\n\twrite_RkNumber(cell.v, o);\n\treturn o;\n}\n\n\n/* [MS-XLSB] 2.4.317 BrtCellSt */\nfunction parse_BrtCellSt(data) {\n\tvar cell = parse_XLSBCell(data);\n\tvar value = parse_XLWideString(data);\n\treturn [cell, value, 'str'];\n}\nfunction write_BrtCellSt(cell, ncell, o) {\n\tif(o == null) o = new_buf(12 + 4 * cell.v.length);\n\twrite_XLSBCell(ncell, o);\n\twrite_XLWideString(cell.v, o);\n\treturn o.length > o.l ? o.slice(0, o.l) : o;\n}\n\n/* [MS-XLSB] 2.4.653 BrtFmlaBool */\nfunction parse_BrtFmlaBool(data, length, opts) {\n\tvar end = data.l + length;\n\tvar cell = parse_XLSBCell(data);\n\tcell.r = opts['!row'];\n\tvar value = data.read_shift(1);\n\tvar o = [cell, value, 'b'];\n\tif(opts.cellFormula) {\n\t\tdata.l += 2;\n\t\tvar formula = parse_XLSBCellParsedFormula(data, end - data.l, opts);\n\t\to[3] = stringify_formula(formula, null/*range*/, cell, opts.supbooks, opts);/* TODO */\n\t}\n\telse data.l = end;\n\treturn o;\n}\n\n/* [MS-XLSB] 2.4.654 BrtFmlaError */\nfunction parse_BrtFmlaError(data, length, opts) {\n\tvar end = data.l + length;\n\tvar cell = parse_XLSBCell(data);\n\tcell.r = opts['!row'];\n\tvar value = data.read_shift(1);\n\tvar o = [cell, value, 'e'];\n\tif(opts.cellFormula) {\n\t\tdata.l += 2;\n\t\tvar formula = parse_XLSBCellParsedFormula(data, end - data.l, opts);\n\t\to[3] = stringify_formula(formula, null/*range*/, cell, opts.supbooks, opts);/* TODO */\n\t}\n\telse data.l = end;\n\treturn o;\n}\n\n/* [MS-XLSB] 2.4.655 BrtFmlaNum */\nfunction parse_BrtFmlaNum(data, length, opts) {\n\tvar end = data.l + length;\n\tvar cell = parse_XLSBCell(data);\n\tcell.r = opts['!row'];\n\tvar value = parse_Xnum(data);\n\tvar o = [cell, value, 'n'];\n\tif(opts.cellFormula) {\n\t\tdata.l += 2;\n\t\tvar formula = parse_XLSBCellParsedFormula(data, end - data.l, opts);\n\t\to[3] = stringify_formula(formula, null/*range*/, cell, opts.supbooks, opts);/* TODO */\n\t}\n\telse data.l = end;\n\treturn o;\n}\n\n/* [MS-XLSB] 2.4.656 BrtFmlaString */\nfunction parse_BrtFmlaString(data, length, opts) {\n\tvar end = data.l + length;\n\tvar cell = parse_XLSBCell(data);\n\tcell.r = opts['!row'];\n\tvar value = parse_XLWideString(data);\n\tvar o = [cell, value, 'str'];\n\tif(opts.cellFormula) {\n\t\tdata.l += 2;\n\t\tvar formula = parse_XLSBCellParsedFormula(data, end - data.l, opts);\n\t\to[3] = stringify_formula(formula, null/*range*/, cell, opts.supbooks, opts);/* TODO */\n\t}\n\telse data.l = end;\n\treturn o;\n}\n\n/* [MS-XLSB] 2.4.682 BrtMergeCell */\nvar parse_BrtMergeCell = parse_UncheckedRfX;\nvar write_BrtMergeCell = write_UncheckedRfX;\n/* [MS-XLSB] 2.4.107 BrtBeginMergeCells */\nfunction write_BrtBeginMergeCells(cnt, o) {\n\tif(o == null) o = new_buf(4);\n\to.write_shift(4, cnt);\n\treturn o;\n}\n\n/* [MS-XLSB] 2.4.662 BrtHLink */\nfunction parse_BrtHLink(data, length) {\n\tvar end = data.l + length;\n\tvar rfx = parse_UncheckedRfX(data, 16);\n\tvar relId = parse_XLNullableWideString(data);\n\tvar loc = parse_XLWideString(data);\n\tvar tooltip = parse_XLWideString(data);\n\tvar display = parse_XLWideString(data);\n\tdata.l = end;\n\tvar o = ({rfx:rfx, relId:relId, loc:loc, display:display});\n\tif(tooltip) o.Tooltip = tooltip;\n\treturn o;\n}\nfunction write_BrtHLink(l, rId) {\n\tvar o = new_buf(50+4*(l[1].Target.length + (l[1].Tooltip || \"\").length));\n\twrite_UncheckedRfX({s:decode_cell(l[0]), e:decode_cell(l[0])}, o);\n\twrite_RelID(\"rId\" + rId, o);\n\tvar locidx = l[1].Target.indexOf(\"#\");\n\tvar loc = locidx == -1 ? \"\" : l[1].Target.slice(locidx+1);\n\twrite_XLWideString(loc || \"\", o);\n\twrite_XLWideString(l[1].Tooltip || \"\", o);\n\twrite_XLWideString(\"\", o);\n\treturn o.slice(0, o.l);\n}\n\n/* [MS-XLSB] 2.4.6 BrtArrFmla */\nfunction parse_BrtArrFmla(data, length, opts) {\n\tvar end = data.l + length;\n\tvar rfx = parse_RfX(data, 16);\n\tvar fAlwaysCalc = data.read_shift(1);\n\tvar o = [rfx]; o[2] = fAlwaysCalc;\n\tif(opts.cellFormula) {\n\t\tvar formula = parse_XLSBArrayParsedFormula(data, end - data.l, opts);\n\t\to[1] = formula;\n\t} else data.l = end;\n\treturn o;\n}\n\n/* [MS-XLSB] 2.4.750 BrtShrFmla */\nfunction parse_BrtShrFmla(data, length, opts) {\n\tvar end = data.l + length;\n\tvar rfx = parse_UncheckedRfX(data, 16);\n\tvar o = [rfx];\n\tif(opts.cellFormula) {\n\t\tvar formula = parse_XLSBSharedParsedFormula(data, end - data.l, opts);\n\t\to[1] = formula;\n\t\tdata.l = end;\n\t} else data.l = end;\n\treturn o;\n}\n\n/* [MS-XLSB] 2.4.323 BrtColInfo */\n/* TODO: once XLS ColInfo is set, combine the functions */\nfunction write_BrtColInfo(C, col, o) {\n\tif(o == null) o = new_buf(18);\n\tvar p = col_obj_w(C, col);\n\to.write_shift(-4, C);\n\to.write_shift(-4, C);\n\to.write_shift(4, (p.width || 10) * 256);\n\to.write_shift(4, 0/*ixfe*/); // style\n\tvar flags = 0;\n\tif(col.hidden) flags |= 0x01;\n\tif(typeof p.width == 'number') flags |= 0x02;\n\to.write_shift(1, flags); // bit flag\n\to.write_shift(1, 0); // bit flag\n\treturn o;\n}\n\n/* [MS-XLSB] 2.4.678 BrtMargins */\nvar BrtMarginKeys = [\"left\",\"right\",\"top\",\"bottom\",\"header\",\"footer\"];\nfunction parse_BrtMargins(data) {\n\tvar margins = ({});\n\tBrtMarginKeys.forEach(function(k) { margins[k] = parse_Xnum(data, 8); });\n\treturn margins;\n}\nfunction write_BrtMargins(margins, o) {\n\tif(o == null) o = new_buf(6*8);\n\tdefault_margins(margins);\n\tBrtMarginKeys.forEach(function(k) { write_Xnum((margins)[k], o); });\n\treturn o;\n}\n\n/* [MS-XLSB] 2.4.299 BrtBeginWsView */\nfunction parse_BrtBeginWsView(data) {\n\tvar f = data.read_shift(2);\n\tdata.l += 28;\n\treturn { RTL: f & 0x20 };\n}\nfunction write_BrtBeginWsView(ws, Workbook, o) {\n\tif(o == null) o = new_buf(30);\n\tvar f = 0x39c;\n\tif((((Workbook||{}).Views||[])[0]||{}).RTL) f |= 0x20;\n\to.write_shift(2, f); // bit flag\n\to.write_shift(4, 0);\n\to.write_shift(4, 0); // view first row\n\to.write_shift(4, 0); // view first col\n\to.write_shift(1, 0); // gridline color ICV\n\to.write_shift(1, 0);\n\to.write_shift(2, 0);\n\to.write_shift(2, 100); // zoom scale\n\to.write_shift(2, 0);\n\to.write_shift(2, 0);\n\to.write_shift(2, 0);\n\to.write_shift(4, 0); // workbook view id\n\treturn o;\n}\n\n/* [MS-XLSB] 2.4.309 BrtCellIgnoreEC */\nfunction write_BrtCellIgnoreEC(ref) {\n\tvar o = new_buf(24);\n\to.write_shift(4, 4);\n\to.write_shift(4, 1);\n\twrite_UncheckedRfX(ref, o);\n\treturn o;\n}\n\n/* [MS-XLSB] 2.4.748 BrtSheetProtection */\nfunction write_BrtSheetProtection(sp, o) {\n\tif(o == null) o = new_buf(16*4+2);\n\to.write_shift(2, sp.password ? crypto_CreatePasswordVerifier_Method1(sp.password) : 0);\n\to.write_shift(4, 1); // this record should not be written if no protection\n\t[\n\t\t[\"objects\", false], // fObjects\n\t\t[\"scenarios\", false], // fScenarios\n\t\t[\"formatCells\", true], // fFormatCells\n\t\t[\"formatColumns\", true], // fFormatColumns\n\t\t[\"formatRows\", true], // fFormatRows\n\t\t[\"insertColumns\", true], // fInsertColumns\n\t\t[\"insertRows\", true], // fInsertRows\n\t\t[\"insertHyperlinks\", true], // fInsertHyperlinks\n\t\t[\"deleteColumns\", true], // fDeleteColumns\n\t\t[\"deleteRows\", true], // fDeleteRows\n\t\t[\"selectLockedCells\", false], // fSelLockedCells\n\t\t[\"sort\", true], // fSort\n\t\t[\"autoFilter\", true], // fAutoFilter\n\t\t[\"pivotTables\", true], // fPivotTables\n\t\t[\"selectUnlockedCells\", false] // fSelUnlockedCells\n\t].forEach(function(n) {\nif(n[1]) o.write_shift(4, sp[n[0]] != null && !sp[n[0]] ? 1 : 0);\n\t\telse o.write_shift(4, sp[n[0]] != null && sp[n[0]] ? 0 : 1);\n\t});\n\treturn o;\n}\n\n/* [MS-XLSB] 2.1.7.61 Worksheet */\nfunction parse_ws_bin(data, _opts, idx, rels, wb, themes, styles) {\n\tif(!data) return data;\n\tvar opts = _opts || {};\n\tif(!rels) rels = {'!id':{}};\n\tif(DENSE != null && opts.dense == null) opts.dense = DENSE;\n\tvar s = (opts.dense ? [] : {});\n\n\tvar ref;\n\tvar refguess = {s: {r:2000000, c:2000000}, e: {r:0, c:0} };\n\n\tvar pass = false, end = false;\n\tvar row, p, cf, R, C, addr, sstr, rr, cell;\n\tvar merges = [];\n\topts.biff = 12;\n\topts['!row'] = 0;\n\n\tvar ai = 0, af = false;\n\n\tvar arrayf = [];\n\tvar sharedf = {};\n\tvar supbooks = opts.supbooks || wb.supbooks || ([[]]);\n\tsupbooks.sharedf = sharedf;\n\tsupbooks.arrayf = arrayf;\n\tsupbooks.SheetNames = wb.SheetNames || wb.Sheets.map(function(x) { return x.name; });\n\tif(!opts.supbooks) {\n\t\topts.supbooks = supbooks;\n\t\tif(wb.Names) for(var i = 0; i < wb.Names.length; ++i) supbooks[0][i+1] = wb.Names[i];\n\t}\n\n\tvar colinfo = [], rowinfo = [];\n\tvar seencol = false;\n\n\trecordhopper(data, function ws_parse(val, R_n, RT) {\n\t\tif(end) return;\n\t\tswitch(RT) {\n\t\t\tcase 0x0094: /* 'BrtWsDim' */\n\t\t\t\tref = val; break;\n\t\t\tcase 0x0000: /* 'BrtRowHdr' */\n\t\t\t\trow = val;\n\t\t\t\tif(opts.sheetRows && opts.sheetRows <= row.r) end=true;\n\t\t\t\trr = encode_row(R = row.r);\n\t\t\t\topts['!row'] = row.r;\n\t\t\t\tif(val.hidden || val.hpt || val.level != null) {\n\t\t\t\t\tif(val.hpt) val.hpx = pt2px(val.hpt);\n\t\t\t\t\trowinfo[val.r] = val;\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase 0x0002: /* 'BrtCellRk' */\n\t\t\tcase 0x0003: /* 'BrtCellError' */\n\t\t\tcase 0x0004: /* 'BrtCellBool' */\n\t\t\tcase 0x0005: /* 'BrtCellReal' */\n\t\t\tcase 0x0006: /* 'BrtCellSt' */\n\t\t\tcase 0x0007: /* 'BrtCellIsst' */\n\t\t\tcase 0x0008: /* 'BrtFmlaString' */\n\t\t\tcase 0x0009: /* 'BrtFmlaNum' */\n\t\t\tcase 0x000A: /* 'BrtFmlaBool' */\n\t\t\tcase 0x000B: /* 'BrtFmlaError' */\n\t\t\t\tp = ({t:val[2]});\n\t\t\t\tswitch(val[2]) {\n\t\t\t\t\tcase 'n': p.v = val[1]; break;\n\t\t\t\t\tcase 's': sstr = strs[val[1]]; p.v = sstr.t; p.r = sstr.r; break;\n\t\t\t\t\tcase 'b': p.v = val[1] ? true : false; break;\n\t\t\t\t\tcase 'e': p.v = val[1]; if(opts.cellText !== false) p.w = BErr[p.v]; break;\n\t\t\t\t\tcase 'str': p.t = 's'; p.v = val[1]; break;\n\t\t\t\t}\n\t\t\t\tif((cf = styles.CellXf[val[0].iStyleRef])) safe_format(p,cf.numFmtId,null,opts, themes, styles);\n\t\t\t\tC = val[0].c;\n\t\t\t\tif(opts.dense) { if(!s[R]) s[R] = []; s[R][C] = p; }\n\t\t\t\telse s[encode_col(C) + rr] = p;\n\t\t\t\tif(opts.cellFormula) {\n\t\t\t\t\taf = false;\n\t\t\t\t\tfor(ai = 0; ai < arrayf.length; ++ai) {\n\t\t\t\t\t\tvar aii = arrayf[ai];\n\t\t\t\t\t\tif(row.r >= aii[0].s.r && row.r <= aii[0].e.r)\n\t\t\t\t\t\t\tif(C >= aii[0].s.c && C <= aii[0].e.c) {\n\t\t\t\t\t\t\t\tp.F = encode_range(aii[0]); af = true;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif(!af && val.length > 3) p.f = val[3];\n\t\t\t\t}\n\t\t\t\tif(refguess.s.r > row.r) refguess.s.r = row.r;\n\t\t\t\tif(refguess.s.c > C) refguess.s.c = C;\n\t\t\t\tif(refguess.e.r < row.r) refguess.e.r = row.r;\n\t\t\t\tif(refguess.e.c < C) refguess.e.c = C;\n\t\t\t\tif(opts.cellDates && cf && p.t == 'n' && SSF.is_date(SSF._table[cf.numFmtId])) {\n\t\t\t\t\tvar _d = SSF.parse_date_code(p.v); if(_d) { p.t = 'd'; p.v = new Date(_d.y, _d.m-1,_d.d,_d.H,_d.M,_d.S,_d.u); }\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase 0x0001: /* 'BrtCellBlank' */\n\t\t\t\tif(!opts.sheetStubs || pass) break;\n\t\t\t\tp = ({t:'z',v:undefined});\n\t\t\t\tC = val[0].c;\n\t\t\t\tif(opts.dense) { if(!s[R]) s[R] = []; s[R][C] = p; }\n\t\t\t\telse s[encode_col(C) + rr] = p;\n\t\t\t\tif(refguess.s.r > row.r) refguess.s.r = row.r;\n\t\t\t\tif(refguess.s.c > C) refguess.s.c = C;\n\t\t\t\tif(refguess.e.r < row.r) refguess.e.r = row.r;\n\t\t\t\tif(refguess.e.c < C) refguess.e.c = C;\n\t\t\t\tbreak;\n\n\t\t\tcase 0x00B0: /* 'BrtMergeCell' */\n\t\t\t\tmerges.push(val); break;\n\n\t\t\tcase 0x01EE: /* 'BrtHLink' */\n\t\t\t\tvar rel = rels['!id'][val.relId];\n\t\t\t\tif(rel) {\n\t\t\t\t\tval.Target = rel.Target;\n\t\t\t\t\tif(val.loc) val.Target += \"#\"+val.loc;\n\t\t\t\t\tval.Rel = rel;\n\t\t\t\t} else if(val.relId == '') {\n\t\t\t\t\tval.Target = \"#\" + val.loc;\n\t\t\t\t}\n\t\t\t\tfor(R=val.rfx.s.r;R<=val.rfx.e.r;++R) for(C=val.rfx.s.c;C<=val.rfx.e.c;++C) {\n\t\t\t\t\tif(opts.dense) {\n\t\t\t\t\t\tif(!s[R]) s[R] = [];\n\t\t\t\t\t\tif(!s[R][C]) s[R][C] = {t:'z',v:undefined};\n\t\t\t\t\t\ts[R][C].l = val;\n\t\t\t\t\t} else {\n\t\t\t\t\t\taddr = encode_cell({c:C,r:R});\n\t\t\t\t\t\tif(!s[addr]) s[addr] = {t:'z',v:undefined};\n\t\t\t\t\t\ts[addr].l = val;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase 0x01AA: /* 'BrtArrFmla' */\n\t\t\t\tif(!opts.cellFormula) break;\n\t\t\t\tarrayf.push(val);\n\t\t\t\tcell = ((opts.dense ? s[R][C] : s[encode_col(C) + rr]));\n\t\t\t\tcell.f = stringify_formula(val[1], refguess, {r:row.r, c:C}, supbooks, opts);\n\t\t\t\tcell.F = encode_range(val[0]);\n\t\t\t\tbreak;\n\t\t\tcase 0x01AB: /* 'BrtShrFmla' */\n\t\t\t\tif(!opts.cellFormula) break;\n\t\t\t\tsharedf[encode_cell(val[0].s)] = val[1];\n\t\t\t\tcell = (opts.dense ? s[R][C] : s[encode_col(C) + rr]);\n\t\t\t\tcell.f = stringify_formula(val[1], refguess, {r:row.r, c:C}, supbooks, opts);\n\t\t\t\tbreak;\n\n\t\t\t/* identical to 'ColInfo' in XLS */\n\t\t\tcase 0x003C: /* 'BrtColInfo' */\n\t\t\t\tif(!opts.cellStyles) break;\n\t\t\t\twhile(val.e >= val.s) {\n\t\t\t\t\tcolinfo[val.e--] = { width: val.w/256, hidden: !!(val.flags & 0x01) };\n\t\t\t\t\tif(!seencol) { seencol = true; find_mdw_colw(val.w/256); }\n\t\t\t\t\tprocess_col(colinfo[val.e+1]);\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase 0x00A1: /* 'BrtBeginAFilter' */\n\t\t\t\ts['!autofilter'] = { ref:encode_range(val) };\n\t\t\t\tbreak;\n\n\t\t\tcase 0x01DC: /* 'BrtMargins' */\n\t\t\t\ts['!margins'] = val;\n\t\t\t\tbreak;\n\n\t\t\tcase 0x0093: /* 'BrtWsProp' */\n\t\t\t\tif(!wb.Sheets[idx]) wb.Sheets[idx] = {};\n\t\t\t\tif(val.name) wb.Sheets[idx].CodeName = val.name;\n\t\t\t\tbreak;\n\n\t\t\tcase 0x0089: /* 'BrtBeginWsView' */\n\t\t\t\tif(!wb.Views) wb.Views = [{}];\n\t\t\t\tif(!wb.Views[0]) wb.Views[0] = {};\n\t\t\t\tif(val.RTL) wb.Views[0].RTL = true;\n\t\t\t\tbreak;\n\n\t\t\tcase 0x01E5: /* 'BrtWsFmtInfo' */\n\t\t\t\tbreak;\n\t\t\tcase 0x00AF: /* 'BrtAFilterDateGroupItem' */\n\t\t\tcase 0x0284: /* 'BrtActiveX' */\n\t\t\tcase 0x0271: /* 'BrtBigName' */\n\t\t\tcase 0x0232: /* 'BrtBkHim' */\n\t\t\tcase 0x018C: /* 'BrtBrk' */\n\t\t\tcase 0x0458: /* 'BrtCFIcon' */\n\t\t\tcase 0x047A: /* 'BrtCFRuleExt' */\n\t\t\tcase 0x01D7: /* 'BrtCFVO' */\n\t\t\tcase 0x041A: /* 'BrtCFVO14' */\n\t\t\tcase 0x0289: /* 'BrtCellIgnoreEC' */\n\t\t\tcase 0x0451: /* 'BrtCellIgnoreEC14' */\n\t\t\tcase 0x0031: /* 'BrtCellMeta' */\n\t\t\tcase 0x024D: /* 'BrtCellSmartTagProperty' */\n\t\t\tcase 0x025F: /* 'BrtCellWatch' */\n\t\t\tcase 0x0234: /* 'BrtColor' */\n\t\t\tcase 0x041F: /* 'BrtColor14' */\n\t\t\tcase 0x00A8: /* 'BrtColorFilter' */\n\t\t\tcase 0x00AE: /* 'BrtCustomFilter' */\n\t\t\tcase 0x049C: /* 'BrtCustomFilter14' */\n\t\t\tcase 0x01F3: /* 'BrtDRef' */\n\t\t\tcase 0x0040: /* 'BrtDVal' */\n\t\t\tcase 0x041D: /* 'BrtDVal14' */\n\t\t\tcase 0x0226: /* 'BrtDrawing' */\n\t\t\tcase 0x00AB: /* 'BrtDynamicFilter' */\n\t\t\tcase 0x00A7: /* 'BrtFilter' */\n\t\t\tcase 0x0499: /* 'BrtFilter14' */\n\t\t\tcase 0x00A9: /* 'BrtIconFilter' */\n\t\t\tcase 0x049D: /* 'BrtIconFilter14' */\n\t\t\tcase 0x0227: /* 'BrtLegacyDrawing' */\n\t\t\tcase 0x0228: /* 'BrtLegacyDrawingHF' */\n\t\t\tcase 0x0295: /* 'BrtListPart' */\n\t\t\tcase 0x027F: /* 'BrtOleObject' */\n\t\t\tcase 0x01DE: /* 'BrtPageSetup' */\n\t\t\tcase 0x0097: /* 'BrtPane' */\n\t\t\tcase 0x0219: /* 'BrtPhoneticInfo' */\n\t\t\tcase 0x01DD: /* 'BrtPrintOptions' */\n\t\t\tcase 0x0218: /* 'BrtRangeProtection' */\n\t\t\tcase 0x044F: /* 'BrtRangeProtection14' */\n\t\t\tcase 0x02A8: /* 'BrtRangeProtectionIso' */\n\t\t\tcase 0x0450: /* 'BrtRangeProtectionIso14' */\n\t\t\tcase 0x0400: /* 'BrtRwDescent' */\n\t\t\tcase 0x0098: /* 'BrtSel' */\n\t\t\tcase 0x0297: /* 'BrtSheetCalcProp' */\n\t\t\tcase 0x0217: /* 'BrtSheetProtection' */\n\t\t\tcase 0x02A6: /* 'BrtSheetProtectionIso' */\n\t\t\tcase 0x01F8: /* 'BrtSlc' */\n\t\t\tcase 0x0413: /* 'BrtSparkline' */\n\t\t\tcase 0x01AC: /* 'BrtTable' */\n\t\t\tcase 0x00AA: /* 'BrtTop10Filter' */\n\t\t\tcase 0x0C00: /* 'BrtUid' */\n\t\t\tcase 0x0032: /* 'BrtValueMeta' */\n\t\t\tcase 0x0816: /* 'BrtWebExtension' */\n\t\t\tcase 0x0415: /* 'BrtWsFmtInfoEx14' */\n\t\t\t\tbreak;\n\n\t\t\tcase 0x0023: /* 'BrtFRTBegin' */\n\t\t\t\tpass = true; break;\n\t\t\tcase 0x0024: /* 'BrtFRTEnd' */\n\t\t\t\tpass = false; break;\n\t\t\tcase 0x0025: /* 'BrtACBegin' */ break;\n\t\t\tcase 0x0026: /* 'BrtACEnd' */ break;\n\n\t\t\tdefault:\n\t\t\t\tif((R_n||\"\").indexOf(\"Begin\") > 0){/* empty */}\n\t\t\t\telse if((R_n||\"\").indexOf(\"End\") > 0){/* empty */}\n\t\t\t\telse if(!pass || opts.WTF) throw new Error(\"Unexpected record \" + RT + \" \" + R_n);\n\t\t}\n\t}, opts);\n\n\tdelete opts.supbooks;\n\tdelete opts['!row'];\n\n\tif(!s[\"!ref\"] && (refguess.s.r < 2000000 || ref && (ref.e.r > 0 || ref.e.c > 0 || ref.s.r > 0 || ref.s.c > 0))) s[\"!ref\"] = encode_range(ref || refguess);\n\tif(opts.sheetRows && s[\"!ref\"]) {\n\t\tvar tmpref = safe_decode_range(s[\"!ref\"]);\n\t\tif(opts.sheetRows <= +tmpref.e.r) {\n\t\t\ttmpref.e.r = opts.sheetRows - 1;\n\t\t\tif(tmpref.e.r > refguess.e.r) tmpref.e.r = refguess.e.r;\n\t\t\tif(tmpref.e.r < tmpref.s.r) tmpref.s.r = tmpref.e.r;\n\t\t\tif(tmpref.e.c > refguess.e.c) tmpref.e.c = refguess.e.c;\n\t\t\tif(tmpref.e.c < tmpref.s.c) tmpref.s.c = tmpref.e.c;\n\t\t\ts[\"!fullref\"] = s[\"!ref\"];\n\t\t\ts[\"!ref\"] = encode_range(tmpref);\n\t\t}\n\t}\n\tif(merges.length > 0) s[\"!merges\"] = merges;\n\tif(colinfo.length > 0) s[\"!cols\"] = colinfo;\n\tif(rowinfo.length > 0) s[\"!rows\"] = rowinfo;\n\treturn s;\n}\n\n/* TODO: something useful -- this is a stub */\nfunction write_ws_bin_cell(ba, cell, R, C, opts, ws) {\n\tif(cell.v === undefined) return \"\";\n\tvar vv = \"\";\n\tswitch(cell.t) {\n\t\tcase 'b': vv = cell.v ? \"1\" : \"0\"; break;\n\t\tcase 'd': // no BrtCellDate :(\n\t\t\tcell = dup(cell);\n\t\t\tcell.z = cell.z || SSF._table[14];\n\t\t\tcell.v = datenum(parseDate(cell.v)); cell.t = 'n';\n\t\t\tbreak;\n\t\t/* falls through */\n\t\tcase 'n': case 'e': vv = ''+cell.v; break;\n\t\tdefault: vv = cell.v; break;\n\t}\n\tvar o = ({r:R, c:C});\n\t/* TODO: cell style */\n\to.s = get_cell_style(opts.cellXfs, cell, opts);\n\tif(cell.l) ws['!links'].push([encode_cell(o), cell.l]);\n\tif(cell.c) ws['!comments'].push([encode_cell(o), cell.c]);\n\tswitch(cell.t) {\n\t\tcase 's': case 'str':\n\t\t\tif(opts.bookSST) {\n\t\t\t\tvv = get_sst_id(opts.Strings, (cell.v), opts.revStrings);\n\t\t\t\to.t = \"s\"; o.v = vv;\n\t\t\t\twrite_record(ba, \"BrtCellIsst\", write_BrtCellIsst(cell, o));\n\t\t\t} else {\n\t\t\t\to.t = \"str\";\n\t\t\t\twrite_record(ba, \"BrtCellSt\", write_BrtCellSt(cell, o));\n\t\t\t}\n\t\t\treturn;\n\t\tcase 'n':\n\t\t\t/* TODO: determine threshold for Real vs RK */\n\t\t\tif(cell.v == (cell.v | 0) && cell.v > -1000 && cell.v < 1000) write_record(ba, \"BrtCellRk\", write_BrtCellRk(cell, o));\n\t\t\telse write_record(ba, \"BrtCellReal\", write_BrtCellReal(cell, o));\n\t\t\treturn;\n\t\tcase 'b':\n\t\t\to.t = \"b\";\n\t\t\twrite_record(ba, \"BrtCellBool\", write_BrtCellBool(cell, o));\n\t\t\treturn;\n\t\tcase 'e': /* TODO: error */ o.t = \"e\"; break;\n\t}\n\twrite_record(ba, \"BrtCellBlank\", write_BrtCellBlank(cell, o));\n}\n\nfunction write_CELLTABLE(ba, ws, idx, opts) {\n\tvar range = safe_decode_range(ws['!ref'] || \"A1\"), ref, rr = \"\", cols = [];\n\twrite_record(ba, 'BrtBeginSheetData');\n\tvar dense = Array.isArray(ws);\n\tvar cap = range.e.r;\n\tif(ws['!rows']) cap = Math.max(range.e.r, ws['!rows'].length - 1);\n\tfor(var R = range.s.r; R <= cap; ++R) {\n\t\trr = encode_row(R);\n\t\t/* [ACCELLTABLE] */\n\t\t/* BrtRowHdr */\n\t\twrite_row_header(ba, ws, range, R);\n\t\tif(R <= range.e.r) for(var C = range.s.c; C <= range.e.c; ++C) {\n\t\t\t/* *16384CELL */\n\t\t\tif(R === range.s.r) cols[C] = encode_col(C);\n\t\t\tref = cols[C] + rr;\n\t\t\tvar cell = dense ? (ws[R]||[])[C] : ws[ref];\n\t\t\tif(!cell) continue;\n\t\t\t/* write cell */\n\t\t\twrite_ws_bin_cell(ba, cell, R, C, opts, ws);\n\t\t}\n\t}\n\twrite_record(ba, 'BrtEndSheetData');\n}\n\nfunction write_MERGECELLS(ba, ws) {\n\tif(!ws || !ws['!merges']) return;\n\twrite_record(ba, 'BrtBeginMergeCells', write_BrtBeginMergeCells(ws['!merges'].length));\n\tws['!merges'].forEach(function(m) { write_record(ba, 'BrtMergeCell', write_BrtMergeCell(m)); });\n\twrite_record(ba, 'BrtEndMergeCells');\n}\n\nfunction write_COLINFOS(ba, ws) {\n\tif(!ws || !ws['!cols']) return;\n\twrite_record(ba, 'BrtBeginColInfos');\n\tws['!cols'].forEach(function(m, i) { if(m) write_record(ba, 'BrtColInfo', write_BrtColInfo(i, m)); });\n\twrite_record(ba, 'BrtEndColInfos');\n}\n\nfunction write_IGNOREECS(ba, ws) {\n\tif(!ws || !ws['!ref']) return;\n\twrite_record(ba, 'BrtBeginCellIgnoreECs');\n\twrite_record(ba, 'BrtCellIgnoreEC', write_BrtCellIgnoreEC(safe_decode_range(ws['!ref'])));\n\twrite_record(ba, 'BrtEndCellIgnoreECs');\n}\n\nfunction write_HLINKS(ba, ws, rels) {\n\t/* *BrtHLink */\n\tws['!links'].forEach(function(l) {\n\t\tif(!l[1].Target) return;\n\t\tvar rId = add_rels(rels, -1, l[1].Target.replace(/#.*$/, \"\"), RELS.HLINK);\n\t\twrite_record(ba, \"BrtHLink\", write_BrtHLink(l, rId));\n\t});\n\tdelete ws['!links'];\n}\nfunction write_LEGACYDRAWING(ba, ws, idx, rels) {\n\t/* [BrtLegacyDrawing] */\n\tif(ws['!comments'].length > 0) {\n\t\tvar rId = add_rels(rels, -1, \"../drawings/vmlDrawing\" + (idx+1) + \".vml\", RELS.VML);\n\t\twrite_record(ba, \"BrtLegacyDrawing\", write_RelID(\"rId\" + rId));\n\t\tws['!legacy'] = rId;\n\t}\n}\n\nfunction write_AUTOFILTER(ba, ws) {\n\tif(!ws['!autofilter']) return;\n\twrite_record(ba, \"BrtBeginAFilter\", write_UncheckedRfX(safe_decode_range(ws['!autofilter'].ref)));\n\t/* *FILTERCOLUMN */\n\t/* [SORTSTATE] */\n\t/* BrtEndAFilter */\n\twrite_record(ba, \"BrtEndAFilter\");\n}\n\nfunction write_WSVIEWS2(ba, ws, Workbook) {\n\twrite_record(ba, \"BrtBeginWsViews\");\n\t{ /* 1*WSVIEW2 */\n\t\t/* [ACUID] */\n\t\twrite_record(ba, \"BrtBeginWsView\", write_BrtBeginWsView(ws, Workbook));\n\t\t/* [BrtPane] */\n\t\t/* *4BrtSel */\n\t\t/* *4SXSELECT */\n\t\t/* *FRT */\n\t\twrite_record(ba, \"BrtEndWsView\");\n\t}\n\t/* *FRT */\n\twrite_record(ba, \"BrtEndWsViews\");\n}\n\nfunction write_WSFMTINFO() {\n\t/* [ACWSFMTINFO] */\n\t//write_record(ba, \"BrtWsFmtInfo\", write_BrtWsFmtInfo(ws));\n}\n\nfunction write_SHEETPROTECT(ba, ws) {\n\tif(!ws['!protect']) return;\n\t/* [BrtSheetProtectionIso] */\n\twrite_record(ba, \"BrtSheetProtection\", write_BrtSheetProtection(ws['!protect']));\n}\n\nfunction write_ws_bin(idx, opts, wb, rels) {\n\tvar ba = buf_array();\n\tvar s = wb.SheetNames[idx], ws = wb.Sheets[s] || {};\n\tvar c = s; try { if(wb && wb.Workbook) c = wb.Workbook.Sheets[idx].CodeName || c; } catch(e) {}\n\tvar r = safe_decode_range(ws['!ref'] || \"A1\");\n\tif(r.e.c > 0x3FFF || r.e.r > 0xFFFFF) {\n\t\tif(opts.WTF) throw new Error(\"Range \" + (ws['!ref'] || \"A1\") + \" exceeds format limit A1:XFD1048576\");\n\t\tr.e.c = Math.min(r.e.c, 0x3FFF);\n\t\tr.e.r = Math.min(r.e.c, 0xFFFFF);\n\t}\n\tws['!links'] = [];\n\t/* passed back to write_zip and removed there */\n\tws['!comments'] = [];\n\twrite_record(ba, \"BrtBeginSheet\");\n\tif(wb.vbaraw) write_record(ba, \"BrtWsProp\", write_BrtWsProp(c));\n\twrite_record(ba, \"BrtWsDim\", write_BrtWsDim(r));\n\twrite_WSVIEWS2(ba, ws, wb.Workbook);\n\twrite_WSFMTINFO(ba, ws);\n\twrite_COLINFOS(ba, ws, idx, opts, wb);\n\twrite_CELLTABLE(ba, ws, idx, opts, wb);\n\t/* [BrtSheetCalcProp] */\n\twrite_SHEETPROTECT(ba, ws);\n\t/* *([BrtRangeProtectionIso] BrtRangeProtection) */\n\t/* [SCENMAN] */\n\twrite_AUTOFILTER(ba, ws);\n\t/* [SORTSTATE] */\n\t/* [DCON] */\n\t/* [USERSHVIEWS] */\n\twrite_MERGECELLS(ba, ws);\n\t/* [BrtPhoneticInfo] */\n\t/* *CONDITIONALFORMATTING */\n\t/* [DVALS] */\n\twrite_HLINKS(ba, ws, rels);\n\t/* [BrtPrintOptions] */\n\tif(ws['!margins']) write_record(ba, \"BrtMargins\", write_BrtMargins(ws['!margins']));\n\t/* [BrtPageSetup] */\n\t/* [HEADERFOOTER] */\n\t/* [RWBRK] */\n\t/* [COLBRK] */\n\t/* *BrtBigName */\n\t/* [CELLWATCHES] */\n\tif(!opts || opts.ignoreEC || (opts.ignoreEC == (void 0))) write_IGNOREECS(ba, ws);\n\t/* [SMARTTAGS] */\n\t/* [BrtDrawing] */\n\twrite_LEGACYDRAWING(ba, ws, idx, rels);\n\t/* [BrtLegacyDrawingHF] */\n\t/* [BrtBkHim] */\n\t/* [OLEOBJECTS] */\n\t/* [ACTIVEXCONTROLS] */\n\t/* [WEBPUBITEMS] */\n\t/* [LISTPARTS] */\n\t/* FRTWORKSHEET */\n\twrite_record(ba, \"BrtEndSheet\");\n\treturn ba.end();\n}\nfunction parse_numCache(data) {\n\tvar col = [];\n\n\t/* 21.2.2.150 pt CT_NumVal */\n\t(data.match(/(.*?)<\\/c:pt>/mg)||[]).forEach(function(pt) {\n\t\tvar q = pt.match(/(.*)<\\/c:v><\\/c:pt>/);\n\t\tif(!q) return;\n\t\tcol[+q[1]] = +q[2];\n\t});\n\n\t/* 21.2.2.71 formatCode CT_Xstring */\n\tvar nf = unescapexml((data.match(/([\\s\\S]*?)<\\/c:formatCode>/) || [\"\",\"General\"])[1]);\n\n\treturn [col, nf];\n}\n\n/* 21.2 DrawingML - Charts */\nfunction parse_chart(data, name, opts, rels, wb, csheet) {\n\tvar cs = ((csheet || {\"!type\":\"chart\"}));\n\tif(!data) return csheet;\n\t/* 21.2.2.27 chart CT_Chart */\n\n\tvar C = 0, R = 0, col = \"A\";\n\tvar refguess = {s: {r:2000000, c:2000000}, e: {r:0, c:0} };\n\n\t/* 21.2.2.120 numCache CT_NumData */\n\t(data.match(/[\\s\\S]*?<\\/c:numCache>/gm)||[]).forEach(function(nc) {\n\t\tvar cache = parse_numCache(nc);\n\t\trefguess.s.r = refguess.s.c = 0;\n\t\trefguess.e.c = C;\n\t\tcol = encode_col(C);\n\t\tcache[0].forEach(function(n,i) {\n\t\t\tcs[col + encode_row(i)] = {t:'n', v:n, z:cache[1] };\n\t\t\tR = i;\n\t\t});\n\t\tif(refguess.e.r < R) refguess.e.r = R;\n\t\t++C;\n\t});\n\tif(C > 0) cs[\"!ref\"] = encode_range(refguess);\n\treturn cs;\n}\nRELS.CS = \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/chartsheet\";\n\nvar CS_XML_ROOT = writextag('chartsheet', null, {\n\t'xmlns': XMLNS.main[0],\n\t'xmlns:r': XMLNS.r\n});\n\n/* 18.3 Worksheets also covers Chartsheets */\nfunction parse_cs_xml(data, opts, idx, rels, wb) {\n\tif(!data) return data;\n\t/* 18.3.1.12 chartsheet CT_ChartSheet */\n\tif(!rels) rels = {'!id':{}};\n\tvar s = {'!type':\"chart\", '!chart':null, '!rel':\"\"};\n\tvar m;\n\n\t/* 18.3.1.83 sheetPr CT_ChartsheetPr */\n\tvar sheetPr = data.match(sheetprregex);\n\tif(sheetPr) parse_ws_xml_sheetpr(sheetPr[0], s, wb, idx);\n\n\t/* 18.3.1.36 drawing CT_Drawing */\n\tif((m = data.match(/drawing r:id=\"(.*?)\"/))) s['!rel'] = m[1];\n\n\tif(rels['!id'][s['!rel']]) s['!chart'] = rels['!id'][s['!rel']];\n\treturn s;\n}\nfunction write_cs_xml(idx, opts, wb, rels) {\n\tvar o = [XML_HEADER, CS_XML_ROOT];\n\to[o.length] = writextag(\"drawing\", null, {\"r:id\": \"rId1\"});\n\tadd_rels(rels, -1, \"../drawings/drawing\" + (idx+1) + \".xml\", RELS.DRAW);\n\tif(o.length>2) { o[o.length] = (''); o[1]=o[1].replace(\"/>\",\">\"); }\n\treturn o.join(\"\");\n}\n\n/* [MS-XLSB] 2.4.331 BrtCsProp */\nfunction parse_BrtCsProp(data, length) {\n\tdata.l += 10;\n\tvar name = parse_XLWideString(data, length - 10);\n\treturn { name: name };\n}\n\n/* [MS-XLSB] 2.1.7.7 Chart Sheet */\nfunction parse_cs_bin(data, opts, idx, rels, wb) {\n\tif(!data) return data;\n\tif(!rels) rels = {'!id':{}};\n\tvar s = {'!type':\"chart\", '!chart':null, '!rel':\"\"};\n\tvar state = [];\n\tvar pass = false;\n\trecordhopper(data, function cs_parse(val, R_n, RT) {\n\t\tswitch(RT) {\n\n\t\t\tcase 0x0226: /* 'BrtDrawing' */\n\t\t\t\ts['!rel'] = val; break;\n\n\t\t\tcase 0x028B: /* 'BrtCsProp' */\n\t\t\t\tif(!wb.Sheets[idx]) wb.Sheets[idx] = {};\n\t\t\t\tif(val.name) wb.Sheets[idx].CodeName = val.name;\n\t\t\t\tbreak;\n\n\t\t\tcase 0x0232: /* 'BrtBkHim' */\n\t\t\tcase 0x028C: /* 'BrtCsPageSetup' */\n\t\t\tcase 0x029D: /* 'BrtCsProtection' */\n\t\t\tcase 0x02A7: /* 'BrtCsProtectionIso' */\n\t\t\tcase 0x0227: /* 'BrtLegacyDrawing' */\n\t\t\tcase 0x0228: /* 'BrtLegacyDrawingHF' */\n\t\t\tcase 0x01DC: /* 'BrtMargins' */\n\t\t\tcase 0x0C00: /* 'BrtUid' */\n\t\t\t\tbreak;\n\n\t\t\tcase 0x0023: /* 'BrtFRTBegin' */\n\t\t\t\tpass = true; break;\n\t\t\tcase 0x0024: /* 'BrtFRTEnd' */\n\t\t\t\tpass = false; break;\n\t\t\tcase 0x0025: /* 'BrtACBegin' */\n\t\t\t\tstate.push(R_n); break;\n\t\t\tcase 0x0026: /* 'BrtACEnd' */\n\t\t\t\tstate.pop(); break;\n\n\t\t\tdefault:\n\t\t\t\tif((R_n||\"\").indexOf(\"Begin\") > 0) state.push(R_n);\n\t\t\t\telse if((R_n||\"\").indexOf(\"End\") > 0) state.pop();\n\t\t\t\telse if(!pass || opts.WTF) throw new Error(\"Unexpected record \" + RT + \" \" + R_n);\n\t\t}\n\t}, opts);\n\n\tif(rels['!id'][s['!rel']]) s['!chart'] = rels['!id'][s['!rel']];\n\treturn s;\n}\nfunction write_cs_bin() {\n\tvar ba = buf_array();\n\twrite_record(ba, \"BrtBeginSheet\");\n\t/* [BrtCsProp] */\n\t/* CSVIEWS */\n\t/* [[BrtCsProtectionIso] BrtCsProtection] */\n\t/* [USERCSVIEWS] */\n\t/* [BrtMargins] */\n\t/* [BrtCsPageSetup] */\n\t/* [HEADERFOOTER] */\n\t/* BrtDrawing */\n\t/* [BrtLegacyDrawing] */\n\t/* [BrtLegacyDrawingHF] */\n\t/* [BrtBkHim] */\n\t/* [WEBPUBITEMS] */\n\t/* FRTCHARTSHEET */\n\twrite_record(ba, \"BrtEndSheet\");\n\treturn ba.end();\n}\n/* 18.2.28 (CT_WorkbookProtection) Defaults */\nvar WBPropsDef = [\n\t['allowRefreshQuery', false, \"bool\"],\n\t['autoCompressPictures', true, \"bool\"],\n\t['backupFile', false, \"bool\"],\n\t['checkCompatibility', false, \"bool\"],\n\t['CodeName', ''],\n\t['date1904', false, \"bool\"],\n\t['defaultThemeVersion', 0, \"int\"],\n\t['filterPrivacy', false, \"bool\"],\n\t['hidePivotFieldList', false, \"bool\"],\n\t['promptedSolutions', false, \"bool\"],\n\t['publishItems', false, \"bool\"],\n\t['refreshAllConnections', false, \"bool\"],\n\t['saveExternalLinkValues', true, \"bool\"],\n\t['showBorderUnselectedTables', true, \"bool\"],\n\t['showInkAnnotation', true, \"bool\"],\n\t['showObjects', 'all'],\n\t['showPivotChartFilter', false, \"bool\"],\n\t['updateLinks', 'userSet']\n];\n\n/* 18.2.30 (CT_BookView) Defaults */\nvar WBViewDef = [\n\t['activeTab', 0, \"int\"],\n\t['autoFilterDateGrouping', true, \"bool\"],\n\t['firstSheet', 0, \"int\"],\n\t['minimized', false, \"bool\"],\n\t['showHorizontalScroll', true, \"bool\"],\n\t['showSheetTabs', true, \"bool\"],\n\t['showVerticalScroll', true, \"bool\"],\n\t['tabRatio', 600, \"int\"],\n\t['visibility', 'visible']\n\t//window{Height,Width}, {x,y}Window\n];\n\n/* 18.2.19 (CT_Sheet) Defaults */\nvar SheetDef = [\n\t//['state', 'visible']\n];\n\n/* 18.2.2 (CT_CalcPr) Defaults */\nvar CalcPrDef = [\n\t['calcCompleted', 'true'],\n\t['calcMode', 'auto'],\n\t['calcOnSave', 'true'],\n\t['concurrentCalc', 'true'],\n\t['fullCalcOnLoad', 'false'],\n\t['fullPrecision', 'true'],\n\t['iterate', 'false'],\n\t['iterateCount', '100'],\n\t['iterateDelta', '0.001'],\n\t['refMode', 'A1']\n];\n\n/* 18.2.3 (CT_CustomWorkbookView) Defaults */\n/*var CustomWBViewDef = [\n\t['autoUpdate', 'false'],\n\t['changesSavedWin', 'false'],\n\t['includeHiddenRowCol', 'true'],\n\t['includePrintSettings', 'true'],\n\t['maximized', 'false'],\n\t['minimized', 'false'],\n\t['onlySync', 'false'],\n\t['personalView', 'false'],\n\t['showComments', 'commIndicator'],\n\t['showFormulaBar', 'true'],\n\t['showHorizontalScroll', 'true'],\n\t['showObjects', 'all'],\n\t['showSheetTabs', 'true'],\n\t['showStatusbar', 'true'],\n\t['showVerticalScroll', 'true'],\n\t['tabRatio', '600'],\n\t['xWindow', '0'],\n\t['yWindow', '0']\n];*/\n\nfunction push_defaults_array(target, defaults) {\n\tfor(var j = 0; j != target.length; ++j) { var w = target[j];\n\t\tfor(var i=0; i != defaults.length; ++i) { var z = defaults[i];\n\t\t\tif(w[z[0]] == null) w[z[0]] = z[1];\n\t\t\telse switch(z[2]) {\n\t\t\tcase \"bool\": if(typeof w[z[0]] == \"string\") w[z[0]] = parsexmlbool(w[z[0]]); break;\n\t\t\tcase \"int\": if(typeof w[z[0]] == \"string\") w[z[0]] = parseInt(w[z[0]], 10); break;\n\t\t\t}\n\t\t}\n\t}\n}\nfunction push_defaults(target, defaults) {\n\tfor(var i = 0; i != defaults.length; ++i) { var z = defaults[i];\n\t\tif(target[z[0]] == null) target[z[0]] = z[1];\n\t\telse switch(z[2]) {\n\t\t\tcase \"bool\": if(typeof target[z[0]] == \"string\") target[z[0]] = parsexmlbool(target[z[0]]); break;\n\t\t\tcase \"int\": if(typeof target[z[0]] == \"string\") target[z[0]] = parseInt(target[z[0]], 10); break;\n\t\t}\n\t}\n}\n\nfunction parse_wb_defaults(wb) {\n\tpush_defaults(wb.WBProps, WBPropsDef);\n\tpush_defaults(wb.CalcPr, CalcPrDef);\n\n\tpush_defaults_array(wb.WBView, WBViewDef);\n\tpush_defaults_array(wb.Sheets, SheetDef);\n\n\t_ssfopts.date1904 = parsexmlbool(wb.WBProps.date1904);\n}\n\nfunction safe1904(wb) {\n\t/* TODO: store date1904 somewhere else */\n\tif(!wb.Workbook) return \"false\";\n\tif(!wb.Workbook.WBProps) return \"false\";\n\treturn parsexmlbool(wb.Workbook.WBProps.date1904) ? \"true\" : \"false\";\n}\n\nvar badchars = \"][*?\\/\\\\\".split(\"\");\nfunction check_ws_name(n, safe) {\n\tif(n.length > 31) { if(safe) return false; throw new Error(\"Sheet names cannot exceed 31 chars\"); }\n\tvar _good = true;\n\tbadchars.forEach(function(c) {\n\t\tif(n.indexOf(c) == -1) return;\n\t\tif(!safe) throw new Error(\"Sheet name cannot contain : \\\\ / ? * [ ]\");\n\t\t_good = false;\n\t});\n\treturn _good;\n}\nfunction check_wb_names(N, S, codes) {\n\tN.forEach(function(n,i) {\n\t\tcheck_ws_name(n);\n\t\tfor(var j = 0; j < i; ++j) if(n == N[j]) throw new Error(\"Duplicate Sheet Name: \" + n);\n\t\tif(codes) {\n\t\t\tvar cn = (S && S[i] && S[i].CodeName) || n;\n\t\t\tif(cn.charCodeAt(0) == 95 && cn.length > 22) throw new Error(\"Bad Code Name: Worksheet\" + cn);\n\t\t}\n\t});\n}\nfunction check_wb(wb) {\n\tif(!wb || !wb.SheetNames || !wb.Sheets) throw new Error(\"Invalid Workbook\");\n\tif(!wb.SheetNames.length) throw new Error(\"Workbook is empty\");\n\tvar Sheets = (wb.Workbook && wb.Workbook.Sheets) || [];\n\tcheck_wb_names(wb.SheetNames, Sheets, !!wb.vbaraw);\n\tfor(var i = 0; i < wb.SheetNames.length; ++i) check_ws(wb.Sheets[wb.SheetNames[i]], wb.SheetNames[i], i);\n\t/* TODO: validate workbook */\n}\n/* 18.2 Workbook */\nvar wbnsregex = /<\\w+:workbook/;\nfunction parse_wb_xml(data, opts) {\n\tif(!data) throw new Error(\"Could not find file\");\n\tvar wb = { AppVersion:{}, WBProps:{}, WBView:[], Sheets:[], CalcPr:{}, Names:[], xmlns: \"\" };\n\tvar pass = false, xmlns = \"xmlns\";\n\tvar dname = {}, dnstart = 0;\n\tdata.replace(tagregex, function xml_wb(x, idx) {\n\t\tvar y = parsexmltag(x);\n\t\tswitch(strip_ns(y[0])) {\n\t\t\tcase '': break;\n\n\t\t\t/* 18.2.13 fileVersion CT_FileVersion ? */\n\t\t\tcase '': case '': break;\n\n\t\t\t/* 18.2.12 fileSharing CT_FileSharing ? */\n\t\t\tcase '': break;\n\n\t\t\t/* 18.2.28 workbookPr CT_WorkbookPr ? */\n\t\t\tcase '':\n\t\t\t\tWBPropsDef.forEach(function(w) {\n\t\t\t\t\tif(y[w[0]] == null) return;\n\t\t\t\t\tswitch(w[2]) {\n\t\t\t\t\t\tcase \"bool\": wb.WBProps[w[0]] = parsexmlbool(y[w[0]]); break;\n\t\t\t\t\t\tcase \"int\": wb.WBProps[w[0]] = parseInt(y[w[0]], 10); break;\n\t\t\t\t\t\tdefault: wb.WBProps[w[0]] = y[w[0]];\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\tif(y.codeName) wb.WBProps.CodeName = y.codeName;\n\t\t\t\tbreak;\n\t\t\tcase '': break;\n\n\t\t\t/* 18.2.29 workbookProtection CT_WorkbookProtection ? */\n\t\t\tcase '': break;\n\n\t\t\t/* 18.2.1 bookViews CT_BookViews ? */\n\t\t\tcase '': case '': break;\n\t\t\t/* 18.2.30 workbookView CT_BookView + */\n\t\t\tcase '': delete y[0]; wb.WBView.push(y); break;\n\t\t\tcase '': break;\n\n\t\t\t/* 18.2.20 sheets CT_Sheets 1 */\n\t\t\tcase '': case '': break; // aggregate sheet\n\t\t\t/* 18.2.19 sheet CT_Sheet + */\n\t\t\tcase '': break;\n\n\t\t\t/* 18.2.15 functionGroups CT_FunctionGroups ? */\n\t\t\tcase '': break;\n\t\t\t/* 18.2.14 functionGroup CT_FunctionGroup + */\n\t\t\tcase '': case '': break;\n\t\t\t/* 18.2.8 externalReference CT_ExternalReference + */\n\t\t\tcase '': break;\n\t\t\tcase '': case '': pass=false; break;\n\t\t\t/* 18.2.5 definedName CT_DefinedName + */\n\t\t\tcase '': {\n\t\t\t\tdname.Ref = unescapexml(utf8read(data.slice(dnstart, idx)));\n\t\t\t\twb.Names.push(dname);\n\t\t\t} break;\n\t\t\tcase '': break;\n\n\t\t\t/* 18.2.2 calcPr CT_CalcPr ? */\n\t\t\tcase '': delete y[0]; wb.CalcPr = y; break;\n\t\t\tcase '': break;\n\n\t\t\t/* 18.2.16 oleSize CT_OleSize ? (ref required) */\n\t\t\tcase '': case '': case '': break;\n\n\t\t\t/* 18.2.18 pivotCaches CT_PivotCaches ? */\n\t\t\tcase '': case '': case '': break;\n\n\t\t\t/* 18.2.23 smartTagTypes CT_SmartTagTypes ? */\n\t\t\tcase '': case '': break;\n\t\t\t/* 18.2.22 smartTagType CT_SmartTagType ? */\n\t\t\tcase '': break;\n\n\t\t\t/* 18.2.11 fileRecoveryPr CT_FileRecoveryPr ? */\n\t\t\tcase '': break;\n\n\t\t\t/* 18.2.26 webPublishObjects CT_WebPublishObjects ? */\n\t\t\tcase '': case '': break;\n\t\t\t/* 18.2.25 webPublishObject CT_WebPublishObject ? */\n\t\t\tcase '': case '': case '': break;\n\t\t\t/* 18.2.7 ext CT_Extension + */\n\t\t\tcase '': pass=false; break;\n\n\t\t\t/* Others */\n\t\t\tcase '': pass=true; break;\n\t\t\tcase '': pass=false; break;\n\n\t\t\t/* TODO */\n\t\t\tcase ' 0);\n\n\t/* fileVersion */\n\t/* fileSharing */\n\n\tvar workbookPr = ({codeName:\"ThisWorkbook\"});\n\tif(wb.Workbook && wb.Workbook.WBProps) {\n\t\tWBPropsDef.forEach(function(x) {\nif((wb.Workbook.WBProps[x[0]]) == null) return;\n\t\t\tif((wb.Workbook.WBProps[x[0]]) == x[1]) return;\n\t\t\tworkbookPr[x[0]] = (wb.Workbook.WBProps[x[0]]);\n\t\t});\nif(wb.Workbook.WBProps.CodeName) { workbookPr.codeName = wb.Workbook.WBProps.CodeName; delete workbookPr.CodeName; }\n\t}\n\to[o.length] = (writextag('workbookPr', null, workbookPr));\n\n\t/* workbookProtection */\n\n\tvar sheets = wb.Workbook && wb.Workbook.Sheets || [];\n\tvar i = 0;\n\n\t/* bookViews */\n\n\to[o.length] = \"\";\n\tfor(i = 0; i != wb.SheetNames.length; ++i) {\n\t\tvar sht = ({name:escapexml(wb.SheetNames[i].slice(0,31))});\n\t\tsht.sheetId = \"\"+(i+1);\n\t\tsht[\"r:id\"] = \"rId\"+(i+1);\n\t\tif(sheets[i]) switch(sheets[i].Hidden) {\n\t\t\tcase 1: sht.state = \"hidden\"; break;\n\t\t\tcase 2: sht.state = \"veryHidden\"; break;\n\t\t}\n\t\to[o.length] = (writextag('sheet',null,sht));\n\t}\n\to[o.length] = \"\";\n\n\t/* functionGroups */\n\t/* externalReferences */\n\n\tif(write_names) {\n\t\to[o.length] = \"\";\n\t\tif(wb.Workbook && wb.Workbook.Names) wb.Workbook.Names.forEach(function(n) {\n\t\t\tvar d = {name:n.Name};\n\t\t\tif(n.Comment) d.comment = n.Comment;\n\t\t\tif(n.Sheet != null) d.localSheetId = \"\"+n.Sheet;\n\t\t\tif(n.Hidden) d.hidden = \"1\";\n\t\t\tif(!n.Ref) return;\n\t\t\to[o.length] = writextag('definedName', String(n.Ref).replace(//g, \">\"), d);\n\t\t});\n\t\to[o.length] = \"\";\n\t}\n\n\t/* calcPr */\n\t/* oleSize */\n\t/* customWorkbookViews */\n\t/* pivotCaches */\n\t/* smartTagPr */\n\t/* smartTagTypes */\n\t/* webPublishing */\n\t/* fileRecoveryPr */\n\t/* webPublishObjects */\n\t/* extLst */\n\n\tif(o.length>2){ o[o.length] = ''; o[1]=o[1].replace(\"/>\",\">\"); }\n\treturn o.join(\"\");\n}\n/* [MS-XLSB] 2.4.304 BrtBundleSh */\nfunction parse_BrtBundleSh(data, length) {\n\tvar z = {};\n\tz.Hidden = data.read_shift(4); //hsState ST_SheetState\n\tz.iTabID = data.read_shift(4);\n\tz.strRelID = parse_RelID(data,length-8);\n\tz.name = parse_XLWideString(data);\n\treturn z;\n}\nfunction write_BrtBundleSh(data, o) {\n\tif(!o) o = new_buf(127);\n\to.write_shift(4, data.Hidden);\n\to.write_shift(4, data.iTabID);\n\twrite_RelID(data.strRelID, o);\n\twrite_XLWideString(data.name.slice(0,31), o);\n\treturn o.length > o.l ? o.slice(0, o.l) : o;\n}\n\n/* [MS-XLSB] 2.4.815 BrtWbProp */\nfunction parse_BrtWbProp(data, length) {\n\tvar o = ({});\n\tvar flags = data.read_shift(4);\n\to.defaultThemeVersion = data.read_shift(4);\n\tvar strName = (length > 8) ? parse_XLWideString(data) : \"\";\n\tif(strName.length > 0) o.CodeName = strName;\n\to.autoCompressPictures = !!(flags & 0x10000);\n\to.backupFile = !!(flags & 0x40);\n\to.checkCompatibility = !!(flags & 0x1000);\n\to.date1904 = !!(flags & 0x01);\n\to.filterPrivacy = !!(flags & 0x08);\n\to.hidePivotFieldList = !!(flags & 0x400);\n\to.promptedSolutions = !!(flags & 0x10);\n\to.publishItems = !!(flags & 0x800);\n\to.refreshAllConnections = !!(flags & 0x40000);\n\to.saveExternalLinkValues = !!(flags & 0x80);\n\to.showBorderUnselectedTables = !!(flags & 0x04);\n\to.showInkAnnotation = !!(flags & 0x20);\n\to.showObjects = [\"all\", \"placeholders\", \"none\"][(flags >> 13) & 0x03];\n\to.showPivotChartFilter = !!(flags & 0x8000);\n\to.updateLinks = [\"userSet\", \"never\", \"always\"][(flags >> 8) & 0x03];\n\treturn o;\n}\nfunction write_BrtWbProp(data, o) {\n\tif(!o) o = new_buf(72);\n\tvar flags = 0;\n\tif(data) {\n\t\t/* TODO: mirror parse_BrtWbProp fields */\n\t\tif(data.filterPrivacy) flags |= 0x08;\n\t}\n\to.write_shift(4, flags);\n\to.write_shift(4, 0);\n\twrite_XLSBCodeName(data && data.CodeName || \"ThisWorkbook\", o);\n\treturn o.slice(0, o.l);\n}\n\nfunction parse_BrtFRTArchID$(data, length) {\n\tvar o = {};\n\tdata.read_shift(4);\n\to.ArchID = data.read_shift(4);\n\tdata.l += length - 8;\n\treturn o;\n}\n\n/* [MS-XLSB] 2.4.687 BrtName */\nfunction parse_BrtName(data, length, opts) {\n\tvar end = data.l + length;\n\tdata.l += 4; //var flags = data.read_shift(4);\n\tdata.l += 1; //var chKey = data.read_shift(1);\n\tvar itab = data.read_shift(4);\n\tvar name = parse_XLNameWideString(data);\n\tvar formula = parse_XLSBNameParsedFormula(data, 0, opts);\n\tvar comment = parse_XLNullableWideString(data);\n\t//if(0 /* fProc */) {\n\t\t// unusedstring1: XLNullableWideString\n\t\t// description: XLNullableWideString\n\t\t// helpTopic: XLNullableWideString\n\t\t// unusedstring2: XLNullableWideString\n\t//}\n\tdata.l = end;\n\tvar out = ({Name:name, Ptg:formula});\n\tif(itab < 0xFFFFFFF) out.Sheet = itab;\n\tif(comment) out.Comment = comment;\n\treturn out;\n}\n\n/* [MS-XLSB] 2.1.7.61 Workbook */\nfunction parse_wb_bin(data, opts) {\n\tvar wb = { AppVersion:{}, WBProps:{}, WBView:[], Sheets:[], CalcPr:{}, xmlns: \"\" };\n\tvar state = [];\n\tvar pass = false;\n\n\tif(!opts) opts = {};\n\topts.biff = 12;\n\n\tvar Names = [];\n\tvar supbooks = ([[]]);\n\tsupbooks.SheetNames = [];\n\tsupbooks.XTI = [];\n\n\trecordhopper(data, function hopper_wb(val, R_n, RT) {\n\t\tswitch(RT) {\n\t\t\tcase 0x009C: /* 'BrtBundleSh' */\n\t\t\t\tsupbooks.SheetNames.push(val.name);\n\t\t\t\twb.Sheets.push(val); break;\n\n\t\t\tcase 0x0099: /* 'BrtWbProp' */\n\t\t\t\twb.WBProps = val; break;\n\n\t\t\tcase 0x0027: /* 'BrtName' */\n\t\t\t\tif(val.Sheet != null) opts.SID = val.Sheet;\n\t\t\t\tval.Ref = stringify_formula(val.Ptg, null, null, supbooks, opts);\n\t\t\t\tdelete opts.SID;\n\t\t\t\tdelete val.Ptg;\n\t\t\t\tNames.push(val);\n\t\t\t\tbreak;\n\t\t\tcase 0x040C: /* 'BrtNameExt' */ break;\n\n\t\t\tcase 0x0165: /* 'BrtSupSelf' */\n\t\t\tcase 0x0166: /* 'BrtSupSame' */\n\t\t\tcase 0x0163: /* 'BrtSupBookSrc' */\n\t\t\tcase 0x029B: /* 'BrtSupAddin' */\n\t\t\t\tif(!supbooks[0].length) supbooks[0] = [RT, val];\n\t\t\t\telse supbooks.push([RT, val]);\n\t\t\t\tsupbooks[supbooks.length - 1].XTI = [];\n\t\t\t\tbreak;\n\t\t\tcase 0x016A: /* 'BrtExternSheet' */\n\t\t\t\tif(supbooks.length === 0) { supbooks[0] = []; supbooks[0].XTI = []; }\n\t\t\t\tsupbooks[supbooks.length - 1].XTI = supbooks[supbooks.length - 1].XTI.concat(val);\n\t\t\t\tsupbooks.XTI = supbooks.XTI.concat(val);\n\t\t\t\tbreak;\n\t\t\tcase 0x0169: /* 'BrtPlaceholderName' */\n\t\t\t\tbreak;\n\n\t\t\t/* case 'BrtModelTimeGroupingCalcCol' */\n\t\t\tcase 0x0C00: /* 'BrtUid' */\n\t\t\tcase 0x0C01: /* 'BrtRevisionPtr' */\n\t\t\tcase 0x0817: /* 'BrtAbsPath15' */\n\t\t\tcase 0x0216: /* 'BrtBookProtection' */\n\t\t\tcase 0x02A5: /* 'BrtBookProtectionIso' */\n\t\t\tcase 0x009E: /* 'BrtBookView' */\n\t\t\tcase 0x009D: /* 'BrtCalcProp' */\n\t\t\tcase 0x0262: /* 'BrtCrashRecErr' */\n\t\t\tcase 0x0802: /* 'BrtDecoupledPivotCacheID' */\n\t\t\tcase 0x009B: /* 'BrtFileRecover' */\n\t\t\tcase 0x0224: /* 'BrtFileSharing' */\n\t\t\tcase 0x02A4: /* 'BrtFileSharingIso' */\n\t\t\tcase 0x0080: /* 'BrtFileVersion' */\n\t\t\tcase 0x0299: /* 'BrtFnGroup' */\n\t\t\tcase 0x0850: /* 'BrtModelRelationship' */\n\t\t\tcase 0x084D: /* 'BrtModelTable' */\n\t\t\tcase 0x0225: /* 'BrtOleSize' */\n\t\t\tcase 0x0805: /* 'BrtPivotTableRef' */\n\t\t\tcase 0x0254: /* 'BrtSmartTagType' */\n\t\t\tcase 0x081C: /* 'BrtTableSlicerCacheID' */\n\t\t\tcase 0x081B: /* 'BrtTableSlicerCacheIDs' */\n\t\t\tcase 0x0822: /* 'BrtTimelineCachePivotCacheID' */\n\t\t\tcase 0x018D: /* 'BrtUserBookView' */\n\t\t\tcase 0x009A: /* 'BrtWbFactoid' */\n\t\t\tcase 0x045D: /* 'BrtWbProp14' */\n\t\t\tcase 0x0229: /* 'BrtWebOpt' */\n\t\t\tcase 0x082B: /* 'BrtWorkBookPr15' */\n\t\t\t\tbreak;\n\n\t\t\tcase 0x0023: /* 'BrtFRTBegin' */\n\t\t\t\tstate.push(R_n); pass = true; break;\n\t\t\tcase 0x0024: /* 'BrtFRTEnd' */\n\t\t\t\tstate.pop(); pass = false; break;\n\t\t\tcase 0x0025: /* 'BrtACBegin' */\n\t\t\t\tstate.push(R_n); pass = true; break;\n\t\t\tcase 0x0026: /* 'BrtACEnd' */\n\t\t\t\tstate.pop(); pass = false; break;\n\n\t\t\tcase 0x0010: /* 'BrtFRTArchID$' */ break;\n\n\t\t\tdefault:\n\t\t\t\tif((R_n||\"\").indexOf(\"Begin\") > 0){/* empty */}\n\t\t\t\telse if((R_n||\"\").indexOf(\"End\") > 0){/* empty */}\n\t\t\t\telse if(!pass || (opts.WTF && state[state.length-1] != \"BrtACBegin\" && state[state.length-1] != \"BrtFRTBegin\")) throw new Error(\"Unexpected record \" + RT + \" \" + R_n);\n\t\t}\n\t}, opts);\n\n\tparse_wb_defaults(wb);\n\n\t// $FlowIgnore\n\twb.Names = Names;\n\n\t(wb).supbooks = supbooks;\n\treturn wb;\n}\n\nfunction write_BUNDLESHS(ba, wb) {\n\twrite_record(ba, \"BrtBeginBundleShs\");\n\tfor(var idx = 0; idx != wb.SheetNames.length; ++idx) {\n\t\tvar viz = wb.Workbook && wb.Workbook.Sheets && wb.Workbook.Sheets[idx] && wb.Workbook.Sheets[idx].Hidden || 0;\n\t\tvar d = { Hidden: viz, iTabID: idx+1, strRelID: 'rId' + (idx+1), name: wb.SheetNames[idx] };\n\t\twrite_record(ba, \"BrtBundleSh\", write_BrtBundleSh(d));\n\t}\n\twrite_record(ba, \"BrtEndBundleShs\");\n}\n\n/* [MS-XLSB] 2.4.649 BrtFileVersion */\nfunction write_BrtFileVersion(data, o) {\n\tif(!o) o = new_buf(127);\n\tfor(var i = 0; i != 4; ++i) o.write_shift(4, 0);\n\twrite_XLWideString(\"SheetJS\", o);\n\twrite_XLWideString(XLSX.version, o);\n\twrite_XLWideString(XLSX.version, o);\n\twrite_XLWideString(\"7262\", o);\n\to.length = o.l;\n\treturn o.length > o.l ? o.slice(0, o.l) : o;\n}\n\n/* [MS-XLSB] 2.4.301 BrtBookView */\nfunction write_BrtBookView(idx, o) {\n\tif(!o) o = new_buf(29);\n\to.write_shift(-4, 0);\n\to.write_shift(-4, 460);\n\to.write_shift(4, 28800);\n\to.write_shift(4, 17600);\n\to.write_shift(4, 500);\n\to.write_shift(4, idx);\n\to.write_shift(4, idx);\n\tvar flags = 0x78;\n\to.write_shift(1, flags);\n\treturn o.length > o.l ? o.slice(0, o.l) : o;\n}\n\nfunction write_BOOKVIEWS(ba, wb) {\n\t/* required if hidden tab appears before visible tab */\n\tif(!wb.Workbook || !wb.Workbook.Sheets) return;\n\tvar sheets = wb.Workbook.Sheets;\n\tvar i = 0, vistab = -1, hidden = -1;\n\tfor(; i < sheets.length; ++i) {\n\t\tif(!sheets[i] || !sheets[i].Hidden && vistab == -1) vistab = i;\n\t\telse if(sheets[i].Hidden == 1 && hidden == -1) hidden = i;\n\t}\n\tif(hidden > vistab) return;\n\twrite_record(ba, \"BrtBeginBookViews\");\n\twrite_record(ba, \"BrtBookView\", write_BrtBookView(vistab));\n\t/* 1*(BrtBookView *FRT) */\n\twrite_record(ba, \"BrtEndBookViews\");\n}\n\n/* [MS-XLSB] 2.4.305 BrtCalcProp */\n/*function write_BrtCalcProp(data, o) {\n\tif(!o) o = new_buf(26);\n\to.write_shift(4,0); // force recalc\n\to.write_shift(4,1);\n\to.write_shift(4,0);\n\twrite_Xnum(0, o);\n\to.write_shift(-4, 1023);\n\to.write_shift(1, 0x33);\n\to.write_shift(1, 0x00);\n\treturn o;\n}*/\n\n/* [MS-XLSB] 2.4.646 BrtFileRecover */\n/*function write_BrtFileRecover(data, o) {\n\tif(!o) o = new_buf(1);\n\to.write_shift(1,0);\n\treturn o;\n}*/\n\n/* [MS-XLSB] 2.1.7.61 Workbook */\nfunction write_wb_bin(wb, opts) {\n\tvar ba = buf_array();\n\twrite_record(ba, \"BrtBeginBook\");\n\twrite_record(ba, \"BrtFileVersion\", write_BrtFileVersion());\n\t/* [[BrtFileSharingIso] BrtFileSharing] */\n\twrite_record(ba, \"BrtWbProp\", write_BrtWbProp(wb.Workbook && wb.Workbook.WBProps || null));\n\t/* [ACABSPATH] */\n\t/* [[BrtBookProtectionIso] BrtBookProtection] */\n\twrite_BOOKVIEWS(ba, wb, opts);\n\twrite_BUNDLESHS(ba, wb, opts);\n\t/* [FNGROUP] */\n\t/* [EXTERNALS] */\n\t/* *BrtName */\n\t/* write_record(ba, \"BrtCalcProp\", write_BrtCalcProp()); */\n\t/* [BrtOleSize] */\n\t/* *(BrtUserBookView *FRT) */\n\t/* [PIVOTCACHEIDS] */\n\t/* [BrtWbFactoid] */\n\t/* [SMARTTAGTYPES] */\n\t/* [BrtWebOpt] */\n\t/* write_record(ba, \"BrtFileRecover\", write_BrtFileRecover()); */\n\t/* [WEBPUBITEMS] */\n\t/* [CRERRS] */\n\t/* FRTWORKBOOK */\n\twrite_record(ba, \"BrtEndBook\");\n\n\treturn ba.end();\n}\nfunction parse_wb(data, name, opts) {\n\tif(name.slice(-4)===\".bin\") return parse_wb_bin((data), opts);\n\treturn parse_wb_xml((data), opts);\n}\n\nfunction parse_ws(data, name, idx, opts, rels, wb, themes, styles) {\n\tif(name.slice(-4)===\".bin\") return parse_ws_bin((data), opts, idx, rels, wb, themes, styles);\n\treturn parse_ws_xml((data), opts, idx, rels, wb, themes, styles);\n}\n\nfunction parse_cs(data, name, idx, opts, rels, wb, themes, styles) {\n\tif(name.slice(-4)===\".bin\") return parse_cs_bin((data), opts, idx, rels, wb, themes, styles);\n\treturn parse_cs_xml((data), opts, idx, rels, wb, themes, styles);\n}\n\nfunction parse_ms(data, name, idx, opts, rels, wb, themes, styles) {\n\tif(name.slice(-4)===\".bin\") return parse_ms_bin((data), opts, idx, rels, wb, themes, styles);\n\treturn parse_ms_xml((data), opts, idx, rels, wb, themes, styles);\n}\n\nfunction parse_ds(data, name, idx, opts, rels, wb, themes, styles) {\n\tif(name.slice(-4)===\".bin\") return parse_ds_bin((data), opts, idx, rels, wb, themes, styles);\n\treturn parse_ds_xml((data), opts, idx, rels, wb, themes, styles);\n}\n\nfunction parse_sty(data, name, themes, opts) {\n\tif(name.slice(-4)===\".bin\") return parse_sty_bin((data), themes, opts);\n\treturn parse_sty_xml((data), themes, opts);\n}\n\nfunction parse_theme(data, name, opts) {\n\treturn parse_theme_xml(data, opts);\n}\n\nfunction parse_sst(data, name, opts) {\n\tif(name.slice(-4)===\".bin\") return parse_sst_bin((data), opts);\n\treturn parse_sst_xml((data), opts);\n}\n\nfunction parse_cmnt(data, name, opts) {\n\tif(name.slice(-4)===\".bin\") return parse_comments_bin((data), opts);\n\treturn parse_comments_xml((data), opts);\n}\n\nfunction parse_cc(data, name, opts) {\n\tif(name.slice(-4)===\".bin\") return parse_cc_bin((data), name, opts);\n\treturn parse_cc_xml((data), name, opts);\n}\n\nfunction parse_xlink(data, name, opts) {\n\tif(name.slice(-4)===\".bin\") return parse_xlink_bin((data), name, opts);\n\treturn parse_xlink_xml((data), name, opts);\n}\n\nfunction write_wb(wb, name, opts) {\n\treturn (name.slice(-4)===\".bin\" ? write_wb_bin : write_wb_xml)(wb, opts);\n}\n\nfunction write_ws(data, name, opts, wb, rels) {\n\treturn (name.slice(-4)===\".bin\" ? write_ws_bin : write_ws_xml)(data, opts, wb, rels);\n}\n\n// eslint-disable-next-line no-unused-vars\nfunction write_cs(data, name, opts, wb, rels) {\n\treturn (name.slice(-4)===\".bin\" ? write_cs_bin : write_cs_xml)(data, opts, wb, rels);\n}\n\nfunction write_sty(data, name, opts) {\n\treturn (name.slice(-4)===\".bin\" ? write_sty_bin : write_sty_xml)(data, opts);\n}\n\nfunction write_sst(data, name, opts) {\n\treturn (name.slice(-4)===\".bin\" ? write_sst_bin : write_sst_xml)(data, opts);\n}\n\nfunction write_cmnt(data, name, opts) {\n\treturn (name.slice(-4)===\".bin\" ? write_comments_bin : write_comments_xml)(data, opts);\n}\n/*\nfunction write_cc(data, name:string, opts) {\n\treturn (name.slice(-4)===\".bin\" ? write_cc_bin : write_cc_xml)(data, opts);\n}\n*/\nvar attregexg2=/([\\w:]+)=((?:\")([^\"]*)(?:\")|(?:')([^']*)(?:'))/g;\nvar attregex2=/([\\w:]+)=((?:\")(?:[^\"]*)(?:\")|(?:')(?:[^']*)(?:'))/;\nvar _chr = function(c) { return String.fromCharCode(c); };\nfunction xlml_parsexmltag(tag, skip_root) {\n\tvar words = tag.split(/\\s+/);\n\tvar z = ([]); if(!skip_root) z[0] = words[0];\n\tif(words.length === 1) return z;\n\tvar m = tag.match(attregexg2), y, j, w, i;\n\tif(m) for(i = 0; i != m.length; ++i) {\n\t\ty = m[i].match(attregex2);\nif((j=y[1].indexOf(\":\")) === -1) z[y[1]] = y[2].slice(1,y[2].length-1);\n\t\telse {\n\t\t\tif(y[1].slice(0,6) === \"xmlns:\") w = \"xmlns\"+y[1].slice(6);\n\t\t\telse w = y[1].slice(j+1);\n\t\t\tz[w] = y[2].slice(1,y[2].length-1);\n\t\t}\n\t}\n\treturn z;\n}\nfunction xlml_parsexmltagobj(tag) {\n\tvar words = tag.split(/\\s+/);\n\tvar z = {};\n\tif(words.length === 1) return z;\n\tvar m = tag.match(attregexg2), y, j, w, i;\n\tif(m) for(i = 0; i != m.length; ++i) {\n\t\ty = m[i].match(attregex2);\nif((j=y[1].indexOf(\":\")) === -1) z[y[1]] = y[2].slice(1,y[2].length-1);\n\t\telse {\n\t\t\tif(y[1].slice(0,6) === \"xmlns:\") w = \"xmlns\"+y[1].slice(6);\n\t\t\telse w = y[1].slice(j+1);\n\t\t\tz[w] = y[2].slice(1,y[2].length-1);\n\t\t}\n\t}\n\treturn z;\n}\n\n// ----\n\nfunction xlml_format(format, value) {\n\tvar fmt = XLMLFormatMap[format] || unescapexml(format);\n\tif(fmt === \"General\") return SSF._general(value);\n\treturn SSF.format(fmt, value);\n}\n\nfunction xlml_set_custprop(Custprops, key, cp, val) {\n\tvar oval = val;\n\tswitch((cp[0].match(/dt:dt=\"([\\w.]+)\"/)||[\"\",\"\"])[1]) {\n\t\tcase \"boolean\": oval = parsexmlbool(val); break;\n\t\tcase \"i2\": case \"int\": oval = parseInt(val, 10); break;\n\t\tcase \"r4\": case \"float\": oval = parseFloat(val); break;\n\t\tcase \"date\": case \"dateTime.tz\": oval = parseDate(val); break;\n\t\tcase \"i8\": case \"string\": case \"fixed\": case \"uuid\": case \"bin.base64\": break;\n\t\tdefault: throw new Error(\"bad custprop:\" + cp[0]);\n\t}\n\tCustprops[unescapexml(key)] = oval;\n}\n\nfunction safe_format_xlml(cell, nf, o) {\n\tif(cell.t === 'z') return;\n\tif(!o || o.cellText !== false) try {\n\t\tif(cell.t === 'e') { cell.w = cell.w || BErr[cell.v]; }\n\t\telse if(nf === \"General\") {\n\t\t\tif(cell.t === 'n') {\n\t\t\t\tif((cell.v|0) === cell.v) cell.w = SSF._general_int(cell.v);\n\t\t\t\telse cell.w = SSF._general_num(cell.v);\n\t\t\t}\n\t\t\telse cell.w = SSF._general(cell.v);\n\t\t}\n\t\telse cell.w = xlml_format(nf||\"General\", cell.v);\n\t} catch(e) { if(o.WTF) throw e; }\n\ttry {\n\t\tvar z = XLMLFormatMap[nf]||nf||\"General\";\n\t\tif(o.cellNF) cell.z = z;\n\t\tif(o.cellDates && cell.t == 'n' && SSF.is_date(z)) {\n\t\t\tvar _d = SSF.parse_date_code(cell.v); if(_d) { cell.t = 'd'; cell.v = new Date(_d.y, _d.m-1,_d.d,_d.H,_d.M,_d.S,_d.u); }\n\t\t}\n\t} catch(e) { if(o.WTF) throw e; }\n}\n\nfunction process_style_xlml(styles, stag, opts) {\n\tif(opts.cellStyles) {\n\t\tif(stag.Interior) {\n\t\t\tvar I = stag.Interior;\n\t\t\tif(I.Pattern) I.patternType = XLMLPatternTypeMap[I.Pattern] || I.Pattern;\n\t\t}\n\t}\n\tstyles[stag.ID] = stag;\n}\n\n/* TODO: there must exist some form of OSP-blessed spec */\nfunction parse_xlml_data(xml, ss, data, cell, base, styles, csty, row, arrayf, o) {\n\tvar nf = \"General\", sid = cell.StyleID, S = {}; o = o || {};\n\tvar interiors = [];\n\tvar i = 0;\n\tif(sid === undefined && row) sid = row.StyleID;\n\tif(sid === undefined && csty) sid = csty.StyleID;\n\twhile(styles[sid] !== undefined) {\n\t\tif(styles[sid].nf) nf = styles[sid].nf;\n\t\tif(styles[sid].Interior) interiors.push(styles[sid].Interior);\n\t\tif(!styles[sid].Parent) break;\n\t\tsid = styles[sid].Parent;\n\t}\n\tswitch(data.Type) {\n\t\tcase 'Boolean':\n\t\t\tcell.t = 'b';\n\t\t\tcell.v = parsexmlbool(xml);\n\t\t\tbreak;\n\t\tcase 'String':\n\t\t\tcell.t = 's'; cell.r = xlml_fixstr(unescapexml(xml));\n\t\t\tcell.v = xml.indexOf(\"<\") > -1 ? unescapexml(ss) : cell.r;\n\t\t\tbreak;\n\t\tcase 'DateTime':\n\t\t\tif(xml.slice(-1) != \"Z\") xml += \"Z\";\n\t\t\tcell.v = (parseDate(xml) - new Date(Date.UTC(1899, 11, 30))) / (24 * 60 * 60 * 1000);\n\t\t\tif(cell.v !== cell.v) cell.v = unescapexml(xml);\n\t\t\telse if(cell.v<60) cell.v = cell.v -1;\n\t\t\tif(!nf || nf == \"General\") nf = \"yyyy-mm-dd\";\n\t\t\t/* falls through */\n\t\tcase 'Number':\n\t\t\tif(cell.v === undefined) cell.v=+xml;\n\t\t\tif(!cell.t) cell.t = 'n';\n\t\t\tbreak;\n\t\tcase 'Error': cell.t = 'e'; cell.v = RBErr[xml]; if(o.cellText !== false) cell.w = xml; break;\n\t\tdefault: cell.t = 's'; cell.v = xlml_fixstr(ss||xml); break;\n\t}\n\tsafe_format_xlml(cell, nf, o);\n\tif(o.cellFormula !== false) {\n\t\tif(cell.Formula) {\n\t\t\tvar fstr = unescapexml(cell.Formula);\n\t\t\t/* strictly speaking, the leading = is required but some writers omit */\n\t\t\tif(fstr.charCodeAt(0) == 61 /* = */) fstr = fstr.slice(1);\n\t\t\tcell.f = rc_to_a1(fstr, base);\n\t\t\tdelete cell.Formula;\n\t\t\tif(cell.ArrayRange == \"RC\") cell.F = rc_to_a1(\"RC:RC\", base);\n\t\t\telse if(cell.ArrayRange) {\n\t\t\t\tcell.F = rc_to_a1(cell.ArrayRange, base);\n\t\t\t\tarrayf.push([safe_decode_range(cell.F), cell.F]);\n\t\t\t}\n\t\t} else {\n\t\t\tfor(i = 0; i < arrayf.length; ++i)\n\t\t\t\tif(base.r >= arrayf[i][0].s.r && base.r <= arrayf[i][0].e.r)\n\t\t\t\t\tif(base.c >= arrayf[i][0].s.c && base.c <= arrayf[i][0].e.c)\n\t\t\t\t\t\tcell.F = arrayf[i][1];\n\t\t}\n\t}\n\tif(o.cellStyles) {\n\t\tinteriors.forEach(function(x) {\n\t\t\tif(!S.patternType && x.patternType) S.patternType = x.patternType;\n\t\t});\n\t\tcell.s = S;\n\t}\n\tif(cell.StyleID !== undefined) cell.ixfe = cell.StyleID;\n}\n\nfunction xlml_clean_comment(comment) {\n\tcomment.t = comment.v || \"\";\n\tcomment.t = comment.t.replace(/\\r\\n/g,\"\\n\").replace(/\\r/g,\"\\n\");\n\tcomment.v = comment.w = comment.ixfe = undefined;\n}\n\nfunction xlml_normalize(d) {\n\tif(has_buf && Buffer.isBuffer(d)) return d.toString('utf8');\n\tif(typeof d === 'string') return d;\n\t/* duktape */\n\tif(typeof Uint8Array !== 'undefined' && d instanceof Uint8Array) return utf8read(a2s(ab2a(d)));\n\tthrow new Error(\"Bad input format: expected Buffer or string\");\n}\n\n/* TODO: Everything */\n/* UOS uses CJK in tags */\nvar xlmlregex = /<(\\/?)([^\\s?>!\\/:]*:|)([^\\s?>:\\/]+)[^>]*>/mg;\n//var xlmlregex = /<(\\/?)([a-z0-9]*:|)(\\w+)[^>]*>/mg;\nfunction parse_xlml_xml(d, _opts) {\n\tvar opts = _opts || {};\n\tmake_ssf(SSF);\n\tvar str = debom(xlml_normalize(d));\n\tif(opts.type == 'binary' || opts.type == 'array' || opts.type == 'base64') {\n\t\tif(typeof cptable !== 'undefined') str = cptable.utils.decode(65001, char_codes(str));\n\t\telse str = utf8read(str);\n\t}\n\tvar opening = str.slice(0, 1024).toLowerCase(), ishtml = false;\n\tif(opening.indexOf(\"= 0) ishtml = true; });\n\tif(ishtml) return HTML_.to_workbook(str, opts);\n\tvar Rn;\n\tvar state = [], tmp;\n\tif(DENSE != null && opts.dense == null) opts.dense = DENSE;\n\tvar sheets = {}, sheetnames = [], cursheet = (opts.dense ? [] : {}), sheetname = \"\";\n\tvar table = {}, cell = ({}), row = {};// eslint-disable-line no-unused-vars\n\tvar dtag = xlml_parsexmltag(''), didx = 0;\n\tvar c = 0, r = 0;\n\tvar refguess = {s: {r:2000000, c:2000000}, e: {r:0, c:0} };\n\tvar styles = {}, stag = {};\n\tvar ss = \"\", fidx = 0;\n\tvar merges = [];\n\tvar Props = {}, Custprops = {}, pidx = 0, cp = [];\n\tvar comments = [], comment = ({});\n\tvar cstys = [], csty, seencol = false;\n\tvar arrayf = [];\n\tvar rowinfo = [], rowobj = {}, cc = 0, rr = 0;\n\tvar Workbook = ({ Sheets:[], WBProps:{date1904:false} }), wsprops = {};\n\txlmlregex.lastIndex = 0;\n\tstr = str.replace(//mg,\"\");\n\twhile((Rn = xlmlregex.exec(str))) switch(Rn[3]) {\n\t\tcase 'Data':\n\t\t\tif(state[state.length-1][1]) break;\n\t\t\tif(Rn[1]==='/') parse_xlml_data(str.slice(didx, Rn.index), ss, dtag, state[state.length-1][0]==\"Comment\"?comment:cell, {c:c,r:r}, styles, cstys[c], row, arrayf, opts);\n\t\t\telse { ss = \"\"; dtag = xlml_parsexmltag(Rn[0]); didx = Rn.index + Rn[0].length; }\n\t\t\tbreak;\n\t\tcase 'Cell':\n\t\t\tif(Rn[1]==='/'){\n\t\t\t\tif(comments.length > 0) cell.c = comments;\n\t\t\t\tif((!opts.sheetRows || opts.sheetRows > r) && cell.v !== undefined) {\n\t\t\t\t\tif(opts.dense) {\n\t\t\t\t\t\tif(!cursheet[r]) cursheet[r] = [];\n\t\t\t\t\t\tcursheet[r][c] = cell;\n\t\t\t\t\t} else cursheet[encode_col(c) + encode_row(r)] = cell;\n\t\t\t\t}\n\t\t\t\tif(cell.HRef) {\n\t\t\t\t\tcell.l = ({Target:cell.HRef});\n\t\t\t\t\tif(cell.HRefScreenTip) cell.l.Tooltip = cell.HRefScreenTip;\n\t\t\t\t\tdelete cell.HRef; delete cell.HRefScreenTip;\n\t\t\t\t}\n\t\t\t\tif(cell.MergeAcross || cell.MergeDown) {\n\t\t\t\t\tcc = c + (parseInt(cell.MergeAcross,10)|0);\n\t\t\t\t\trr = r + (parseInt(cell.MergeDown,10)|0);\n\t\t\t\t\tmerges.push({s:{c:c,r:r},e:{c:cc,r:rr}});\n\t\t\t\t}\n\t\t\t\tif(!opts.sheetStubs) { if(cell.MergeAcross) c = cc + 1; else ++c; }\n\t\t\t\telse if(cell.MergeAcross || cell.MergeDown) {\nfor(var cma = c; cma <= cc; ++cma) {\n\t\t\t\t\t\tfor(var cmd = r; cmd <= rr; ++cmd) {\n\t\t\t\t\t\t\tif(cma > c || cmd > r) {\n\t\t\t\t\t\t\t\tif(opts.dense) {\n\t\t\t\t\t\t\t\t\tif(!cursheet[cmd]) cursheet[cmd] = [];\n\t\t\t\t\t\t\t\t\tcursheet[cmd][cma] = {t:'z'};\n\t\t\t\t\t\t\t\t} else cursheet[encode_col(cma) + encode_row(cmd)] = {t:'z'};\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tc = cc + 1;\n\t\t\t\t}\n\t\t\t\telse ++c;\n\t\t\t} else {\n\t\t\t\tcell = xlml_parsexmltagobj(Rn[0]);\n\t\t\t\tif(cell.Index) c = +cell.Index - 1;\n\t\t\t\tif(c < refguess.s.c) refguess.s.c = c;\n\t\t\t\tif(c > refguess.e.c) refguess.e.c = c;\n\t\t\t\tif(Rn[0].slice(-2) === \"/>\") ++c;\n\t\t\t\tcomments = [];\n\t\t\t}\n\t\t\tbreak;\n\t\tcase 'Row':\n\t\t\tif(Rn[1]==='/' || Rn[0].slice(-2) === \"/>\") {\n\t\t\t\tif(r < refguess.s.r) refguess.s.r = r;\n\t\t\t\tif(r > refguess.e.r) refguess.e.r = r;\n\t\t\t\tif(Rn[0].slice(-2) === \"/>\") {\n\t\t\t\t\trow = xlml_parsexmltag(Rn[0]);\n\t\t\t\t\tif(row.Index) r = +row.Index - 1;\n\t\t\t\t}\n\t\t\t\tc = 0; ++r;\n\t\t\t} else {\n\t\t\t\trow = xlml_parsexmltag(Rn[0]);\n\t\t\t\tif(row.Index) r = +row.Index - 1;\n\t\t\t\trowobj = {};\n\t\t\t\tif(row.AutoFitHeight == \"0\" || row.Height) {\n\t\t\t\t\trowobj.hpx = parseInt(row.Height, 10); rowobj.hpt = px2pt(rowobj.hpx);\n\t\t\t\t\trowinfo[r] = rowobj;\n\t\t\t\t}\n\t\t\t\tif(row.Hidden == \"1\") { rowobj.hidden = true; rowinfo[r] = rowobj; }\n\t\t\t}\n\t\t\tbreak;\n\t\tcase 'Worksheet': /* TODO: read range from FullRows/FullColumns */\n\t\t\tif(Rn[1]==='/'){\n\t\t\t\tif((tmp=state.pop())[0]!==Rn[3]) throw new Error(\"Bad state: \"+tmp.join(\"|\"));\n\t\t\t\tsheetnames.push(sheetname);\n\t\t\t\tif(refguess.s.r <= refguess.e.r && refguess.s.c <= refguess.e.c) {\n\t\t\t\t\tcursheet[\"!ref\"] = encode_range(refguess);\n\t\t\t\t\tif(opts.sheetRows && opts.sheetRows <= refguess.e.r) {\n\t\t\t\t\t\tcursheet[\"!fullref\"] = cursheet[\"!ref\"];\n\t\t\t\t\t\trefguess.e.r = opts.sheetRows - 1;\n\t\t\t\t\t\tcursheet[\"!ref\"] = encode_range(refguess);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif(merges.length) cursheet[\"!merges\"] = merges;\n\t\t\t\tif(cstys.length > 0) cursheet[\"!cols\"] = cstys;\n\t\t\t\tif(rowinfo.length > 0) cursheet[\"!rows\"] = rowinfo;\n\t\t\t\tsheets[sheetname] = cursheet;\n\t\t\t} else {\n\t\t\t\trefguess = {s: {r:2000000, c:2000000}, e: {r:0, c:0} };\n\t\t\t\tr = c = 0;\n\t\t\t\tstate.push([Rn[3], false]);\n\t\t\t\ttmp = xlml_parsexmltag(Rn[0]);\n\t\t\t\tsheetname = unescapexml(tmp.Name);\n\t\t\t\tcursheet = (opts.dense ? [] : {});\n\t\t\t\tmerges = [];\n\t\t\t\tarrayf = [];\n\t\t\t\trowinfo = [];\n\t\t\t\twsprops = {name:sheetname, Hidden:0};\n\t\t\t\tWorkbook.Sheets.push(wsprops);\n\t\t\t}\n\t\t\tbreak;\n\t\tcase 'Table':\n\t\t\tif(Rn[1]==='/'){if((tmp=state.pop())[0]!==Rn[3]) throw new Error(\"Bad state: \"+tmp.join(\"|\"));}\n\t\t\telse if(Rn[0].slice(-2) == \"/>\") break;\n\t\t\telse {\n\t\t\t\ttable = xlml_parsexmltag(Rn[0]);\n\t\t\t\tstate.push([Rn[3], false]);\n\t\t\t\tcstys = []; seencol = false;\n\t\t\t}\n\t\t\tbreak;\n\n\t\tcase 'Style':\n\t\t\tif(Rn[1]==='/') process_style_xlml(styles, stag, opts);\n\t\t\telse stag = xlml_parsexmltag(Rn[0]);\n\t\t\tbreak;\n\n\t\tcase 'NumberFormat':\n\t\t\tstag.nf = unescapexml(xlml_parsexmltag(Rn[0]).Format || \"General\");\n\t\t\tif(XLMLFormatMap[stag.nf]) stag.nf = XLMLFormatMap[stag.nf];\n\t\t\tfor(var ssfidx = 0; ssfidx != 0x188; ++ssfidx) if(SSF._table[ssfidx] == stag.nf) break;\n\t\t\tif(ssfidx == 0x188) for(ssfidx = 0x39; ssfidx != 0x188; ++ssfidx) if(SSF._table[ssfidx] == null) { SSF.load(stag.nf, ssfidx); break; }\n\t\t\tbreak;\n\n\t\tcase 'Column':\n\t\t\tif(state[state.length-1][0] !== 'Table') break;\n\t\t\tcsty = xlml_parsexmltag(Rn[0]);\n\t\t\tif(csty.Hidden) { csty.hidden = true; delete csty.Hidden; }\n\t\t\tif(csty.Width) csty.wpx = parseInt(csty.Width, 10);\n\t\t\tif(!seencol && csty.wpx > 10) {\n\t\t\t\tseencol = true; MDW = DEF_MDW; //find_mdw_wpx(csty.wpx);\n\t\t\t\tfor(var _col = 0; _col < cstys.length; ++_col) if(cstys[_col]) process_col(cstys[_col]);\n\t\t\t}\n\t\t\tif(seencol) process_col(csty);\n\t\t\tcstys[(csty.Index-1||cstys.length)] = csty;\n\t\t\tfor(var i = 0; i < +csty.Span; ++i) cstys[cstys.length] = dup(csty);\n\t\t\tbreak;\n\n\t\tcase 'NamedRange':\n\t\t\tif(!Workbook.Names) Workbook.Names = [];\n\t\t\tvar _NamedRange = parsexmltag(Rn[0]);\n\t\t\tvar _DefinedName = ({\n\t\t\t\tName: _NamedRange.Name,\n\t\t\t\tRef: rc_to_a1(_NamedRange.RefersTo.slice(1), {r:0, c:0})\n\t\t\t});\n\t\t\tif(Workbook.Sheets.length>0) _DefinedName.Sheet=Workbook.Sheets.length-1;\nWorkbook.Names.push(_DefinedName);\n\t\t\tbreak;\n\n\t\tcase 'NamedCell': break;\n\t\tcase 'B': break;\n\t\tcase 'I': break;\n\t\tcase 'U': break;\n\t\tcase 'S': break;\n\t\tcase 'Sub': break;\n\t\tcase 'Sup': break;\n\t\tcase 'Span': break;\n\t\tcase 'Border': break;\n\t\tcase 'Alignment': break;\n\t\tcase 'Borders': break;\n\t\tcase 'Font':\n\t\t\tif(Rn[0].slice(-2) === \"/>\") break;\n\t\t\telse if(Rn[1]===\"/\") ss += str.slice(fidx, Rn.index);\n\t\t\telse fidx = Rn.index + Rn[0].length;\n\t\t\tbreak;\n\t\tcase 'Interior':\n\t\t\tif(!opts.cellStyles) break;\n\t\t\tstag.Interior = xlml_parsexmltag(Rn[0]);\n\t\t\tbreak;\n\t\tcase 'Protection': break;\n\n\t\tcase 'Author':\n\t\tcase 'Title':\n\t\tcase 'Description':\n\t\tcase 'Created':\n\t\tcase 'Keywords':\n\t\tcase 'Subject':\n\t\tcase 'Category':\n\t\tcase 'Company':\n\t\tcase 'LastAuthor':\n\t\tcase 'LastSaved':\n\t\tcase 'LastPrinted':\n\t\tcase 'Version':\n\t\tcase 'Revision':\n\t\tcase 'TotalTime':\n\t\tcase 'HyperlinkBase':\n\t\tcase 'Manager':\n\t\tcase 'ContentStatus':\n\t\tcase 'Identifier':\n\t\tcase 'Language':\n\t\tcase 'AppName':\n\t\t\tif(Rn[0].slice(-2) === \"/>\") break;\n\t\t\telse if(Rn[1]===\"/\") xlml_set_prop(Props, Rn[3], str.slice(pidx, Rn.index));\n\t\t\telse pidx = Rn.index + Rn[0].length;\n\t\t\tbreak;\n\t\tcase 'Paragraphs': break;\n\n\t\tcase 'Styles':\n\t\tcase 'Workbook':\n\t\t\tif(Rn[1]==='/'){if((tmp=state.pop())[0]!==Rn[3]) throw new Error(\"Bad state: \"+tmp.join(\"|\"));}\n\t\t\telse state.push([Rn[3], false]);\n\t\t\tbreak;\n\n\t\tcase 'Comment':\n\t\t\tif(Rn[1]==='/'){\n\t\t\t\tif((tmp=state.pop())[0]!==Rn[3]) throw new Error(\"Bad state: \"+tmp.join(\"|\"));\n\t\t\t\txlml_clean_comment(comment);\n\t\t\t\tcomments.push(comment);\n\t\t\t} else {\n\t\t\t\tstate.push([Rn[3], false]);\n\t\t\t\ttmp = xlml_parsexmltag(Rn[0]);\n\t\t\t\tcomment = ({a:tmp.Author});\n\t\t\t}\n\t\t\tbreak;\n\n\t\tcase 'AutoFilter':\n\t\t\tif(Rn[1]==='/'){if((tmp=state.pop())[0]!==Rn[3]) throw new Error(\"Bad state: \"+tmp.join(\"|\"));}\n\t\t\telse if(Rn[0].charAt(Rn[0].length-2) !== '/') {\n\t\t\t\tvar AutoFilter = xlml_parsexmltag(Rn[0]);\n\t\t\t\tcursheet['!autofilter'] = { ref:rc_to_a1(AutoFilter.Range).replace(/\\$/g,\"\") };\n\t\t\t\tstate.push([Rn[3], true]);\n\t\t\t}\n\t\t\tbreak;\n\n\t\tcase 'Name': break;\n\n\t\tcase 'ComponentOptions':\n\t\tcase 'DocumentProperties':\n\t\tcase 'CustomDocumentProperties':\n\t\tcase 'OfficeDocumentSettings':\n\t\tcase 'PivotTable':\n\t\tcase 'PivotCache':\n\t\tcase 'Names':\n\t\tcase 'MapInfo':\n\t\tcase 'PageBreaks':\n\t\tcase 'QueryTable':\n\t\tcase 'DataValidation':\n\t\tcase 'Sorting':\n\t\tcase 'Schema':\n\t\tcase 'data':\n\t\tcase 'ConditionalFormatting':\n\t\tcase 'SmartTagType':\n\t\tcase 'SmartTags':\n\t\tcase 'ExcelWorkbook':\n\t\tcase 'WorkbookOptions':\n\t\tcase 'WorksheetOptions':\n\t\t\tif(Rn[1]==='/'){if((tmp=state.pop())[0]!==Rn[3]) throw new Error(\"Bad state: \"+tmp.join(\"|\"));}\n\t\t\telse if(Rn[0].charAt(Rn[0].length-2) !== '/') state.push([Rn[3], true]);\n\t\t\tbreak;\n\n\t\tdefault:\n\t\t\t/* FODS file root is */\n\t\t\tif(state.length == 0 && Rn[3] == \"document\") return parse_fods(str, opts);\n\t\t\t/* UOS file root is */\n\t\t\tif(state.length == 0 && Rn[3] == \"UOF\") return parse_fods(str, opts);\n\n\t\t\tvar seen = true;\n\t\t\tswitch(state[state.length-1][0]) {\n\t\t\t\t/* OfficeDocumentSettings */\n\t\t\t\tcase 'OfficeDocumentSettings': switch(Rn[3]) {\n\t\t\t\t\tcase 'AllowPNG': break;\n\t\t\t\t\tcase 'RemovePersonalInformation': break;\n\t\t\t\t\tcase 'DownloadComponents': break;\n\t\t\t\t\tcase 'LocationOfComponents': break;\n\t\t\t\t\tcase 'Colors': break;\n\t\t\t\t\tcase 'Color': break;\n\t\t\t\t\tcase 'Index': break;\n\t\t\t\t\tcase 'RGB': break;\n\t\t\t\t\tcase 'PixelsPerInch': break; // TODO: set PPI\n\t\t\t\t\tcase 'TargetScreenSize': break;\n\t\t\t\t\tcase 'ReadOnlyRecommended': break;\n\t\t\t\t\tdefault: seen = false;\n\t\t\t\t} break;\n\n\t\t\t\t/* ComponentOptions */\n\t\t\t\tcase 'ComponentOptions': switch(Rn[3]) {\n\t\t\t\t\tcase 'Toolbar': break;\n\t\t\t\t\tcase 'HideOfficeLogo': break;\n\t\t\t\t\tcase 'SpreadsheetAutoFit': break;\n\t\t\t\t\tcase 'Label': break;\n\t\t\t\t\tcase 'Caption': break;\n\t\t\t\t\tcase 'MaxHeight': break;\n\t\t\t\t\tcase 'MaxWidth': break;\n\t\t\t\t\tcase 'NextSheetNumber': break;\n\t\t\t\t\tdefault: seen = false;\n\t\t\t\t} break;\n\n\t\t\t\t/* ExcelWorkbook */\n\t\t\t\tcase 'ExcelWorkbook': switch(Rn[3]) {\n\t\t\t\t\tcase 'Date1904':\nWorkbook.WBProps.date1904 = true;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'WindowHeight': break;\n\t\t\t\t\tcase 'WindowWidth': break;\n\t\t\t\t\tcase 'WindowTopX': break;\n\t\t\t\t\tcase 'WindowTopY': break;\n\t\t\t\t\tcase 'TabRatio': break;\n\t\t\t\t\tcase 'ProtectStructure': break;\n\t\t\t\t\tcase 'ProtectWindows': break;\n\t\t\t\t\tcase 'ActiveSheet': break;\n\t\t\t\t\tcase 'DisplayInkNotes': break;\n\t\t\t\t\tcase 'FirstVisibleSheet': break;\n\t\t\t\t\tcase 'SupBook': break;\n\t\t\t\t\tcase 'SheetName': break;\n\t\t\t\t\tcase 'SheetIndex': break;\n\t\t\t\t\tcase 'SheetIndexFirst': break;\n\t\t\t\t\tcase 'SheetIndexLast': break;\n\t\t\t\t\tcase 'Dll': break;\n\t\t\t\t\tcase 'AcceptLabelsInFormulas': break;\n\t\t\t\t\tcase 'DoNotSaveLinkValues': break;\n\t\t\t\t\tcase 'Iteration': break;\n\t\t\t\t\tcase 'MaxIterations': break;\n\t\t\t\t\tcase 'MaxChange': break;\n\t\t\t\t\tcase 'Path': break;\n\t\t\t\t\tcase 'Xct': break;\n\t\t\t\t\tcase 'Count': break;\n\t\t\t\t\tcase 'SelectedSheets': break;\n\t\t\t\t\tcase 'Calculation': break;\n\t\t\t\t\tcase 'Uncalced': break;\n\t\t\t\t\tcase 'StartupPrompt': break;\n\t\t\t\t\tcase 'Crn': break;\n\t\t\t\t\tcase 'ExternName': break;\n\t\t\t\t\tcase 'Formula': break;\n\t\t\t\t\tcase 'ColFirst': break;\n\t\t\t\t\tcase 'ColLast': break;\n\t\t\t\t\tcase 'WantAdvise': break;\n\t\t\t\t\tcase 'Boolean': break;\n\t\t\t\t\tcase 'Error': break;\n\t\t\t\t\tcase 'Text': break;\n\t\t\t\t\tcase 'OLE': break;\n\t\t\t\t\tcase 'NoAutoRecover': break;\n\t\t\t\t\tcase 'PublishObjects': break;\n\t\t\t\t\tcase 'DoNotCalculateBeforeSave': break;\n\t\t\t\t\tcase 'Number': break;\n\t\t\t\t\tcase 'RefModeR1C1': break;\n\t\t\t\t\tcase 'EmbedSaveSmartTags': break;\n\t\t\t\t\tdefault: seen = false;\n\t\t\t\t} break;\n\n\t\t\t\t/* WorkbookOptions */\n\t\t\t\tcase 'WorkbookOptions': switch(Rn[3]) {\n\t\t\t\t\tcase 'OWCVersion': break;\n\t\t\t\t\tcase 'Height': break;\n\t\t\t\t\tcase 'Width': break;\n\t\t\t\t\tdefault: seen = false;\n\t\t\t\t} break;\n\n\t\t\t\t/* WorksheetOptions */\n\t\t\t\tcase 'WorksheetOptions': switch(Rn[3]) {\n\t\t\t\t\tcase 'Visible':\n\t\t\t\t\t\tif(Rn[0].slice(-2) === \"/>\"){/* empty */}\n\t\t\t\t\t\telse if(Rn[1]===\"/\") switch(str.slice(pidx, Rn.index)) {\n\t\t\t\t\t\t\tcase \"SheetHidden\": wsprops.Hidden = 1; break;\n\t\t\t\t\t\t\tcase \"SheetVeryHidden\": wsprops.Hidden = 2; break;\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse pidx = Rn.index + Rn[0].length;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'Header':\n\t\t\t\t\t\tif(!cursheet['!margins']) default_margins(cursheet['!margins']={}, 'xlml');\n\t\t\t\t\t\tcursheet['!margins'].header = parsexmltag(Rn[0]).Margin;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'Footer':\n\t\t\t\t\t\tif(!cursheet['!margins']) default_margins(cursheet['!margins']={}, 'xlml');\n\t\t\t\t\t\tcursheet['!margins'].footer = parsexmltag(Rn[0]).Margin;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'PageMargins':\n\t\t\t\t\t\tvar pagemargins = parsexmltag(Rn[0]);\n\t\t\t\t\t\tif(!cursheet['!margins']) default_margins(cursheet['!margins']={},'xlml');\n\t\t\t\t\t\tif(pagemargins.Top) cursheet['!margins'].top = pagemargins.Top;\n\t\t\t\t\t\tif(pagemargins.Left) cursheet['!margins'].left = pagemargins.Left;\n\t\t\t\t\t\tif(pagemargins.Right) cursheet['!margins'].right = pagemargins.Right;\n\t\t\t\t\t\tif(pagemargins.Bottom) cursheet['!margins'].bottom = pagemargins.Bottom;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'DisplayRightToLeft':\n\t\t\t\t\t\tif(!Workbook.Views) Workbook.Views = [];\n\t\t\t\t\t\tif(!Workbook.Views[0]) Workbook.Views[0] = {};\n\t\t\t\t\t\tWorkbook.Views[0].RTL = true;\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'Unsynced': break;\n\t\t\t\t\tcase 'Print': break;\n\t\t\t\t\tcase 'Panes': break;\n\t\t\t\t\tcase 'Scale': break;\n\t\t\t\t\tcase 'Pane': break;\n\t\t\t\t\tcase 'Number': break;\n\t\t\t\t\tcase 'Layout': break;\n\t\t\t\t\tcase 'PageSetup': break;\n\t\t\t\t\tcase 'Selected': break;\n\t\t\t\t\tcase 'ProtectObjects': break;\n\t\t\t\t\tcase 'EnableSelection': break;\n\t\t\t\t\tcase 'ProtectScenarios': break;\n\t\t\t\t\tcase 'ValidPrinterInfo': break;\n\t\t\t\t\tcase 'HorizontalResolution': break;\n\t\t\t\t\tcase 'VerticalResolution': break;\n\t\t\t\t\tcase 'NumberofCopies': break;\n\t\t\t\t\tcase 'ActiveRow': break;\n\t\t\t\t\tcase 'ActiveCol': break;\n\t\t\t\t\tcase 'ActivePane': break;\n\t\t\t\t\tcase 'TopRowVisible': break;\n\t\t\t\t\tcase 'TopRowBottomPane': break;\n\t\t\t\t\tcase 'LeftColumnVisible': break;\n\t\t\t\t\tcase 'LeftColumnRightPane': break;\n\t\t\t\t\tcase 'FitToPage': break;\n\t\t\t\t\tcase 'RangeSelection': break;\n\t\t\t\t\tcase 'PaperSizeIndex': break;\n\t\t\t\t\tcase 'PageLayoutZoom': break;\n\t\t\t\t\tcase 'PageBreakZoom': break;\n\t\t\t\t\tcase 'FilterOn': break;\n\t\t\t\t\tcase 'DoNotDisplayGridlines': break;\n\t\t\t\t\tcase 'SplitHorizontal': break;\n\t\t\t\t\tcase 'SplitVertical': break;\n\t\t\t\t\tcase 'FreezePanes': break;\n\t\t\t\t\tcase 'FrozenNoSplit': break;\n\t\t\t\t\tcase 'FitWidth': break;\n\t\t\t\t\tcase 'FitHeight': break;\n\t\t\t\t\tcase 'CommentsLayout': break;\n\t\t\t\t\tcase 'Zoom': break;\n\t\t\t\t\tcase 'LeftToRight': break;\n\t\t\t\t\tcase 'Gridlines': break;\n\t\t\t\t\tcase 'AllowSort': break;\n\t\t\t\t\tcase 'AllowFilter': break;\n\t\t\t\t\tcase 'AllowInsertRows': break;\n\t\t\t\t\tcase 'AllowDeleteRows': break;\n\t\t\t\t\tcase 'AllowInsertCols': break;\n\t\t\t\t\tcase 'AllowDeleteCols': break;\n\t\t\t\t\tcase 'AllowInsertHyperlinks': break;\n\t\t\t\t\tcase 'AllowFormatCells': break;\n\t\t\t\t\tcase 'AllowSizeCols': break;\n\t\t\t\t\tcase 'AllowSizeRows': break;\n\t\t\t\t\tcase 'NoSummaryRowsBelowDetail': break;\n\t\t\t\t\tcase 'TabColorIndex': break;\n\t\t\t\t\tcase 'DoNotDisplayHeadings': break;\n\t\t\t\t\tcase 'ShowPageLayoutZoom': break;\n\t\t\t\t\tcase 'NoSummaryColumnsRightDetail': break;\n\t\t\t\t\tcase 'BlackAndWhite': break;\n\t\t\t\t\tcase 'DoNotDisplayZeros': break;\n\t\t\t\t\tcase 'DisplayPageBreak': break;\n\t\t\t\t\tcase 'RowColHeadings': break;\n\t\t\t\t\tcase 'DoNotDisplayOutline': break;\n\t\t\t\t\tcase 'NoOrientation': break;\n\t\t\t\t\tcase 'AllowUsePivotTables': break;\n\t\t\t\t\tcase 'ZeroHeight': break;\n\t\t\t\t\tcase 'ViewableRange': break;\n\t\t\t\t\tcase 'Selection': break;\n\t\t\t\t\tcase 'ProtectContents': break;\n\t\t\t\t\tdefault: seen = false;\n\t\t\t\t} break;\n\n\t\t\t\t/* PivotTable */\n\t\t\t\tcase 'PivotTable': case 'PivotCache': switch(Rn[3]) {\n\t\t\t\t\tcase 'ImmediateItemsOnDrop': break;\n\t\t\t\t\tcase 'ShowPageMultipleItemLabel': break;\n\t\t\t\t\tcase 'CompactRowIndent': break;\n\t\t\t\t\tcase 'Location': break;\n\t\t\t\t\tcase 'PivotField': break;\n\t\t\t\t\tcase 'Orientation': break;\n\t\t\t\t\tcase 'LayoutForm': break;\n\t\t\t\t\tcase 'LayoutSubtotalLocation': break;\n\t\t\t\t\tcase 'LayoutCompactRow': break;\n\t\t\t\t\tcase 'Position': break;\n\t\t\t\t\tcase 'PivotItem': break;\n\t\t\t\t\tcase 'DataType': break;\n\t\t\t\t\tcase 'DataField': break;\n\t\t\t\t\tcase 'SourceName': break;\n\t\t\t\t\tcase 'ParentField': break;\n\t\t\t\t\tcase 'PTLineItems': break;\n\t\t\t\t\tcase 'PTLineItem': break;\n\t\t\t\t\tcase 'CountOfSameItems': break;\n\t\t\t\t\tcase 'Item': break;\n\t\t\t\t\tcase 'ItemType': break;\n\t\t\t\t\tcase 'PTSource': break;\n\t\t\t\t\tcase 'CacheIndex': break;\n\t\t\t\t\tcase 'ConsolidationReference': break;\n\t\t\t\t\tcase 'FileName': break;\n\t\t\t\t\tcase 'Reference': break;\n\t\t\t\t\tcase 'NoColumnGrand': break;\n\t\t\t\t\tcase 'NoRowGrand': break;\n\t\t\t\t\tcase 'BlankLineAfterItems': break;\n\t\t\t\t\tcase 'Hidden': break;\n\t\t\t\t\tcase 'Subtotal': break;\n\t\t\t\t\tcase 'BaseField': break;\n\t\t\t\t\tcase 'MapChildItems': break;\n\t\t\t\t\tcase 'Function': break;\n\t\t\t\t\tcase 'RefreshOnFileOpen': break;\n\t\t\t\t\tcase 'PrintSetTitles': break;\n\t\t\t\t\tcase 'MergeLabels': break;\n\t\t\t\t\tcase 'DefaultVersion': break;\n\t\t\t\t\tcase 'RefreshName': break;\n\t\t\t\t\tcase 'RefreshDate': break;\n\t\t\t\t\tcase 'RefreshDateCopy': break;\n\t\t\t\t\tcase 'VersionLastRefresh': break;\n\t\t\t\t\tcase 'VersionLastUpdate': break;\n\t\t\t\t\tcase 'VersionUpdateableMin': break;\n\t\t\t\t\tcase 'VersionRefreshableMin': break;\n\t\t\t\t\tcase 'Calculation': break;\n\t\t\t\t\tdefault: seen = false;\n\t\t\t\t} break;\n\n\t\t\t\t/* PageBreaks */\n\t\t\t\tcase 'PageBreaks': switch(Rn[3]) {\n\t\t\t\t\tcase 'ColBreaks': break;\n\t\t\t\t\tcase 'ColBreak': break;\n\t\t\t\t\tcase 'RowBreaks': break;\n\t\t\t\t\tcase 'RowBreak': break;\n\t\t\t\t\tcase 'ColStart': break;\n\t\t\t\t\tcase 'ColEnd': break;\n\t\t\t\t\tcase 'RowEnd': break;\n\t\t\t\t\tdefault: seen = false;\n\t\t\t\t} break;\n\n\t\t\t\t/* AutoFilter */\n\t\t\t\tcase 'AutoFilter': switch(Rn[3]) {\n\t\t\t\t\tcase 'AutoFilterColumn': break;\n\t\t\t\t\tcase 'AutoFilterCondition': break;\n\t\t\t\t\tcase 'AutoFilterAnd': break;\n\t\t\t\t\tcase 'AutoFilterOr': break;\n\t\t\t\t\tdefault: seen = false;\n\t\t\t\t} break;\n\n\t\t\t\t/* QueryTable */\n\t\t\t\tcase 'QueryTable': switch(Rn[3]) {\n\t\t\t\t\tcase 'Id': break;\n\t\t\t\t\tcase 'AutoFormatFont': break;\n\t\t\t\t\tcase 'AutoFormatPattern': break;\n\t\t\t\t\tcase 'QuerySource': break;\n\t\t\t\t\tcase 'QueryType': break;\n\t\t\t\t\tcase 'EnableRedirections': break;\n\t\t\t\t\tcase 'RefreshedInXl9': break;\n\t\t\t\t\tcase 'URLString': break;\n\t\t\t\t\tcase 'HTMLTables': break;\n\t\t\t\t\tcase 'Connection': break;\n\t\t\t\t\tcase 'CommandText': break;\n\t\t\t\t\tcase 'RefreshInfo': break;\n\t\t\t\t\tcase 'NoTitles': break;\n\t\t\t\t\tcase 'NextId': break;\n\t\t\t\t\tcase 'ColumnInfo': break;\n\t\t\t\t\tcase 'OverwriteCells': break;\n\t\t\t\t\tcase 'DoNotPromptForFile': break;\n\t\t\t\t\tcase 'TextWizardSettings': break;\n\t\t\t\t\tcase 'Source': break;\n\t\t\t\t\tcase 'Number': break;\n\t\t\t\t\tcase 'Decimal': break;\n\t\t\t\t\tcase 'ThousandSeparator': break;\n\t\t\t\t\tcase 'TrailingMinusNumbers': break;\n\t\t\t\t\tcase 'FormatSettings': break;\n\t\t\t\t\tcase 'FieldType': break;\n\t\t\t\t\tcase 'Delimiters': break;\n\t\t\t\t\tcase 'Tab': break;\n\t\t\t\t\tcase 'Comma': break;\n\t\t\t\t\tcase 'AutoFormatName': break;\n\t\t\t\t\tcase 'VersionLastEdit': break;\n\t\t\t\t\tcase 'VersionLastRefresh': break;\n\t\t\t\t\tdefault: seen = false;\n\t\t\t\t} break;\n\n\t\t\t\tcase 'Sorting':\n\t\t\t\tcase 'ConditionalFormatting':\n\t\t\t\tcase 'DataValidation':\n\t\t\t\tswitch(Rn[3]) {\n\t\t\t\t\tcase 'Range': break;\n\t\t\t\t\tcase 'Type': break;\n\t\t\t\t\tcase 'Min': break;\n\t\t\t\t\tcase 'Max': break;\n\t\t\t\t\tcase 'Sort': break;\n\t\t\t\t\tcase 'Descending': break;\n\t\t\t\t\tcase 'Order': break;\n\t\t\t\t\tcase 'CaseSensitive': break;\n\t\t\t\t\tcase 'Value': break;\n\t\t\t\t\tcase 'ErrorStyle': break;\n\t\t\t\t\tcase 'ErrorMessage': break;\n\t\t\t\t\tcase 'ErrorTitle': break;\n\t\t\t\t\tcase 'CellRangeList': break;\n\t\t\t\t\tcase 'InputMessage': break;\n\t\t\t\t\tcase 'InputTitle': break;\n\t\t\t\t\tcase 'ComboHide': break;\n\t\t\t\t\tcase 'InputHide': break;\n\t\t\t\t\tcase 'Condition': break;\n\t\t\t\t\tcase 'Qualifier': break;\n\t\t\t\t\tcase 'UseBlank': break;\n\t\t\t\t\tcase 'Value1': break;\n\t\t\t\t\tcase 'Value2': break;\n\t\t\t\t\tcase 'Format': break;\n\t\t\t\t\tdefault: seen = false;\n\t\t\t\t} break;\n\n\t\t\t\t/* MapInfo (schema) */\n\t\t\t\tcase 'MapInfo': case 'Schema': case 'data': switch(Rn[3]) {\n\t\t\t\t\tcase 'Map': break;\n\t\t\t\t\tcase 'Entry': break;\n\t\t\t\t\tcase 'Range': break;\n\t\t\t\t\tcase 'XPath': break;\n\t\t\t\t\tcase 'Field': break;\n\t\t\t\t\tcase 'XSDType': break;\n\t\t\t\t\tcase 'FilterOn': break;\n\t\t\t\t\tcase 'Aggregate': break;\n\t\t\t\t\tcase 'ElementType': break;\n\t\t\t\t\tcase 'AttributeType': break;\n\t\t\t\t/* These are from xsd (XML Schema Definition) */\n\t\t\t\t\tcase 'schema':\n\t\t\t\t\tcase 'element':\n\t\t\t\t\tcase 'complexType':\n\t\t\t\t\tcase 'datatype':\n\t\t\t\t\tcase 'all':\n\t\t\t\t\tcase 'attribute':\n\t\t\t\t\tcase 'extends': break;\n\n\t\t\t\t\tcase 'row': break;\n\t\t\t\t\tdefault: seen = false;\n\t\t\t\t} break;\n\n\t\t\t\t/* SmartTags (can be anything) */\n\t\t\t\tcase 'SmartTags': break;\n\n\t\t\t\tdefault: seen = false; break;\n\t\t\t}\n\t\t\tif(seen) break;\n\t\t\t/* CustomDocumentProperties */\n\t\t\tif(!state[state.length-1][1]) throw 'Unrecognized tag: ' + Rn[3] + \"|\" + state.join(\"|\");\n\t\t\tif(state[state.length-1][0]==='CustomDocumentProperties') {\n\t\t\t\tif(Rn[0].slice(-2) === \"/>\") break;\n\t\t\t\telse if(Rn[1]===\"/\") xlml_set_custprop(Custprops, Rn[3], cp, str.slice(pidx, Rn.index));\n\t\t\t\telse { cp = Rn; pidx = Rn.index + Rn[0].length; }\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif(opts.WTF) throw 'Unrecognized tag: ' + Rn[3] + \"|\" + state.join(\"|\");\n\t}\n\tvar out = ({});\n\tif(!opts.bookSheets && !opts.bookProps) out.Sheets = sheets;\n\tout.SheetNames = sheetnames;\n\tout.Workbook = Workbook;\n\tout.SSF = SSF.get_table();\n\tout.Props = Props;\n\tout.Custprops = Custprops;\n\treturn out;\n}\n\nfunction parse_xlml(data, opts) {\n\tfix_read_opts(opts=opts||{});\n\tswitch(opts.type||\"base64\") {\n\t\tcase \"base64\": return parse_xlml_xml(Base64.decode(data), opts);\n\t\tcase \"binary\": case \"buffer\": case \"file\": return parse_xlml_xml(data, opts);\n\t\tcase \"array\": return parse_xlml_xml(a2s(data), opts);\n\t}\n}\n\n/* TODO */\nfunction write_props_xlml(wb, opts) {\n\tvar o = [];\n\t/* DocumentProperties */\n\tif(wb.Props) o.push(xlml_write_docprops(wb.Props, opts));\n\t/* CustomDocumentProperties */\n\tif(wb.Custprops) o.push(xlml_write_custprops(wb.Props, wb.Custprops, opts));\n\treturn o.join(\"\");\n}\n/* TODO */\nfunction write_wb_xlml() {\n\t/* OfficeDocumentSettings */\n\t/* ExcelWorkbook */\n\treturn \"\";\n}\n/* TODO */\nfunction write_sty_xlml(wb, opts) {\n\t/* Styles */\n\tvar styles = [''];\n\topts.cellXfs.forEach(function(xf, id) {\n\t\tvar payload = [];\n\t\tpayload.push(writextag('NumberFormat', null, {\"ss:Format\": escapexml(SSF._table[xf.numFmtId])}));\n\t\tstyles.push(writextag('Style', payload.join(\"\"), {\"ss:ID\": \"s\" + (21+id)}));\n\t});\n\treturn writextag(\"Styles\", styles.join(\"\"));\n}\nfunction write_name_xlml(n) { return writextag(\"NamedRange\", null, {\"ss:Name\": n.Name, \"ss:RefersTo\":\"=\" + a1_to_rc(n.Ref, {r:0,c:0})}); }\nfunction write_names_xlml(wb) {\n\tif(!((wb||{}).Workbook||{}).Names) return \"\";\nvar names = wb.Workbook.Names;\n\tvar out = [];\n\tfor(var i = 0; i < names.length; ++i) {\n\t\tvar n = names[i];\n\t\tif(n.Sheet != null) continue;\n\t\tif(n.Name.match(/^_xlfn\\./)) continue;\n\t\tout.push(write_name_xlml(n));\n\t}\n\treturn writextag(\"Names\", out.join(\"\"));\n}\nfunction write_ws_xlml_names(ws, opts, idx, wb) {\n\tif(!ws) return \"\";\n\tif(!((wb||{}).Workbook||{}).Names) return \"\";\nvar names = wb.Workbook.Names;\n\tvar out = [];\n\tfor(var i = 0; i < names.length; ++i) {\n\t\tvar n = names[i];\n\t\tif(n.Sheet != idx) continue;\n\t\t/*switch(n.Name) {\n\t\t\tcase \"_\": continue;\n\t\t}*/\n\t\tif(n.Name.match(/^_xlfn\\./)) continue;\n\t\tout.push(write_name_xlml(n));\n\t}\n\treturn out.join(\"\");\n}\n/* WorksheetOptions */\nfunction write_ws_xlml_wsopts(ws, opts, idx, wb) {\n\tif(!ws) return \"\";\n\tvar o = [];\n\t/* NOTE: spec technically allows any order, but stick with implied order */\n\n\t/* FitToPage */\n\t/* DoNotDisplayColHeaders */\n\t/* DoNotDisplayRowHeaders */\n\t/* ViewableRange */\n\t/* Selection */\n\t/* GridlineColor */\n\t/* Name */\n\t/* ExcelWorksheetType */\n\t/* IntlMacro */\n\t/* Unsynced */\n\t/* Selected */\n\t/* CodeName */\n\n\tif(ws['!margins']) {\n\t\to.push(\"\");\n\t\tif(ws['!margins'].header) o.push(writextag(\"Header\", null, {'x:Margin':ws['!margins'].header}));\n\t\tif(ws['!margins'].footer) o.push(writextag(\"Footer\", null, {'x:Margin':ws['!margins'].footer}));\n\t\to.push(writextag(\"PageMargins\", null, {\n\t\t\t'x:Bottom': ws['!margins'].bottom || \"0.75\",\n\t\t\t'x:Left': ws['!margins'].left || \"0.7\",\n\t\t\t'x:Right': ws['!margins'].right || \"0.7\",\n\t\t\t'x:Top': ws['!margins'].top || \"0.75\"\n\t\t}));\n\t\to.push(\"\");\n\t}\n\n\t/* PageSetup */\n\t/* DisplayPageBreak */\n\t/* TransitionExpressionEvaluation */\n\t/* TransitionFormulaEntry */\n\t/* Print */\n\t/* Zoom */\n\t/* PageLayoutZoom */\n\t/* PageBreakZoom */\n\t/* ShowPageBreakZoom */\n\t/* DefaultRowHeight */\n\t/* DefaultColumnWidth */\n\t/* StandardWidth */\n\n\tif(wb && wb.Workbook && wb.Workbook.Sheets && wb.Workbook.Sheets[idx]) {\n\t\t/* Visible */\n\t\tif(wb.Workbook.Sheets[idx].Hidden) o.push(writextag(\"Visible\", (wb.Workbook.Sheets[idx].Hidden == 1 ? \"SheetHidden\" : \"SheetVeryHidden\"), {}));\n\t\telse {\n\t\t\t/* Selected */\n\t\t\tfor(var i = 0; i < idx; ++i) if(wb.Workbook.Sheets[i] && !wb.Workbook.Sheets[i].Hidden) break;\n\t\t\tif(i == idx) o.push(\"\");\n\t\t}\n\t}\n\n\t/* LeftColumnVisible */\n\n\tif(((((wb||{}).Workbook||{}).Views||[])[0]||{}).RTL) o.push(\"\");\n\n\t/* GridlineColorIndex */\n\t/* DisplayFormulas */\n\t/* DoNotDisplayGridlines */\n\t/* DoNotDisplayHeadings */\n\t/* DoNotDisplayOutline */\n\t/* ApplyAutomaticOutlineStyles */\n\t/* NoSummaryRowsBelowDetail */\n\t/* NoSummaryColumnsRightDetail */\n\t/* DoNotDisplayZeros */\n\t/* ActiveRow */\n\t/* ActiveColumn */\n\t/* FilterOn */\n\t/* RangeSelection */\n\t/* TopRowVisible */\n\t/* TopRowBottomPane */\n\t/* LeftColumnRightPane */\n\t/* ActivePane */\n\t/* SplitHorizontal */\n\t/* SplitVertical */\n\t/* FreezePanes */\n\t/* FrozenNoSplit */\n\t/* TabColorIndex */\n\t/* Panes */\n\n\t/* NOTE: Password not supported in XLML Format */\n\tif(ws['!protect']) {\n\t\to.push(writetag(\"ProtectContents\", \"True\"));\n\t\tif(ws['!protect'].objects) o.push(writetag(\"ProtectObjects\", \"True\"));\n\t\tif(ws['!protect'].scenarios) o.push(writetag(\"ProtectScenarios\", \"True\"));\n\t\tif(ws['!protect'].selectLockedCells != null && !ws['!protect'].selectLockedCells) o.push(writetag(\"EnableSelection\", \"NoSelection\"));\n\t\telse if(ws['!protect'].selectUnlockedCells != null && !ws['!protect'].selectUnlockedCells) o.push(writetag(\"EnableSelection\", \"UnlockedCells\"));\n\t[\n\t\t[ \"formatCells\", \"AllowFormatCells\" ],\n\t\t[ \"formatColumns\", \"AllowSizeCols\" ],\n\t\t[ \"formatRows\", \"AllowSizeRows\" ],\n\t\t[ \"insertColumns\", \"AllowInsertCols\" ],\n\t\t[ \"insertRows\", \"AllowInsertRows\" ],\n\t\t[ \"insertHyperlinks\", \"AllowInsertHyperlinks\" ],\n\t\t[ \"deleteColumns\", \"AllowDeleteCols\" ],\n\t\t[ \"deleteRows\", \"AllowDeleteRows\" ],\n\t\t[ \"sort\", \"AllowSort\" ],\n\t\t[ \"autoFilter\", \"AllowFilter\" ],\n\t\t[ \"pivotTables\", \"AllowUsePivotTables\" ]\n\t].forEach(function(x) { if(ws['!protect'][x[0]]) o.push(\"<\"+x[1]+\"/>\"); });\n\t}\n\n\tif(o.length == 0) return \"\";\n\treturn writextag(\"WorksheetOptions\", o.join(\"\"), {xmlns:XLMLNS.x});\n}\nfunction write_ws_xlml_comment(comments) {\n\treturn comments.map(function(c) {\n\t\t// TODO: formatted text\n\t\tvar t = xlml_unfixstr(c.t||\"\");\n\t\tvar d =writextag(\"ss:Data\", t, {\"xmlns\":\"http://www.w3.org/TR/REC-html40\"});\n\t\treturn writextag(\"Comment\", d, {\"ss:Author\":c.a});\n\t}).join(\"\");\n}\nfunction write_ws_xlml_cell(cell, ref, ws, opts, idx, wb, addr){\n\tif(!cell || (cell.v == undefined && cell.f == undefined)) return \"\";\n\n\tvar attr = {};\n\tif(cell.f) attr[\"ss:Formula\"] = \"=\" + escapexml(a1_to_rc(cell.f, addr));\n\tif(cell.F && cell.F.slice(0, ref.length) == ref) {\n\t\tvar end = decode_cell(cell.F.slice(ref.length + 1));\n\t\tattr[\"ss:ArrayRange\"] = \"RC:R\" + (end.r == addr.r ? \"\" : \"[\" + (end.r - addr.r) + \"]\") + \"C\" + (end.c == addr.c ? \"\" : \"[\" + (end.c - addr.c) + \"]\");\n\t}\n\n\tif(cell.l && cell.l.Target) {\n\t\tattr[\"ss:HRef\"] = escapexml(cell.l.Target);\n\t\tif(cell.l.Tooltip) attr[\"x:HRefScreenTip\"] = escapexml(cell.l.Tooltip);\n\t}\n\n\tif(ws['!merges']) {\n\t\tvar marr = ws['!merges'];\n\t\tfor(var mi = 0; mi != marr.length; ++mi) {\n\t\t\tif(marr[mi].s.c != addr.c || marr[mi].s.r != addr.r) continue;\n\t\t\tif(marr[mi].e.c > marr[mi].s.c) attr['ss:MergeAcross'] = marr[mi].e.c - marr[mi].s.c;\n\t\t\tif(marr[mi].e.r > marr[mi].s.r) attr['ss:MergeDown'] = marr[mi].e.r - marr[mi].s.r;\n\t\t}\n\t}\n\n\tvar t = \"\", p = \"\";\n\tswitch(cell.t) {\n\t\tcase 'z': return \"\";\n\t\tcase 'n': t = 'Number'; p = String(cell.v); break;\n\t\tcase 'b': t = 'Boolean'; p = (cell.v ? \"1\" : \"0\"); break;\n\t\tcase 'e': t = 'Error'; p = BErr[cell.v]; break;\n\t\tcase 'd': t = 'DateTime'; p = new Date(cell.v).toISOString(); if(cell.z == null) cell.z = cell.z || SSF._table[14]; break;\n\t\tcase 's': t = 'String'; p = escapexlml(cell.v||\"\"); break;\n\t}\n\t/* TODO: cell style */\n\tvar os = get_cell_style(opts.cellXfs, cell, opts);\n\tattr[\"ss:StyleID\"] = \"s\" + (21+os);\n\tattr[\"ss:Index\"] = addr.c + 1;\n\tvar _v = (cell.v != null ? p : \"\");\n\tvar m = '' + _v + '';\n\n\tif((cell.c||[]).length > 0) m += write_ws_xlml_comment(cell.c);\n\n\treturn writextag(\"Cell\", m, attr);\n}\nfunction write_ws_xlml_row(R, row) {\n\tvar o = '';\n}\n/* TODO */\nfunction write_ws_xlml_table(ws, opts, idx, wb) {\n\tif(!ws['!ref']) return \"\";\n\tvar range = safe_decode_range(ws['!ref']);\n\tvar marr = ws['!merges'] || [], mi = 0;\n\tvar o = [];\n\tif(ws['!cols']) ws['!cols'].forEach(function(n, i) {\n\t\tprocess_col(n);\n\t\tvar w = !!n.width;\n\t\tvar p = col_obj_w(i, n);\n\t\tvar k = {\"ss:Index\":i+1};\n\t\tif(w) k['ss:Width'] = width2px(p.width);\n\t\tif(n.hidden) k['ss:Hidden']=\"1\";\n\t\to.push(writextag(\"Column\",null,k));\n\t});\n\tvar dense = Array.isArray(ws);\n\tfor(var R = range.s.r; R <= range.e.r; ++R) {\n\t\tvar row = [write_ws_xlml_row(R, (ws['!rows']||[])[R])];\n\t\tfor(var C = range.s.c; C <= range.e.c; ++C) {\n\t\t\tvar skip = false;\n\t\t\tfor(mi = 0; mi != marr.length; ++mi) {\n\t\t\t\tif(marr[mi].s.c > C) continue;\n\t\t\t\tif(marr[mi].s.r > R) continue;\n\t\t\t\tif(marr[mi].e.c < C) continue;\n\t\t\t\tif(marr[mi].e.r < R) continue;\n\t\t\t\tif(marr[mi].s.c != C || marr[mi].s.r != R) skip = true;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif(skip) continue;\n\t\t\tvar addr = {r:R,c:C};\n\t\t\tvar ref = encode_cell(addr), cell = dense ? (ws[R]||[])[C] : ws[ref];\n\t\t\trow.push(write_ws_xlml_cell(cell, ref, ws, opts, idx, wb, addr));\n\t\t}\n\t\trow.push(\"\");\n\t\tif(row.length > 2) o.push(row.join(\"\"));\n\t}\n\treturn o.join(\"\");\n}\nfunction write_ws_xlml(idx, opts, wb) {\n\tvar o = [];\n\tvar s = wb.SheetNames[idx];\n\tvar ws = wb.Sheets[s];\n\n\tvar t = ws ? write_ws_xlml_names(ws, opts, idx, wb) : \"\";\n\tif(t.length > 0) o.push(\"\" + t + \"\");\n\n\t/* Table */\n\tt = ws ? write_ws_xlml_table(ws, opts, idx, wb) : \"\";\n\tif(t.length > 0) o.push(\"\" + t + \"
\");\n\n\t/* WorksheetOptions */\n\to.push(write_ws_xlml_wsopts(ws, opts, idx, wb));\n\n\treturn o.join(\"\");\n}\nfunction write_xlml(wb, opts) {\n\tif(!opts) opts = {};\n\tif(!wb.SSF) wb.SSF = SSF.get_table();\n\tif(wb.SSF) {\n\t\tmake_ssf(SSF); SSF.load_table(wb.SSF);\n\t\t// $FlowIgnore\n\t\topts.revssf = evert_num(wb.SSF); opts.revssf[wb.SSF[65535]] = 0;\n\t\topts.ssf = wb.SSF;\n\t\topts.cellXfs = [];\n\t\tget_cell_style(opts.cellXfs, {}, {revssf:{\"General\":0}});\n\t}\n\tvar d = [];\n\td.push(write_props_xlml(wb, opts));\n\td.push(write_wb_xlml(wb, opts));\n\td.push(\"\");\n\td.push(\"\");\n\tfor(var i = 0; i < wb.SheetNames.length; ++i)\n\t\td.push(writextag(\"Worksheet\", write_ws_xlml(i, opts, wb), {\"ss:Name\":escapexml(wb.SheetNames[i])}));\n\td[2] = write_sty_xlml(wb, opts);\n\td[3] = write_names_xlml(wb, opts);\n\treturn XML_HEADER + writextag(\"Workbook\", d.join(\"\"), {\n\t\t'xmlns': XLMLNS.ss,\n\t\t'xmlns:o': XLMLNS.o,\n\t\t'xmlns:x': XLMLNS.x,\n\t\t'xmlns:ss': XLMLNS.ss,\n\t\t'xmlns:dt': XLMLNS.dt,\n\t\t'xmlns:html': XLMLNS.html\n\t});\n}\n/* [MS-OLEDS] 2.3.8 CompObjStream */\nfunction parse_compobj(obj) {\n\tvar v = {};\n\tvar o = obj.content;\n/* [MS-OLEDS] 2.3.7 CompObjHeader -- All fields MUST be ignored */\n\to.l = 28;\n\n\tv.AnsiUserType = o.read_shift(0, \"lpstr-ansi\");\n\tv.AnsiClipboardFormat = parse_ClipboardFormatOrAnsiString(o);\n\n\tif(o.length - o.l <= 4) return v;\n\n\tvar m = o.read_shift(4);\n\tif(m == 0 || m > 40) return v;\n\to.l-=4; v.Reserved1 = o.read_shift(0, \"lpstr-ansi\");\n\n\tif(o.length - o.l <= 4) return v;\n\tm = o.read_shift(4);\n\tif(m !== 0x71b239f4) return v;\n\tv.UnicodeClipboardFormat = parse_ClipboardFormatOrUnicodeString(o);\n\n\tm = o.read_shift(4);\n\tif(m == 0 || m > 40) return v;\n\to.l-=4; v.Reserved2 = o.read_shift(0, \"lpwstr\");\n}\n\n/*\n\tContinue logic for:\n\t- 2.4.58 Continue\n\t- 2.4.59 ContinueBigName\n\t- 2.4.60 ContinueFrt\n\t- 2.4.61 ContinueFrt11\n\t- 2.4.62 ContinueFrt12\n*/\nfunction slurp(R, blob, length, opts) {\n\tvar l = length;\n\tvar bufs = [];\n\tvar d = blob.slice(blob.l,blob.l+l);\n\tif(opts && opts.enc && opts.enc.insitu) switch(R.n) {\n\tcase 'BOF': case 'FilePass': case 'FileLock': case 'InterfaceHdr': case 'RRDInfo': case 'RRDHead': case 'UsrExcl': break;\n\tdefault:\n\t\tif(d.length === 0) break;\n\t\topts.enc.insitu(d);\n\t}\n\tbufs.push(d);\n\tblob.l += l;\n\tvar next = (XLSRecordEnum[__readUInt16LE(blob,blob.l)]);\n\tvar start = 0;\n\twhile(next != null && next.n.slice(0,8) === 'Continue') {\n\t\tl = __readUInt16LE(blob,blob.l+2);\n\t\tstart = blob.l + 4;\n\t\tif(next.n == 'ContinueFrt') start += 4;\n\t\telse if(next.n.slice(0,11) == 'ContinueFrt') start += 12;\n\t\tbufs.push(blob.slice(start,blob.l+4+l));\n\t\tblob.l += 4+l;\n\t\tnext = (XLSRecordEnum[__readUInt16LE(blob, blob.l)]);\n\t}\n\tvar b = (bconcat(bufs));\n\tprep_blob(b, 0);\n\tvar ll = 0; b.lens = [];\n\tfor(var j = 0; j < bufs.length; ++j) { b.lens.push(ll); ll += bufs[j].length; }\n\treturn R.f(b, b.length, opts);\n}\n\nfunction safe_format_xf(p, opts, date1904) {\n\tif(p.t === 'z') return;\n\tif(!p.XF) return;\n\tvar fmtid = 0;\n\ttry {\n\t\tfmtid = p.z || p.XF.numFmtId || 0;\n\t\tif(opts.cellNF) p.z = SSF._table[fmtid];\n\t} catch(e) { if(opts.WTF) throw e; }\n\tif(!opts || opts.cellText !== false) try {\n\t\tif(p.t === 'e') { p.w = p.w || BErr[p.v]; }\n\t\telse if(fmtid === 0 || fmtid == \"General\") {\n\t\t\tif(p.t === 'n') {\n\t\t\t\tif((p.v|0) === p.v) p.w = SSF._general_int(p.v);\n\t\t\t\telse p.w = SSF._general_num(p.v);\n\t\t\t}\n\t\t\telse p.w = SSF._general(p.v);\n\t\t}\n\t\telse p.w = SSF.format(fmtid,p.v, {date1904:!!date1904});\n\t} catch(e) { if(opts.WTF) throw e; }\n\tif(opts.cellDates && fmtid && p.t == 'n' && SSF.is_date(SSF._table[fmtid] || String(fmtid))) {\n\t\tvar _d = SSF.parse_date_code(p.v); if(_d) { p.t = 'd'; p.v = new Date(_d.y, _d.m-1,_d.d,_d.H,_d.M,_d.S,_d.u); }\n\t}\n}\n\nfunction make_cell(val, ixfe, t) {\n\treturn ({v:val, ixfe:ixfe, t:t});\n}\n\n// 2.3.2\nfunction parse_workbook(blob, options) {\n\tvar wb = ({opts:{}});\n\tvar Sheets = {};\n\tif(DENSE != null && options.dense == null) options.dense = DENSE;\n\tvar out = ((options.dense ? [] : {}));\n\tvar Directory = {};\n\tvar range = ({});\n\tvar last_formula = null;\n\tvar sst = ([]);\n\tvar cur_sheet = \"\";\n\tvar Preamble = {};\n\tvar lastcell, last_cell = \"\", cc, cmnt, rngC, rngR;\n\tvar sharedf = {};\n\tvar arrayf = [];\n\tvar temp_val;\n\tvar country;\n\tvar cell_valid = true;\n\tvar XFs = []; /* XF records */\n\tvar palette = [];\n\tvar Workbook = ({ Sheets:[], WBProps:{date1904:false}, Views:[{}] }), wsprops = {};\n\tvar get_rgb = function getrgb(icv) {\n\t\tif(icv < 8) return XLSIcv[icv];\n\t\tif(icv < 64) return palette[icv-8] || XLSIcv[icv];\n\t\treturn XLSIcv[icv];\n\t};\n\tvar process_cell_style = function pcs(cell, line, options) {\n\t\tvar xfd = line.XF.data;\n\t\tif(!xfd || !xfd.patternType || !options || !options.cellStyles) return;\n\t\tline.s = ({});\n\t\tline.s.patternType = xfd.patternType;\n\t\tvar t;\n\t\tif((t = rgb2Hex(get_rgb(xfd.icvFore)))) { line.s.fgColor = {rgb:t}; }\n\t\tif((t = rgb2Hex(get_rgb(xfd.icvBack)))) { line.s.bgColor = {rgb:t}; }\n\t};\n\tvar addcell = function addcell(cell, line, options) {\n\t\tif(file_depth > 1) return;\n\t\tif(options.sheetRows && cell.r >= options.sheetRows) cell_valid = false;\n\t\tif(!cell_valid) return;\n\t\tif(options.cellStyles && line.XF && line.XF.data) process_cell_style(cell, line, options);\n\t\tdelete line.ixfe; delete line.XF;\n\t\tlastcell = cell;\n\t\tlast_cell = encode_cell(cell);\n\t\tif(!range || !range.s || !range.e) range = {s:{r:0,c:0},e:{r:0,c:0}};\n\t\tif(cell.r < range.s.r) range.s.r = cell.r;\n\t\tif(cell.c < range.s.c) range.s.c = cell.c;\n\t\tif(cell.r + 1 > range.e.r) range.e.r = cell.r + 1;\n\t\tif(cell.c + 1 > range.e.c) range.e.c = cell.c + 1;\n\t\tif(options.cellFormula && line.f) {\n\t\t\tfor(var afi = 0; afi < arrayf.length; ++afi) {\n\t\t\t\tif(arrayf[afi][0].s.c > cell.c || arrayf[afi][0].s.r > cell.r) continue;\n\t\t\t\tif(arrayf[afi][0].e.c < cell.c || arrayf[afi][0].e.r < cell.r) continue;\n\t\t\t\tline.F = encode_range(arrayf[afi][0]);\n\t\t\t\tif(arrayf[afi][0].s.c != cell.c || arrayf[afi][0].s.r != cell.r) delete line.f;\n\t\t\t\tif(line.f) line.f = \"\" + stringify_formula(arrayf[afi][1], range, cell, supbooks, opts);\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\t{\n\t\t\tif(options.dense) {\n\t\t\t\tif(!out[cell.r]) out[cell.r] = [];\n\t\t\t\tout[cell.r][cell.c] = line;\n\t\t\t} else out[last_cell] = line;\n\t\t}\n\t};\n\tvar opts = ({\n\t\tenc: false, // encrypted\n\t\tsbcch: 0, // cch in the preceding SupBook\n\t\tsnames: [], // sheetnames\n\t\tsharedf: sharedf, // shared formulae by address\n\t\tarrayf: arrayf, // array formulae array\n\t\trrtabid: [], // RRTabId\n\t\tlastuser: \"\", // Last User from WriteAccess\n\t\tbiff: 8, // BIFF version\n\t\tcodepage: 0, // CP from CodePage record\n\t\twinlocked: 0, // fLockWn from WinProtect\n\t\tcellStyles: !!options && !!options.cellStyles,\n\t\tWTF: !!options && !!options.wtf\n\t});\n\tif(options.password) opts.password = options.password;\n\tvar themes;\n\tvar merges = [];\n\tvar objects = [];\n\tvar colinfo = [], rowinfo = [];\n\t// eslint-disable-next-line no-unused-vars\n\tvar defwidth = 0, defheight = 0; // twips / MDW respectively\n\tvar seencol = false;\n\tvar supbooks = ([]); // 1-indexed, will hold extern names\n\tsupbooks.SheetNames = opts.snames;\n\tsupbooks.sharedf = opts.sharedf;\n\tsupbooks.arrayf = opts.arrayf;\n\tsupbooks.names = [];\n\tsupbooks.XTI = [];\n\tvar last_Rn = '';\n\tvar file_depth = 0; /* TODO: make a real stack */\n\tvar BIFF2Fmt = 0, BIFF2FmtTable = [];\n\tvar FilterDatabases = []; /* TODO: sort out supbooks and process elsewhere */\n\tvar last_lbl;\n\n\t/* explicit override for some broken writers */\n\topts.codepage = 1200;\n\tset_cp(1200);\n\tvar seen_codepage = false;\n\twhile(blob.l < blob.length - 1) {\n\t\tvar s = blob.l;\n\t\tvar RecordType = blob.read_shift(2);\n\t\tif(RecordType === 0 && last_Rn === 'EOF') break;\n\t\tvar length = (blob.l === blob.length ? 0 : blob.read_shift(2));\n\t\tvar R = XLSRecordEnum[RecordType];\n\t\t//console.log(RecordType.toString(16), RecordType, R, blob.l, length, blob.length);\n\t\t//if(!R) console.log(blob.slice(blob.l, blob.l + length));\n\t\tif(R && R.f) {\n\t\t\tif(options.bookSheets) {\n\t\t\t\tif(last_Rn === 'BoundSheet8' && R.n !== 'BoundSheet8') break;\n\t\t\t}\n\t\t\tlast_Rn = R.n;\n\t\t\tif(R.r === 2 || R.r == 12) {\n\t\t\t\tvar rt = blob.read_shift(2); length -= 2;\n\t\t\t\tif(!opts.enc && rt !== RecordType && (((rt&0xFF)<<8)|(rt>>8)) !== RecordType) throw new Error(\"rt mismatch: \" + rt + \"!=\" + RecordType);\n\t\t\t\tif(R.r == 12){ blob.l += 10; length -= 10; } // skip FRT\n\t\t\t}\n\t\t\t//console.error(R,blob.l,length,blob.length);\n\t\t\tvar val;\n\t\t\tif(R.n === 'EOF') val = R.f(blob, length, opts);\n\t\t\telse val = slurp(R, blob, length, opts);\n\t\t\tvar Rn = R.n;\n\t\t\tif(file_depth == 0 && Rn != 'BOF') continue;\n\t\t\t/* nested switch statements to workaround V8 128 limit */\n\t\t\tswitch(Rn) {\n\t\t\t\t/* Workbook Options */\n\t\t\t\tcase 'Date1904':\nwb.opts.Date1904 = Workbook.WBProps.date1904 = val; break;\n\t\t\t\tcase 'WriteProtect': wb.opts.WriteProtect = true; break;\n\t\t\t\tcase 'FilePass':\n\t\t\t\t\tif(!opts.enc) blob.l = 0;\n\t\t\t\t\topts.enc = val;\n\t\t\t\t\tif(!options.password) throw new Error(\"File is password-protected\");\n\t\t\t\t\tif(val.valid == null) throw new Error(\"Encryption scheme unsupported\");\n\t\t\t\t\tif(!val.valid) throw new Error(\"Password is incorrect\");\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'WriteAccess': opts.lastuser = val; break;\n\t\t\t\tcase 'FileSharing': break; //TODO\n\t\t\t\tcase 'CodePage':\n\t\t\t\t\t/* overrides based on test cases */\n\t\t\t\t\tswitch(val) {\n\t\t\t\t\t\tcase 0x5212: val = 1200; break;\n\t\t\t\t\t\tcase 0x8000: val = 10000; break;\n\t\t\t\t\t\tcase 0x8001: val = 1252; break;\n\t\t\t\t\t}\n\t\t\t\t\tset_cp(opts.codepage = val);\n\t\t\t\t\tseen_codepage = true;\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'RRTabId': opts.rrtabid = val; break;\n\t\t\t\tcase 'WinProtect': opts.winlocked = val; break;\n\t\t\t\tcase 'Template': break; // TODO\n\t\t\t\tcase 'BookBool': break; // TODO\n\t\t\t\tcase 'UsesELFs': break;\n\t\t\t\tcase 'MTRSettings': break;\n\t\t\t\tcase 'RefreshAll':\n\t\t\t\tcase 'CalcCount':\n\t\t\t\tcase 'CalcDelta':\n\t\t\t\tcase 'CalcIter':\n\t\t\t\tcase 'CalcMode':\n\t\t\t\tcase 'CalcPrecision':\n\t\t\t\tcase 'CalcSaveRecalc':\n\t\t\t\t\twb.opts[Rn] = val; break;\n\t\t\t\tcase 'CalcRefMode': opts.CalcRefMode = val; break; // TODO: implement R1C1\n\t\t\t\tcase 'Uncalced': break;\n\t\t\t\tcase 'ForceFullCalculation': wb.opts.FullCalc = val; break;\n\t\t\t\tcase 'WsBool':\n\t\t\t\t\tif(val.fDialog) out[\"!type\"] = \"dialog\";\n\t\t\t\t\tbreak; // TODO\n\t\t\t\tcase 'XF':\n\t\t\t\t\tXFs.push(val); break;\n\t\t\t\tcase 'ExtSST': break; // TODO\n\t\t\t\tcase 'BookExt': break; // TODO\n\t\t\t\tcase 'RichTextStream': break;\n\t\t\t\tcase 'BkHim': break;\n\n\t\t\t\tcase 'SupBook':\n\t\t\t\t\tsupbooks.push([val]);\n\t\t\t\t\tsupbooks[supbooks.length-1].XTI = [];\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'ExternName':\n\t\t\t\t\tsupbooks[supbooks.length-1].push(val);\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'Index': break; // TODO\n\t\t\t\tcase 'Lbl':\n\t\t\t\t\tlast_lbl = ({\n\t\t\t\t\t\tName: val.Name,\n\t\t\t\t\t\tRef: stringify_formula(val.rgce,range,null,supbooks,opts)\n\t\t\t\t\t});\n\t\t\t\t\tif(val.itab > 0) last_lbl.Sheet = val.itab - 1;\n\t\t\t\t\tsupbooks.names.push(last_lbl);\n\t\t\t\t\tif(!supbooks[0]) { supbooks[0] = []; supbooks[0].XTI = []; }\n\t\t\t\t\tsupbooks[supbooks.length-1].push(val);\n\t\t\t\t\tif(val.Name == \"_xlnm._FilterDatabase\" && val.itab > 0)\n\t\t\t\t\t\tif(val.rgce && val.rgce[0] && val.rgce[0][0] && val.rgce[0][0][0] == 'PtgArea3d')\n\t\t\t\t\t\t\tFilterDatabases[val.itab - 1] = { ref: encode_range(val.rgce[0][0][1][2]) };\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'ExternCount': opts.ExternCount = val; break;\n\t\t\t\tcase 'ExternSheet':\n\t\t\t\t\tif(supbooks.length == 0) { supbooks[0] = []; supbooks[0].XTI = []; }\n\t\t\t\t\tsupbooks[supbooks.length - 1].XTI = supbooks[supbooks.length - 1].XTI.concat(val); supbooks.XTI = supbooks.XTI.concat(val); break;\n\t\t\t\tcase 'NameCmt':\n\t\t\t\t\t/* TODO: search for correct name */\n\t\t\t\t\tif(opts.biff < 8) break;\n\t\t\t\t\tif(last_lbl != null) last_lbl.Comment = val[1];\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'Protect': out[\"!protect\"] = val; break; /* for sheet or book */\n\t\t\t\tcase 'Password': if(val !== 0 && opts.WTF) console.error(\"Password verifier: \" + val); break;\n\t\t\t\tcase 'Prot4Rev': case 'Prot4RevPass': break; /*TODO: Revision Control*/\n\n\t\t\t\tcase 'BoundSheet8': {\n\t\t\t\t\tDirectory[val.pos] = val;\n\t\t\t\t\topts.snames.push(val.name);\n\t\t\t\t} break;\n\t\t\t\tcase 'EOF': {\n\t\t\t\t\tif(--file_depth) break;\n\t\t\t\t\tif(range.e) {\n\t\t\t\t\t\tif(range.e.r > 0 && range.e.c > 0) {\n\t\t\t\t\t\t\trange.e.r--; range.e.c--;\n\t\t\t\t\t\t\tout[\"!ref\"] = encode_range(range);\n\t\t\t\t\t\t\tif(options.sheetRows && options.sheetRows <= range.e.r) {\n\t\t\t\t\t\t\t\tvar tmpri = range.e.r;\n\t\t\t\t\t\t\t\trange.e.r = options.sheetRows - 1;\n\t\t\t\t\t\t\t\tout[\"!fullref\"] = out[\"!ref\"];\n\t\t\t\t\t\t\t\tout[\"!ref\"] = encode_range(range);\n\t\t\t\t\t\t\t\trange.e.r = tmpri;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\trange.e.r++; range.e.c++;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif(merges.length > 0) out[\"!merges\"] = merges;\n\t\t\t\t\t\tif(objects.length > 0) out[\"!objects\"] = objects;\n\t\t\t\t\t\tif(colinfo.length > 0) out[\"!cols\"] = colinfo;\n\t\t\t\t\t\tif(rowinfo.length > 0) out[\"!rows\"] = rowinfo;\n\t\t\t\t\t\tWorkbook.Sheets.push(wsprops);\n\t\t\t\t\t}\n\t\t\t\t\tif(cur_sheet === \"\") Preamble = out; else Sheets[cur_sheet] = out;\n\t\t\t\t\tout = ((options.dense ? [] : {}));\n\t\t\t\t} break;\n\t\t\t\tcase 'BOF': {\n\t\t\t\t\tif(opts.biff === 8) opts.biff = {\n0x0009:2,\n0x0209:3,\n0x0409:4\n\t\t\t\t\t}[RecordType] || {\n0x0200:2,\n0x0300:3,\n0x0400:4,\n0x0500:5,\n0x0600:8,\n0x0002:2,\n0x0007:2\n\t\t\t\t\t}[val.BIFFVer] || 8;\n\t\t\t\t\tif(opts.biff == 8 && val.BIFFVer == 0 && val.dt == 16) opts.biff = 2;\n\t\t\t\t\tif(file_depth++) break;\n\t\t\t\t\tcell_valid = true;\n\t\t\t\t\tout = ((options.dense ? [] : {}));\n\n\t\t\t\t\tif(opts.biff < 8 && !seen_codepage) { seen_codepage = true; set_cp(opts.codepage = options.codepage || 1252); }\n\t\t\t\t\tif(opts.biff < 5) {\n\t\t\t\t\t\tif(cur_sheet === \"\") cur_sheet = \"Sheet1\";\n\t\t\t\t\t\trange = {s:{r:0,c:0},e:{r:0,c:0}};\n\t\t\t\t\t\t/* fake BoundSheet8 */\n\t\t\t\t\t\tvar fakebs8 = {pos: blob.l - length, name:cur_sheet};\n\t\t\t\t\t\tDirectory[fakebs8.pos] = fakebs8;\n\t\t\t\t\t\topts.snames.push(cur_sheet);\n\t\t\t\t\t}\n\t\t\t\t\telse cur_sheet = (Directory[s] || {name:\"\"}).name;\n\t\t\t\t\tif(val.dt == 0x20) out[\"!type\"] = \"chart\";\n\t\t\t\t\tif(val.dt == 0x40) out[\"!type\"] = \"macro\";\n\t\t\t\t\tmerges = [];\n\t\t\t\t\tobjects = [];\n\t\t\t\t\topts.arrayf = arrayf = [];\n\t\t\t\t\tcolinfo = []; rowinfo = [];\n\t\t\t\t\tdefwidth = defheight = 0;\n\t\t\t\t\tseencol = false;\n\t\t\t\t\twsprops = {Hidden:(Directory[s]||{hs:0}).hs, name:cur_sheet };\n\t\t\t\t} break;\n\n\t\t\t\tcase 'Number': case 'BIFF2NUM': case 'BIFF2INT': {\n\t\t\t\t\tif(out[\"!type\"] == \"chart\") if(options.dense ? (out[val.r]||[])[val.c]: out[encode_cell({c:val.c, r:val.r})]) ++val.c;\n\t\t\t\t\ttemp_val = ({ixfe: val.ixfe, XF: XFs[val.ixfe]||{}, v:val.val, t:'n'});\n\t\t\t\t\tif(BIFF2Fmt > 0) temp_val.z = BIFF2FmtTable[(temp_val.ixfe>>8) & 0x1F];\n\t\t\t\t\tsafe_format_xf(temp_val, options, wb.opts.Date1904);\n\t\t\t\t\taddcell({c:val.c, r:val.r}, temp_val, options);\n\t\t\t\t} break;\n\t\t\t\tcase 'BoolErr': {\n\t\t\t\t\ttemp_val = ({ixfe: val.ixfe, XF: XFs[val.ixfe], v:val.val, t:val.t});\n\t\t\t\t\tif(BIFF2Fmt > 0) temp_val.z = BIFF2FmtTable[(temp_val.ixfe>>8) & 0x1F];\n\t\t\t\t\tsafe_format_xf(temp_val, options, wb.opts.Date1904);\n\t\t\t\t\taddcell({c:val.c, r:val.r}, temp_val, options);\n\t\t\t\t} break;\n\t\t\t\tcase 'RK': {\n\t\t\t\t\ttemp_val = ({ixfe: val.ixfe, XF: XFs[val.ixfe], v:val.rknum, t:'n'});\n\t\t\t\t\tif(BIFF2Fmt > 0) temp_val.z = BIFF2FmtTable[(temp_val.ixfe>>8) & 0x1F];\n\t\t\t\t\tsafe_format_xf(temp_val, options, wb.opts.Date1904);\n\t\t\t\t\taddcell({c:val.c, r:val.r}, temp_val, options);\n\t\t\t\t} break;\n\t\t\t\tcase 'MulRk': {\n\t\t\t\t\tfor(var j = val.c; j <= val.C; ++j) {\n\t\t\t\t\t\tvar ixfe = val.rkrec[j-val.c][0];\n\t\t\t\t\t\ttemp_val= ({ixfe:ixfe, XF:XFs[ixfe], v:val.rkrec[j-val.c][1], t:'n'});\n\t\t\t\t\t\tif(BIFF2Fmt > 0) temp_val.z = BIFF2FmtTable[(temp_val.ixfe>>8) & 0x1F];\n\t\t\t\t\t\tsafe_format_xf(temp_val, options, wb.opts.Date1904);\n\t\t\t\t\t\taddcell({c:j, r:val.r}, temp_val, options);\n\t\t\t\t\t}\n\t\t\t\t} break;\n\t\t\t\tcase 'Formula': {\n\t\t\t\t\tif(val.val == 'String') { last_formula = val; break; }\n\t\t\t\t\ttemp_val = make_cell(val.val, val.cell.ixfe, val.tt);\n\t\t\t\t\ttemp_val.XF = XFs[temp_val.ixfe];\n\t\t\t\t\tif(options.cellFormula) {\n\t\t\t\t\t\tvar _f = val.formula;\n\t\t\t\t\t\tif(_f && _f[0] && _f[0][0] && _f[0][0][0] == 'PtgExp') {\n\t\t\t\t\t\t\tvar _fr = _f[0][0][1][0], _fc = _f[0][0][1][1];\n\t\t\t\t\t\t\tvar _fe = encode_cell({r:_fr, c:_fc});\n\t\t\t\t\t\t\tif(sharedf[_fe]) temp_val.f = \"\"+stringify_formula(val.formula,range,val.cell,supbooks, opts);\n\t\t\t\t\t\t\telse temp_val.F = ((options.dense ? (out[_fr]||[])[_fc]: out[_fe]) || {}).F;\n\t\t\t\t\t\t} else temp_val.f = \"\"+stringify_formula(val.formula,range,val.cell,supbooks, opts);\n\t\t\t\t\t}\n\t\t\t\t\tif(BIFF2Fmt > 0) temp_val.z = BIFF2FmtTable[(temp_val.ixfe>>8) & 0x1F];\n\t\t\t\t\tsafe_format_xf(temp_val, options, wb.opts.Date1904);\n\t\t\t\t\taddcell(val.cell, temp_val, options);\n\t\t\t\t\tlast_formula = val;\n\t\t\t\t} break;\n\t\t\t\tcase 'String': {\n\t\t\t\t\tif(last_formula) { /* technically always true */\n\t\t\t\t\t\tlast_formula.val = val;\n\t\t\t\t\t\ttemp_val = make_cell(val, last_formula.cell.ixfe, 's');\n\t\t\t\t\t\ttemp_val.XF = XFs[temp_val.ixfe];\n\t\t\t\t\t\tif(options.cellFormula) {\n\t\t\t\t\t\t\ttemp_val.f = \"\"+stringify_formula(last_formula.formula, range, last_formula.cell, supbooks, opts);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif(BIFF2Fmt > 0) temp_val.z = BIFF2FmtTable[(temp_val.ixfe>>8) & 0x1F];\n\t\t\t\t\t\tsafe_format_xf(temp_val, options, wb.opts.Date1904);\n\t\t\t\t\t\taddcell(last_formula.cell, temp_val, options);\n\t\t\t\t\t\tlast_formula = null;\n\t\t\t\t\t} else throw new Error(\"String record expects Formula\");\n\t\t\t\t} break;\n\t\t\t\tcase 'Array': {\n\t\t\t\t\tarrayf.push(val);\n\t\t\t\t\tvar _arraystart = encode_cell(val[0].s);\n\t\t\t\t\tcc = options.dense ? (out[val[0].s.r]||[])[val[0].s.c] : out[_arraystart];\n\t\t\t\t\tif(options.cellFormula && cc) {\n\t\t\t\t\t\tif(!last_formula) break; /* technically unreachable */\n\t\t\t\t\t\tif(!_arraystart || !cc) break;\n\t\t\t\t\t\tcc.f = \"\"+stringify_formula(val[1], range, val[0], supbooks, opts);\n\t\t\t\t\t\tcc.F = encode_range(val[0]);\n\t\t\t\t\t}\n\t\t\t\t} break;\n\t\t\t\tcase 'ShrFmla': {\n\t\t\t\t\tif(!cell_valid) break;\n\t\t\t\t\tif(!options.cellFormula) break;\n\t\t\t\t\tif(last_cell) {\n\t\t\t\t\t\t/* TODO: capture range */\n\t\t\t\t\t\tif(!last_formula) break; /* technically unreachable */\n\t\t\t\t\t\tsharedf[encode_cell(last_formula.cell)]= val[0];\n\t\t\t\t\t\tcc = options.dense ? (out[last_formula.cell.r]||[])[last_formula.cell.c] : out[encode_cell(last_formula.cell)];\n\t\t\t\t\t\t(cc||{}).f = \"\"+stringify_formula(val[0], range, lastcell, supbooks, opts);\n\t\t\t\t\t}\n\t\t\t\t} break;\n\t\t\t\tcase 'LabelSst':\n\t\t\t\t\ttemp_val=make_cell(sst[val.isst].t, val.ixfe, 's');\n\t\t\t\t\ttemp_val.XF = XFs[temp_val.ixfe];\n\t\t\t\t\tif(BIFF2Fmt > 0) temp_val.z = BIFF2FmtTable[(temp_val.ixfe>>8) & 0x1F];\n\t\t\t\t\tsafe_format_xf(temp_val, options, wb.opts.Date1904);\n\t\t\t\t\taddcell({c:val.c, r:val.r}, temp_val, options);\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'Blank': if(options.sheetStubs) {\n\t\t\t\t\ttemp_val = ({ixfe: val.ixfe, XF: XFs[val.ixfe], t:'z'});\n\t\t\t\t\tif(BIFF2Fmt > 0) temp_val.z = BIFF2FmtTable[(temp_val.ixfe>>8) & 0x1F];\n\t\t\t\t\tsafe_format_xf(temp_val, options, wb.opts.Date1904);\n\t\t\t\t\taddcell({c:val.c, r:val.r}, temp_val, options);\n\t\t\t\t} break;\n\t\t\t\tcase 'MulBlank': if(options.sheetStubs) {\n\t\t\t\t\tfor(var _j = val.c; _j <= val.C; ++_j) {\n\t\t\t\t\t\tvar _ixfe = val.ixfe[_j-val.c];\n\t\t\t\t\t\ttemp_val= ({ixfe:_ixfe, XF:XFs[_ixfe], t:'z'});\n\t\t\t\t\t\tif(BIFF2Fmt > 0) temp_val.z = BIFF2FmtTable[(temp_val.ixfe>>8) & 0x1F];\n\t\t\t\t\t\tsafe_format_xf(temp_val, options, wb.opts.Date1904);\n\t\t\t\t\t\taddcell({c:_j, r:val.r}, temp_val, options);\n\t\t\t\t\t}\n\t\t\t\t} break;\n\t\t\t\tcase 'RString':\n\t\t\t\tcase 'Label': case 'BIFF2STR':\n\t\t\t\t\ttemp_val=make_cell(val.val, val.ixfe, 's');\n\t\t\t\t\ttemp_val.XF = XFs[temp_val.ixfe];\n\t\t\t\t\tif(BIFF2Fmt > 0) temp_val.z = BIFF2FmtTable[(temp_val.ixfe>>8) & 0x1F];\n\t\t\t\t\tsafe_format_xf(temp_val, options, wb.opts.Date1904);\n\t\t\t\t\taddcell({c:val.c, r:val.r}, temp_val, options);\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'Dimensions': {\n\t\t\t\t\tif(file_depth === 1) range = val; /* TODO: stack */\n\t\t\t\t} break;\n\t\t\t\tcase 'SST': {\n\t\t\t\t\tsst = val;\n\t\t\t\t} break;\n\t\t\t\tcase 'Format': { /* val = [id, fmt] */\n\t\t\t\t\tif(opts.biff == 4) {\n\t\t\t\t\t\tBIFF2FmtTable[BIFF2Fmt++] = val[1];\n\t\t\t\t\t\tfor(var b4idx = 0; b4idx < BIFF2Fmt + 163; ++b4idx) if(SSF._table[b4idx] == val[1]) break;\n\t\t\t\t\t\tif(b4idx >= 163) SSF.load(val[1], BIFF2Fmt + 163);\n\t\t\t\t\t}\n\t\t\t\t\telse SSF.load(val[1], val[0]);\n\t\t\t\t} break;\n\t\t\t\tcase 'BIFF2FORMAT': {\n\t\t\t\t\tBIFF2FmtTable[BIFF2Fmt++] = val;\n\t\t\t\t\tfor(var b2idx = 0; b2idx < BIFF2Fmt + 163; ++b2idx) if(SSF._table[b2idx] == val) break;\n\t\t\t\t\tif(b2idx >= 163) SSF.load(val, BIFF2Fmt + 163);\n\t\t\t\t} break;\n\n\t\t\t\tcase 'MergeCells': merges = merges.concat(val); break;\n\n\t\t\t\tcase 'Obj': objects[val.cmo[0]] = opts.lastobj = val; break;\n\t\t\t\tcase 'TxO': opts.lastobj.TxO = val; break;\n\t\t\t\tcase 'ImData': opts.lastobj.ImData = val; break;\n\n\t\t\t\tcase 'HLink': {\n\t\t\t\t\tfor(rngR = val[0].s.r; rngR <= val[0].e.r; ++rngR)\n\t\t\t\t\t\tfor(rngC = val[0].s.c; rngC <= val[0].e.c; ++rngC) {\n\t\t\t\t\t\t\tcc = options.dense ? (out[rngR]||[])[rngC] : out[encode_cell({c:rngC,r:rngR})];\n\t\t\t\t\t\t\tif(cc) cc.l = val[1];\n\t\t\t\t\t\t}\n\t\t\t\t} break;\n\t\t\t\tcase 'HLinkTooltip': {\n\t\t\t\t\tfor(rngR = val[0].s.r; rngR <= val[0].e.r; ++rngR)\n\t\t\t\t\t\tfor(rngC = val[0].s.c; rngC <= val[0].e.c; ++rngC) {\n\t\t\t\t\t\t\tcc = options.dense ? (out[rngR]||[])[rngC] : out[encode_cell({c:rngC,r:rngR})];\n\t\t\t\t\t\t\tif(cc && cc.l) cc.l.Tooltip = val[1];\n\t\t\t\t\t\t\t}\n\t\t\t\t} break;\n\n\t\t\t\t/* Comments */\n\t\t\t\tcase 'Note': {\n\t\t\t\t\tif(opts.biff <= 5 && opts.biff >= 2) break; /* TODO: BIFF5 */\n\t\t\t\t\tcc = options.dense ? (out[val[0].r]||[])[val[0].c] : out[encode_cell(val[0])];\n\t\t\t\t\tvar noteobj = objects[val[2]];\n\t\t\t\t\tif(!cc) {\n\t\t\t\t\t\tif(options.dense) {\n\t\t\t\t\t\t\tif(!out[val[0].r]) out[val[0].r] = [];\n\t\t\t\t\t\t\tcc = out[val[0].r][val[0].c] = {t:\"z\"};\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tcc = out[encode_cell(val[0])] = {t:\"z\"};\n\t\t\t\t\t\t}\n\t\t\t\t\t\trange.e.r = Math.max(range.e.r, val[0].r);\n\t\t\t\t\t\trange.s.r = Math.min(range.s.r, val[0].r);\n\t\t\t\t\t\trange.e.c = Math.max(range.e.c, val[0].c);\n\t\t\t\t\t\trange.s.c = Math.min(range.s.c, val[0].c);\n\t\t\t\t\t}\n\t\t\t\t\tif(!cc.c) cc.c = [];\n\t\t\t\t\tcmnt = {a:val[1],t:noteobj.TxO.t};\n\t\t\t\t\tcc.c.push(cmnt);\n\t\t\t\t} break;\n\n\t\t\t\tdefault: switch(R.n) { /* nested */\n\t\t\t\tcase 'ClrtClient': break;\n\t\t\t\tcase 'XFExt': update_xfext(XFs[val.ixfe], val.ext); break;\n\n\t\t\t\tcase 'DefColWidth': defwidth = val; break;\n\t\t\t\tcase 'DefaultRowHeight': defheight = val[1]; break; // TODO: flags\n\n\t\t\t\tcase 'ColInfo': {\n\t\t\t\t\tif(!opts.cellStyles) break;\n\t\t\t\t\twhile(val.e >= val.s) {\n\t\t\t\t\t\tcolinfo[val.e--] = { width: val.w/256 };\n\t\t\t\t\t\tif(!seencol) { seencol = true; find_mdw_colw(val.w/256); }\n\t\t\t\t\t\tprocess_col(colinfo[val.e+1]);\n\t\t\t\t\t}\n\t\t\t\t} break;\n\t\t\t\tcase 'Row': {\n\t\t\t\t\tvar rowobj = {};\n\t\t\t\t\tif(val.level != null) { rowinfo[val.r] = rowobj; rowobj.level = val.level; }\n\t\t\t\t\tif(val.hidden) { rowinfo[val.r] = rowobj; rowobj.hidden = true; }\n\t\t\t\t\tif(val.hpt) {\n\t\t\t\t\t\trowinfo[val.r] = rowobj;\n\t\t\t\t\t\trowobj.hpt = val.hpt; rowobj.hpx = pt2px(val.hpt);\n\t\t\t\t\t}\n\t\t\t\t} break;\n\n\t\t\t\tcase 'LeftMargin':\n\t\t\t\tcase 'RightMargin':\n\t\t\t\tcase 'TopMargin':\n\t\t\t\tcase 'BottomMargin':\n\t\t\t\t\tif(!out['!margins']) default_margins(out['!margins'] = {});\n\t\t\t\t\tout['!margins'][Rn.slice(0,-6).toLowerCase()] = val;\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'Setup': // TODO\n\t\t\t\t\tif(!out['!margins']) default_margins(out['!margins'] = {});\n\t\t\t\t\tout['!margins'].header = val.header;\n\t\t\t\t\tout['!margins'].footer = val.footer;\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'Window2': // TODO\n\t\t\t\t\t// $FlowIgnore\n\t\t\t\t\tif(val.RTL) Workbook.Views[0].RTL = true;\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'Header': break; // TODO\n\t\t\t\tcase 'Footer': break; // TODO\n\t\t\t\tcase 'HCenter': break; // TODO\n\t\t\t\tcase 'VCenter': break; // TODO\n\t\t\t\tcase 'Pls': break; // TODO\n\t\t\t\tcase 'GCW': break;\n\t\t\t\tcase 'LHRecord': break;\n\t\t\t\tcase 'DBCell': break; // TODO\n\t\t\t\tcase 'EntExU2': break; // TODO\n\t\t\t\tcase 'SxView': break; // TODO\n\t\t\t\tcase 'Sxvd': break; // TODO\n\t\t\t\tcase 'SXVI': break; // TODO\n\t\t\t\tcase 'SXVDEx': break; // TODO\n\t\t\t\tcase 'SxIvd': break; // TODO\n\t\t\t\tcase 'SXString': break; // TODO\n\t\t\t\tcase 'Sync': break;\n\t\t\t\tcase 'Addin': break;\n\t\t\t\tcase 'SXDI': break; // TODO\n\t\t\t\tcase 'SXLI': break; // TODO\n\t\t\t\tcase 'SXEx': break; // TODO\n\t\t\t\tcase 'QsiSXTag': break; // TODO\n\t\t\t\tcase 'Selection': break;\n\t\t\t\tcase 'Feat': break;\n\t\t\t\tcase 'FeatHdr': case 'FeatHdr11': break;\n\t\t\t\tcase 'Feature11': case 'Feature12': case 'List12': break;\n\t\t\t\tcase 'Country': country = val; break;\n\t\t\t\tcase 'RecalcId': break;\n\t\t\t\tcase 'DxGCol': break; // TODO: htmlify\n\t\t\t\tcase 'Fbi': case 'Fbi2': case 'GelFrame': break;\n\t\t\t\tcase 'Font': break; // TODO\n\t\t\t\tcase 'XFCRC': break; // TODO\n\t\t\t\tcase 'Style': break; // TODO\n\t\t\t\tcase 'StyleExt': break; // TODO\n\t\t\t\tcase 'Palette': palette = val; break;\n\t\t\t\tcase 'Theme': themes = val; break;\n\t\t\t\t/* Protection */\n\t\t\t\tcase 'ScenarioProtect': break;\n\t\t\t\tcase 'ObjProtect': break;\n\n\t\t\t\t/* Conditional Formatting */\n\t\t\t\tcase 'CondFmt12': break;\n\n\t\t\t\t/* Table */\n\t\t\t\tcase 'Table': break; // TODO\n\t\t\t\tcase 'TableStyles': break; // TODO\n\t\t\t\tcase 'TableStyle': break; // TODO\n\t\t\t\tcase 'TableStyleElement': break; // TODO\n\n\t\t\t\t/* PivotTable */\n\t\t\t\tcase 'SXStreamID': break; // TODO\n\t\t\t\tcase 'SXVS': break; // TODO\n\t\t\t\tcase 'DConRef': break; // TODO\n\t\t\t\tcase 'SXAddl': break; // TODO\n\t\t\t\tcase 'DConBin': break; // TODO\n\t\t\t\tcase 'DConName': break; // TODO\n\t\t\t\tcase 'SXPI': break; // TODO\n\t\t\t\tcase 'SxFormat': break; // TODO\n\t\t\t\tcase 'SxSelect': break; // TODO\n\t\t\t\tcase 'SxRule': break; // TODO\n\t\t\t\tcase 'SxFilt': break; // TODO\n\t\t\t\tcase 'SxItm': break; // TODO\n\t\t\t\tcase 'SxDXF': break; // TODO\n\n\t\t\t\t/* Scenario Manager */\n\t\t\t\tcase 'ScenMan': break;\n\n\t\t\t\t/* Data Consolidation */\n\t\t\t\tcase 'DCon': break;\n\n\t\t\t\t/* Watched Cell */\n\t\t\t\tcase 'CellWatch': break;\n\n\t\t\t\t/* Print Settings */\n\t\t\t\tcase 'PrintRowCol': break;\n\t\t\t\tcase 'PrintGrid': break;\n\t\t\t\tcase 'PrintSize': break;\n\n\t\t\t\tcase 'XCT': break;\n\t\t\t\tcase 'CRN': break;\n\n\t\t\t\tcase 'Scl': {\n\t\t\t\t\t//console.log(\"Zoom Level:\", val[0]/val[1],val);\n\t\t\t\t} break;\n\t\t\t\tcase 'SheetExt': {\n\t\t\t\t\t/* empty */\n\t\t\t\t} break;\n\t\t\t\tcase 'SheetExtOptional': {\n\t\t\t\t\t/* empty */\n\t\t\t\t} break;\n\n\t\t\t\t/* VBA */\n\t\t\t\tcase 'ObNoMacros': {\n\t\t\t\t\t/* empty */\n\t\t\t\t} break;\n\t\t\t\tcase 'ObProj': {\n\t\t\t\t\t/* empty */\n\t\t\t\t} break;\n\t\t\t\tcase 'CodeName': {\nif(!cur_sheet) Workbook.WBProps.CodeName = val || \"ThisWorkbook\";\n\t\t\t\t\telse wsprops.CodeName = val || wsprops.name;\n\t\t\t\t} break;\n\t\t\t\tcase 'GUIDTypeLib': {\n\t\t\t\t\t/* empty */\n\t\t\t\t} break;\n\n\t\t\t\tcase 'WOpt': break; // TODO: WTF?\n\t\t\t\tcase 'PhoneticInfo': break;\n\n\t\t\t\tcase 'OleObjectSize': break;\n\n\t\t\t\t/* Differential Formatting */\n\t\t\t\tcase 'DXF': case 'DXFN': case 'DXFN12': case 'DXFN12List': case 'DXFN12NoCB': break;\n\n\t\t\t\t/* Data Validation */\n\t\t\t\tcase 'Dv': case 'DVal': break;\n\n\t\t\t\t/* Data Series */\n\t\t\t\tcase 'BRAI': case 'Series': case 'SeriesText': break;\n\n\t\t\t\t/* Data Connection */\n\t\t\t\tcase 'DConn': break;\n\t\t\t\tcase 'DbOrParamQry': break;\n\t\t\t\tcase 'DBQueryExt': break;\n\n\t\t\t\tcase 'OleDbConn': break;\n\t\t\t\tcase 'ExtString': break;\n\n\t\t\t\t/* Formatting */\n\t\t\t\tcase 'IFmtRecord': break;\n\t\t\t\tcase 'CondFmt': case 'CF': case 'CF12': case 'CFEx': break;\n\n\t\t\t\t/* Explicitly Ignored */\n\t\t\t\tcase 'Excel9File': break;\n\t\t\t\tcase 'Units': break;\n\t\t\t\tcase 'InterfaceHdr': case 'Mms': case 'InterfaceEnd': case 'DSF': break;\n\t\t\t\tcase 'BuiltInFnGroupCount': /* 2.4.30 0x0E or 0x10 but excel 2011 generates 0x11? */ break;\n\t\t\t\t/* View Stuff */\n\t\t\t\tcase 'Window1': case 'HideObj': case 'GridSet': case 'Guts':\n\t\t\t\tcase 'UserBView': case 'UserSViewBegin': case 'UserSViewEnd':\n\t\t\t\tcase 'Pane': break;\n\t\t\t\tdefault: switch(R.n) { /* nested */\n\t\t\t\t/* Chart */\n\t\t\t\tcase 'Dat':\n\t\t\t\tcase 'Begin': case 'End':\n\t\t\t\tcase 'StartBlock': case 'EndBlock':\n\t\t\t\tcase 'Frame': case 'Area':\n\t\t\t\tcase 'Axis': case 'AxisLine': case 'Tick': break;\n\t\t\t\tcase 'AxesUsed':\n\t\t\t\tcase 'CrtLayout12': case 'CrtLayout12A': case 'CrtLink': case 'CrtLine': case 'CrtMlFrt': case 'CrtMlFrtContinue': break;\n\t\t\t\tcase 'LineFormat': case 'AreaFormat':\n\t\t\t\tcase 'Chart': case 'Chart3d': case 'Chart3DBarShape': case 'ChartFormat': case 'ChartFrtInfo': break;\n\t\t\t\tcase 'PlotArea': case 'PlotGrowth': break;\n\t\t\t\tcase 'SeriesList': case 'SerParent': case 'SerAuxTrend': break;\n\t\t\t\tcase 'DataFormat': case 'SerToCrt': case 'FontX': break;\n\t\t\t\tcase 'CatSerRange': case 'AxcExt': case 'SerFmt': break;\n\t\t\t\tcase 'ShtProps': break;\n\t\t\t\tcase 'DefaultText': case 'Text': case 'CatLab': break;\n\t\t\t\tcase 'DataLabExtContents': break;\n\t\t\t\tcase 'Legend': case 'LegendException': break;\n\t\t\t\tcase 'Pie': case 'Scatter': break;\n\t\t\t\tcase 'PieFormat': case 'MarkerFormat': break;\n\t\t\t\tcase 'StartObject': case 'EndObject': break;\n\t\t\t\tcase 'AlRuns': case 'ObjectLink': break;\n\t\t\t\tcase 'SIIndex': break;\n\t\t\t\tcase 'AttachedLabel': case 'YMult': break;\n\n\t\t\t\t/* Chart Group */\n\t\t\t\tcase 'Line': case 'Bar': break;\n\t\t\t\tcase 'Surf': break;\n\n\t\t\t\t/* Axis Group */\n\t\t\t\tcase 'AxisParent': break;\n\t\t\t\tcase 'Pos': break;\n\t\t\t\tcase 'ValueRange': break;\n\n\t\t\t\t/* Pivot Chart */\n\t\t\t\tcase 'SXViewEx9': break; // TODO\n\t\t\t\tcase 'SXViewLink': break;\n\t\t\t\tcase 'PivotChartBits': break;\n\t\t\t\tcase 'SBaseRef': break;\n\t\t\t\tcase 'TextPropsStream': break;\n\n\t\t\t\t/* Chart Misc */\n\t\t\t\tcase 'LnExt': break;\n\t\t\t\tcase 'MkrExt': break;\n\t\t\t\tcase 'CrtCoopt': break;\n\n\t\t\t\t/* Query Table */\n\t\t\t\tcase 'Qsi': case 'Qsif': case 'Qsir': case 'QsiSXTag': break;\n\t\t\t\tcase 'TxtQry': break;\n\n\t\t\t\t/* Filter */\n\t\t\t\tcase 'FilterMode': break;\n\t\t\t\tcase 'AutoFilter': case 'AutoFilterInfo': break;\n\t\t\t\tcase 'AutoFilter12': break;\n\t\t\t\tcase 'DropDownObjIds': break;\n\t\t\t\tcase 'Sort': break;\n\t\t\t\tcase 'SortData': break;\n\n\t\t\t\t/* Drawing */\n\t\t\t\tcase 'ShapePropsStream': break;\n\t\t\t\tcase 'MsoDrawing': case 'MsoDrawingGroup': case 'MsoDrawingSelection': break;\n\t\t\t\t/* Pub Stuff */\n\t\t\t\tcase 'WebPub': case 'AutoWebPub': break;\n\n\t\t\t\t/* Print Stuff */\n\t\t\t\tcase 'HeaderFooter': case 'HFPicture': case 'PLV':\n\t\t\t\tcase 'HorizontalPageBreaks': case 'VerticalPageBreaks': break;\n\t\t\t\t/* Behavioral */\n\t\t\t\tcase 'Backup': case 'CompressPictures': case 'Compat12': break;\n\n\t\t\t\t/* Should not Happen */\n\t\t\t\tcase 'Continue': case 'ContinueFrt12': break;\n\n\t\t\t\t/* Future Records */\n\t\t\t\tcase 'FrtFontList': case 'FrtWrapper': break;\n\n\t\t\t\tdefault: switch(R.n) { /* nested */\n\t\t\t\t/* BIFF5 records */\n\t\t\t\tcase 'TabIdConf': case 'Radar': case 'RadarArea': case 'DropBar': case 'Intl': case 'CoordList': case 'SerAuxErrBar': break;\n\n\t\t\t\t/* BIFF2-4 records */\n\t\t\t\tcase 'BIFF2FONTCLR': case 'BIFF2FMTCNT': case 'BIFF2FONTXTRA': break;\n\t\t\t\tcase 'BIFF2XF': case 'BIFF3XF': case 'BIFF4XF': break;\n\t\t\t\tcase 'BIFF4FMTCNT': case 'BIFF2ROW': case 'BIFF2WINDOW2': break;\n\n\t\t\t\t/* Miscellaneous */\n\t\t\t\tcase 'SCENARIO': case 'DConBin': case 'PicF': case 'DataLabExt':\n\t\t\t\tcase 'Lel': case 'BopPop': case 'BopPopCustom': case 'RealTimeData':\n\t\t\t\tcase 'Name': break;\n\t\t\t\tcase 'LHNGraph': case 'FnGroupName': case 'AddMenu': case 'LPr': break;\n\t\t\t\tcase 'ListObj': case 'ListField': break;\n\t\t\t\tcase 'RRSort': break;\n\t\t\t\tcase 'BigName': break;\n\t\t\t\tcase 'ToolbarHdr': case 'ToolbarEnd': break;\n\t\t\t\tcase 'DDEObjName': break;\n\t\t\t\tcase 'FRTArchId$': break;\n\t\t\t\tdefault: if(options.WTF) throw 'Unrecognized Record ' + R.n;\n\t\t\t}}}}\n\t\t} else blob.l += length;\n\t}\n\twb.SheetNames=keys(Directory).sort(function(a,b) { return Number(a) - Number(b); }).map(function(x){return Directory[x].name;});\n\tif(!options.bookSheets) wb.Sheets=Sheets;\n\tif(wb.Sheets) FilterDatabases.forEach(function(r,i) { wb.Sheets[wb.SheetNames[i]]['!autofilter'] = r; });\n\twb.Preamble=Preamble;\n\twb.Strings = sst;\n\twb.SSF = SSF.get_table();\n\tif(opts.enc) wb.Encryption = opts.enc;\n\tif(themes) wb.Themes = themes;\n\twb.Metadata = {};\n\tif(country !== undefined) wb.Metadata.Country = country;\n\tif(supbooks.names.length > 0) Workbook.Names = supbooks.names;\n\twb.Workbook = Workbook;\n\treturn wb;\n}\n\n/* TODO: split props*/\nvar PSCLSID = {\n\tSI: \"e0859ff2f94f6810ab9108002b27b3d9\",\n\tDSI: \"02d5cdd59c2e1b10939708002b2cf9ae\",\n\tUDI: \"05d5cdd59c2e1b10939708002b2cf9ae\"\n};\nfunction parse_xls_props(cfb, props, o) {\n\t/* [MS-OSHARED] 2.3.3.2.2 Document Summary Information Property Set */\n\tvar DSI = CFB.find(cfb, '!DocumentSummaryInformation');\n\tif(DSI && DSI.size > 0) try {\n\t\tvar DocSummary = parse_PropertySetStream(DSI, DocSummaryPIDDSI, PSCLSID.DSI);\n\t\tfor(var d in DocSummary) props[d] = DocSummary[d];\n\t} catch(e) {if(o.WTF) throw e;/* empty */}\n\n\t/* [MS-OSHARED] 2.3.3.2.1 Summary Information Property Set*/\n\tvar SI = CFB.find(cfb, '!SummaryInformation');\n\tif(SI && SI.size > 0) try {\n\t\tvar Summary = parse_PropertySetStream(SI, SummaryPIDSI, PSCLSID.SI);\n\t\tfor(var s in Summary) if(props[s] == null) props[s] = Summary[s];\n\t} catch(e) {if(o.WTF) throw e;/* empty */}\n\n\tif(props.HeadingPairs && props.TitlesOfParts) {\n\t\tload_props_pairs(props.HeadingPairs, props.TitlesOfParts, props, o);\n\t\tdelete props.HeadingPairs; delete props.TitlesOfParts;\n\t}\n}\nfunction write_xls_props(wb, cfb) {\n\tvar DSEntries = [], SEntries = [], CEntries = [];\n\tvar i = 0, Keys;\n\tif(wb.Props) {\n\t\tKeys = keys(wb.Props);\n\t\t// $FlowIgnore\n\t\tfor(i = 0; i < Keys.length; ++i) (DocSummaryRE.hasOwnProperty(Keys[i]) ? DSEntries : SummaryRE.hasOwnProperty(Keys[i]) ? SEntries : CEntries).push([Keys[i], wb.Props[Keys[i]]]);\n\t}\n\tif(wb.Custprops) {\n\t\tKeys = keys(wb.Custprops);\n\t\t// $FlowIgnore\n\t\tfor(i = 0; i < Keys.length; ++i) if(!(wb.Props||{}).hasOwnProperty(Keys[i])) (DocSummaryRE.hasOwnProperty(Keys[i]) ? DSEntries : SummaryRE.hasOwnProperty(Keys[i]) ? SEntries : CEntries).push([Keys[i], wb.Custprops[Keys[i]]]);\n\t}\n\tvar CEntries2 = [];\n\tfor(i = 0; i < CEntries.length; ++i) {\n\t\tif(XLSPSSkip.indexOf(CEntries[i][0]) > -1) continue;\n\t\tif(CEntries[i][1] == null) continue;\n\t\tCEntries2.push(CEntries[i]);\n\t}\n\tif(SEntries.length) CFB.utils.cfb_add(cfb, \"/\\u0005SummaryInformation\", write_PropertySetStream(SEntries, PSCLSID.SI, SummaryRE, SummaryPIDSI));\n\tif(DSEntries.length || CEntries2.length) CFB.utils.cfb_add(cfb, \"/\\u0005DocumentSummaryInformation\", write_PropertySetStream(DSEntries, PSCLSID.DSI, DocSummaryRE, DocSummaryPIDDSI, CEntries2.length ? CEntries2 : null, PSCLSID.UDI));\n}\n\nfunction parse_xlscfb(cfb, options) {\nif(!options) options = {};\nfix_read_opts(options);\nreset_cp();\nif(options.codepage) set_ansi(options.codepage);\nvar CompObj, WB;\nif(cfb.FullPaths) {\n\tif(CFB.find(cfb, '/encryption')) throw new Error(\"File is password-protected\");\n\tCompObj = CFB.find(cfb, '!CompObj');\n\tWB = CFB.find(cfb, '/Workbook') || CFB.find(cfb, '/Book');\n} else {\n\tswitch(options.type) {\n\t\tcase 'base64': cfb = s2a(Base64.decode(cfb)); break;\n\t\tcase 'binary': cfb = s2a(cfb); break;\n\t\tcase 'buffer': break;\n\t\tcase 'array': if(!Array.isArray(cfb)) cfb = Array.prototype.slice.call(cfb); break;\n\t}\n\tprep_blob(cfb, 0);\n\tWB = ({content: cfb});\n}\nvar WorkbookP;\n\nvar _data;\nif(CompObj) parse_compobj(CompObj);\nif(options.bookProps && !options.bookSheets) WorkbookP = ({});\nelse {\n\tvar T = has_buf ? 'buffer' : 'array';\n\tif(WB && WB.content) WorkbookP = parse_workbook(WB.content, options);\n\t/* Quattro Pro 7-8 */\n\telse if((_data=CFB.find(cfb, 'PerfectOffice_MAIN')) && _data.content) WorkbookP = WK_.to_workbook(_data.content, (options.type = T, options));\n\t/* Quattro Pro 9 */\n\telse if((_data=CFB.find(cfb, 'NativeContent_MAIN')) && _data.content) WorkbookP = WK_.to_workbook(_data.content, (options.type = T, options));\n\telse throw new Error(\"Cannot find Workbook stream\");\n\tif(options.bookVBA && cfb.FullPaths && CFB.find(cfb, '/_VBA_PROJECT_CUR/VBA/dir')) WorkbookP.vbaraw = make_vba_xls(cfb);\n}\n\nvar props = {};\nif(cfb.FullPaths) parse_xls_props(cfb, props, options);\n\nWorkbookP.Props = WorkbookP.Custprops = props; /* TODO: split up properties */\nif(options.bookFiles) WorkbookP.cfb = cfb;\n/*WorkbookP.CompObjP = CompObjP; // TODO: storage? */\nreturn WorkbookP;\n}\n\n\nfunction write_xlscfb(wb, opts) {\n\tvar o = opts || {};\n\tvar cfb = CFB.utils.cfb_new({root:\"R\"});\n\tvar wbpath = \"/Workbook\";\n\tswitch(o.bookType || \"xls\") {\n\t\tcase \"xls\": o.bookType = \"biff8\";\n\t\t/* falls through */\n\t\tcase \"xla\": if(!o.bookType) o.bookType = \"xla\";\n\t\t/* falls through */\n\t\tcase \"biff8\": wbpath = \"/Workbook\"; o.biff = 8; break;\n\t\tcase \"biff5\": wbpath = \"/Book\"; o.biff = 5; break;\n\t\tdefault: throw new Error(\"invalid type \" + o.bookType + \" for XLS CFB\");\n\t}\n\tCFB.utils.cfb_add(cfb, wbpath, write_biff_buf(wb, o));\n\tif(o.biff == 8 && (wb.Props || wb.Custprops)) write_xls_props(wb, cfb);\n\t// TODO: SI, DSI, CO\n\tif(o.biff == 8 && wb.vbaraw) fill_vba_xls(cfb, CFB.read(wb.vbaraw, {type: typeof wb.vbaraw == \"string\" ? \"binary\" : \"buffer\"}));\n\treturn cfb;\n}\n/* [MS-XLSB] 2.3 Record Enumeration */\nvar XLSBRecordEnum = {\n0x0000: { n:\"BrtRowHdr\", f:parse_BrtRowHdr },\n0x0001: { n:\"BrtCellBlank\", f:parse_BrtCellBlank },\n0x0002: { n:\"BrtCellRk\", f:parse_BrtCellRk },\n0x0003: { n:\"BrtCellError\", f:parse_BrtCellError },\n0x0004: { n:\"BrtCellBool\", f:parse_BrtCellBool },\n0x0005: { n:\"BrtCellReal\", f:parse_BrtCellReal },\n0x0006: { n:\"BrtCellSt\", f:parse_BrtCellSt },\n0x0007: { n:\"BrtCellIsst\", f:parse_BrtCellIsst },\n0x0008: { n:\"BrtFmlaString\", f:parse_BrtFmlaString },\n0x0009: { n:\"BrtFmlaNum\", f:parse_BrtFmlaNum },\n0x000A: { n:\"BrtFmlaBool\", f:parse_BrtFmlaBool },\n0x000B: { n:\"BrtFmlaError\", f:parse_BrtFmlaError },\n0x0010: { n:\"BrtFRTArchID$\", f:parse_BrtFRTArchID$ },\n0x0013: { n:\"BrtSSTItem\", f:parse_RichStr },\n0x0014: { n:\"BrtPCDIMissing\" },\n0x0015: { n:\"BrtPCDINumber\" },\n0x0016: { n:\"BrtPCDIBoolean\" },\n0x0017: { n:\"BrtPCDIError\" },\n0x0018: { n:\"BrtPCDIString\" },\n0x0019: { n:\"BrtPCDIDatetime\" },\n0x001A: { n:\"BrtPCDIIndex\" },\n0x001B: { n:\"BrtPCDIAMissing\" },\n0x001C: { n:\"BrtPCDIANumber\" },\n0x001D: { n:\"BrtPCDIABoolean\" },\n0x001E: { n:\"BrtPCDIAError\" },\n0x001F: { n:\"BrtPCDIAString\" },\n0x0020: { n:\"BrtPCDIADatetime\" },\n0x0021: { n:\"BrtPCRRecord\" },\n0x0022: { n:\"BrtPCRRecordDt\" },\n0x0023: { n:\"BrtFRTBegin\" },\n0x0024: { n:\"BrtFRTEnd\" },\n0x0025: { n:\"BrtACBegin\" },\n0x0026: { n:\"BrtACEnd\" },\n0x0027: { n:\"BrtName\", f:parse_BrtName },\n0x0028: { n:\"BrtIndexRowBlock\" },\n0x002A: { n:\"BrtIndexBlock\" },\n0x002B: { n:\"BrtFont\", f:parse_BrtFont },\n0x002C: { n:\"BrtFmt\", f:parse_BrtFmt },\n0x002D: { n:\"BrtFill\", f:parse_BrtFill },\n0x002E: { n:\"BrtBorder\", f:parse_BrtBorder },\n0x002F: { n:\"BrtXF\", f:parse_BrtXF },\n0x0030: { n:\"BrtStyle\" },\n0x0031: { n:\"BrtCellMeta\" },\n0x0032: { n:\"BrtValueMeta\" },\n0x0033: { n:\"BrtMdb\" },\n0x0034: { n:\"BrtBeginFmd\" },\n0x0035: { n:\"BrtEndFmd\" },\n0x0036: { n:\"BrtBeginMdx\" },\n0x0037: { n:\"BrtEndMdx\" },\n0x0038: { n:\"BrtBeginMdxTuple\" },\n0x0039: { n:\"BrtEndMdxTuple\" },\n0x003A: { n:\"BrtMdxMbrIstr\" },\n0x003B: { n:\"BrtStr\" },\n0x003C: { n:\"BrtColInfo\", f:parse_ColInfo },\n0x003E: { n:\"BrtCellRString\" },\n0x003F: { n:\"BrtCalcChainItem$\", f:parse_BrtCalcChainItem$ },\n0x0040: { n:\"BrtDVal\" },\n0x0041: { n:\"BrtSxvcellNum\" },\n0x0042: { n:\"BrtSxvcellStr\" },\n0x0043: { n:\"BrtSxvcellBool\" },\n0x0044: { n:\"BrtSxvcellErr\" },\n0x0045: { n:\"BrtSxvcellDate\" },\n0x0046: { n:\"BrtSxvcellNil\" },\n0x0080: { n:\"BrtFileVersion\" },\n0x0081: { n:\"BrtBeginSheet\" },\n0x0082: { n:\"BrtEndSheet\" },\n0x0083: { n:\"BrtBeginBook\", f:parsenoop, p:0 },\n0x0084: { n:\"BrtEndBook\" },\n0x0085: { n:\"BrtBeginWsViews\" },\n0x0086: { n:\"BrtEndWsViews\" },\n0x0087: { n:\"BrtBeginBookViews\" },\n0x0088: { n:\"BrtEndBookViews\" },\n0x0089: { n:\"BrtBeginWsView\", f:parse_BrtBeginWsView },\n0x008A: { n:\"BrtEndWsView\" },\n0x008B: { n:\"BrtBeginCsViews\" },\n0x008C: { n:\"BrtEndCsViews\" },\n0x008D: { n:\"BrtBeginCsView\" },\n0x008E: { n:\"BrtEndCsView\" },\n0x008F: { n:\"BrtBeginBundleShs\" },\n0x0090: { n:\"BrtEndBundleShs\" },\n0x0091: { n:\"BrtBeginSheetData\" },\n0x0092: { n:\"BrtEndSheetData\" },\n0x0093: { n:\"BrtWsProp\", f:parse_BrtWsProp },\n0x0094: { n:\"BrtWsDim\", f:parse_BrtWsDim, p:16 },\n0x0097: { n:\"BrtPane\" },\n0x0098: { n:\"BrtSel\" },\n0x0099: { n:\"BrtWbProp\", f:parse_BrtWbProp },\n0x009A: { n:\"BrtWbFactoid\" },\n0x009B: { n:\"BrtFileRecover\" },\n0x009C: { n:\"BrtBundleSh\", f:parse_BrtBundleSh },\n0x009D: { n:\"BrtCalcProp\" },\n0x009E: { n:\"BrtBookView\" },\n0x009F: { n:\"BrtBeginSst\", f:parse_BrtBeginSst },\n0x00A0: { n:\"BrtEndSst\" },\n0x00A1: { n:\"BrtBeginAFilter\", f:parse_UncheckedRfX },\n0x00A2: { n:\"BrtEndAFilter\" },\n0x00A3: { n:\"BrtBeginFilterColumn\" },\n0x00A4: { n:\"BrtEndFilterColumn\" },\n0x00A5: { n:\"BrtBeginFilters\" },\n0x00A6: { n:\"BrtEndFilters\" },\n0x00A7: { n:\"BrtFilter\" },\n0x00A8: { n:\"BrtColorFilter\" },\n0x00A9: { n:\"BrtIconFilter\" },\n0x00AA: { n:\"BrtTop10Filter\" },\n0x00AB: { n:\"BrtDynamicFilter\" },\n0x00AC: { n:\"BrtBeginCustomFilters\" },\n0x00AD: { n:\"BrtEndCustomFilters\" },\n0x00AE: { n:\"BrtCustomFilter\" },\n0x00AF: { n:\"BrtAFilterDateGroupItem\" },\n0x00B0: { n:\"BrtMergeCell\", f:parse_BrtMergeCell },\n0x00B1: { n:\"BrtBeginMergeCells\" },\n0x00B2: { n:\"BrtEndMergeCells\" },\n0x00B3: { n:\"BrtBeginPivotCacheDef\" },\n0x00B4: { n:\"BrtEndPivotCacheDef\" },\n0x00B5: { n:\"BrtBeginPCDFields\" },\n0x00B6: { n:\"BrtEndPCDFields\" },\n0x00B7: { n:\"BrtBeginPCDField\" },\n0x00B8: { n:\"BrtEndPCDField\" },\n0x00B9: { n:\"BrtBeginPCDSource\" },\n0x00BA: { n:\"BrtEndPCDSource\" },\n0x00BB: { n:\"BrtBeginPCDSRange\" },\n0x00BC: { n:\"BrtEndPCDSRange\" },\n0x00BD: { n:\"BrtBeginPCDFAtbl\" },\n0x00BE: { n:\"BrtEndPCDFAtbl\" },\n0x00BF: { n:\"BrtBeginPCDIRun\" },\n0x00C0: { n:\"BrtEndPCDIRun\" },\n0x00C1: { n:\"BrtBeginPivotCacheRecords\" },\n0x00C2: { n:\"BrtEndPivotCacheRecords\" },\n0x00C3: { n:\"BrtBeginPCDHierarchies\" },\n0x00C4: { n:\"BrtEndPCDHierarchies\" },\n0x00C5: { n:\"BrtBeginPCDHierarchy\" },\n0x00C6: { n:\"BrtEndPCDHierarchy\" },\n0x00C7: { n:\"BrtBeginPCDHFieldsUsage\" },\n0x00C8: { n:\"BrtEndPCDHFieldsUsage\" },\n0x00C9: { n:\"BrtBeginExtConnection\" },\n0x00CA: { n:\"BrtEndExtConnection\" },\n0x00CB: { n:\"BrtBeginECDbProps\" },\n0x00CC: { n:\"BrtEndECDbProps\" },\n0x00CD: { n:\"BrtBeginECOlapProps\" },\n0x00CE: { n:\"BrtEndECOlapProps\" },\n0x00CF: { n:\"BrtBeginPCDSConsol\" },\n0x00D0: { n:\"BrtEndPCDSConsol\" },\n0x00D1: { n:\"BrtBeginPCDSCPages\" },\n0x00D2: { n:\"BrtEndPCDSCPages\" },\n0x00D3: { n:\"BrtBeginPCDSCPage\" },\n0x00D4: { n:\"BrtEndPCDSCPage\" },\n0x00D5: { n:\"BrtBeginPCDSCPItem\" },\n0x00D6: { n:\"BrtEndPCDSCPItem\" },\n0x00D7: { n:\"BrtBeginPCDSCSets\" },\n0x00D8: { n:\"BrtEndPCDSCSets\" },\n0x00D9: { n:\"BrtBeginPCDSCSet\" },\n0x00DA: { n:\"BrtEndPCDSCSet\" },\n0x00DB: { n:\"BrtBeginPCDFGroup\" },\n0x00DC: { n:\"BrtEndPCDFGroup\" },\n0x00DD: { n:\"BrtBeginPCDFGItems\" },\n0x00DE: { n:\"BrtEndPCDFGItems\" },\n0x00DF: { n:\"BrtBeginPCDFGRange\" },\n0x00E0: { n:\"BrtEndPCDFGRange\" },\n0x00E1: { n:\"BrtBeginPCDFGDiscrete\" },\n0x00E2: { n:\"BrtEndPCDFGDiscrete\" },\n0x00E3: { n:\"BrtBeginPCDSDTupleCache\" },\n0x00E4: { n:\"BrtEndPCDSDTupleCache\" },\n0x00E5: { n:\"BrtBeginPCDSDTCEntries\" },\n0x00E6: { n:\"BrtEndPCDSDTCEntries\" },\n0x00E7: { n:\"BrtBeginPCDSDTCEMembers\" },\n0x00E8: { n:\"BrtEndPCDSDTCEMembers\" },\n0x00E9: { n:\"BrtBeginPCDSDTCEMember\" },\n0x00EA: { n:\"BrtEndPCDSDTCEMember\" },\n0x00EB: { n:\"BrtBeginPCDSDTCQueries\" },\n0x00EC: { n:\"BrtEndPCDSDTCQueries\" },\n0x00ED: { n:\"BrtBeginPCDSDTCQuery\" },\n0x00EE: { n:\"BrtEndPCDSDTCQuery\" },\n0x00EF: { n:\"BrtBeginPCDSDTCSets\" },\n0x00F0: { n:\"BrtEndPCDSDTCSets\" },\n0x00F1: { n:\"BrtBeginPCDSDTCSet\" },\n0x00F2: { n:\"BrtEndPCDSDTCSet\" },\n0x00F3: { n:\"BrtBeginPCDCalcItems\" },\n0x00F4: { n:\"BrtEndPCDCalcItems\" },\n0x00F5: { n:\"BrtBeginPCDCalcItem\" },\n0x00F6: { n:\"BrtEndPCDCalcItem\" },\n0x00F7: { n:\"BrtBeginPRule\" },\n0x00F8: { n:\"BrtEndPRule\" },\n0x00F9: { n:\"BrtBeginPRFilters\" },\n0x00FA: { n:\"BrtEndPRFilters\" },\n0x00FB: { n:\"BrtBeginPRFilter\" },\n0x00FC: { n:\"BrtEndPRFilter\" },\n0x00FD: { n:\"BrtBeginPNames\" },\n0x00FE: { n:\"BrtEndPNames\" },\n0x00FF: { n:\"BrtBeginPName\" },\n0x0100: { n:\"BrtEndPName\" },\n0x0101: { n:\"BrtBeginPNPairs\" },\n0x0102: { n:\"BrtEndPNPairs\" },\n0x0103: { n:\"BrtBeginPNPair\" },\n0x0104: { n:\"BrtEndPNPair\" },\n0x0105: { n:\"BrtBeginECWebProps\" },\n0x0106: { n:\"BrtEndECWebProps\" },\n0x0107: { n:\"BrtBeginEcWpTables\" },\n0x0108: { n:\"BrtEndECWPTables\" },\n0x0109: { n:\"BrtBeginECParams\" },\n0x010A: { n:\"BrtEndECParams\" },\n0x010B: { n:\"BrtBeginECParam\" },\n0x010C: { n:\"BrtEndECParam\" },\n0x010D: { n:\"BrtBeginPCDKPIs\" },\n0x010E: { n:\"BrtEndPCDKPIs\" },\n0x010F: { n:\"BrtBeginPCDKPI\" },\n0x0110: { n:\"BrtEndPCDKPI\" },\n0x0111: { n:\"BrtBeginDims\" },\n0x0112: { n:\"BrtEndDims\" },\n0x0113: { n:\"BrtBeginDim\" },\n0x0114: { n:\"BrtEndDim\" },\n0x0115: { n:\"BrtIndexPartEnd\" },\n0x0116: { n:\"BrtBeginStyleSheet\" },\n0x0117: { n:\"BrtEndStyleSheet\" },\n0x0118: { n:\"BrtBeginSXView\" },\n0x0119: { n:\"BrtEndSXVI\" },\n0x011A: { n:\"BrtBeginSXVI\" },\n0x011B: { n:\"BrtBeginSXVIs\" },\n0x011C: { n:\"BrtEndSXVIs\" },\n0x011D: { n:\"BrtBeginSXVD\" },\n0x011E: { n:\"BrtEndSXVD\" },\n0x011F: { n:\"BrtBeginSXVDs\" },\n0x0120: { n:\"BrtEndSXVDs\" },\n0x0121: { n:\"BrtBeginSXPI\" },\n0x0122: { n:\"BrtEndSXPI\" },\n0x0123: { n:\"BrtBeginSXPIs\" },\n0x0124: { n:\"BrtEndSXPIs\" },\n0x0125: { n:\"BrtBeginSXDI\" },\n0x0126: { n:\"BrtEndSXDI\" },\n0x0127: { n:\"BrtBeginSXDIs\" },\n0x0128: { n:\"BrtEndSXDIs\" },\n0x0129: { n:\"BrtBeginSXLI\" },\n0x012A: { n:\"BrtEndSXLI\" },\n0x012B: { n:\"BrtBeginSXLIRws\" },\n0x012C: { n:\"BrtEndSXLIRws\" },\n0x012D: { n:\"BrtBeginSXLICols\" },\n0x012E: { n:\"BrtEndSXLICols\" },\n0x012F: { n:\"BrtBeginSXFormat\" },\n0x0130: { n:\"BrtEndSXFormat\" },\n0x0131: { n:\"BrtBeginSXFormats\" },\n0x0132: { n:\"BrtEndSxFormats\" },\n0x0133: { n:\"BrtBeginSxSelect\" },\n0x0134: { n:\"BrtEndSxSelect\" },\n0x0135: { n:\"BrtBeginISXVDRws\" },\n0x0136: { n:\"BrtEndISXVDRws\" },\n0x0137: { n:\"BrtBeginISXVDCols\" },\n0x0138: { n:\"BrtEndISXVDCols\" },\n0x0139: { n:\"BrtEndSXLocation\" },\n0x013A: { n:\"BrtBeginSXLocation\" },\n0x013B: { n:\"BrtEndSXView\" },\n0x013C: { n:\"BrtBeginSXTHs\" },\n0x013D: { n:\"BrtEndSXTHs\" },\n0x013E: { n:\"BrtBeginSXTH\" },\n0x013F: { n:\"BrtEndSXTH\" },\n0x0140: { n:\"BrtBeginISXTHRws\" },\n0x0141: { n:\"BrtEndISXTHRws\" },\n0x0142: { n:\"BrtBeginISXTHCols\" },\n0x0143: { n:\"BrtEndISXTHCols\" },\n0x0144: { n:\"BrtBeginSXTDMPS\" },\n0x0145: { n:\"BrtEndSXTDMPs\" },\n0x0146: { n:\"BrtBeginSXTDMP\" },\n0x0147: { n:\"BrtEndSXTDMP\" },\n0x0148: { n:\"BrtBeginSXTHItems\" },\n0x0149: { n:\"BrtEndSXTHItems\" },\n0x014A: { n:\"BrtBeginSXTHItem\" },\n0x014B: { n:\"BrtEndSXTHItem\" },\n0x014C: { n:\"BrtBeginMetadata\" },\n0x014D: { n:\"BrtEndMetadata\" },\n0x014E: { n:\"BrtBeginEsmdtinfo\" },\n0x014F: { n:\"BrtMdtinfo\" },\n0x0150: { n:\"BrtEndEsmdtinfo\" },\n0x0151: { n:\"BrtBeginEsmdb\" },\n0x0152: { n:\"BrtEndEsmdb\" },\n0x0153: { n:\"BrtBeginEsfmd\" },\n0x0154: { n:\"BrtEndEsfmd\" },\n0x0155: { n:\"BrtBeginSingleCells\" },\n0x0156: { n:\"BrtEndSingleCells\" },\n0x0157: { n:\"BrtBeginList\" },\n0x0158: { n:\"BrtEndList\" },\n0x0159: { n:\"BrtBeginListCols\" },\n0x015A: { n:\"BrtEndListCols\" },\n0x015B: { n:\"BrtBeginListCol\" },\n0x015C: { n:\"BrtEndListCol\" },\n0x015D: { n:\"BrtBeginListXmlCPr\" },\n0x015E: { n:\"BrtEndListXmlCPr\" },\n0x015F: { n:\"BrtListCCFmla\" },\n0x0160: { n:\"BrtListTrFmla\" },\n0x0161: { n:\"BrtBeginExternals\" },\n0x0162: { n:\"BrtEndExternals\" },\n0x0163: { n:\"BrtSupBookSrc\", f:parse_RelID},\n0x0165: { n:\"BrtSupSelf\" },\n0x0166: { n:\"BrtSupSame\" },\n0x0167: { n:\"BrtSupTabs\" },\n0x0168: { n:\"BrtBeginSupBook\" },\n0x0169: { n:\"BrtPlaceholderName\" },\n0x016A: { n:\"BrtExternSheet\", f:parse_ExternSheet },\n0x016B: { n:\"BrtExternTableStart\" },\n0x016C: { n:\"BrtExternTableEnd\" },\n0x016E: { n:\"BrtExternRowHdr\" },\n0x016F: { n:\"BrtExternCellBlank\" },\n0x0170: { n:\"BrtExternCellReal\" },\n0x0171: { n:\"BrtExternCellBool\" },\n0x0172: { n:\"BrtExternCellError\" },\n0x0173: { n:\"BrtExternCellString\" },\n0x0174: { n:\"BrtBeginEsmdx\" },\n0x0175: { n:\"BrtEndEsmdx\" },\n0x0176: { n:\"BrtBeginMdxSet\" },\n0x0177: { n:\"BrtEndMdxSet\" },\n0x0178: { n:\"BrtBeginMdxMbrProp\" },\n0x0179: { n:\"BrtEndMdxMbrProp\" },\n0x017A: { n:\"BrtBeginMdxKPI\" },\n0x017B: { n:\"BrtEndMdxKPI\" },\n0x017C: { n:\"BrtBeginEsstr\" },\n0x017D: { n:\"BrtEndEsstr\" },\n0x017E: { n:\"BrtBeginPRFItem\" },\n0x017F: { n:\"BrtEndPRFItem\" },\n0x0180: { n:\"BrtBeginPivotCacheIDs\" },\n0x0181: { n:\"BrtEndPivotCacheIDs\" },\n0x0182: { n:\"BrtBeginPivotCacheID\" },\n0x0183: { n:\"BrtEndPivotCacheID\" },\n0x0184: { n:\"BrtBeginISXVIs\" },\n0x0185: { n:\"BrtEndISXVIs\" },\n0x0186: { n:\"BrtBeginColInfos\" },\n0x0187: { n:\"BrtEndColInfos\" },\n0x0188: { n:\"BrtBeginRwBrk\" },\n0x0189: { n:\"BrtEndRwBrk\" },\n0x018A: { n:\"BrtBeginColBrk\" },\n0x018B: { n:\"BrtEndColBrk\" },\n0x018C: { n:\"BrtBrk\" },\n0x018D: { n:\"BrtUserBookView\" },\n0x018E: { n:\"BrtInfo\" },\n0x018F: { n:\"BrtCUsr\" },\n0x0190: { n:\"BrtUsr\" },\n0x0191: { n:\"BrtBeginUsers\" },\n0x0193: { n:\"BrtEOF\" },\n0x0194: { n:\"BrtUCR\" },\n0x0195: { n:\"BrtRRInsDel\" },\n0x0196: { n:\"BrtRREndInsDel\" },\n0x0197: { n:\"BrtRRMove\" },\n0x0198: { n:\"BrtRREndMove\" },\n0x0199: { n:\"BrtRRChgCell\" },\n0x019A: { n:\"BrtRREndChgCell\" },\n0x019B: { n:\"BrtRRHeader\" },\n0x019C: { n:\"BrtRRUserView\" },\n0x019D: { n:\"BrtRRRenSheet\" },\n0x019E: { n:\"BrtRRInsertSh\" },\n0x019F: { n:\"BrtRRDefName\" },\n0x01A0: { n:\"BrtRRNote\" },\n0x01A1: { n:\"BrtRRConflict\" },\n0x01A2: { n:\"BrtRRTQSIF\" },\n0x01A3: { n:\"BrtRRFormat\" },\n0x01A4: { n:\"BrtRREndFormat\" },\n0x01A5: { n:\"BrtRRAutoFmt\" },\n0x01A6: { n:\"BrtBeginUserShViews\" },\n0x01A7: { n:\"BrtBeginUserShView\" },\n0x01A8: { n:\"BrtEndUserShView\" },\n0x01A9: { n:\"BrtEndUserShViews\" },\n0x01AA: { n:\"BrtArrFmla\", f:parse_BrtArrFmla },\n0x01AB: { n:\"BrtShrFmla\", f:parse_BrtShrFmla },\n0x01AC: { n:\"BrtTable\" },\n0x01AD: { n:\"BrtBeginExtConnections\" },\n0x01AE: { n:\"BrtEndExtConnections\" },\n0x01AF: { n:\"BrtBeginPCDCalcMems\" },\n0x01B0: { n:\"BrtEndPCDCalcMems\" },\n0x01B1: { n:\"BrtBeginPCDCalcMem\" },\n0x01B2: { n:\"BrtEndPCDCalcMem\" },\n0x01B3: { n:\"BrtBeginPCDHGLevels\" },\n0x01B4: { n:\"BrtEndPCDHGLevels\" },\n0x01B5: { n:\"BrtBeginPCDHGLevel\" },\n0x01B6: { n:\"BrtEndPCDHGLevel\" },\n0x01B7: { n:\"BrtBeginPCDHGLGroups\" },\n0x01B8: { n:\"BrtEndPCDHGLGroups\" },\n0x01B9: { n:\"BrtBeginPCDHGLGroup\" },\n0x01BA: { n:\"BrtEndPCDHGLGroup\" },\n0x01BB: { n:\"BrtBeginPCDHGLGMembers\" },\n0x01BC: { n:\"BrtEndPCDHGLGMembers\" },\n0x01BD: { n:\"BrtBeginPCDHGLGMember\" },\n0x01BE: { n:\"BrtEndPCDHGLGMember\" },\n0x01BF: { n:\"BrtBeginQSI\" },\n0x01C0: { n:\"BrtEndQSI\" },\n0x01C1: { n:\"BrtBeginQSIR\" },\n0x01C2: { n:\"BrtEndQSIR\" },\n0x01C3: { n:\"BrtBeginDeletedNames\" },\n0x01C4: { n:\"BrtEndDeletedNames\" },\n0x01C5: { n:\"BrtBeginDeletedName\" },\n0x01C6: { n:\"BrtEndDeletedName\" },\n0x01C7: { n:\"BrtBeginQSIFs\" },\n0x01C8: { n:\"BrtEndQSIFs\" },\n0x01C9: { n:\"BrtBeginQSIF\" },\n0x01CA: { n:\"BrtEndQSIF\" },\n0x01CB: { n:\"BrtBeginAutoSortScope\" },\n0x01CC: { n:\"BrtEndAutoSortScope\" },\n0x01CD: { n:\"BrtBeginConditionalFormatting\" },\n0x01CE: { n:\"BrtEndConditionalFormatting\" },\n0x01CF: { n:\"BrtBeginCFRule\" },\n0x01D0: { n:\"BrtEndCFRule\" },\n0x01D1: { n:\"BrtBeginIconSet\" },\n0x01D2: { n:\"BrtEndIconSet\" },\n0x01D3: { n:\"BrtBeginDatabar\" },\n0x01D4: { n:\"BrtEndDatabar\" },\n0x01D5: { n:\"BrtBeginColorScale\" },\n0x01D6: { n:\"BrtEndColorScale\" },\n0x01D7: { n:\"BrtCFVO\" },\n0x01D8: { n:\"BrtExternValueMeta\" },\n0x01D9: { n:\"BrtBeginColorPalette\" },\n0x01DA: { n:\"BrtEndColorPalette\" },\n0x01DB: { n:\"BrtIndexedColor\" },\n0x01DC: { n:\"BrtMargins\", f:parse_BrtMargins },\n0x01DD: { n:\"BrtPrintOptions\" },\n0x01DE: { n:\"BrtPageSetup\" },\n0x01DF: { n:\"BrtBeginHeaderFooter\" },\n0x01E0: { n:\"BrtEndHeaderFooter\" },\n0x01E1: { n:\"BrtBeginSXCrtFormat\" },\n0x01E2: { n:\"BrtEndSXCrtFormat\" },\n0x01E3: { n:\"BrtBeginSXCrtFormats\" },\n0x01E4: { n:\"BrtEndSXCrtFormats\" },\n0x01E5: { n:\"BrtWsFmtInfo\", f:parse_BrtWsFmtInfo },\n0x01E6: { n:\"BrtBeginMgs\" },\n0x01E7: { n:\"BrtEndMGs\" },\n0x01E8: { n:\"BrtBeginMGMaps\" },\n0x01E9: { n:\"BrtEndMGMaps\" },\n0x01EA: { n:\"BrtBeginMG\" },\n0x01EB: { n:\"BrtEndMG\" },\n0x01EC: { n:\"BrtBeginMap\" },\n0x01ED: { n:\"BrtEndMap\" },\n0x01EE: { n:\"BrtHLink\", f:parse_BrtHLink },\n0x01EF: { n:\"BrtBeginDCon\" },\n0x01F0: { n:\"BrtEndDCon\" },\n0x01F1: { n:\"BrtBeginDRefs\" },\n0x01F2: { n:\"BrtEndDRefs\" },\n0x01F3: { n:\"BrtDRef\" },\n0x01F4: { n:\"BrtBeginScenMan\" },\n0x01F5: { n:\"BrtEndScenMan\" },\n0x01F6: { n:\"BrtBeginSct\" },\n0x01F7: { n:\"BrtEndSct\" },\n0x01F8: { n:\"BrtSlc\" },\n0x01F9: { n:\"BrtBeginDXFs\" },\n0x01FA: { n:\"BrtEndDXFs\" },\n0x01FB: { n:\"BrtDXF\" },\n0x01FC: { n:\"BrtBeginTableStyles\" },\n0x01FD: { n:\"BrtEndTableStyles\" },\n0x01FE: { n:\"BrtBeginTableStyle\" },\n0x01FF: { n:\"BrtEndTableStyle\" },\n0x0200: { n:\"BrtTableStyleElement\" },\n0x0201: { n:\"BrtTableStyleClient\" },\n0x0202: { n:\"BrtBeginVolDeps\" },\n0x0203: { n:\"BrtEndVolDeps\" },\n0x0204: { n:\"BrtBeginVolType\" },\n0x0205: { n:\"BrtEndVolType\" },\n0x0206: { n:\"BrtBeginVolMain\" },\n0x0207: { n:\"BrtEndVolMain\" },\n0x0208: { n:\"BrtBeginVolTopic\" },\n0x0209: { n:\"BrtEndVolTopic\" },\n0x020A: { n:\"BrtVolSubtopic\" },\n0x020B: { n:\"BrtVolRef\" },\n0x020C: { n:\"BrtVolNum\" },\n0x020D: { n:\"BrtVolErr\" },\n0x020E: { n:\"BrtVolStr\" },\n0x020F: { n:\"BrtVolBool\" },\n0x0210: { n:\"BrtBeginCalcChain$\" },\n0x0211: { n:\"BrtEndCalcChain$\" },\n0x0212: { n:\"BrtBeginSortState\" },\n0x0213: { n:\"BrtEndSortState\" },\n0x0214: { n:\"BrtBeginSortCond\" },\n0x0215: { n:\"BrtEndSortCond\" },\n0x0216: { n:\"BrtBookProtection\" },\n0x0217: { n:\"BrtSheetProtection\" },\n0x0218: { n:\"BrtRangeProtection\" },\n0x0219: { n:\"BrtPhoneticInfo\" },\n0x021A: { n:\"BrtBeginECTxtWiz\" },\n0x021B: { n:\"BrtEndECTxtWiz\" },\n0x021C: { n:\"BrtBeginECTWFldInfoLst\" },\n0x021D: { n:\"BrtEndECTWFldInfoLst\" },\n0x021E: { n:\"BrtBeginECTwFldInfo\" },\n0x0224: { n:\"BrtFileSharing\" },\n0x0225: { n:\"BrtOleSize\" },\n0x0226: { n:\"BrtDrawing\", f:parse_RelID },\n0x0227: { n:\"BrtLegacyDrawing\" },\n0x0228: { n:\"BrtLegacyDrawingHF\" },\n0x0229: { n:\"BrtWebOpt\" },\n0x022A: { n:\"BrtBeginWebPubItems\" },\n0x022B: { n:\"BrtEndWebPubItems\" },\n0x022C: { n:\"BrtBeginWebPubItem\" },\n0x022D: { n:\"BrtEndWebPubItem\" },\n0x022E: { n:\"BrtBeginSXCondFmt\" },\n0x022F: { n:\"BrtEndSXCondFmt\" },\n0x0230: { n:\"BrtBeginSXCondFmts\" },\n0x0231: { n:\"BrtEndSXCondFmts\" },\n0x0232: { n:\"BrtBkHim\" },\n0x0234: { n:\"BrtColor\" },\n0x0235: { n:\"BrtBeginIndexedColors\" },\n0x0236: { n:\"BrtEndIndexedColors\" },\n0x0239: { n:\"BrtBeginMRUColors\" },\n0x023A: { n:\"BrtEndMRUColors\" },\n0x023C: { n:\"BrtMRUColor\" },\n0x023D: { n:\"BrtBeginDVals\" },\n0x023E: { n:\"BrtEndDVals\" },\n0x0241: { n:\"BrtSupNameStart\" },\n0x0242: { n:\"BrtSupNameValueStart\" },\n0x0243: { n:\"BrtSupNameValueEnd\" },\n0x0244: { n:\"BrtSupNameNum\" },\n0x0245: { n:\"BrtSupNameErr\" },\n0x0246: { n:\"BrtSupNameSt\" },\n0x0247: { n:\"BrtSupNameNil\" },\n0x0248: { n:\"BrtSupNameBool\" },\n0x0249: { n:\"BrtSupNameFmla\" },\n0x024A: { n:\"BrtSupNameBits\" },\n0x024B: { n:\"BrtSupNameEnd\" },\n0x024C: { n:\"BrtEndSupBook\" },\n0x024D: { n:\"BrtCellSmartTagProperty\" },\n0x024E: { n:\"BrtBeginCellSmartTag\" },\n0x024F: { n:\"BrtEndCellSmartTag\" },\n0x0250: { n:\"BrtBeginCellSmartTags\" },\n0x0251: { n:\"BrtEndCellSmartTags\" },\n0x0252: { n:\"BrtBeginSmartTags\" },\n0x0253: { n:\"BrtEndSmartTags\" },\n0x0254: { n:\"BrtSmartTagType\" },\n0x0255: { n:\"BrtBeginSmartTagTypes\" },\n0x0256: { n:\"BrtEndSmartTagTypes\" },\n0x0257: { n:\"BrtBeginSXFilters\" },\n0x0258: { n:\"BrtEndSXFilters\" },\n0x0259: { n:\"BrtBeginSXFILTER\" },\n0x025A: { n:\"BrtEndSXFilter\" },\n0x025B: { n:\"BrtBeginFills\" },\n0x025C: { n:\"BrtEndFills\" },\n0x025D: { n:\"BrtBeginCellWatches\" },\n0x025E: { n:\"BrtEndCellWatches\" },\n0x025F: { n:\"BrtCellWatch\" },\n0x0260: { n:\"BrtBeginCRErrs\" },\n0x0261: { n:\"BrtEndCRErrs\" },\n0x0262: { n:\"BrtCrashRecErr\" },\n0x0263: { n:\"BrtBeginFonts\" },\n0x0264: { n:\"BrtEndFonts\" },\n0x0265: { n:\"BrtBeginBorders\" },\n0x0266: { n:\"BrtEndBorders\" },\n0x0267: { n:\"BrtBeginFmts\" },\n0x0268: { n:\"BrtEndFmts\" },\n0x0269: { n:\"BrtBeginCellXFs\" },\n0x026A: { n:\"BrtEndCellXFs\" },\n0x026B: { n:\"BrtBeginStyles\" },\n0x026C: { n:\"BrtEndStyles\" },\n0x0271: { n:\"BrtBigName\" },\n0x0272: { n:\"BrtBeginCellStyleXFs\" },\n0x0273: { n:\"BrtEndCellStyleXFs\" },\n0x0274: { n:\"BrtBeginComments\" },\n0x0275: { n:\"BrtEndComments\" },\n0x0276: { n:\"BrtBeginCommentAuthors\" },\n0x0277: { n:\"BrtEndCommentAuthors\" },\n0x0278: { n:\"BrtCommentAuthor\", f:parse_BrtCommentAuthor },\n0x0279: { n:\"BrtBeginCommentList\" },\n0x027A: { n:\"BrtEndCommentList\" },\n0x027B: { n:\"BrtBeginComment\", f:parse_BrtBeginComment},\n0x027C: { n:\"BrtEndComment\" },\n0x027D: { n:\"BrtCommentText\", f:parse_BrtCommentText },\n0x027E: { n:\"BrtBeginOleObjects\" },\n0x027F: { n:\"BrtOleObject\" },\n0x0280: { n:\"BrtEndOleObjects\" },\n0x0281: { n:\"BrtBeginSxrules\" },\n0x0282: { n:\"BrtEndSxRules\" },\n0x0283: { n:\"BrtBeginActiveXControls\" },\n0x0284: { n:\"BrtActiveX\" },\n0x0285: { n:\"BrtEndActiveXControls\" },\n0x0286: { n:\"BrtBeginPCDSDTCEMembersSortBy\" },\n0x0288: { n:\"BrtBeginCellIgnoreECs\" },\n0x0289: { n:\"BrtCellIgnoreEC\" },\n0x028A: { n:\"BrtEndCellIgnoreECs\" },\n0x028B: { n:\"BrtCsProp\", f:parse_BrtCsProp },\n0x028C: { n:\"BrtCsPageSetup\" },\n0x028D: { n:\"BrtBeginUserCsViews\" },\n0x028E: { n:\"BrtEndUserCsViews\" },\n0x028F: { n:\"BrtBeginUserCsView\" },\n0x0290: { n:\"BrtEndUserCsView\" },\n0x0291: { n:\"BrtBeginPcdSFCIEntries\" },\n0x0292: { n:\"BrtEndPCDSFCIEntries\" },\n0x0293: { n:\"BrtPCDSFCIEntry\" },\n0x0294: { n:\"BrtBeginListParts\" },\n0x0295: { n:\"BrtListPart\" },\n0x0296: { n:\"BrtEndListParts\" },\n0x0297: { n:\"BrtSheetCalcProp\" },\n0x0298: { n:\"BrtBeginFnGroup\" },\n0x0299: { n:\"BrtFnGroup\" },\n0x029A: { n:\"BrtEndFnGroup\" },\n0x029B: { n:\"BrtSupAddin\" },\n0x029C: { n:\"BrtSXTDMPOrder\" },\n0x029D: { n:\"BrtCsProtection\" },\n0x029F: { n:\"BrtBeginWsSortMap\" },\n0x02A0: { n:\"BrtEndWsSortMap\" },\n0x02A1: { n:\"BrtBeginRRSort\" },\n0x02A2: { n:\"BrtEndRRSort\" },\n0x02A3: { n:\"BrtRRSortItem\" },\n0x02A4: { n:\"BrtFileSharingIso\" },\n0x02A5: { n:\"BrtBookProtectionIso\" },\n0x02A6: { n:\"BrtSheetProtectionIso\" },\n0x02A7: { n:\"BrtCsProtectionIso\" },\n0x02A8: { n:\"BrtRangeProtectionIso\" },\n0x0400: { n:\"BrtRwDescent\" },\n0x0401: { n:\"BrtKnownFonts\" },\n0x0402: { n:\"BrtBeginSXTupleSet\" },\n0x0403: { n:\"BrtEndSXTupleSet\" },\n0x0404: { n:\"BrtBeginSXTupleSetHeader\" },\n0x0405: { n:\"BrtEndSXTupleSetHeader\" },\n0x0406: { n:\"BrtSXTupleSetHeaderItem\" },\n0x0407: { n:\"BrtBeginSXTupleSetData\" },\n0x0408: { n:\"BrtEndSXTupleSetData\" },\n0x0409: { n:\"BrtBeginSXTupleSetRow\" },\n0x040A: { n:\"BrtEndSXTupleSetRow\" },\n0x040B: { n:\"BrtSXTupleSetRowItem\" },\n0x040C: { n:\"BrtNameExt\" },\n0x040D: { n:\"BrtPCDH14\" },\n0x040E: { n:\"BrtBeginPCDCalcMem14\" },\n0x040F: { n:\"BrtEndPCDCalcMem14\" },\n0x0410: { n:\"BrtSXTH14\" },\n0x0411: { n:\"BrtBeginSparklineGroup\" },\n0x0412: { n:\"BrtEndSparklineGroup\" },\n0x0413: { n:\"BrtSparkline\" },\n0x0414: { n:\"BrtSXDI14\" },\n0x0415: { n:\"BrtWsFmtInfoEx14\" },\n0x0416: { n:\"BrtBeginConditionalFormatting14\" },\n0x0417: { n:\"BrtEndConditionalFormatting14\" },\n0x0418: { n:\"BrtBeginCFRule14\" },\n0x0419: { n:\"BrtEndCFRule14\" },\n0x041A: { n:\"BrtCFVO14\" },\n0x041B: { n:\"BrtBeginDatabar14\" },\n0x041C: { n:\"BrtBeginIconSet14\" },\n0x041D: { n:\"BrtDVal14\" },\n0x041E: { n:\"BrtBeginDVals14\" },\n0x041F: { n:\"BrtColor14\" },\n0x0420: { n:\"BrtBeginSparklines\" },\n0x0421: { n:\"BrtEndSparklines\" },\n0x0422: { n:\"BrtBeginSparklineGroups\" },\n0x0423: { n:\"BrtEndSparklineGroups\" },\n0x0425: { n:\"BrtSXVD14\" },\n0x0426: { n:\"BrtBeginSXView14\" },\n0x0427: { n:\"BrtEndSXView14\" },\n0x0428: { n:\"BrtBeginSXView16\" },\n0x0429: { n:\"BrtEndSXView16\" },\n0x042A: { n:\"BrtBeginPCD14\" },\n0x042B: { n:\"BrtEndPCD14\" },\n0x042C: { n:\"BrtBeginExtConn14\" },\n0x042D: { n:\"BrtEndExtConn14\" },\n0x042E: { n:\"BrtBeginSlicerCacheIDs\" },\n0x042F: { n:\"BrtEndSlicerCacheIDs\" },\n0x0430: { n:\"BrtBeginSlicerCacheID\" },\n0x0431: { n:\"BrtEndSlicerCacheID\" },\n0x0433: { n:\"BrtBeginSlicerCache\" },\n0x0434: { n:\"BrtEndSlicerCache\" },\n0x0435: { n:\"BrtBeginSlicerCacheDef\" },\n0x0436: { n:\"BrtEndSlicerCacheDef\" },\n0x0437: { n:\"BrtBeginSlicersEx\" },\n0x0438: { n:\"BrtEndSlicersEx\" },\n0x0439: { n:\"BrtBeginSlicerEx\" },\n0x043A: { n:\"BrtEndSlicerEx\" },\n0x043B: { n:\"BrtBeginSlicer\" },\n0x043C: { n:\"BrtEndSlicer\" },\n0x043D: { n:\"BrtSlicerCachePivotTables\" },\n0x043E: { n:\"BrtBeginSlicerCacheOlapImpl\" },\n0x043F: { n:\"BrtEndSlicerCacheOlapImpl\" },\n0x0440: { n:\"BrtBeginSlicerCacheLevelsData\" },\n0x0441: { n:\"BrtEndSlicerCacheLevelsData\" },\n0x0442: { n:\"BrtBeginSlicerCacheLevelData\" },\n0x0443: { n:\"BrtEndSlicerCacheLevelData\" },\n0x0444: { n:\"BrtBeginSlicerCacheSiRanges\" },\n0x0445: { n:\"BrtEndSlicerCacheSiRanges\" },\n0x0446: { n:\"BrtBeginSlicerCacheSiRange\" },\n0x0447: { n:\"BrtEndSlicerCacheSiRange\" },\n0x0448: { n:\"BrtSlicerCacheOlapItem\" },\n0x0449: { n:\"BrtBeginSlicerCacheSelections\" },\n0x044A: { n:\"BrtSlicerCacheSelection\" },\n0x044B: { n:\"BrtEndSlicerCacheSelections\" },\n0x044C: { n:\"BrtBeginSlicerCacheNative\" },\n0x044D: { n:\"BrtEndSlicerCacheNative\" },\n0x044E: { n:\"BrtSlicerCacheNativeItem\" },\n0x044F: { n:\"BrtRangeProtection14\" },\n0x0450: { n:\"BrtRangeProtectionIso14\" },\n0x0451: { n:\"BrtCellIgnoreEC14\" },\n0x0457: { n:\"BrtList14\" },\n0x0458: { n:\"BrtCFIcon\" },\n0x0459: { n:\"BrtBeginSlicerCachesPivotCacheIDs\" },\n0x045A: { n:\"BrtEndSlicerCachesPivotCacheIDs\" },\n0x045B: { n:\"BrtBeginSlicers\" },\n0x045C: { n:\"BrtEndSlicers\" },\n0x045D: { n:\"BrtWbProp14\" },\n0x045E: { n:\"BrtBeginSXEdit\" },\n0x045F: { n:\"BrtEndSXEdit\" },\n0x0460: { n:\"BrtBeginSXEdits\" },\n0x0461: { n:\"BrtEndSXEdits\" },\n0x0462: { n:\"BrtBeginSXChange\" },\n0x0463: { n:\"BrtEndSXChange\" },\n0x0464: { n:\"BrtBeginSXChanges\" },\n0x0465: { n:\"BrtEndSXChanges\" },\n0x0466: { n:\"BrtSXTupleItems\" },\n0x0468: { n:\"BrtBeginSlicerStyle\" },\n0x0469: { n:\"BrtEndSlicerStyle\" },\n0x046A: { n:\"BrtSlicerStyleElement\" },\n0x046B: { n:\"BrtBeginStyleSheetExt14\" },\n0x046C: { n:\"BrtEndStyleSheetExt14\" },\n0x046D: { n:\"BrtBeginSlicerCachesPivotCacheID\" },\n0x046E: { n:\"BrtEndSlicerCachesPivotCacheID\" },\n0x046F: { n:\"BrtBeginConditionalFormattings\" },\n0x0470: { n:\"BrtEndConditionalFormattings\" },\n0x0471: { n:\"BrtBeginPCDCalcMemExt\" },\n0x0472: { n:\"BrtEndPCDCalcMemExt\" },\n0x0473: { n:\"BrtBeginPCDCalcMemsExt\" },\n0x0474: { n:\"BrtEndPCDCalcMemsExt\" },\n0x0475: { n:\"BrtPCDField14\" },\n0x0476: { n:\"BrtBeginSlicerStyles\" },\n0x0477: { n:\"BrtEndSlicerStyles\" },\n0x0478: { n:\"BrtBeginSlicerStyleElements\" },\n0x0479: { n:\"BrtEndSlicerStyleElements\" },\n0x047A: { n:\"BrtCFRuleExt\" },\n0x047B: { n:\"BrtBeginSXCondFmt14\" },\n0x047C: { n:\"BrtEndSXCondFmt14\" },\n0x047D: { n:\"BrtBeginSXCondFmts14\" },\n0x047E: { n:\"BrtEndSXCondFmts14\" },\n0x0480: { n:\"BrtBeginSortCond14\" },\n0x0481: { n:\"BrtEndSortCond14\" },\n0x0482: { n:\"BrtEndDVals14\" },\n0x0483: { n:\"BrtEndIconSet14\" },\n0x0484: { n:\"BrtEndDatabar14\" },\n0x0485: { n:\"BrtBeginColorScale14\" },\n0x0486: { n:\"BrtEndColorScale14\" },\n0x0487: { n:\"BrtBeginSxrules14\" },\n0x0488: { n:\"BrtEndSxrules14\" },\n0x0489: { n:\"BrtBeginPRule14\" },\n0x048A: { n:\"BrtEndPRule14\" },\n0x048B: { n:\"BrtBeginPRFilters14\" },\n0x048C: { n:\"BrtEndPRFilters14\" },\n0x048D: { n:\"BrtBeginPRFilter14\" },\n0x048E: { n:\"BrtEndPRFilter14\" },\n0x048F: { n:\"BrtBeginPRFItem14\" },\n0x0490: { n:\"BrtEndPRFItem14\" },\n0x0491: { n:\"BrtBeginCellIgnoreECs14\" },\n0x0492: { n:\"BrtEndCellIgnoreECs14\" },\n0x0493: { n:\"BrtDxf14\" },\n0x0494: { n:\"BrtBeginDxF14s\" },\n0x0495: { n:\"BrtEndDxf14s\" },\n0x0499: { n:\"BrtFilter14\" },\n0x049A: { n:\"BrtBeginCustomFilters14\" },\n0x049C: { n:\"BrtCustomFilter14\" },\n0x049D: { n:\"BrtIconFilter14\" },\n0x049E: { n:\"BrtPivotCacheConnectionName\" },\n0x0800: { n:\"BrtBeginDecoupledPivotCacheIDs\" },\n0x0801: { n:\"BrtEndDecoupledPivotCacheIDs\" },\n0x0802: { n:\"BrtDecoupledPivotCacheID\" },\n0x0803: { n:\"BrtBeginPivotTableRefs\" },\n0x0804: { n:\"BrtEndPivotTableRefs\" },\n0x0805: { n:\"BrtPivotTableRef\" },\n0x0806: { n:\"BrtSlicerCacheBookPivotTables\" },\n0x0807: { n:\"BrtBeginSxvcells\" },\n0x0808: { n:\"BrtEndSxvcells\" },\n0x0809: { n:\"BrtBeginSxRow\" },\n0x080A: { n:\"BrtEndSxRow\" },\n0x080C: { n:\"BrtPcdCalcMem15\" },\n0x0813: { n:\"BrtQsi15\" },\n0x0814: { n:\"BrtBeginWebExtensions\" },\n0x0815: { n:\"BrtEndWebExtensions\" },\n0x0816: { n:\"BrtWebExtension\" },\n0x0817: { n:\"BrtAbsPath15\" },\n0x0818: { n:\"BrtBeginPivotTableUISettings\" },\n0x0819: { n:\"BrtEndPivotTableUISettings\" },\n0x081B: { n:\"BrtTableSlicerCacheIDs\" },\n0x081C: { n:\"BrtTableSlicerCacheID\" },\n0x081D: { n:\"BrtBeginTableSlicerCache\" },\n0x081E: { n:\"BrtEndTableSlicerCache\" },\n0x081F: { n:\"BrtSxFilter15\" },\n0x0820: { n:\"BrtBeginTimelineCachePivotCacheIDs\" },\n0x0821: { n:\"BrtEndTimelineCachePivotCacheIDs\" },\n0x0822: { n:\"BrtTimelineCachePivotCacheID\" },\n0x0823: { n:\"BrtBeginTimelineCacheIDs\" },\n0x0824: { n:\"BrtEndTimelineCacheIDs\" },\n0x0825: { n:\"BrtBeginTimelineCacheID\" },\n0x0826: { n:\"BrtEndTimelineCacheID\" },\n0x0827: { n:\"BrtBeginTimelinesEx\" },\n0x0828: { n:\"BrtEndTimelinesEx\" },\n0x0829: { n:\"BrtBeginTimelineEx\" },\n0x082A: { n:\"BrtEndTimelineEx\" },\n0x082B: { n:\"BrtWorkBookPr15\" },\n0x082C: { n:\"BrtPCDH15\" },\n0x082D: { n:\"BrtBeginTimelineStyle\" },\n0x082E: { n:\"BrtEndTimelineStyle\" },\n0x082F: { n:\"BrtTimelineStyleElement\" },\n0x0830: { n:\"BrtBeginTimelineStylesheetExt15\" },\n0x0831: { n:\"BrtEndTimelineStylesheetExt15\" },\n0x0832: { n:\"BrtBeginTimelineStyles\" },\n0x0833: { n:\"BrtEndTimelineStyles\" },\n0x0834: { n:\"BrtBeginTimelineStyleElements\" },\n0x0835: { n:\"BrtEndTimelineStyleElements\" },\n0x0836: { n:\"BrtDxf15\" },\n0x0837: { n:\"BrtBeginDxfs15\" },\n0x0838: { n:\"brtEndDxfs15\" },\n0x0839: { n:\"BrtSlicerCacheHideItemsWithNoData\" },\n0x083A: { n:\"BrtBeginItemUniqueNames\" },\n0x083B: { n:\"BrtEndItemUniqueNames\" },\n0x083C: { n:\"BrtItemUniqueName\" },\n0x083D: { n:\"BrtBeginExtConn15\" },\n0x083E: { n:\"BrtEndExtConn15\" },\n0x083F: { n:\"BrtBeginOledbPr15\" },\n0x0840: { n:\"BrtEndOledbPr15\" },\n0x0841: { n:\"BrtBeginDataFeedPr15\" },\n0x0842: { n:\"BrtEndDataFeedPr15\" },\n0x0843: { n:\"BrtTextPr15\" },\n0x0844: { n:\"BrtRangePr15\" },\n0x0845: { n:\"BrtDbCommand15\" },\n0x0846: { n:\"BrtBeginDbTables15\" },\n0x0847: { n:\"BrtEndDbTables15\" },\n0x0848: { n:\"BrtDbTable15\" },\n0x0849: { n:\"BrtBeginDataModel\" },\n0x084A: { n:\"BrtEndDataModel\" },\n0x084B: { n:\"BrtBeginModelTables\" },\n0x084C: { n:\"BrtEndModelTables\" },\n0x084D: { n:\"BrtModelTable\" },\n0x084E: { n:\"BrtBeginModelRelationships\" },\n0x084F: { n:\"BrtEndModelRelationships\" },\n0x0850: { n:\"BrtModelRelationship\" },\n0x0851: { n:\"BrtBeginECTxtWiz15\" },\n0x0852: { n:\"BrtEndECTxtWiz15\" },\n0x0853: { n:\"BrtBeginECTWFldInfoLst15\" },\n0x0854: { n:\"BrtEndECTWFldInfoLst15\" },\n0x0855: { n:\"BrtBeginECTWFldInfo15\" },\n0x0856: { n:\"BrtFieldListActiveItem\" },\n0x0857: { n:\"BrtPivotCacheIdVersion\" },\n0x0858: { n:\"BrtSXDI15\" },\n0x0859: { n:\"BrtBeginModelTimeGroupings\" },\n0x085A: { n:\"BrtEndModelTimeGroupings\" },\n0x085B: { n:\"BrtBeginModelTimeGrouping\" },\n0x085C: { n:\"BrtEndModelTimeGrouping\" },\n0x085D: { n:\"BrtModelTimeGroupingCalcCol\" },\n0x0C00: { n:\"BrtUid\" },\n0x0C01: { n:\"BrtRevisionPtr\" },\n0x13e7: { n:\"BrtBeginCalcFeatures\" },\n0x13e8: { n:\"BrtEndCalcFeatures\" },\n0x13e9: { n:\"BrtCalcFeature\" },\n0xFFFF: { n:\"\" }\n};\n\nvar XLSBRE = evert_key(XLSBRecordEnum, 'n');\n\n/* [MS-XLS] 2.3 Record Enumeration */\nvar XLSRecordEnum = {\n0x0003: { n:\"BIFF2NUM\", f:parse_BIFF2NUM },\n0x0004: { n:\"BIFF2STR\", f:parse_BIFF2STR },\n0x0006: { n:\"Formula\", f:parse_Formula },\n0x0009: { n:'BOF', f:parse_BOF },\n0x000a: { n:'EOF', f:parsenoop2 },\n0x000c: { n:\"CalcCount\", f:parseuint16 },\n0x000d: { n:\"CalcMode\", f:parseuint16 },\n0x000e: { n:\"CalcPrecision\", f:parsebool },\n0x000f: { n:\"CalcRefMode\", f:parsebool },\n0x0010: { n:\"CalcDelta\", f:parse_Xnum },\n0x0011: { n:\"CalcIter\", f:parsebool },\n0x0012: { n:\"Protect\", f:parsebool },\n0x0013: { n:\"Password\", f:parseuint16 },\n0x0014: { n:\"Header\", f:parse_XLHeaderFooter },\n0x0015: { n:\"Footer\", f:parse_XLHeaderFooter },\n0x0017: { n:\"ExternSheet\", f:parse_ExternSheet },\n0x0018: { n:\"Lbl\", f:parse_Lbl },\n0x0019: { n:\"WinProtect\", f:parsebool },\n0x001a: { n:\"VerticalPageBreaks\" },\n0x001b: { n:\"HorizontalPageBreaks\" },\n0x001c: { n:\"Note\", f:parse_Note },\n0x001d: { n:\"Selection\" },\n0x0022: { n:\"Date1904\", f:parsebool },\n0x0023: { n:\"ExternName\", f:parse_ExternName },\n0x0026: { n:\"LeftMargin\", f:parse_Xnum },\n0x0027: { n:\"RightMargin\", f:parse_Xnum },\n0x0028: { n:\"TopMargin\", f:parse_Xnum },\n0x0029: { n:\"BottomMargin\", f:parse_Xnum },\n0x002a: { n:\"PrintRowCol\", f:parsebool },\n0x002b: { n:\"PrintGrid\", f:parsebool },\n0x002f: { n:\"FilePass\", f:parse_FilePass },\n0x0031: { n:\"Font\", f:parse_Font },\n0x0033: { n:\"PrintSize\", f:parseuint16 },\n0x003c: { n:\"Continue\" },\n0x003d: { n:\"Window1\", f:parse_Window1 },\n0x0040: { n:\"Backup\", f:parsebool },\n0x0041: { n:\"Pane\" },\n0x0042: { n:'CodePage', f:parseuint16 },\n0x004d: { n:\"Pls\" },\n0x0050: { n:\"DCon\" },\n0x0051: { n:\"DConRef\" },\n0x0052: { n:\"DConName\" },\n0x0055: { n:\"DefColWidth\", f:parseuint16 },\n0x0059: { n:\"XCT\" },\n0x005a: { n:\"CRN\" },\n0x005b: { n:\"FileSharing\" },\n0x005c: { n:'WriteAccess', f:parse_WriteAccess },\n0x005d: { n:\"Obj\", f:parse_Obj },\n0x005e: { n:\"Uncalced\" },\n0x005f: { n:\"CalcSaveRecalc\", f:parsebool },\n0x0060: { n:\"Template\" },\n0x0061: { n:\"Intl\" },\n0x0063: { n:\"ObjProtect\", f:parsebool },\n0x007d: { n:\"ColInfo\", f:parse_ColInfo },\n0x0080: { n:\"Guts\", f:parse_Guts },\n0x0081: { n:\"WsBool\", f:parse_WsBool },\n0x0082: { n:\"GridSet\", f:parseuint16 },\n0x0083: { n:\"HCenter\", f:parsebool },\n0x0084: { n:\"VCenter\", f:parsebool },\n0x0085: { n:'BoundSheet8', f:parse_BoundSheet8 },\n0x0086: { n:\"WriteProtect\" },\n0x008c: { n:\"Country\", f:parse_Country },\n0x008d: { n:\"HideObj\", f:parseuint16 },\n0x0090: { n:\"Sort\" },\n0x0092: { n:\"Palette\", f:parse_Palette },\n0x0097: { n:\"Sync\" },\n0x0098: { n:\"LPr\" },\n0x0099: { n:\"DxGCol\" },\n0x009a: { n:\"FnGroupName\" },\n0x009b: { n:\"FilterMode\" },\n0x009c: { n:\"BuiltInFnGroupCount\", f:parseuint16 },\n0x009d: { n:\"AutoFilterInfo\" },\n0x009e: { n:\"AutoFilter\" },\n0x00a0: { n:\"Scl\", f:parse_Scl },\n0x00a1: { n:\"Setup\", f:parse_Setup },\n0x00ae: { n:\"ScenMan\" },\n0x00af: { n:\"SCENARIO\" },\n0x00b0: { n:\"SxView\" },\n0x00b1: { n:\"Sxvd\" },\n0x00b2: { n:\"SXVI\" },\n0x00b4: { n:\"SxIvd\" },\n0x00b5: { n:\"SXLI\" },\n0x00b6: { n:\"SXPI\" },\n0x00b8: { n:\"DocRoute\" },\n0x00b9: { n:\"RecipName\" },\n0x00bd: { n:\"MulRk\", f:parse_MulRk },\n0x00be: { n:\"MulBlank\", f:parse_MulBlank },\n0x00c1: { n:'Mms', f:parsenoop2 },\n0x00c5: { n:\"SXDI\" },\n0x00c6: { n:\"SXDB\" },\n0x00c7: { n:\"SXFDB\" },\n0x00c8: { n:\"SXDBB\" },\n0x00c9: { n:\"SXNum\" },\n0x00ca: { n:\"SxBool\", f:parsebool },\n0x00cb: { n:\"SxErr\" },\n0x00cc: { n:\"SXInt\" },\n0x00cd: { n:\"SXString\" },\n0x00ce: { n:\"SXDtr\" },\n0x00cf: { n:\"SxNil\" },\n0x00d0: { n:\"SXTbl\" },\n0x00d1: { n:\"SXTBRGIITM\" },\n0x00d2: { n:\"SxTbpg\" },\n0x00d3: { n:\"ObProj\" },\n0x00d5: { n:\"SXStreamID\" },\n0x00d7: { n:\"DBCell\" },\n0x00d8: { n:\"SXRng\" },\n0x00d9: { n:\"SxIsxoper\" },\n0x00da: { n:\"BookBool\", f:parseuint16 },\n0x00dc: { n:\"DbOrParamQry\" },\n0x00dd: { n:\"ScenarioProtect\", f:parsebool },\n0x00de: { n:\"OleObjectSize\" },\n0x00e0: { n:\"XF\", f:parse_XF },\n0x00e1: { n:'InterfaceHdr', f:parse_InterfaceHdr },\n0x00e2: { n:'InterfaceEnd', f:parsenoop2 },\n0x00e3: { n:\"SXVS\" },\n0x00e5: { n:\"MergeCells\", f:parse_MergeCells },\n0x00e9: { n:\"BkHim\" },\n0x00eb: { n:\"MsoDrawingGroup\" },\n0x00ec: { n:\"MsoDrawing\" },\n0x00ed: { n:\"MsoDrawingSelection\" },\n0x00ef: { n:\"PhoneticInfo\" },\n0x00f0: { n:\"SxRule\" },\n0x00f1: { n:\"SXEx\" },\n0x00f2: { n:\"SxFilt\" },\n0x00f4: { n:\"SxDXF\" },\n0x00f5: { n:\"SxItm\" },\n0x00f6: { n:\"SxName\" },\n0x00f7: { n:\"SxSelect\" },\n0x00f8: { n:\"SXPair\" },\n0x00f9: { n:\"SxFmla\" },\n0x00fb: { n:\"SxFormat\" },\n0x00fc: { n:\"SST\", f:parse_SST },\n0x00fd: { n:\"LabelSst\", f:parse_LabelSst },\n0x00ff: { n:\"ExtSST\", f:parse_ExtSST },\n0x0100: { n:\"SXVDEx\" },\n0x0103: { n:\"SXFormula\" },\n0x0122: { n:\"SXDBEx\" },\n0x0137: { n:\"RRDInsDel\" },\n0x0138: { n:\"RRDHead\" },\n0x013b: { n:\"RRDChgCell\" },\n0x013d: { n:\"RRTabId\", f:parseuint16a },\n0x013e: { n:\"RRDRenSheet\" },\n0x013f: { n:\"RRSort\" },\n0x0140: { n:\"RRDMove\" },\n0x014a: { n:\"RRFormat\" },\n0x014b: { n:\"RRAutoFmt\" },\n0x014d: { n:\"RRInsertSh\" },\n0x014e: { n:\"RRDMoveBegin\" },\n0x014f: { n:\"RRDMoveEnd\" },\n0x0150: { n:\"RRDInsDelBegin\" },\n0x0151: { n:\"RRDInsDelEnd\" },\n0x0152: { n:\"RRDConflict\" },\n0x0153: { n:\"RRDDefName\" },\n0x0154: { n:\"RRDRstEtxp\" },\n0x015f: { n:\"LRng\" },\n0x0160: { n:\"UsesELFs\", f:parsebool },\n0x0161: { n:\"DSF\", f:parsenoop2 },\n0x0191: { n:\"CUsr\" },\n0x0192: { n:\"CbUsr\" },\n0x0193: { n:\"UsrInfo\" },\n0x0194: { n:\"UsrExcl\" },\n0x0195: { n:\"FileLock\" },\n0x0196: { n:\"RRDInfo\" },\n0x0197: { n:\"BCUsrs\" },\n0x0198: { n:\"UsrChk\" },\n0x01a9: { n:\"UserBView\" },\n0x01aa: { n:\"UserSViewBegin\" },\n0x01ab: { n:\"UserSViewEnd\" },\n0x01ac: { n:\"RRDUserView\" },\n0x01ad: { n:\"Qsi\" },\n0x01ae: { n:\"SupBook\", f:parse_SupBook },\n0x01af: { n:\"Prot4Rev\", f:parsebool },\n0x01b0: { n:\"CondFmt\" },\n0x01b1: { n:\"CF\" },\n0x01b2: { n:\"DVal\" },\n0x01b5: { n:\"DConBin\" },\n0x01b6: { n:\"TxO\", f:parse_TxO },\n0x01b7: { n:\"RefreshAll\", f:parsebool },\n0x01b8: { n:\"HLink\", f:parse_HLink },\n0x01b9: { n:\"Lel\" },\n0x01ba: { n:\"CodeName\", f:parse_XLUnicodeString },\n0x01bb: { n:\"SXFDBType\" },\n0x01bc: { n:\"Prot4RevPass\", f:parseuint16 },\n0x01bd: { n:\"ObNoMacros\" },\n0x01be: { n:\"Dv\" },\n0x01c0: { n:\"Excel9File\", f:parsenoop2 },\n0x01c1: { n:\"RecalcId\", f:parse_RecalcId, r:2},\n0x01c2: { n:\"EntExU2\", f:parsenoop2 },\n0x0200: { n:\"Dimensions\", f:parse_Dimensions },\n0x0201: { n:\"Blank\", f:parse_Blank },\n0x0203: { n:\"Number\", f:parse_Number },\n0x0204: { n:\"Label\", f:parse_Label },\n0x0205: { n:\"BoolErr\", f:parse_BoolErr },\n0x0206: { n:\"Formula\", f:parse_Formula },\n0x0207: { n:\"String\", f:parse_String },\n0x0208: { n:'Row', f:parse_Row },\n0x020b: { n:\"Index\" },\n0x0221: { n:\"Array\", f:parse_Array },\n0x0225: { n:\"DefaultRowHeight\", f:parse_DefaultRowHeight },\n0x0236: { n:\"Table\" },\n0x023e: { n:\"Window2\", f:parse_Window2 },\n0x027e: { n:\"RK\", f:parse_RK },\n0x0293: { n:\"Style\" },\n0x0406: { n:\"Formula\", f:parse_Formula },\n0x0418: { n:\"BigName\" },\n0x041e: { n:\"Format\", f:parse_Format },\n0x043c: { n:\"ContinueBigName\" },\n0x04bc: { n:\"ShrFmla\", f:parse_ShrFmla },\n0x0800: { n:\"HLinkTooltip\", f:parse_HLinkTooltip },\n0x0801: { n:\"WebPub\" },\n0x0802: { n:\"QsiSXTag\" },\n0x0803: { n:\"DBQueryExt\" },\n0x0804: { n:\"ExtString\" },\n0x0805: { n:\"TxtQry\" },\n0x0806: { n:\"Qsir\" },\n0x0807: { n:\"Qsif\" },\n0x0808: { n:\"RRDTQSIF\" },\n0x0809: { n:'BOF', f:parse_BOF },\n0x080a: { n:\"OleDbConn\" },\n0x080b: { n:\"WOpt\" },\n0x080c: { n:\"SXViewEx\" },\n0x080d: { n:\"SXTH\" },\n0x080e: { n:\"SXPIEx\" },\n0x080f: { n:\"SXVDTEx\" },\n0x0810: { n:\"SXViewEx9\" },\n0x0812: { n:\"ContinueFrt\" },\n0x0813: { n:\"RealTimeData\" },\n0x0850: { n:\"ChartFrtInfo\" },\n0x0851: { n:\"FrtWrapper\" },\n0x0852: { n:\"StartBlock\" },\n0x0853: { n:\"EndBlock\" },\n0x0854: { n:\"StartObject\" },\n0x0855: { n:\"EndObject\" },\n0x0856: { n:\"CatLab\" },\n0x0857: { n:\"YMult\" },\n0x0858: { n:\"SXViewLink\" },\n0x0859: { n:\"PivotChartBits\" },\n0x085a: { n:\"FrtFontList\" },\n0x0862: { n:\"SheetExt\" },\n0x0863: { n:\"BookExt\", r:12},\n0x0864: { n:\"SXAddl\" },\n0x0865: { n:\"CrErr\" },\n0x0866: { n:\"HFPicture\" },\n0x0867: { n:'FeatHdr', f:parsenoop2 },\n0x0868: { n:\"Feat\" },\n0x086a: { n:\"DataLabExt\" },\n0x086b: { n:\"DataLabExtContents\" },\n0x086c: { n:\"CellWatch\" },\n0x0871: { n:\"FeatHdr11\" },\n0x0872: { n:\"Feature11\" },\n0x0874: { n:\"DropDownObjIds\" },\n0x0875: { n:\"ContinueFrt11\" },\n0x0876: { n:\"DConn\" },\n0x0877: { n:\"List12\" },\n0x0878: { n:\"Feature12\" },\n0x0879: { n:\"CondFmt12\" },\n0x087a: { n:\"CF12\" },\n0x087b: { n:\"CFEx\" },\n0x087c: { n:\"XFCRC\", f:parse_XFCRC, r:12 },\n0x087d: { n:\"XFExt\", f:parse_XFExt, r:12 },\n0x087e: { n:\"AutoFilter12\" },\n0x087f: { n:\"ContinueFrt12\" },\n0x0884: { n:\"MDTInfo\" },\n0x0885: { n:\"MDXStr\" },\n0x0886: { n:\"MDXTuple\" },\n0x0887: { n:\"MDXSet\" },\n0x0888: { n:\"MDXProp\" },\n0x0889: { n:\"MDXKPI\" },\n0x088a: { n:\"MDB\" },\n0x088b: { n:\"PLV\" },\n0x088c: { n:\"Compat12\", f:parsebool, r:12 },\n0x088d: { n:\"DXF\" },\n0x088e: { n:\"TableStyles\", r:12 },\n0x088f: { n:\"TableStyle\" },\n0x0890: { n:\"TableStyleElement\" },\n0x0892: { n:\"StyleExt\" },\n0x0893: { n:\"NamePublish\" },\n0x0894: { n:\"NameCmt\", f:parse_NameCmt, r:12 },\n0x0895: { n:\"SortData\" },\n0x0896: { n:\"Theme\", f:parse_Theme, r:12 },\n0x0897: { n:\"GUIDTypeLib\" },\n0x0898: { n:\"FnGrp12\" },\n0x0899: { n:\"NameFnGrp12\" },\n0x089a: { n:\"MTRSettings\", f:parse_MTRSettings, r:12 },\n0x089b: { n:\"CompressPictures\", f:parsenoop2 },\n0x089c: { n:\"HeaderFooter\" },\n0x089d: { n:\"CrtLayout12\" },\n0x089e: { n:\"CrtMlFrt\" },\n0x089f: { n:\"CrtMlFrtContinue\" },\n0x08a3: { n:\"ForceFullCalculation\", f:parse_ForceFullCalculation },\n0x08a4: { n:\"ShapePropsStream\" },\n0x08a5: { n:\"TextPropsStream\" },\n0x08a6: { n:\"RichTextStream\" },\n0x08a7: { n:\"CrtLayout12A\" },\n0x1001: { n:\"Units\" },\n0x1002: { n:\"Chart\" },\n0x1003: { n:\"Series\" },\n0x1006: { n:\"DataFormat\" },\n0x1007: { n:\"LineFormat\" },\n0x1009: { n:\"MarkerFormat\" },\n0x100a: { n:\"AreaFormat\" },\n0x100b: { n:\"PieFormat\" },\n0x100c: { n:\"AttachedLabel\" },\n0x100d: { n:\"SeriesText\" },\n0x1014: { n:\"ChartFormat\" },\n0x1015: { n:\"Legend\" },\n0x1016: { n:\"SeriesList\" },\n0x1017: { n:\"Bar\" },\n0x1018: { n:\"Line\" },\n0x1019: { n:\"Pie\" },\n0x101a: { n:\"Area\" },\n0x101b: { n:\"Scatter\" },\n0x101c: { n:\"CrtLine\" },\n0x101d: { n:\"Axis\" },\n0x101e: { n:\"Tick\" },\n0x101f: { n:\"ValueRange\" },\n0x1020: { n:\"CatSerRange\" },\n0x1021: { n:\"AxisLine\" },\n0x1022: { n:\"CrtLink\" },\n0x1024: { n:\"DefaultText\" },\n0x1025: { n:\"Text\" },\n0x1026: { n:\"FontX\", f:parseuint16 },\n0x1027: { n:\"ObjectLink\" },\n0x1032: { n:\"Frame\" },\n0x1033: { n:\"Begin\" },\n0x1034: { n:\"End\" },\n0x1035: { n:\"PlotArea\" },\n0x103a: { n:\"Chart3d\" },\n0x103c: { n:\"PicF\" },\n0x103d: { n:\"DropBar\" },\n0x103e: { n:\"Radar\" },\n0x103f: { n:\"Surf\" },\n0x1040: { n:\"RadarArea\" },\n0x1041: { n:\"AxisParent\" },\n0x1043: { n:\"LegendException\" },\n0x1044: { n:\"ShtProps\", f:parse_ShtProps },\n0x1045: { n:\"SerToCrt\" },\n0x1046: { n:\"AxesUsed\" },\n0x1048: { n:\"SBaseRef\" },\n0x104a: { n:\"SerParent\" },\n0x104b: { n:\"SerAuxTrend\" },\n0x104e: { n:\"IFmtRecord\" },\n0x104f: { n:\"Pos\" },\n0x1050: { n:\"AlRuns\" },\n0x1051: { n:\"BRAI\" },\n0x105b: { n:\"SerAuxErrBar\" },\n0x105c: { n:\"ClrtClient\", f:parse_ClrtClient },\n0x105d: { n:\"SerFmt\" },\n0x105f: { n:\"Chart3DBarShape\" },\n0x1060: { n:\"Fbi\" },\n0x1061: { n:\"BopPop\" },\n0x1062: { n:\"AxcExt\" },\n0x1063: { n:\"Dat\" },\n0x1064: { n:\"PlotGrowth\" },\n0x1065: { n:\"SIIndex\" },\n0x1066: { n:\"GelFrame\" },\n0x1067: { n:\"BopPopCustom\" },\n0x1068: { n:\"Fbi2\" },\n\n0x0000: { n:\"Dimensions\", f:parse_Dimensions },\n0x0002: { n:\"BIFF2INT\", f:parse_BIFF2INT },\n0x0005: { n:\"BoolErr\", f:parse_BoolErr },\n0x0007: { n:\"String\", f:parse_BIFF2STRING },\n0x0008: { n:\"BIFF2ROW\" },\n0x000b: { n:\"Index\" },\n0x0016: { n:\"ExternCount\", f:parseuint16 },\n0x001e: { n:\"BIFF2FORMAT\", f:parse_BIFF2Format },\n0x001f: { n:\"BIFF2FMTCNT\" }, /* 16-bit cnt of BIFF2FORMAT records */\n0x0020: { n:\"BIFF2COLINFO\" },\n0x0021: { n:\"Array\", f:parse_Array },\n0x0025: { n:\"DefaultRowHeight\", f:parse_DefaultRowHeight },\n0x0032: { n:\"BIFF2FONTXTRA\", f:parse_BIFF2FONTXTRA },\n0x0034: { n:\"DDEObjName\" },\n0x003e: { n:\"BIFF2WINDOW2\" },\n0x0043: { n:\"BIFF2XF\" },\n0x0045: { n:\"BIFF2FONTCLR\" },\n0x0056: { n:\"BIFF4FMTCNT\" }, /* 16-bit cnt, similar to BIFF2 */\n0x007e: { n:\"RK\" }, /* Not necessarily same as 0x027e */\n0x007f: { n:\"ImData\", f:parse_ImData },\n0x0087: { n:\"Addin\" },\n0x0088: { n:\"Edg\" },\n0x0089: { n:\"Pub\" },\n0x0091: { n:\"Sub\" },\n0x0094: { n:\"LHRecord\" },\n0x0095: { n:\"LHNGraph\" },\n0x0096: { n:\"Sound\" },\n0x00a9: { n:\"CoordList\" },\n0x00ab: { n:\"GCW\" },\n0x00bc: { n:\"ShrFmla\" }, /* Not necessarily same as 0x04bc */\n0x00bf: { n:\"ToolbarHdr\" },\n0x00c0: { n:\"ToolbarEnd\" },\n0x00c2: { n:\"AddMenu\" },\n0x00c3: { n:\"DelMenu\" },\n0x00d6: { n:\"RString\", f:parse_RString },\n0x00df: { n:\"UDDesc\" },\n0x00ea: { n:\"TabIdConf\" },\n0x0162: { n:\"XL5Modify\" },\n0x01a5: { n:\"FileSharing2\" },\n0x0209: { n:'BOF', f:parse_BOF },\n0x0218: { n:\"Lbl\", f:parse_Lbl },\n0x0223: { n:\"ExternName\", f:parse_ExternName },\n0x0231: { n:\"Font\" },\n0x0243: { n:\"BIFF3XF\" },\n0x0409: { n:'BOF', f:parse_BOF },\n0x0443: { n:\"BIFF4XF\" },\n0x086d: { n:\"FeatInfo\" },\n0x0873: { n:\"FeatInfo11\" },\n0x0881: { n:\"SXAddl12\" },\n0x08c0: { n:\"AutoWebPub\" },\n0x08c1: { n:\"ListObj\" },\n0x08c2: { n:\"ListField\" },\n0x08c3: { n:\"ListDV\" },\n0x08c4: { n:\"ListCondFmt\" },\n0x08c5: { n:\"ListCF\" },\n0x08c6: { n:\"FMQry\" },\n0x08c7: { n:\"FMSQry\" },\n0x08c8: { n:\"PLV\" },\n0x08c9: { n:\"LnExt\" },\n0x08ca: { n:\"MkrExt\" },\n0x08cb: { n:\"CrtCoopt\" },\n0x08d6: { n:\"FRTArchId$\", r:12 },\n\n0x7262: {}\n};\n\nvar XLSRE = evert_key(XLSRecordEnum, 'n');\nfunction write_biff_rec(ba, type, payload, length) {\n\tvar t = +type || +XLSRE[type];\n\tif(isNaN(t)) return;\n\tvar len = length || (payload||[]).length || 0;\n\tvar o = ba.next(4);\n\to.write_shift(2, t);\n\to.write_shift(2, len);\n\tif(len > 0 && is_buf(payload)) ba.push(payload);\n}\n\nfunction write_BIFF2Cell(out, r, c) {\n\tif(!out) out = new_buf(7);\n\tout.write_shift(2, r);\n\tout.write_shift(2, c);\n\tout.write_shift(2, 0);\n\tout.write_shift(1, 0);\n\treturn out;\n}\n\nfunction write_BIFF2BERR(r, c, val, t) {\n\tvar out = new_buf(9);\n\twrite_BIFF2Cell(out, r, c);\n\tif(t == 'e') { out.write_shift(1, val); out.write_shift(1, 1); }\n\telse { out.write_shift(1, val?1:0); out.write_shift(1, 0); }\n\treturn out;\n}\n\n/* TODO: codepage, large strings */\nfunction write_BIFF2LABEL(r, c, val) {\n\tvar out = new_buf(8 + 2*val.length);\n\twrite_BIFF2Cell(out, r, c);\n\tout.write_shift(1, val.length);\n\tout.write_shift(val.length, val, 'sbcs');\n\treturn out.l < out.length ? out.slice(0, out.l) : out;\n}\n\nfunction write_ws_biff2_cell(ba, cell, R, C) {\n\tif(cell.v != null) switch(cell.t) {\n\t\tcase 'd': case 'n':\n\t\t\tvar v = cell.t == 'd' ? datenum(parseDate(cell.v)) : cell.v;\n\t\t\tif((v == (v|0)) && (v >= 0) && (v < 65536))\n\t\t\t\twrite_biff_rec(ba, 0x0002, write_BIFF2INT(R, C, v));\n\t\t\telse\n\t\t\t\twrite_biff_rec(ba, 0x0003, write_BIFF2NUM(R,C, v));\n\t\t\treturn;\n\t\tcase 'b': case 'e': write_biff_rec(ba, 0x0005, write_BIFF2BERR(R, C, cell.v, cell.t)); return;\n\t\t/* TODO: codepage, sst */\n\t\tcase 's': case 'str':\n\t\t\twrite_biff_rec(ba, 0x0004, write_BIFF2LABEL(R, C, cell.v));\n\t\t\treturn;\n\t}\n\twrite_biff_rec(ba, 0x0001, write_BIFF2Cell(null, R, C));\n}\n\nfunction write_ws_biff2(ba, ws, idx, opts) {\n\tvar dense = Array.isArray(ws);\n\tvar range = safe_decode_range(ws['!ref'] || \"A1\"), ref, rr = \"\", cols = [];\n\tif(range.e.c > 0xFF || range.e.r > 0x3FFF) {\n\t\tif(opts.WTF) throw new Error(\"Range \" + (ws['!ref'] || \"A1\") + \" exceeds format limit A1:IV16384\");\n\t\trange.e.c = Math.min(range.e.c, 0xFF);\n\t\trange.e.r = Math.min(range.e.c, 0x3FFF);\n\t\tref = encode_range(range);\n\t}\n\tfor(var R = range.s.r; R <= range.e.r; ++R) {\n\t\trr = encode_row(R);\n\t\tfor(var C = range.s.c; C <= range.e.c; ++C) {\n\t\t\tif(R === range.s.r) cols[C] = encode_col(C);\n\t\t\tref = cols[C] + rr;\n\t\t\tvar cell = dense ? (ws[R]||[])[C] : ws[ref];\n\t\t\tif(!cell) continue;\n\t\t\t/* write cell */\n\t\t\twrite_ws_biff2_cell(ba, cell, R, C, opts);\n\t\t}\n\t}\n}\n\n/* Based on test files */\nfunction write_biff2_buf(wb, opts) {\n\tvar o = opts || {};\n\tif(DENSE != null && o.dense == null) o.dense = DENSE;\n\tvar ba = buf_array();\n\tvar idx = 0;\n\tfor(var i=0;i 0xFF || range.e.r >= MAX_ROWS) {\n\t\tif(opts.WTF) throw new Error(\"Range \" + (ws['!ref'] || \"A1\") + \" exceeds format limit A1:IV16384\");\n\t\trange.e.c = Math.min(range.e.c, 0xFF);\n\t\trange.e.r = Math.min(range.e.c, MAX_ROWS-1);\n\t}\n\n\twrite_biff_rec(ba, 0x0809, write_BOF(wb, 0x10, opts));\n\t/* ... */\n\twrite_biff_rec(ba, \"CalcMode\", writeuint16(1));\n\twrite_biff_rec(ba, \"CalcCount\", writeuint16(100));\n\twrite_biff_rec(ba, \"CalcRefMode\", writebool(true));\n\twrite_biff_rec(ba, \"CalcIter\", writebool(false));\n\twrite_biff_rec(ba, \"CalcDelta\", write_Xnum(0.001));\n\twrite_biff_rec(ba, \"CalcSaveRecalc\", writebool(true));\n\twrite_biff_rec(ba, \"PrintRowCol\", writebool(false));\n\twrite_biff_rec(ba, \"PrintGrid\", writebool(false));\n\twrite_biff_rec(ba, \"GridSet\", writeuint16(1));\n\twrite_biff_rec(ba, \"Guts\", write_Guts([0,0]));\n\t/* ... */\n\twrite_biff_rec(ba, \"HCenter\", writebool(false));\n\twrite_biff_rec(ba, \"VCenter\", writebool(false));\n\t/* ... */\n\twrite_biff_rec(ba, 0x200, write_Dimensions(range, opts));\n\t/* ... */\n\n\tif(b8) ws['!links'] = [];\n\tfor(var R = range.s.r; R <= range.e.r; ++R) {\n\t\trr = encode_row(R);\n\t\tfor(var C = range.s.c; C <= range.e.c; ++C) {\n\t\t\tif(R === range.s.r) cols[C] = encode_col(C);\n\t\t\tref = cols[C] + rr;\n\t\t\tvar cell = dense ? (ws[R]||[])[C] : ws[ref];\n\t\t\tif(!cell) continue;\n\t\t\t/* write cell */\n\t\t\twrite_ws_biff8_cell(ba, cell, R, C, opts);\n\t\t\tif(b8 && cell.l) ws['!links'].push([ref, cell.l]);\n\t\t}\n\t}\n\tvar cname = _sheet.CodeName || _sheet.name || s;\n\t/* ... */\n\tif(b8 && _WB.Views) write_biff_rec(ba, \"Window2\", write_Window2(_WB.Views[0]));\n\t/* ... */\n\tif(b8 && (ws['!merges']||[]).length) write_biff_rec(ba, \"MergeCells\", write_MergeCells(ws['!merges']));\n\t/* ... */\n\tif(b8) write_ws_biff8_hlinks(ba, ws);\n\t/* ... */\n\twrite_biff_rec(ba, \"CodeName\", write_XLUnicodeString(cname, opts));\n\t/* ... */\n\tif(b8) write_FEAT(ba, ws);\n\t/* ... */\n\twrite_biff_rec(ba, \"EOF\");\n\treturn ba.end();\n}\n\n/* [MS-XLS] 2.1.7.20.3 */\nfunction write_biff8_global(wb, bufs, opts) {\n\tvar A = buf_array();\n\tvar _WB = ((wb||{}).Workbook||{});\n\tvar _sheets = (_WB.Sheets||[]);\n\tvar _wb = _WB.WBProps||{};\n\tvar b8 = opts.biff == 8, b5 = opts.biff == 5;\n\twrite_biff_rec(A, 0x0809, write_BOF(wb, 0x05, opts));\n\tif(opts.bookType == \"xla\") write_biff_rec(A, \"Addin\");\n\twrite_biff_rec(A, \"InterfaceHdr\", b8 ? writeuint16(0x04b0) : null);\n\twrite_biff_rec(A, \"Mms\", writezeroes(2));\n\tif(b5) write_biff_rec(A, \"ToolbarHdr\");\n\tif(b5) write_biff_rec(A, \"ToolbarEnd\");\n\twrite_biff_rec(A, \"InterfaceEnd\");\n\twrite_biff_rec(A, \"WriteAccess\", write_WriteAccess(\"SheetJS\", opts));\n\twrite_biff_rec(A, \"CodePage\", writeuint16(b8 ? 0x04b0 : 0x04E4));\n\tif(b8) write_biff_rec(A, \"DSF\", writeuint16(0));\n\tif(b8) write_biff_rec(A, \"Excel9File\");\n\twrite_biff_rec(A, \"RRTabId\", write_RRTabId(wb.SheetNames.length));\n\tif(b8 && wb.vbaraw) {\n\t\twrite_biff_rec(A, \"ObProj\");\n\t\tvar cname = _wb.CodeName || \"ThisWorkbook\";\n\t\twrite_biff_rec(A, \"CodeName\", write_XLUnicodeString(cname, opts));\n\t}\n\twrite_biff_rec(A, \"BuiltInFnGroupCount\", writeuint16(0x11));\n\twrite_biff_rec(A, \"WinProtect\", writebool(false));\n\twrite_biff_rec(A, \"Protect\", writebool(false));\n\twrite_biff_rec(A, \"Password\", writeuint16(0));\n\tif(b8) write_biff_rec(A, \"Prot4Rev\", writebool(false));\n\tif(b8) write_biff_rec(A, \"Prot4RevPass\", writeuint16(0));\n\twrite_biff_rec(A, \"Window1\", write_Window1(opts));\n\twrite_biff_rec(A, \"Backup\", writebool(false));\n\twrite_biff_rec(A, \"HideObj\", writeuint16(0));\n\twrite_biff_rec(A, \"Date1904\", writebool(safe1904(wb)==\"true\"));\n\twrite_biff_rec(A, \"CalcPrecision\", writebool(true));\n\tif(b8) write_biff_rec(A, \"RefreshAll\", writebool(false));\n\twrite_biff_rec(A, \"BookBool\", writeuint16(0));\n\t/* ... */\n\twrite_FONTS_biff8(A, wb, opts);\n\twrite_FMTS_biff8(A, wb.SSF, opts);\n\twrite_CELLXFS_biff8(A, opts);\n\t/* ... */\n\tif(b8) write_biff_rec(A, \"UsesELFs\", writebool(false));\n\tvar a = A.end();\n\n\tvar C = buf_array();\n\tif(b8) write_biff_rec(C, \"Country\", write_Country());\n\t/* BIFF8: [SST *Continue] ExtSST */\n\twrite_biff_rec(C, \"EOF\");\n\tvar c = C.end();\n\n\tvar B = buf_array();\n\tvar blen = 0, j = 0;\n\tfor(j = 0; j < wb.SheetNames.length; ++j) blen += (b8 ? 12 : 11) + (b8 ? 2 : 1) * wb.SheetNames[j].length;\n\tvar start = a.length + blen + c.length;\n\tfor(j = 0; j < wb.SheetNames.length; ++j) {\n\t\tvar _sheet = _sheets[j] || ({});\n\t\twrite_biff_rec(B, \"BoundSheet8\", write_BoundSheet8({pos:start, hs:_sheet.Hidden||0, dt:0, name:wb.SheetNames[j]}, opts));\n\t\tstart += bufs[j].length;\n\t}\n\t/* 1*BoundSheet8 */\n\tvar b = B.end();\n\tif(blen != b.length) throw new Error(\"BS8 \" + blen + \" != \" + b.length);\n\n\tvar out = [];\n\tif(a.length) out.push(a);\n\tif(b.length) out.push(b);\n\tif(c.length) out.push(c);\n\treturn __toBuffer([out]);\n}\n\n/* [MS-XLS] 2.1.7.20 Workbook Stream */\nfunction write_biff8_buf(wb, opts) {\n\tvar o = opts || {};\n\tvar bufs = [];\n\n\tif(wb && !wb.SSF) {\n\t\twb.SSF = SSF.get_table();\n\t}\n\tif(wb && wb.SSF) {\n\t\tmake_ssf(SSF); SSF.load_table(wb.SSF);\n\t\t// $FlowIgnore\n\t\to.revssf = evert_num(wb.SSF); o.revssf[wb.SSF[65535]] = 0;\n\t\to.ssf = wb.SSF;\n\t}\n\to.cellXfs = [];\n\to.Strings = []; o.Strings.Count = 0; o.Strings.Unique = 0;\n\tget_cell_style(o.cellXfs, {}, {revssf:{\"General\":0}});\n\n\tfor(var i = 0; i < wb.SheetNames.length; ++i) bufs[bufs.length] = write_ws_biff8(i, o, wb);\n\tbufs.unshift(write_biff8_global(wb, bufs, o));\n\treturn __toBuffer([bufs]);\n}\n\nfunction write_biff_buf(wb, opts) {\n\tvar o = opts || {};\n\tswitch(o.biff || 2) {\n\t\tcase 8: case 5: return write_biff8_buf(wb, opts);\n\t\tcase 4: case 3: case 2: return write_biff2_buf(wb, opts);\n\t}\n\tthrow new Error(\"invalid type \" + o.bookType + \" for BIFF\");\n}\n/* note: browser DOM element cannot see mso- style attrs, must parse */\nvar HTML_ = (function() {\n\tfunction html_to_sheet(str, _opts) {\n\t\tvar opts = _opts || {};\n\t\tif(DENSE != null && opts.dense == null) opts.dense = DENSE;\n\t\tvar ws = opts.dense ? ([]) : ({});\n\t\tvar mtch = str.match(/\");\n\t\tvar mtch2 = str.match(/<\\/table/i);\n\t\tvar i = mtch.index, j = mtch2 && mtch2.index || str.length;\n\t\tvar rows = split_regex(str.slice(i, j), /(:?]*>)/i, \"\");\n\t\tvar R = -1, C = 0, RS = 0, CS = 0;\n\t\tvar range = {s:{r:10000000, c:10000000},e:{r:0,c:0}};\n\t\tvar merges = [];\n\t\tfor(i = 0; i < rows.length; ++i) {\n\t\t\tvar row = rows[i].trim();\n\t\t\tvar hd = row.slice(0,3).toLowerCase();\n\t\t\tif(hd == \"/i);\n\t\t\tfor(j = 0; j < cells.length; ++j) {\n\t\t\t\tvar cell = cells[j].trim();\n\t\t\t\tif(!cell.match(/\")) > -1) m = m.slice(cc+1);\n\t\t\t\tvar tag = parsexmltag(cell.slice(0, cell.indexOf(\">\")));\n\t\t\t\tCS = tag.colspan ? +tag.colspan : 1;\n\t\t\t\tif((RS = +tag.rowspan)>1 || CS>1) merges.push({s:{r:R,c:C},e:{r:R + (RS||1) - 1, c:C + CS - 1}});\n\t\t\t\tvar _t = tag.t || \"\";\n\t\t\t\t/* TODO: generate stub cells */\n\t\t\t\tif(!m.length) { C += CS; continue; }\n\t\t\t\tm = htmldecode(m);\n\t\t\t\tif(range.s.r > R) range.s.r = R; if(range.e.r < R) range.e.r = R;\n\t\t\t\tif(range.s.c > C) range.s.c = C; if(range.e.c < C) range.e.c = C;\n\t\t\t\tif(!m.length) continue;\n\t\t\t\tvar o = {t:'s', v:m};\n\t\t\t\tif(opts.raw || !m.trim().length || _t == 's'){}\n\t\t\t\telse if(m === 'TRUE') o = {t:'b', v:true};\n\t\t\t\telse if(m === 'FALSE') o = {t:'b', v:false};\n\t\t\t\telse if(!isNaN(fuzzynum(m))) o = {t:'n', v:fuzzynum(m)};\n\t\t\t\telse if(!isNaN(fuzzydate(m).getDate())) {\n\t\t\t\t\to = ({t:'d', v:parseDate(m)});\n\t\t\t\t\tif(!opts.cellDates) o = ({t:'n', v:datenum(o.v)});\n\t\t\t\t\to.z = opts.dateNF || SSF._table[14];\n\t\t\t\t}\n\t\t\t\tif(opts.dense) { if(!ws[R]) ws[R] = []; ws[R][C] = o; }\n\t\t\t\telse ws[encode_cell({r:R, c:C})] = o;\n\t\t\t\tC += CS;\n\t\t\t}\n\t\t}\n\t\tws['!ref'] = encode_range(range);\n\t\treturn ws;\n\t}\n\tfunction html_to_book(str, opts) {\n\t\treturn sheet_to_workbook(html_to_sheet(str, opts), opts);\n\t}\n\tfunction make_html_row(ws, r, R, o) {\n\t\tvar M = (ws['!merges'] ||[]);\n\t\tvar oo = [];\n\t\tfor(var C = r.s.c; C <= r.e.c; ++C) {\n\t\t\tvar RS = 0, CS = 0;\n\t\t\tfor(var j = 0; j < M.length; ++j) {\n\t\t\t\tif(M[j].s.r > R || M[j].s.c > C) continue;\n\t\t\t\tif(M[j].e.r < R || M[j].e.c < C) continue;\n\t\t\t\tif(M[j].s.r < R || M[j].s.c < C) { RS = -1; break; }\n\t\t\t\tRS = M[j].e.r - M[j].s.r + 1; CS = M[j].e.c - M[j].s.c + 1; break;\n\t\t\t}\n\t\t\tif(RS < 0) continue;\n\t\t\tvar coord = encode_cell({r:R,c:C});\n\t\t\tvar cell = o.dense ? (ws[R]||[])[C] : ws[coord];\n\t\t\tvar sp = {};\n\t\t\tif(RS > 1) sp.rowspan = RS;\n\t\t\tif(CS > 1) sp.colspan = CS;\n\t\t\t/* TODO: html entities */\n\t\t\tvar w = (cell && cell.v != null) && (cell.h || escapehtml(cell.w || (format_cell(cell), cell.w) || \"\")) || \"\";\n\t\t\tsp.t = cell && cell.t || 'z';\n\t\t\tif(o.editable) w = '' + w + '';\n\t\t\tsp.id = \"sjs-\" + coord;\n\t\t\too.push(writextag('td', w, sp));\n\t\t}\n\t\tvar preamble = \"\";\n\t\treturn preamble + oo.join(\"\") + \"\";\n\t}\n\tfunction make_html_preamble(ws, R, o) {\n\t\tvar out = [];\n\t\treturn out.join(\"\") + '';\n\t}\n\tvar _BEGIN = 'SheetJS Table Export';\n\tvar _END = '';\n\tfunction sheet_to_html(ws, opts/*, wb:?Workbook*/) {\n\t\tvar o = opts || {};\n\t\tvar header = o.header != null ? o.header : _BEGIN;\n\t\tvar footer = o.footer != null ? o.footer : _END;\n\t\tvar out = [header];\n\t\tvar r = decode_range(ws['!ref']);\n\t\to.dense = Array.isArray(ws);\n\t\tout.push(make_html_preamble(ws, r, o));\n\t\tfor(var R = r.s.r; R <= r.e.r; ++R) out.push(make_html_row(ws, r, R, o));\n\t\tout.push(\"
\" + footer);\n\t\treturn out.join(\"\");\n\t}\n\n\treturn {\n\t\tto_workbook: html_to_book,\n\t\tto_sheet: html_to_sheet,\n\t\t_row: make_html_row,\n\t\tBEGIN: _BEGIN,\n\t\tEND: _END,\n\t\t_preamble: make_html_preamble,\n\t\tfrom_sheet: sheet_to_html\n\t};\n})();\n\nfunction parse_dom_table(table, _opts) {\n\tvar opts = _opts || {};\n\tif(DENSE != null) opts.dense = DENSE;\n\tvar ws = opts.dense ? ([]) : ({});\n\tvar rows = table.getElementsByTagName('tr');\n\tvar sheetRows = opts.sheetRows || 10000000;\n\tvar range = {s:{r:0,c:0},e:{r:0,c:0}};\n\tvar merges = [], midx = 0;\n\tvar rowinfo = [];\n\tvar _R = 0, R = 0, _C, C, RS, CS;\n\tfor(; _R < rows.length && R < sheetRows; ++_R) {\n\t\tvar row = rows[_R];\n\t\tif (is_dom_element_hidden(row)) {\n\t\t\tif (opts.display) continue;\n\t\t\trowinfo[R] = {hidden: true};\n\t\t}\n\t\tvar elts = (row.children);\n\t\tfor(_C = C = 0; _C < elts.length; ++_C) {\n\t\t\tvar elt = elts[_C];\n\t\t\tif (opts.display && is_dom_element_hidden(elt)) continue;\n\t\t\tvar v = htmldecode(elt.innerHTML);\n\t\t\tfor(midx = 0; midx < merges.length; ++midx) {\n\t\t\t\tvar m = merges[midx];\n\t\t\t\tif(m.s.c == C && m.s.r <= R && R <= m.e.r) { C = m.e.c+1; midx = -1; }\n\t\t\t}\n\t\t\t/* TODO: figure out how to extract nonstandard mso- style */\n\t\t\tCS = +elt.getAttribute(\"colspan\") || 1;\n\t\t\tif((RS = +elt.getAttribute(\"rowspan\"))>0 || CS>1) merges.push({s:{r:R,c:C},e:{r:R + (RS||1) - 1, c:C + CS - 1}});\n\t\t\tvar o = {t:'s', v:v};\n\t\t\tvar _t = elt.getAttribute(\"t\") || \"\";\n\t\t\tif(v != null) {\n\t\t\t\tif(v.length == 0) o.t = _t || 'z';\n\t\t\t\telse if(opts.raw || v.trim().length == 0 || _t == \"s\"){}\n\t\t\t\telse if(v === 'TRUE') o = {t:'b', v:true};\n\t\t\t\telse if(v === 'FALSE') o = {t:'b', v:false};\n\t\t\t\telse if(!isNaN(fuzzynum(v))) o = {t:'n', v:fuzzynum(v)};\n\t\t\t\telse if(!isNaN(fuzzydate(v).getDate())) {\n\t\t\t\t\to = ({t:'d', v:parseDate(v)});\n\t\t\t\t\tif(!opts.cellDates) o = ({t:'n', v:datenum(o.v)});\n\t\t\t\t\to.z = opts.dateNF || SSF._table[14];\n\t\t\t\t}\n\t\t\t}\n\t\t\tif(opts.dense) { if(!ws[R]) ws[R] = []; ws[R][C] = o; }\n\t\t\telse ws[encode_cell({c:C, r:R})] = o;\n\t\t\tif(range.e.c < C) range.e.c = C;\n\t\t\tC += CS;\n\t\t}\n\t\t++R;\n\t}\n\tif(merges.length) ws['!merges'] = merges;\n\tif(rowinfo.length) ws['!rows'] = rowinfo;\n\trange.e.r = R - 1;\n\tws['!ref'] = encode_range(range);\n\tif(R >= sheetRows) ws['!fullref'] = encode_range((range.e.r = rows.length-_R+R-1,range)); // We can count the real number of rows to parse but we don't to improve the performance\n\treturn ws;\n}\n\nfunction table_to_book(table, opts) {\n\treturn sheet_to_workbook(parse_dom_table(table, opts), opts);\n}\n\nfunction is_dom_element_hidden(element) {\n\tvar display = '';\n\tvar get_computed_style = get_get_computed_style_function(element);\n\tif(get_computed_style) display = get_computed_style(element).getPropertyValue('display');\n\tif(!display) display = element.style.display; // Fallback for cases when getComputedStyle is not available (e.g. an old browser or some Node.js environments) or doesn't work (e.g. if the element is not inserted to a document)\n\treturn display === 'none';\n}\n\n/* global getComputedStyle */\nfunction get_get_computed_style_function(element) {\n\t// The proper getComputedStyle implementation is the one defined in the element window\n\tif(element.ownerDocument.defaultView && typeof element.ownerDocument.defaultView.getComputedStyle === 'function') return element.ownerDocument.defaultView.getComputedStyle;\n\t// If it is not available, try to get one from the global namespace\n\tif(typeof getComputedStyle === 'function') return getComputedStyle;\n\treturn null;\n}\n/* OpenDocument */\nvar parse_content_xml = (function() {\n\n\tvar parse_text_p = function(text) {\n\t\t/* 6.1.2 White Space Characters */\n\t\tvar fixed = text\n\t\t\t.replace(/[\\t\\r\\n]/g, \" \").trim().replace(/ +/g, \" \")\n\t\t\t.replace(//g,\" \")\n\t\t\t.replace(//g, function($$,$1) { return Array(parseInt($1,10)+1).join(\" \"); })\n\t\t\t.replace(/]*\\/>/g,\"\\t\")\n\t\t\t.replace(//g,\"\\n\");\n\t\tvar v = unescapexml(fixed.replace(/<[^>]*>/g,\"\"));\n\n\t\treturn [v];\n\t};\n\n\tvar number_formats = {\n\t\t/* ods name: [short ssf fmt, long ssf fmt] */\n\t\tday: [\"d\", \"dd\"],\n\t\tmonth: [\"m\", \"mm\"],\n\t\tyear: [\"y\", \"yy\"],\n\t\thours: [\"h\", \"hh\"],\n\t\tminutes: [\"m\", \"mm\"],\n\t\tseconds: [\"s\", \"ss\"],\n\t\t\"am-pm\": [\"A/P\", \"AM/PM\"],\n\t\t\"day-of-week\": [\"ddd\", \"dddd\"],\n\t\tera: [\"e\", \"ee\"],\n\t\t/* there is no native representation of LO \"Q\" format */\n\t\tquarter: [\"\\\\Qm\", \"m\\\\\\\"th quarter\\\"\"]\n\t};\n\n\treturn function pcx(d, _opts) {\n\t\tvar opts = _opts || {};\n\t\tif(DENSE != null && opts.dense == null) opts.dense = DENSE;\n\t\tvar str = xlml_normalize(d);\n\t\tvar state = [], tmp;\n\t\tvar tag;\n\t\tvar NFtag = {name:\"\"}, NF = \"\", pidx = 0;\n\t\tvar sheetag;\n\t\tvar rowtag;\n\t\tvar Sheets = {}, SheetNames = [];\n\t\tvar ws = opts.dense ? ([]) : ({});\n\t\tvar Rn, q;\n\t\tvar ctag = ({value:\"\"});\n\t\tvar textp = \"\", textpidx = 0, textptag;\n\t\tvar textR = [];\n\t\tvar R = -1, C = -1, range = {s: {r:1000000,c:10000000}, e: {r:0, c:0}};\n\t\tvar row_ol = 0;\n\t\tvar number_format_map = {};\n\t\tvar merges = [], mrange = {}, mR = 0, mC = 0;\n\t\tvar rowinfo = [], rowpeat = 1, colpeat = 1;\n\t\tvar arrayf = [];\n\t\tvar WB = {Names:[]};\n\t\tvar atag = ({});\n\t\tvar _Ref = [\"\", \"\"];\n\t\tvar comments = [], comment = ({});\n\t\tvar creator = \"\", creatoridx = 0;\n\t\tvar isstub = false, intable = false;\n\t\tvar i = 0;\n\t\txlmlregex.lastIndex = 0;\n\t\tstr = str.replace(//mg,\"\").replace(//gm,\"\");\n\t\twhile((Rn = xlmlregex.exec(str))) switch((Rn[3]=Rn[3].replace(/_.*$/,\"\"))) {\n\n\t\t\tcase 'table': case '工作表': // 9.1.2 \n\t\t\t\tif(Rn[1]==='/') {\n\t\t\t\t\tif(range.e.c >= range.s.c && range.e.r >= range.s.r) ws['!ref'] = encode_range(range);\n\t\t\t\t\tif(opts.sheetRows > 0 && opts.sheetRows <= range.e.r) {\n\t\t\t\t\t\tws['!fullref'] = ws['!ref'];\n\t\t\t\t\t\trange.e.r = opts.sheetRows - 1;\n\t\t\t\t\t\tws['!ref'] = encode_range(range);\n\t\t\t\t\t}\n\t\t\t\t\tif(merges.length) ws['!merges'] = merges;\n\t\t\t\t\tif(rowinfo.length) ws[\"!rows\"] = rowinfo;\n\t\t\t\t\tsheetag.name = sheetag['名称'] || sheetag.name;\n\t\t\t\t\tif(typeof JSON !== 'undefined') JSON.stringify(sheetag);\n\t\t\t\t\tSheetNames.push(sheetag.name);\n\t\t\t\t\tSheets[sheetag.name] = ws;\n\t\t\t\t\tintable = false;\n\t\t\t\t}\n\t\t\t\telse if(Rn[0].charAt(Rn[0].length-2) !== '/') {\n\t\t\t\t\tsheetag = parsexmltag(Rn[0], false);\n\t\t\t\t\tR = C = -1;\n\t\t\t\t\trange.s.r = range.s.c = 10000000; range.e.r = range.e.c = 0;\n\t\t\t\t\tws = opts.dense ? ([]) : ({}); merges = [];\n\t\t\t\t\trowinfo = [];\n\t\t\t\t\tintable = true;\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase 'table-row-group': // 9.1.9 \n\t\t\t\tif(Rn[1] === \"/\") --row_ol; else ++row_ol;\n\t\t\t\tbreak;\n\t\t\tcase 'table-row': case '行': // 9.1.3 \n\t\t\t\tif(Rn[1] === '/') { R+=rowpeat; rowpeat = 1; break; }\n\t\t\t\trowtag = parsexmltag(Rn[0], false);\n\t\t\t\tif(rowtag['行号']) R = rowtag['行号'] - 1; else if(R == -1) R = 0;\n\t\t\t\trowpeat = +rowtag['number-rows-repeated'] || 1;\n\t\t\t\t/* TODO: remove magic */\n\t\t\t\tif(rowpeat < 10) for(i = 0; i < rowpeat; ++i) if(row_ol > 0) rowinfo[R + i] = {level: row_ol};\n\t\t\t\tC = -1; break;\n\t\t\tcase 'covered-table-cell': // 9.1.5 \n\t\t\t\tif(Rn[1] !== '/') ++C;\n\t\t\t\tif(opts.sheetStubs) {\n\t\t\t\t\tif(opts.dense) { if(!ws[R]) ws[R] = []; ws[R][C] = {t:'z'}; }\n\t\t\t\t\telse ws[encode_cell({r:R,c:C})] = {t:'z'};\n\t\t\t\t}\n\t\t\t\ttextp = \"\"; textR = [];\n\t\t\t\tbreak; /* stub */\n\t\t\tcase 'table-cell': case '数据':\n\t\t\t\tif(Rn[0].charAt(Rn[0].length-2) === '/') {\n\t\t\t\t\t++C;\n\t\t\t\t\tctag = parsexmltag(Rn[0], false);\n\t\t\t\t\tcolpeat = parseInt(ctag['number-columns-repeated']||\"1\", 10);\n\t\t\t\t\tq = ({t:'z', v:null});\n\t\t\t\t\tif(ctag.formula && opts.cellFormula != false) q.f = ods_to_csf_formula(unescapexml(ctag.formula));\n\t\t\t\t\tif((ctag['数据类型'] || ctag['value-type']) == \"string\") {\n\t\t\t\t\t\tq.t = \"s\"; q.v = unescapexml(ctag['string-value'] || \"\");\n\t\t\t\t\t\tif(opts.dense) {\n\t\t\t\t\t\t\tif(!ws[R]) ws[R] = [];\n\t\t\t\t\t\t\tws[R][C] = q;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tws[encode_cell({r:R,c:C})] = q;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tC+= colpeat-1;\n\t\t\t\t} else if(Rn[1]!=='/') {\n\t\t\t\t\t++C;\n\t\t\t\t\tcolpeat = 1;\n\t\t\t\t\tvar rptR = rowpeat ? R + rowpeat - 1 : R;\n\t\t\t\t\tif(C > range.e.c) range.e.c = C;\n\t\t\t\t\tif(C < range.s.c) range.s.c = C;\n\t\t\t\t\tif(R < range.s.r) range.s.r = R;\n\t\t\t\t\tif(rptR > range.e.r) range.e.r = rptR;\n\t\t\t\t\tctag = parsexmltag(Rn[0], false);\n\t\t\t\t\tcomments = []; comment = ({});\n\t\t\t\t\tq = ({t:ctag['数据类型'] || ctag['value-type'], v:null});\n\t\t\t\t\tif(opts.cellFormula) {\n\t\t\t\t\t\tif(ctag.formula) ctag.formula = unescapexml(ctag.formula);\n\t\t\t\t\t\tif(ctag['number-matrix-columns-spanned'] && ctag['number-matrix-rows-spanned']) {\n\t\t\t\t\t\t\tmR = parseInt(ctag['number-matrix-rows-spanned'],10) || 0;\n\t\t\t\t\t\t\tmC = parseInt(ctag['number-matrix-columns-spanned'],10) || 0;\n\t\t\t\t\t\t\tmrange = {s: {r:R,c:C}, e:{r:R + mR-1,c:C + mC-1}};\n\t\t\t\t\t\t\tq.F = encode_range(mrange);\n\t\t\t\t\t\t\tarrayf.push([mrange, q.F]);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif(ctag.formula) q.f = ods_to_csf_formula(ctag.formula);\n\t\t\t\t\t\telse for(i = 0; i < arrayf.length; ++i)\n\t\t\t\t\t\t\tif(R >= arrayf[i][0].s.r && R <= arrayf[i][0].e.r)\n\t\t\t\t\t\t\t\tif(C >= arrayf[i][0].s.c && C <= arrayf[i][0].e.c)\n\t\t\t\t\t\t\t\t\tq.F = arrayf[i][1];\n\t\t\t\t\t}\n\t\t\t\t\tif(ctag['number-columns-spanned'] || ctag['number-rows-spanned']) {\n\t\t\t\t\t\tmR = parseInt(ctag['number-rows-spanned'],10) || 0;\n\t\t\t\t\t\tmC = parseInt(ctag['number-columns-spanned'],10) || 0;\n\t\t\t\t\t\tmrange = {s: {r:R,c:C}, e:{r:R + mR-1,c:C + mC-1}};\n\t\t\t\t\t\tmerges.push(mrange);\n\t\t\t\t\t}\n\n\t\t\t\t\t/* 19.675.2 table:number-columns-repeated */\n\t\t\t\t\tif(ctag['number-columns-repeated']) colpeat = parseInt(ctag['number-columns-repeated'], 10);\n\n\t\t\t\t\t/* 19.385 office:value-type */\n\t\t\t\t\tswitch(q.t) {\n\t\t\t\t\t\tcase 'boolean': q.t = 'b'; q.v = parsexmlbool(ctag['boolean-value']); break;\n\t\t\t\t\t\tcase 'float': q.t = 'n'; q.v = parseFloat(ctag.value); break;\n\t\t\t\t\t\tcase 'percentage': q.t = 'n'; q.v = parseFloat(ctag.value); break;\n\t\t\t\t\t\tcase 'currency': q.t = 'n'; q.v = parseFloat(ctag.value); break;\n\t\t\t\t\t\tcase 'date': q.t = 'd'; q.v = parseDate(ctag['date-value']);\n\t\t\t\t\t\t\tif(!opts.cellDates) { q.t = 'n'; q.v = datenum(q.v); }\n\t\t\t\t\t\t\tq.z = 'm/d/yy'; break;\n\t\t\t\t\t\tcase 'time': q.t = 'n'; q.v = parse_isodur(ctag['time-value'])/86400; break;\n\t\t\t\t\t\tcase 'number': q.t = 'n'; q.v = parseFloat(ctag['数据数值']); break;\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\tif(q.t === 'string' || q.t === 'text' || !q.t) {\n\t\t\t\t\t\t\t\tq.t = 's';\n\t\t\t\t\t\t\t\tif(ctag['string-value'] != null) { textp = unescapexml(ctag['string-value']); textR = []; }\n\t\t\t\t\t\t\t} else throw new Error('Unsupported value type ' + q.t);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tisstub = false;\n\t\t\t\t\tif(q.t === 's') {\n\t\t\t\t\t\tq.v = textp || '';\n\t\t\t\t\t\tif(textR.length) q.R = textR;\n\t\t\t\t\t\tisstub = textpidx == 0;\n\t\t\t\t\t}\n\t\t\t\t\tif(atag.Target) q.l = atag;\n\t\t\t\t\tif(comments.length > 0) { q.c = comments; comments = []; }\n\t\t\t\t\tif(textp && opts.cellText !== false) q.w = textp;\n\t\t\t\t\tif(!isstub || opts.sheetStubs) {\n\t\t\t\t\t\tif(!(opts.sheetRows && opts.sheetRows <= R)) {\n\t\t\t\t\t\t\tfor(var rpt = 0; rpt < rowpeat; ++rpt) {\n\t\t\t\t\t\t\t\tcolpeat = parseInt(ctag['number-columns-repeated']||\"1\", 10);\n\t\t\t\t\t\t\t\tif(opts.dense) {\n\t\t\t\t\t\t\t\t\tif(!ws[R + rpt]) ws[R + rpt] = [];\n\t\t\t\t\t\t\t\t\tws[R + rpt][C] = rpt == 0 ? q : dup(q);\n\t\t\t\t\t\t\t\t\twhile(--colpeat > 0) ws[R + rpt][C + colpeat] = dup(q);\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tws[encode_cell({r:R + rpt,c:C})] = q;\n\t\t\t\t\t\t\t\t\twhile(--colpeat > 0) ws[encode_cell({r:R + rpt,c:C + colpeat})] = dup(q);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif(range.e.c <= C) range.e.c = C;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tcolpeat = parseInt(ctag['number-columns-repeated']||\"1\", 10);\n\t\t\t\t\tC += colpeat-1; colpeat = 0;\n\t\t\t\t\tq = {};\n\t\t\t\t\ttextp = \"\"; textR = [];\n\t\t\t\t}\n\t\t\t\tatag = ({});\n\t\t\t\tbreak; // 9.1.4 \n\n\t\t\t/* pure state */\n\t\t\tcase 'document': // TODO: is the root for FODS\n\t\t\tcase 'document-content': case '电子表格文档': // 3.1.3.2 \n\t\t\tcase 'spreadsheet': case '主体': // 3.7 \n\t\t\tcase 'scripts': // 3.12 \n\t\t\tcase 'styles': // TODO \n\t\t\tcase 'font-face-decls': // 3.14 \n\t\t\t\tif(Rn[1]==='/'){if((tmp=state.pop())[0]!==Rn[3]) throw \"Bad state: \"+tmp;}\n\t\t\t\telse if(Rn[0].charAt(Rn[0].length-2) !== '/') state.push([Rn[3], true]);\n\t\t\t\tbreak;\n\n\t\t\tcase 'annotation': // 14.1 \n\t\t\t\tif(Rn[1]==='/'){\n\t\t\t\t\tif((tmp=state.pop())[0]!==Rn[3]) throw \"Bad state: \"+tmp;\n\t\t\t\t\tcomment.t = textp;\n\t\t\t\t\tif(textR.length) comment.R = textR;\n\t\t\t\t\tcomment.a = creator;\n\t\t\t\t\tcomments.push(comment);\n\t\t\t\t}\n\t\t\t\telse if(Rn[0].charAt(Rn[0].length-2) !== '/') {state.push([Rn[3], false]);}\n\t\t\t\tcreator = \"\"; creatoridx = 0;\n\t\t\t\ttextp = \"\"; textpidx = 0; textR = [];\n\t\t\t\tbreak;\n\n\t\t\tcase 'creator': // 4.3.2.7 \n\t\t\t\tif(Rn[1]==='/') { creator = str.slice(creatoridx,Rn.index); }\n\t\t\t\telse creatoridx = Rn.index + Rn[0].length;\n\t\t\t\tbreak;\n\n\t\t\t/* ignore state */\n\t\t\tcase 'meta': case '元数据': // TODO: FODS/UOF\n\t\t\tcase 'settings': // TODO: \n\t\t\tcase 'config-item-set': // TODO: \n\t\t\tcase 'config-item-map-indexed': // TODO: \n\t\t\tcase 'config-item-map-entry': // TODO: \n\t\t\tcase 'config-item-map-named': // TODO: \n\t\t\tcase 'shapes': // 9.2.8 \n\t\t\tcase 'frame': // 10.4.2 \n\t\t\tcase 'text-box': // 10.4.3 \n\t\t\tcase 'image': // 10.4.4 \n\t\t\tcase 'data-pilot-tables': // 9.6.2 \n\t\t\tcase 'list-style': // 16.30 \n\t\t\tcase 'form': // 13.13 \n\t\t\tcase 'dde-links': // 9.8 \n\t\t\tcase 'event-listeners': // TODO\n\t\t\tcase 'chart': // TODO\n\t\t\t\tif(Rn[1]==='/'){if((tmp=state.pop())[0]!==Rn[3]) throw \"Bad state: \"+tmp;}\n\t\t\t\telse if(Rn[0].charAt(Rn[0].length-2) !== '/') state.push([Rn[3], false]);\n\t\t\t\ttextp = \"\"; textpidx = 0; textR = [];\n\t\t\t\tbreak;\n\n\t\t\tcase 'scientific-number': // TODO: \n\t\t\t\tbreak;\n\t\t\tcase 'currency-symbol': // TODO: \n\t\t\t\tbreak;\n\t\t\tcase 'currency-style': // TODO: \n\t\t\t\tbreak;\n\t\t\tcase 'number-style': // 16.27.2 \n\t\t\tcase 'percentage-style': // 16.27.9 \n\t\t\tcase 'date-style': // 16.27.10 \n\t\t\tcase 'time-style': // 16.27.18 \n\t\t\t\tif(Rn[1]==='/'){\n\t\t\t\t\tnumber_format_map[NFtag.name] = NF;\n\t\t\t\t\tif((tmp=state.pop())[0]!==Rn[3]) throw \"Bad state: \"+tmp;\n\t\t\t\t} else if(Rn[0].charAt(Rn[0].length-2) !== '/') {\n\t\t\t\t\tNF = \"\";\n\t\t\t\t\tNFtag = parsexmltag(Rn[0], false);\n\t\t\t\t\tstate.push([Rn[3], true]);\n\t\t\t\t} break;\n\n\t\t\tcase 'script': break; // 3.13 \n\t\t\tcase 'libraries': break; // TODO: \n\t\t\tcase 'automatic-styles': break; // 3.15.3 \n\t\t\tcase 'master-styles': break; // TODO: \n\n\t\t\tcase 'default-style': // TODO: \n\t\t\tcase 'page-layout': break; // TODO: \n\t\t\tcase 'style': // 16.2 \n\t\t\t\tbreak;\n\t\t\tcase 'map': break; // 16.3 \n\t\t\tcase 'font-face': break; // 16.21 \n\n\t\t\tcase 'paragraph-properties': break; // 17.6 \n\t\t\tcase 'table-properties': break; // 17.15 \n\t\t\tcase 'table-column-properties': break; // 17.16 \n\t\t\tcase 'table-row-properties': break; // 17.17 \n\t\t\tcase 'table-cell-properties': break; // 17.18 \n\n\t\t\tcase 'number': // 16.27.3 \n\t\t\t\tswitch(state[state.length-1][0]) {\n\t\t\t\t\tcase 'time-style':\n\t\t\t\t\tcase 'date-style':\n\t\t\t\t\t\ttag = parsexmltag(Rn[0], false);\n\t\t\t\t\t\tNF += number_formats[Rn[3]][tag.style==='long'?1:0]; break;\n\t\t\t\t} break;\n\n\t\t\tcase 'fraction': break; // TODO 16.27.6 \n\n\t\t\tcase 'day': // 16.27.11 \n\t\t\tcase 'month': // 16.27.12 \n\t\t\tcase 'year': // 16.27.13 \n\t\t\tcase 'era': // 16.27.14 \n\t\t\tcase 'day-of-week': // 16.27.15 \n\t\t\tcase 'week-of-year': // 16.27.16 \n\t\t\tcase 'quarter': // 16.27.17 \n\t\t\tcase 'hours': // 16.27.19 \n\t\t\tcase 'minutes': // 16.27.20 \n\t\t\tcase 'seconds': // 16.27.21 \n\t\t\tcase 'am-pm': // 16.27.22 \n\t\t\t\tswitch(state[state.length-1][0]) {\n\t\t\t\t\tcase 'time-style':\n\t\t\t\t\tcase 'date-style':\n\t\t\t\t\t\ttag = parsexmltag(Rn[0], false);\n\t\t\t\t\t\tNF += number_formats[Rn[3]][tag.style==='long'?1:0]; break;\n\t\t\t\t} break;\n\n\t\t\tcase 'boolean-style': break; // 16.27.23 \n\t\t\tcase 'boolean': break; // 16.27.24 \n\t\t\tcase 'text-style': break; // 16.27.25 \n\t\t\tcase 'text': // 16.27.26 \n\t\t\t\tif(Rn[0].slice(-2) === \"/>\") break;\n\t\t\t\telse if(Rn[1]===\"/\") switch(state[state.length-1][0]) {\n\t\t\t\t\tcase 'number-style':\n\t\t\t\t\tcase 'date-style':\n\t\t\t\t\tcase 'time-style':\n\t\t\t\t\t\tNF += str.slice(pidx, Rn.index);\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\telse pidx = Rn.index + Rn[0].length;\n\t\t\t\tbreak;\n\n\t\t\tcase 'named-range': // 9.4.12 \n\t\t\t\ttag = parsexmltag(Rn[0], false);\n\t\t\t\t_Ref = ods_to_csf_3D(tag['cell-range-address']);\n\t\t\t\tvar nrange = ({Name:tag.name, Ref:_Ref[0] + '!' + _Ref[1]});\n\t\t\t\tif(intable) nrange.Sheet = SheetNames.length;\n\t\t\t\tWB.Names.push(nrange);\n\t\t\t\tbreak;\n\n\t\t\tcase 'text-content': break; // 16.27.27 \n\t\t\tcase 'text-properties': break; // 16.27.27 \n\t\t\tcase 'embedded-text': break; // 16.27.4 \n\n\t\t\tcase 'body': case '电子表格': break; // 3.3 16.9.6 19.726.3\n\n\t\t\tcase 'forms': break; // 12.25.2 13.2\n\t\t\tcase 'table-column': break; // 9.1.6 \n\t\t\tcase 'table-header-rows': break; // 9.1.7 \n\t\t\tcase 'table-rows': break; // 9.1.12 \n\t\t\t/* TODO: outline levels */\n\t\t\tcase 'table-column-group': break; // 9.1.10 \n\t\t\tcase 'table-header-columns': break; // 9.1.11 \n\t\t\tcase 'table-columns': break; // 9.1.12 \n\n\t\t\tcase 'null-date': break; // 9.4.2 TODO: date1904\n\n\t\t\tcase 'graphic-properties': break; // 17.21 \n\t\t\tcase 'calculation-settings': break; // 9.4.1 \n\t\t\tcase 'named-expressions': break; // 9.4.11 \n\t\t\tcase 'label-range': break; // 9.4.9 \n\t\t\tcase 'label-ranges': break; // 9.4.10 \n\t\t\tcase 'named-expression': break; // 9.4.13 \n\t\t\tcase 'sort': break; // 9.4.19 \n\t\t\tcase 'sort-by': break; // 9.4.20 \n\t\t\tcase 'sort-groups': break; // 9.4.22 \n\n\t\t\tcase 'tab': break; // 6.1.4 \n\t\t\tcase 'line-break': break; // 6.1.5 \n\t\t\tcase 'span': break; // 6.1.7 \n\t\t\tcase 'p': case '文本串': // 5.1.3 \n\t\t\t\tif(Rn[1]==='/' && (!ctag || !ctag['string-value'])) {\n\t\t\t\t\tvar ptp = parse_text_p(str.slice(textpidx,Rn.index), textptag);\n\t\t\t\t\ttextp = (textp.length > 0 ? textp + \"\\n\" : \"\") + ptp[0];\n\t\t\t\t} else { textptag = parsexmltag(Rn[0], false); textpidx = Rn.index + Rn[0].length; }\n\t\t\t\tbreak; // \n\t\t\tcase 's': break; // \n\n\t\t\tcase 'database-range': // 9.4.15 \n\t\t\t\tif(Rn[1]==='/') break;\n\t\t\t\ttry {\n\t\t\t\t\t_Ref = ods_to_csf_3D(parsexmltag(Rn[0])['target-range-address']);\n\t\t\t\t\tSheets[_Ref[0]]['!autofilter'] = { ref:_Ref[1] };\n\t\t\t\t} catch(e) {/* empty */}\n\t\t\t\tbreak;\n\n\t\t\tcase 'date': break; // <*:date>\n\n\t\t\tcase 'object': break; // 10.4.6.2 \n\t\t\tcase 'title': case '标题': break; // <*:title> OR \n\t\t\tcase 'desc': break; // <*:desc>\n\t\t\tcase 'binary-data': break; // 10.4.5 TODO: b64 blob\n\n\t\t\t/* 9.2 Advanced Tables */\n\t\t\tcase 'table-source': break; // 9.2.6\n\t\t\tcase 'scenario': break; // 9.2.6\n\n\t\t\tcase 'iteration': break; // 9.4.3 \n\t\t\tcase 'content-validations': break; // 9.4.4 \n\t\t\tcase 'filter': break; // 9.5.2 \n\t\t\tcase 'filter-and': break; // 9.5.3 \n\t\t\tcase 'filter-or': break; // 9.5.4 \n\t\t\tcase 'filter-condition': break; // 9.5.5 \n\n\t\t\tcase 'list-level-style-bullet': break; // 16.31 \n\t\t\tcase 'page-count': break; // TODO \n\t\t\tcase 'time': break; // TODO \n\n\t\t\t/* 9.3 Advanced Table Cells */\n\t\t\tcase 'cell-range-source': break; // 9.3.1 \n\t\t\tcase 'property': break; // 13.8 \n\n\t\t\tcase 'a': // 6.1.8 hyperlink\n\t\t\t\tif(Rn[1]!== '/') {\n\t\t\t\t\tatag = parsexmltag(Rn[0], false);\n\t\t\t\t\tif(!atag.href) break;\n\t\t\t\t\tatag.Target = atag.href; delete atag.href;\n\t\t\t\t\tif(atag.Target.charAt(0) == \"#\" && atag.Target.indexOf(\".\") > -1) {\n\t\t\t\t\t\t_Ref = ods_to_csf_3D(atag.Target.slice(1));\n\t\t\t\t\t\tatag.Target = \"#\" + _Ref[0] + \"!\" + _Ref[1];\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\t/* non-standard */\n\t\t\tcase 'table-protection': break;\n\t\t\tcase 'data-pilot-grand-total': break; // ';\n\treturn function wso() {\n\t\treturn XML_HEADER + payload;\n\t};\n})();\nvar write_content_ods = (function() {\n\t/* 6.1.2 White Space Characters */\n\tvar write_text_p = function(text) {\n\t\treturn escapexml(text)\n\t\t\t.replace(/ +/g, function($$){return '';})\n\t\t\t.replace(/\\t/g, \"\")\n\t\t\t.replace(/\\n/g, \"\")\n\t\t\t.replace(/^ /, \"\").replace(/ $/, \"\");\n\t};\n\n\tvar null_cell_xml = ' \\n';\n\tvar covered_cell_xml = ' \\n';\n\tvar write_ws = function(ws, wb, i) {\n\t\t/* Section 9 Tables */\n\t\tvar o = [];\n\t\to.push(' \\n');\n\t\tvar R=0,C=0, range = decode_range(ws['!ref']);\n\t\tvar marr = ws['!merges'] || [], mi = 0;\n\t\tvar dense = Array.isArray(ws);\n\t\tfor(R = 0; R < range.s.r; ++R) o.push(' \\n');\n\t\tfor(; R <= range.e.r; ++R) {\n\t\t\to.push(' \\n');\n\t\t\tfor(C=0; C < range.s.c; ++C) o.push(null_cell_xml);\n\t\t\tfor(; C <= range.e.c; ++C) {\n\t\t\t\tvar skip = false, ct = {}, textp = \"\";\n\t\t\t\tfor(mi = 0; mi != marr.length; ++mi) {\n\t\t\t\t\tif(marr[mi].s.c > C) continue;\n\t\t\t\t\tif(marr[mi].s.r > R) continue;\n\t\t\t\t\tif(marr[mi].e.c < C) continue;\n\t\t\t\t\tif(marr[mi].e.r < R) continue;\n\t\t\t\t\tif(marr[mi].s.c != C || marr[mi].s.r != R) skip = true;\n\t\t\t\t\tct['table:number-columns-spanned'] = (marr[mi].e.c - marr[mi].s.c + 1);\n\t\t\t\t\tct['table:number-rows-spanned'] = (marr[mi].e.r - marr[mi].s.r + 1);\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tif(skip) { o.push(covered_cell_xml); continue; }\n\t\t\t\tvar ref = encode_cell({r:R, c:C}), cell = dense ? (ws[R]||[])[C]: ws[ref];\n\t\t\t\tif(cell && cell.f) {\n\t\t\t\t\tct['table:formula'] = escapexml(csf_to_ods_formula(cell.f));\n\t\t\t\t\tif(cell.F) {\n\t\t\t\t\t\tif(cell.F.slice(0, ref.length) == ref) {\n\t\t\t\t\t\t\tvar _Fref = decode_range(cell.F);\n\t\t\t\t\t\t\tct['table:number-matrix-columns-spanned'] = (_Fref.e.c - _Fref.s.c + 1);\n\t\t\t\t\t\t\tct['table:number-matrix-rows-spanned'] = (_Fref.e.r - _Fref.s.r + 1);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif(!cell) { o.push(null_cell_xml); continue; }\n\t\t\t\tswitch(cell.t) {\n\t\t\t\t\tcase 'b':\n\t\t\t\t\t\ttextp = (cell.v ? 'TRUE' : 'FALSE');\n\t\t\t\t\t\tct['office:value-type'] = \"boolean\";\n\t\t\t\t\t\tct['office:boolean-value'] = (cell.v ? 'true' : 'false');\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'n':\n\t\t\t\t\t\ttextp = (cell.w||String(cell.v||0));\n\t\t\t\t\t\tct['office:value-type'] = \"float\";\n\t\t\t\t\t\tct['office:value'] = (cell.v||0);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 's': case 'str':\n\t\t\t\t\t\ttextp = cell.v;\n\t\t\t\t\t\tct['office:value-type'] = \"string\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'd':\n\t\t\t\t\t\ttextp = (cell.w||(parseDate(cell.v).toISOString()));\n\t\t\t\t\t\tct['office:value-type'] = \"date\";\n\t\t\t\t\t\tct['office:date-value'] = (parseDate(cell.v).toISOString());\n\t\t\t\t\t\tct['table:style-name'] = \"ce1\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t//case 'e':\n\t\t\t\t\tdefault: o.push(null_cell_xml); continue;\n\t\t\t\t}\n\t\t\t\tvar text_p = write_text_p(textp);\n\t\t\t\tif(cell.l && cell.l.Target) {\n\t\t\t\t\tvar _tgt = cell.l.Target; _tgt = _tgt.charAt(0) == \"#\" ? \"#\" + csf_to_ods_3D(_tgt.slice(1)) : _tgt;\n\t\t\t\t\ttext_p = writextag('text:a', text_p, {'xlink:href': _tgt});\n\t\t\t\t}\n\t\t\t\to.push(' ' + writextag('table:table-cell', writextag('text:p', text_p, {}), ct) + '\\n');\n\t\t\t}\n\t\t\to.push(' \\n');\n\t\t}\n\t\to.push(' \\n');\n\t\treturn o.join(\"\");\n\t};\n\n\tvar write_automatic_styles_ods = function(o) {\n\t\to.push(' \\n');\n\t\to.push(' \\n');\n\t\to.push(' \\n');\n\t\to.push(' /\\n');\n\t\to.push(' \\n');\n\t\to.push(' /\\n');\n\t\to.push(' \\n');\n\t\to.push(' \\n');\n\t\to.push(' \\n');\n\t\to.push(' \\n');\n\t};\n\n\treturn function wcx(wb, opts) {\n\t\tvar o = [XML_HEADER];\n\t\t/* 3.1.3.2 */\n\t\tvar attr = wxt_helper({\n\t\t\t'xmlns:office': \"urn:oasis:names:tc:opendocument:xmlns:office:1.0\",\n\t\t\t'xmlns:table': \"urn:oasis:names:tc:opendocument:xmlns:table:1.0\",\n\t\t\t'xmlns:style': \"urn:oasis:names:tc:opendocument:xmlns:style:1.0\",\n\t\t\t'xmlns:text': \"urn:oasis:names:tc:opendocument:xmlns:text:1.0\",\n\t\t\t'xmlns:draw': \"urn:oasis:names:tc:opendocument:xmlns:drawing:1.0\",\n\t\t\t'xmlns:fo': \"urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0\",\n\t\t\t'xmlns:xlink': \"http://www.w3.org/1999/xlink\",\n\t\t\t'xmlns:dc': \"http://purl.org/dc/elements/1.1/\",\n\t\t\t'xmlns:meta': \"urn:oasis:names:tc:opendocument:xmlns:meta:1.0\",\n\t\t\t'xmlns:number': \"urn:oasis:names:tc:opendocument:xmlns:datastyle:1.0\",\n\t\t\t'xmlns:presentation': \"urn:oasis:names:tc:opendocument:xmlns:presentation:1.0\",\n\t\t\t'xmlns:svg': \"urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0\",\n\t\t\t'xmlns:chart': \"urn:oasis:names:tc:opendocument:xmlns:chart:1.0\",\n\t\t\t'xmlns:dr3d': \"urn:oasis:names:tc:opendocument:xmlns:dr3d:1.0\",\n\t\t\t'xmlns:math': \"http://www.w3.org/1998/Math/MathML\",\n\t\t\t'xmlns:form': \"urn:oasis:names:tc:opendocument:xmlns:form:1.0\",\n\t\t\t'xmlns:script': \"urn:oasis:names:tc:opendocument:xmlns:script:1.0\",\n\t\t\t'xmlns:ooo': \"http://openoffice.org/2004/office\",\n\t\t\t'xmlns:ooow': \"http://openoffice.org/2004/writer\",\n\t\t\t'xmlns:oooc': \"http://openoffice.org/2004/calc\",\n\t\t\t'xmlns:dom': \"http://www.w3.org/2001/xml-events\",\n\t\t\t'xmlns:xforms': \"http://www.w3.org/2002/xforms\",\n\t\t\t'xmlns:xsd': \"http://www.w3.org/2001/XMLSchema\",\n\t\t\t'xmlns:xsi': \"http://www.w3.org/2001/XMLSchema-instance\",\n\t\t\t'xmlns:sheet': \"urn:oasis:names:tc:opendocument:sh33tjs:1.0\",\n\t\t\t'xmlns:rpt': \"http://openoffice.org/2005/report\",\n\t\t\t'xmlns:of': \"urn:oasis:names:tc:opendocument:xmlns:of:1.2\",\n\t\t\t'xmlns:xhtml': \"http://www.w3.org/1999/xhtml\",\n\t\t\t'xmlns:grddl': \"http://www.w3.org/2003/g/data-view#\",\n\t\t\t'xmlns:tableooo': \"http://openoffice.org/2009/table\",\n\t\t\t'xmlns:drawooo': \"http://openoffice.org/2010/draw\",\n\t\t\t'xmlns:calcext': \"urn:org:documentfoundation:names:experimental:calc:xmlns:calcext:1.0\",\n\t\t\t'xmlns:loext': \"urn:org:documentfoundation:names:experimental:office:xmlns:loext:1.0\",\n\t\t\t'xmlns:field': \"urn:openoffice:names:experimental:ooo-ms-interop:xmlns:field:1.0\",\n\t\t\t'xmlns:formx': \"urn:openoffice:names:experimental:ooxml-odf-interop:xmlns:form:1.0\",\n\t\t\t'xmlns:css3t': \"http://www.w3.org/TR/css3-text/\",\n\t\t\t'office:version': \"1.2\"\n\t\t});\n\n\t\tvar fods = wxt_helper({\n\t\t\t'xmlns:config': \"urn:oasis:names:tc:opendocument:xmlns:config:1.0\",\n\t\t\t'office:mimetype': \"application/vnd.oasis.opendocument.spreadsheet\"\n\t\t});\n\n\t\tif(opts.bookType == \"fods\") o.push('\\n');\n\t\telse o.push('\\n');\n\t\twrite_automatic_styles_ods(o);\n\t\to.push(' \\n');\n\t\to.push(' \\n');\n\t\tfor(var i = 0; i != wb.SheetNames.length; ++i) o.push(write_ws(wb.Sheets[wb.SheetNames[i]], wb, i, opts));\n\t\to.push(' \\n');\n\t\to.push(' \\n');\n\t\tif(opts.bookType == \"fods\") o.push('');\n\t\telse o.push('');\n\t\treturn o.join(\"\");\n\t};\n})();\n\nfunction write_ods(wb, opts) {\n\tif(opts.bookType == \"fods\") return write_content_ods(wb, opts);\n\nvar zip = new jszip();\n\tvar f = \"\";\n\n\tvar manifest = [];\n\tvar rdf = [];\n\n\t/* Part 3 Section 3.3 MIME Media Type */\n\tf = \"mimetype\";\n\tzip.file(f, \"application/vnd.oasis.opendocument.spreadsheet\");\n\n\t/* Part 1 Section 2.2 Documents */\n\tf = \"content.xml\";\n\tzip.file(f, write_content_ods(wb, opts));\n\tmanifest.push([f, \"text/xml\"]);\n\trdf.push([f, \"ContentFile\"]);\n\n\t/* TODO: these are hard-coded styles to satiate excel */\n\tf = \"styles.xml\";\n\tzip.file(f, write_styles_ods(wb, opts));\n\tmanifest.push([f, \"text/xml\"]);\n\trdf.push([f, \"StylesFile\"]);\n\n\t/* TODO: this is hard-coded to satiate excel */\n\tf = \"meta.xml\";\n\tzip.file(f, write_meta_ods());\n\tmanifest.push([f, \"text/xml\"]);\n\trdf.push([f, \"MetadataFile\"]);\n\n\t/* Part 3 Section 6 Metadata Manifest File */\n\tf = \"manifest.rdf\";\n\tzip.file(f, write_rdf(rdf/*, opts*/));\n\tmanifest.push([f, \"application/rdf+xml\"]);\n\n\t/* Part 3 Section 4 Manifest File */\n\tf = \"META-INF/manifest.xml\";\n\tzip.file(f, write_manifest(manifest/*, opts*/));\n\n\treturn zip;\n}\n\nfunction write_sheet_index(wb, sheet) {\n\tif(!sheet) return 0;\n\tvar idx = wb.SheetNames.indexOf(sheet);\n\tif(idx == -1) throw new Error(\"Sheet not found: \" + sheet);\n\treturn idx;\n}\n\nfunction write_obj_str(factory) {\n\treturn function write_str(wb, o) {\n\t\tvar idx = write_sheet_index(wb, o.sheet);\n\t\treturn factory.from_sheet(wb.Sheets[wb.SheetNames[idx]], o, wb);\n\t};\n}\n\nvar write_htm_str = write_obj_str(HTML_);\nvar write_csv_str = write_obj_str({from_sheet:sheet_to_csv});\nvar write_slk_str = write_obj_str(SYLK);\nvar write_dif_str = write_obj_str(DIF);\nvar write_prn_str = write_obj_str(PRN);\nvar write_rtf_str = write_obj_str(RTF);\nvar write_txt_str = write_obj_str({from_sheet:sheet_to_txt});\nvar write_dbf_buf = write_obj_str(DBF);\nvar write_eth_str = write_obj_str(ETH);\n\nfunction fix_opts_func(defaults) {\n\treturn function fix_opts(opts) {\n\t\tfor(var i = 0; i != defaults.length; ++i) {\n\t\t\tvar d = defaults[i];\n\t\t\tif(opts[d[0]] === undefined) opts[d[0]] = d[1];\n\t\t\tif(d[2] === 'n') opts[d[0]] = Number(opts[d[0]]);\n\t\t}\n\t};\n}\n\nvar fix_read_opts = fix_opts_func([\n\t['cellNF', false], /* emit cell number format string as .z */\n\t['cellHTML', true], /* emit html string as .h */\n\t['cellFormula', true], /* emit formulae as .f */\n\t['cellStyles', false], /* emits style/theme as .s */\n\t['cellText', true], /* emit formatted text as .w */\n\t['cellDates', false], /* emit date cells with type `d` */\n\n\t['sheetStubs', false], /* emit empty cells */\n\t['sheetRows', 0, 'n'], /* read n rows (0 = read all rows) */\n\n\t['bookDeps', false], /* parse calculation chains */\n\t['bookSheets', false], /* only try to get sheet names (no Sheets) */\n\t['bookProps', false], /* only try to get properties (no Sheets) */\n\t['bookFiles', false], /* include raw file structure (keys, files, cfb) */\n\t['bookVBA', false], /* include vba raw data (vbaraw) */\n\n\t['password',''], /* password */\n\t['WTF', false] /* WTF mode (throws errors) */\n]);\n\n\nvar fix_write_opts = fix_opts_func([\n\t['cellDates', false], /* write date cells with type `d` */\n\n\t['bookSST', false], /* Generate Shared String Table */\n\n\t['bookType', 'xlsx'], /* Type of workbook (xlsx/m/b) */\n\n\t['compression', false], /* Use file compression */\n\n\t['WTF', false] /* WTF mode (throws errors) */\n]);\nfunction get_sheet_type(n) {\n\tif(RELS.WS.indexOf(n) > -1) return \"sheet\";\n\tif(RELS.CS && n == RELS.CS) return \"chart\";\n\tif(RELS.DS && n == RELS.DS) return \"dialog\";\n\tif(RELS.MS && n == RELS.MS) return \"macro\";\n\treturn (n && n.length) ? n : \"sheet\";\n}\nfunction safe_parse_wbrels(wbrels, sheets) {\n\tif(!wbrels) return 0;\n\ttry {\n\t\twbrels = sheets.map(function pwbr(w) { if(!w.id) w.id = w.strRelID; return [w.name, wbrels['!id'][w.id].Target, get_sheet_type(wbrels['!id'][w.id].Type)]; });\n\t} catch(e) { return null; }\n\treturn !wbrels || wbrels.length === 0 ? null : wbrels;\n}\n\nfunction safe_parse_sheet(zip, path, relsPath, sheet, idx, sheetRels, sheets, stype, opts, wb, themes, styles) {\n\ttry {\n\t\tsheetRels[sheet]=parse_rels(getzipstr(zip, relsPath, true), path);\n\t\tvar data = getzipdata(zip, path);\n\t\tvar _ws;\n\t\tswitch(stype) {\n\t\t\tcase 'sheet': _ws = parse_ws(data, path, idx, opts, sheetRels[sheet], wb, themes, styles); break;\n\t\t\tcase 'chart': _ws = parse_cs(data, path, idx, opts, sheetRels[sheet], wb, themes, styles);\n\t\t\t\tif(!_ws || !_ws['!chart']) break;\n\t\t\t\tvar dfile = resolve_path(_ws['!chart'].Target, path);\n\t\t\t\tvar drelsp = get_rels_path(dfile);\n\t\t\t\tvar draw = parse_drawing(getzipstr(zip, dfile, true), parse_rels(getzipstr(zip, drelsp, true), dfile));\n\t\t\t\tvar chartp = resolve_path(draw, dfile);\n\t\t\t\tvar crelsp = get_rels_path(chartp);\n\t\t\t\t_ws = parse_chart(getzipstr(zip, chartp, true), chartp, opts, parse_rels(getzipstr(zip, crelsp, true), chartp), wb, _ws);\n\t\t\t\tbreak;\n\t\t\tcase 'macro': _ws = parse_ms(data, path, idx, opts, sheetRels[sheet], wb, themes, styles); break;\n\t\t\tcase 'dialog': _ws = parse_ds(data, path, idx, opts, sheetRels[sheet], wb, themes, styles); break;\n\t\t}\n\t\tsheets[sheet] = _ws;\n\t} catch(e) { if(opts.WTF) throw e; }\n}\n\nfunction strip_front_slash(x) { return x.charAt(0) == '/' ? x.slice(1) : x; }\n\nfunction parse_zip(zip, opts) {\n\tmake_ssf(SSF);\n\topts = opts || {};\n\tfix_read_opts(opts);\n\n\t/* OpenDocument Part 3 Section 2.2.1 OpenDocument Package */\n\tif(safegetzipfile(zip, 'META-INF/manifest.xml')) return parse_ods(zip, opts);\n\t/* UOC */\n\tif(safegetzipfile(zip, 'objectdata.xml')) return parse_ods(zip, opts);\n\t/* Numbers */\n\tif(safegetzipfile(zip, 'Index/Document.iwa')) throw new Error('Unsupported NUMBERS file');\n\n\tvar entries = zipentries(zip);\n\tvar dir = parse_ct((getzipstr(zip, '[Content_Types].xml')));\n\tvar xlsb = false;\n\tvar sheets, binname;\n\tif(dir.workbooks.length === 0) {\n\t\tbinname = \"xl/workbook.xml\";\n\t\tif(getzipdata(zip,binname, true)) dir.workbooks.push(binname);\n\t}\n\tif(dir.workbooks.length === 0) {\n\t\tbinname = \"xl/workbook.bin\";\n\t\tif(!getzipdata(zip,binname,true)) throw new Error(\"Could not find workbook\");\n\t\tdir.workbooks.push(binname);\n\t\txlsb = true;\n\t}\n\tif(dir.workbooks[0].slice(-3) == \"bin\") xlsb = true;\n\n\tvar themes = ({});\n\tvar styles = ({});\n\tif(!opts.bookSheets && !opts.bookProps) {\n\t\tstrs = [];\n\t\tif(dir.sst) try { strs=parse_sst(getzipdata(zip, strip_front_slash(dir.sst)), dir.sst, opts); } catch(e) { if(opts.WTF) throw e; }\n\n\t\tif(opts.cellStyles && dir.themes.length) themes = parse_theme(getzipstr(zip, dir.themes[0].replace(/^\\//,''), true)||\"\",dir.themes[0], opts);\n\n\t\tif(dir.style) styles = parse_sty(getzipdata(zip, strip_front_slash(dir.style)), dir.style, themes, opts);\n\t}\n\n\t/*var externbooks = */dir.links.map(function(link) {\n\t\treturn parse_xlink(getzipdata(zip, strip_front_slash(link)), link, opts);\n\t});\n\n\tvar wb = parse_wb(getzipdata(zip, strip_front_slash(dir.workbooks[0])), dir.workbooks[0], opts);\n\n\tvar props = {}, propdata = \"\";\n\n\tif(dir.coreprops.length) {\n\t\tpropdata = getzipdata(zip, strip_front_slash(dir.coreprops[0]), true);\n\t\tif(propdata) props = parse_core_props(propdata);\n\t\tif(dir.extprops.length !== 0) {\n\t\t\tpropdata = getzipdata(zip, strip_front_slash(dir.extprops[0]), true);\n\t\t\tif(propdata) parse_ext_props(propdata, props, opts);\n\t\t}\n\t}\n\n\tvar custprops = {};\n\tif(!opts.bookSheets || opts.bookProps) {\n\t\tif (dir.custprops.length !== 0) {\n\t\t\tpropdata = getzipstr(zip, strip_front_slash(dir.custprops[0]), true);\n\t\t\tif(propdata) custprops = parse_cust_props(propdata, opts);\n\t\t}\n\t}\n\n\tvar out = ({});\n\tif(opts.bookSheets || opts.bookProps) {\n\t\tif(wb.Sheets) sheets = wb.Sheets.map(function pluck(x){ return x.name; });\n\t\telse if(props.Worksheets && props.SheetNames.length > 0) sheets=props.SheetNames;\n\t\tif(opts.bookProps) { out.Props = props; out.Custprops = custprops; }\n\t\tif(opts.bookSheets && typeof sheets !== 'undefined') out.SheetNames = sheets;\n\t\tif(opts.bookSheets ? out.SheetNames : opts.bookProps) return out;\n\t}\n\tsheets = {};\n\n\tvar deps = {};\n\tif(opts.bookDeps && dir.calcchain) deps=parse_cc(getzipdata(zip, strip_front_slash(dir.calcchain)),dir.calcchain,opts);\n\n\tvar i=0;\n\tvar sheetRels = ({});\n\tvar path, relsPath;\n\n\t{\n\t\tvar wbsheets = wb.Sheets;\n\t\tprops.Worksheets = wbsheets.length;\n\t\tprops.SheetNames = [];\n\t\tfor(var j = 0; j != wbsheets.length; ++j) {\n\t\t\tprops.SheetNames[j] = wbsheets[j].name;\n\t\t}\n\t}\n\n\tvar wbext = xlsb ? \"bin\" : \"xml\";\n\tvar wbrelsi = dir.workbooks[0].lastIndexOf(\"/\");\n\tvar wbrelsfile = (dir.workbooks[0].slice(0, wbrelsi+1) + \"_rels/\" + dir.workbooks[0].slice(wbrelsi+1) + \".rels\").replace(/^\\//,\"\");\n\tif(!safegetzipfile(zip, wbrelsfile)) wbrelsfile = 'xl/_rels/workbook.' + wbext + '.rels';\n\tvar wbrels = parse_rels(getzipstr(zip, wbrelsfile, true), wbrelsfile);\n\tif(wbrels) wbrels = safe_parse_wbrels(wbrels, wb.Sheets);\n\n\t/* Numbers iOS hack */\n\tvar nmode = (getzipdata(zip,\"xl/worksheets/sheet.xml\",true))?1:0;\n\tfor(i = 0; i != props.Worksheets; ++i) {\n\t\tvar stype = \"sheet\";\n\t\tif(wbrels && wbrels[i]) {\n\t\t\tpath = 'xl/' + (wbrels[i][1]).replace(/[\\/]?xl\\//, \"\");\n\t\t\tif(!safegetzipfile(zip, path)) path = wbrels[i][1];\n\t\t\tif(!safegetzipfile(zip, path)) path = wbrelsfile.replace(/_rels\\/.*$/,\"\") + wbrels[i][1];\n\t\t\tstype = wbrels[i][2];\n\t\t} else {\n\t\t\tpath = 'xl/worksheets/sheet'+(i+1-nmode)+\".\" + wbext;\n\t\t\tpath = path.replace(/sheet0\\./,\"sheet.\");\n\t\t}\n\t\trelsPath = path.replace(/^(.*)(\\/)([^\\/]*)$/, \"$1/_rels/$3.rels\");\n\t\tsafe_parse_sheet(zip, path, relsPath, props.SheetNames[i], i, sheetRels, sheets, stype, opts, wb, themes, styles);\n\t}\n\n\tif(dir.comments) parse_comments(zip, dir.comments, sheets, sheetRels, opts);\n\n\tout = ({\n\t\tDirectory: dir,\n\t\tWorkbook: wb,\n\t\tProps: props,\n\t\tCustprops: custprops,\n\t\tDeps: deps,\n\t\tSheets: sheets,\n\t\tSheetNames: props.SheetNames,\n\t\tStrings: strs,\n\t\tStyles: styles,\n\t\tThemes: themes,\n\t\tSSF: SSF.get_table()\n\t});\n\tif(opts.bookFiles) {\n\t\tout.keys = entries;\n\t\tout.files = zip.files;\n\t}\n\tif(opts.bookVBA) {\n\t\tif(dir.vba.length > 0) out.vbaraw = getzipdata(zip,strip_front_slash(dir.vba[0]),true);\n\t\telse if(dir.defaults && dir.defaults.bin === CT_VBA) out.vbaraw = getzipdata(zip, 'xl/vbaProject.bin',true);\n\t}\n\treturn out;\n}\n\n/* [MS-OFFCRYPTO] 2.1.1 */\nfunction parse_xlsxcfb(cfb, _opts) {\n\tvar opts = _opts || {};\n\tvar f = 'Workbook', data = CFB.find(cfb, f);\n\ttry {\n\tf = '/!DataSpaces/Version';\n\tdata = CFB.find(cfb, f); if(!data || !data.content) throw new Error(\"ECMA-376 Encrypted file missing \" + f);\n\t/*var version = */parse_DataSpaceVersionInfo(data.content);\n\n\t/* 2.3.4.1 */\n\tf = '/!DataSpaces/DataSpaceMap';\n\tdata = CFB.find(cfb, f); if(!data || !data.content) throw new Error(\"ECMA-376 Encrypted file missing \" + f);\n\tvar dsm = parse_DataSpaceMap(data.content);\n\tif(dsm.length !== 1 || dsm[0].comps.length !== 1 || dsm[0].comps[0].t !== 0 || dsm[0].name !== \"StrongEncryptionDataSpace\" || dsm[0].comps[0].v !== \"EncryptedPackage\")\n\t\tthrow new Error(\"ECMA-376 Encrypted file bad \" + f);\n\n\t/* 2.3.4.2 */\n\tf = '/!DataSpaces/DataSpaceInfo/StrongEncryptionDataSpace';\n\tdata = CFB.find(cfb, f); if(!data || !data.content) throw new Error(\"ECMA-376 Encrypted file missing \" + f);\n\tvar seds = parse_DataSpaceDefinition(data.content);\n\tif(seds.length != 1 || seds[0] != \"StrongEncryptionTransform\")\n\t\tthrow new Error(\"ECMA-376 Encrypted file bad \" + f);\n\n\t/* 2.3.4.3 */\n\tf = '/!DataSpaces/TransformInfo/StrongEncryptionTransform/!Primary';\n\tdata = CFB.find(cfb, f); if(!data || !data.content) throw new Error(\"ECMA-376 Encrypted file missing \" + f);\n\t/*var hdr = */parse_Primary(data.content);\n\t} catch(e) {}\n\n\tf = '/EncryptionInfo';\n\tdata = CFB.find(cfb, f); if(!data || !data.content) throw new Error(\"ECMA-376 Encrypted file missing \" + f);\n\tvar einfo = parse_EncryptionInfo(data.content);\n\n\t/* 2.3.4.4 */\n\tf = '/EncryptedPackage';\n\tdata = CFB.find(cfb, f); if(!data || !data.content) throw new Error(\"ECMA-376 Encrypted file missing \" + f);\n\n/*global decrypt_agile */\nif(einfo[0] == 0x04 && typeof decrypt_agile !== 'undefined') return decrypt_agile(einfo[1], data.content, opts.password || \"\", opts);\n/*global decrypt_std76 */\nif(einfo[0] == 0x02 && typeof decrypt_std76 !== 'undefined') return decrypt_std76(einfo[1], data.content, opts.password || \"\", opts);\n\tthrow new Error(\"File is password-protected\");\n}\n\nfunction write_zip(wb, opts) {\n\t_shapeid = 1024;\n\tif(opts.bookType == \"ods\") return write_ods(wb, opts);\n\tif(wb && !wb.SSF) {\n\t\twb.SSF = SSF.get_table();\n\t}\n\tif(wb && wb.SSF) {\n\t\tmake_ssf(SSF); SSF.load_table(wb.SSF);\n\t\t// $FlowIgnore\n\t\topts.revssf = evert_num(wb.SSF); opts.revssf[wb.SSF[65535]] = 0;\n\t\topts.ssf = wb.SSF;\n\t}\n\topts.rels = {}; opts.wbrels = {};\n\topts.Strings = []; opts.Strings.Count = 0; opts.Strings.Unique = 0;\n\tif(browser_has_Map) opts.revStrings = new Map();\n\telse { opts.revStrings = {}; opts.revStrings.foo = []; delete opts.revStrings.foo; }\n\tvar wbext = opts.bookType == \"xlsb\" ? \"bin\" : \"xml\";\n\tvar vbafmt = VBAFMTS.indexOf(opts.bookType) > -1;\n\tvar ct = new_ct();\n\tfix_write_opts(opts = opts || {});\nvar zip = new jszip();\n\tvar f = \"\", rId = 0;\n\n\topts.cellXfs = [];\n\tget_cell_style(opts.cellXfs, {}, {revssf:{\"General\":0}});\n\n\tif(!wb.Props) wb.Props = {};\n\n\tf = \"docProps/core.xml\";\n\tzip.file(f, write_core_props(wb.Props, opts));\n\tct.coreprops.push(f);\n\tadd_rels(opts.rels, 2, f, RELS.CORE_PROPS);\n\nf = \"docProps/app.xml\";\n\tif(wb.Props && wb.Props.SheetNames){/* empty */}\n\telse if(!wb.Workbook || !wb.Workbook.Sheets) wb.Props.SheetNames = wb.SheetNames;\n\telse {\n\t\tvar _sn = [];\n\t\tfor(var _i = 0; _i < wb.SheetNames.length; ++_i)\n\t\t\tif((wb.Workbook.Sheets[_i]||{}).Hidden != 2) _sn.push(wb.SheetNames[_i]);\n\t\twb.Props.SheetNames = _sn;\n\t}\n\twb.Props.Worksheets = wb.Props.SheetNames.length;\n\tzip.file(f, write_ext_props(wb.Props, opts));\n\tct.extprops.push(f);\n\tadd_rels(opts.rels, 3, f, RELS.EXT_PROPS);\n\n\tif(wb.Custprops !== wb.Props && keys(wb.Custprops||{}).length > 0) {\n\t\tf = \"docProps/custom.xml\";\n\t\tzip.file(f, write_cust_props(wb.Custprops, opts));\n\t\tct.custprops.push(f);\n\t\tadd_rels(opts.rels, 4, f, RELS.CUST_PROPS);\n\t}\n\n\tfor(rId=1;rId <= wb.SheetNames.length; ++rId) {\n\t\tvar wsrels = {'!id':{}};\n\t\tvar ws = wb.Sheets[wb.SheetNames[rId-1]];\n\t\tvar _type = (ws || {})[\"!type\"] || \"sheet\";\n\t\tswitch(_type) {\n\t\tcase \"chart\": /*\n\t\t\tf = \"xl/chartsheets/sheet\" + rId + \".\" + wbext;\n\t\t\tzip.file(f, write_cs(rId-1, f, opts, wb, wsrels));\n\t\t\tct.charts.push(f);\n\t\t\tadd_rels(wsrels, -1, \"chartsheets/sheet\" + rId + \".\" + wbext, RELS.CS);\n\t\t\tbreak; */\n\t\t\t/* falls through */\n\t\tdefault:\n\t\t\tf = \"xl/worksheets/sheet\" + rId + \".\" + wbext;\n\t\t\tzip.file(f, write_ws(rId-1, f, opts, wb, wsrels));\n\t\t\tct.sheets.push(f);\n\t\t\tadd_rels(opts.wbrels, -1, \"worksheets/sheet\" + rId + \".\" + wbext, RELS.WS[0]);\n\t\t}\n\n\t\tif(ws) {\n\t\t\tvar comments = ws['!comments'];\n\t\t\tvar need_vml = false;\n\t\t\tif(comments && comments.length > 0) {\n\t\t\t\tvar cf = \"xl/comments\" + rId + \".\" + wbext;\n\t\t\t\tzip.file(cf, write_cmnt(comments, cf, opts));\n\t\t\t\tct.comments.push(cf);\n\t\t\t\tadd_rels(wsrels, -1, \"../comments\" + rId + \".\" + wbext, RELS.CMNT);\n\t\t\t\tneed_vml = true;\n\t\t\t}\n\t\t\tif(ws['!legacy']) {\n\t\t\t\tif(need_vml) zip.file(\"xl/drawings/vmlDrawing\" + (rId) + \".vml\", write_comments_vml(rId, ws['!comments']));\n\t\t\t}\n\t\t\tdelete ws['!comments'];\n\t\t\tdelete ws['!legacy'];\n\t\t}\n\n\t\tif(wsrels['!id'].rId1) zip.file(get_rels_path(f), write_rels(wsrels));\n\t}\n\n\tif(opts.Strings != null && opts.Strings.length > 0) {\n\t\tf = \"xl/sharedStrings.\" + wbext;\n\t\tzip.file(f, write_sst(opts.Strings, f, opts));\n\t\tct.strs.push(f);\n\t\tadd_rels(opts.wbrels, -1, \"sharedStrings.\" + wbext, RELS.SST);\n\t}\n\n\tf = \"xl/workbook.\" + wbext;\n\tzip.file(f, write_wb(wb, f, opts));\n\tct.workbooks.push(f);\n\tadd_rels(opts.rels, 1, f, RELS.WB);\n\n\t/* TODO: something more intelligent with themes */\n\n\tf = \"xl/theme/theme1.xml\";\n\tzip.file(f, write_theme(wb.Themes, opts));\n\tct.themes.push(f);\n\tadd_rels(opts.wbrels, -1, \"theme/theme1.xml\", RELS.THEME);\n\n\t/* TODO: something more intelligent with styles */\n\n\tf = \"xl/styles.\" + wbext;\n\tzip.file(f, write_sty(wb, f, opts));\n\tct.styles.push(f);\n\tadd_rels(opts.wbrels, -1, \"styles.\" + wbext, RELS.STY);\n\n\tif(wb.vbaraw && vbafmt) {\n\t\tf = \"xl/vbaProject.bin\";\n\t\tzip.file(f, wb.vbaraw);\n\t\tct.vba.push(f);\n\t\tadd_rels(opts.wbrels, -1, \"vbaProject.bin\", RELS.VBA);\n\t}\n\n\tzip.file(\"[Content_Types].xml\", write_ct(ct, opts));\n\tzip.file('_rels/.rels', write_rels(opts.rels));\n\tzip.file('xl/_rels/workbook.' + wbext + '.rels', write_rels(opts.wbrels));\n\n\tdelete opts.revssf; delete opts.ssf;\n\treturn zip;\n}\nfunction firstbyte(f,o) {\n\tvar x = \"\";\n\tswitch((o||{}).type || \"base64\") {\n\t\tcase 'buffer': return [f[0], f[1], f[2], f[3]];\n\t\tcase 'base64': x = Base64.decode(f.slice(0,24)); break;\n\t\tcase 'binary': x = f; break;\n\t\tcase 'array': return [f[0], f[1], f[2], f[3]];\n\t\tdefault: throw new Error(\"Unrecognized type \" + (o && o.type || \"undefined\"));\n\t}\n\treturn [x.charCodeAt(0), x.charCodeAt(1), x.charCodeAt(2), x.charCodeAt(3)];\n}\n\nfunction read_cfb(cfb, opts) {\n\tif(CFB.find(cfb, \"EncryptedPackage\")) return parse_xlsxcfb(cfb, opts);\n\treturn parse_xlscfb(cfb, opts);\n}\n\nfunction read_zip(data, opts) {\nvar zip, d = data;\n\tvar o = opts||{};\n\tif(!o.type) o.type = (has_buf && Buffer.isBuffer(data)) ? \"buffer\" : \"base64\";\n\tswitch(o.type) {\n\t\tcase \"base64\": zip = new jszip(d, { base64:true }); break;\n\t\tcase \"binary\": case \"array\": zip = new jszip(d, { base64:false }); break;\n\t\tcase \"buffer\": zip = new jszip(d); break;\n\t\tdefault: throw new Error(\"Unrecognized type \" + o.type);\n\t}\n\treturn parse_zip(zip, o);\n}\n\nfunction read_plaintext(data, o) {\n\tvar i = 0;\n\tmain: while(i < data.length) switch(data.charCodeAt(i)) {\n\t\tcase 0x0A: case 0x0D: case 0x20: ++i; break;\n\t\tcase 0x3C: return parse_xlml(data.slice(i),o);\n\t\tdefault: break main;\n\t}\n\treturn PRN.to_workbook(data, o);\n}\n\nfunction read_plaintext_raw(data, o) {\n\tvar str = \"\", bytes = firstbyte(data, o);\n\tswitch(o.type) {\n\t\tcase 'base64': str = Base64.decode(data); break;\n\t\tcase 'binary': str = data; break;\n\t\tcase 'buffer': str = data.toString('binary'); break;\n\t\tcase 'array': str = cc2str(data); break;\n\t\tdefault: throw new Error(\"Unrecognized type \" + o.type);\n\t}\n\tif(bytes[0] == 0xEF && bytes[1] == 0xBB && bytes[2] == 0xBF) str = utf8read(str);\n\treturn read_plaintext(str, o);\n}\n\nfunction read_utf16(data, o) {\n\tvar d = data;\n\tif(o.type == 'base64') d = Base64.decode(d);\n\td = cptable.utils.decode(1200, d.slice(2), 'str');\n\to.type = \"binary\";\n\treturn read_plaintext(d, o);\n}\n\nfunction bstrify(data) {\n\treturn !data.match(/[^\\x00-\\x7F]/) ? data : utf8write(data);\n}\n\nfunction read_prn(data, d, o, str) {\n\tif(str) { o.type = \"string\"; return PRN.to_workbook(data, o); }\n\treturn PRN.to_workbook(d, o);\n}\n\nfunction readSync(data, opts) {\n\treset_cp();\n\tif(typeof ArrayBuffer !== 'undefined' && data instanceof ArrayBuffer) return readSync(new Uint8Array(data), opts);\n\tvar d = data, n = [0,0,0,0], str = false;\n\tvar o = opts||{};\n\t_ssfopts = {};\n\tif(o.dateNF) _ssfopts.dateNF = o.dateNF;\n\tif(!o.type) o.type = (has_buf && Buffer.isBuffer(data)) ? \"buffer\" : \"base64\";\n\tif(o.type == \"file\") { o.type = has_buf ? \"buffer\" : \"binary\"; d = read_binary(data); }\n\tif(o.type == \"string\") { str = true; o.type = \"binary\"; o.codepage = 65001; d = bstrify(data); }\n\tif(o.type == 'array' && typeof Uint8Array !== 'undefined' && data instanceof Uint8Array && typeof ArrayBuffer !== 'undefined') {\n\t\t// $FlowIgnore\n\t\tvar ab=new ArrayBuffer(3), vu=new Uint8Array(ab); vu.foo=\"bar\";\n\t\t// $FlowIgnore\n\t\tif(!vu.foo) {o=dup(o); o.type='array'; return readSync(ab2a(d), o);}\n\t}\n\tswitch((n = firstbyte(d, o))[0]) {\n\t\tcase 0xD0: return read_cfb(CFB.read(d, o), o);\n\t\tcase 0x09: return parse_xlscfb(d, o);\n\t\tcase 0x3C: return parse_xlml(d, o);\n\t\tcase 0x49: if(n[1] === 0x44) return read_wb_ID(d, o); break;\n\t\tcase 0x54: if(n[1] === 0x41 && n[2] === 0x42 && n[3] === 0x4C) return DIF.to_workbook(d, o); break;\n\t\tcase 0x50: return (n[1] === 0x4B && n[2] < 0x09 && n[3] < 0x09) ? read_zip(d, o) : read_prn(data, d, o, str);\n\t\tcase 0xEF: return n[3] === 0x3C ? parse_xlml(d, o) : read_prn(data, d, o, str);\n\t\tcase 0xFF: if(n[1] === 0xFE) { return read_utf16(d, o); } break;\n\t\tcase 0x00: if(n[1] === 0x00 && n[2] >= 0x02 && n[3] === 0x00) return WK_.to_workbook(d, o); break;\n\t\tcase 0x03: case 0x83: case 0x8B: case 0x8C: return DBF.to_workbook(d, o);\n\t\tcase 0x7B: if(n[1] === 0x5C && n[2] === 0x72 && n[3] === 0x74) return RTF.to_workbook(d, o); break;\n\t\tcase 0x0A: case 0x0D: case 0x20: return read_plaintext_raw(d, o);\n\t}\n\tif(n[2] <= 12 && n[3] <= 31) return DBF.to_workbook(d, o);\n\treturn read_prn(data, d, o, str);\n}\n\nfunction readFileSync(filename, opts) {\n\tvar o = opts||{}; o.type = 'file';\n\treturn readSync(filename, o);\n}\nfunction write_cfb_ctr(cfb, o) {\n\tswitch(o.type) {\n\t\tcase \"base64\": case \"binary\": break;\n\t\tcase \"buffer\": case \"array\": o.type = \"\"; break;\n\t\tcase \"file\": return write_dl(o.file, CFB.write(cfb, {type:has_buf ? 'buffer' : \"\"}));\n\t\tcase \"string\": throw new Error(\"'string' output type invalid for '\" + o.bookType + \"' files\");\n\t\tdefault: throw new Error(\"Unrecognized type \" + o.type);\n\t}\n\treturn CFB.write(cfb, o);\n}\n\n/*global encrypt_agile */\nfunction write_zip_type(wb, opts) {\n\tvar o = opts||{};\n\tvar z = write_zip(wb, o);\n\tvar oopts = {};\n\tif(o.compression) oopts.compression = 'DEFLATE';\n\tif(o.password) oopts.type = has_buf ? \"nodebuffer\" : \"string\";\n\telse switch(o.type) {\n\t\tcase \"base64\": oopts.type = \"base64\"; break;\n\t\tcase \"binary\": oopts.type = \"string\"; break;\n\t\tcase \"string\": throw new Error(\"'string' output type invalid for '\" + o.bookType + \"' files\");\n\t\tcase \"buffer\":\n\t\tcase \"file\": oopts.type = has_buf ? \"nodebuffer\" : \"string\"; break;\n\t\tdefault: throw new Error(\"Unrecognized type \" + o.type);\n\t}\n\tvar out = z.generate(oopts);\n\tif(o.password && typeof encrypt_agile !== 'undefined') return write_cfb_ctr(encrypt_agile(out, o.password), o);\n\tif(o.type === \"file\") return write_dl(o.file, out);\n\treturn o.type == \"string\" ? utf8read(out) : out;\n}\n\nfunction write_cfb_type(wb, opts) {\n\tvar o = opts||{};\n\tvar cfb = write_xlscfb(wb, o);\n\treturn write_cfb_ctr(cfb, o);\n}\n\nfunction write_string_type(out, opts, bom) {\n\tif(!bom) bom = \"\";\n\tvar o = bom + out;\n\tswitch(opts.type) {\n\t\tcase \"base64\": return Base64.encode(utf8write(o));\n\t\tcase \"binary\": return utf8write(o);\n\t\tcase \"string\": return out;\n\t\tcase \"file\": return write_dl(opts.file, o, 'utf8');\n\t\tcase \"buffer\": {\n\t\t\t// $FlowIgnore\n\t\t\tif(has_buf) return Buffer_from(o, 'utf8');\n\t\t\telse return write_string_type(o, {type:'binary'}).split(\"\").map(function(c) { return c.charCodeAt(0); });\n\t\t}\n\t}\n\tthrow new Error(\"Unrecognized type \" + opts.type);\n}\n\nfunction write_stxt_type(out, opts) {\n\tswitch(opts.type) {\n\t\tcase \"base64\": return Base64.encode(out);\n\t\tcase \"binary\": return out;\n\t\tcase \"string\": return out; /* override in sheet_to_txt */\n\t\tcase \"file\": return write_dl(opts.file, out, 'binary');\n\t\tcase \"buffer\": {\n\t\t\t// $FlowIgnore\n\t\t\tif(has_buf) return Buffer_from(out, 'binary');\n\t\t\telse return out.split(\"\").map(function(c) { return c.charCodeAt(0); });\n\t\t}\n\t}\n\tthrow new Error(\"Unrecognized type \" + opts.type);\n}\n\n/* TODO: test consistency */\nfunction write_binary_type(out, opts) {\n\tswitch(opts.type) {\n\t\tcase \"string\":\n\t\tcase \"base64\":\n\t\tcase \"binary\":\n\t\t\tvar bstr = \"\";\n\t\t\t// $FlowIgnore\n\t\t\tfor(var i = 0; i < out.length; ++i) bstr += String.fromCharCode(out[i]);\n\t\t\treturn opts.type == 'base64' ? Base64.encode(bstr) : opts.type == 'string' ? utf8read(bstr) : bstr;\n\t\tcase \"file\": return write_dl(opts.file, out);\n\t\tcase \"buffer\": return out;\n\t\tdefault: throw new Error(\"Unrecognized type \" + opts.type);\n\t}\n}\n\nfunction writeSync(wb, opts) {\n\tcheck_wb(wb);\n\tvar o = opts||{};\n\tif(o.type == \"array\") { o.type = \"binary\"; var out = (writeSync(wb, o)); o.type = \"array\"; return s2ab(out); }\n\tswitch(o.bookType || 'xlsb') {\n\t\tcase 'xml':\n\t\tcase 'xlml': return write_string_type(write_xlml(wb, o), o);\n\t\tcase 'slk':\n\t\tcase 'sylk': return write_string_type(write_slk_str(wb, o), o);\n\t\tcase 'htm':\n\t\tcase 'html': return write_string_type(write_htm_str(wb, o), o);\n\t\tcase 'txt': return write_stxt_type(write_txt_str(wb, o), o);\n\t\tcase 'csv': return write_string_type(write_csv_str(wb, o), o, \"\\ufeff\");\n\t\tcase 'dif': return write_string_type(write_dif_str(wb, o), o);\n\t\tcase 'dbf': return write_binary_type(write_dbf_buf(wb, o), o);\n\t\tcase 'prn': return write_string_type(write_prn_str(wb, o), o);\n\t\tcase 'rtf': return write_string_type(write_rtf_str(wb, o), o);\n\t\tcase 'eth': return write_string_type(write_eth_str(wb, o), o);\n\t\tcase 'fods': return write_string_type(write_ods(wb, o), o);\n\t\tcase 'biff2': if(!o.biff) o.biff = 2; /* falls through */\n\t\tcase 'biff3': if(!o.biff) o.biff = 3; /* falls through */\n\t\tcase 'biff4': if(!o.biff) o.biff = 4; return write_binary_type(write_biff_buf(wb, o), o);\n\t\tcase 'biff5': if(!o.biff) o.biff = 5; /* falls through */\n\t\tcase 'biff8':\n\t\tcase 'xla':\n\t\tcase 'xls': if(!o.biff) o.biff = 8; return write_cfb_type(wb, o);\n\t\tcase 'xlsx':\n\t\tcase 'xlsm':\n\t\tcase 'xlam':\n\t\tcase 'xlsb':\n\t\tcase 'ods': return write_zip_type(wb, o);\n\t\tdefault: throw new Error (\"Unrecognized bookType |\" + o.bookType + \"|\");\n\t}\n}\n\nfunction resolve_book_type(o) {\n\tif(o.bookType) return;\n\tvar _BT = {\n\t\t\"xls\": \"biff8\",\n\t\t\"htm\": \"html\",\n\t\t\"slk\": \"sylk\",\n\t\t\"socialcalc\": \"eth\",\n\t\t\"Sh33tJS\": \"WTF\"\n\t};\n\tvar ext = o.file.slice(o.file.lastIndexOf(\".\")).toLowerCase();\n\tif(ext.match(/^\\.[a-z]+$/)) o.bookType = ext.slice(1);\n\to.bookType = _BT[o.bookType] || o.bookType;\n}\n\nfunction writeFileSync(wb, filename, opts) {\n\tvar o = opts||{}; o.type = 'file';\n\to.file = filename;\n\tresolve_book_type(o);\n\treturn writeSync(wb, o);\n}\n\nfunction writeFileAsync(filename, wb, opts, cb) {\n\tvar o = opts||{}; o.type = 'file';\n\to.file = filename;\n\tresolve_book_type(o);\n\to.type = 'buffer';\n\tvar _cb = cb; if(!(_cb instanceof Function)) _cb = (opts);\n\treturn _fs.writeFile(filename, writeSync(wb, o), _cb);\n}\nfunction make_json_row(sheet, r, R, cols, header, hdr, dense, o) {\n\tvar rr = encode_row(R);\n\tvar defval = o.defval, raw = o.raw || !o.hasOwnProperty(\"raw\");\n\tvar isempty = true;\n\tvar row = (header === 1) ? [] : {};\n\tif(header !== 1) {\n\t\tif(Object.defineProperty) try { Object.defineProperty(row, '__rowNum__', {value:R, enumerable:false}); } catch(e) { row.__rowNum__ = R; }\n\t\telse row.__rowNum__ = R;\n\t}\n\tif(!dense || sheet[R]) for (var C = r.s.c; C <= r.e.c; ++C) {\n\t\tvar val = dense ? sheet[R][C] : sheet[cols[C] + rr];\n\t\tif(val === undefined || val.t === undefined) {\n\t\t\tif(defval === undefined) continue;\n\t\t\tif(hdr[C] != null) { row[hdr[C]] = defval; }\n\t\t\tcontinue;\n\t\t}\n\t\tvar v = val.v;\n\t\tswitch(val.t){\n\t\t\tcase 'z': if(v == null) break; continue;\n\t\t\tcase 'e': v = void 0; break;\n\t\t\tcase 's': case 'd': case 'b': case 'n': break;\n\t\t\tdefault: throw new Error('unrecognized type ' + val.t);\n\t\t}\n\t\tif(hdr[C] != null) {\n\t\t\tif(v == null) {\n\t\t\t\tif(defval !== undefined) row[hdr[C]] = defval;\n\t\t\t\telse if(raw && v === null) row[hdr[C]] = null;\n\t\t\t\telse continue;\n\t\t\t} else {\n\t\t\t\trow[hdr[C]] = raw ? v : format_cell(val,v,o);\n\t\t\t}\n\t\t\tif(v != null) isempty = false;\n\t\t}\n\t}\n\treturn { row: row, isempty: isempty };\n}\n\n\nfunction sheet_to_json(sheet, opts) {\n\tif(sheet == null || sheet[\"!ref\"] == null) return [];\n\tvar val = {t:'n',v:0}, header = 0, offset = 1, hdr = [], v=0, vv=\"\";\n\tvar r = {s:{r:0,c:0},e:{r:0,c:0}};\n\tvar o = opts || {};\n\tvar range = o.range != null ? o.range : sheet[\"!ref\"];\n\tif(o.header === 1) header = 1;\n\telse if(o.header === \"A\") header = 2;\n\telse if(Array.isArray(o.header)) header = 3;\n\tswitch(typeof range) {\n\t\tcase 'string': r = safe_decode_range(range); break;\n\t\tcase 'number': r = safe_decode_range(sheet[\"!ref\"]); r.s.r = range; break;\n\t\tdefault: r = range;\n\t}\n\tif(header > 0) offset = 0;\n\tvar rr = encode_row(r.s.r);\n\tvar cols = [];\n\tvar out = [];\n\tvar outi = 0, counter = 0;\n\tvar dense = Array.isArray(sheet);\n\tvar R = r.s.r, C = 0, CC = 0;\n\tif(dense && !sheet[R]) sheet[R] = [];\n\tfor(C = r.s.c; C <= r.e.c; ++C) {\n\t\tcols[C] = encode_col(C);\n\t\tval = dense ? sheet[R][C] : sheet[cols[C] + rr];\n\t\tswitch(header) {\n\t\t\tcase 1: hdr[C] = C - r.s.c; break;\n\t\t\tcase 2: hdr[C] = cols[C]; break;\n\t\t\tcase 3: hdr[C] = o.header[C - r.s.c]; break;\n\t\t\tdefault:\n\t\t\t\tif(val == null) val = {w: \"__EMPTY\", t: \"s\"};\n\t\t\t\tvv = v = format_cell(val, null, o);\n\t\t\t\tcounter = 0;\n\t\t\t\tfor(CC = 0; CC < hdr.length; ++CC) if(hdr[CC] == vv) vv = v + \"_\" + (++counter);\n\t\t\t\thdr[C] = vv;\n\t\t}\n\t}\n\tfor (R = r.s.r + offset; R <= r.e.r; ++R) {\n\t\tvar row = make_json_row(sheet, r, R, cols, header, hdr, dense, o);\n\t\tif((row.isempty === false) || (header === 1 ? o.blankrows !== false : !!o.blankrows)) out[outi++] = row.row;\n\t}\n\tout.length = outi;\n\treturn out;\n}\n\nvar qreg = /\"/g;\nfunction make_csv_row(sheet, r, R, cols, fs, rs, FS, o) {\n\tvar isempty = true;\n\tvar row = [], txt = \"\", rr = encode_row(R);\n\tfor(var C = r.s.c; C <= r.e.c; ++C) {\n\t\tif (!cols[C]) continue;\n\t\tvar val = o.dense ? (sheet[R]||[])[C]: sheet[cols[C] + rr];\n\t\tif(val == null) txt = \"\";\n\t\telse if(val.v != null) {\n\t\t\tisempty = false;\n\t\t\ttxt = ''+format_cell(val, null, o);\n\t\t\tfor(var i = 0, cc = 0; i !== txt.length; ++i) if((cc = txt.charCodeAt(i)) === fs || cc === rs || cc === 34) {txt = \"\\\"\" + txt.replace(qreg, '\"\"') + \"\\\"\"; break; }\n\t\t\tif(txt == \"ID\") txt = '\"ID\"';\n\t\t} else if(val.f != null && !val.F) {\n\t\t\tisempty = false;\n\t\t\ttxt = '=' + val.f; if(txt.indexOf(\",\") >= 0) txt = '\"' + txt.replace(qreg, '\"\"') + '\"';\n\t\t} else txt = \"\";\n\t\t/* NOTE: Excel CSV does not support array formulae */\n\t\trow.push(txt);\n\t}\n\tif(o.blankrows === false && isempty) return null;\n\treturn row.join(FS);\n}\n\nfunction sheet_to_csv(sheet, opts) {\n\tvar out = [];\n\tvar o = opts == null ? {} : opts;\n\tif(sheet == null || sheet[\"!ref\"] == null) return \"\";\n\tvar r = safe_decode_range(sheet[\"!ref\"]);\n\tvar FS = o.FS !== undefined ? o.FS : \",\", fs = FS.charCodeAt(0);\n\tvar RS = o.RS !== undefined ? o.RS : \"\\n\", rs = RS.charCodeAt(0);\n\tvar endregex = new RegExp((FS==\"|\" ? \"\\\\|\" : FS)+\"+$\");\n\tvar row = \"\", cols = [];\n\to.dense = Array.isArray(sheet);\n\tvar colinfo = o.skipHidden && sheet[\"!cols\"] || [];\n\tvar rowinfo = o.skipHidden && sheet[\"!rows\"] || [];\n\tfor(var C = r.s.c; C <= r.e.c; ++C) if (!((colinfo[C]||{}).hidden)) cols[C] = encode_col(C);\n\tfor(var R = r.s.r; R <= r.e.r; ++R) {\n\t\tif ((rowinfo[R]||{}).hidden) continue;\n\t\trow = make_csv_row(sheet, r, R, cols, fs, rs, FS, o);\n\t\tif(row == null) { continue; }\n\t\tif(o.strip) row = row.replace(endregex,\"\");\n\t\tout.push(row + RS);\n\t}\n\tdelete o.dense;\n\treturn out.join(\"\");\n}\n\nfunction sheet_to_txt(sheet, opts) {\n\tif(!opts) opts = {}; opts.FS = \"\\t\"; opts.RS = \"\\n\";\n\tvar s = sheet_to_csv(sheet, opts);\n\tif(typeof cptable == 'undefined' || opts.type == 'string') return s;\n\tvar o = cptable.utils.encode(1200, s, 'str');\n\treturn String.fromCharCode(255) + String.fromCharCode(254) + o;\n}\n\nfunction sheet_to_formulae(sheet) {\n\tvar y = \"\", x, val=\"\";\n\tif(sheet == null || sheet[\"!ref\"] == null) return [];\n\tvar r = safe_decode_range(sheet['!ref']), rr = \"\", cols = [], C;\n\tvar cmds = [];\n\tvar dense = Array.isArray(sheet);\n\tfor(C = r.s.c; C <= r.e.c; ++C) cols[C] = encode_col(C);\n\tfor(var R = r.s.r; R <= r.e.r; ++R) {\n\t\trr = encode_row(R);\n\t\tfor(C = r.s.c; C <= r.e.c; ++C) {\n\t\t\ty = cols[C] + rr;\n\t\t\tx = dense ? (sheet[R]||[])[C] : sheet[y];\n\t\t\tval = \"\";\n\t\t\tif(x === undefined) continue;\n\t\t\telse if(x.F != null) {\n\t\t\t\ty = x.F;\n\t\t\t\tif(!x.f) continue;\n\t\t\t\tval = x.f;\n\t\t\t\tif(y.indexOf(\":\") == -1) y = y + \":\" + y;\n\t\t\t}\n\t\t\tif(x.f != null) val = x.f;\n\t\t\telse if(x.t == 'z') continue;\n\t\t\telse if(x.t == 'n' && x.v != null) val = \"\" + x.v;\n\t\t\telse if(x.t == 'b') val = x.v ? \"TRUE\" : \"FALSE\";\n\t\t\telse if(x.w !== undefined) val = \"'\" + x.w;\n\t\t\telse if(x.v === undefined) continue;\n\t\t\telse if(x.t == 's') val = \"'\" + x.v;\n\t\t\telse val = \"\"+x.v;\n\t\t\tcmds[cmds.length] = y + \"=\" + val;\n\t\t}\n\t}\n\treturn cmds;\n}\n\nfunction sheet_add_json(_ws, js, opts) {\n\tvar o = opts || {};\n\tvar offset = +!o.skipHeader;\n\tvar ws = _ws || ({});\n\tvar _R = 0, _C = 0;\n\tif(ws && o.origin != null) {\n\t\tif(typeof o.origin == 'number') _R = o.origin;\n\t\telse {\n\t\t\tvar _origin = typeof o.origin == \"string\" ? decode_cell(o.origin) : o.origin;\n\t\t\t_R = _origin.r; _C = _origin.c;\n\t\t}\n\t}\n\tvar cell;\n\tvar range = ({s: {c:0, r:0}, e: {c:_C, r:_R + js.length - 1 + offset}});\n\tif(ws['!ref']) {\n\t\tvar _range = safe_decode_range(ws['!ref']);\n\t\trange.e.c = Math.max(range.e.c, _range.e.c);\n\t\trange.e.r = Math.max(range.e.r, _range.e.r);\n\t\tif(_R == -1) { _R = range.e.r + 1; range.e.r = _R + js.length - 1 + offset; }\n\t}\n\tvar hdr = o.header || [], C = 0;\n\n\tjs.forEach(function (JS, R) {\n\t\tkeys(JS).forEach(function(k) {\n\t\t\tif((C=hdr.indexOf(k)) == -1) hdr[C=hdr.length] = k;\n\t\t\tvar v = JS[k];\n\t\t\tvar t = 'z';\n\t\t\tvar z = \"\";\n\t\t\tif(v && typeof v === 'object' && !(v instanceof Date)){\n\t\t\t\tws[encode_cell({c:_C + C,r:_R + R + offset})] = v;\n\t\t\t} else {\n\t\t\t\tif(typeof v == 'number') t = 'n';\n\t\t\t\telse if(typeof v == 'boolean') t = 'b';\n\t\t\t\telse if(typeof v == 'string') t = 's';\n\t\t\t\telse if(v instanceof Date) {\n\t\t\t\t\tt = 'd';\n\t\t\t\t\tif(!o.cellDates) { t = 'n'; v = datenum(v); }\n\t\t\t\t\tz = o.dateNF || SSF._table[14];\n\t\t\t\t}\n\t\t\t\tws[encode_cell({c:_C + C,r:_R + R + offset})] = cell = ({t:t, v:v});\n\t\t\t\tif(z) cell.z = z;\n\t\t\t}\n\t\t});\n\t});\n\trange.e.c = Math.max(range.e.c, _C + hdr.length - 1);\n\tvar __R = encode_row(_R);\n\tif(offset) for(C = 0; C < hdr.length; ++C) ws[encode_col(C + _C) + __R] = {t:'s', v:hdr[C]};\n\tws['!ref'] = encode_range(range);\n\treturn ws;\n}\nfunction json_to_sheet(js, opts) { return sheet_add_json(null, js, opts); }\n\nvar utils = {\n\tencode_col: encode_col,\n\tencode_row: encode_row,\n\tencode_cell: encode_cell,\n\tencode_range: encode_range,\n\tdecode_col: decode_col,\n\tdecode_row: decode_row,\n\tsplit_cell: split_cell,\n\tdecode_cell: decode_cell,\n\tdecode_range: decode_range,\n\tformat_cell: format_cell,\n\tget_formulae: sheet_to_formulae,\n\tmake_csv: sheet_to_csv,\n\tmake_json: sheet_to_json,\n\tmake_formulae: sheet_to_formulae,\n\tsheet_add_aoa: sheet_add_aoa,\n\tsheet_add_json: sheet_add_json,\n\taoa_to_sheet: aoa_to_sheet,\n\tjson_to_sheet: json_to_sheet,\n\ttable_to_sheet: parse_dom_table,\n\ttable_to_book: table_to_book,\n\tsheet_to_csv: sheet_to_csv,\n\tsheet_to_txt: sheet_to_txt,\n\tsheet_to_json: sheet_to_json,\n\tsheet_to_html: HTML_.from_sheet,\n\tsheet_to_dif: DIF.from_sheet,\n\tsheet_to_slk: SYLK.from_sheet,\n\tsheet_to_eth: ETH.from_sheet,\n\tsheet_to_formulae: sheet_to_formulae,\n\tsheet_to_row_object_array: sheet_to_json\n};\n\n(function(utils) {\nutils.consts = utils.consts || {};\nfunction add_consts(R/*Array*/) { R.forEach(function(a){ utils.consts[a[0]] = a[1]; }); }\n\nfunction get_default(x, y, z) { return x[y] != null ? x[y] : (x[y] = z); }\n\n/* get cell, creating a stub if necessary */\nfunction ws_get_cell_stub(ws, R, C) {\n\t/* A1 cell address */\n\tif(typeof R == \"string\") return ws[R] || (ws[R] = {t:'z'});\n\t/* cell address object */\n\tif(typeof R != \"number\") return ws_get_cell_stub(ws, encode_cell(R));\n\t/* R and C are 0-based indices */\n\treturn ws_get_cell_stub(ws, encode_cell({r:R,c:C||0}));\n}\n\n/* find sheet index for given name / validate index */\nfunction wb_sheet_idx(wb, sh) {\n\tif(typeof sh == \"number\") {\n\t\tif(sh >= 0 && wb.SheetNames.length > sh) return sh;\n\t\tthrow new Error(\"Cannot find sheet # \" + sh);\n\t} else if(typeof sh == \"string\") {\n\t\tvar idx = wb.SheetNames.indexOf(sh);\n\t\tif(idx > -1) return idx;\n\t\tthrow new Error(\"Cannot find sheet name |\" + sh + \"|\");\n\t} else throw new Error(\"Cannot find sheet |\" + sh + \"|\");\n}\n\n/* simple blank workbook object */\nutils.book_new = function() {\n\treturn { SheetNames: [], Sheets: {} };\n};\n\n/* add a worksheet to the end of a given workbook */\nutils.book_append_sheet = function(wb, ws, name) {\n\tif(!name) for(var i = 1; i <= 0xFFFF; ++i) if(wb.SheetNames.indexOf(name = \"Sheet\" + i) == -1) break;\n\tif(!name) throw new Error(\"Too many worksheets\");\n\tcheck_ws_name(name);\n\tif(wb.SheetNames.indexOf(name) >= 0) throw new Error(\"Worksheet with name |\" + name + \"| already exists!\");\n\n\twb.SheetNames.push(name);\n\twb.Sheets[name] = ws;\n};\n\n/* set sheet visibility (visible/hidden/very hidden) */\nutils.book_set_sheet_visibility = function(wb, sh, vis) {\n\tget_default(wb,\"Workbook\",{});\n\tget_default(wb.Workbook,\"Sheets\",[]);\n\n\tvar idx = wb_sheet_idx(wb, sh);\n\t// $FlowIgnore\n\tget_default(wb.Workbook.Sheets,idx, {});\n\n\tswitch(vis) {\n\t\tcase 0: case 1: case 2: break;\n\t\tdefault: throw new Error(\"Bad sheet visibility setting \" + vis);\n\t}\n\t// $FlowIgnore\n\twb.Workbook.Sheets[idx].Hidden = vis;\n};\nadd_consts([\n\t[\"SHEET_VISIBLE\", 0],\n\t[\"SHEET_HIDDEN\", 1],\n\t[\"SHEET_VERY_HIDDEN\", 2]\n]);\n\n/* set number format */\nutils.cell_set_number_format = function(cell, fmt) {\n\tcell.z = fmt;\n\treturn cell;\n};\n\n/* set cell hyperlink */\nutils.cell_set_hyperlink = function(cell, target, tooltip) {\n\tif(!target) {\n\t\tdelete cell.l;\n\t} else {\n\t\tcell.l = ({ Target: target });\n\t\tif(tooltip) cell.l.Tooltip = tooltip;\n\t}\n\treturn cell;\n};\nutils.cell_set_internal_link = function(cell, range, tooltip) { return utils.cell_set_hyperlink(cell, \"#\" + range, tooltip); };\n\n/* add to cell comments */\nutils.cell_add_comment = function(cell, text, author) {\n\tif(!cell.c) cell.c = [];\n\tcell.c.push({t:text, a:author||\"SheetJS\"});\n};\n\n/* set array formula and flush related cells */\nutils.sheet_set_array_formula = function(ws, range, formula) {\n\tvar rng = typeof range != \"string\" ? range : safe_decode_range(range);\n\tvar rngstr = typeof range == \"string\" ? range : encode_range(range);\n\tfor(var R = rng.s.r; R <= rng.e.r; ++R) for(var C = rng.s.c; C <= rng.e.c; ++C) {\n\t\tvar cell = ws_get_cell_stub(ws, R, C);\n\t\tcell.t = 'n';\n\t\tcell.F = rngstr;\n\t\tdelete cell.v;\n\t\tif(R == rng.s.r && C == rng.s.c) cell.f = formula;\n\t}\n\treturn ws;\n};\n\nreturn utils;\n})(utils);\n\nif(has_buf && typeof require != 'undefined') (function() {\n\tvar Readable = require('stream').Readable;\n\n\tvar write_csv_stream = function(sheet, opts) {\n\t\tvar stream = Readable();\n\t\tvar o = opts == null ? {} : opts;\n\t\tif(sheet == null || sheet[\"!ref\"] == null) { stream.push(null); return stream; }\n\t\tvar r = safe_decode_range(sheet[\"!ref\"]);\n\t\tvar FS = o.FS !== undefined ? o.FS : \",\", fs = FS.charCodeAt(0);\n\t\tvar RS = o.RS !== undefined ? o.RS : \"\\n\", rs = RS.charCodeAt(0);\n\t\tvar endregex = new RegExp((FS==\"|\" ? \"\\\\|\" : FS)+\"+$\");\n\t\tvar row = \"\", cols = [];\n\t\to.dense = Array.isArray(sheet);\n\t\tvar colinfo = o.skipHidden && sheet[\"!cols\"] || [];\n\t\tvar rowinfo = o.skipHidden && sheet[\"!rows\"] || [];\n\t\tfor(var C = r.s.c; C <= r.e.c; ++C) if (!((colinfo[C]||{}).hidden)) cols[C] = encode_col(C);\n\t\tvar R = r.s.r;\n\t\tvar BOM = false;\n\t\tstream._read = function() {\n\t\t\tif(!BOM) { BOM = true; return stream.push(\"\\uFEFF\"); }\n\t\t\twhile(R <= r.e.r) {\n\t\t\t\t++R;\n\t\t\t\tif ((rowinfo[R-1]||{}).hidden) continue;\n\t\t\t\trow = make_csv_row(sheet, r, R-1, cols, fs, rs, FS, o);\n\t\t\t\tif(row != null) {\n\t\t\t\t\tif(o.strip) row = row.replace(endregex,\"\");\n\t\t\t\t\tstream.push(row + RS);\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif(R > r.e.r) return stream.push(null);\n\t\t};\n\t\treturn stream;\n\t};\n\n\tvar write_html_stream = function(ws, opts) {\n\t\tvar stream = Readable();\n\n\t\tvar o = opts || {};\n\t\tvar header = o.header != null ? o.header : HTML_.BEGIN;\n\t\tvar footer = o.footer != null ? o.footer : HTML_.END;\n\t\tstream.push(header);\n\t\tvar r = decode_range(ws['!ref']);\n\t\to.dense = Array.isArray(ws);\n\t\tstream.push(HTML_._preamble(ws, r, o));\n\t\tvar R = r.s.r;\n\t\tvar end = false;\n\t\tstream._read = function() {\n\t\t\tif(R > r.e.r) {\n\t\t\t\tif(!end) { end = true; stream.push(\"\" + footer); }\n\t\t\t\treturn stream.push(null);\n\t\t\t}\n\t\t\twhile(R <= r.e.r) {\n\t\t\t\tstream.push(HTML_._row(ws, r, R, o));\n\t\t\t\t++R;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t};\n\t\treturn stream;\n\t};\n\n\tvar write_json_stream = function(sheet, opts) {\n\t\tvar stream = Readable({objectMode:true});\n\n\t\tif(sheet == null || sheet[\"!ref\"] == null) { stream.push(null); return stream; }\n\t\tvar val = {t:'n',v:0}, header = 0, offset = 1, hdr = [], v=0, vv=\"\";\n\t\tvar r = {s:{r:0,c:0},e:{r:0,c:0}};\n\t\tvar o = opts || {};\n\t\tvar range = o.range != null ? o.range : sheet[\"!ref\"];\n\t\tif(o.header === 1) header = 1;\n\t\telse if(o.header === \"A\") header = 2;\n\t\telse if(Array.isArray(o.header)) header = 3;\n\t\tswitch(typeof range) {\n\t\t\tcase 'string': r = safe_decode_range(range); break;\n\t\t\tcase 'number': r = safe_decode_range(sheet[\"!ref\"]); r.s.r = range; break;\n\t\t\tdefault: r = range;\n\t\t}\n\t\tif(header > 0) offset = 0;\n\t\tvar rr = encode_row(r.s.r);\n\t\tvar cols = [];\n\t\tvar counter = 0;\n\t\tvar dense = Array.isArray(sheet);\n\t\tvar R = r.s.r, C = 0, CC = 0;\n\t\tif(dense && !sheet[R]) sheet[R] = [];\n\t\tfor(C = r.s.c; C <= r.e.c; ++C) {\n\t\t\tcols[C] = encode_col(C);\n\t\t\tval = dense ? sheet[R][C] : sheet[cols[C] + rr];\n\t\t\tswitch(header) {\n\t\t\t\tcase 1: hdr[C] = C - r.s.c; break;\n\t\t\t\tcase 2: hdr[C] = cols[C]; break;\n\t\t\t\tcase 3: hdr[C] = o.header[C - r.s.c]; break;\n\t\t\t\tdefault:\n\t\t\t\t\tif(val == null) val = {w: \"__EMPTY\", t: \"s\"};\n\t\t\t\t\tvv = v = format_cell(val, null, o);\n\t\t\t\t\tcounter = 0;\n\t\t\t\t\tfor(CC = 0; CC < hdr.length; ++CC) if(hdr[CC] == vv) vv = v + \"_\" + (++counter);\n\t\t\t\t\thdr[C] = vv;\n\t\t\t}\n\t\t}\n\t\tR = r.s.r + offset;\n\t\tstream._read = function() {\n\t\t\tif(R > r.e.r) return stream.push(null);\n\t\t\twhile(R <= r.e.r) {\n\t\t\t\t//if ((rowinfo[R-1]||{}).hidden) continue;\n\t\t\t\tvar row = make_json_row(sheet, r, R, cols, header, hdr, dense, o);\n\t\t\t\t++R;\n\t\t\t\tif((row.isempty === false) || (header === 1 ? o.blankrows !== false : !!o.blankrows)) {\n\t\t\t\t\tstream.push(row.row);\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t\treturn stream;\n\t};\n\n\tXLSX.stream = {\n\t\tto_json: write_json_stream,\n\t\tto_html: write_html_stream,\n\t\tto_csv: write_csv_stream\n\t};\n})();\n\nXLSX.parse_xlscfb = parse_xlscfb;\nXLSX.parse_ods = parse_ods;\nXLSX.parse_fods = parse_fods;\nXLSX.write_ods = write_ods;\nXLSX.parse_zip = parse_zip;\nXLSX.read = readSync; //xlsread\nXLSX.readFile = readFileSync; //readFile\nXLSX.readFileSync = readFileSync;\nXLSX.write = writeSync;\nXLSX.writeFile = writeFileSync;\nXLSX.writeFileSync = writeFileSync;\nXLSX.writeFileAsync = writeFileAsync;\nXLSX.utils = utils;\nXLSX.SSF = SSF;\nXLSX.CFB = CFB;\n}\n/*global define */\nif(typeof exports !== 'undefined') make_xlsx_lib(exports);\nelse if(typeof module !== 'undefined' && module.exports) make_xlsx_lib(module.exports);\nelse if(typeof define === 'function' && define.amd) define('xlsx', function() { if(!XLSX.version) make_xlsx_lib(XLSX); return XLSX; });\nelse make_xlsx_lib(XLSX);\n/*exported XLS, ODS */\nvar XLS = XLSX, ODS = XLSX;\n","'use strict';\nvar globalThis = require('../internals/global-this');\nvar userAgent = require('../internals/environment-user-agent');\n\nvar process = globalThis.process;\nvar Deno = globalThis.Deno;\nvar versions = process && process.versions || Deno && Deno.version;\nvar v8 = versions && versions.v8;\nvar match, version;\n\nif (v8) {\n match = v8.split('.');\n // in old Chrome, versions of V8 isn't V8 = Chrome / 10\n // but their correct versions are not interesting for us\n version = match[0] > 0 && match[0] < 4 ? 1 : +(match[0] + match[1]);\n}\n\n// BrowserFS NodeJS `process` polyfill incorrectly set `.v8` to `0.0`\n// so check `userAgent` even if `.v8` exists, but 0\nif (!version && userAgent) {\n match = userAgent.match(/Edge\\/(\\d+)/);\n if (!match || match[1] >= 74) {\n match = userAgent.match(/Chrome\\/(\\d+)/);\n if (match) version = +match[1];\n }\n}\n\nmodule.exports = version;\n","import preventScroll from '../../utils/prevent-scroll.js'\n\nexport default function () {\n let currentState\n\n return {\n preventBodyScroll (state) {\n if (\n state !== currentState\n && (currentState !== void 0 || state === true)\n ) {\n currentState = state\n preventScroll(state)\n }\n }\n }\n}\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar fails = require('../internals/fails');\nvar isCallable = require('../internals/is-callable');\nvar hasOwn = require('../internals/has-own-property');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar CONFIGURABLE_FUNCTION_NAME = require('../internals/function-name').CONFIGURABLE;\nvar inspectSource = require('../internals/inspect-source');\nvar InternalStateModule = require('../internals/internal-state');\n\nvar enforceInternalState = InternalStateModule.enforce;\nvar getInternalState = InternalStateModule.get;\nvar $String = String;\n// eslint-disable-next-line es/no-object-defineproperty -- safe\nvar defineProperty = Object.defineProperty;\nvar stringSlice = uncurryThis(''.slice);\nvar replace = uncurryThis(''.replace);\nvar join = uncurryThis([].join);\n\nvar CONFIGURABLE_LENGTH = DESCRIPTORS && !fails(function () {\n return defineProperty(function () { /* empty */ }, 'length', { value: 8 }).length !== 8;\n});\n\nvar TEMPLATE = String(String).split('String');\n\nvar makeBuiltIn = module.exports = function (value, name, options) {\n if (stringSlice($String(name), 0, 7) === 'Symbol(') {\n name = '[' + replace($String(name), /^Symbol\\(([^)]*)\\).*$/, '$1') + ']';\n }\n if (options && options.getter) name = 'get ' + name;\n if (options && options.setter) name = 'set ' + name;\n if (!hasOwn(value, 'name') || (CONFIGURABLE_FUNCTION_NAME && value.name !== name)) {\n if (DESCRIPTORS) defineProperty(value, 'name', { value: name, configurable: true });\n else value.name = name;\n }\n if (CONFIGURABLE_LENGTH && options && hasOwn(options, 'arity') && value.length !== options.arity) {\n defineProperty(value, 'length', { value: options.arity });\n }\n try {\n if (options && hasOwn(options, 'constructor') && options.constructor) {\n if (DESCRIPTORS) defineProperty(value, 'prototype', { writable: false });\n // in V8 ~ Chrome 53, prototypes of some methods, like `Array.prototype.values`, are non-writable\n } else if (value.prototype) value.prototype = undefined;\n } catch (error) { /* empty */ }\n var state = enforceInternalState(value);\n if (!hasOwn(state, 'source')) {\n state.source = join(TEMPLATE, typeof name == 'string' ? name : '');\n } return value;\n};\n\n// add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative\n// eslint-disable-next-line no-extend-native -- required\nFunction.prototype.toString = makeBuiltIn(function toString() {\n return isCallable(this) && getInternalState(this).source || inspectSource(this);\n}, 'toString');\n","'use strict';\nvar $ = require('../internals/export');\nvar toObject = require('../internals/to-object');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar setArrayLength = require('../internals/array-set-length');\nvar doesNotExceedSafeInteger = require('../internals/does-not-exceed-safe-integer');\nvar fails = require('../internals/fails');\n\nvar INCORRECT_TO_LENGTH = fails(function () {\n return [].push.call({ length: 0x100000000 }, 1) !== 4294967297;\n});\n\n// V8 <= 121 and Safari <= 15.4; FF < 23 throws InternalError\n// https://bugs.chromium.org/p/v8/issues/detail?id=12681\nvar properErrorOnNonWritableLength = function () {\n try {\n // eslint-disable-next-line es/no-object-defineproperty -- safe\n Object.defineProperty([], 'length', { writable: false }).push();\n } catch (error) {\n return error instanceof TypeError;\n }\n};\n\nvar FORCED = INCORRECT_TO_LENGTH || !properErrorOnNonWritableLength();\n\n// `Array.prototype.push` method\n// https://tc39.es/ecma262/#sec-array.prototype.push\n$({ target: 'Array', proto: true, arity: 1, forced: FORCED }, {\n // eslint-disable-next-line no-unused-vars -- required for `.length`\n push: function push(item) {\n var O = toObject(this);\n var len = lengthOfArrayLike(O);\n var argCount = arguments.length;\n doesNotExceedSafeInteger(len + argCount);\n for (var i = 0; i < argCount; i++) {\n O[len] = arguments[i];\n len++;\n }\n setArrayLength(O, len);\n return len;\n }\n});\n","/*\n\nJSZip - A Javascript class for generating and reading zip files\n\n\n(c) 2009-2014 Stuart Knightley \nDual licenced under the MIT license or GPLv3. See https://raw.github.com/Stuk/jszip/master/LICENSE.markdown.\n\nJSZip uses the library pako released under the MIT license :\nhttps://github.com/nodeca/pako/blob/master/LICENSE\n\nNote: since JSZip 3 removed critical functionality, this version assigns to the\n`JSZipSync` variable. Another JSZip version can be loaded in parallel.\n*/\n(function(e){\n\tif(\"object\"==typeof exports&&\"undefined\"!=typeof module&&\"undefined\"==typeof DO_NOT_EXPORT_JSZIP)module.exports=e();\n\telse if(\"function\"==typeof define&&define.amd&&\"undefined\"==typeof DO_NOT_EXPORT_JSZIP){JSZipSync=e();define([],e);}\n\telse{\n\t\tvar f;\n\t\t\"undefined\"!=typeof window?f=window:\n\t\t\"undefined\"!=typeof global?f=global:\n\t\t\"undefined\"!=typeof $ && $.global?f=$.global:\n\t\t\"undefined\"!=typeof self&&(f=self),f.JSZipSync=e()\n\t}\n}(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require==\"function\"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);throw new Error(\"Cannot find module '\"+o+\"'\")}var f=n[o]={exports:{}};t[o][0].call(f.exports,function(e){var n=t[o][1][e];return s(n?n:e)},f,f.exports,e,t,n,r)}return n[o].exports}var i=typeof require==\"function\"&&require;for(var o=0;o> 2;\n enc2 = ((chr1 & 3) << 4) | (chr2 >> 4);\n enc3 = ((chr2 & 15) << 2) | (chr3 >> 6);\n enc4 = chr3 & 63;\n\n if (isNaN(chr2)) {\n enc3 = enc4 = 64;\n }\n else if (isNaN(chr3)) {\n enc4 = 64;\n }\n\n output = output + _keyStr.charAt(enc1) + _keyStr.charAt(enc2) + _keyStr.charAt(enc3) + _keyStr.charAt(enc4);\n\n }\n\n return output;\n};\n\n// public method for decoding\nexports.decode = function(input, utf8) {\n var output = \"\";\n var chr1, chr2, chr3;\n var enc1, enc2, enc3, enc4;\n var i = 0;\n\n input = input.replace(/[^A-Za-z0-9\\+\\/\\=]/g, \"\");\n\n while (i < input.length) {\n\n enc1 = _keyStr.indexOf(input.charAt(i++));\n enc2 = _keyStr.indexOf(input.charAt(i++));\n enc3 = _keyStr.indexOf(input.charAt(i++));\n enc4 = _keyStr.indexOf(input.charAt(i++));\n\n chr1 = (enc1 << 2) | (enc2 >> 4);\n chr2 = ((enc2 & 15) << 4) | (enc3 >> 2);\n chr3 = ((enc3 & 3) << 6) | enc4;\n\n output = output + String.fromCharCode(chr1);\n\n if (enc3 != 64) {\n output = output + String.fromCharCode(chr2);\n }\n if (enc4 != 64) {\n output = output + String.fromCharCode(chr3);\n }\n\n }\n\n return output;\n\n};\n\n},{}],2:[function(_dereq_,module,exports){\n'use strict';\nfunction CompressedObject() {\n this.compressedSize = 0;\n this.uncompressedSize = 0;\n this.crc32 = 0;\n this.compressionMethod = null;\n this.compressedContent = null;\n}\n\nCompressedObject.prototype = {\n /**\n * Return the decompressed content in an unspecified format.\n * The format will depend on the decompressor.\n * @return {Object} the decompressed content.\n */\n getContent: function() {\n return null; // see implementation\n },\n /**\n * Return the compressed content in an unspecified format.\n * The format will depend on the compressed conten source.\n * @return {Object} the compressed content.\n */\n getCompressedContent: function() {\n return null; // see implementation\n }\n};\nmodule.exports = CompressedObject;\n\n},{}],3:[function(_dereq_,module,exports){\n'use strict';\nexports.STORE = {\n magic: \"\\x00\\x00\",\n compress: function(content) {\n return content; // no compression\n },\n uncompress: function(content) {\n return content; // no compression\n },\n compressInputType: null,\n uncompressInputType: null\n};\nexports.DEFLATE = _dereq_('./flate');\n\n},{\"./flate\":8}],4:[function(_dereq_,module,exports){\n'use strict';\n\nvar utils = _dereq_('./utils');\n\nvar table = [\n 0x00000000, 0x77073096, 0xEE0E612C, 0x990951BA,\n 0x076DC419, 0x706AF48F, 0xE963A535, 0x9E6495A3,\n 0x0EDB8832, 0x79DCB8A4, 0xE0D5E91E, 0x97D2D988,\n 0x09B64C2B, 0x7EB17CBD, 0xE7B82D07, 0x90BF1D91,\n 0x1DB71064, 0x6AB020F2, 0xF3B97148, 0x84BE41DE,\n 0x1ADAD47D, 0x6DDDE4EB, 0xF4D4B551, 0x83D385C7,\n 0x136C9856, 0x646BA8C0, 0xFD62F97A, 0x8A65C9EC,\n 0x14015C4F, 0x63066CD9, 0xFA0F3D63, 0x8D080DF5,\n 0x3B6E20C8, 0x4C69105E, 0xD56041E4, 0xA2677172,\n 0x3C03E4D1, 0x4B04D447, 0xD20D85FD, 0xA50AB56B,\n 0x35B5A8FA, 0x42B2986C, 0xDBBBC9D6, 0xACBCF940,\n 0x32D86CE3, 0x45DF5C75, 0xDCD60DCF, 0xABD13D59,\n 0x26D930AC, 0x51DE003A, 0xC8D75180, 0xBFD06116,\n 0x21B4F4B5, 0x56B3C423, 0xCFBA9599, 0xB8BDA50F,\n 0x2802B89E, 0x5F058808, 0xC60CD9B2, 0xB10BE924,\n 0x2F6F7C87, 0x58684C11, 0xC1611DAB, 0xB6662D3D,\n 0x76DC4190, 0x01DB7106, 0x98D220BC, 0xEFD5102A,\n 0x71B18589, 0x06B6B51F, 0x9FBFE4A5, 0xE8B8D433,\n 0x7807C9A2, 0x0F00F934, 0x9609A88E, 0xE10E9818,\n 0x7F6A0DBB, 0x086D3D2D, 0x91646C97, 0xE6635C01,\n 0x6B6B51F4, 0x1C6C6162, 0x856530D8, 0xF262004E,\n 0x6C0695ED, 0x1B01A57B, 0x8208F4C1, 0xF50FC457,\n 0x65B0D9C6, 0x12B7E950, 0x8BBEB8EA, 0xFCB9887C,\n 0x62DD1DDF, 0x15DA2D49, 0x8CD37CF3, 0xFBD44C65,\n 0x4DB26158, 0x3AB551CE, 0xA3BC0074, 0xD4BB30E2,\n 0x4ADFA541, 0x3DD895D7, 0xA4D1C46D, 0xD3D6F4FB,\n 0x4369E96A, 0x346ED9FC, 0xAD678846, 0xDA60B8D0,\n 0x44042D73, 0x33031DE5, 0xAA0A4C5F, 0xDD0D7CC9,\n 0x5005713C, 0x270241AA, 0xBE0B1010, 0xC90C2086,\n 0x5768B525, 0x206F85B3, 0xB966D409, 0xCE61E49F,\n 0x5EDEF90E, 0x29D9C998, 0xB0D09822, 0xC7D7A8B4,\n 0x59B33D17, 0x2EB40D81, 0xB7BD5C3B, 0xC0BA6CAD,\n 0xEDB88320, 0x9ABFB3B6, 0x03B6E20C, 0x74B1D29A,\n 0xEAD54739, 0x9DD277AF, 0x04DB2615, 0x73DC1683,\n 0xE3630B12, 0x94643B84, 0x0D6D6A3E, 0x7A6A5AA8,\n 0xE40ECF0B, 0x9309FF9D, 0x0A00AE27, 0x7D079EB1,\n 0xF00F9344, 0x8708A3D2, 0x1E01F268, 0x6906C2FE,\n 0xF762575D, 0x806567CB, 0x196C3671, 0x6E6B06E7,\n 0xFED41B76, 0x89D32BE0, 0x10DA7A5A, 0x67DD4ACC,\n 0xF9B9DF6F, 0x8EBEEFF9, 0x17B7BE43, 0x60B08ED5,\n 0xD6D6A3E8, 0xA1D1937E, 0x38D8C2C4, 0x4FDFF252,\n 0xD1BB67F1, 0xA6BC5767, 0x3FB506DD, 0x48B2364B,\n 0xD80D2BDA, 0xAF0A1B4C, 0x36034AF6, 0x41047A60,\n 0xDF60EFC3, 0xA867DF55, 0x316E8EEF, 0x4669BE79,\n 0xCB61B38C, 0xBC66831A, 0x256FD2A0, 0x5268E236,\n 0xCC0C7795, 0xBB0B4703, 0x220216B9, 0x5505262F,\n 0xC5BA3BBE, 0xB2BD0B28, 0x2BB45A92, 0x5CB36A04,\n 0xC2D7FFA7, 0xB5D0CF31, 0x2CD99E8B, 0x5BDEAE1D,\n 0x9B64C2B0, 0xEC63F226, 0x756AA39C, 0x026D930A,\n 0x9C0906A9, 0xEB0E363F, 0x72076785, 0x05005713,\n 0x95BF4A82, 0xE2B87A14, 0x7BB12BAE, 0x0CB61B38,\n 0x92D28E9B, 0xE5D5BE0D, 0x7CDCEFB7, 0x0BDBDF21,\n 0x86D3D2D4, 0xF1D4E242, 0x68DDB3F8, 0x1FDA836E,\n 0x81BE16CD, 0xF6B9265B, 0x6FB077E1, 0x18B74777,\n 0x88085AE6, 0xFF0F6A70, 0x66063BCA, 0x11010B5C,\n 0x8F659EFF, 0xF862AE69, 0x616BFFD3, 0x166CCF45,\n 0xA00AE278, 0xD70DD2EE, 0x4E048354, 0x3903B3C2,\n 0xA7672661, 0xD06016F7, 0x4969474D, 0x3E6E77DB,\n 0xAED16A4A, 0xD9D65ADC, 0x40DF0B66, 0x37D83BF0,\n 0xA9BCAE53, 0xDEBB9EC5, 0x47B2CF7F, 0x30B5FFE9,\n 0xBDBDF21C, 0xCABAC28A, 0x53B39330, 0x24B4A3A6,\n 0xBAD03605, 0xCDD70693, 0x54DE5729, 0x23D967BF,\n 0xB3667A2E, 0xC4614AB8, 0x5D681B02, 0x2A6F2B94,\n 0xB40BBE37, 0xC30C8EA1, 0x5A05DF1B, 0x2D02EF8D\n];\n\n/**\n *\n * Javascript crc32\n * http://www.webtoolkit.info/\n *\n */\nmodule.exports = function crc32(input, crc) {\n if (typeof input === \"undefined\" || !input.length) {\n return 0;\n }\n\n var isArray = utils.getTypeOf(input) !== \"string\";\n\n if (typeof(crc) == \"undefined\") {\n crc = 0;\n }\n var x = 0;\n var y = 0;\n var b = 0;\n\n crc = crc ^ (-1);\n for (var i = 0, iTop = input.length; i < iTop; i++) {\n b = isArray ? input[i] : input.charCodeAt(i);\n y = (crc ^ b) & 0xFF;\n x = table[y];\n crc = (crc >>> 8) ^ x;\n }\n\n return crc ^ (-1);\n};\n// vim: set shiftwidth=4 softtabstop=4:\n\n},{\"./utils\":21}],5:[function(_dereq_,module,exports){\n'use strict';\nvar utils = _dereq_('./utils');\n\nfunction DataReader(data) {\n this.data = null; // type : see implementation\n this.length = 0;\n this.index = 0;\n}\nDataReader.prototype = {\n /**\n * Check that the offset will not go too far.\n * @param {string} offset the additional offset to check.\n * @throws {Error} an Error if the offset is out of bounds.\n */\n checkOffset: function(offset) {\n this.checkIndex(this.index + offset);\n },\n /**\n * Check that the specifed index will not be too far.\n * @param {string} newIndex the index to check.\n * @throws {Error} an Error if the index is out of bounds.\n */\n checkIndex: function(newIndex) {\n if (this.length < newIndex || newIndex < 0) {\n throw new Error(\"End of data reached (data length = \" + this.length + \", asked index = \" + (newIndex) + \"). Corrupted zip ?\");\n }\n },\n /**\n * Change the index.\n * @param {number} newIndex The new index.\n * @throws {Error} if the new index is out of the data.\n */\n setIndex: function(newIndex) {\n this.checkIndex(newIndex);\n this.index = newIndex;\n },\n /**\n * Skip the next n bytes.\n * @param {number} n the number of bytes to skip.\n * @throws {Error} if the new index is out of the data.\n */\n skip: function(n) {\n this.setIndex(this.index + n);\n },\n /**\n * Get the byte at the specified index.\n * @param {number} i the index to use.\n * @return {number} a byte.\n */\n byteAt: function(i) {\n // see implementations\n },\n /**\n * Get the next number with a given byte size.\n * @param {number} size the number of bytes to read.\n * @return {number} the corresponding number.\n */\n readInt: function(size) {\n var result = 0,\n i;\n this.checkOffset(size);\n for (i = this.index + size - 1; i >= this.index; i--) {\n result = (result << 8) + this.byteAt(i);\n }\n this.index += size;\n return result;\n },\n /**\n * Get the next string with a given byte size.\n * @param {number} size the number of bytes to read.\n * @return {string} the corresponding string.\n */\n readString: function(size) {\n return utils.transformTo(\"string\", this.readData(size));\n },\n /**\n * Get raw data without conversion, bytes.\n * @param {number} size the number of bytes to read.\n * @return {Object} the raw data, implementation specific.\n */\n readData: function(size) {\n // see implementations\n },\n /**\n * Find the last occurence of a zip signature (4 bytes).\n * @param {string} sig the signature to find.\n * @return {number} the index of the last occurence, -1 if not found.\n */\n lastIndexOfSignature: function(sig) {\n // see implementations\n },\n /**\n * Get the next date.\n * @return {Date} the date.\n */\n readDate: function() {\n var dostime = this.readInt(4);\n return new Date(\n ((dostime >> 25) & 0x7f) + 1980, // year\n ((dostime >> 21) & 0x0f) - 1, // month\n (dostime >> 16) & 0x1f, // day\n (dostime >> 11) & 0x1f, // hour\n (dostime >> 5) & 0x3f, // minute\n (dostime & 0x1f) << 1); // second\n }\n};\nmodule.exports = DataReader;\n\n},{\"./utils\":21}],6:[function(_dereq_,module,exports){\n'use strict';\nexports.base64 = false;\nexports.binary = false;\nexports.dir = false;\nexports.createFolders = false;\nexports.date = null;\nexports.compression = null;\nexports.comment = null;\n\n},{}],7:[function(_dereq_,module,exports){\n'use strict';\nvar utils = _dereq_('./utils');\n\n/**\n * @deprecated\n * This function will be removed in a future version without replacement.\n */\nexports.string2binary = function(str) {\n return utils.string2binary(str);\n};\n\n/**\n * @deprecated\n * This function will be removed in a future version without replacement.\n */\nexports.string2Uint8Array = function(str) {\n return utils.transformTo(\"uint8array\", str);\n};\n\n/**\n * @deprecated\n * This function will be removed in a future version without replacement.\n */\nexports.uint8Array2String = function(array) {\n return utils.transformTo(\"string\", array);\n};\n\n/**\n * @deprecated\n * This function will be removed in a future version without replacement.\n */\nexports.string2Blob = function(str) {\n var buffer = utils.transformTo(\"arraybuffer\", str);\n return utils.arrayBuffer2Blob(buffer);\n};\n\n/**\n * @deprecated\n * This function will be removed in a future version without replacement.\n */\nexports.arrayBuffer2Blob = function(buffer) {\n return utils.arrayBuffer2Blob(buffer);\n};\n\n/**\n * @deprecated\n * This function will be removed in a future version without replacement.\n */\nexports.transformTo = function(outputType, input) {\n return utils.transformTo(outputType, input);\n};\n\n/**\n * @deprecated\n * This function will be removed in a future version without replacement.\n */\nexports.getTypeOf = function(input) {\n return utils.getTypeOf(input);\n};\n\n/**\n * @deprecated\n * This function will be removed in a future version without replacement.\n */\nexports.checkSupport = function(type) {\n return utils.checkSupport(type);\n};\n\n/**\n * @deprecated\n * This value will be removed in a future version without replacement.\n */\nexports.MAX_VALUE_16BITS = utils.MAX_VALUE_16BITS;\n\n/**\n * @deprecated\n * This value will be removed in a future version without replacement.\n */\nexports.MAX_VALUE_32BITS = utils.MAX_VALUE_32BITS;\n\n\n/**\n * @deprecated\n * This function will be removed in a future version without replacement.\n */\nexports.pretty = function(str) {\n return utils.pretty(str);\n};\n\n/**\n * @deprecated\n * This function will be removed in a future version without replacement.\n */\nexports.findCompression = function(compressionMethod) {\n return utils.findCompression(compressionMethod);\n};\n\n/**\n * @deprecated\n * This function will be removed in a future version without replacement.\n */\nexports.isRegExp = function (object) {\n return utils.isRegExp(object);\n};\n\n\n},{\"./utils\":21}],8:[function(_dereq_,module,exports){\n'use strict';\nvar USE_TYPEDARRAY = (typeof Uint8Array !== 'undefined') && (typeof Uint16Array !== 'undefined') && (typeof Uint32Array !== 'undefined');\n\nvar pako = _dereq_(\"pako\");\nexports.uncompressInputType = USE_TYPEDARRAY ? \"uint8array\" : \"array\";\nexports.compressInputType = USE_TYPEDARRAY ? \"uint8array\" : \"array\";\n\nexports.magic = \"\\x08\\x00\";\nexports.compress = function(input) {\n return pako.deflateRaw(input);\n};\nexports.uncompress = function(input) {\n return pako.inflateRaw(input);\n};\n\n},{\"pako\":24}],9:[function(_dereq_,module,exports){\n'use strict';\n\nvar base64 = _dereq_('./base64');\n\n/**\nUsage:\n zip = new JSZip();\n zip.file(\"hello.txt\", \"Hello, World!\").file(\"tempfile\", \"nothing\");\n zip.folder(\"images\").file(\"smile.gif\", base64Data, {base64: true});\n zip.file(\"Xmas.txt\", \"Ho ho ho !\", {date : new Date(\"December 25, 2007 00:00:01\")});\n zip.remove(\"tempfile\");\n\n base64zip = zip.generate();\n\n**/\n\n/**\n * Representation a of zip file in js\n * @constructor\n * @param {String=|ArrayBuffer=|Uint8Array=} data the data to load, if any (optional).\n * @param {Object=} options the options for creating this objects (optional).\n */\nfunction JSZipSync(data, options) {\n // if this constructor is used without `new`, it adds `new` before itself:\n if(!(this instanceof JSZipSync)) return new JSZipSync(data, options);\n\n // object containing the files :\n // {\n // \"folder/\" : {...},\n // \"folder/data.txt\" : {...}\n // }\n this.files = {};\n\n this.comment = null;\n\n // Where we are in the hierarchy\n this.root = \"\";\n if (data) {\n this.load(data, options);\n }\n this.clone = function() {\n var newObj = new JSZipSync();\n for (var i in this) {\n if (typeof this[i] !== \"function\") {\n newObj[i] = this[i];\n }\n }\n return newObj;\n };\n}\nJSZipSync.prototype = _dereq_('./object');\nJSZipSync.prototype.load = _dereq_('./load');\nJSZipSync.support = _dereq_('./support');\nJSZipSync.defaults = _dereq_('./defaults');\n\n/**\n * @deprecated\n * This namespace will be removed in a future version without replacement.\n */\nJSZipSync.utils = _dereq_('./deprecatedPublicUtils');\n\nJSZipSync.base64 = {\n /**\n * @deprecated\n * This method will be removed in a future version without replacement.\n */\n encode : function(input) {\n return base64.encode(input);\n },\n /**\n * @deprecated\n * This method will be removed in a future version without replacement.\n */\n decode : function(input) {\n return base64.decode(input);\n }\n};\nJSZipSync.compressions = _dereq_('./compressions');\nmodule.exports = JSZipSync;\n\n},{\"./base64\":1,\"./compressions\":3,\"./defaults\":6,\"./deprecatedPublicUtils\":7,\"./load\":10,\"./object\":13,\"./support\":17}],10:[function(_dereq_,module,exports){\n'use strict';\nvar base64 = _dereq_('./base64');\nvar ZipEntries = _dereq_('./zipEntries');\nmodule.exports = function(data, options) {\n var files, zipEntries, i, input;\n options = options || {};\n if (options.base64) {\n data = base64.decode(data);\n }\n\n zipEntries = new ZipEntries(data, options);\n files = zipEntries.files;\n for (i = 0; i < files.length; i++) {\n input = files[i];\n this.file(input.fileName, input.decompressed, {\n binary: true,\n optimizedBinaryString: true,\n date: input.date,\n dir: input.dir,\n comment : input.fileComment.length ? input.fileComment : null,\n createFolders: options.createFolders\n });\n }\n if (zipEntries.zipComment.length) {\n this.comment = zipEntries.zipComment;\n }\n\n return this;\n};\n\n},{\"./base64\":1,\"./zipEntries\":22}],11:[function(_dereq_,module,exports){\n(function (Buffer){\n'use strict';\nvar Buffer_from = /*::(*/function(){}/*:: :any)*/;\nif(typeof Buffer !== 'undefined') {\n\tvar nbfs = !Buffer.from;\n\tif(!nbfs) try { Buffer.from(\"foo\", \"utf8\"); } catch(e) { nbfs = true; }\n\tBuffer_from = nbfs ? function(buf, enc) { return (enc) ? new Buffer(buf, enc) : new Buffer(buf); } : Buffer.from.bind(Buffer);\n\t// $FlowIgnore\n\tif(!Buffer.alloc) Buffer.alloc = function(n) { return new Buffer(n); };\n}\nmodule.exports = function(data, encoding){\n return typeof data == 'number' ? Buffer.alloc(data) : Buffer_from(data, encoding);\n};\nmodule.exports.test = function(b){\n return Buffer.isBuffer(b);\n};\n}).call(this,(typeof Buffer !== \"undefined\" ? Buffer : undefined))\n},{}],12:[function(_dereq_,module,exports){\n'use strict';\nvar Uint8ArrayReader = _dereq_('./uint8ArrayReader');\n\nfunction NodeBufferReader(data) {\n this.data = data;\n this.length = this.data.length;\n this.index = 0;\n}\nNodeBufferReader.prototype = new Uint8ArrayReader();\n\n/**\n * @see DataReader.readData\n */\nNodeBufferReader.prototype.readData = function(size) {\n this.checkOffset(size);\n var result = this.data.slice(this.index, this.index + size);\n this.index += size;\n return result;\n};\nmodule.exports = NodeBufferReader;\n\n},{\"./uint8ArrayReader\":18}],13:[function(_dereq_,module,exports){\n'use strict';\nvar support = _dereq_('./support');\nvar utils = _dereq_('./utils');\nvar crc32 = _dereq_('./crc32');\nvar signature = _dereq_('./signature');\nvar defaults = _dereq_('./defaults');\nvar base64 = _dereq_('./base64');\nvar compressions = _dereq_('./compressions');\nvar CompressedObject = _dereq_('./compressedObject');\nvar nodeBuffer = _dereq_('./nodeBuffer');\nvar utf8 = _dereq_('./utf8');\nvar StringWriter = _dereq_('./stringWriter');\nvar Uint8ArrayWriter = _dereq_('./uint8ArrayWriter');\n\n/**\n * Returns the raw data of a ZipObject, decompress the content if necessary.\n * @param {ZipObject} file the file to use.\n * @return {String|ArrayBuffer|Uint8Array|Buffer} the data.\n */\nvar getRawData = function(file) {\n if (file._data instanceof CompressedObject) {\n file._data = file._data.getContent();\n file.options.binary = true;\n file.options.base64 = false;\n\n if (utils.getTypeOf(file._data) === \"uint8array\") {\n var copy = file._data;\n // when reading an arraybuffer, the CompressedObject mechanism will keep it and subarray() a Uint8Array.\n // if we request a file in the same format, we might get the same Uint8Array or its ArrayBuffer (the original zip file).\n file._data = new Uint8Array(copy.length);\n // with an empty Uint8Array, Opera fails with a \"Offset larger than array size\"\n if (copy.length !== 0) {\n file._data.set(copy, 0);\n }\n }\n }\n return file._data;\n};\n\n/**\n * Returns the data of a ZipObject in a binary form. If the content is an unicode string, encode it.\n * @param {ZipObject} file the file to use.\n * @return {String|ArrayBuffer|Uint8Array|Buffer} the data.\n */\nvar getBinaryData = function(file) {\n var result = getRawData(file),\n type = utils.getTypeOf(result);\n if (type === \"string\") {\n if (!file.options.binary) {\n // unicode text !\n // unicode string => binary string is a painful process, check if we can avoid it.\n if (support.nodebuffer) {\n return nodeBuffer(result, \"utf-8\");\n }\n }\n return file.asBinary();\n }\n return result;\n};\n\n/**\n * Transform this._data into a string.\n * @param {function} filter a function String -> String, applied if not null on the result.\n * @return {String} the string representing this._data.\n */\nvar dataToString = function(asUTF8) {\n var result = getRawData(this);\n if (result === null || typeof result === \"undefined\") {\n return \"\";\n }\n // if the data is a base64 string, we decode it before checking the encoding !\n if (this.options.base64) {\n result = base64.decode(result);\n }\n if (asUTF8 && this.options.binary) {\n // JSZip.prototype.utf8decode supports arrays as input\n // skip to array => string step, utf8decode will do it.\n result = out.utf8decode(result);\n }\n else {\n // no utf8 transformation, do the array => string step.\n result = utils.transformTo(\"string\", result);\n }\n\n if (!asUTF8 && !this.options.binary) {\n result = utils.transformTo(\"string\", out.utf8encode(result));\n }\n return result;\n};\n/**\n * A simple object representing a file in the zip file.\n * @constructor\n * @param {string} name the name of the file\n * @param {String|ArrayBuffer|Uint8Array|Buffer} data the data\n * @param {Object} options the options of the file\n */\nvar ZipObject = function(name, data, options) {\n this.name = name;\n this.dir = options.dir;\n this.date = options.date;\n this.comment = options.comment;\n\n this._data = data;\n this.options = options;\n\n /*\n * This object contains initial values for dir and date.\n * With them, we can check if the user changed the deprecated metadata in\n * `ZipObject#options` or not.\n */\n this._initialMetadata = {\n dir : options.dir,\n date : options.date\n };\n};\n\nZipObject.prototype = {\n /**\n * Return the content as UTF8 string.\n * @return {string} the UTF8 string.\n */\n asText: function() {\n return dataToString.call(this, true);\n },\n /**\n * Returns the binary content.\n * @return {string} the content as binary.\n */\n asBinary: function() {\n return dataToString.call(this, false);\n },\n /**\n * Returns the content as a nodejs Buffer.\n * @return {Buffer} the content as a Buffer.\n */\n asNodeBuffer: function() {\n var result = getBinaryData(this);\n return utils.transformTo(\"nodebuffer\", result);\n },\n /**\n * Returns the content as an Uint8Array.\n * @return {Uint8Array} the content as an Uint8Array.\n */\n asUint8Array: function() {\n var result = getBinaryData(this);\n return utils.transformTo(\"uint8array\", result);\n },\n /**\n * Returns the content as an ArrayBuffer.\n * @return {ArrayBuffer} the content as an ArrayBufer.\n */\n asArrayBuffer: function() {\n return this.asUint8Array().buffer;\n }\n};\n\n/**\n * Transform an integer into a string in hexadecimal.\n * @private\n * @param {number} dec the number to convert.\n * @param {number} bytes the number of bytes to generate.\n * @returns {string} the result.\n */\nvar decToHex = function(dec, bytes) {\n var hex = \"\",\n i;\n for (i = 0; i < bytes; i++) {\n hex += String.fromCharCode(dec & 0xff);\n dec = dec >>> 8;\n }\n return hex;\n};\n\n/**\n * Merge the objects passed as parameters into a new one.\n * @private\n * @param {...Object} var_args All objects to merge.\n * @return {Object} a new object with the data of the others.\n */\nvar extend = function() {\n var result = {}, i, attr;\n for (i = 0; i < arguments.length; i++) { // arguments is not enumerable in some browsers\n for (attr in arguments[i]) {\n if (arguments[i].hasOwnProperty(attr) && typeof result[attr] === \"undefined\") {\n result[attr] = arguments[i][attr];\n }\n }\n }\n return result;\n};\n\n/**\n * Transforms the (incomplete) options from the user into the complete\n * set of options to create a file.\n * @private\n * @param {Object} o the options from the user.\n * @return {Object} the complete set of options.\n */\nvar prepareFileAttrs = function(o) {\n o = o || {};\n if (o.base64 === true && (o.binary === null || o.binary === undefined)) {\n o.binary = true;\n }\n o = extend(o, defaults);\n o.date = o.date || new Date();\n if (o.compression !== null) o.compression = o.compression.toUpperCase();\n\n return o;\n};\n\n/**\n * Add a file in the current folder.\n * @private\n * @param {string} name the name of the file\n * @param {String|ArrayBuffer|Uint8Array|Buffer} data the data of the file\n * @param {Object} o the options of the file\n * @return {Object} the new file.\n */\nvar fileAdd = function(name, data, o) {\n // be sure sub folders exist\n var dataType = utils.getTypeOf(data),\n parent;\n\n o = prepareFileAttrs(o);\n\n if (o.createFolders && (parent = parentFolder(name))) {\n folderAdd.call(this, parent, true);\n }\n\n if (o.dir || data === null || typeof data === \"undefined\") {\n o.base64 = false;\n o.binary = false;\n data = null;\n }\n else if (dataType === \"string\") {\n if (o.binary && !o.base64) {\n // optimizedBinaryString == true means that the file has already been filtered with a 0xFF mask\n if (o.optimizedBinaryString !== true) {\n // this is a string, not in a base64 format.\n // Be sure that this is a correct \"binary string\"\n data = utils.string2binary(data);\n }\n }\n }\n else { // arraybuffer, uint8array, ...\n o.base64 = false;\n o.binary = true;\n\n if (!dataType && !(data instanceof CompressedObject)) {\n throw new Error(\"The data of '\" + name + \"' is in an unsupported format !\");\n }\n\n // special case : it's way easier to work with Uint8Array than with ArrayBuffer\n if (dataType === \"arraybuffer\") {\n data = utils.transformTo(\"uint8array\", data);\n }\n }\n\n var object = new ZipObject(name, data, o);\n this.files[name] = object;\n return object;\n};\n\n/**\n * Find the parent folder of the path.\n * @private\n * @param {string} path the path to use\n * @return {string} the parent folder, or \"\"\n */\nvar parentFolder = function (path) {\n if (path.slice(-1) == '/') {\n path = path.substring(0, path.length - 1);\n }\n var lastSlash = path.lastIndexOf('/');\n return (lastSlash > 0) ? path.substring(0, lastSlash) : \"\";\n};\n\n/**\n * Add a (sub) folder in the current folder.\n * @private\n * @param {string} name the folder's name\n * @param {boolean=} [createFolders] If true, automatically create sub\n * folders. Defaults to false.\n * @return {Object} the new folder.\n */\nvar folderAdd = function(name, createFolders) {\n // Check the name ends with a /\n if (name.slice(-1) != \"/\") {\n name += \"/\"; // IE doesn't like substr(-1)\n }\n\n createFolders = (typeof createFolders !== 'undefined') ? createFolders : false;\n\n // Does this folder already exist?\n if (!this.files[name]) {\n fileAdd.call(this, name, null, {\n dir: true,\n createFolders: createFolders\n });\n }\n return this.files[name];\n};\n\n/**\n * Generate a JSZip.CompressedObject for a given zipOject.\n * @param {ZipObject} file the object to read.\n * @param {JSZip.compression} compression the compression to use.\n * @return {JSZip.CompressedObject} the compressed result.\n */\nvar generateCompressedObjectFrom = function(file, compression) {\n var result = new CompressedObject(),\n content;\n\n // the data has not been decompressed, we might reuse things !\n if (file._data instanceof CompressedObject) {\n result.uncompressedSize = file._data.uncompressedSize;\n result.crc32 = file._data.crc32;\n\n if (result.uncompressedSize === 0 || file.dir) {\n compression = compressions['STORE'];\n result.compressedContent = \"\";\n result.crc32 = 0;\n }\n else if (file._data.compressionMethod === compression.magic) {\n result.compressedContent = file._data.getCompressedContent();\n }\n else {\n content = file._data.getContent();\n // need to decompress / recompress\n result.compressedContent = compression.compress(utils.transformTo(compression.compressInputType, content));\n }\n }\n else {\n // have uncompressed data\n content = getBinaryData(file);\n if (!content || content.length === 0 || file.dir) {\n compression = compressions['STORE'];\n content = \"\";\n }\n result.uncompressedSize = content.length;\n result.crc32 = crc32(content);\n result.compressedContent = compression.compress(utils.transformTo(compression.compressInputType, content));\n }\n\n result.compressedSize = result.compressedContent.length;\n result.compressionMethod = compression.magic;\n\n return result;\n};\n\n/**\n * Generate the various parts used in the construction of the final zip file.\n * @param {string} name the file name.\n * @param {ZipObject} file the file content.\n * @param {JSZip.CompressedObject} compressedObject the compressed object.\n * @param {number} offset the current offset from the start of the zip file.\n * @return {object} the zip parts.\n */\nvar generateZipParts = function(name, file, compressedObject, offset) {\n var data = compressedObject.compressedContent,\n utfEncodedFileName = utils.transformTo(\"string\", utf8.utf8encode(file.name)),\n comment = file.comment || \"\",\n utfEncodedComment = utils.transformTo(\"string\", utf8.utf8encode(comment)),\n useUTF8ForFileName = utfEncodedFileName.length !== file.name.length,\n useUTF8ForComment = utfEncodedComment.length !== comment.length,\n o = file.options,\n dosTime,\n dosDate,\n extraFields = \"\",\n unicodePathExtraField = \"\",\n unicodeCommentExtraField = \"\",\n dir, date;\n\n\n // handle the deprecated options.dir\n if (file._initialMetadata.dir !== file.dir) {\n dir = file.dir;\n } else {\n dir = o.dir;\n }\n\n // handle the deprecated options.date\n if(file._initialMetadata.date !== file.date) {\n date = file.date;\n } else {\n date = o.date;\n }\n\n\n dosTime = date.getHours();\n dosTime = dosTime << 6;\n dosTime = dosTime | date.getMinutes();\n dosTime = dosTime << 5;\n dosTime = dosTime | date.getSeconds() / 2;\n\n dosDate = date.getFullYear() - 1980;\n dosDate = dosDate << 4;\n dosDate = dosDate | (date.getMonth() + 1);\n dosDate = dosDate << 5;\n dosDate = dosDate | date.getDate();\n\n if (useUTF8ForFileName) {\n // set the unicode path extra field. unzip needs at least one extra\n // field to correctly handle unicode path, so using the path is as good\n // as any other information. This could improve the situation with\n // other archive managers too.\n // This field is usually used without the utf8 flag, with a non\n // unicode path in the header (winrar, winzip). This helps (a bit)\n // with the messy Windows' default compressed folders feature but\n // breaks on p7zip which doesn't seek the unicode path extra field.\n // So for now, UTF-8 everywhere !\n unicodePathExtraField =\n // Version\n decToHex(1, 1) +\n // NameCRC32\n decToHex(crc32(utfEncodedFileName), 4) +\n // UnicodeName\n utfEncodedFileName;\n\n extraFields +=\n // Info-ZIP Unicode Path Extra Field\n \"\\x75\\x70\" +\n // size\n decToHex(unicodePathExtraField.length, 2) +\n // content\n unicodePathExtraField;\n }\n\n if(useUTF8ForComment) {\n\n unicodeCommentExtraField =\n // Version\n decToHex(1, 1) +\n // CommentCRC32\n decToHex(this.crc32(utfEncodedComment), 4) +\n // UnicodeName\n utfEncodedComment;\n\n extraFields +=\n // Info-ZIP Unicode Path Extra Field\n \"\\x75\\x63\" +\n // size\n decToHex(unicodeCommentExtraField.length, 2) +\n // content\n unicodeCommentExtraField;\n }\n\n var header = \"\";\n\n // version needed to extract\n header += \"\\x0A\\x00\";\n // general purpose bit flag\n // set bit 11 if utf8\n header += (useUTF8ForFileName || useUTF8ForComment) ? \"\\x00\\x08\" : \"\\x00\\x00\";\n // compression method\n header += compressedObject.compressionMethod;\n // last mod file time\n header += decToHex(dosTime, 2);\n // last mod file date\n header += decToHex(dosDate, 2);\n // crc-32\n header += decToHex(compressedObject.crc32, 4);\n // compressed size\n header += decToHex(compressedObject.compressedSize, 4);\n // uncompressed size\n header += decToHex(compressedObject.uncompressedSize, 4);\n // file name length\n header += decToHex(utfEncodedFileName.length, 2);\n // extra field length\n header += decToHex(extraFields.length, 2);\n\n\n var fileRecord = signature.LOCAL_FILE_HEADER + header + utfEncodedFileName + extraFields;\n\n var dirRecord = signature.CENTRAL_FILE_HEADER +\n // version made by (00: DOS)\n \"\\x14\\x00\" +\n // file header (common to file and central directory)\n header +\n // file comment length\n decToHex(utfEncodedComment.length, 2) +\n // disk number start\n \"\\x00\\x00\" +\n // internal file attributes TODO\n \"\\x00\\x00\" +\n // external file attributes\n (dir === true ? \"\\x10\\x00\\x00\\x00\" : \"\\x00\\x00\\x00\\x00\") +\n // relative offset of local header\n decToHex(offset, 4) +\n // file name\n utfEncodedFileName +\n // extra field\n extraFields +\n // file comment\n utfEncodedComment;\n\n return {\n fileRecord: fileRecord,\n dirRecord: dirRecord,\n compressedObject: compressedObject\n };\n};\n\n\n// return the actual prototype of JSZip\nvar out = {\n /**\n * Read an existing zip and merge the data in the current JSZip object.\n * The implementation is in jszip-load.js, don't forget to include it.\n * @param {String|ArrayBuffer|Uint8Array|Buffer} stream The stream to load\n * @param {Object} options Options for loading the stream.\n * options.base64 : is the stream in base64 ? default : false\n * @return {JSZip} the current JSZip object\n */\n load: function(stream, options) {\n throw new Error(\"Load method is not defined. Is the file jszip-load.js included ?\");\n },\n\n /**\n * Filter nested files/folders with the specified function.\n * @param {Function} search the predicate to use :\n * function (relativePath, file) {...}\n * It takes 2 arguments : the relative path and the file.\n * @return {Array} An array of matching elements.\n */\n filter: function(search) {\n var result = [],\n filename, relativePath, file, fileClone;\n for (filename in this.files) {\n if (!this.files.hasOwnProperty(filename)) {\n continue;\n }\n file = this.files[filename];\n // return a new object, don't let the user mess with our internal objects :)\n fileClone = new ZipObject(file.name, file._data, extend(file.options));\n relativePath = filename.slice(this.root.length, filename.length);\n if (filename.slice(0, this.root.length) === this.root && // the file is in the current root\n search(relativePath, fileClone)) { // and the file matches the function\n result.push(fileClone);\n }\n }\n return result;\n },\n\n /**\n * Add a file to the zip file, or search a file.\n * @param {string|RegExp} name The name of the file to add (if data is defined),\n * the name of the file to find (if no data) or a regex to match files.\n * @param {String|ArrayBuffer|Uint8Array|Buffer} data The file data, either raw or base64 encoded\n * @param {Object} o File options\n * @return {JSZip|Object|Array} this JSZip object (when adding a file),\n * a file (when searching by string) or an array of files (when searching by regex).\n */\n file: function(name, data, o) {\n if (arguments.length === 1) {\n if (utils.isRegExp(name)) {\n var regexp = name;\n return this.filter(function(relativePath, file) {\n return !file.dir && regexp.test(relativePath);\n });\n }\n else { // text\n return this.filter(function(relativePath, file) {\n return !file.dir && relativePath === name;\n })[0] || null;\n }\n }\n else { // more than one argument : we have data !\n name = this.root + name;\n fileAdd.call(this, name, data, o);\n }\n return this;\n },\n\n /**\n * Add a directory to the zip file, or search.\n * @param {String|RegExp} arg The name of the directory to add, or a regex to search folders.\n * @return {JSZip} an object with the new directory as the root, or an array containing matching folders.\n */\n folder: function(arg) {\n if (!arg) {\n return this;\n }\n\n if (utils.isRegExp(arg)) {\n return this.filter(function(relativePath, file) {\n return file.dir && arg.test(relativePath);\n });\n }\n\n // else, name is a new folder\n var name = this.root + arg;\n var newFolder = folderAdd.call(this, name);\n\n // Allow chaining by returning a new object with this folder as the root\n var ret = this.clone();\n ret.root = newFolder.name;\n return ret;\n },\n\n /**\n * Delete a file, or a directory and all sub-files, from the zip\n * @param {string} name the name of the file to delete\n * @return {JSZip} this JSZip object\n */\n remove: function(name) {\n name = this.root + name;\n var file = this.files[name];\n if (!file) {\n // Look for any folders\n if (name.slice(-1) != \"/\") {\n name += \"/\";\n }\n file = this.files[name];\n }\n\n if (file && !file.dir) {\n // file\n delete this.files[name];\n } else {\n // maybe a folder, delete recursively\n var kids = this.filter(function(relativePath, file) {\n return file.name.slice(0, name.length) === name;\n });\n for (var i = 0; i < kids.length; i++) {\n delete this.files[kids[i].name];\n }\n }\n\n return this;\n },\n\n /**\n * Generate the complete zip file\n * @param {Object} options the options to generate the zip file :\n * - base64, (deprecated, use type instead) true to generate base64.\n * - compression, \"STORE\" by default.\n * - type, \"base64\" by default. Values are : string, base64, uint8array, arraybuffer, blob.\n * @return {String|Uint8Array|ArrayBuffer|Buffer|Blob} the zip file\n */\n generate: function(options) {\n options = extend(options || {}, {\n base64: true,\n compression: \"STORE\",\n type: \"base64\",\n comment: null\n });\n\n utils.checkSupport(options.type);\n\n var zipData = [],\n localDirLength = 0,\n centralDirLength = 0,\n writer, i,\n utfEncodedComment = utils.transformTo(\"string\", this.utf8encode(options.comment || this.comment || \"\"));\n\n // first, generate all the zip parts.\n for (var name in this.files) {\n if (!this.files.hasOwnProperty(name)) {\n continue;\n }\n var file = this.files[name];\n\n var compressionName = file.options.compression || options.compression.toUpperCase();\n var compression = compressions[compressionName];\n if (!compression) {\n throw new Error(compressionName + \" is not a valid compression method !\");\n }\n\n var compressedObject = generateCompressedObjectFrom.call(this, file, compression);\n\n var zipPart = generateZipParts.call(this, name, file, compressedObject, localDirLength);\n localDirLength += zipPart.fileRecord.length + compressedObject.compressedSize;\n centralDirLength += zipPart.dirRecord.length;\n zipData.push(zipPart);\n }\n\n var dirEnd = \"\";\n\n // end of central dir signature\n dirEnd = signature.CENTRAL_DIRECTORY_END +\n // number of this disk\n \"\\x00\\x00\" +\n // number of the disk with the start of the central directory\n \"\\x00\\x00\" +\n // total number of entries in the central directory on this disk\n decToHex(zipData.length, 2) +\n // total number of entries in the central directory\n decToHex(zipData.length, 2) +\n // size of the central directory 4 bytes\n decToHex(centralDirLength, 4) +\n // offset of start of central directory with respect to the starting disk number\n decToHex(localDirLength, 4) +\n // .ZIP file comment length\n decToHex(utfEncodedComment.length, 2) +\n // .ZIP file comment\n utfEncodedComment;\n\n\n // we have all the parts (and the total length)\n // time to create a writer !\n var typeName = options.type.toLowerCase();\n if(typeName===\"uint8array\"||typeName===\"arraybuffer\"||typeName===\"blob\"||typeName===\"nodebuffer\") {\n writer = new Uint8ArrayWriter(localDirLength + centralDirLength + dirEnd.length);\n }else{\n writer = new StringWriter(localDirLength + centralDirLength + dirEnd.length);\n }\n\n for (i = 0; i < zipData.length; i++) {\n writer.append(zipData[i].fileRecord);\n writer.append(zipData[i].compressedObject.compressedContent);\n }\n for (i = 0; i < zipData.length; i++) {\n writer.append(zipData[i].dirRecord);\n }\n\n writer.append(dirEnd);\n\n var zip = writer.finalize();\n\n\n\n switch(options.type.toLowerCase()) {\n // case \"zip is an Uint8Array\"\n case \"uint8array\" :\n case \"arraybuffer\" :\n case \"nodebuffer\" :\n return utils.transformTo(options.type.toLowerCase(), zip);\n case \"blob\" :\n return utils.arrayBuffer2Blob(utils.transformTo(\"arraybuffer\", zip));\n // case \"zip is a string\"\n case \"base64\" :\n return (options.base64) ? base64.encode(zip) : zip;\n default : // case \"string\" :\n return zip;\n }\n\n },\n\n /**\n * @deprecated\n * This method will be removed in a future version without replacement.\n */\n crc32: function (input, crc) {\n return crc32(input, crc);\n },\n\n /**\n * @deprecated\n * This method will be removed in a future version without replacement.\n */\n utf8encode: function (string) {\n return utils.transformTo(\"string\", utf8.utf8encode(string));\n },\n\n /**\n * @deprecated\n * This method will be removed in a future version without replacement.\n */\n utf8decode: function (input) {\n return utf8.utf8decode(input);\n }\n};\nmodule.exports = out;\n\n},{\"./base64\":1,\"./compressedObject\":2,\"./compressions\":3,\"./crc32\":4,\"./defaults\":6,\"./nodeBuffer\":11,\"./signature\":14,\"./stringWriter\":16,\"./support\":17,\"./uint8ArrayWriter\":19,\"./utf8\":20,\"./utils\":21}],14:[function(_dereq_,module,exports){\n'use strict';\nexports.LOCAL_FILE_HEADER = \"PK\\x03\\x04\";\nexports.CENTRAL_FILE_HEADER = \"PK\\x01\\x02\";\nexports.CENTRAL_DIRECTORY_END = \"PK\\x05\\x06\";\nexports.ZIP64_CENTRAL_DIRECTORY_LOCATOR = \"PK\\x06\\x07\";\nexports.ZIP64_CENTRAL_DIRECTORY_END = \"PK\\x06\\x06\";\nexports.DATA_DESCRIPTOR = \"PK\\x07\\x08\";\n\n},{}],15:[function(_dereq_,module,exports){\n'use strict';\nvar DataReader = _dereq_('./dataReader');\nvar utils = _dereq_('./utils');\n\nfunction StringReader(data, optimizedBinaryString) {\n this.data = data;\n if (!optimizedBinaryString) {\n this.data = utils.string2binary(this.data);\n }\n this.length = this.data.length;\n this.index = 0;\n}\nStringReader.prototype = new DataReader();\n/**\n * @see DataReader.byteAt\n */\nStringReader.prototype.byteAt = function(i) {\n return this.data.charCodeAt(i);\n};\n/**\n * @see DataReader.lastIndexOfSignature\n */\nStringReader.prototype.lastIndexOfSignature = function(sig) {\n return this.data.lastIndexOf(sig);\n};\n/**\n * @see DataReader.readData\n */\nStringReader.prototype.readData = function(size) {\n this.checkOffset(size);\n // this will work because the constructor applied the \"& 0xff\" mask.\n var result = this.data.slice(this.index, this.index + size);\n this.index += size;\n return result;\n};\nmodule.exports = StringReader;\n\n},{\"./dataReader\":5,\"./utils\":21}],16:[function(_dereq_,module,exports){\n'use strict';\n\nvar utils = _dereq_('./utils');\n\n/**\n * An object to write any content to a string.\n * @constructor\n */\nvar StringWriter = function() {\n this.data = [];\n};\nStringWriter.prototype = {\n /**\n * Append any content to the current string.\n * @param {Object} input the content to add.\n */\n append: function(input) {\n input = utils.transformTo(\"string\", input);\n this.data.push(input);\n },\n /**\n * Finalize the construction an return the result.\n * @return {string} the generated string.\n */\n finalize: function() {\n return this.data.join(\"\");\n }\n};\n\nmodule.exports = StringWriter;\n\n},{\"./utils\":21}],17:[function(_dereq_,module,exports){\n(function (Buffer){\n'use strict';\nexports.base64 = true;\nexports.array = true;\nexports.string = true;\nexports.arraybuffer = typeof ArrayBuffer !== \"undefined\" && typeof Uint8Array !== \"undefined\";\n// contains true if JSZip can read/generate nodejs Buffer, false otherwise.\n// Browserify will provide a Buffer implementation for browsers, which is\n// an augmented Uint8Array (i.e., can be used as either Buffer or U8).\nexports.nodebuffer = typeof Buffer !== \"undefined\";\n// contains true if JSZip can read/generate Uint8Array, false otherwise.\nexports.uint8array = typeof Uint8Array !== \"undefined\";\n\nif (typeof ArrayBuffer === \"undefined\") {\n exports.blob = false;\n}\nelse {\n var buffer = new ArrayBuffer(0);\n try {\n exports.blob = new Blob([buffer], {\n type: \"application/zip\"\n }).size === 0;\n }\n catch (e) {\n try {\n var Builder = window.BlobBuilder || window.WebKitBlobBuilder || window.MozBlobBuilder || window.MSBlobBuilder;\n var builder = new Builder();\n builder.append(buffer);\n exports.blob = builder.getBlob('application/zip').size === 0;\n }\n catch (e) {\n exports.blob = false;\n }\n }\n}\n\n}).call(this,(typeof Buffer !== \"undefined\" ? Buffer : undefined))\n},{}],18:[function(_dereq_,module,exports){\n'use strict';\nvar DataReader = _dereq_('./dataReader');\n\nfunction Uint8ArrayReader(data) {\n if (data) {\n this.data = data;\n this.length = this.data.length;\n this.index = 0;\n }\n}\nUint8ArrayReader.prototype = new DataReader();\n/**\n * @see DataReader.byteAt\n */\nUint8ArrayReader.prototype.byteAt = function(i) {\n return this.data[i];\n};\n/**\n * @see DataReader.lastIndexOfSignature\n */\nUint8ArrayReader.prototype.lastIndexOfSignature = function(sig) {\n var sig0 = sig.charCodeAt(0),\n sig1 = sig.charCodeAt(1),\n sig2 = sig.charCodeAt(2),\n sig3 = sig.charCodeAt(3);\n for (var i = this.length - 4; i >= 0; --i) {\n if (this.data[i] === sig0 && this.data[i + 1] === sig1 && this.data[i + 2] === sig2 && this.data[i + 3] === sig3) {\n return i;\n }\n }\n\n return -1;\n};\n/**\n * @see DataReader.readData\n */\nUint8ArrayReader.prototype.readData = function(size) {\n this.checkOffset(size);\n if(size === 0) {\n // in IE10, when using subarray(idx, idx), we get the array [0x00] instead of [].\n return new Uint8Array(0);\n }\n var result = this.data.subarray(this.index, this.index + size);\n this.index += size;\n return result;\n};\nmodule.exports = Uint8ArrayReader;\n\n},{\"./dataReader\":5}],19:[function(_dereq_,module,exports){\n'use strict';\n\nvar utils = _dereq_('./utils');\n\n/**\n * An object to write any content to an Uint8Array.\n * @constructor\n * @param {number} length The length of the array.\n */\nvar Uint8ArrayWriter = function(length) {\n this.data = new Uint8Array(length);\n this.index = 0;\n};\nUint8ArrayWriter.prototype = {\n /**\n * Append any content to the current array.\n * @param {Object} input the content to add.\n */\n append: function(input) {\n if (input.length !== 0) {\n // with an empty Uint8Array, Opera fails with a \"Offset larger than array size\"\n input = utils.transformTo(\"uint8array\", input);\n this.data.set(input, this.index);\n this.index += input.length;\n }\n },\n /**\n * Finalize the construction an return the result.\n * @return {Uint8Array} the generated array.\n */\n finalize: function() {\n return this.data;\n }\n};\n\nmodule.exports = Uint8ArrayWriter;\n\n},{\"./utils\":21}],20:[function(_dereq_,module,exports){\n'use strict';\n\nvar utils = _dereq_('./utils');\nvar support = _dereq_('./support');\nvar nodeBuffer = _dereq_('./nodeBuffer');\n\n/**\n * The following functions come from pako, from pako/lib/utils/strings\n * released under the MIT license, see pako https://github.com/nodeca/pako/\n */\n\n// Table with utf8 lengths (calculated by first byte of sequence)\n// Note, that 5 & 6-byte values and some 4-byte values can not be represented in JS,\n// because max possible codepoint is 0x10ffff\nvar _utf8len = new Array(256);\nfor (var i=0; i<256; i++) {\n _utf8len[i] = (i >= 252 ? 6 : i >= 248 ? 5 : i >= 240 ? 4 : i >= 224 ? 3 : i >= 192 ? 2 : 1);\n}\n_utf8len[254]=_utf8len[254]=1; // Invalid sequence start\n\n// convert string to array (typed, when possible)\nvar string2buf = function (str) {\n var buf, c, c2, m_pos, i, str_len = str.length, buf_len = 0;\n\n // count binary size\n for (m_pos = 0; m_pos < str_len; m_pos++) {\n c = str.charCodeAt(m_pos);\n if (((c & 0xfc00) === 0xd800) && (m_pos+1 < str_len)) {\n c2 = str.charCodeAt(m_pos+1);\n if ((c2 & 0xfc00) === 0xdc00) {\n c = 0x10000 + ((c - 0xd800) << 10) + (c2 - 0xdc00);\n m_pos++;\n }\n }\n buf_len += (c < 0x80) ? 1 : ((c < 0x800) ? 2 : ((c < 0x10000) ? 3 : 4));\n }\n\n // allocate buffer\n if (support.uint8array) {\n buf = new Uint8Array(buf_len);\n } else {\n buf = new Array(buf_len);\n }\n\n // convert\n for (i=0, m_pos = 0; i < buf_len; m_pos++) {\n c = str.charCodeAt(m_pos);\n if ((c & 0xfc00) === 0xd800 && (m_pos+1 < str_len)) {\n c2 = str.charCodeAt(m_pos+1);\n if ((c2 & 0xfc00) === 0xdc00) {\n c = 0x10000 + ((c - 0xd800) << 10) + (c2 - 0xdc00);\n m_pos++;\n }\n }\n if (c < 0x80) {\n /* one byte */\n buf[i++] = c;\n } else if (c < 0x800) {\n /* two bytes */\n buf[i++] = 0xC0 | (c >>> 6);\n buf[i++] = 0x80 | (c & 0x3f);\n } else if (c < 0x10000) {\n /* three bytes */\n buf[i++] = 0xE0 | (c >>> 12);\n buf[i++] = 0x80 | ((c >>> 6) & 0x3f);\n buf[i++] = 0x80 | (c & 0x3f);\n } else {\n /* four bytes */\n buf[i++] = 0xf0 | (c >>> 18);\n buf[i++] = 0x80 | ((c >>> 12) & 0x3f);\n buf[i++] = 0x80 | ((c >>> 6) & 0x3f);\n buf[i++] = 0x80 | (c & 0x3f);\n }\n }\n\n return buf;\n};\n\n// Calculate max possible position in utf8 buffer,\n// that will not break sequence. If that's not possible\n// - (very small limits) return max size as is.\n//\n// buf[] - utf8 bytes array\n// max - length limit (mandatory);\nvar utf8border = function(buf, max) {\n var pos;\n\n max = max || buf.length;\n if (max > buf.length) { max = buf.length; }\n\n // go back from last position, until start of sequence found\n pos = max-1;\n while (pos >= 0 && (buf[pos] & 0xC0) === 0x80) { pos--; }\n\n // Fuckup - very small and broken sequence,\n // return max, because we should return something anyway.\n if (pos < 0) { return max; }\n\n // If we came to start of buffer - that means vuffer is too small,\n // return max too.\n if (pos === 0) { return max; }\n\n return (pos + _utf8len[buf[pos]] > max) ? pos : max;\n};\n\n// convert array to string\nvar buf2string = function (buf) {\n var str, i, out, c, c_len;\n var len = buf.length;\n\n // Reserve max possible length (2 words per char)\n // NB: by unknown reasons, Array is significantly faster for\n // String.fromCharCode.apply than Uint16Array.\n var utf16buf = new Array(len*2);\n\n for (out=0, i=0; i 4) { utf16buf[out++] = 0xfffd; i += c_len-1; continue; }\n\n // apply mask on first byte\n c &= c_len === 2 ? 0x1f : c_len === 3 ? 0x0f : 0x07;\n // join the rest\n while (c_len > 1 && i < len) {\n c = (c << 6) | (buf[i++] & 0x3f);\n c_len--;\n }\n\n // terminated by end of string?\n if (c_len > 1) { utf16buf[out++] = 0xfffd; continue; }\n\n if (c < 0x10000) {\n utf16buf[out++] = c;\n } else {\n c -= 0x10000;\n utf16buf[out++] = 0xd800 | ((c >> 10) & 0x3ff);\n utf16buf[out++] = 0xdc00 | (c & 0x3ff);\n }\n }\n\n // shrinkBuf(utf16buf, out)\n if (utf16buf.length !== out) {\n if(utf16buf.subarray) {\n utf16buf = utf16buf.subarray(0, out);\n } else {\n utf16buf.length = out;\n }\n }\n\n // return String.fromCharCode.apply(null, utf16buf);\n return utils.applyFromCharCode(utf16buf);\n};\n\n\n// That's all for the pako functions.\n\n\n/**\n * Transform a javascript string into an array (typed if possible) of bytes,\n * UTF-8 encoded.\n * @param {String} str the string to encode\n * @return {Array|Uint8Array|Buffer} the UTF-8 encoded string.\n */\nexports.utf8encode = function utf8encode(str) {\n if (support.nodebuffer) {\n return nodeBuffer(str, \"utf-8\");\n }\n\n return string2buf(str);\n};\n\n\n/**\n * Transform a bytes array (or a representation) representing an UTF-8 encoded\n * string into a javascript string.\n * @param {Array|Uint8Array|Buffer} buf the data de decode\n * @return {String} the decoded string.\n */\nexports.utf8decode = function utf8decode(buf) {\n if (support.nodebuffer) {\n return utils.transformTo(\"nodebuffer\", buf).toString(\"utf-8\");\n }\n\n buf = utils.transformTo(support.uint8array ? \"uint8array\" : \"array\", buf);\n\n // return buf2string(buf);\n // Chrome prefers to work with \"small\" chunks of data\n // for the method buf2string.\n // Firefox and Chrome has their own shortcut, IE doesn't seem to really care.\n var result = [], k = 0, len = buf.length, chunk = 65536;\n while (k < len) {\n var nextBoundary = utf8border(buf, Math.min(k + chunk, len));\n if (support.uint8array) {\n result.push(buf2string(buf.subarray(k, nextBoundary)));\n } else {\n result.push(buf2string(buf.slice(k, nextBoundary)));\n }\n k = nextBoundary;\n }\n return result.join(\"\");\n\n};\n// vim: set shiftwidth=4 softtabstop=4:\n\n},{\"./nodeBuffer\":11,\"./support\":17,\"./utils\":21}],21:[function(_dereq_,module,exports){\n'use strict';\nvar support = _dereq_('./support');\nvar compressions = _dereq_('./compressions');\nvar nodeBuffer = _dereq_('./nodeBuffer');\n/**\n * Convert a string to a \"binary string\" : a string containing only char codes between 0 and 255.\n * @param {string} str the string to transform.\n * @return {String} the binary string.\n */\nexports.string2binary = function(str) {\n var result = \"\";\n for (var i = 0; i < str.length; i++) {\n result += String.fromCharCode(str.charCodeAt(i) & 0xff);\n }\n return result;\n};\nexports.arrayBuffer2Blob = function(buffer) {\n exports.checkSupport(\"blob\");\n\n try {\n // Blob constructor\n return new Blob([buffer], {\n type: \"application/zip\"\n });\n }\n catch (e) {\n\n try {\n // deprecated, browser only, old way\n var Builder = window.BlobBuilder || window.WebKitBlobBuilder || window.MozBlobBuilder || window.MSBlobBuilder;\n var builder = new Builder();\n builder.append(buffer);\n return builder.getBlob('application/zip');\n }\n catch (e) {\n\n // well, fuck ?!\n throw new Error(\"Bug : can't construct the Blob.\");\n }\n }\n\n\n};\n/**\n * The identity function.\n * @param {Object} input the input.\n * @return {Object} the same input.\n */\nfunction identity(input) {\n return input;\n}\n\n/**\n * Fill in an array with a string.\n * @param {String} str the string to use.\n * @param {Array|ArrayBuffer|Uint8Array|Buffer} array the array to fill in (will be mutated).\n * @return {Array|ArrayBuffer|Uint8Array|Buffer} the updated array.\n */\nfunction stringToArrayLike(str, array) {\n for (var i = 0; i < str.length; ++i) {\n array[i] = str.charCodeAt(i) & 0xFF;\n }\n return array;\n}\n\n/**\n * Transform an array-like object to a string.\n * @param {Array|ArrayBuffer|Uint8Array|Buffer} array the array to transform.\n * @return {String} the result.\n */\nfunction arrayLikeToString(array) {\n // Performances notes :\n // --------------------\n // String.fromCharCode.apply(null, array) is the fastest, see\n // see http://jsperf.com/converting-a-uint8array-to-a-string/2\n // but the stack is limited (and we can get huge arrays !).\n //\n // result += String.fromCharCode(array[i]); generate too many strings !\n //\n // This code is inspired by http://jsperf.com/arraybuffer-to-string-apply-performance/2\n var chunk = 65536;\n var result = [],\n len = array.length,\n type = exports.getTypeOf(array),\n k = 0,\n canUseApply = true;\n try {\n switch(type) {\n case \"uint8array\":\n String.fromCharCode.apply(null, new Uint8Array(0));\n break;\n case \"nodebuffer\":\n String.fromCharCode.apply(null, nodeBuffer(0));\n break;\n }\n } catch(e) {\n canUseApply = false;\n }\n\n // no apply : slow and painful algorithm\n // default browser on android 4.*\n if (!canUseApply) {\n var resultStr = \"\";\n for(var i = 0; i < array.length;i++) {\n resultStr += String.fromCharCode(array[i]);\n }\n return resultStr;\n }\n while (k < len && chunk > 1) {\n try {\n if (type === \"array\" || type === \"nodebuffer\") {\n result.push(String.fromCharCode.apply(null, array.slice(k, Math.min(k + chunk, len))));\n }\n else {\n result.push(String.fromCharCode.apply(null, array.subarray(k, Math.min(k + chunk, len))));\n }\n k += chunk;\n }\n catch (e) {\n chunk = Math.floor(chunk / 2);\n }\n }\n return result.join(\"\");\n}\n\nexports.applyFromCharCode = arrayLikeToString;\n\n\n/**\n * Copy the data from an array-like to an other array-like.\n * @param {Array|ArrayBuffer|Uint8Array|Buffer} arrayFrom the origin array.\n * @param {Array|ArrayBuffer|Uint8Array|Buffer} arrayTo the destination array which will be mutated.\n * @return {Array|ArrayBuffer|Uint8Array|Buffer} the updated destination array.\n */\nfunction arrayLikeToArrayLike(arrayFrom, arrayTo) {\n for (var i = 0; i < arrayFrom.length; i++) {\n arrayTo[i] = arrayFrom[i];\n }\n return arrayTo;\n}\n\n// a matrix containing functions to transform everything into everything.\nvar transform = {};\n\n// string to ?\ntransform[\"string\"] = {\n \"string\": identity,\n \"array\": function(input) {\n return stringToArrayLike(input, new Array(input.length));\n },\n \"arraybuffer\": function(input) {\n return transform[\"string\"][\"uint8array\"](input).buffer;\n },\n \"uint8array\": function(input) {\n return stringToArrayLike(input, new Uint8Array(input.length));\n },\n \"nodebuffer\": function(input) {\n return stringToArrayLike(input, nodeBuffer(input.length));\n }\n};\n\n// array to ?\ntransform[\"array\"] = {\n \"string\": arrayLikeToString,\n \"array\": identity,\n \"arraybuffer\": function(input) {\n return (new Uint8Array(input)).buffer;\n },\n \"uint8array\": function(input) {\n return new Uint8Array(input);\n },\n \"nodebuffer\": function(input) {\n return nodeBuffer(input);\n }\n};\n\n// arraybuffer to ?\ntransform[\"arraybuffer\"] = {\n \"string\": function(input) {\n return arrayLikeToString(new Uint8Array(input));\n },\n \"array\": function(input) {\n return arrayLikeToArrayLike(new Uint8Array(input), new Array(input.byteLength));\n },\n \"arraybuffer\": identity,\n \"uint8array\": function(input) {\n return new Uint8Array(input);\n },\n \"nodebuffer\": function(input) {\n return nodeBuffer(new Uint8Array(input));\n }\n};\n\n// uint8array to ?\ntransform[\"uint8array\"] = {\n \"string\": arrayLikeToString,\n \"array\": function(input) {\n return arrayLikeToArrayLike(input, new Array(input.length));\n },\n \"arraybuffer\": function(input) {\n return input.buffer;\n },\n \"uint8array\": identity,\n \"nodebuffer\": function(input) {\n return nodeBuffer(input);\n }\n};\n\n// nodebuffer to ?\ntransform[\"nodebuffer\"] = {\n \"string\": arrayLikeToString,\n \"array\": function(input) {\n return arrayLikeToArrayLike(input, new Array(input.length));\n },\n \"arraybuffer\": function(input) {\n return transform[\"nodebuffer\"][\"uint8array\"](input).buffer;\n },\n \"uint8array\": function(input) {\n return arrayLikeToArrayLike(input, new Uint8Array(input.length));\n },\n \"nodebuffer\": identity\n};\n\n/**\n * Transform an input into any type.\n * The supported output type are : string, array, uint8array, arraybuffer, nodebuffer.\n * If no output type is specified, the unmodified input will be returned.\n * @param {String} outputType the output type.\n * @param {String|Array|ArrayBuffer|Uint8Array|Buffer} input the input to convert.\n * @throws {Error} an Error if the browser doesn't support the requested output type.\n */\nexports.transformTo = function(outputType, input) {\n if (!input) {\n // undefined, null, etc\n // an empty string won't harm.\n input = \"\";\n }\n if (!outputType) {\n return input;\n }\n exports.checkSupport(outputType);\n var inputType = exports.getTypeOf(input);\n var result = transform[inputType][outputType](input);\n return result;\n};\n\n/**\n * Return the type of the input.\n * The type will be in a format valid for JSZip.utils.transformTo : string, array, uint8array, arraybuffer.\n * @param {Object} input the input to identify.\n * @return {String} the (lowercase) type of the input.\n */\nexports.getTypeOf = function(input) {\n if (typeof input === \"string\") {\n return \"string\";\n }\n if (Object.prototype.toString.call(input) === \"[object Array]\") {\n return \"array\";\n }\n if (support.nodebuffer && nodeBuffer.test(input)) {\n return \"nodebuffer\";\n }\n if (support.uint8array && input instanceof Uint8Array) {\n return \"uint8array\";\n }\n if (support.arraybuffer && input instanceof ArrayBuffer) {\n return \"arraybuffer\";\n }\n};\n\n/**\n * Throw an exception if the type is not supported.\n * @param {String} type the type to check.\n * @throws {Error} an Error if the browser doesn't support the requested type.\n */\nexports.checkSupport = function(type) {\n var supported = support[type.toLowerCase()];\n if (!supported) {\n throw new Error(type + \" is not supported by this browser\");\n }\n};\nexports.MAX_VALUE_16BITS = 65535;\nexports.MAX_VALUE_32BITS = -1; // well, \"\\xFF\\xFF\\xFF\\xFF\\xFF\\xFF\\xFF\\xFF\" is parsed as -1\n\n/**\n * Prettify a string read as binary.\n * @param {string} str the string to prettify.\n * @return {string} a pretty string.\n */\nexports.pretty = function(str) {\n var res = '',\n code, i;\n for (i = 0; i < (str || \"\").length; i++) {\n code = str.charCodeAt(i);\n res += '\\\\x' + (code < 16 ? \"0\" : \"\") + code.toString(16).toUpperCase();\n }\n return res;\n};\n\n/**\n * Find a compression registered in JSZip.\n * @param {string} compressionMethod the method magic to find.\n * @return {Object|null} the JSZip compression object, null if none found.\n */\nexports.findCompression = function(compressionMethod) {\n for (var method in compressions) {\n if (!compressions.hasOwnProperty(method)) {\n continue;\n }\n if (compressions[method].magic === compressionMethod) {\n return compressions[method];\n }\n }\n return null;\n};\n/**\n* Cross-window, cross-Node-context regular expression detection\n* @param {Object} object Anything\n* @return {Boolean} true if the object is a regular expression,\n* false otherwise\n*/\nexports.isRegExp = function (object) {\n return Object.prototype.toString.call(object) === \"[object RegExp]\";\n};\n\n\n},{\"./compressions\":3,\"./nodeBuffer\":11,\"./support\":17}],22:[function(_dereq_,module,exports){\n'use strict';\nvar StringReader = _dereq_('./stringReader');\nvar NodeBufferReader = _dereq_('./nodeBufferReader');\nvar Uint8ArrayReader = _dereq_('./uint8ArrayReader');\nvar utils = _dereq_('./utils');\nvar sig = _dereq_('./signature');\nvar ZipEntry = _dereq_('./zipEntry');\nvar support = _dereq_('./support');\nvar jszipProto = _dereq_('./object');\n// class ZipEntries {{{\n/**\n * All the entries in the zip file.\n * @constructor\n * @param {String|ArrayBuffer|Uint8Array} data the binary stream to load.\n * @param {Object} loadOptions Options for loading the stream.\n */\nfunction ZipEntries(data, loadOptions) {\n this.files = [];\n this.loadOptions = loadOptions;\n if (data) {\n this.load(data);\n }\n}\nZipEntries.prototype = {\n /**\n * Check that the reader is on the speficied signature.\n * @param {string} expectedSignature the expected signature.\n * @throws {Error} if it is an other signature.\n */\n checkSignature: function(expectedSignature) {\n var signature = this.reader.readString(4);\n if (signature !== expectedSignature) {\n throw new Error(\"Corrupted zip or bug : unexpected signature \" + \"(\" + utils.pretty(signature) + \", expected \" + utils.pretty(expectedSignature) + \")\");\n }\n },\n /**\n * Read the end of the central directory.\n */\n readBlockEndOfCentral: function() {\n this.diskNumber = this.reader.readInt(2);\n this.diskWithCentralDirStart = this.reader.readInt(2);\n this.centralDirRecordsOnThisDisk = this.reader.readInt(2);\n this.centralDirRecords = this.reader.readInt(2);\n this.centralDirSize = this.reader.readInt(4);\n this.centralDirOffset = this.reader.readInt(4);\n\n this.zipCommentLength = this.reader.readInt(2);\n // warning : the encoding depends of the system locale\n // On a linux machine with LANG=en_US.utf8, this field is utf8 encoded.\n // On a windows machine, this field is encoded with the localized windows code page.\n this.zipComment = this.reader.readString(this.zipCommentLength);\n // To get consistent behavior with the generation part, we will assume that\n // this is utf8 encoded.\n this.zipComment = jszipProto.utf8decode(this.zipComment);\n },\n /**\n * Read the end of the Zip 64 central directory.\n * Not merged with the method readEndOfCentral :\n * The end of central can coexist with its Zip64 brother,\n * I don't want to read the wrong number of bytes !\n */\n readBlockZip64EndOfCentral: function() {\n this.zip64EndOfCentralSize = this.reader.readInt(8);\n this.versionMadeBy = this.reader.readString(2);\n this.versionNeeded = this.reader.readInt(2);\n this.diskNumber = this.reader.readInt(4);\n this.diskWithCentralDirStart = this.reader.readInt(4);\n this.centralDirRecordsOnThisDisk = this.reader.readInt(8);\n this.centralDirRecords = this.reader.readInt(8);\n this.centralDirSize = this.reader.readInt(8);\n this.centralDirOffset = this.reader.readInt(8);\n\n this.zip64ExtensibleData = {};\n var extraDataSize = this.zip64EndOfCentralSize - 44,\n index = 0,\n extraFieldId,\n extraFieldLength,\n extraFieldValue;\n while (index < extraDataSize) {\n extraFieldId = this.reader.readInt(2);\n extraFieldLength = this.reader.readInt(4);\n extraFieldValue = this.reader.readString(extraFieldLength);\n this.zip64ExtensibleData[extraFieldId] = {\n id: extraFieldId,\n length: extraFieldLength,\n value: extraFieldValue\n };\n }\n },\n /**\n * Read the end of the Zip 64 central directory locator.\n */\n readBlockZip64EndOfCentralLocator: function() {\n this.diskWithZip64CentralDirStart = this.reader.readInt(4);\n this.relativeOffsetEndOfZip64CentralDir = this.reader.readInt(8);\n this.disksCount = this.reader.readInt(4);\n if (this.disksCount > 1) {\n throw new Error(\"Multi-volumes zip are not supported\");\n }\n },\n /**\n * Read the local files, based on the offset read in the central part.\n */\n readLocalFiles: function() {\n var i, file;\n for (i = 0; i < this.files.length; i++) {\n file = this.files[i];\n this.reader.setIndex(file.localHeaderOffset);\n this.checkSignature(sig.LOCAL_FILE_HEADER);\n file.readLocalPart(this.reader);\n file.handleUTF8();\n }\n },\n /**\n * Read the central directory.\n */\n readCentralDir: function() {\n var file;\n\n this.reader.setIndex(this.centralDirOffset);\n while (this.reader.readString(4) === sig.CENTRAL_FILE_HEADER) {\n file = new ZipEntry({\n zip64: this.zip64\n }, this.loadOptions);\n file.readCentralPart(this.reader);\n this.files.push(file);\n }\n },\n /**\n * Read the end of central directory.\n */\n readEndOfCentral: function() {\n var offset = this.reader.lastIndexOfSignature(sig.CENTRAL_DIRECTORY_END);\n if (offset === -1) {\n throw new Error(\"Corrupted zip : can't find end of central directory\");\n }\n this.reader.setIndex(offset);\n this.checkSignature(sig.CENTRAL_DIRECTORY_END);\n this.readBlockEndOfCentral();\n\n\n /* extract from the zip spec :\n 4) If one of the fields in the end of central directory\n record is too small to hold required data, the field\n should be set to -1 (0xFFFF or 0xFFFFFFFF) and the\n ZIP64 format record should be created.\n 5) The end of central directory record and the\n Zip64 end of central directory locator record must\n reside on the same disk when splitting or spanning\n an archive.\n */\n if (this.diskNumber === utils.MAX_VALUE_16BITS || this.diskWithCentralDirStart === utils.MAX_VALUE_16BITS || this.centralDirRecordsOnThisDisk === utils.MAX_VALUE_16BITS || this.centralDirRecords === utils.MAX_VALUE_16BITS || this.centralDirSize === utils.MAX_VALUE_32BITS || this.centralDirOffset === utils.MAX_VALUE_32BITS) {\n this.zip64 = true;\n\n /*\n Warning : the zip64 extension is supported, but ONLY if the 64bits integer read from\n the zip file can fit into a 32bits integer. This cannot be solved : Javascript represents\n all numbers as 64-bit double precision IEEE 754 floating point numbers.\n So, we have 53bits for integers and bitwise operations treat everything as 32bits.\n see https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Operators/Bitwise_Operators\n and http://www.ecma-international.org/publications/files/ECMA-ST/ECMA-262.pdf section 8.5\n */\n\n // should look for a zip64 EOCD locator\n offset = this.reader.lastIndexOfSignature(sig.ZIP64_CENTRAL_DIRECTORY_LOCATOR);\n if (offset === -1) {\n throw new Error(\"Corrupted zip : can't find the ZIP64 end of central directory locator\");\n }\n this.reader.setIndex(offset);\n this.checkSignature(sig.ZIP64_CENTRAL_DIRECTORY_LOCATOR);\n this.readBlockZip64EndOfCentralLocator();\n\n // now the zip64 EOCD record\n this.reader.setIndex(this.relativeOffsetEndOfZip64CentralDir);\n this.checkSignature(sig.ZIP64_CENTRAL_DIRECTORY_END);\n this.readBlockZip64EndOfCentral();\n }\n },\n prepareReader: function(data) {\n var type = utils.getTypeOf(data);\n if (type === \"string\" && !support.uint8array) {\n this.reader = new StringReader(data, this.loadOptions.optimizedBinaryString);\n }\n else if (type === \"nodebuffer\") {\n this.reader = new NodeBufferReader(data);\n }\n else {\n this.reader = new Uint8ArrayReader(utils.transformTo(\"uint8array\", data));\n }\n },\n /**\n * Read a zip file and create ZipEntries.\n * @param {String|ArrayBuffer|Uint8Array|Buffer} data the binary string representing a zip file.\n */\n load: function(data) {\n this.prepareReader(data);\n this.readEndOfCentral();\n this.readCentralDir();\n this.readLocalFiles();\n }\n};\n// }}} end of ZipEntries\nmodule.exports = ZipEntries;\n\n},{\"./nodeBufferReader\":12,\"./object\":13,\"./signature\":14,\"./stringReader\":15,\"./support\":17,\"./uint8ArrayReader\":18,\"./utils\":21,\"./zipEntry\":23}],23:[function(_dereq_,module,exports){\n'use strict';\nvar StringReader = _dereq_('./stringReader');\nvar utils = _dereq_('./utils');\nvar CompressedObject = _dereq_('./compressedObject');\nvar jszipProto = _dereq_('./object');\n// class ZipEntry {{{\n/**\n * An entry in the zip file.\n * @constructor\n * @param {Object} options Options of the current file.\n * @param {Object} loadOptions Options for loading the stream.\n */\nfunction ZipEntry(options, loadOptions) {\n this.options = options;\n this.loadOptions = loadOptions;\n}\nZipEntry.prototype = {\n /**\n * say if the file is encrypted.\n * @return {boolean} true if the file is encrypted, false otherwise.\n */\n isEncrypted: function() {\n // bit 1 is set\n return (this.bitFlag & 0x0001) === 0x0001;\n },\n /**\n * say if the file has utf-8 filename/comment.\n * @return {boolean} true if the filename/comment is in utf-8, false otherwise.\n */\n useUTF8: function() {\n // bit 11 is set\n return (this.bitFlag & 0x0800) === 0x0800;\n },\n /**\n * Prepare the function used to generate the compressed content from this ZipFile.\n * @param {DataReader} reader the reader to use.\n * @param {number} from the offset from where we should read the data.\n * @param {number} length the length of the data to read.\n * @return {Function} the callback to get the compressed content (the type depends of the DataReader class).\n */\n prepareCompressedContent: function(reader, from, length) {\n return function() {\n var previousIndex = reader.index;\n reader.setIndex(from);\n var compressedFileData = reader.readData(length);\n reader.setIndex(previousIndex);\n\n return compressedFileData;\n };\n },\n /**\n * Prepare the function used to generate the uncompressed content from this ZipFile.\n * @param {DataReader} reader the reader to use.\n * @param {number} from the offset from where we should read the data.\n * @param {number} length the length of the data to read.\n * @param {JSZip.compression} compression the compression used on this file.\n * @param {number} uncompressedSize the uncompressed size to expect.\n * @return {Function} the callback to get the uncompressed content (the type depends of the DataReader class).\n */\n prepareContent: function(reader, from, length, compression, uncompressedSize) {\n return function() {\n\n var compressedFileData = utils.transformTo(compression.uncompressInputType, this.getCompressedContent());\n var uncompressedFileData = compression.uncompress(compressedFileData);\n\n if (uncompressedFileData.length !== uncompressedSize) {\n throw new Error(\"Bug : uncompressed data size mismatch\");\n }\n\n return uncompressedFileData;\n };\n },\n /**\n * Read the local part of a zip file and add the info in this object.\n * @param {DataReader} reader the reader to use.\n */\n readLocalPart: function(reader) {\n var compression, localExtraFieldsLength;\n\n // we already know everything from the central dir !\n // If the central dir data are false, we are doomed.\n // On the bright side, the local part is scary : zip64, data descriptors, both, etc.\n // The less data we get here, the more reliable this should be.\n // Let's skip the whole header and dash to the data !\n reader.skip(22);\n // in some zip created on windows, the filename stored in the central dir contains \\ instead of /.\n // Strangely, the filename here is OK.\n // I would love to treat these zip files as corrupted (see http://www.info-zip.org/FAQ.html#backslashes\n // or APPNOTE#4.4.17.1, \"All slashes MUST be forward slashes '/'\") but there are a lot of bad zip generators...\n // Search \"unzip mismatching \"local\" filename continuing with \"central\" filename version\" on\n // the internet.\n //\n // I think I see the logic here : the central directory is used to display\n // content and the local directory is used to extract the files. Mixing / and \\\n // may be used to display \\ to windows users and use / when extracting the files.\n // Unfortunately, this lead also to some issues : http://seclists.org/fulldisclosure/2009/Sep/394\n this.fileNameLength = reader.readInt(2);\n localExtraFieldsLength = reader.readInt(2); // can't be sure this will be the same as the central dir\n this.fileName = reader.readString(this.fileNameLength);\n reader.skip(localExtraFieldsLength);\n\n if (this.compressedSize == -1 || this.uncompressedSize == -1) {\n throw new Error(\"Bug or corrupted zip : didn't get enough informations from the central directory \" + \"(compressedSize == -1 || uncompressedSize == -1)\");\n }\n\n compression = utils.findCompression(this.compressionMethod);\n if (compression === null) { // no compression found\n throw new Error(\"Corrupted zip : compression \" + utils.pretty(this.compressionMethod) + \" unknown (inner file : \" + this.fileName + \")\");\n }\n this.decompressed = new CompressedObject();\n this.decompressed.compressedSize = this.compressedSize;\n this.decompressed.uncompressedSize = this.uncompressedSize;\n this.decompressed.crc32 = this.crc32;\n this.decompressed.compressionMethod = this.compressionMethod;\n this.decompressed.getCompressedContent = this.prepareCompressedContent(reader, reader.index, this.compressedSize, compression);\n this.decompressed.getContent = this.prepareContent(reader, reader.index, this.compressedSize, compression, this.uncompressedSize);\n\n // we need to compute the crc32...\n if (this.loadOptions.checkCRC32) {\n this.decompressed = utils.transformTo(\"string\", this.decompressed.getContent());\n if (jszipProto.crc32(this.decompressed) !== this.crc32) {\n throw new Error(\"Corrupted zip : CRC32 mismatch\");\n }\n }\n },\n\n /**\n * Read the central part of a zip file and add the info in this object.\n * @param {DataReader} reader the reader to use.\n */\n readCentralPart: function(reader) {\n this.versionMadeBy = reader.readString(2);\n this.versionNeeded = reader.readInt(2);\n this.bitFlag = reader.readInt(2);\n this.compressionMethod = reader.readString(2);\n this.date = reader.readDate();\n this.crc32 = reader.readInt(4);\n this.compressedSize = reader.readInt(4);\n this.uncompressedSize = reader.readInt(4);\n this.fileNameLength = reader.readInt(2);\n this.extraFieldsLength = reader.readInt(2);\n this.fileCommentLength = reader.readInt(2);\n this.diskNumberStart = reader.readInt(2);\n this.internalFileAttributes = reader.readInt(2);\n this.externalFileAttributes = reader.readInt(4);\n this.localHeaderOffset = reader.readInt(4);\n\n if (this.isEncrypted()) {\n throw new Error(\"Encrypted zip are not supported\");\n }\n\n this.fileName = reader.readString(this.fileNameLength);\n this.readExtraFields(reader);\n this.parseZIP64ExtraField(reader);\n this.fileComment = reader.readString(this.fileCommentLength);\n\n // warning, this is true only for zip with madeBy == DOS (plateform dependent feature)\n this.dir = this.externalFileAttributes & 0x00000010 ? true : false;\n },\n /**\n * Parse the ZIP64 extra field and merge the info in the current ZipEntry.\n * @param {DataReader} reader the reader to use.\n */\n parseZIP64ExtraField: function(reader) {\n\n if (!this.extraFields[0x0001]) {\n return;\n }\n\n // should be something, preparing the extra reader\n var extraReader = new StringReader(this.extraFields[0x0001].value);\n\n // I really hope that these 64bits integer can fit in 32 bits integer, because js\n // won't let us have more.\n if (this.uncompressedSize === utils.MAX_VALUE_32BITS) {\n this.uncompressedSize = extraReader.readInt(8);\n }\n if (this.compressedSize === utils.MAX_VALUE_32BITS) {\n this.compressedSize = extraReader.readInt(8);\n }\n if (this.localHeaderOffset === utils.MAX_VALUE_32BITS) {\n this.localHeaderOffset = extraReader.readInt(8);\n }\n if (this.diskNumberStart === utils.MAX_VALUE_32BITS) {\n this.diskNumberStart = extraReader.readInt(4);\n }\n },\n /**\n * Read the central part of a zip file and add the info in this object.\n * @param {DataReader} reader the reader to use.\n */\n readExtraFields: function(reader) {\n var start = reader.index,\n extraFieldId,\n extraFieldLength,\n extraFieldValue;\n\n this.extraFields = this.extraFields || {};\n\n while (reader.index < start + this.extraFieldsLength) {\n extraFieldId = reader.readInt(2);\n extraFieldLength = reader.readInt(2);\n extraFieldValue = reader.readString(extraFieldLength);\n\n this.extraFields[extraFieldId] = {\n id: extraFieldId,\n length: extraFieldLength,\n value: extraFieldValue\n };\n }\n },\n /**\n * Apply an UTF8 transformation if needed.\n */\n handleUTF8: function() {\n if (this.useUTF8()) {\n this.fileName = jszipProto.utf8decode(this.fileName);\n this.fileComment = jszipProto.utf8decode(this.fileComment);\n } else {\n var upath = this.findExtraFieldUnicodePath();\n if (upath !== null) {\n this.fileName = upath;\n }\n var ucomment = this.findExtraFieldUnicodeComment();\n if (ucomment !== null) {\n this.fileComment = ucomment;\n }\n }\n },\n\n /**\n * Find the unicode path declared in the extra field, if any.\n * @return {String} the unicode path, null otherwise.\n */\n findExtraFieldUnicodePath: function() {\n var upathField = this.extraFields[0x7075];\n if (upathField) {\n var extraReader = new StringReader(upathField.value);\n\n // wrong version\n if (extraReader.readInt(1) !== 1) {\n return null;\n }\n\n // the crc of the filename changed, this field is out of date.\n if (jszipProto.crc32(this.fileName) !== extraReader.readInt(4)) {\n return null;\n }\n\n return jszipProto.utf8decode(extraReader.readString(upathField.length - 5));\n }\n return null;\n },\n\n /**\n * Find the unicode comment declared in the extra field, if any.\n * @return {String} the unicode comment, null otherwise.\n */\n findExtraFieldUnicodeComment: function() {\n var ucommentField = this.extraFields[0x6375];\n if (ucommentField) {\n var extraReader = new StringReader(ucommentField.value);\n\n // wrong version\n if (extraReader.readInt(1) !== 1) {\n return null;\n }\n\n // the crc of the comment changed, this field is out of date.\n if (jszipProto.crc32(this.fileComment) !== extraReader.readInt(4)) {\n return null;\n }\n\n return jszipProto.utf8decode(extraReader.readString(ucommentField.length - 5));\n }\n return null;\n }\n};\nmodule.exports = ZipEntry;\n\n},{\"./compressedObject\":2,\"./object\":13,\"./stringReader\":15,\"./utils\":21}],24:[function(_dereq_,module,exports){\n// Top level file is just a mixin of submodules & constants\n'use strict';\n\nvar assign = _dereq_('./lib/utils/common').assign;\n\nvar deflate = _dereq_('./lib/deflate');\nvar inflate = _dereq_('./lib/inflate');\nvar constants = _dereq_('./lib/zlib/constants');\n\nvar pako = {};\n\nassign(pako, deflate, inflate, constants);\n\nmodule.exports = pako;\n},{\"./lib/deflate\":25,\"./lib/inflate\":26,\"./lib/utils/common\":27,\"./lib/zlib/constants\":30}],25:[function(_dereq_,module,exports){\n'use strict';\n\n\nvar zlib_deflate = _dereq_('./zlib/deflate.js');\nvar utils = _dereq_('./utils/common');\nvar strings = _dereq_('./utils/strings');\nvar msg = _dereq_('./zlib/messages');\nvar zstream = _dereq_('./zlib/zstream');\n\n\n/* Public constants ==========================================================*/\n/* ===========================================================================*/\n\nvar Z_NO_FLUSH = 0;\nvar Z_FINISH = 4;\n\nvar Z_OK = 0;\nvar Z_STREAM_END = 1;\n\nvar Z_DEFAULT_COMPRESSION = -1;\n\nvar Z_DEFAULT_STRATEGY = 0;\n\nvar Z_DEFLATED = 8;\n\n/* ===========================================================================*/\n\n\n/**\n * class Deflate\n *\n * Generic JS-style wrapper for zlib calls. If you don't need\n * streaming behaviour - use more simple functions: [[deflate]],\n * [[deflateRaw]] and [[gzip]].\n **/\n\n/* internal\n * Deflate.chunks -> Array\n *\n * Chunks of output data, if [[Deflate#onData]] not overriden.\n **/\n\n/**\n * Deflate.result -> Uint8Array|Array\n *\n * Compressed result, generated by default [[Deflate#onData]]\n * and [[Deflate#onEnd]] handlers. Filled after you push last chunk\n * (call [[Deflate#push]] with `Z_FINISH` / `true` param).\n **/\n\n/**\n * Deflate.err -> Number\n *\n * Error code after deflate finished. 0 (Z_OK) on success.\n * You will not need it in real life, because deflate errors\n * are possible only on wrong options or bad `onData` / `onEnd`\n * custom handlers.\n **/\n\n/**\n * Deflate.msg -> String\n *\n * Error message, if [[Deflate.err]] != 0\n **/\n\n\n/**\n * new Deflate(options)\n * - options (Object): zlib deflate options.\n *\n * Creates new deflator instance with specified params. Throws exception\n * on bad params. Supported options:\n *\n * - `level`\n * - `windowBits`\n * - `memLevel`\n * - `strategy`\n *\n * [http://zlib.net/manual.html#Advanced](http://zlib.net/manual.html#Advanced)\n * for more information on these.\n *\n * Additional options, for internal needs:\n *\n * - `chunkSize` - size of generated data chunks (16K by default)\n * - `raw` (Boolean) - do raw deflate\n * - `gzip` (Boolean) - create gzip wrapper\n * - `to` (String) - if equal to 'string', then result will be \"binary string\"\n * (each char code [0..255])\n * - `header` (Object) - custom header for gzip\n * - `text` (Boolean) - true if compressed data believed to be text\n * - `time` (Number) - modification time, unix timestamp\n * - `os` (Number) - operation system code\n * - `extra` (Array) - array of bytes with extra data (max 65536)\n * - `name` (String) - file name (binary string)\n * - `comment` (String) - comment (binary string)\n * - `hcrc` (Boolean) - true if header crc should be added\n *\n * ##### Example:\n *\n * ```javascript\n * var pako = require('pako')\n * , chunk1 = Uint8Array([1,2,3,4,5,6,7,8,9])\n * , chunk2 = Uint8Array([10,11,12,13,14,15,16,17,18,19]);\n *\n * var deflate = new pako.Deflate({ level: 3});\n *\n * deflate.push(chunk1, false);\n * deflate.push(chunk2, true); // true -> last chunk\n *\n * if (deflate.err) { throw new Error(deflate.err); }\n *\n * console.log(deflate.result);\n * ```\n **/\nvar Deflate = function(options) {\n\n this.options = utils.assign({\n level: Z_DEFAULT_COMPRESSION,\n method: Z_DEFLATED,\n chunkSize: 16384,\n windowBits: 15,\n memLevel: 8,\n strategy: Z_DEFAULT_STRATEGY,\n to: ''\n }, options || {});\n\n var opt = this.options;\n\n if (opt.raw && (opt.windowBits > 0)) {\n opt.windowBits = -opt.windowBits;\n }\n\n else if (opt.gzip && (opt.windowBits > 0) && (opt.windowBits < 16)) {\n opt.windowBits += 16;\n }\n\n this.err = 0; // error code, if happens (0 = Z_OK)\n this.msg = ''; // error message\n this.ended = false; // used to avoid multiple onEnd() calls\n this.chunks = []; // chunks of compressed data\n\n this.strm = new zstream();\n this.strm.avail_out = 0;\n\n var status = zlib_deflate.deflateInit2(\n this.strm,\n opt.level,\n opt.method,\n opt.windowBits,\n opt.memLevel,\n opt.strategy\n );\n\n if (status !== Z_OK) {\n throw new Error(msg[status]);\n }\n\n if (opt.header) {\n zlib_deflate.deflateSetHeader(this.strm, opt.header);\n }\n};\n\n/**\n * Deflate#push(data[, mode]) -> Boolean\n * - data (Uint8Array|Array|String): input data. Strings will be converted to\n * utf8 byte sequence.\n * - mode (Number|Boolean): 0..6 for corresponding Z_NO_FLUSH..Z_TREE modes.\n * See constants. Skipped or `false` means Z_NO_FLUSH, `true` meansh Z_FINISH.\n *\n * Sends input data to deflate pipe, generating [[Deflate#onData]] calls with\n * new compressed chunks. Returns `true` on success. The last data block must have\n * mode Z_FINISH (or `true`). That flush internal pending buffers and call\n * [[Deflate#onEnd]].\n *\n * On fail call [[Deflate#onEnd]] with error code and return false.\n *\n * We strongly recommend to use `Uint8Array` on input for best speed (output\n * array format is detected automatically). Also, don't skip last param and always\n * use the same type in your code (boolean or number). That will improve JS speed.\n *\n * For regular `Array`-s make sure all elements are [0..255].\n *\n * ##### Example\n *\n * ```javascript\n * push(chunk, false); // push one of data chunks\n * ...\n * push(chunk, true); // push last chunk\n * ```\n **/\nDeflate.prototype.push = function(data, mode) {\n var strm = this.strm;\n var chunkSize = this.options.chunkSize;\n var status, _mode;\n\n if (this.ended) { return false; }\n\n _mode = (mode === ~~mode) ? mode : ((mode === true) ? Z_FINISH : Z_NO_FLUSH);\n\n // Convert data if needed\n if (typeof data === 'string') {\n // If we need to compress text, change encoding to utf8.\n strm.input = strings.string2buf(data);\n } else {\n strm.input = data;\n }\n\n strm.next_in = 0;\n strm.avail_in = strm.input.length;\n\n do {\n if (strm.avail_out === 0) {\n strm.output = new utils.Buf8(chunkSize);\n strm.next_out = 0;\n strm.avail_out = chunkSize;\n }\n status = zlib_deflate.deflate(strm, _mode); /* no bad return value */\n\n if (status !== Z_STREAM_END && status !== Z_OK) {\n this.onEnd(status);\n this.ended = true;\n return false;\n }\n if (strm.avail_out === 0 || (strm.avail_in === 0 && _mode === Z_FINISH)) {\n if (this.options.to === 'string') {\n this.onData(strings.buf2binstring(utils.shrinkBuf(strm.output, strm.next_out)));\n } else {\n this.onData(utils.shrinkBuf(strm.output, strm.next_out));\n }\n }\n } while ((strm.avail_in > 0 || strm.avail_out === 0) && status !== Z_STREAM_END);\n\n // Finalize on the last chunk.\n if (_mode === Z_FINISH) {\n status = zlib_deflate.deflateEnd(this.strm);\n this.onEnd(status);\n this.ended = true;\n return status === Z_OK;\n }\n\n return true;\n};\n\n\n/**\n * Deflate#onData(chunk) -> Void\n * - chunk (Uint8Array|Array|String): ouput data. Type of array depends\n * on js engine support. When string output requested, each chunk\n * will be string.\n *\n * By default, stores data blocks in `chunks[]` property and glue\n * those in `onEnd`. Override this handler, if you need another behaviour.\n **/\nDeflate.prototype.onData = function(chunk) {\n this.chunks.push(chunk);\n};\n\n\n/**\n * Deflate#onEnd(status) -> Void\n * - status (Number): deflate status. 0 (Z_OK) on success,\n * other if not.\n *\n * Called once after you tell deflate that input stream complete\n * or error happenned. By default - join collected chunks,\n * free memory and fill `results` / `err` properties.\n **/\nDeflate.prototype.onEnd = function(status) {\n // On success - join\n if (status === Z_OK) {\n if (this.options.to === 'string') {\n this.result = this.chunks.join('');\n } else {\n this.result = utils.flattenChunks(this.chunks);\n }\n }\n this.chunks = [];\n this.err = status;\n this.msg = this.strm.msg;\n};\n\n\n/**\n * deflate(data[, options]) -> Uint8Array|Array|String\n * - data (Uint8Array|Array|String): input data to compress.\n * - options (Object): zlib deflate options.\n *\n * Compress `data` with deflate alrorythm and `options`.\n *\n * Supported options are:\n *\n * - level\n * - windowBits\n * - memLevel\n * - strategy\n *\n * [http://zlib.net/manual.html#Advanced](http://zlib.net/manual.html#Advanced)\n * for more information on these.\n *\n * Sugar (options):\n *\n * - `raw` (Boolean) - say that we work with raw stream, if you don't wish to specify\n * negative windowBits implicitly.\n * - `to` (String) - if equal to 'string', then result will be \"binary string\"\n * (each char code [0..255])\n *\n * ##### Example:\n *\n * ```javascript\n * var pako = require('pako')\n * , data = Uint8Array([1,2,3,4,5,6,7,8,9]);\n *\n * console.log(pako.deflate(data));\n * ```\n **/\nfunction deflate(input, options) {\n var deflator = new Deflate(options);\n\n deflator.push(input, true);\n\n // That will never happens, if you don't cheat with options :)\n if (deflator.err) { throw deflator.msg; }\n\n return deflator.result;\n}\n\n\n/**\n * deflateRaw(data[, options]) -> Uint8Array|Array|String\n * - data (Uint8Array|Array|String): input data to compress.\n * - options (Object): zlib deflate options.\n *\n * The same as [[deflate]], but creates raw data, without wrapper\n * (header and adler32 crc).\n **/\nfunction deflateRaw(input, options) {\n options = options || {};\n options.raw = true;\n return deflate(input, options);\n}\n\n\n/**\n * gzip(data[, options]) -> Uint8Array|Array|String\n * - data (Uint8Array|Array|String): input data to compress.\n * - options (Object): zlib deflate options.\n *\n * The same as [[deflate]], but create gzip wrapper instead of\n * deflate one.\n **/\nfunction gzip(input, options) {\n options = options || {};\n options.gzip = true;\n return deflate(input, options);\n}\n\n\nexports.Deflate = Deflate;\nexports.deflate = deflate;\nexports.deflateRaw = deflateRaw;\nexports.gzip = gzip;\n},{\"./utils/common\":27,\"./utils/strings\":28,\"./zlib/deflate.js\":32,\"./zlib/messages\":37,\"./zlib/zstream\":39}],26:[function(_dereq_,module,exports){\n'use strict';\n\n\nvar zlib_inflate = _dereq_('./zlib/inflate.js');\nvar utils = _dereq_('./utils/common');\nvar strings = _dereq_('./utils/strings');\nvar c = _dereq_('./zlib/constants');\nvar msg = _dereq_('./zlib/messages');\nvar zstream = _dereq_('./zlib/zstream');\nvar gzheader = _dereq_('./zlib/gzheader');\n\n\n/**\n * class Inflate\n *\n * Generic JS-style wrapper for zlib calls. If you don't need\n * streaming behaviour - use more simple functions: [[inflate]]\n * and [[inflateRaw]].\n **/\n\n/* internal\n * inflate.chunks -> Array\n *\n * Chunks of output data, if [[Inflate#onData]] not overriden.\n **/\n\n/**\n * Inflate.result -> Uint8Array|Array|String\n *\n * Uncompressed result, generated by default [[Inflate#onData]]\n * and [[Inflate#onEnd]] handlers. Filled after you push last chunk\n * (call [[Inflate#push]] with `Z_FINISH` / `true` param).\n **/\n\n/**\n * Inflate.err -> Number\n *\n * Error code after inflate finished. 0 (Z_OK) on success.\n * Should be checked if broken data possible.\n **/\n\n/**\n * Inflate.msg -> String\n *\n * Error message, if [[Inflate.err]] != 0\n **/\n\n\n/**\n * new Inflate(options)\n * - options (Object): zlib inflate options.\n *\n * Creates new inflator instance with specified params. Throws exception\n * on bad params. Supported options:\n *\n * - `windowBits`\n *\n * [http://zlib.net/manual.html#Advanced](http://zlib.net/manual.html#Advanced)\n * for more information on these.\n *\n * Additional options, for internal needs:\n *\n * - `chunkSize` - size of generated data chunks (16K by default)\n * - `raw` (Boolean) - do raw inflate\n * - `to` (String) - if equal to 'string', then result will be converted\n * from utf8 to utf16 (javascript) string. When string output requested,\n * chunk length can differ from `chunkSize`, depending on content.\n *\n * By default, when no options set, autodetect deflate/gzip data format via\n * wrapper header.\n *\n * ##### Example:\n *\n * ```javascript\n * var pako = require('pako')\n * , chunk1 = Uint8Array([1,2,3,4,5,6,7,8,9])\n * , chunk2 = Uint8Array([10,11,12,13,14,15,16,17,18,19]);\n *\n * var inflate = new pako.Inflate({ level: 3});\n *\n * inflate.push(chunk1, false);\n * inflate.push(chunk2, true); // true -> last chunk\n *\n * if (inflate.err) { throw new Error(inflate.err); }\n *\n * console.log(inflate.result);\n * ```\n **/\nvar Inflate = function(options) {\n\n this.options = utils.assign({\n chunkSize: 16384,\n windowBits: 0,\n to: ''\n }, options || {});\n\n var opt = this.options;\n\n // Force window size for `raw` data, if not set directly,\n // because we have no header for autodetect.\n if (opt.raw && (opt.windowBits >= 0) && (opt.windowBits < 16)) {\n opt.windowBits = -opt.windowBits;\n if (opt.windowBits === 0) { opt.windowBits = -15; }\n }\n\n // If `windowBits` not defined (and mode not raw) - set autodetect flag for gzip/deflate\n if ((opt.windowBits >= 0) && (opt.windowBits < 16) &&\n !(options && options.windowBits)) {\n opt.windowBits += 32;\n }\n\n // Gzip header has no info about windows size, we can do autodetect only\n // for deflate. So, if window size not set, force it to max when gzip possible\n if ((opt.windowBits > 15) && (opt.windowBits < 48)) {\n // bit 3 (16) -> gzipped data\n // bit 4 (32) -> autodetect gzip/deflate\n if ((opt.windowBits & 15) === 0) {\n opt.windowBits |= 15;\n }\n }\n\n this.err = 0; // error code, if happens (0 = Z_OK)\n this.msg = ''; // error message\n this.ended = false; // used to avoid multiple onEnd() calls\n this.chunks = []; // chunks of compressed data\n\n this.strm = new zstream();\n this.strm.avail_out = 0;\n\n var status = zlib_inflate.inflateInit2(\n this.strm,\n opt.windowBits\n );\n\n if (status !== c.Z_OK) {\n throw new Error(msg[status]);\n }\n\n this.header = new gzheader();\n\n zlib_inflate.inflateGetHeader(this.strm, this.header);\n};\n\n/**\n * Inflate#push(data[, mode]) -> Boolean\n * - data (Uint8Array|Array|String): input data\n * - mode (Number|Boolean): 0..6 for corresponding Z_NO_FLUSH..Z_TREE modes.\n * See constants. Skipped or `false` means Z_NO_FLUSH, `true` meansh Z_FINISH.\n *\n * Sends input data to inflate pipe, generating [[Inflate#onData]] calls with\n * new output chunks. Returns `true` on success. The last data block must have\n * mode Z_FINISH (or `true`). That flush internal pending buffers and call\n * [[Inflate#onEnd]].\n *\n * On fail call [[Inflate#onEnd]] with error code and return false.\n *\n * We strongly recommend to use `Uint8Array` on input for best speed (output\n * format is detected automatically). Also, don't skip last param and always\n * use the same type in your code (boolean or number). That will improve JS speed.\n *\n * For regular `Array`-s make sure all elements are [0..255].\n *\n * ##### Example\n *\n * ```javascript\n * push(chunk, false); // push one of data chunks\n * ...\n * push(chunk, true); // push last chunk\n * ```\n **/\nInflate.prototype.push = function(data, mode) {\n var strm = this.strm;\n var chunkSize = this.options.chunkSize;\n var status, _mode;\n var next_out_utf8, tail, utf8str;\n\n if (this.ended) { return false; }\n _mode = (mode === ~~mode) ? mode : ((mode === true) ? c.Z_FINISH : c.Z_NO_FLUSH);\n\n // Convert data if needed\n if (typeof data === 'string') {\n // Only binary strings can be decompressed on practice\n strm.input = strings.binstring2buf(data);\n } else {\n strm.input = data;\n }\n\n strm.next_in = 0;\n strm.avail_in = strm.input.length;\n\n do {\n if (strm.avail_out === 0) {\n strm.output = new utils.Buf8(chunkSize);\n strm.next_out = 0;\n strm.avail_out = chunkSize;\n }\n\n status = zlib_inflate.inflate(strm, c.Z_NO_FLUSH); /* no bad return value */\n\n if (status !== c.Z_STREAM_END && status !== c.Z_OK) {\n this.onEnd(status);\n this.ended = true;\n return false;\n }\n\n if (strm.next_out) {\n if (strm.avail_out === 0 || status === c.Z_STREAM_END || (strm.avail_in === 0 && _mode === c.Z_FINISH)) {\n\n if (this.options.to === 'string') {\n\n next_out_utf8 = strings.utf8border(strm.output, strm.next_out);\n\n tail = strm.next_out - next_out_utf8;\n utf8str = strings.buf2string(strm.output, next_out_utf8);\n\n // move tail\n strm.next_out = tail;\n strm.avail_out = chunkSize - tail;\n if (tail) { utils.arraySet(strm.output, strm.output, next_out_utf8, tail, 0); }\n\n this.onData(utf8str);\n\n } else {\n this.onData(utils.shrinkBuf(strm.output, strm.next_out));\n }\n }\n }\n } while ((strm.avail_in > 0) && status !== c.Z_STREAM_END);\n\n if (status === c.Z_STREAM_END) {\n _mode = c.Z_FINISH;\n }\n // Finalize on the last chunk.\n if (_mode === c.Z_FINISH) {\n status = zlib_inflate.inflateEnd(this.strm);\n this.onEnd(status);\n this.ended = true;\n return status === c.Z_OK;\n }\n\n return true;\n};\n\n\n/**\n * Inflate#onData(chunk) -> Void\n * - chunk (Uint8Array|Array|String): ouput data. Type of array depends\n * on js engine support. When string output requested, each chunk\n * will be string.\n *\n * By default, stores data blocks in `chunks[]` property and glue\n * those in `onEnd`. Override this handler, if you need another behaviour.\n **/\nInflate.prototype.onData = function(chunk) {\n this.chunks.push(chunk);\n};\n\n\n/**\n * Inflate#onEnd(status) -> Void\n * - status (Number): inflate status. 0 (Z_OK) on success,\n * other if not.\n *\n * Called once after you tell inflate that input stream complete\n * or error happenned. By default - join collected chunks,\n * free memory and fill `results` / `err` properties.\n **/\nInflate.prototype.onEnd = function(status) {\n // On success - join\n if (status === c.Z_OK) {\n if (this.options.to === 'string') {\n // Glue & convert here, until we teach pako to send\n // utf8 alligned strings to onData\n this.result = this.chunks.join('');\n } else {\n this.result = utils.flattenChunks(this.chunks);\n }\n }\n this.chunks = [];\n this.err = status;\n this.msg = this.strm.msg;\n};\n\n\n/**\n * inflate(data[, options]) -> Uint8Array|Array|String\n * - data (Uint8Array|Array|String): input data to decompress.\n * - options (Object): zlib inflate options.\n *\n * Decompress `data` with inflate/ungzip and `options`. Autodetect\n * format via wrapper header by default. That's why we don't provide\n * separate `ungzip` method.\n *\n * Supported options are:\n *\n * - windowBits\n *\n * [http://zlib.net/manual.html#Advanced](http://zlib.net/manual.html#Advanced)\n * for more information.\n *\n * Sugar (options):\n *\n * - `raw` (Boolean) - say that we work with raw stream, if you don't wish to specify\n * negative windowBits implicitly.\n * - `to` (String) - if equal to 'string', then result will be converted\n * from utf8 to utf16 (javascript) string. When string output requested,\n * chunk length can differ from `chunkSize`, depending on content.\n *\n *\n * ##### Example:\n *\n * ```javascript\n * var pako = require('pako')\n * , input = pako.deflate([1,2,3,4,5,6,7,8,9])\n * , output;\n *\n * try {\n * output = pako.inflate(input);\n * } catch (err)\n * console.log(err);\n * }\n * ```\n **/\nfunction inflate(input, options) {\n var inflator = new Inflate(options);\n\n inflator.push(input, true);\n\n // That will never happens, if you don't cheat with options :)\n if (inflator.err) { throw inflator.msg; }\n\n return inflator.result;\n}\n\n\n/**\n * inflateRaw(data[, options]) -> Uint8Array|Array|String\n * - data (Uint8Array|Array|String): input data to decompress.\n * - options (Object): zlib inflate options.\n *\n * The same as [[inflate]], but creates raw data, without wrapper\n * (header and adler32 crc).\n **/\nfunction inflateRaw(input, options) {\n options = options || {};\n options.raw = true;\n return inflate(input, options);\n}\n\n\n/**\n * ungzip(data[, options]) -> Uint8Array|Array|String\n * - data (Uint8Array|Array|String): input data to decompress.\n * - options (Object): zlib inflate options.\n *\n * Just shortcut to [[inflate]], because it autodetects format\n * by header.content. Done for convenience.\n **/\n\n\nexports.Inflate = Inflate;\nexports.inflate = inflate;\nexports.inflateRaw = inflateRaw;\nexports.ungzip = inflate;\n\n},{\"./utils/common\":27,\"./utils/strings\":28,\"./zlib/constants\":30,\"./zlib/gzheader\":33,\"./zlib/inflate.js\":35,\"./zlib/messages\":37,\"./zlib/zstream\":39}],27:[function(_dereq_,module,exports){\n'use strict';\n\n\nvar TYPED_OK = (typeof Uint8Array !== 'undefined') &&\n (typeof Uint16Array !== 'undefined') &&\n (typeof Int32Array !== 'undefined');\n\n\nexports.assign = function (obj /*from1, from2, from3, ...*/) {\n var sources = Array.prototype.slice.call(arguments, 1);\n while (sources.length) {\n var source = sources.shift();\n if (!source) { continue; }\n\n if (typeof(source) !== 'object') {\n throw new TypeError(source + 'must be non-object');\n }\n\n for (var p in source) {\n if (source.hasOwnProperty(p)) {\n obj[p] = source[p];\n }\n }\n }\n\n return obj;\n};\n\n\n// reduce buffer size, avoiding mem copy\nexports.shrinkBuf = function (buf, size) {\n if (buf.length === size) { return buf; }\n if (buf.subarray) { return buf.subarray(0, size); }\n buf.length = size;\n return buf;\n};\n\n\nvar fnTyped = {\n arraySet: function (dest, src, src_offs, len, dest_offs) {\n if (src.subarray && dest.subarray) {\n dest.set(src.subarray(src_offs, src_offs+len), dest_offs);\n return;\n }\n // Fallback to ordinary array\n for(var i=0; i= 252 ? 6 : i >= 248 ? 5 : i >= 240 ? 4 : i >= 224 ? 3 : i >= 192 ? 2 : 1);\n}\n_utf8len[254]=_utf8len[254]=1; // Invalid sequence start\n\n\n// convert string to array (typed, when possible)\nexports.string2buf = function (str) {\n var buf, c, c2, m_pos, i, str_len = str.length, buf_len = 0;\n\n // count binary size\n for (m_pos = 0; m_pos < str_len; m_pos++) {\n c = str.charCodeAt(m_pos);\n if ((c & 0xfc00) === 0xd800 && (m_pos+1 < str_len)) {\n c2 = str.charCodeAt(m_pos+1);\n if ((c2 & 0xfc00) === 0xdc00) {\n c = 0x10000 + ((c - 0xd800) << 10) + (c2 - 0xdc00);\n m_pos++;\n }\n }\n buf_len += c < 0x80 ? 1 : c < 0x800 ? 2 : c < 0x10000 ? 3 : 4;\n }\n\n // allocate buffer\n buf = new utils.Buf8(buf_len);\n\n // convert\n for (i=0, m_pos = 0; i < buf_len; m_pos++) {\n c = str.charCodeAt(m_pos);\n if ((c & 0xfc00) === 0xd800 && (m_pos+1 < str_len)) {\n c2 = str.charCodeAt(m_pos+1);\n if ((c2 & 0xfc00) === 0xdc00) {\n c = 0x10000 + ((c - 0xd800) << 10) + (c2 - 0xdc00);\n m_pos++;\n }\n }\n if (c < 0x80) {\n /* one byte */\n buf[i++] = c;\n } else if (c < 0x800) {\n /* two bytes */\n buf[i++] = 0xC0 | (c >>> 6);\n buf[i++] = 0x80 | (c & 0x3f);\n } else if (c < 0x10000) {\n /* three bytes */\n buf[i++] = 0xE0 | (c >>> 12);\n buf[i++] = 0x80 | (c >>> 6 & 0x3f);\n buf[i++] = 0x80 | (c & 0x3f);\n } else {\n /* four bytes */\n buf[i++] = 0xf0 | (c >>> 18);\n buf[i++] = 0x80 | (c >>> 12 & 0x3f);\n buf[i++] = 0x80 | (c >>> 6 & 0x3f);\n buf[i++] = 0x80 | (c & 0x3f);\n }\n }\n\n return buf;\n};\n\n// Helper (used in 2 places)\nfunction buf2binstring(buf, len) {\n // use fallback for big arrays to avoid stack overflow\n if (len < 65537) {\n if ((buf.subarray && STR_APPLY_UIA_OK) || (!buf.subarray && STR_APPLY_OK)) {\n return String.fromCharCode.apply(null, utils.shrinkBuf(buf, len));\n }\n }\n\n var result = '';\n for(var i=0; i < len; i++) {\n result += String.fromCharCode(buf[i]);\n }\n return result;\n}\n\n\n// Convert byte array to binary string\nexports.buf2binstring = function(buf) {\n return buf2binstring(buf, buf.length);\n};\n\n\n// Convert binary string (typed, when possible)\nexports.binstring2buf = function(str) {\n var buf = new utils.Buf8(str.length);\n for(var i=0, len=buf.length; i < len; i++) {\n buf[i] = str.charCodeAt(i);\n }\n return buf;\n};\n\n\n// convert array to string\nexports.buf2string = function (buf, max) {\n var i, out, c, c_len;\n var len = max || buf.length;\n\n // Reserve max possible length (2 words per char)\n // NB: by unknown reasons, Array is significantly faster for\n // String.fromCharCode.apply than Uint16Array.\n var utf16buf = new Array(len*2);\n\n for (out=0, i=0; i 4) { utf16buf[out++] = 0xfffd; i += c_len-1; continue; }\n\n // apply mask on first byte\n c &= c_len === 2 ? 0x1f : c_len === 3 ? 0x0f : 0x07;\n // join the rest\n while (c_len > 1 && i < len) {\n c = (c << 6) | (buf[i++] & 0x3f);\n c_len--;\n }\n\n // terminated by end of string?\n if (c_len > 1) { utf16buf[out++] = 0xfffd; continue; }\n\n if (c < 0x10000) {\n utf16buf[out++] = c;\n } else {\n c -= 0x10000;\n utf16buf[out++] = 0xd800 | ((c >> 10) & 0x3ff);\n utf16buf[out++] = 0xdc00 | (c & 0x3ff);\n }\n }\n\n return buf2binstring(utf16buf, out);\n};\n\n\n// Calculate max possible position in utf8 buffer,\n// that will not break sequence. If that's not possible\n// - (very small limits) return max size as is.\n//\n// buf[] - utf8 bytes array\n// max - length limit (mandatory);\nexports.utf8border = function(buf, max) {\n var pos;\n\n max = max || buf.length;\n if (max > buf.length) { max = buf.length; }\n\n // go back from last position, until start of sequence found\n pos = max-1;\n while (pos >= 0 && (buf[pos] & 0xC0) === 0x80) { pos--; }\n\n // Fuckup - very small and broken sequence,\n // return max, because we should return something anyway.\n if (pos < 0) { return max; }\n\n // If we came to start of buffer - that means vuffer is too small,\n // return max too.\n if (pos === 0) { return max; }\n\n return (pos + _utf8len[buf[pos]] > max) ? pos : max;\n};\n\n},{\"./common\":27}],29:[function(_dereq_,module,exports){\n'use strict';\n\n// Note: adler32 takes 12% for level 0 and 2% for level 6.\n// It doesn't worth to make additional optimizationa as in original.\n// Small size is preferable.\n\nfunction adler32(adler, buf, len, pos) {\n var s1 = (adler & 0xffff) |0\n , s2 = ((adler >>> 16) & 0xffff) |0\n , n = 0;\n\n while (len !== 0) {\n // Set limit ~ twice less than 5552, to keep\n // s2 in 31-bits, because we force signed ints.\n // in other case %= will fail.\n n = len > 2000 ? 2000 : len;\n len -= n;\n\n do {\n s1 = (s1 + buf[pos++]) |0;\n s2 = (s2 + s1) |0;\n } while (--n);\n\n s1 %= 65521;\n s2 %= 65521;\n }\n\n return (s1 | (s2 << 16)) |0;\n}\n\n\nmodule.exports = adler32;\n},{}],30:[function(_dereq_,module,exports){\nmodule.exports = {\n\n /* Allowed flush values; see deflate() and inflate() below for details */\n Z_NO_FLUSH: 0,\n Z_PARTIAL_FLUSH: 1,\n Z_SYNC_FLUSH: 2,\n Z_FULL_FLUSH: 3,\n Z_FINISH: 4,\n Z_BLOCK: 5,\n Z_TREES: 6,\n\n /* Return codes for the compression/decompression functions. Negative values\n * are errors, positive values are used for special but normal events.\n */\n Z_OK: 0,\n Z_STREAM_END: 1,\n Z_NEED_DICT: 2,\n Z_ERRNO: -1,\n Z_STREAM_ERROR: -2,\n Z_DATA_ERROR: -3,\n //Z_MEM_ERROR: -4,\n Z_BUF_ERROR: -5,\n //Z_VERSION_ERROR: -6,\n\n /* compression levels */\n Z_NO_COMPRESSION: 0,\n Z_BEST_SPEED: 1,\n Z_BEST_COMPRESSION: 9,\n Z_DEFAULT_COMPRESSION: -1,\n\n\n Z_FILTERED: 1,\n Z_HUFFMAN_ONLY: 2,\n Z_RLE: 3,\n Z_FIXED: 4,\n Z_DEFAULT_STRATEGY: 0,\n\n /* Possible values of the data_type field (though see inflate()) */\n Z_BINARY: 0,\n Z_TEXT: 1,\n //Z_ASCII: 1, // = Z_TEXT (deprecated)\n Z_UNKNOWN: 2,\n\n /* The deflate compression method */\n Z_DEFLATED: 8\n //Z_NULL: null // Use -1 or null inline, depending on var type\n};\n},{}],31:[function(_dereq_,module,exports){\n'use strict';\n\n// Note: we can't get significant speed boost here.\n// So write code to minimize size - no pregenerated tables\n// and array tools dependencies.\n\n\n// Use ordinary array, since untyped makes no boost here\nfunction makeTable() {\n var c, table = [];\n\n for(var n =0; n < 256; n++){\n c = n;\n for(var k =0; k < 8; k++){\n c = ((c&1) ? (0xEDB88320 ^ (c >>> 1)) : (c >>> 1));\n }\n table[n] = c;\n }\n\n return table;\n}\n\n// Create table on load. Just 255 signed longs. Not a problem.\nvar crcTable = makeTable();\n\n\nfunction crc32(crc, buf, len, pos) {\n var t = crcTable\n , end = pos + len;\n\n crc = crc ^ (-1);\n\n for (var i = pos; i < end; i++ ) {\n crc = (crc >>> 8) ^ t[(crc ^ buf[i]) & 0xFF];\n }\n\n return (crc ^ (-1)); // >>> 0;\n}\n\n\nmodule.exports = crc32;\n},{}],32:[function(_dereq_,module,exports){\n'use strict';\n\nvar utils = _dereq_('../utils/common');\nvar trees = _dereq_('./trees');\nvar adler32 = _dereq_('./adler32');\nvar crc32 = _dereq_('./crc32');\nvar msg = _dereq_('./messages');\n\n/* Public constants ==========================================================*/\n/* ===========================================================================*/\n\n\n/* Allowed flush values; see deflate() and inflate() below for details */\nvar Z_NO_FLUSH = 0;\nvar Z_PARTIAL_FLUSH = 1;\n//var Z_SYNC_FLUSH = 2;\nvar Z_FULL_FLUSH = 3;\nvar Z_FINISH = 4;\nvar Z_BLOCK = 5;\n//var Z_TREES = 6;\n\n\n/* Return codes for the compression/decompression functions. Negative values\n * are errors, positive values are used for special but normal events.\n */\nvar Z_OK = 0;\nvar Z_STREAM_END = 1;\n//var Z_NEED_DICT = 2;\n//var Z_ERRNO = -1;\nvar Z_STREAM_ERROR = -2;\nvar Z_DATA_ERROR = -3;\n//var Z_MEM_ERROR = -4;\nvar Z_BUF_ERROR = -5;\n//var Z_VERSION_ERROR = -6;\n\n\n/* compression levels */\n//var Z_NO_COMPRESSION = 0;\n//var Z_BEST_SPEED = 1;\n//var Z_BEST_COMPRESSION = 9;\nvar Z_DEFAULT_COMPRESSION = -1;\n\n\nvar Z_FILTERED = 1;\nvar Z_HUFFMAN_ONLY = 2;\nvar Z_RLE = 3;\nvar Z_FIXED = 4;\nvar Z_DEFAULT_STRATEGY = 0;\n\n/* Possible values of the data_type field (though see inflate()) */\n//var Z_BINARY = 0;\n//var Z_TEXT = 1;\n//var Z_ASCII = 1; // = Z_TEXT\nvar Z_UNKNOWN = 2;\n\n\n/* The deflate compression method */\nvar Z_DEFLATED = 8;\n\n/*============================================================================*/\n\n\nvar MAX_MEM_LEVEL = 9;\n/* Maximum value for memLevel in deflateInit2 */\nvar MAX_WBITS = 15;\n/* 32K LZ77 window */\nvar DEF_MEM_LEVEL = 8;\n\n\nvar LENGTH_CODES = 29;\n/* number of length codes, not counting the special END_BLOCK code */\nvar LITERALS = 256;\n/* number of literal bytes 0..255 */\nvar L_CODES = LITERALS + 1 + LENGTH_CODES;\n/* number of Literal or Length codes, including the END_BLOCK code */\nvar D_CODES = 30;\n/* number of distance codes */\nvar BL_CODES = 19;\n/* number of codes used to transfer the bit lengths */\nvar HEAP_SIZE = 2*L_CODES + 1;\n/* maximum heap size */\nvar MAX_BITS = 15;\n/* All codes must not exceed MAX_BITS bits */\n\nvar MIN_MATCH = 3;\nvar MAX_MATCH = 258;\nvar MIN_LOOKAHEAD = (MAX_MATCH + MIN_MATCH + 1);\n\nvar PRESET_DICT = 0x20;\n\nvar INIT_STATE = 42;\nvar EXTRA_STATE = 69;\nvar NAME_STATE = 73;\nvar COMMENT_STATE = 91;\nvar HCRC_STATE = 103;\nvar BUSY_STATE = 113;\nvar FINISH_STATE = 666;\n\nvar BS_NEED_MORE = 1; /* block not completed, need more input or more output */\nvar BS_BLOCK_DONE = 2; /* block flush performed */\nvar BS_FINISH_STARTED = 3; /* finish started, need only more output at next deflate */\nvar BS_FINISH_DONE = 4; /* finish done, accept no more input or output */\n\nvar OS_CODE = 0x03; // Unix :) . Don't detect, use this default.\n\nfunction err(strm, errorCode) {\n strm.msg = msg[errorCode];\n return errorCode;\n}\n\nfunction rank(f) {\n return ((f) << 1) - ((f) > 4 ? 9 : 0);\n}\n\nfunction zero(buf) { var len = buf.length; while (--len >= 0) { buf[len] = 0; } }\n\n\n/* =========================================================================\n * Flush as much pending output as possible. All deflate() output goes\n * through this function so some applications may wish to modify it\n * to avoid allocating a large strm->output buffer and copying into it.\n * (See also read_buf()).\n */\nfunction flush_pending(strm) {\n var s = strm.state;\n\n //_tr_flush_bits(s);\n var len = s.pending;\n if (len > strm.avail_out) {\n len = strm.avail_out;\n }\n if (len === 0) { return; }\n\n utils.arraySet(strm.output, s.pending_buf, s.pending_out, len, strm.next_out);\n strm.next_out += len;\n s.pending_out += len;\n strm.total_out += len;\n strm.avail_out -= len;\n s.pending -= len;\n if (s.pending === 0) {\n s.pending_out = 0;\n }\n}\n\n\nfunction flush_block_only (s, last) {\n trees._tr_flush_block(s, (s.block_start >= 0 ? s.block_start : -1), s.strstart - s.block_start, last);\n s.block_start = s.strstart;\n flush_pending(s.strm);\n}\n\n\nfunction put_byte(s, b) {\n s.pending_buf[s.pending++] = b;\n}\n\n\n/* =========================================================================\n * Put a short in the pending buffer. The 16-bit value is put in MSB order.\n * IN assertion: the stream state is correct and there is enough room in\n * pending_buf.\n */\nfunction putShortMSB(s, b) {\n// put_byte(s, (Byte)(b >> 8));\n// put_byte(s, (Byte)(b & 0xff));\n s.pending_buf[s.pending++] = (b >>> 8) & 0xff;\n s.pending_buf[s.pending++] = b & 0xff;\n}\n\n\n/* ===========================================================================\n * Read a new buffer from the current input stream, update the adler32\n * and total number of bytes read. All deflate() input goes through\n * this function so some applications may wish to modify it to avoid\n * allocating a large strm->input buffer and copying from it.\n * (See also flush_pending()).\n */\nfunction read_buf(strm, buf, start, size) {\n var len = strm.avail_in;\n\n if (len > size) { len = size; }\n if (len === 0) { return 0; }\n\n strm.avail_in -= len;\n\n utils.arraySet(buf, strm.input, strm.next_in, len, start);\n if (strm.state.wrap === 1) {\n strm.adler = adler32(strm.adler, buf, len, start);\n }\n\n else if (strm.state.wrap === 2) {\n strm.adler = crc32(strm.adler, buf, len, start);\n }\n\n strm.next_in += len;\n strm.total_in += len;\n\n return len;\n}\n\n\n/* ===========================================================================\n * Set match_start to the longest match starting at the given string and\n * return its length. Matches shorter or equal to prev_length are discarded,\n * in which case the result is equal to prev_length and match_start is\n * garbage.\n * IN assertions: cur_match is the head of the hash chain for the current\n * string (strstart) and its distance is <= MAX_DIST, and prev_length >= 1\n * OUT assertion: the match length is not greater than s->lookahead.\n */\nfunction longest_match(s, cur_match) {\n var chain_length = s.max_chain_length; /* max hash chain length */\n var scan = s.strstart; /* current string */\n var match; /* matched string */\n var len; /* length of current match */\n var best_len = s.prev_length; /* best match length so far */\n var nice_match = s.nice_match; /* stop if match long enough */\n var limit = (s.strstart > (s.w_size - MIN_LOOKAHEAD)) ?\n s.strstart - (s.w_size - MIN_LOOKAHEAD) : 0/*NIL*/;\n\n var _win = s.window; // shortcut\n\n var wmask = s.w_mask;\n var prev = s.prev;\n\n /* Stop when cur_match becomes <= limit. To simplify the code,\n * we prevent matches with the string of window index 0.\n */\n\n var strend = s.strstart + MAX_MATCH;\n var scan_end1 = _win[scan + best_len - 1];\n var scan_end = _win[scan + best_len];\n\n /* The code is optimized for HASH_BITS >= 8 and MAX_MATCH-2 multiple of 16.\n * It is easy to get rid of this optimization if necessary.\n */\n // Assert(s->hash_bits >= 8 && MAX_MATCH == 258, \"Code too clever\");\n\n /* Do not waste too much time if we already have a good match: */\n if (s.prev_length >= s.good_match) {\n chain_length >>= 2;\n }\n /* Do not look for matches beyond the end of the input. This is necessary\n * to make deflate deterministic.\n */\n if (nice_match > s.lookahead) { nice_match = s.lookahead; }\n\n // Assert((ulg)s->strstart <= s->window_size-MIN_LOOKAHEAD, \"need lookahead\");\n\n do {\n // Assert(cur_match < s->strstart, \"no future\");\n match = cur_match;\n\n /* Skip to next match if the match length cannot increase\n * or if the match length is less than 2. Note that the checks below\n * for insufficient lookahead only occur occasionally for performance\n * reasons. Therefore uninitialized memory will be accessed, and\n * conditional jumps will be made that depend on those values.\n * However the length of the match is limited to the lookahead, so\n * the output of deflate is not affected by the uninitialized values.\n */\n\n if (_win[match + best_len] !== scan_end ||\n _win[match + best_len - 1] !== scan_end1 ||\n _win[match] !== _win[scan] ||\n _win[++match] !== _win[scan + 1]) {\n continue;\n }\n\n /* The check at best_len-1 can be removed because it will be made\n * again later. (This heuristic is not always a win.)\n * It is not necessary to compare scan[2] and match[2] since they\n * are always equal when the other bytes match, given that\n * the hash keys are equal and that HASH_BITS >= 8.\n */\n scan += 2;\n match++;\n // Assert(*scan == *match, \"match[2]?\");\n\n /* We check for insufficient lookahead only every 8th comparison;\n * the 256th check will be made at strstart+258.\n */\n do {\n /*jshint noempty:false*/\n } while (_win[++scan] === _win[++match] && _win[++scan] === _win[++match] &&\n _win[++scan] === _win[++match] && _win[++scan] === _win[++match] &&\n _win[++scan] === _win[++match] && _win[++scan] === _win[++match] &&\n _win[++scan] === _win[++match] && _win[++scan] === _win[++match] &&\n scan < strend);\n\n // Assert(scan <= s->window+(unsigned)(s->window_size-1), \"wild scan\");\n\n len = MAX_MATCH - (strend - scan);\n scan = strend - MAX_MATCH;\n\n if (len > best_len) {\n s.match_start = cur_match;\n best_len = len;\n if (len >= nice_match) {\n break;\n }\n scan_end1 = _win[scan + best_len - 1];\n scan_end = _win[scan + best_len];\n }\n } while ((cur_match = prev[cur_match & wmask]) > limit && --chain_length !== 0);\n\n if (best_len <= s.lookahead) {\n return best_len;\n }\n return s.lookahead;\n}\n\n\n/* ===========================================================================\n * Fill the window when the lookahead becomes insufficient.\n * Updates strstart and lookahead.\n *\n * IN assertion: lookahead < MIN_LOOKAHEAD\n * OUT assertions: strstart <= window_size-MIN_LOOKAHEAD\n * At least one byte has been read, or avail_in == 0; reads are\n * performed for at least two bytes (required for the zip translate_eol\n * option -- not supported here).\n */\nfunction fill_window(s) {\n var _w_size = s.w_size;\n var p, n, m, more, str;\n\n //Assert(s->lookahead < MIN_LOOKAHEAD, \"already enough lookahead\");\n\n do {\n more = s.window_size - s.lookahead - s.strstart;\n\n // JS ints have 32 bit, block below not needed\n /* Deal with !@#$% 64K limit: */\n //if (sizeof(int) <= 2) {\n // if (more == 0 && s->strstart == 0 && s->lookahead == 0) {\n // more = wsize;\n //\n // } else if (more == (unsigned)(-1)) {\n // /* Very unlikely, but possible on 16 bit machine if\n // * strstart == 0 && lookahead == 1 (input done a byte at time)\n // */\n // more--;\n // }\n //}\n\n\n /* If the window is almost full and there is insufficient lookahead,\n * move the upper half to the lower one to make room in the upper half.\n */\n if (s.strstart >= _w_size + (_w_size - MIN_LOOKAHEAD)) {\n\n utils.arraySet(s.window, s.window, _w_size, _w_size, 0);\n s.match_start -= _w_size;\n s.strstart -= _w_size;\n /* we now have strstart >= MAX_DIST */\n s.block_start -= _w_size;\n\n /* Slide the hash table (could be avoided with 32 bit values\n at the expense of memory usage). We slide even when level == 0\n to keep the hash table consistent if we switch back to level > 0\n later. (Using level 0 permanently is not an optimal usage of\n zlib, so we don't care about this pathological case.)\n */\n\n n = s.hash_size;\n p = n;\n do {\n m = s.head[--p];\n s.head[p] = (m >= _w_size ? m - _w_size : 0);\n } while (--n);\n\n n = _w_size;\n p = n;\n do {\n m = s.prev[--p];\n s.prev[p] = (m >= _w_size ? m - _w_size : 0);\n /* If n is not on any hash chain, prev[n] is garbage but\n * its value will never be used.\n */\n } while (--n);\n\n more += _w_size;\n }\n if (s.strm.avail_in === 0) {\n break;\n }\n\n /* If there was no sliding:\n * strstart <= WSIZE+MAX_DIST-1 && lookahead <= MIN_LOOKAHEAD - 1 &&\n * more == window_size - lookahead - strstart\n * => more >= window_size - (MIN_LOOKAHEAD-1 + WSIZE + MAX_DIST-1)\n * => more >= window_size - 2*WSIZE + 2\n * In the BIG_MEM or MMAP case (not yet supported),\n * window_size == input_size + MIN_LOOKAHEAD &&\n * strstart + s->lookahead <= input_size => more >= MIN_LOOKAHEAD.\n * Otherwise, window_size == 2*WSIZE so more >= 2.\n * If there was sliding, more >= WSIZE. So in all cases, more >= 2.\n */\n //Assert(more >= 2, \"more < 2\");\n n = read_buf(s.strm, s.window, s.strstart + s.lookahead, more);\n s.lookahead += n;\n\n /* Initialize the hash value now that we have some input: */\n if (s.lookahead + s.insert >= MIN_MATCH) {\n str = s.strstart - s.insert;\n s.ins_h = s.window[str];\n\n /* UPDATE_HASH(s, s->ins_h, s->window[str + 1]); */\n s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[str + 1]) & s.hash_mask;\n//#if MIN_MATCH != 3\n// Call update_hash() MIN_MATCH-3 more times\n//#endif\n while (s.insert) {\n /* UPDATE_HASH(s, s->ins_h, s->window[str + MIN_MATCH-1]); */\n s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[str + MIN_MATCH-1]) & s.hash_mask;\n\n s.prev[str & s.w_mask] = s.head[s.ins_h];\n s.head[s.ins_h] = str;\n str++;\n s.insert--;\n if (s.lookahead + s.insert < MIN_MATCH) {\n break;\n }\n }\n }\n /* If the whole input has less than MIN_MATCH bytes, ins_h is garbage,\n * but this is not important since only literal bytes will be emitted.\n */\n\n } while (s.lookahead < MIN_LOOKAHEAD && s.strm.avail_in !== 0);\n\n /* If the WIN_INIT bytes after the end of the current data have never been\n * written, then zero those bytes in order to avoid memory check reports of\n * the use of uninitialized (or uninitialised as Julian writes) bytes by\n * the longest match routines. Update the high water mark for the next\n * time through here. WIN_INIT is set to MAX_MATCH since the longest match\n * routines allow scanning to strstart + MAX_MATCH, ignoring lookahead.\n */\n// if (s.high_water < s.window_size) {\n// var curr = s.strstart + s.lookahead;\n// var init = 0;\n//\n// if (s.high_water < curr) {\n// /* Previous high water mark below current data -- zero WIN_INIT\n// * bytes or up to end of window, whichever is less.\n// */\n// init = s.window_size - curr;\n// if (init > WIN_INIT)\n// init = WIN_INIT;\n// zmemzero(s->window + curr, (unsigned)init);\n// s->high_water = curr + init;\n// }\n// else if (s->high_water < (ulg)curr + WIN_INIT) {\n// /* High water mark at or above current data, but below current data\n// * plus WIN_INIT -- zero out to current data plus WIN_INIT, or up\n// * to end of window, whichever is less.\n// */\n// init = (ulg)curr + WIN_INIT - s->high_water;\n// if (init > s->window_size - s->high_water)\n// init = s->window_size - s->high_water;\n// zmemzero(s->window + s->high_water, (unsigned)init);\n// s->high_water += init;\n// }\n// }\n//\n// Assert((ulg)s->strstart <= s->window_size - MIN_LOOKAHEAD,\n// \"not enough room for search\");\n}\n\n/* ===========================================================================\n * Copy without compression as much as possible from the input stream, return\n * the current block state.\n * This function does not insert new strings in the dictionary since\n * uncompressible data is probably not useful. This function is used\n * only for the level=0 compression option.\n * NOTE: this function should be optimized to avoid extra copying from\n * window to pending_buf.\n */\nfunction deflate_stored(s, flush) {\n /* Stored blocks are limited to 0xffff bytes, pending_buf is limited\n * to pending_buf_size, and each stored block has a 5 byte header:\n */\n var max_block_size = 0xffff;\n\n if (max_block_size > s.pending_buf_size - 5) {\n max_block_size = s.pending_buf_size - 5;\n }\n\n /* Copy as much as possible from input to output: */\n for (;;) {\n /* Fill the window as much as possible: */\n if (s.lookahead <= 1) {\n\n //Assert(s->strstart < s->w_size+MAX_DIST(s) ||\n // s->block_start >= (long)s->w_size, \"slide too late\");\n// if (!(s.strstart < s.w_size + (s.w_size - MIN_LOOKAHEAD) ||\n// s.block_start >= s.w_size)) {\n// throw new Error(\"slide too late\");\n// }\n\n fill_window(s);\n if (s.lookahead === 0 && flush === Z_NO_FLUSH) {\n return BS_NEED_MORE;\n }\n\n if (s.lookahead === 0) {\n break;\n }\n /* flush the current block */\n }\n //Assert(s->block_start >= 0L, \"block gone\");\n// if (s.block_start < 0) throw new Error(\"block gone\");\n\n s.strstart += s.lookahead;\n s.lookahead = 0;\n\n /* Emit a stored block if pending_buf will be full: */\n var max_start = s.block_start + max_block_size;\n\n if (s.strstart === 0 || s.strstart >= max_start) {\n /* strstart == 0 is possible when wraparound on 16-bit machine */\n s.lookahead = s.strstart - max_start;\n s.strstart = max_start;\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n\n\n }\n /* Flush if we may have to slide, otherwise block_start may become\n * negative and the data will be gone:\n */\n if (s.strstart - s.block_start >= (s.w_size - MIN_LOOKAHEAD)) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n }\n\n s.insert = 0;\n\n if (flush === Z_FINISH) {\n /*** FLUSH_BLOCK(s, 1); ***/\n flush_block_only(s, true);\n if (s.strm.avail_out === 0) {\n return BS_FINISH_STARTED;\n }\n /***/\n return BS_FINISH_DONE;\n }\n\n if (s.strstart > s.block_start) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n\n return BS_NEED_MORE;\n}\n\n/* ===========================================================================\n * Compress as much as possible from the input stream, return the current\n * block state.\n * This function does not perform lazy evaluation of matches and inserts\n * new strings in the dictionary only for unmatched strings or for short\n * matches. It is used only for the fast compression options.\n */\nfunction deflate_fast(s, flush) {\n var hash_head; /* head of the hash chain */\n var bflush; /* set if current block must be flushed */\n\n for (;;) {\n /* Make sure that we always have enough lookahead, except\n * at the end of the input file. We need MAX_MATCH bytes\n * for the next match, plus MIN_MATCH bytes to insert the\n * string following the next match.\n */\n if (s.lookahead < MIN_LOOKAHEAD) {\n fill_window(s);\n if (s.lookahead < MIN_LOOKAHEAD && flush === Z_NO_FLUSH) {\n return BS_NEED_MORE;\n }\n if (s.lookahead === 0) {\n break; /* flush the current block */\n }\n }\n\n /* Insert the string window[strstart .. strstart+2] in the\n * dictionary, and set hash_head to the head of the hash chain:\n */\n hash_head = 0/*NIL*/;\n if (s.lookahead >= MIN_MATCH) {\n /*** INSERT_STRING(s, s.strstart, hash_head); ***/\n s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[s.strstart + MIN_MATCH - 1]) & s.hash_mask;\n hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h];\n s.head[s.ins_h] = s.strstart;\n /***/\n }\n\n /* Find the longest match, discarding those <= prev_length.\n * At this point we have always match_length < MIN_MATCH\n */\n if (hash_head !== 0/*NIL*/ && ((s.strstart - hash_head) <= (s.w_size - MIN_LOOKAHEAD))) {\n /* To simplify the code, we prevent matches with the string\n * of window index 0 (in particular we have to avoid a match\n * of the string with itself at the start of the input file).\n */\n s.match_length = longest_match(s, hash_head);\n /* longest_match() sets match_start */\n }\n if (s.match_length >= MIN_MATCH) {\n // check_match(s, s.strstart, s.match_start, s.match_length); // for debug only\n\n /*** _tr_tally_dist(s, s.strstart - s.match_start,\n s.match_length - MIN_MATCH, bflush); ***/\n bflush = trees._tr_tally(s, s.strstart - s.match_start, s.match_length - MIN_MATCH);\n\n s.lookahead -= s.match_length;\n\n /* Insert new strings in the hash table only if the match length\n * is not too large. This saves time but degrades compression.\n */\n if (s.match_length <= s.max_lazy_match/*max_insert_length*/ && s.lookahead >= MIN_MATCH) {\n s.match_length--; /* string at strstart already in table */\n do {\n s.strstart++;\n /*** INSERT_STRING(s, s.strstart, hash_head); ***/\n s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[s.strstart + MIN_MATCH - 1]) & s.hash_mask;\n hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h];\n s.head[s.ins_h] = s.strstart;\n /***/\n /* strstart never exceeds WSIZE-MAX_MATCH, so there are\n * always MIN_MATCH bytes ahead.\n */\n } while (--s.match_length !== 0);\n s.strstart++;\n } else\n {\n s.strstart += s.match_length;\n s.match_length = 0;\n s.ins_h = s.window[s.strstart];\n /* UPDATE_HASH(s, s.ins_h, s.window[s.strstart+1]); */\n s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[s.strstart + 1]) & s.hash_mask;\n\n//#if MIN_MATCH != 3\n// Call UPDATE_HASH() MIN_MATCH-3 more times\n//#endif\n /* If lookahead < MIN_MATCH, ins_h is garbage, but it does not\n * matter since it will be recomputed at next deflate call.\n */\n }\n } else {\n /* No match, output a literal byte */\n //Tracevv((stderr,\"%c\", s.window[s.strstart]));\n /*** _tr_tally_lit(s, s.window[s.strstart], bflush); ***/\n bflush = trees._tr_tally(s, 0, s.window[s.strstart]);\n\n s.lookahead--;\n s.strstart++;\n }\n if (bflush) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n }\n s.insert = ((s.strstart < (MIN_MATCH-1)) ? s.strstart : MIN_MATCH-1);\n if (flush === Z_FINISH) {\n /*** FLUSH_BLOCK(s, 1); ***/\n flush_block_only(s, true);\n if (s.strm.avail_out === 0) {\n return BS_FINISH_STARTED;\n }\n /***/\n return BS_FINISH_DONE;\n }\n if (s.last_lit) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n return BS_BLOCK_DONE;\n}\n\n/* ===========================================================================\n * Same as above, but achieves better compression. We use a lazy\n * evaluation for matches: a match is finally adopted only if there is\n * no better match at the next window position.\n */\nfunction deflate_slow(s, flush) {\n var hash_head; /* head of hash chain */\n var bflush; /* set if current block must be flushed */\n\n var max_insert;\n\n /* Process the input block. */\n for (;;) {\n /* Make sure that we always have enough lookahead, except\n * at the end of the input file. We need MAX_MATCH bytes\n * for the next match, plus MIN_MATCH bytes to insert the\n * string following the next match.\n */\n if (s.lookahead < MIN_LOOKAHEAD) {\n fill_window(s);\n if (s.lookahead < MIN_LOOKAHEAD && flush === Z_NO_FLUSH) {\n return BS_NEED_MORE;\n }\n if (s.lookahead === 0) { break; } /* flush the current block */\n }\n\n /* Insert the string window[strstart .. strstart+2] in the\n * dictionary, and set hash_head to the head of the hash chain:\n */\n hash_head = 0/*NIL*/;\n if (s.lookahead >= MIN_MATCH) {\n /*** INSERT_STRING(s, s.strstart, hash_head); ***/\n s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[s.strstart + MIN_MATCH - 1]) & s.hash_mask;\n hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h];\n s.head[s.ins_h] = s.strstart;\n /***/\n }\n\n /* Find the longest match, discarding those <= prev_length.\n */\n s.prev_length = s.match_length;\n s.prev_match = s.match_start;\n s.match_length = MIN_MATCH-1;\n\n if (hash_head !== 0/*NIL*/ && s.prev_length < s.max_lazy_match &&\n s.strstart - hash_head <= (s.w_size-MIN_LOOKAHEAD)/*MAX_DIST(s)*/) {\n /* To simplify the code, we prevent matches with the string\n * of window index 0 (in particular we have to avoid a match\n * of the string with itself at the start of the input file).\n */\n s.match_length = longest_match(s, hash_head);\n /* longest_match() sets match_start */\n\n if (s.match_length <= 5 &&\n (s.strategy === Z_FILTERED || (s.match_length === MIN_MATCH && s.strstart - s.match_start > 4096/*TOO_FAR*/))) {\n\n /* If prev_match is also MIN_MATCH, match_start is garbage\n * but we will ignore the current match anyway.\n */\n s.match_length = MIN_MATCH-1;\n }\n }\n /* If there was a match at the previous step and the current\n * match is not better, output the previous match:\n */\n if (s.prev_length >= MIN_MATCH && s.match_length <= s.prev_length) {\n max_insert = s.strstart + s.lookahead - MIN_MATCH;\n /* Do not insert strings in hash table beyond this. */\n\n //check_match(s, s.strstart-1, s.prev_match, s.prev_length);\n\n /***_tr_tally_dist(s, s.strstart - 1 - s.prev_match,\n s.prev_length - MIN_MATCH, bflush);***/\n bflush = trees._tr_tally(s, s.strstart - 1- s.prev_match, s.prev_length - MIN_MATCH);\n /* Insert in hash table all strings up to the end of the match.\n * strstart-1 and strstart are already inserted. If there is not\n * enough lookahead, the last two strings are not inserted in\n * the hash table.\n */\n s.lookahead -= s.prev_length-1;\n s.prev_length -= 2;\n do {\n if (++s.strstart <= max_insert) {\n /*** INSERT_STRING(s, s.strstart, hash_head); ***/\n s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[s.strstart + MIN_MATCH - 1]) & s.hash_mask;\n hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h];\n s.head[s.ins_h] = s.strstart;\n /***/\n }\n } while (--s.prev_length !== 0);\n s.match_available = 0;\n s.match_length = MIN_MATCH-1;\n s.strstart++;\n\n if (bflush) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n\n } else if (s.match_available) {\n /* If there was no match at the previous position, output a\n * single literal. If there was a match but the current match\n * is longer, truncate the previous match to a single literal.\n */\n //Tracevv((stderr,\"%c\", s->window[s->strstart-1]));\n /*** _tr_tally_lit(s, s.window[s.strstart-1], bflush); ***/\n bflush = trees._tr_tally(s, 0, s.window[s.strstart-1]);\n\n if (bflush) {\n /*** FLUSH_BLOCK_ONLY(s, 0) ***/\n flush_block_only(s, false);\n /***/\n }\n s.strstart++;\n s.lookahead--;\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n } else {\n /* There is no previous match to compare with, wait for\n * the next step to decide.\n */\n s.match_available = 1;\n s.strstart++;\n s.lookahead--;\n }\n }\n //Assert (flush != Z_NO_FLUSH, \"no flush?\");\n if (s.match_available) {\n //Tracevv((stderr,\"%c\", s->window[s->strstart-1]));\n /*** _tr_tally_lit(s, s.window[s.strstart-1], bflush); ***/\n bflush = trees._tr_tally(s, 0, s.window[s.strstart-1]);\n\n s.match_available = 0;\n }\n s.insert = s.strstart < MIN_MATCH-1 ? s.strstart : MIN_MATCH-1;\n if (flush === Z_FINISH) {\n /*** FLUSH_BLOCK(s, 1); ***/\n flush_block_only(s, true);\n if (s.strm.avail_out === 0) {\n return BS_FINISH_STARTED;\n }\n /***/\n return BS_FINISH_DONE;\n }\n if (s.last_lit) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n\n return BS_BLOCK_DONE;\n}\n\n\n/* ===========================================================================\n * For Z_RLE, simply look for runs of bytes, generate matches only of distance\n * one. Do not maintain a hash table. (It will be regenerated if this run of\n * deflate switches away from Z_RLE.)\n */\nfunction deflate_rle(s, flush) {\n var bflush; /* set if current block must be flushed */\n var prev; /* byte at distance one to match */\n var scan, strend; /* scan goes up to strend for length of run */\n\n var _win = s.window;\n\n for (;;) {\n /* Make sure that we always have enough lookahead, except\n * at the end of the input file. We need MAX_MATCH bytes\n * for the longest run, plus one for the unrolled loop.\n */\n if (s.lookahead <= MAX_MATCH) {\n fill_window(s);\n if (s.lookahead <= MAX_MATCH && flush === Z_NO_FLUSH) {\n return BS_NEED_MORE;\n }\n if (s.lookahead === 0) { break; } /* flush the current block */\n }\n\n /* See how many times the previous byte repeats */\n s.match_length = 0;\n if (s.lookahead >= MIN_MATCH && s.strstart > 0) {\n scan = s.strstart - 1;\n prev = _win[scan];\n if (prev === _win[++scan] && prev === _win[++scan] && prev === _win[++scan]) {\n strend = s.strstart + MAX_MATCH;\n do {\n /*jshint noempty:false*/\n } while (prev === _win[++scan] && prev === _win[++scan] &&\n prev === _win[++scan] && prev === _win[++scan] &&\n prev === _win[++scan] && prev === _win[++scan] &&\n prev === _win[++scan] && prev === _win[++scan] &&\n scan < strend);\n s.match_length = MAX_MATCH - (strend - scan);\n if (s.match_length > s.lookahead) {\n s.match_length = s.lookahead;\n }\n }\n //Assert(scan <= s->window+(uInt)(s->window_size-1), \"wild scan\");\n }\n\n /* Emit match if have run of MIN_MATCH or longer, else emit literal */\n if (s.match_length >= MIN_MATCH) {\n //check_match(s, s.strstart, s.strstart - 1, s.match_length);\n\n /*** _tr_tally_dist(s, 1, s.match_length - MIN_MATCH, bflush); ***/\n bflush = trees._tr_tally(s, 1, s.match_length - MIN_MATCH);\n\n s.lookahead -= s.match_length;\n s.strstart += s.match_length;\n s.match_length = 0;\n } else {\n /* No match, output a literal byte */\n //Tracevv((stderr,\"%c\", s->window[s->strstart]));\n /*** _tr_tally_lit(s, s.window[s.strstart], bflush); ***/\n bflush = trees._tr_tally(s, 0, s.window[s.strstart]);\n\n s.lookahead--;\n s.strstart++;\n }\n if (bflush) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n }\n s.insert = 0;\n if (flush === Z_FINISH) {\n /*** FLUSH_BLOCK(s, 1); ***/\n flush_block_only(s, true);\n if (s.strm.avail_out === 0) {\n return BS_FINISH_STARTED;\n }\n /***/\n return BS_FINISH_DONE;\n }\n if (s.last_lit) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n return BS_BLOCK_DONE;\n}\n\n/* ===========================================================================\n * For Z_HUFFMAN_ONLY, do not look for matches. Do not maintain a hash table.\n * (It will be regenerated if this run of deflate switches away from Huffman.)\n */\nfunction deflate_huff(s, flush) {\n var bflush; /* set if current block must be flushed */\n\n for (;;) {\n /* Make sure that we have a literal to write. */\n if (s.lookahead === 0) {\n fill_window(s);\n if (s.lookahead === 0) {\n if (flush === Z_NO_FLUSH) {\n return BS_NEED_MORE;\n }\n break; /* flush the current block */\n }\n }\n\n /* Output a literal byte */\n s.match_length = 0;\n //Tracevv((stderr,\"%c\", s->window[s->strstart]));\n /*** _tr_tally_lit(s, s.window[s.strstart], bflush); ***/\n bflush = trees._tr_tally(s, 0, s.window[s.strstart]);\n s.lookahead--;\n s.strstart++;\n if (bflush) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n }\n s.insert = 0;\n if (flush === Z_FINISH) {\n /*** FLUSH_BLOCK(s, 1); ***/\n flush_block_only(s, true);\n if (s.strm.avail_out === 0) {\n return BS_FINISH_STARTED;\n }\n /***/\n return BS_FINISH_DONE;\n }\n if (s.last_lit) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n return BS_BLOCK_DONE;\n}\n\n/* Values for max_lazy_match, good_match and max_chain_length, depending on\n * the desired pack level (0..9). The values given below have been tuned to\n * exclude worst case performance for pathological files. Better values may be\n * found for specific files.\n */\nvar Config = function (good_length, max_lazy, nice_length, max_chain, func) {\n this.good_length = good_length;\n this.max_lazy = max_lazy;\n this.nice_length = nice_length;\n this.max_chain = max_chain;\n this.func = func;\n};\n\nvar configuration_table;\n\nconfiguration_table = [\n /* good lazy nice chain */\n new Config(0, 0, 0, 0, deflate_stored), /* 0 store only */\n new Config(4, 4, 8, 4, deflate_fast), /* 1 max speed, no lazy matches */\n new Config(4, 5, 16, 8, deflate_fast), /* 2 */\n new Config(4, 6, 32, 32, deflate_fast), /* 3 */\n\n new Config(4, 4, 16, 16, deflate_slow), /* 4 lazy matches */\n new Config(8, 16, 32, 32, deflate_slow), /* 5 */\n new Config(8, 16, 128, 128, deflate_slow), /* 6 */\n new Config(8, 32, 128, 256, deflate_slow), /* 7 */\n new Config(32, 128, 258, 1024, deflate_slow), /* 8 */\n new Config(32, 258, 258, 4096, deflate_slow) /* 9 max compression */\n];\n\n\n/* ===========================================================================\n * Initialize the \"longest match\" routines for a new zlib stream\n */\nfunction lm_init(s) {\n s.window_size = 2 * s.w_size;\n\n /*** CLEAR_HASH(s); ***/\n zero(s.head); // Fill with NIL (= 0);\n\n /* Set the default configuration parameters:\n */\n s.max_lazy_match = configuration_table[s.level].max_lazy;\n s.good_match = configuration_table[s.level].good_length;\n s.nice_match = configuration_table[s.level].nice_length;\n s.max_chain_length = configuration_table[s.level].max_chain;\n\n s.strstart = 0;\n s.block_start = 0;\n s.lookahead = 0;\n s.insert = 0;\n s.match_length = s.prev_length = MIN_MATCH - 1;\n s.match_available = 0;\n s.ins_h = 0;\n}\n\n\nfunction DeflateState() {\n this.strm = null; /* pointer back to this zlib stream */\n this.status = 0; /* as the name implies */\n this.pending_buf = null; /* output still pending */\n this.pending_buf_size = 0; /* size of pending_buf */\n this.pending_out = 0; /* next pending byte to output to the stream */\n this.pending = 0; /* nb of bytes in the pending buffer */\n this.wrap = 0; /* bit 0 true for zlib, bit 1 true for gzip */\n this.gzhead = null; /* gzip header information to write */\n this.gzindex = 0; /* where in extra, name, or comment */\n this.method = Z_DEFLATED; /* can only be DEFLATED */\n this.last_flush = -1; /* value of flush param for previous deflate call */\n\n this.w_size = 0; /* LZ77 window size (32K by default) */\n this.w_bits = 0; /* log2(w_size) (8..16) */\n this.w_mask = 0; /* w_size - 1 */\n\n this.window = null;\n /* Sliding window. Input bytes are read into the second half of the window,\n * and move to the first half later to keep a dictionary of at least wSize\n * bytes. With this organization, matches are limited to a distance of\n * wSize-MAX_MATCH bytes, but this ensures that IO is always\n * performed with a length multiple of the block size.\n */\n\n this.window_size = 0;\n /* Actual size of window: 2*wSize, except when the user input buffer\n * is directly used as sliding window.\n */\n\n this.prev = null;\n /* Link to older string with same hash index. To limit the size of this\n * array to 64K, this link is maintained only for the last 32K strings.\n * An index in this array is thus a window index modulo 32K.\n */\n\n this.head = null; /* Heads of the hash chains or NIL. */\n\n this.ins_h = 0; /* hash index of string to be inserted */\n this.hash_size = 0; /* number of elements in hash table */\n this.hash_bits = 0; /* log2(hash_size) */\n this.hash_mask = 0; /* hash_size-1 */\n\n this.hash_shift = 0;\n /* Number of bits by which ins_h must be shifted at each input\n * step. It must be such that after MIN_MATCH steps, the oldest\n * byte no longer takes part in the hash key, that is:\n * hash_shift * MIN_MATCH >= hash_bits\n */\n\n this.block_start = 0;\n /* Window position at the beginning of the current output block. Gets\n * negative when the window is moved backwards.\n */\n\n this.match_length = 0; /* length of best match */\n this.prev_match = 0; /* previous match */\n this.match_available = 0; /* set if previous match exists */\n this.strstart = 0; /* start of string to insert */\n this.match_start = 0; /* start of matching string */\n this.lookahead = 0; /* number of valid bytes ahead in window */\n\n this.prev_length = 0;\n /* Length of the best match at previous step. Matches not greater than this\n * are discarded. This is used in the lazy match evaluation.\n */\n\n this.max_chain_length = 0;\n /* To speed up deflation, hash chains are never searched beyond this\n * length. A higher limit improves compression ratio but degrades the\n * speed.\n */\n\n this.max_lazy_match = 0;\n /* Attempt to find a better match only when the current match is strictly\n * smaller than this value. This mechanism is used only for compression\n * levels >= 4.\n */\n // That's alias to max_lazy_match, don't use directly\n //this.max_insert_length = 0;\n /* Insert new strings in the hash table only if the match length is not\n * greater than this length. This saves time but degrades compression.\n * max_insert_length is used only for compression levels <= 3.\n */\n\n this.level = 0; /* compression level (1..9) */\n this.strategy = 0; /* favor or force Huffman coding*/\n\n this.good_match = 0;\n /* Use a faster search when the previous match is longer than this */\n\n this.nice_match = 0; /* Stop searching when current match exceeds this */\n\n /* used by trees.c: */\n\n /* Didn't use ct_data typedef below to suppress compiler warning */\n\n // struct ct_data_s dyn_ltree[HEAP_SIZE]; /* literal and length tree */\n // struct ct_data_s dyn_dtree[2*D_CODES+1]; /* distance tree */\n // struct ct_data_s bl_tree[2*BL_CODES+1]; /* Huffman tree for bit lengths */\n\n // Use flat array of DOUBLE size, with interleaved fata,\n // because JS does not support effective\n this.dyn_ltree = new utils.Buf16(HEAP_SIZE * 2);\n this.dyn_dtree = new utils.Buf16((2*D_CODES+1) * 2);\n this.bl_tree = new utils.Buf16((2*BL_CODES+1) * 2);\n zero(this.dyn_ltree);\n zero(this.dyn_dtree);\n zero(this.bl_tree);\n\n this.l_desc = null; /* desc. for literal tree */\n this.d_desc = null; /* desc. for distance tree */\n this.bl_desc = null; /* desc. for bit length tree */\n\n //ush bl_count[MAX_BITS+1];\n this.bl_count = new utils.Buf16(MAX_BITS+1);\n /* number of codes at each bit length for an optimal tree */\n\n //int heap[2*L_CODES+1]; /* heap used to build the Huffman trees */\n this.heap = new utils.Buf16(2*L_CODES+1); /* heap used to build the Huffman trees */\n zero(this.heap);\n\n this.heap_len = 0; /* number of elements in the heap */\n this.heap_max = 0; /* element of largest frequency */\n /* The sons of heap[n] are heap[2*n] and heap[2*n+1]. heap[0] is not used.\n * The same heap array is used to build all trees.\n */\n\n this.depth = new utils.Buf16(2*L_CODES+1); //uch depth[2*L_CODES+1];\n zero(this.depth);\n /* Depth of each subtree used as tie breaker for trees of equal frequency\n */\n\n this.l_buf = 0; /* buffer index for literals or lengths */\n\n this.lit_bufsize = 0;\n /* Size of match buffer for literals/lengths. There are 4 reasons for\n * limiting lit_bufsize to 64K:\n * - frequencies can be kept in 16 bit counters\n * - if compression is not successful for the first block, all input\n * data is still in the window so we can still emit a stored block even\n * when input comes from standard input. (This can also be done for\n * all blocks if lit_bufsize is not greater than 32K.)\n * - if compression is not successful for a file smaller than 64K, we can\n * even emit a stored file instead of a stored block (saving 5 bytes).\n * This is applicable only for zip (not gzip or zlib).\n * - creating new Huffman trees less frequently may not provide fast\n * adaptation to changes in the input data statistics. (Take for\n * example a binary file with poorly compressible code followed by\n * a highly compressible string table.) Smaller buffer sizes give\n * fast adaptation but have of course the overhead of transmitting\n * trees more frequently.\n * - I can't count above 4\n */\n\n this.last_lit = 0; /* running index in l_buf */\n\n this.d_buf = 0;\n /* Buffer index for distances. To simplify the code, d_buf and l_buf have\n * the same number of elements. To use different lengths, an extra flag\n * array would be necessary.\n */\n\n this.opt_len = 0; /* bit length of current block with optimal trees */\n this.static_len = 0; /* bit length of current block with static trees */\n this.matches = 0; /* number of string matches in current block */\n this.insert = 0; /* bytes at end of window left to insert */\n\n\n this.bi_buf = 0;\n /* Output buffer. bits are inserted starting at the bottom (least\n * significant bits).\n */\n this.bi_valid = 0;\n /* Number of valid bits in bi_buf. All bits above the last valid bit\n * are always zero.\n */\n\n // Used for window memory init. We safely ignore it for JS. That makes\n // sense only for pointers and memory check tools.\n //this.high_water = 0;\n /* High water mark offset in window for initialized bytes -- bytes above\n * this are set to zero in order to avoid memory check warnings when\n * longest match routines access bytes past the input. This is then\n * updated to the new high water mark.\n */\n}\n\n\nfunction deflateResetKeep(strm) {\n var s;\n\n if (!strm || !strm.state) {\n return err(strm, Z_STREAM_ERROR);\n }\n\n strm.total_in = strm.total_out = 0;\n strm.data_type = Z_UNKNOWN;\n\n s = strm.state;\n s.pending = 0;\n s.pending_out = 0;\n\n if (s.wrap < 0) {\n s.wrap = -s.wrap;\n /* was made negative by deflate(..., Z_FINISH); */\n }\n s.status = (s.wrap ? INIT_STATE : BUSY_STATE);\n strm.adler = (s.wrap === 2) ?\n 0 // crc32(0, Z_NULL, 0)\n :\n 1; // adler32(0, Z_NULL, 0)\n s.last_flush = Z_NO_FLUSH;\n trees._tr_init(s);\n return Z_OK;\n}\n\n\nfunction deflateReset(strm) {\n var ret = deflateResetKeep(strm);\n if (ret === Z_OK) {\n lm_init(strm.state);\n }\n return ret;\n}\n\n\nfunction deflateSetHeader(strm, head) {\n if (!strm || !strm.state) { return Z_STREAM_ERROR; }\n if (strm.state.wrap !== 2) { return Z_STREAM_ERROR; }\n strm.state.gzhead = head;\n return Z_OK;\n}\n\n\nfunction deflateInit2(strm, level, method, windowBits, memLevel, strategy) {\n if (!strm) { // === Z_NULL\n return Z_STREAM_ERROR;\n }\n var wrap = 1;\n\n if (level === Z_DEFAULT_COMPRESSION) {\n level = 6;\n }\n\n if (windowBits < 0) { /* suppress zlib wrapper */\n wrap = 0;\n windowBits = -windowBits;\n }\n\n else if (windowBits > 15) {\n wrap = 2; /* write gzip wrapper instead */\n windowBits -= 16;\n }\n\n\n if (memLevel < 1 || memLevel > MAX_MEM_LEVEL || method !== Z_DEFLATED ||\n windowBits < 8 || windowBits > 15 || level < 0 || level > 9 ||\n strategy < 0 || strategy > Z_FIXED) {\n return err(strm, Z_STREAM_ERROR);\n }\n\n\n if (windowBits === 8) {\n windowBits = 9;\n }\n /* until 256-byte window bug fixed */\n\n var s = new DeflateState();\n\n strm.state = s;\n s.strm = strm;\n\n s.wrap = wrap;\n s.gzhead = null;\n s.w_bits = windowBits;\n s.w_size = 1 << s.w_bits;\n s.w_mask = s.w_size - 1;\n\n s.hash_bits = memLevel + 7;\n s.hash_size = 1 << s.hash_bits;\n s.hash_mask = s.hash_size - 1;\n s.hash_shift = ~~((s.hash_bits + MIN_MATCH - 1) / MIN_MATCH);\n\n s.window = new utils.Buf8(s.w_size * 2);\n s.head = new utils.Buf16(s.hash_size);\n s.prev = new utils.Buf16(s.w_size);\n\n // Don't need mem init magic for JS.\n //s.high_water = 0; /* nothing written to s->window yet */\n\n s.lit_bufsize = 1 << (memLevel + 6); /* 16K elements by default */\n\n s.pending_buf_size = s.lit_bufsize * 4;\n s.pending_buf = new utils.Buf8(s.pending_buf_size);\n\n s.d_buf = s.lit_bufsize >> 1;\n s.l_buf = (1 + 2) * s.lit_bufsize;\n\n s.level = level;\n s.strategy = strategy;\n s.method = method;\n\n return deflateReset(strm);\n}\n\nfunction deflateInit(strm, level) {\n return deflateInit2(strm, level, Z_DEFLATED, MAX_WBITS, DEF_MEM_LEVEL, Z_DEFAULT_STRATEGY);\n}\n\n\nfunction deflate(strm, flush) {\n var old_flush, s;\n var beg, val; // for gzip header write only\n\n if (!strm || !strm.state ||\n flush > Z_BLOCK || flush < 0) {\n return strm ? err(strm, Z_STREAM_ERROR) : Z_STREAM_ERROR;\n }\n\n s = strm.state;\n\n if (!strm.output ||\n (!strm.input && strm.avail_in !== 0) ||\n (s.status === FINISH_STATE && flush !== Z_FINISH)) {\n return err(strm, (strm.avail_out === 0) ? Z_BUF_ERROR : Z_STREAM_ERROR);\n }\n\n s.strm = strm; /* just in case */\n old_flush = s.last_flush;\n s.last_flush = flush;\n\n /* Write the header */\n if (s.status === INIT_STATE) {\n\n if (s.wrap === 2) { // GZIP header\n strm.adler = 0; //crc32(0L, Z_NULL, 0);\n put_byte(s, 31);\n put_byte(s, 139);\n put_byte(s, 8);\n if (!s.gzhead) { // s->gzhead == Z_NULL\n put_byte(s, 0);\n put_byte(s, 0);\n put_byte(s, 0);\n put_byte(s, 0);\n put_byte(s, 0);\n put_byte(s, s.level === 9 ? 2 :\n (s.strategy >= Z_HUFFMAN_ONLY || s.level < 2 ?\n 4 : 0));\n put_byte(s, OS_CODE);\n s.status = BUSY_STATE;\n }\n else {\n put_byte(s, (s.gzhead.text ? 1 : 0) +\n (s.gzhead.hcrc ? 2 : 0) +\n (!s.gzhead.extra ? 0 : 4) +\n (!s.gzhead.name ? 0 : 8) +\n (!s.gzhead.comment ? 0 : 16)\n );\n put_byte(s, s.gzhead.time & 0xff);\n put_byte(s, (s.gzhead.time >> 8) & 0xff);\n put_byte(s, (s.gzhead.time >> 16) & 0xff);\n put_byte(s, (s.gzhead.time >> 24) & 0xff);\n put_byte(s, s.level === 9 ? 2 :\n (s.strategy >= Z_HUFFMAN_ONLY || s.level < 2 ?\n 4 : 0));\n put_byte(s, s.gzhead.os & 0xff);\n if (s.gzhead.extra && s.gzhead.extra.length) {\n put_byte(s, s.gzhead.extra.length & 0xff);\n put_byte(s, (s.gzhead.extra.length >> 8) & 0xff);\n }\n if (s.gzhead.hcrc) {\n strm.adler = crc32(strm.adler, s.pending_buf, s.pending, 0);\n }\n s.gzindex = 0;\n s.status = EXTRA_STATE;\n }\n }\n else // DEFLATE header\n {\n var header = (Z_DEFLATED + ((s.w_bits - 8) << 4)) << 8;\n var level_flags = -1;\n\n if (s.strategy >= Z_HUFFMAN_ONLY || s.level < 2) {\n level_flags = 0;\n } else if (s.level < 6) {\n level_flags = 1;\n } else if (s.level === 6) {\n level_flags = 2;\n } else {\n level_flags = 3;\n }\n header |= (level_flags << 6);\n if (s.strstart !== 0) { header |= PRESET_DICT; }\n header += 31 - (header % 31);\n\n s.status = BUSY_STATE;\n putShortMSB(s, header);\n\n /* Save the adler32 of the preset dictionary: */\n if (s.strstart !== 0) {\n putShortMSB(s, strm.adler >>> 16);\n putShortMSB(s, strm.adler & 0xffff);\n }\n strm.adler = 1; // adler32(0L, Z_NULL, 0);\n }\n }\n\n//#ifdef GZIP\n if (s.status === EXTRA_STATE) {\n if (s.gzhead.extra/* != Z_NULL*/) {\n beg = s.pending; /* start of bytes to update crc */\n\n while (s.gzindex < (s.gzhead.extra.length & 0xffff)) {\n if (s.pending === s.pending_buf_size) {\n if (s.gzhead.hcrc && s.pending > beg) {\n strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);\n }\n flush_pending(strm);\n beg = s.pending;\n if (s.pending === s.pending_buf_size) {\n break;\n }\n }\n put_byte(s, s.gzhead.extra[s.gzindex] & 0xff);\n s.gzindex++;\n }\n if (s.gzhead.hcrc && s.pending > beg) {\n strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);\n }\n if (s.gzindex === s.gzhead.extra.length) {\n s.gzindex = 0;\n s.status = NAME_STATE;\n }\n }\n else {\n s.status = NAME_STATE;\n }\n }\n if (s.status === NAME_STATE) {\n if (s.gzhead.name/* != Z_NULL*/) {\n beg = s.pending; /* start of bytes to update crc */\n //int val;\n\n do {\n if (s.pending === s.pending_buf_size) {\n if (s.gzhead.hcrc && s.pending > beg) {\n strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);\n }\n flush_pending(strm);\n beg = s.pending;\n if (s.pending === s.pending_buf_size) {\n val = 1;\n break;\n }\n }\n // JS specific: little magic to add zero terminator to end of string\n if (s.gzindex < s.gzhead.name.length) {\n val = s.gzhead.name.charCodeAt(s.gzindex++) & 0xff;\n } else {\n val = 0;\n }\n put_byte(s, val);\n } while (val !== 0);\n\n if (s.gzhead.hcrc && s.pending > beg){\n strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);\n }\n if (val === 0) {\n s.gzindex = 0;\n s.status = COMMENT_STATE;\n }\n }\n else {\n s.status = COMMENT_STATE;\n }\n }\n if (s.status === COMMENT_STATE) {\n if (s.gzhead.comment/* != Z_NULL*/) {\n beg = s.pending; /* start of bytes to update crc */\n //int val;\n\n do {\n if (s.pending === s.pending_buf_size) {\n if (s.gzhead.hcrc && s.pending > beg) {\n strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);\n }\n flush_pending(strm);\n beg = s.pending;\n if (s.pending === s.pending_buf_size) {\n val = 1;\n break;\n }\n }\n // JS specific: little magic to add zero terminator to end of string\n if (s.gzindex < s.gzhead.comment.length) {\n val = s.gzhead.comment.charCodeAt(s.gzindex++) & 0xff;\n } else {\n val = 0;\n }\n put_byte(s, val);\n } while (val !== 0);\n\n if (s.gzhead.hcrc && s.pending > beg) {\n strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);\n }\n if (val === 0) {\n s.status = HCRC_STATE;\n }\n }\n else {\n s.status = HCRC_STATE;\n }\n }\n if (s.status === HCRC_STATE) {\n if (s.gzhead.hcrc) {\n if (s.pending + 2 > s.pending_buf_size) {\n flush_pending(strm);\n }\n if (s.pending + 2 <= s.pending_buf_size) {\n put_byte(s, strm.adler & 0xff);\n put_byte(s, (strm.adler >> 8) & 0xff);\n strm.adler = 0; //crc32(0L, Z_NULL, 0);\n s.status = BUSY_STATE;\n }\n }\n else {\n s.status = BUSY_STATE;\n }\n }\n//#endif\n\n /* Flush as much pending output as possible */\n if (s.pending !== 0) {\n flush_pending(strm);\n if (strm.avail_out === 0) {\n /* Since avail_out is 0, deflate will be called again with\n * more output space, but possibly with both pending and\n * avail_in equal to zero. There won't be anything to do,\n * but this is not an error situation so make sure we\n * return OK instead of BUF_ERROR at next call of deflate:\n */\n s.last_flush = -1;\n return Z_OK;\n }\n\n /* Make sure there is something to do and avoid duplicate consecutive\n * flushes. For repeated and useless calls with Z_FINISH, we keep\n * returning Z_STREAM_END instead of Z_BUF_ERROR.\n */\n } else if (strm.avail_in === 0 && rank(flush) <= rank(old_flush) &&\n flush !== Z_FINISH) {\n return err(strm, Z_BUF_ERROR);\n }\n\n /* User must not provide more input after the first FINISH: */\n if (s.status === FINISH_STATE && strm.avail_in !== 0) {\n return err(strm, Z_BUF_ERROR);\n }\n\n /* Start a new block or continue the current one.\n */\n if (strm.avail_in !== 0 || s.lookahead !== 0 ||\n (flush !== Z_NO_FLUSH && s.status !== FINISH_STATE)) {\n var bstate = (s.strategy === Z_HUFFMAN_ONLY) ? deflate_huff(s, flush) :\n (s.strategy === Z_RLE ? deflate_rle(s, flush) :\n configuration_table[s.level].func(s, flush));\n\n if (bstate === BS_FINISH_STARTED || bstate === BS_FINISH_DONE) {\n s.status = FINISH_STATE;\n }\n if (bstate === BS_NEED_MORE || bstate === BS_FINISH_STARTED) {\n if (strm.avail_out === 0) {\n s.last_flush = -1;\n /* avoid BUF_ERROR next call, see above */\n }\n return Z_OK;\n /* If flush != Z_NO_FLUSH && avail_out == 0, the next call\n * of deflate should use the same flush parameter to make sure\n * that the flush is complete. So we don't have to output an\n * empty block here, this will be done at next call. This also\n * ensures that for a very small output buffer, we emit at most\n * one empty block.\n */\n }\n if (bstate === BS_BLOCK_DONE) {\n if (flush === Z_PARTIAL_FLUSH) {\n trees._tr_align(s);\n }\n else if (flush !== Z_BLOCK) { /* FULL_FLUSH or SYNC_FLUSH */\n\n trees._tr_stored_block(s, 0, 0, false);\n /* For a full flush, this empty block will be recognized\n * as a special marker by inflate_sync().\n */\n if (flush === Z_FULL_FLUSH) {\n /*** CLEAR_HASH(s); ***/ /* forget history */\n zero(s.head); // Fill with NIL (= 0);\n\n if (s.lookahead === 0) {\n s.strstart = 0;\n s.block_start = 0;\n s.insert = 0;\n }\n }\n }\n flush_pending(strm);\n if (strm.avail_out === 0) {\n s.last_flush = -1; /* avoid BUF_ERROR at next call, see above */\n return Z_OK;\n }\n }\n }\n //Assert(strm->avail_out > 0, \"bug2\");\n //if (strm.avail_out <= 0) { throw new Error(\"bug2\");}\n\n if (flush !== Z_FINISH) { return Z_OK; }\n if (s.wrap <= 0) { return Z_STREAM_END; }\n\n /* Write the trailer */\n if (s.wrap === 2) {\n put_byte(s, strm.adler & 0xff);\n put_byte(s, (strm.adler >> 8) & 0xff);\n put_byte(s, (strm.adler >> 16) & 0xff);\n put_byte(s, (strm.adler >> 24) & 0xff);\n put_byte(s, strm.total_in & 0xff);\n put_byte(s, (strm.total_in >> 8) & 0xff);\n put_byte(s, (strm.total_in >> 16) & 0xff);\n put_byte(s, (strm.total_in >> 24) & 0xff);\n }\n else\n {\n putShortMSB(s, strm.adler >>> 16);\n putShortMSB(s, strm.adler & 0xffff);\n }\n\n flush_pending(strm);\n /* If avail_out is zero, the application will call deflate again\n * to flush the rest.\n */\n if (s.wrap > 0) { s.wrap = -s.wrap; }\n /* write the trailer only once! */\n return s.pending !== 0 ? Z_OK : Z_STREAM_END;\n}\n\nfunction deflateEnd(strm) {\n var status;\n\n if (!strm/*== Z_NULL*/ || !strm.state/*== Z_NULL*/) {\n return Z_STREAM_ERROR;\n }\n\n status = strm.state.status;\n if (status !== INIT_STATE &&\n status !== EXTRA_STATE &&\n status !== NAME_STATE &&\n status !== COMMENT_STATE &&\n status !== HCRC_STATE &&\n status !== BUSY_STATE &&\n status !== FINISH_STATE\n ) {\n return err(strm, Z_STREAM_ERROR);\n }\n\n strm.state = null;\n\n return status === BUSY_STATE ? err(strm, Z_DATA_ERROR) : Z_OK;\n}\n\n/* =========================================================================\n * Copy the source state to the destination state\n */\n//function deflateCopy(dest, source) {\n//\n//}\n\nexports.deflateInit = deflateInit;\nexports.deflateInit2 = deflateInit2;\nexports.deflateReset = deflateReset;\nexports.deflateResetKeep = deflateResetKeep;\nexports.deflateSetHeader = deflateSetHeader;\nexports.deflate = deflate;\nexports.deflateEnd = deflateEnd;\nexports.deflateInfo = 'pako deflate (from Nodeca project)';\n\n/* Not implemented\nexports.deflateBound = deflateBound;\nexports.deflateCopy = deflateCopy;\nexports.deflateSetDictionary = deflateSetDictionary;\nexports.deflateParams = deflateParams;\nexports.deflatePending = deflatePending;\nexports.deflatePrime = deflatePrime;\nexports.deflateTune = deflateTune;\n*/\n},{\"../utils/common\":27,\"./adler32\":29,\"./crc32\":31,\"./messages\":37,\"./trees\":38}],33:[function(_dereq_,module,exports){\n'use strict';\n\n\nfunction GZheader() {\n /* true if compressed data believed to be text */\n this.text = 0;\n /* modification time */\n this.time = 0;\n /* extra flags (not used when writing a gzip file) */\n this.xflags = 0;\n /* operating system */\n this.os = 0;\n /* pointer to extra field or Z_NULL if none */\n this.extra = null;\n /* extra field length (valid if extra != Z_NULL) */\n this.extra_len = 0; // Actually, we don't need it in JS,\n // but leave for few code modifications\n\n //\n // Setup limits is not necessary because in js we should not preallocate memory\n // for inflate use constant limit in 65536 bytes\n //\n\n /* space at extra (only when reading header) */\n // this.extra_max = 0;\n /* pointer to zero-terminated file name or Z_NULL */\n this.name = '';\n /* space at name (only when reading header) */\n // this.name_max = 0;\n /* pointer to zero-terminated comment or Z_NULL */\n this.comment = '';\n /* space at comment (only when reading header) */\n // this.comm_max = 0;\n /* true if there was or will be a header crc */\n this.hcrc = 0;\n /* true when done reading gzip header (not used when writing a gzip file) */\n this.done = false;\n}\n\nmodule.exports = GZheader;\n},{}],34:[function(_dereq_,module,exports){\n'use strict';\n\n// See state defs from inflate.js\nvar BAD = 30; /* got a data error -- remain here until reset */\nvar TYPE = 12; /* i: waiting for type bits, including last-flag bit */\n\n/*\n Decode literal, length, and distance codes and write out the resulting\n literal and match bytes until either not enough input or output is\n available, an end-of-block is encountered, or a data error is encountered.\n When large enough input and output buffers are supplied to inflate(), for\n example, a 16K input buffer and a 64K output buffer, more than 95% of the\n inflate execution time is spent in this routine.\n\n Entry assumptions:\n\n state.mode === LEN\n strm.avail_in >= 6\n strm.avail_out >= 258\n start >= strm.avail_out\n state.bits < 8\n\n On return, state.mode is one of:\n\n LEN -- ran out of enough output space or enough available input\n TYPE -- reached end of block code, inflate() to interpret next block\n BAD -- error in block data\n\n Notes:\n\n - The maximum input bits used by a length/distance pair is 15 bits for the\n length code, 5 bits for the length extra, 15 bits for the distance code,\n and 13 bits for the distance extra. This totals 48 bits, or six bytes.\n Therefore if strm.avail_in >= 6, then there is enough input to avoid\n checking for available input while decoding.\n\n - The maximum bytes that a single length/distance pair can output is 258\n bytes, which is the maximum length that can be coded. inflate_fast()\n requires strm.avail_out >= 258 for each loop to avoid checking for\n output space.\n */\nmodule.exports = function inflate_fast(strm, start) {\n var state;\n var _in; /* local strm.input */\n var last; /* have enough input while in < last */\n var _out; /* local strm.output */\n var beg; /* inflate()'s initial strm.output */\n var end; /* while out < end, enough space available */\n//#ifdef INFLATE_STRICT\n var dmax; /* maximum distance from zlib header */\n//#endif\n var wsize; /* window size or zero if not using window */\n var whave; /* valid bytes in the window */\n var wnext; /* window write index */\n var window; /* allocated sliding window, if wsize != 0 */\n var hold; /* local strm.hold */\n var bits; /* local strm.bits */\n var lcode; /* local strm.lencode */\n var dcode; /* local strm.distcode */\n var lmask; /* mask for first level of length codes */\n var dmask; /* mask for first level of distance codes */\n var here; /* retrieved table entry */\n var op; /* code bits, operation, extra bits, or */\n /* window position, window bytes to copy */\n var len; /* match length, unused bytes */\n var dist; /* match distance */\n var from; /* where to copy match from */\n var from_source;\n\n\n var input, output; // JS specific, because we have no pointers\n\n /* copy state to local variables */\n state = strm.state;\n //here = state.here;\n _in = strm.next_in;\n input = strm.input;\n last = _in + (strm.avail_in - 5);\n _out = strm.next_out;\n output = strm.output;\n beg = _out - (start - strm.avail_out);\n end = _out + (strm.avail_out - 257);\n//#ifdef INFLATE_STRICT\n dmax = state.dmax;\n//#endif\n wsize = state.wsize;\n whave = state.whave;\n wnext = state.wnext;\n window = state.window;\n hold = state.hold;\n bits = state.bits;\n lcode = state.lencode;\n dcode = state.distcode;\n lmask = (1 << state.lenbits) - 1;\n dmask = (1 << state.distbits) - 1;\n\n\n /* decode literals and length/distances until end-of-block or not enough\n input data or output space */\n\n top:\n do {\n if (bits < 15) {\n hold += input[_in++] << bits;\n bits += 8;\n hold += input[_in++] << bits;\n bits += 8;\n }\n\n here = lcode[hold & lmask];\n\n dolen:\n for (;;) { // Goto emulation\n op = here >>> 24/*here.bits*/;\n hold >>>= op;\n bits -= op;\n op = (here >>> 16) & 0xff/*here.op*/;\n if (op === 0) { /* literal */\n //Tracevv((stderr, here.val >= 0x20 && here.val < 0x7f ?\n // \"inflate: literal '%c'\\n\" :\n // \"inflate: literal 0x%02x\\n\", here.val));\n output[_out++] = here & 0xffff/*here.val*/;\n }\n else if (op & 16) { /* length base */\n len = here & 0xffff/*here.val*/;\n op &= 15; /* number of extra bits */\n if (op) {\n if (bits < op) {\n hold += input[_in++] << bits;\n bits += 8;\n }\n len += hold & ((1 << op) - 1);\n hold >>>= op;\n bits -= op;\n }\n //Tracevv((stderr, \"inflate: length %u\\n\", len));\n if (bits < 15) {\n hold += input[_in++] << bits;\n bits += 8;\n hold += input[_in++] << bits;\n bits += 8;\n }\n here = dcode[hold & dmask];\n\n dodist:\n for (;;) { // goto emulation\n op = here >>> 24/*here.bits*/;\n hold >>>= op;\n bits -= op;\n op = (here >>> 16) & 0xff/*here.op*/;\n\n if (op & 16) { /* distance base */\n dist = here & 0xffff/*here.val*/;\n op &= 15; /* number of extra bits */\n if (bits < op) {\n hold += input[_in++] << bits;\n bits += 8;\n if (bits < op) {\n hold += input[_in++] << bits;\n bits += 8;\n }\n }\n dist += hold & ((1 << op) - 1);\n//#ifdef INFLATE_STRICT\n if (dist > dmax) {\n strm.msg = 'invalid distance too far back';\n state.mode = BAD;\n break top;\n }\n//#endif\n hold >>>= op;\n bits -= op;\n //Tracevv((stderr, \"inflate: distance %u\\n\", dist));\n op = _out - beg; /* max distance in output */\n if (dist > op) { /* see if copy from window */\n op = dist - op; /* distance back in window */\n if (op > whave) {\n if (state.sane) {\n strm.msg = 'invalid distance too far back';\n state.mode = BAD;\n break top;\n }\n\n// (!) This block is disabled in zlib defailts,\n// don't enable it for binary compatibility\n//#ifdef INFLATE_ALLOW_INVALID_DISTANCE_TOOFAR_ARRR\n// if (len <= op - whave) {\n// do {\n// output[_out++] = 0;\n// } while (--len);\n// continue top;\n// }\n// len -= op - whave;\n// do {\n// output[_out++] = 0;\n// } while (--op > whave);\n// if (op === 0) {\n// from = _out - dist;\n// do {\n// output[_out++] = output[from++];\n// } while (--len);\n// continue top;\n// }\n//#endif\n }\n from = 0; // window index\n from_source = window;\n if (wnext === 0) { /* very common case */\n from += wsize - op;\n if (op < len) { /* some from window */\n len -= op;\n do {\n output[_out++] = window[from++];\n } while (--op);\n from = _out - dist; /* rest from output */\n from_source = output;\n }\n }\n else if (wnext < op) { /* wrap around window */\n from += wsize + wnext - op;\n op -= wnext;\n if (op < len) { /* some from end of window */\n len -= op;\n do {\n output[_out++] = window[from++];\n } while (--op);\n from = 0;\n if (wnext < len) { /* some from start of window */\n op = wnext;\n len -= op;\n do {\n output[_out++] = window[from++];\n } while (--op);\n from = _out - dist; /* rest from output */\n from_source = output;\n }\n }\n }\n else { /* contiguous in window */\n from += wnext - op;\n if (op < len) { /* some from window */\n len -= op;\n do {\n output[_out++] = window[from++];\n } while (--op);\n from = _out - dist; /* rest from output */\n from_source = output;\n }\n }\n while (len > 2) {\n output[_out++] = from_source[from++];\n output[_out++] = from_source[from++];\n output[_out++] = from_source[from++];\n len -= 3;\n }\n if (len) {\n output[_out++] = from_source[from++];\n if (len > 1) {\n output[_out++] = from_source[from++];\n }\n }\n }\n else {\n from = _out - dist; /* copy direct from output */\n do { /* minimum length is three */\n output[_out++] = output[from++];\n output[_out++] = output[from++];\n output[_out++] = output[from++];\n len -= 3;\n } while (len > 2);\n if (len) {\n output[_out++] = output[from++];\n if (len > 1) {\n output[_out++] = output[from++];\n }\n }\n }\n }\n else if ((op & 64) === 0) { /* 2nd level distance code */\n here = dcode[(here & 0xffff)/*here.val*/ + (hold & ((1 << op) - 1))];\n continue dodist;\n }\n else {\n strm.msg = 'invalid distance code';\n state.mode = BAD;\n break top;\n }\n\n break; // need to emulate goto via \"continue\"\n }\n }\n else if ((op & 64) === 0) { /* 2nd level length code */\n here = lcode[(here & 0xffff)/*here.val*/ + (hold & ((1 << op) - 1))];\n continue dolen;\n }\n else if (op & 32) { /* end-of-block */\n //Tracevv((stderr, \"inflate: end of block\\n\"));\n state.mode = TYPE;\n break top;\n }\n else {\n strm.msg = 'invalid literal/length code';\n state.mode = BAD;\n break top;\n }\n\n break; // need to emulate goto via \"continue\"\n }\n } while (_in < last && _out < end);\n\n /* return unused bytes (on entry, bits < 8, so in won't go too far back) */\n len = bits >> 3;\n _in -= len;\n bits -= len << 3;\n hold &= (1 << bits) - 1;\n\n /* update state and return */\n strm.next_in = _in;\n strm.next_out = _out;\n strm.avail_in = (_in < last ? 5 + (last - _in) : 5 - (_in - last));\n strm.avail_out = (_out < end ? 257 + (end - _out) : 257 - (_out - end));\n state.hold = hold;\n state.bits = bits;\n return;\n};\n\n},{}],35:[function(_dereq_,module,exports){\n'use strict';\n\n\nvar utils = _dereq_('../utils/common');\nvar adler32 = _dereq_('./adler32');\nvar crc32 = _dereq_('./crc32');\nvar inflate_fast = _dereq_('./inffast');\nvar inflate_table = _dereq_('./inftrees');\n\nvar CODES = 0;\nvar LENS = 1;\nvar DISTS = 2;\n\n/* Public constants ==========================================================*/\n/* ===========================================================================*/\n\n\n/* Allowed flush values; see deflate() and inflate() below for details */\n//var Z_NO_FLUSH = 0;\n//var Z_PARTIAL_FLUSH = 1;\n//var Z_SYNC_FLUSH = 2;\n//var Z_FULL_FLUSH = 3;\nvar Z_FINISH = 4;\nvar Z_BLOCK = 5;\nvar Z_TREES = 6;\n\n\n/* Return codes for the compression/decompression functions. Negative values\n * are errors, positive values are used for special but normal events.\n */\nvar Z_OK = 0;\nvar Z_STREAM_END = 1;\nvar Z_NEED_DICT = 2;\n//var Z_ERRNO = -1;\nvar Z_STREAM_ERROR = -2;\nvar Z_DATA_ERROR = -3;\nvar Z_MEM_ERROR = -4;\nvar Z_BUF_ERROR = -5;\n//var Z_VERSION_ERROR = -6;\n\n/* The deflate compression method */\nvar Z_DEFLATED = 8;\n\n\n/* STATES ====================================================================*/\n/* ===========================================================================*/\n\n\nvar HEAD = 1; /* i: waiting for magic header */\nvar FLAGS = 2; /* i: waiting for method and flags (gzip) */\nvar TIME = 3; /* i: waiting for modification time (gzip) */\nvar OS = 4; /* i: waiting for extra flags and operating system (gzip) */\nvar EXLEN = 5; /* i: waiting for extra length (gzip) */\nvar EXTRA = 6; /* i: waiting for extra bytes (gzip) */\nvar NAME = 7; /* i: waiting for end of file name (gzip) */\nvar COMMENT = 8; /* i: waiting for end of comment (gzip) */\nvar HCRC = 9; /* i: waiting for header crc (gzip) */\nvar DICTID = 10; /* i: waiting for dictionary check value */\nvar DICT = 11; /* waiting for inflateSetDictionary() call */\nvar TYPE = 12; /* i: waiting for type bits, including last-flag bit */\nvar TYPEDO = 13; /* i: same, but skip check to exit inflate on new block */\nvar STORED = 14; /* i: waiting for stored size (length and complement) */\nvar COPY_ = 15; /* i/o: same as COPY below, but only first time in */\nvar COPY = 16; /* i/o: waiting for input or output to copy stored block */\nvar TABLE = 17; /* i: waiting for dynamic block table lengths */\nvar LENLENS = 18; /* i: waiting for code length code lengths */\nvar CODELENS = 19; /* i: waiting for length/lit and distance code lengths */\nvar LEN_ = 20; /* i: same as LEN below, but only first time in */\nvar LEN = 21; /* i: waiting for length/lit/eob code */\nvar LENEXT = 22; /* i: waiting for length extra bits */\nvar DIST = 23; /* i: waiting for distance code */\nvar DISTEXT = 24; /* i: waiting for distance extra bits */\nvar MATCH = 25; /* o: waiting for output space to copy string */\nvar LIT = 26; /* o: waiting for output space to write literal */\nvar CHECK = 27; /* i: waiting for 32-bit check value */\nvar LENGTH = 28; /* i: waiting for 32-bit length (gzip) */\nvar DONE = 29; /* finished check, done -- remain here until reset */\nvar BAD = 30; /* got a data error -- remain here until reset */\nvar MEM = 31; /* got an inflate() memory error -- remain here until reset */\nvar SYNC = 32; /* looking for synchronization bytes to restart inflate() */\n\n/* ===========================================================================*/\n\n\n\nvar ENOUGH_LENS = 852;\nvar ENOUGH_DISTS = 592;\n//var ENOUGH = (ENOUGH_LENS+ENOUGH_DISTS);\n\nvar MAX_WBITS = 15;\n/* 32K LZ77 window */\nvar DEF_WBITS = MAX_WBITS;\n\n\nfunction ZSWAP32(q) {\n return (((q >>> 24) & 0xff) +\n ((q >>> 8) & 0xff00) +\n ((q & 0xff00) << 8) +\n ((q & 0xff) << 24));\n}\n\n\nfunction InflateState() {\n this.mode = 0; /* current inflate mode */\n this.last = false; /* true if processing last block */\n this.wrap = 0; /* bit 0 true for zlib, bit 1 true for gzip */\n this.havedict = false; /* true if dictionary provided */\n this.flags = 0; /* gzip header method and flags (0 if zlib) */\n this.dmax = 0; /* zlib header max distance (INFLATE_STRICT) */\n this.check = 0; /* protected copy of check value */\n this.total = 0; /* protected copy of output count */\n // TODO: may be {}\n this.head = null; /* where to save gzip header information */\n\n /* sliding window */\n this.wbits = 0; /* log base 2 of requested window size */\n this.wsize = 0; /* window size or zero if not using window */\n this.whave = 0; /* valid bytes in the window */\n this.wnext = 0; /* window write index */\n this.window = null; /* allocated sliding window, if needed */\n\n /* bit accumulator */\n this.hold = 0; /* input bit accumulator */\n this.bits = 0; /* number of bits in \"in\" */\n\n /* for string and stored block copying */\n this.length = 0; /* literal or length of data to copy */\n this.offset = 0; /* distance back to copy string from */\n\n /* for table and code decoding */\n this.extra = 0; /* extra bits needed */\n\n /* fixed and dynamic code tables */\n this.lencode = null; /* starting table for length/literal codes */\n this.distcode = null; /* starting table for distance codes */\n this.lenbits = 0; /* index bits for lencode */\n this.distbits = 0; /* index bits for distcode */\n\n /* dynamic table building */\n this.ncode = 0; /* number of code length code lengths */\n this.nlen = 0; /* number of length code lengths */\n this.ndist = 0; /* number of distance code lengths */\n this.have = 0; /* number of code lengths in lens[] */\n this.next = null; /* next available space in codes[] */\n\n this.lens = new utils.Buf16(320); /* temporary storage for code lengths */\n this.work = new utils.Buf16(288); /* work area for code table building */\n\n /*\n because we don't have pointers in js, we use lencode and distcode directly\n as buffers so we don't need codes\n */\n //this.codes = new utils.Buf32(ENOUGH); /* space for code tables */\n this.lendyn = null; /* dynamic table for length/literal codes (JS specific) */\n this.distdyn = null; /* dynamic table for distance codes (JS specific) */\n this.sane = 0; /* if false, allow invalid distance too far */\n this.back = 0; /* bits back of last unprocessed length/lit */\n this.was = 0; /* initial length of match */\n}\n\nfunction inflateResetKeep(strm) {\n var state;\n\n if (!strm || !strm.state) { return Z_STREAM_ERROR; }\n state = strm.state;\n strm.total_in = strm.total_out = state.total = 0;\n strm.msg = ''; /*Z_NULL*/\n if (state.wrap) { /* to support ill-conceived Java test suite */\n strm.adler = state.wrap & 1;\n }\n state.mode = HEAD;\n state.last = 0;\n state.havedict = 0;\n state.dmax = 32768;\n state.head = null/*Z_NULL*/;\n state.hold = 0;\n state.bits = 0;\n //state.lencode = state.distcode = state.next = state.codes;\n state.lencode = state.lendyn = new utils.Buf32(ENOUGH_LENS);\n state.distcode = state.distdyn = new utils.Buf32(ENOUGH_DISTS);\n\n state.sane = 1;\n state.back = -1;\n //Tracev((stderr, \"inflate: reset\\n\"));\n return Z_OK;\n}\n\nfunction inflateReset(strm) {\n var state;\n\n if (!strm || !strm.state) { return Z_STREAM_ERROR; }\n state = strm.state;\n state.wsize = 0;\n state.whave = 0;\n state.wnext = 0;\n return inflateResetKeep(strm);\n\n}\n\nfunction inflateReset2(strm, windowBits) {\n var wrap;\n var state;\n\n /* get the state */\n if (!strm || !strm.state) { return Z_STREAM_ERROR; }\n state = strm.state;\n\n /* extract wrap request from windowBits parameter */\n if (windowBits < 0) {\n wrap = 0;\n windowBits = -windowBits;\n }\n else {\n wrap = (windowBits >> 4) + 1;\n if (windowBits < 48) {\n windowBits &= 15;\n }\n }\n\n /* set number of window bits, free window if different */\n if (windowBits && (windowBits < 8 || windowBits > 15)) {\n return Z_STREAM_ERROR;\n }\n if (state.window !== null && state.wbits !== windowBits) {\n state.window = null;\n }\n\n /* update state and reset the rest of it */\n state.wrap = wrap;\n state.wbits = windowBits;\n return inflateReset(strm);\n}\n\nfunction inflateInit2(strm, windowBits) {\n var ret;\n var state;\n\n if (!strm) { return Z_STREAM_ERROR; }\n //strm.msg = Z_NULL; /* in case we return an error */\n\n state = new InflateState();\n\n //if (state === Z_NULL) return Z_MEM_ERROR;\n //Tracev((stderr, \"inflate: allocated\\n\"));\n strm.state = state;\n state.window = null/*Z_NULL*/;\n ret = inflateReset2(strm, windowBits);\n if (ret !== Z_OK) {\n strm.state = null/*Z_NULL*/;\n }\n return ret;\n}\n\nfunction inflateInit(strm) {\n return inflateInit2(strm, DEF_WBITS);\n}\n\n\n/*\n Return state with length and distance decoding tables and index sizes set to\n fixed code decoding. Normally this returns fixed tables from inffixed.h.\n If BUILDFIXED is defined, then instead this routine builds the tables the\n first time it's called, and returns those tables the first time and\n thereafter. This reduces the size of the code by about 2K bytes, in\n exchange for a little execution time. However, BUILDFIXED should not be\n used for threaded applications, since the rewriting of the tables and virgin\n may not be thread-safe.\n */\nvar virgin = true;\n\nvar lenfix, distfix; // We have no pointers in JS, so keep tables separate\n\nfunction fixedtables(state) {\n /* build fixed huffman tables if first call (may not be thread safe) */\n if (virgin) {\n var sym;\n\n lenfix = new utils.Buf32(512);\n distfix = new utils.Buf32(32);\n\n /* literal/length table */\n sym = 0;\n while (sym < 144) { state.lens[sym++] = 8; }\n while (sym < 256) { state.lens[sym++] = 9; }\n while (sym < 280) { state.lens[sym++] = 7; }\n while (sym < 288) { state.lens[sym++] = 8; }\n\n inflate_table(LENS, state.lens, 0, 288, lenfix, 0, state.work, {bits: 9});\n\n /* distance table */\n sym = 0;\n while (sym < 32) { state.lens[sym++] = 5; }\n\n inflate_table(DISTS, state.lens, 0, 32, distfix, 0, state.work, {bits: 5});\n\n /* do this just once */\n virgin = false;\n }\n\n state.lencode = lenfix;\n state.lenbits = 9;\n state.distcode = distfix;\n state.distbits = 5;\n}\n\n\n/*\n Update the window with the last wsize (normally 32K) bytes written before\n returning. If window does not exist yet, create it. This is only called\n when a window is already in use, or when output has been written during this\n inflate call, but the end of the deflate stream has not been reached yet.\n It is also called to create a window for dictionary data when a dictionary\n is loaded.\n\n Providing output buffers larger than 32K to inflate() should provide a speed\n advantage, since only the last 32K of output is copied to the sliding window\n upon return from inflate(), and since all distances after the first 32K of\n output will fall in the output data, making match copies simpler and faster.\n The advantage may be dependent on the size of the processor's data caches.\n */\nfunction updatewindow(strm, src, end, copy) {\n var dist;\n var state = strm.state;\n\n /* if it hasn't been done already, allocate space for the window */\n if (state.window === null) {\n state.wsize = 1 << state.wbits;\n state.wnext = 0;\n state.whave = 0;\n\n state.window = new utils.Buf8(state.wsize);\n }\n\n /* copy state->wsize or less output bytes into the circular window */\n if (copy >= state.wsize) {\n utils.arraySet(state.window,src, end - state.wsize, state.wsize, 0);\n state.wnext = 0;\n state.whave = state.wsize;\n }\n else {\n dist = state.wsize - state.wnext;\n if (dist > copy) {\n dist = copy;\n }\n //zmemcpy(state->window + state->wnext, end - copy, dist);\n utils.arraySet(state.window,src, end - copy, dist, state.wnext);\n copy -= dist;\n if (copy) {\n //zmemcpy(state->window, end - copy, copy);\n utils.arraySet(state.window,src, end - copy, copy, 0);\n state.wnext = copy;\n state.whave = state.wsize;\n }\n else {\n state.wnext += dist;\n if (state.wnext === state.wsize) { state.wnext = 0; }\n if (state.whave < state.wsize) { state.whave += dist; }\n }\n }\n return 0;\n}\n\nfunction inflate(strm, flush) {\n var state;\n var input, output; // input/output buffers\n var next; /* next input INDEX */\n var put; /* next output INDEX */\n var have, left; /* available input and output */\n var hold; /* bit buffer */\n var bits; /* bits in bit buffer */\n var _in, _out; /* save starting available input and output */\n var copy; /* number of stored or match bytes to copy */\n var from; /* where to copy match bytes from */\n var from_source;\n var here = 0; /* current decoding table entry */\n var here_bits, here_op, here_val; // paked \"here\" denormalized (JS specific)\n //var last; /* parent table entry */\n var last_bits, last_op, last_val; // paked \"last\" denormalized (JS specific)\n var len; /* length to copy for repeats, bits to drop */\n var ret; /* return code */\n var hbuf = new utils.Buf8(4); /* buffer for gzip header crc calculation */\n var opts;\n\n var n; // temporary var for NEED_BITS\n\n var order = /* permutation of code lengths */\n [16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15];\n\n\n if (!strm || !strm.state || !strm.output ||\n (!strm.input && strm.avail_in !== 0)) {\n return Z_STREAM_ERROR;\n }\n\n state = strm.state;\n if (state.mode === TYPE) { state.mode = TYPEDO; } /* skip check */\n\n\n //--- LOAD() ---\n put = strm.next_out;\n output = strm.output;\n left = strm.avail_out;\n next = strm.next_in;\n input = strm.input;\n have = strm.avail_in;\n hold = state.hold;\n bits = state.bits;\n //---\n\n _in = have;\n _out = left;\n ret = Z_OK;\n\n inf_leave: // goto emulation\n for (;;) {\n switch (state.mode) {\n case HEAD:\n if (state.wrap === 0) {\n state.mode = TYPEDO;\n break;\n }\n //=== NEEDBITS(16);\n while (bits < 16) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n if ((state.wrap & 2) && hold === 0x8b1f) { /* gzip header */\n state.check = 0/*crc32(0L, Z_NULL, 0)*/;\n //=== CRC2(state.check, hold);\n hbuf[0] = hold & 0xff;\n hbuf[1] = (hold >>> 8) & 0xff;\n state.check = crc32(state.check, hbuf, 2, 0);\n //===//\n\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n state.mode = FLAGS;\n break;\n }\n state.flags = 0; /* expect zlib header */\n if (state.head) {\n state.head.done = false;\n }\n if (!(state.wrap & 1) || /* check if zlib header allowed */\n (((hold & 0xff)/*BITS(8)*/ << 8) + (hold >> 8)) % 31) {\n strm.msg = 'incorrect header check';\n state.mode = BAD;\n break;\n }\n if ((hold & 0x0f)/*BITS(4)*/ !== Z_DEFLATED) {\n strm.msg = 'unknown compression method';\n state.mode = BAD;\n break;\n }\n //--- DROPBITS(4) ---//\n hold >>>= 4;\n bits -= 4;\n //---//\n len = (hold & 0x0f)/*BITS(4)*/ + 8;\n if (state.wbits === 0) {\n state.wbits = len;\n }\n else if (len > state.wbits) {\n strm.msg = 'invalid window size';\n state.mode = BAD;\n break;\n }\n state.dmax = 1 << len;\n //Tracev((stderr, \"inflate: zlib header ok\\n\"));\n strm.adler = state.check = 1/*adler32(0L, Z_NULL, 0)*/;\n state.mode = hold & 0x200 ? DICTID : TYPE;\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n break;\n case FLAGS:\n //=== NEEDBITS(16); */\n while (bits < 16) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n state.flags = hold;\n if ((state.flags & 0xff) !== Z_DEFLATED) {\n strm.msg = 'unknown compression method';\n state.mode = BAD;\n break;\n }\n if (state.flags & 0xe000) {\n strm.msg = 'unknown header flags set';\n state.mode = BAD;\n break;\n }\n if (state.head) {\n state.head.text = ((hold >> 8) & 1);\n }\n if (state.flags & 0x0200) {\n //=== CRC2(state.check, hold);\n hbuf[0] = hold & 0xff;\n hbuf[1] = (hold >>> 8) & 0xff;\n state.check = crc32(state.check, hbuf, 2, 0);\n //===//\n }\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n state.mode = TIME;\n /* falls through */\n case TIME:\n //=== NEEDBITS(32); */\n while (bits < 32) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n if (state.head) {\n state.head.time = hold;\n }\n if (state.flags & 0x0200) {\n //=== CRC4(state.check, hold)\n hbuf[0] = hold & 0xff;\n hbuf[1] = (hold >>> 8) & 0xff;\n hbuf[2] = (hold >>> 16) & 0xff;\n hbuf[3] = (hold >>> 24) & 0xff;\n state.check = crc32(state.check, hbuf, 4, 0);\n //===\n }\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n state.mode = OS;\n /* falls through */\n case OS:\n //=== NEEDBITS(16); */\n while (bits < 16) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n if (state.head) {\n state.head.xflags = (hold & 0xff);\n state.head.os = (hold >> 8);\n }\n if (state.flags & 0x0200) {\n //=== CRC2(state.check, hold);\n hbuf[0] = hold & 0xff;\n hbuf[1] = (hold >>> 8) & 0xff;\n state.check = crc32(state.check, hbuf, 2, 0);\n //===//\n }\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n state.mode = EXLEN;\n /* falls through */\n case EXLEN:\n if (state.flags & 0x0400) {\n //=== NEEDBITS(16); */\n while (bits < 16) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n state.length = hold;\n if (state.head) {\n state.head.extra_len = hold;\n }\n if (state.flags & 0x0200) {\n //=== CRC2(state.check, hold);\n hbuf[0] = hold & 0xff;\n hbuf[1] = (hold >>> 8) & 0xff;\n state.check = crc32(state.check, hbuf, 2, 0);\n //===//\n }\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n }\n else if (state.head) {\n state.head.extra = null/*Z_NULL*/;\n }\n state.mode = EXTRA;\n /* falls through */\n case EXTRA:\n if (state.flags & 0x0400) {\n copy = state.length;\n if (copy > have) { copy = have; }\n if (copy) {\n if (state.head) {\n len = state.head.extra_len - state.length;\n if (!state.head.extra) {\n // Use untyped array for more conveniend processing later\n state.head.extra = new Array(state.head.extra_len);\n }\n utils.arraySet(\n state.head.extra,\n input,\n next,\n // extra field is limited to 65536 bytes\n // - no need for additional size check\n copy,\n /*len + copy > state.head.extra_max - len ? state.head.extra_max : copy,*/\n len\n );\n //zmemcpy(state.head.extra + len, next,\n // len + copy > state.head.extra_max ?\n // state.head.extra_max - len : copy);\n }\n if (state.flags & 0x0200) {\n state.check = crc32(state.check, input, copy, next);\n }\n have -= copy;\n next += copy;\n state.length -= copy;\n }\n if (state.length) { break inf_leave; }\n }\n state.length = 0;\n state.mode = NAME;\n /* falls through */\n case NAME:\n if (state.flags & 0x0800) {\n if (have === 0) { break inf_leave; }\n copy = 0;\n do {\n // TODO: 2 or 1 bytes?\n len = input[next + copy++];\n /* use constant limit because in js we should not preallocate memory */\n if (state.head && len &&\n (state.length < 65536 /*state.head.name_max*/)) {\n state.head.name += String.fromCharCode(len);\n }\n } while (len && copy < have);\n\n if (state.flags & 0x0200) {\n state.check = crc32(state.check, input, copy, next);\n }\n have -= copy;\n next += copy;\n if (len) { break inf_leave; }\n }\n else if (state.head) {\n state.head.name = null;\n }\n state.length = 0;\n state.mode = COMMENT;\n /* falls through */\n case COMMENT:\n if (state.flags & 0x1000) {\n if (have === 0) { break inf_leave; }\n copy = 0;\n do {\n len = input[next + copy++];\n /* use constant limit because in js we should not preallocate memory */\n if (state.head && len &&\n (state.length < 65536 /*state.head.comm_max*/)) {\n state.head.comment += String.fromCharCode(len);\n }\n } while (len && copy < have);\n if (state.flags & 0x0200) {\n state.check = crc32(state.check, input, copy, next);\n }\n have -= copy;\n next += copy;\n if (len) { break inf_leave; }\n }\n else if (state.head) {\n state.head.comment = null;\n }\n state.mode = HCRC;\n /* falls through */\n case HCRC:\n if (state.flags & 0x0200) {\n //=== NEEDBITS(16); */\n while (bits < 16) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n if (hold !== (state.check & 0xffff)) {\n strm.msg = 'header crc mismatch';\n state.mode = BAD;\n break;\n }\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n }\n if (state.head) {\n state.head.hcrc = ((state.flags >> 9) & 1);\n state.head.done = true;\n }\n strm.adler = state.check = 0 /*crc32(0L, Z_NULL, 0)*/;\n state.mode = TYPE;\n break;\n case DICTID:\n //=== NEEDBITS(32); */\n while (bits < 32) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n strm.adler = state.check = ZSWAP32(hold);\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n state.mode = DICT;\n /* falls through */\n case DICT:\n if (state.havedict === 0) {\n //--- RESTORE() ---\n strm.next_out = put;\n strm.avail_out = left;\n strm.next_in = next;\n strm.avail_in = have;\n state.hold = hold;\n state.bits = bits;\n //---\n return Z_NEED_DICT;\n }\n strm.adler = state.check = 1/*adler32(0L, Z_NULL, 0)*/;\n state.mode = TYPE;\n /* falls through */\n case TYPE:\n if (flush === Z_BLOCK || flush === Z_TREES) { break inf_leave; }\n /* falls through */\n case TYPEDO:\n if (state.last) {\n //--- BYTEBITS() ---//\n hold >>>= bits & 7;\n bits -= bits & 7;\n //---//\n state.mode = CHECK;\n break;\n }\n //=== NEEDBITS(3); */\n while (bits < 3) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n state.last = (hold & 0x01)/*BITS(1)*/;\n //--- DROPBITS(1) ---//\n hold >>>= 1;\n bits -= 1;\n //---//\n\n switch ((hold & 0x03)/*BITS(2)*/) {\n case 0: /* stored block */\n //Tracev((stderr, \"inflate: stored block%s\\n\",\n // state.last ? \" (last)\" : \"\"));\n state.mode = STORED;\n break;\n case 1: /* fixed block */\n fixedtables(state);\n //Tracev((stderr, \"inflate: fixed codes block%s\\n\",\n // state.last ? \" (last)\" : \"\"));\n state.mode = LEN_; /* decode codes */\n if (flush === Z_TREES) {\n //--- DROPBITS(2) ---//\n hold >>>= 2;\n bits -= 2;\n //---//\n break inf_leave;\n }\n break;\n case 2: /* dynamic block */\n //Tracev((stderr, \"inflate: dynamic codes block%s\\n\",\n // state.last ? \" (last)\" : \"\"));\n state.mode = TABLE;\n break;\n case 3:\n strm.msg = 'invalid block type';\n state.mode = BAD;\n }\n //--- DROPBITS(2) ---//\n hold >>>= 2;\n bits -= 2;\n //---//\n break;\n case STORED:\n //--- BYTEBITS() ---// /* go to byte boundary */\n hold >>>= bits & 7;\n bits -= bits & 7;\n //---//\n //=== NEEDBITS(32); */\n while (bits < 32) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n if ((hold & 0xffff) !== ((hold >>> 16) ^ 0xffff)) {\n strm.msg = 'invalid stored block lengths';\n state.mode = BAD;\n break;\n }\n state.length = hold & 0xffff;\n //Tracev((stderr, \"inflate: stored length %u\\n\",\n // state.length));\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n state.mode = COPY_;\n if (flush === Z_TREES) { break inf_leave; }\n /* falls through */\n case COPY_:\n state.mode = COPY;\n /* falls through */\n case COPY:\n copy = state.length;\n if (copy) {\n if (copy > have) { copy = have; }\n if (copy > left) { copy = left; }\n if (copy === 0) { break inf_leave; }\n //--- zmemcpy(put, next, copy); ---\n utils.arraySet(output, input, next, copy, put);\n //---//\n have -= copy;\n next += copy;\n left -= copy;\n put += copy;\n state.length -= copy;\n break;\n }\n //Tracev((stderr, \"inflate: stored end\\n\"));\n state.mode = TYPE;\n break;\n case TABLE:\n //=== NEEDBITS(14); */\n while (bits < 14) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n state.nlen = (hold & 0x1f)/*BITS(5)*/ + 257;\n //--- DROPBITS(5) ---//\n hold >>>= 5;\n bits -= 5;\n //---//\n state.ndist = (hold & 0x1f)/*BITS(5)*/ + 1;\n //--- DROPBITS(5) ---//\n hold >>>= 5;\n bits -= 5;\n //---//\n state.ncode = (hold & 0x0f)/*BITS(4)*/ + 4;\n //--- DROPBITS(4) ---//\n hold >>>= 4;\n bits -= 4;\n //---//\n//#ifndef PKZIP_BUG_WORKAROUND\n if (state.nlen > 286 || state.ndist > 30) {\n strm.msg = 'too many length or distance symbols';\n state.mode = BAD;\n break;\n }\n//#endif\n //Tracev((stderr, \"inflate: table sizes ok\\n\"));\n state.have = 0;\n state.mode = LENLENS;\n /* falls through */\n case LENLENS:\n while (state.have < state.ncode) {\n //=== NEEDBITS(3);\n while (bits < 3) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n state.lens[order[state.have++]] = (hold & 0x07);//BITS(3);\n //--- DROPBITS(3) ---//\n hold >>>= 3;\n bits -= 3;\n //---//\n }\n while (state.have < 19) {\n state.lens[order[state.have++]] = 0;\n }\n // We have separate tables & no pointers. 2 commented lines below not needed.\n //state.next = state.codes;\n //state.lencode = state.next;\n // Switch to use dynamic table\n state.lencode = state.lendyn;\n state.lenbits = 7;\n\n opts = {bits: state.lenbits};\n ret = inflate_table(CODES, state.lens, 0, 19, state.lencode, 0, state.work, opts);\n state.lenbits = opts.bits;\n\n if (ret) {\n strm.msg = 'invalid code lengths set';\n state.mode = BAD;\n break;\n }\n //Tracev((stderr, \"inflate: code lengths ok\\n\"));\n state.have = 0;\n state.mode = CODELENS;\n /* falls through */\n case CODELENS:\n while (state.have < state.nlen + state.ndist) {\n for (;;) {\n here = state.lencode[hold & ((1 << state.lenbits) - 1)];/*BITS(state.lenbits)*/\n here_bits = here >>> 24;\n here_op = (here >>> 16) & 0xff;\n here_val = here & 0xffff;\n\n if ((here_bits) <= bits) { break; }\n //--- PULLBYTE() ---//\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n //---//\n }\n if (here_val < 16) {\n //--- DROPBITS(here.bits) ---//\n hold >>>= here_bits;\n bits -= here_bits;\n //---//\n state.lens[state.have++] = here_val;\n }\n else {\n if (here_val === 16) {\n //=== NEEDBITS(here.bits + 2);\n n = here_bits + 2;\n while (bits < n) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n //--- DROPBITS(here.bits) ---//\n hold >>>= here_bits;\n bits -= here_bits;\n //---//\n if (state.have === 0) {\n strm.msg = 'invalid bit length repeat';\n state.mode = BAD;\n break;\n }\n len = state.lens[state.have - 1];\n copy = 3 + (hold & 0x03);//BITS(2);\n //--- DROPBITS(2) ---//\n hold >>>= 2;\n bits -= 2;\n //---//\n }\n else if (here_val === 17) {\n //=== NEEDBITS(here.bits + 3);\n n = here_bits + 3;\n while (bits < n) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n //--- DROPBITS(here.bits) ---//\n hold >>>= here_bits;\n bits -= here_bits;\n //---//\n len = 0;\n copy = 3 + (hold & 0x07);//BITS(3);\n //--- DROPBITS(3) ---//\n hold >>>= 3;\n bits -= 3;\n //---//\n }\n else {\n //=== NEEDBITS(here.bits + 7);\n n = here_bits + 7;\n while (bits < n) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n //--- DROPBITS(here.bits) ---//\n hold >>>= here_bits;\n bits -= here_bits;\n //---//\n len = 0;\n copy = 11 + (hold & 0x7f);//BITS(7);\n //--- DROPBITS(7) ---//\n hold >>>= 7;\n bits -= 7;\n //---//\n }\n if (state.have + copy > state.nlen + state.ndist) {\n strm.msg = 'invalid bit length repeat';\n state.mode = BAD;\n break;\n }\n while (copy--) {\n state.lens[state.have++] = len;\n }\n }\n }\n\n /* handle error breaks in while */\n if (state.mode === BAD) { break; }\n\n /* check for end-of-block code (better have one) */\n if (state.lens[256] === 0) {\n strm.msg = 'invalid code -- missing end-of-block';\n state.mode = BAD;\n break;\n }\n\n /* build code tables -- note: do not change the lenbits or distbits\n values here (9 and 6) without reading the comments in inftrees.h\n concerning the ENOUGH constants, which depend on those values */\n state.lenbits = 9;\n\n opts = {bits: state.lenbits};\n ret = inflate_table(LENS, state.lens, 0, state.nlen, state.lencode, 0, state.work, opts);\n // We have separate tables & no pointers. 2 commented lines below not needed.\n // state.next_index = opts.table_index;\n state.lenbits = opts.bits;\n // state.lencode = state.next;\n\n if (ret) {\n strm.msg = 'invalid literal/lengths set';\n state.mode = BAD;\n break;\n }\n\n state.distbits = 6;\n //state.distcode.copy(state.codes);\n // Switch to use dynamic table\n state.distcode = state.distdyn;\n opts = {bits: state.distbits};\n ret = inflate_table(DISTS, state.lens, state.nlen, state.ndist, state.distcode, 0, state.work, opts);\n // We have separate tables & no pointers. 2 commented lines below not needed.\n // state.next_index = opts.table_index;\n state.distbits = opts.bits;\n // state.distcode = state.next;\n\n if (ret) {\n strm.msg = 'invalid distances set';\n state.mode = BAD;\n break;\n }\n //Tracev((stderr, 'inflate: codes ok\\n'));\n state.mode = LEN_;\n if (flush === Z_TREES) { break inf_leave; }\n /* falls through */\n case LEN_:\n state.mode = LEN;\n /* falls through */\n case LEN:\n if (have >= 6 && left >= 258) {\n //--- RESTORE() ---\n strm.next_out = put;\n strm.avail_out = left;\n strm.next_in = next;\n strm.avail_in = have;\n state.hold = hold;\n state.bits = bits;\n //---\n inflate_fast(strm, _out);\n //--- LOAD() ---\n put = strm.next_out;\n output = strm.output;\n left = strm.avail_out;\n next = strm.next_in;\n input = strm.input;\n have = strm.avail_in;\n hold = state.hold;\n bits = state.bits;\n //---\n\n if (state.mode === TYPE) {\n state.back = -1;\n }\n break;\n }\n state.back = 0;\n for (;;) {\n here = state.lencode[hold & ((1 << state.lenbits) -1)]; /*BITS(state.lenbits)*/\n here_bits = here >>> 24;\n here_op = (here >>> 16) & 0xff;\n here_val = here & 0xffff;\n\n if (here_bits <= bits) { break; }\n //--- PULLBYTE() ---//\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n //---//\n }\n if (here_op && (here_op & 0xf0) === 0) {\n last_bits = here_bits;\n last_op = here_op;\n last_val = here_val;\n for (;;) {\n here = state.lencode[last_val +\n ((hold & ((1 << (last_bits + last_op)) -1))/*BITS(last.bits + last.op)*/ >> last_bits)];\n here_bits = here >>> 24;\n here_op = (here >>> 16) & 0xff;\n here_val = here & 0xffff;\n\n if ((last_bits + here_bits) <= bits) { break; }\n //--- PULLBYTE() ---//\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n //---//\n }\n //--- DROPBITS(last.bits) ---//\n hold >>>= last_bits;\n bits -= last_bits;\n //---//\n state.back += last_bits;\n }\n //--- DROPBITS(here.bits) ---//\n hold >>>= here_bits;\n bits -= here_bits;\n //---//\n state.back += here_bits;\n state.length = here_val;\n if (here_op === 0) {\n //Tracevv((stderr, here.val >= 0x20 && here.val < 0x7f ?\n // \"inflate: literal '%c'\\n\" :\n // \"inflate: literal 0x%02x\\n\", here.val));\n state.mode = LIT;\n break;\n }\n if (here_op & 32) {\n //Tracevv((stderr, \"inflate: end of block\\n\"));\n state.back = -1;\n state.mode = TYPE;\n break;\n }\n if (here_op & 64) {\n strm.msg = 'invalid literal/length code';\n state.mode = BAD;\n break;\n }\n state.extra = here_op & 15;\n state.mode = LENEXT;\n /* falls through */\n case LENEXT:\n if (state.extra) {\n //=== NEEDBITS(state.extra);\n n = state.extra;\n while (bits < n) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n state.length += hold & ((1 << state.extra) -1)/*BITS(state.extra)*/;\n //--- DROPBITS(state.extra) ---//\n hold >>>= state.extra;\n bits -= state.extra;\n //---//\n state.back += state.extra;\n }\n //Tracevv((stderr, \"inflate: length %u\\n\", state.length));\n state.was = state.length;\n state.mode = DIST;\n /* falls through */\n case DIST:\n for (;;) {\n here = state.distcode[hold & ((1 << state.distbits) -1)];/*BITS(state.distbits)*/\n here_bits = here >>> 24;\n here_op = (here >>> 16) & 0xff;\n here_val = here & 0xffff;\n\n if ((here_bits) <= bits) { break; }\n //--- PULLBYTE() ---//\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n //---//\n }\n if ((here_op & 0xf0) === 0) {\n last_bits = here_bits;\n last_op = here_op;\n last_val = here_val;\n for (;;) {\n here = state.distcode[last_val +\n ((hold & ((1 << (last_bits + last_op)) -1))/*BITS(last.bits + last.op)*/ >> last_bits)];\n here_bits = here >>> 24;\n here_op = (here >>> 16) & 0xff;\n here_val = here & 0xffff;\n\n if ((last_bits + here_bits) <= bits) { break; }\n //--- PULLBYTE() ---//\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n //---//\n }\n //--- DROPBITS(last.bits) ---//\n hold >>>= last_bits;\n bits -= last_bits;\n //---//\n state.back += last_bits;\n }\n //--- DROPBITS(here.bits) ---//\n hold >>>= here_bits;\n bits -= here_bits;\n //---//\n state.back += here_bits;\n if (here_op & 64) {\n strm.msg = 'invalid distance code';\n state.mode = BAD;\n break;\n }\n state.offset = here_val;\n state.extra = (here_op) & 15;\n state.mode = DISTEXT;\n /* falls through */\n case DISTEXT:\n if (state.extra) {\n //=== NEEDBITS(state.extra);\n n = state.extra;\n while (bits < n) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n state.offset += hold & ((1 << state.extra) -1)/*BITS(state.extra)*/;\n //--- DROPBITS(state.extra) ---//\n hold >>>= state.extra;\n bits -= state.extra;\n //---//\n state.back += state.extra;\n }\n//#ifdef INFLATE_STRICT\n if (state.offset > state.dmax) {\n strm.msg = 'invalid distance too far back';\n state.mode = BAD;\n break;\n }\n//#endif\n //Tracevv((stderr, \"inflate: distance %u\\n\", state.offset));\n state.mode = MATCH;\n /* falls through */\n case MATCH:\n if (left === 0) { break inf_leave; }\n copy = _out - left;\n if (state.offset > copy) { /* copy from window */\n copy = state.offset - copy;\n if (copy > state.whave) {\n if (state.sane) {\n strm.msg = 'invalid distance too far back';\n state.mode = BAD;\n break;\n }\n// (!) This block is disabled in zlib defailts,\n// don't enable it for binary compatibility\n//#ifdef INFLATE_ALLOW_INVALID_DISTANCE_TOOFAR_ARRR\n// Trace((stderr, \"inflate.c too far\\n\"));\n// copy -= state.whave;\n// if (copy > state.length) { copy = state.length; }\n// if (copy > left) { copy = left; }\n// left -= copy;\n// state.length -= copy;\n// do {\n// output[put++] = 0;\n// } while (--copy);\n// if (state.length === 0) { state.mode = LEN; }\n// break;\n//#endif\n }\n if (copy > state.wnext) {\n copy -= state.wnext;\n from = state.wsize - copy;\n }\n else {\n from = state.wnext - copy;\n }\n if (copy > state.length) { copy = state.length; }\n from_source = state.window;\n }\n else { /* copy from output */\n from_source = output;\n from = put - state.offset;\n copy = state.length;\n }\n if (copy > left) { copy = left; }\n left -= copy;\n state.length -= copy;\n do {\n output[put++] = from_source[from++];\n } while (--copy);\n if (state.length === 0) { state.mode = LEN; }\n break;\n case LIT:\n if (left === 0) { break inf_leave; }\n output[put++] = state.length;\n left--;\n state.mode = LEN;\n break;\n case CHECK:\n if (state.wrap) {\n //=== NEEDBITS(32);\n while (bits < 32) {\n if (have === 0) { break inf_leave; }\n have--;\n // Use '|' insdead of '+' to make sure that result is signed\n hold |= input[next++] << bits;\n bits += 8;\n }\n //===//\n _out -= left;\n strm.total_out += _out;\n state.total += _out;\n if (_out) {\n strm.adler = state.check =\n /*UPDATE(state.check, put - _out, _out);*/\n (state.flags ? crc32(state.check, output, _out, put - _out) : adler32(state.check, output, _out, put - _out));\n\n }\n _out = left;\n // NB: crc32 stored as signed 32-bit int, ZSWAP32 returns signed too\n if ((state.flags ? hold : ZSWAP32(hold)) !== state.check) {\n strm.msg = 'incorrect data check';\n state.mode = BAD;\n break;\n }\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n //Tracev((stderr, \"inflate: check matches trailer\\n\"));\n }\n state.mode = LENGTH;\n /* falls through */\n case LENGTH:\n if (state.wrap && state.flags) {\n //=== NEEDBITS(32);\n while (bits < 32) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n if (hold !== (state.total & 0xffffffff)) {\n strm.msg = 'incorrect length check';\n state.mode = BAD;\n break;\n }\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n //Tracev((stderr, \"inflate: length matches trailer\\n\"));\n }\n state.mode = DONE;\n /* falls through */\n case DONE:\n ret = Z_STREAM_END;\n break inf_leave;\n case BAD:\n ret = Z_DATA_ERROR;\n break inf_leave;\n case MEM:\n return Z_MEM_ERROR;\n case SYNC:\n /* falls through */\n default:\n return Z_STREAM_ERROR;\n }\n }\n\n // inf_leave <- here is real place for \"goto inf_leave\", emulated via \"break inf_leave\"\n\n /*\n Return from inflate(), updating the total counts and the check value.\n If there was no progress during the inflate() call, return a buffer\n error. Call updatewindow() to create and/or update the window state.\n Note: a memory error from inflate() is non-recoverable.\n */\n\n //--- RESTORE() ---\n strm.next_out = put;\n strm.avail_out = left;\n strm.next_in = next;\n strm.avail_in = have;\n state.hold = hold;\n state.bits = bits;\n //---\n\n if (state.wsize || (_out !== strm.avail_out && state.mode < BAD &&\n (state.mode < CHECK || flush !== Z_FINISH))) {\n if (updatewindow(strm, strm.output, strm.next_out, _out - strm.avail_out)) {\n state.mode = MEM;\n return Z_MEM_ERROR;\n }\n }\n _in -= strm.avail_in;\n _out -= strm.avail_out;\n strm.total_in += _in;\n strm.total_out += _out;\n state.total += _out;\n if (state.wrap && _out) {\n strm.adler = state.check = /*UPDATE(state.check, strm.next_out - _out, _out);*/\n (state.flags ? crc32(state.check, output, _out, strm.next_out - _out) : adler32(state.check, output, _out, strm.next_out - _out));\n }\n strm.data_type = state.bits + (state.last ? 64 : 0) +\n (state.mode === TYPE ? 128 : 0) +\n (state.mode === LEN_ || state.mode === COPY_ ? 256 : 0);\n if (((_in === 0 && _out === 0) || flush === Z_FINISH) && ret === Z_OK) {\n ret = Z_BUF_ERROR;\n }\n return ret;\n}\n\nfunction inflateEnd(strm) {\n\n if (!strm || !strm.state /*|| strm->zfree == (free_func)0*/) {\n return Z_STREAM_ERROR;\n }\n\n var state = strm.state;\n if (state.window) {\n state.window = null;\n }\n strm.state = null;\n return Z_OK;\n}\n\nfunction inflateGetHeader(strm, head) {\n var state;\n\n /* check state */\n if (!strm || !strm.state) { return Z_STREAM_ERROR; }\n state = strm.state;\n if ((state.wrap & 2) === 0) { return Z_STREAM_ERROR; }\n\n /* save header structure */\n state.head = head;\n head.done = false;\n return Z_OK;\n}\n\n\nexports.inflateReset = inflateReset;\nexports.inflateReset2 = inflateReset2;\nexports.inflateResetKeep = inflateResetKeep;\nexports.inflateInit = inflateInit;\nexports.inflateInit2 = inflateInit2;\nexports.inflate = inflate;\nexports.inflateEnd = inflateEnd;\nexports.inflateGetHeader = inflateGetHeader;\nexports.inflateInfo = 'pako inflate (from Nodeca project)';\n\n/* Not implemented\nexports.inflateCopy = inflateCopy;\nexports.inflateGetDictionary = inflateGetDictionary;\nexports.inflateMark = inflateMark;\nexports.inflatePrime = inflatePrime;\nexports.inflateSetDictionary = inflateSetDictionary;\nexports.inflateSync = inflateSync;\nexports.inflateSyncPoint = inflateSyncPoint;\nexports.inflateUndermine = inflateUndermine;\n*/\n},{\"../utils/common\":27,\"./adler32\":29,\"./crc32\":31,\"./inffast\":34,\"./inftrees\":36}],36:[function(_dereq_,module,exports){\n'use strict';\n\n\nvar utils = _dereq_('../utils/common');\n\nvar MAXBITS = 15;\nvar ENOUGH_LENS = 852;\nvar ENOUGH_DISTS = 592;\n//var ENOUGH = (ENOUGH_LENS+ENOUGH_DISTS);\n\nvar CODES = 0;\nvar LENS = 1;\nvar DISTS = 2;\n\nvar lbase = [ /* Length codes 257..285 base */\n 3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 15, 17, 19, 23, 27, 31,\n 35, 43, 51, 59, 67, 83, 99, 115, 131, 163, 195, 227, 258, 0, 0\n];\n\nvar lext = [ /* Length codes 257..285 extra */\n 16, 16, 16, 16, 16, 16, 16, 16, 17, 17, 17, 17, 18, 18, 18, 18,\n 19, 19, 19, 19, 20, 20, 20, 20, 21, 21, 21, 21, 16, 72, 78\n];\n\nvar dbase = [ /* Distance codes 0..29 base */\n 1, 2, 3, 4, 5, 7, 9, 13, 17, 25, 33, 49, 65, 97, 129, 193,\n 257, 385, 513, 769, 1025, 1537, 2049, 3073, 4097, 6145,\n 8193, 12289, 16385, 24577, 0, 0\n];\n\nvar dext = [ /* Distance codes 0..29 extra */\n 16, 16, 16, 16, 17, 17, 18, 18, 19, 19, 20, 20, 21, 21, 22, 22,\n 23, 23, 24, 24, 25, 25, 26, 26, 27, 27,\n 28, 28, 29, 29, 64, 64\n];\n\nmodule.exports = function inflate_table(type, lens, lens_index, codes, table, table_index, work, opts)\n{\n var bits = opts.bits;\n //here = opts.here; /* table entry for duplication */\n\n var len = 0; /* a code's length in bits */\n var sym = 0; /* index of code symbols */\n var min = 0, max = 0; /* minimum and maximum code lengths */\n var root = 0; /* number of index bits for root table */\n var curr = 0; /* number of index bits for current table */\n var drop = 0; /* code bits to drop for sub-table */\n var left = 0; /* number of prefix codes available */\n var used = 0; /* code entries in table used */\n var huff = 0; /* Huffman code */\n var incr; /* for incrementing code, index */\n var fill; /* index for replicating entries */\n var low; /* low bits for current root entry */\n var mask; /* mask for low root bits */\n var next; /* next available space in table */\n var base = null; /* base value table to use */\n var base_index = 0;\n// var shoextra; /* extra bits table to use */\n var end; /* use base and extra for symbol > end */\n var count = new utils.Buf16(MAXBITS+1); //[MAXBITS+1]; /* number of codes of each length */\n var offs = new utils.Buf16(MAXBITS+1); //[MAXBITS+1]; /* offsets in table for each length */\n var extra = null;\n var extra_index = 0;\n\n var here_bits, here_op, here_val;\n\n /*\n Process a set of code lengths to create a canonical Huffman code. The\n code lengths are lens[0..codes-1]. Each length corresponds to the\n symbols 0..codes-1. The Huffman code is generated by first sorting the\n symbols by length from short to long, and retaining the symbol order\n for codes with equal lengths. Then the code starts with all zero bits\n for the first code of the shortest length, and the codes are integer\n increments for the same length, and zeros are appended as the length\n increases. For the deflate format, these bits are stored backwards\n from their more natural integer increment ordering, and so when the\n decoding tables are built in the large loop below, the integer codes\n are incremented backwards.\n\n This routine assumes, but does not check, that all of the entries in\n lens[] are in the range 0..MAXBITS. The caller must assure this.\n 1..MAXBITS is interpreted as that code length. zero means that that\n symbol does not occur in this code.\n\n The codes are sorted by computing a count of codes for each length,\n creating from that a table of starting indices for each length in the\n sorted table, and then entering the symbols in order in the sorted\n table. The sorted table is work[], with that space being provided by\n the caller.\n\n The length counts are used for other purposes as well, i.e. finding\n the minimum and maximum length codes, determining if there are any\n codes at all, checking for a valid set of lengths, and looking ahead\n at length counts to determine sub-table sizes when building the\n decoding tables.\n */\n\n /* accumulate lengths for codes (assumes lens[] all in 0..MAXBITS) */\n for (len = 0; len <= MAXBITS; len++) {\n count[len] = 0;\n }\n for (sym = 0; sym < codes; sym++) {\n count[lens[lens_index + sym]]++;\n }\n\n /* bound code lengths, force root to be within code lengths */\n root = bits;\n for (max = MAXBITS; max >= 1; max--) {\n if (count[max] !== 0) { break; }\n }\n if (root > max) {\n root = max;\n }\n if (max === 0) { /* no symbols to code at all */\n //table.op[opts.table_index] = 64; //here.op = (var char)64; /* invalid code marker */\n //table.bits[opts.table_index] = 1; //here.bits = (var char)1;\n //table.val[opts.table_index++] = 0; //here.val = (var short)0;\n table[table_index++] = (1 << 24) | (64 << 16) | 0;\n\n\n //table.op[opts.table_index] = 64;\n //table.bits[opts.table_index] = 1;\n //table.val[opts.table_index++] = 0;\n table[table_index++] = (1 << 24) | (64 << 16) | 0;\n\n opts.bits = 1;\n return 0; /* no symbols, but wait for decoding to report error */\n }\n for (min = 1; min < max; min++) {\n if (count[min] !== 0) { break; }\n }\n if (root < min) {\n root = min;\n }\n\n /* check for an over-subscribed or incomplete set of lengths */\n left = 1;\n for (len = 1; len <= MAXBITS; len++) {\n left <<= 1;\n left -= count[len];\n if (left < 0) {\n return -1;\n } /* over-subscribed */\n }\n if (left > 0 && (type === CODES || max !== 1)) {\n return -1; /* incomplete set */\n }\n\n /* generate offsets into symbol table for each length for sorting */\n offs[1] = 0;\n for (len = 1; len < MAXBITS; len++) {\n offs[len + 1] = offs[len] + count[len];\n }\n\n /* sort symbols by length, by symbol order within each length */\n for (sym = 0; sym < codes; sym++) {\n if (lens[lens_index + sym] !== 0) {\n work[offs[lens[lens_index + sym]]++] = sym;\n }\n }\n\n /*\n Create and fill in decoding tables. In this loop, the table being\n filled is at next and has curr index bits. The code being used is huff\n with length len. That code is converted to an index by dropping drop\n bits off of the bottom. For codes where len is less than drop + curr,\n those top drop + curr - len bits are incremented through all values to\n fill the table with replicated entries.\n\n root is the number of index bits for the root table. When len exceeds\n root, sub-tables are created pointed to by the root entry with an index\n of the low root bits of huff. This is saved in low to check for when a\n new sub-table should be started. drop is zero when the root table is\n being filled, and drop is root when sub-tables are being filled.\n\n When a new sub-table is needed, it is necessary to look ahead in the\n code lengths to determine what size sub-table is needed. The length\n counts are used for this, and so count[] is decremented as codes are\n entered in the tables.\n\n used keeps track of how many table entries have been allocated from the\n provided *table space. It is checked for LENS and DIST tables against\n the constants ENOUGH_LENS and ENOUGH_DISTS to guard against changes in\n the initial root table size constants. See the comments in inftrees.h\n for more information.\n\n sym increments through all symbols, and the loop terminates when\n all codes of length max, i.e. all codes, have been processed. This\n routine permits incomplete codes, so another loop after this one fills\n in the rest of the decoding tables with invalid code markers.\n */\n\n /* set up for code type */\n // poor man optimization - use if-else instead of switch,\n // to avoid deopts in old v8\n if (type === CODES) {\n base = extra = work; /* dummy value--not used */\n end = 19;\n } else if (type === LENS) {\n base = lbase;\n base_index -= 257;\n extra = lext;\n extra_index -= 257;\n end = 256;\n } else { /* DISTS */\n base = dbase;\n extra = dext;\n end = -1;\n }\n\n /* initialize opts for loop */\n huff = 0; /* starting code */\n sym = 0; /* starting code symbol */\n len = min; /* starting code length */\n next = table_index; /* current table to fill in */\n curr = root; /* current table index bits */\n drop = 0; /* current bits to drop from code for index */\n low = -1; /* trigger new sub-table when len > root */\n used = 1 << root; /* use root table entries */\n mask = used - 1; /* mask for comparing low */\n\n /* check available table space */\n if ((type === LENS && used > ENOUGH_LENS) ||\n (type === DISTS && used > ENOUGH_DISTS)) {\n return 1;\n }\n\n var i=0;\n /* process all codes and make table entries */\n for (;;) {\n i++;\n /* create table entry */\n here_bits = len - drop;\n if (work[sym] < end) {\n here_op = 0;\n here_val = work[sym];\n }\n else if (work[sym] > end) {\n here_op = extra[extra_index + work[sym]];\n here_val = base[base_index + work[sym]];\n }\n else {\n here_op = 32 + 64; /* end of block */\n here_val = 0;\n }\n\n /* replicate for those indices with low len bits equal to huff */\n incr = 1 << (len - drop);\n fill = 1 << curr;\n min = fill; /* save offset to next table */\n do {\n fill -= incr;\n table[next + (huff >> drop) + fill] = (here_bits << 24) | (here_op << 16) | here_val |0;\n } while (fill !== 0);\n\n /* backwards increment the len-bit code huff */\n incr = 1 << (len - 1);\n while (huff & incr) {\n incr >>= 1;\n }\n if (incr !== 0) {\n huff &= incr - 1;\n huff += incr;\n } else {\n huff = 0;\n }\n\n /* go to next symbol, update count, len */\n sym++;\n if (--count[len] === 0) {\n if (len === max) { break; }\n len = lens[lens_index + work[sym]];\n }\n\n /* create new sub-table if needed */\n if (len > root && (huff & mask) !== low) {\n /* if first time, transition to sub-tables */\n if (drop === 0) {\n drop = root;\n }\n\n /* increment past last table */\n next += min; /* here min is 1 << curr */\n\n /* determine length of next table */\n curr = len - drop;\n left = 1 << curr;\n while (curr + drop < max) {\n left -= count[curr + drop];\n if (left <= 0) { break; }\n curr++;\n left <<= 1;\n }\n\n /* check for enough space */\n used += 1 << curr;\n if ((type === LENS && used > ENOUGH_LENS) ||\n (type === DISTS && used > ENOUGH_DISTS)) {\n return 1;\n }\n\n /* point entry in root table to sub-table */\n low = huff & mask;\n /*table.op[low] = curr;\n table.bits[low] = root;\n table.val[low] = next - opts.table_index;*/\n table[low] = (root << 24) | (curr << 16) | (next - table_index) |0;\n }\n }\n\n /* fill in remaining table entry if code is incomplete (guaranteed to have\n at most one remaining entry, since if the code is incomplete, the\n maximum code length that was allowed to get this far is one bit) */\n if (huff !== 0) {\n //table.op[next + huff] = 64; /* invalid code marker */\n //table.bits[next + huff] = len - drop;\n //table.val[next + huff] = 0;\n table[next + huff] = ((len - drop) << 24) | (64 << 16) |0;\n }\n\n /* set return parameters */\n //opts.table_index += used;\n opts.bits = root;\n return 0;\n};\n\n},{\"../utils/common\":27}],37:[function(_dereq_,module,exports){\n'use strict';\n\nmodule.exports = {\n '2': 'need dictionary', /* Z_NEED_DICT 2 */\n '1': 'stream end', /* Z_STREAM_END 1 */\n '0': '', /* Z_OK 0 */\n '-1': 'file error', /* Z_ERRNO (-1) */\n '-2': 'stream error', /* Z_STREAM_ERROR (-2) */\n '-3': 'data error', /* Z_DATA_ERROR (-3) */\n '-4': 'insufficient memory', /* Z_MEM_ERROR (-4) */\n '-5': 'buffer error', /* Z_BUF_ERROR (-5) */\n '-6': 'incompatible version' /* Z_VERSION_ERROR (-6) */\n};\n},{}],38:[function(_dereq_,module,exports){\n'use strict';\n\n\nvar utils = _dereq_('../utils/common');\n\n/* Public constants ==========================================================*/\n/* ===========================================================================*/\n\n\n//var Z_FILTERED = 1;\n//var Z_HUFFMAN_ONLY = 2;\n//var Z_RLE = 3;\nvar Z_FIXED = 4;\n//var Z_DEFAULT_STRATEGY = 0;\n\n/* Possible values of the data_type field (though see inflate()) */\nvar Z_BINARY = 0;\nvar Z_TEXT = 1;\n//var Z_ASCII = 1; // = Z_TEXT\nvar Z_UNKNOWN = 2;\n\n/*============================================================================*/\n\n\nfunction zero(buf) { var len = buf.length; while (--len >= 0) { buf[len] = 0; } }\n\n// From zutil.h\n\nvar STORED_BLOCK = 0;\nvar STATIC_TREES = 1;\nvar DYN_TREES = 2;\n/* The three kinds of block type */\n\nvar MIN_MATCH = 3;\nvar MAX_MATCH = 258;\n/* The minimum and maximum match lengths */\n\n// From deflate.h\n/* ===========================================================================\n * Internal compression state.\n */\n\nvar LENGTH_CODES = 29;\n/* number of length codes, not counting the special END_BLOCK code */\n\nvar LITERALS = 256;\n/* number of literal bytes 0..255 */\n\nvar L_CODES = LITERALS + 1 + LENGTH_CODES;\n/* number of Literal or Length codes, including the END_BLOCK code */\n\nvar D_CODES = 30;\n/* number of distance codes */\n\nvar BL_CODES = 19;\n/* number of codes used to transfer the bit lengths */\n\nvar HEAP_SIZE = 2*L_CODES + 1;\n/* maximum heap size */\n\nvar MAX_BITS = 15;\n/* All codes must not exceed MAX_BITS bits */\n\nvar Buf_size = 16;\n/* size of bit buffer in bi_buf */\n\n\n/* ===========================================================================\n * Constants\n */\n\nvar MAX_BL_BITS = 7;\n/* Bit length codes must not exceed MAX_BL_BITS bits */\n\nvar END_BLOCK = 256;\n/* end of block literal code */\n\nvar REP_3_6 = 16;\n/* repeat previous bit length 3-6 times (2 bits of repeat count) */\n\nvar REPZ_3_10 = 17;\n/* repeat a zero length 3-10 times (3 bits of repeat count) */\n\nvar REPZ_11_138 = 18;\n/* repeat a zero length 11-138 times (7 bits of repeat count) */\n\nvar extra_lbits = /* extra bits for each length code */\n [0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0];\n\nvar extra_dbits = /* extra bits for each distance code */\n [0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13];\n\nvar extra_blbits = /* extra bits for each bit length code */\n [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7];\n\nvar bl_order =\n [16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15];\n/* The lengths of the bit length codes are sent in order of decreasing\n * probability, to avoid transmitting the lengths for unused bit length codes.\n */\n\n/* ===========================================================================\n * Local data. These are initialized only once.\n */\n\n// We pre-fill arrays with 0 to avoid uninitialized gaps\n\nvar DIST_CODE_LEN = 512; /* see definition of array dist_code below */\n\n// !!!! Use flat array insdead of structure, Freq = i*2, Len = i*2+1\nvar static_ltree = new Array((L_CODES+2) * 2);\nzero(static_ltree);\n/* The static literal tree. Since the bit lengths are imposed, there is no\n * need for the L_CODES extra codes used during heap construction. However\n * The codes 286 and 287 are needed to build a canonical tree (see _tr_init\n * below).\n */\n\nvar static_dtree = new Array(D_CODES * 2);\nzero(static_dtree);\n/* The static distance tree. (Actually a trivial tree since all codes use\n * 5 bits.)\n */\n\nvar _dist_code = new Array(DIST_CODE_LEN);\nzero(_dist_code);\n/* Distance codes. The first 256 values correspond to the distances\n * 3 .. 258, the last 256 values correspond to the top 8 bits of\n * the 15 bit distances.\n */\n\nvar _length_code = new Array(MAX_MATCH-MIN_MATCH+1);\nzero(_length_code);\n/* length code for each normalized match length (0 == MIN_MATCH) */\n\nvar base_length = new Array(LENGTH_CODES);\nzero(base_length);\n/* First normalized length for each code (0 = MIN_MATCH) */\n\nvar base_dist = new Array(D_CODES);\nzero(base_dist);\n/* First normalized distance for each code (0 = distance of 1) */\n\n\nvar StaticTreeDesc = function (static_tree, extra_bits, extra_base, elems, max_length) {\n\n this.static_tree = static_tree; /* static tree or NULL */\n this.extra_bits = extra_bits; /* extra bits for each code or NULL */\n this.extra_base = extra_base; /* base index for extra_bits */\n this.elems = elems; /* max number of elements in the tree */\n this.max_length = max_length; /* max bit length for the codes */\n\n // show if `static_tree` has data or dummy - needed for monomorphic objects\n this.has_stree = static_tree && static_tree.length;\n};\n\n\nvar static_l_desc;\nvar static_d_desc;\nvar static_bl_desc;\n\n\nvar TreeDesc = function(dyn_tree, stat_desc) {\n this.dyn_tree = dyn_tree; /* the dynamic tree */\n this.max_code = 0; /* largest code with non zero frequency */\n this.stat_desc = stat_desc; /* the corresponding static tree */\n};\n\n\n\nfunction d_code(dist) {\n return dist < 256 ? _dist_code[dist] : _dist_code[256 + (dist >>> 7)];\n}\n\n\n/* ===========================================================================\n * Output a short LSB first on the stream.\n * IN assertion: there is enough room in pendingBuf.\n */\nfunction put_short (s, w) {\n// put_byte(s, (uch)((w) & 0xff));\n// put_byte(s, (uch)((ush)(w) >> 8));\n s.pending_buf[s.pending++] = (w) & 0xff;\n s.pending_buf[s.pending++] = (w >>> 8) & 0xff;\n}\n\n\n/* ===========================================================================\n * Send a value on a given number of bits.\n * IN assertion: length <= 16 and value fits in length bits.\n */\nfunction send_bits(s, value, length) {\n if (s.bi_valid > (Buf_size - length)) {\n s.bi_buf |= (value << s.bi_valid) & 0xffff;\n put_short(s, s.bi_buf);\n s.bi_buf = value >> (Buf_size - s.bi_valid);\n s.bi_valid += length - Buf_size;\n } else {\n s.bi_buf |= (value << s.bi_valid) & 0xffff;\n s.bi_valid += length;\n }\n}\n\n\nfunction send_code(s, c, tree) {\n send_bits(s, tree[c*2]/*.Code*/, tree[c*2 + 1]/*.Len*/);\n}\n\n\n/* ===========================================================================\n * Reverse the first len bits of a code, using straightforward code (a faster\n * method would use a table)\n * IN assertion: 1 <= len <= 15\n */\nfunction bi_reverse(code, len) {\n var res = 0;\n do {\n res |= code & 1;\n code >>>= 1;\n res <<= 1;\n } while (--len > 0);\n return res >>> 1;\n}\n\n\n/* ===========================================================================\n * Flush the bit buffer, keeping at most 7 bits in it.\n */\nfunction bi_flush(s) {\n if (s.bi_valid === 16) {\n put_short(s, s.bi_buf);\n s.bi_buf = 0;\n s.bi_valid = 0;\n\n } else if (s.bi_valid >= 8) {\n s.pending_buf[s.pending++] = s.bi_buf & 0xff;\n s.bi_buf >>= 8;\n s.bi_valid -= 8;\n }\n}\n\n\n/* ===========================================================================\n * Compute the optimal bit lengths for a tree and update the total bit length\n * for the current block.\n * IN assertion: the fields freq and dad are set, heap[heap_max] and\n * above are the tree nodes sorted by increasing frequency.\n * OUT assertions: the field len is set to the optimal bit length, the\n * array bl_count contains the frequencies for each bit length.\n * The length opt_len is updated; static_len is also updated if stree is\n * not null.\n */\nfunction gen_bitlen(s, desc)\n// deflate_state *s;\n// tree_desc *desc; /* the tree descriptor */\n{\n var tree = desc.dyn_tree;\n var max_code = desc.max_code;\n var stree = desc.stat_desc.static_tree;\n var has_stree = desc.stat_desc.has_stree;\n var extra = desc.stat_desc.extra_bits;\n var base = desc.stat_desc.extra_base;\n var max_length = desc.stat_desc.max_length;\n var h; /* heap index */\n var n, m; /* iterate over the tree elements */\n var bits; /* bit length */\n var xbits; /* extra bits */\n var f; /* frequency */\n var overflow = 0; /* number of elements with bit length too large */\n\n for (bits = 0; bits <= MAX_BITS; bits++) {\n s.bl_count[bits] = 0;\n }\n\n /* In a first pass, compute the optimal bit lengths (which may\n * overflow in the case of the bit length tree).\n */\n tree[s.heap[s.heap_max]*2 + 1]/*.Len*/ = 0; /* root of the heap */\n\n for (h = s.heap_max+1; h < HEAP_SIZE; h++) {\n n = s.heap[h];\n bits = tree[tree[n*2 +1]/*.Dad*/ * 2 + 1]/*.Len*/ + 1;\n if (bits > max_length) {\n bits = max_length;\n overflow++;\n }\n tree[n*2 + 1]/*.Len*/ = bits;\n /* We overwrite tree[n].Dad which is no longer needed */\n\n if (n > max_code) { continue; } /* not a leaf node */\n\n s.bl_count[bits]++;\n xbits = 0;\n if (n >= base) {\n xbits = extra[n-base];\n }\n f = tree[n * 2]/*.Freq*/;\n s.opt_len += f * (bits + xbits);\n if (has_stree) {\n s.static_len += f * (stree[n*2 + 1]/*.Len*/ + xbits);\n }\n }\n if (overflow === 0) { return; }\n\n // Trace((stderr,\"\\nbit length overflow\\n\"));\n /* This happens for example on obj2 and pic of the Calgary corpus */\n\n /* Find the first bit length which could increase: */\n do {\n bits = max_length-1;\n while (s.bl_count[bits] === 0) { bits--; }\n s.bl_count[bits]--; /* move one leaf down the tree */\n s.bl_count[bits+1] += 2; /* move one overflow item as its brother */\n s.bl_count[max_length]--;\n /* The brother of the overflow item also moves one step up,\n * but this does not affect bl_count[max_length]\n */\n overflow -= 2;\n } while (overflow > 0);\n\n /* Now recompute all bit lengths, scanning in increasing frequency.\n * h is still equal to HEAP_SIZE. (It is simpler to reconstruct all\n * lengths instead of fixing only the wrong ones. This idea is taken\n * from 'ar' written by Haruhiko Okumura.)\n */\n for (bits = max_length; bits !== 0; bits--) {\n n = s.bl_count[bits];\n while (n !== 0) {\n m = s.heap[--h];\n if (m > max_code) { continue; }\n if (tree[m*2 + 1]/*.Len*/ !== bits) {\n // Trace((stderr,\"code %d bits %d->%d\\n\", m, tree[m].Len, bits));\n s.opt_len += (bits - tree[m*2 + 1]/*.Len*/)*tree[m*2]/*.Freq*/;\n tree[m*2 + 1]/*.Len*/ = bits;\n }\n n--;\n }\n }\n}\n\n\n/* ===========================================================================\n * Generate the codes for a given tree and bit counts (which need not be\n * optimal).\n * IN assertion: the array bl_count contains the bit length statistics for\n * the given tree and the field len is set for all tree elements.\n * OUT assertion: the field code is set for all tree elements of non\n * zero code length.\n */\nfunction gen_codes(tree, max_code, bl_count)\n// ct_data *tree; /* the tree to decorate */\n// int max_code; /* largest code with non zero frequency */\n// ushf *bl_count; /* number of codes at each bit length */\n{\n var next_code = new Array(MAX_BITS+1); /* next code value for each bit length */\n var code = 0; /* running code value */\n var bits; /* bit index */\n var n; /* code index */\n\n /* The distribution counts are first used to generate the code values\n * without bit reversal.\n */\n for (bits = 1; bits <= MAX_BITS; bits++) {\n next_code[bits] = code = (code + bl_count[bits-1]) << 1;\n }\n /* Check that the bit counts in bl_count are consistent. The last code\n * must be all ones.\n */\n //Assert (code + bl_count[MAX_BITS]-1 == (1< length code (0..28) */\n length = 0;\n for (code = 0; code < LENGTH_CODES-1; code++) {\n base_length[code] = length;\n for (n = 0; n < (1< dist code (0..29) */\n dist = 0;\n for (code = 0 ; code < 16; code++) {\n base_dist[code] = dist;\n for (n = 0; n < (1<>= 7; /* from now on, all distances are divided by 128 */\n for ( ; code < D_CODES; code++) {\n base_dist[code] = dist << 7;\n for (n = 0; n < (1<<(extra_dbits[code]-7)); n++) {\n _dist_code[256 + dist++] = code;\n }\n }\n //Assert (dist == 256, \"tr_static_init: 256+dist != 512\");\n\n /* Construct the codes of the static literal tree */\n for (bits = 0; bits <= MAX_BITS; bits++) {\n bl_count[bits] = 0;\n }\n\n n = 0;\n while (n <= 143) {\n static_ltree[n*2 + 1]/*.Len*/ = 8;\n n++;\n bl_count[8]++;\n }\n while (n <= 255) {\n static_ltree[n*2 + 1]/*.Len*/ = 9;\n n++;\n bl_count[9]++;\n }\n while (n <= 279) {\n static_ltree[n*2 + 1]/*.Len*/ = 7;\n n++;\n bl_count[7]++;\n }\n while (n <= 287) {\n static_ltree[n*2 + 1]/*.Len*/ = 8;\n n++;\n bl_count[8]++;\n }\n /* Codes 286 and 287 do not exist, but we must include them in the\n * tree construction to get a canonical Huffman tree (longest code\n * all ones)\n */\n gen_codes(static_ltree, L_CODES+1, bl_count);\n\n /* The static distance tree is trivial: */\n for (n = 0; n < D_CODES; n++) {\n static_dtree[n*2 + 1]/*.Len*/ = 5;\n static_dtree[n*2]/*.Code*/ = bi_reverse(n, 5);\n }\n\n // Now data ready and we can init static trees\n static_l_desc = new StaticTreeDesc(static_ltree, extra_lbits, LITERALS+1, L_CODES, MAX_BITS);\n static_d_desc = new StaticTreeDesc(static_dtree, extra_dbits, 0, D_CODES, MAX_BITS);\n static_bl_desc =new StaticTreeDesc(new Array(0), extra_blbits, 0, BL_CODES, MAX_BL_BITS);\n\n //static_init_done = true;\n}\n\n\n/* ===========================================================================\n * Initialize a new block.\n */\nfunction init_block(s) {\n var n; /* iterates over tree elements */\n\n /* Initialize the trees. */\n for (n = 0; n < L_CODES; n++) { s.dyn_ltree[n*2]/*.Freq*/ = 0; }\n for (n = 0; n < D_CODES; n++) { s.dyn_dtree[n*2]/*.Freq*/ = 0; }\n for (n = 0; n < BL_CODES; n++) { s.bl_tree[n*2]/*.Freq*/ = 0; }\n\n s.dyn_ltree[END_BLOCK*2]/*.Freq*/ = 1;\n s.opt_len = s.static_len = 0;\n s.last_lit = s.matches = 0;\n}\n\n\n/* ===========================================================================\n * Flush the bit buffer and align the output on a byte boundary\n */\nfunction bi_windup(s)\n{\n if (s.bi_valid > 8) {\n put_short(s, s.bi_buf);\n } else if (s.bi_valid > 0) {\n //put_byte(s, (Byte)s->bi_buf);\n s.pending_buf[s.pending++] = s.bi_buf;\n }\n s.bi_buf = 0;\n s.bi_valid = 0;\n}\n\n/* ===========================================================================\n * Copy a stored block, storing first the length and its\n * one's complement if requested.\n */\nfunction copy_block(s, buf, len, header)\n//DeflateState *s;\n//charf *buf; /* the input data */\n//unsigned len; /* its length */\n//int header; /* true if block header must be written */\n{\n bi_windup(s); /* align on byte boundary */\n\n if (header) {\n put_short(s, len);\n put_short(s, ~len);\n }\n// while (len--) {\n// put_byte(s, *buf++);\n// }\n utils.arraySet(s.pending_buf, s.window, buf, len, s.pending);\n s.pending += len;\n}\n\n/* ===========================================================================\n * Compares to subtrees, using the tree depth as tie breaker when\n * the subtrees have equal frequency. This minimizes the worst case length.\n */\nfunction smaller(tree, n, m, depth) {\n var _n2 = n*2;\n var _m2 = m*2;\n return (tree[_n2]/*.Freq*/ < tree[_m2]/*.Freq*/ ||\n (tree[_n2]/*.Freq*/ === tree[_m2]/*.Freq*/ && depth[n] <= depth[m]));\n}\n\n/* ===========================================================================\n * Restore the heap property by moving down the tree starting at node k,\n * exchanging a node with the smallest of its two sons if necessary, stopping\n * when the heap property is re-established (each father smaller than its\n * two sons).\n */\nfunction pqdownheap(s, tree, k)\n// deflate_state *s;\n// ct_data *tree; /* the tree to restore */\n// int k; /* node to move down */\n{\n var v = s.heap[k];\n var j = k << 1; /* left son of k */\n while (j <= s.heap_len) {\n /* Set j to the smallest of the two sons: */\n if (j < s.heap_len &&\n smaller(tree, s.heap[j+1], s.heap[j], s.depth)) {\n j++;\n }\n /* Exit if v is smaller than both sons */\n if (smaller(tree, v, s.heap[j], s.depth)) { break; }\n\n /* Exchange v with the smallest son */\n s.heap[k] = s.heap[j];\n k = j;\n\n /* And continue down the tree, setting j to the left son of k */\n j <<= 1;\n }\n s.heap[k] = v;\n}\n\n\n// inlined manually\n// var SMALLEST = 1;\n\n/* ===========================================================================\n * Send the block data compressed using the given Huffman trees\n */\nfunction compress_block(s, ltree, dtree)\n// deflate_state *s;\n// const ct_data *ltree; /* literal tree */\n// const ct_data *dtree; /* distance tree */\n{\n var dist; /* distance of matched string */\n var lc; /* match length or unmatched char (if dist == 0) */\n var lx = 0; /* running index in l_buf */\n var code; /* the code to send */\n var extra; /* number of extra bits to send */\n\n if (s.last_lit !== 0) {\n do {\n dist = (s.pending_buf[s.d_buf + lx*2] << 8) | (s.pending_buf[s.d_buf + lx*2 + 1]);\n lc = s.pending_buf[s.l_buf + lx];\n lx++;\n\n if (dist === 0) {\n send_code(s, lc, ltree); /* send a literal byte */\n //Tracecv(isgraph(lc), (stderr,\" '%c' \", lc));\n } else {\n /* Here, lc is the match length - MIN_MATCH */\n code = _length_code[lc];\n send_code(s, code+LITERALS+1, ltree); /* send the length code */\n extra = extra_lbits[code];\n if (extra !== 0) {\n lc -= base_length[code];\n send_bits(s, lc, extra); /* send the extra length bits */\n }\n dist--; /* dist is now the match distance - 1 */\n code = d_code(dist);\n //Assert (code < D_CODES, \"bad d_code\");\n\n send_code(s, code, dtree); /* send the distance code */\n extra = extra_dbits[code];\n if (extra !== 0) {\n dist -= base_dist[code];\n send_bits(s, dist, extra); /* send the extra distance bits */\n }\n } /* literal or match pair ? */\n\n /* Check that the overlay between pending_buf and d_buf+l_buf is ok: */\n //Assert((uInt)(s->pending) < s->lit_bufsize + 2*lx,\n // \"pendingBuf overflow\");\n\n } while (lx < s.last_lit);\n }\n\n send_code(s, END_BLOCK, ltree);\n}\n\n\n/* ===========================================================================\n * Construct one Huffman tree and assigns the code bit strings and lengths.\n * Update the total bit length for the current block.\n * IN assertion: the field freq is set for all tree elements.\n * OUT assertions: the fields len and code are set to the optimal bit length\n * and corresponding code. The length opt_len is updated; static_len is\n * also updated if stree is not null. The field max_code is set.\n */\nfunction build_tree(s, desc)\n// deflate_state *s;\n// tree_desc *desc; /* the tree descriptor */\n{\n var tree = desc.dyn_tree;\n var stree = desc.stat_desc.static_tree;\n var has_stree = desc.stat_desc.has_stree;\n var elems = desc.stat_desc.elems;\n var n, m; /* iterate over heap elements */\n var max_code = -1; /* largest code with non zero frequency */\n var node; /* new node being created */\n\n /* Construct the initial heap, with least frequent element in\n * heap[SMALLEST]. The sons of heap[n] are heap[2*n] and heap[2*n+1].\n * heap[0] is not used.\n */\n s.heap_len = 0;\n s.heap_max = HEAP_SIZE;\n\n for (n = 0; n < elems; n++) {\n if (tree[n * 2]/*.Freq*/ !== 0) {\n s.heap[++s.heap_len] = max_code = n;\n s.depth[n] = 0;\n\n } else {\n tree[n*2 + 1]/*.Len*/ = 0;\n }\n }\n\n /* The pkzip format requires that at least one distance code exists,\n * and that at least one bit should be sent even if there is only one\n * possible code. So to avoid special checks later on we force at least\n * two codes of non zero frequency.\n */\n while (s.heap_len < 2) {\n node = s.heap[++s.heap_len] = (max_code < 2 ? ++max_code : 0);\n tree[node * 2]/*.Freq*/ = 1;\n s.depth[node] = 0;\n s.opt_len--;\n\n if (has_stree) {\n s.static_len -= stree[node*2 + 1]/*.Len*/;\n }\n /* node is 0 or 1 so it does not have extra bits */\n }\n desc.max_code = max_code;\n\n /* The elements heap[heap_len/2+1 .. heap_len] are leaves of the tree,\n * establish sub-heaps of increasing lengths:\n */\n for (n = (s.heap_len >> 1/*int /2*/); n >= 1; n--) { pqdownheap(s, tree, n); }\n\n /* Construct the Huffman tree by repeatedly combining the least two\n * frequent nodes.\n */\n node = elems; /* next internal node of the tree */\n do {\n //pqremove(s, tree, n); /* n = node of least frequency */\n /*** pqremove ***/\n n = s.heap[1/*SMALLEST*/];\n s.heap[1/*SMALLEST*/] = s.heap[s.heap_len--];\n pqdownheap(s, tree, 1/*SMALLEST*/);\n /***/\n\n m = s.heap[1/*SMALLEST*/]; /* m = node of next least frequency */\n\n s.heap[--s.heap_max] = n; /* keep the nodes sorted by frequency */\n s.heap[--s.heap_max] = m;\n\n /* Create a new node father of n and m */\n tree[node * 2]/*.Freq*/ = tree[n * 2]/*.Freq*/ + tree[m * 2]/*.Freq*/;\n s.depth[node] = (s.depth[n] >= s.depth[m] ? s.depth[n] : s.depth[m]) + 1;\n tree[n*2 + 1]/*.Dad*/ = tree[m*2 + 1]/*.Dad*/ = node;\n\n /* and insert the new node in the heap */\n s.heap[1/*SMALLEST*/] = node++;\n pqdownheap(s, tree, 1/*SMALLEST*/);\n\n } while (s.heap_len >= 2);\n\n s.heap[--s.heap_max] = s.heap[1/*SMALLEST*/];\n\n /* At this point, the fields freq and dad are set. We can now\n * generate the bit lengths.\n */\n gen_bitlen(s, desc);\n\n /* The field len is now set, we can generate the bit codes */\n gen_codes(tree, max_code, s.bl_count);\n}\n\n\n/* ===========================================================================\n * Scan a literal or distance tree to determine the frequencies of the codes\n * in the bit length tree.\n */\nfunction scan_tree(s, tree, max_code)\n// deflate_state *s;\n// ct_data *tree; /* the tree to be scanned */\n// int max_code; /* and its largest code of non zero frequency */\n{\n var n; /* iterates over all tree elements */\n var prevlen = -1; /* last emitted length */\n var curlen; /* length of current code */\n\n var nextlen = tree[0*2 + 1]/*.Len*/; /* length of next code */\n\n var count = 0; /* repeat count of the current code */\n var max_count = 7; /* max repeat count */\n var min_count = 4; /* min repeat count */\n\n if (nextlen === 0) {\n max_count = 138;\n min_count = 3;\n }\n tree[(max_code+1)*2 + 1]/*.Len*/ = 0xffff; /* guard */\n\n for (n = 0; n <= max_code; n++) {\n curlen = nextlen;\n nextlen = tree[(n+1)*2 + 1]/*.Len*/;\n\n if (++count < max_count && curlen === nextlen) {\n continue;\n\n } else if (count < min_count) {\n s.bl_tree[curlen * 2]/*.Freq*/ += count;\n\n } else if (curlen !== 0) {\n\n if (curlen !== prevlen) { s.bl_tree[curlen * 2]/*.Freq*/++; }\n s.bl_tree[REP_3_6*2]/*.Freq*/++;\n\n } else if (count <= 10) {\n s.bl_tree[REPZ_3_10*2]/*.Freq*/++;\n\n } else {\n s.bl_tree[REPZ_11_138*2]/*.Freq*/++;\n }\n\n count = 0;\n prevlen = curlen;\n\n if (nextlen === 0) {\n max_count = 138;\n min_count = 3;\n\n } else if (curlen === nextlen) {\n max_count = 6;\n min_count = 3;\n\n } else {\n max_count = 7;\n min_count = 4;\n }\n }\n}\n\n\n/* ===========================================================================\n * Send a literal or distance tree in compressed form, using the codes in\n * bl_tree.\n */\nfunction send_tree(s, tree, max_code)\n// deflate_state *s;\n// ct_data *tree; /* the tree to be scanned */\n// int max_code; /* and its largest code of non zero frequency */\n{\n var n; /* iterates over all tree elements */\n var prevlen = -1; /* last emitted length */\n var curlen; /* length of current code */\n\n var nextlen = tree[0*2 + 1]/*.Len*/; /* length of next code */\n\n var count = 0; /* repeat count of the current code */\n var max_count = 7; /* max repeat count */\n var min_count = 4; /* min repeat count */\n\n /* tree[max_code+1].Len = -1; */ /* guard already set */\n if (nextlen === 0) {\n max_count = 138;\n min_count = 3;\n }\n\n for (n = 0; n <= max_code; n++) {\n curlen = nextlen;\n nextlen = tree[(n+1)*2 + 1]/*.Len*/;\n\n if (++count < max_count && curlen === nextlen) {\n continue;\n\n } else if (count < min_count) {\n do { send_code(s, curlen, s.bl_tree); } while (--count !== 0);\n\n } else if (curlen !== 0) {\n if (curlen !== prevlen) {\n send_code(s, curlen, s.bl_tree);\n count--;\n }\n //Assert(count >= 3 && count <= 6, \" 3_6?\");\n send_code(s, REP_3_6, s.bl_tree);\n send_bits(s, count-3, 2);\n\n } else if (count <= 10) {\n send_code(s, REPZ_3_10, s.bl_tree);\n send_bits(s, count-3, 3);\n\n } else {\n send_code(s, REPZ_11_138, s.bl_tree);\n send_bits(s, count-11, 7);\n }\n\n count = 0;\n prevlen = curlen;\n if (nextlen === 0) {\n max_count = 138;\n min_count = 3;\n\n } else if (curlen === nextlen) {\n max_count = 6;\n min_count = 3;\n\n } else {\n max_count = 7;\n min_count = 4;\n }\n }\n}\n\n\n/* ===========================================================================\n * Construct the Huffman tree for the bit lengths and return the index in\n * bl_order of the last bit length code to send.\n */\nfunction build_bl_tree(s) {\n var max_blindex; /* index of last bit length code of non zero freq */\n\n /* Determine the bit length frequencies for literal and distance trees */\n scan_tree(s, s.dyn_ltree, s.l_desc.max_code);\n scan_tree(s, s.dyn_dtree, s.d_desc.max_code);\n\n /* Build the bit length tree: */\n build_tree(s, s.bl_desc);\n /* opt_len now includes the length of the tree representations, except\n * the lengths of the bit lengths codes and the 5+5+4 bits for the counts.\n */\n\n /* Determine the number of bit length codes to send. The pkzip format\n * requires that at least 4 bit length codes be sent. (appnote.txt says\n * 3 but the actual value used is 4.)\n */\n for (max_blindex = BL_CODES-1; max_blindex >= 3; max_blindex--) {\n if (s.bl_tree[bl_order[max_blindex]*2 + 1]/*.Len*/ !== 0) {\n break;\n }\n }\n /* Update opt_len to include the bit length tree and counts */\n s.opt_len += 3*(max_blindex+1) + 5+5+4;\n //Tracev((stderr, \"\\ndyn trees: dyn %ld, stat %ld\",\n // s->opt_len, s->static_len));\n\n return max_blindex;\n}\n\n\n/* ===========================================================================\n * Send the header for a block using dynamic Huffman trees: the counts, the\n * lengths of the bit length codes, the literal tree and the distance tree.\n * IN assertion: lcodes >= 257, dcodes >= 1, blcodes >= 4.\n */\nfunction send_all_trees(s, lcodes, dcodes, blcodes)\n// deflate_state *s;\n// int lcodes, dcodes, blcodes; /* number of codes for each tree */\n{\n var rank; /* index in bl_order */\n\n //Assert (lcodes >= 257 && dcodes >= 1 && blcodes >= 4, \"not enough codes\");\n //Assert (lcodes <= L_CODES && dcodes <= D_CODES && blcodes <= BL_CODES,\n // \"too many codes\");\n //Tracev((stderr, \"\\nbl counts: \"));\n send_bits(s, lcodes-257, 5); /* not +255 as stated in appnote.txt */\n send_bits(s, dcodes-1, 5);\n send_bits(s, blcodes-4, 4); /* not -3 as stated in appnote.txt */\n for (rank = 0; rank < blcodes; rank++) {\n //Tracev((stderr, \"\\nbl code %2d \", bl_order[rank]));\n send_bits(s, s.bl_tree[bl_order[rank]*2 + 1]/*.Len*/, 3);\n }\n //Tracev((stderr, \"\\nbl tree: sent %ld\", s->bits_sent));\n\n send_tree(s, s.dyn_ltree, lcodes-1); /* literal tree */\n //Tracev((stderr, \"\\nlit tree: sent %ld\", s->bits_sent));\n\n send_tree(s, s.dyn_dtree, dcodes-1); /* distance tree */\n //Tracev((stderr, \"\\ndist tree: sent %ld\", s->bits_sent));\n}\n\n\n/* ===========================================================================\n * Check if the data type is TEXT or BINARY, using the following algorithm:\n * - TEXT if the two conditions below are satisfied:\n * a) There are no non-portable control characters belonging to the\n * \"black list\" (0..6, 14..25, 28..31).\n * b) There is at least one printable character belonging to the\n * \"white list\" (9 {TAB}, 10 {LF}, 13 {CR}, 32..255).\n * - BINARY otherwise.\n * - The following partially-portable control characters form a\n * \"gray list\" that is ignored in this detection algorithm:\n * (7 {BEL}, 8 {BS}, 11 {VT}, 12 {FF}, 26 {SUB}, 27 {ESC}).\n * IN assertion: the fields Freq of dyn_ltree are set.\n */\nfunction detect_data_type(s) {\n /* black_mask is the bit mask of black-listed bytes\n * set bits 0..6, 14..25, and 28..31\n * 0xf3ffc07f = binary 11110011111111111100000001111111\n */\n var black_mask = 0xf3ffc07f;\n var n;\n\n /* Check for non-textual (\"black-listed\") bytes. */\n for (n = 0; n <= 31; n++, black_mask >>>= 1) {\n if ((black_mask & 1) && (s.dyn_ltree[n*2]/*.Freq*/ !== 0)) {\n return Z_BINARY;\n }\n }\n\n /* Check for textual (\"white-listed\") bytes. */\n if (s.dyn_ltree[9 * 2]/*.Freq*/ !== 0 || s.dyn_ltree[10 * 2]/*.Freq*/ !== 0 ||\n s.dyn_ltree[13 * 2]/*.Freq*/ !== 0) {\n return Z_TEXT;\n }\n for (n = 32; n < LITERALS; n++) {\n if (s.dyn_ltree[n * 2]/*.Freq*/ !== 0) {\n return Z_TEXT;\n }\n }\n\n /* There are no \"black-listed\" or \"white-listed\" bytes:\n * this stream either is empty or has tolerated (\"gray-listed\") bytes only.\n */\n return Z_BINARY;\n}\n\n\nvar static_init_done = false;\n\n/* ===========================================================================\n * Initialize the tree data structures for a new zlib stream.\n */\nfunction _tr_init(s)\n{\n\n if (!static_init_done) {\n tr_static_init();\n static_init_done = true;\n }\n\n s.l_desc = new TreeDesc(s.dyn_ltree, static_l_desc);\n s.d_desc = new TreeDesc(s.dyn_dtree, static_d_desc);\n s.bl_desc = new TreeDesc(s.bl_tree, static_bl_desc);\n\n s.bi_buf = 0;\n s.bi_valid = 0;\n\n /* Initialize the first block of the first file: */\n init_block(s);\n}\n\n\n/* ===========================================================================\n * Send a stored block\n */\nfunction _tr_stored_block(s, buf, stored_len, last)\n//DeflateState *s;\n//charf *buf; /* input block */\n//ulg stored_len; /* length of input block */\n//int last; /* one if this is the last block for a file */\n{\n send_bits(s, (STORED_BLOCK<<1)+(last ? 1 : 0), 3); /* send block type */\n copy_block(s, buf, stored_len, true); /* with header */\n}\n\n\n/* ===========================================================================\n * Send one empty static block to give enough lookahead for inflate.\n * This takes 10 bits, of which 7 may remain in the bit buffer.\n */\nfunction _tr_align(s) {\n send_bits(s, STATIC_TREES<<1, 3);\n send_code(s, END_BLOCK, static_ltree);\n bi_flush(s);\n}\n\n\n/* ===========================================================================\n * Determine the best encoding for the current block: dynamic trees, static\n * trees or store, and output the encoded block to the zip file.\n */\nfunction _tr_flush_block(s, buf, stored_len, last)\n//DeflateState *s;\n//charf *buf; /* input block, or NULL if too old */\n//ulg stored_len; /* length of input block */\n//int last; /* one if this is the last block for a file */\n{\n var opt_lenb, static_lenb; /* opt_len and static_len in bytes */\n var max_blindex = 0; /* index of last bit length code of non zero freq */\n\n /* Build the Huffman trees unless a stored block is forced */\n if (s.level > 0) {\n\n /* Check if the file is binary or text */\n if (s.strm.data_type === Z_UNKNOWN) {\n s.strm.data_type = detect_data_type(s);\n }\n\n /* Construct the literal and distance trees */\n build_tree(s, s.l_desc);\n // Tracev((stderr, \"\\nlit data: dyn %ld, stat %ld\", s->opt_len,\n // s->static_len));\n\n build_tree(s, s.d_desc);\n // Tracev((stderr, \"\\ndist data: dyn %ld, stat %ld\", s->opt_len,\n // s->static_len));\n /* At this point, opt_len and static_len are the total bit lengths of\n * the compressed block data, excluding the tree representations.\n */\n\n /* Build the bit length tree for the above two trees, and get the index\n * in bl_order of the last bit length code to send.\n */\n max_blindex = build_bl_tree(s);\n\n /* Determine the best encoding. Compute the block lengths in bytes. */\n opt_lenb = (s.opt_len+3+7) >>> 3;\n static_lenb = (s.static_len+3+7) >>> 3;\n\n // Tracev((stderr, \"\\nopt %lu(%lu) stat %lu(%lu) stored %lu lit %u \",\n // opt_lenb, s->opt_len, static_lenb, s->static_len, stored_len,\n // s->last_lit));\n\n if (static_lenb <= opt_lenb) { opt_lenb = static_lenb; }\n\n } else {\n // Assert(buf != (char*)0, \"lost buf\");\n opt_lenb = static_lenb = stored_len + 5; /* force a stored block */\n }\n\n if ((stored_len+4 <= opt_lenb) && (buf !== -1)) {\n /* 4: two words for the lengths */\n\n /* The test buf != NULL is only necessary if LIT_BUFSIZE > WSIZE.\n * Otherwise we can't have processed more than WSIZE input bytes since\n * the last block flush, because compression would have been\n * successful. If LIT_BUFSIZE <= WSIZE, it is never too late to\n * transform a block into a stored block.\n */\n _tr_stored_block(s, buf, stored_len, last);\n\n } else if (s.strategy === Z_FIXED || static_lenb === opt_lenb) {\n\n send_bits(s, (STATIC_TREES<<1) + (last ? 1 : 0), 3);\n compress_block(s, static_ltree, static_dtree);\n\n } else {\n send_bits(s, (DYN_TREES<<1) + (last ? 1 : 0), 3);\n send_all_trees(s, s.l_desc.max_code+1, s.d_desc.max_code+1, max_blindex+1);\n compress_block(s, s.dyn_ltree, s.dyn_dtree);\n }\n // Assert (s->compressed_len == s->bits_sent, \"bad compressed size\");\n /* The above check is made mod 2^32, for files larger than 512 MB\n * and uLong implemented on 32 bits.\n */\n init_block(s);\n\n if (last) {\n bi_windup(s);\n }\n // Tracev((stderr,\"\\ncomprlen %lu(%lu) \", s->compressed_len>>3,\n // s->compressed_len-7*last));\n}\n\n/* ===========================================================================\n * Save the match info and tally the frequency counts. Return true if\n * the current block must be flushed.\n */\nfunction _tr_tally(s, dist, lc)\n// deflate_state *s;\n// unsigned dist; /* distance of matched string */\n// unsigned lc; /* match length-MIN_MATCH or unmatched char (if dist==0) */\n{\n //var out_length, in_length, dcode;\n\n s.pending_buf[s.d_buf + s.last_lit * 2] = (dist >>> 8) & 0xff;\n s.pending_buf[s.d_buf + s.last_lit * 2 + 1] = dist & 0xff;\n\n s.pending_buf[s.l_buf + s.last_lit] = lc & 0xff;\n s.last_lit++;\n\n if (dist === 0) {\n /* lc is the unmatched char */\n s.dyn_ltree[lc*2]/*.Freq*/++;\n } else {\n s.matches++;\n /* Here, lc is the match length - MIN_MATCH */\n dist--; /* dist = match distance - 1 */\n //Assert((ush)dist < (ush)MAX_DIST(s) &&\n // (ush)lc <= (ush)(MAX_MATCH-MIN_MATCH) &&\n // (ush)d_code(dist) < (ush)D_CODES, \"_tr_tally: bad match\");\n\n s.dyn_ltree[(_length_code[lc]+LITERALS+1) * 2]/*.Freq*/++;\n s.dyn_dtree[d_code(dist) * 2]/*.Freq*/++;\n }\n\n// (!) This block is disabled in zlib defailts,\n// don't enable it for binary compatibility\n\n//#ifdef TRUNCATE_BLOCK\n// /* Try to guess if it is profitable to stop the current block here */\n// if ((s.last_lit & 0x1fff) === 0 && s.level > 2) {\n// /* Compute an upper bound for the compressed length */\n// out_length = s.last_lit*8;\n// in_length = s.strstart - s.block_start;\n//\n// for (dcode = 0; dcode < D_CODES; dcode++) {\n// out_length += s.dyn_dtree[dcode*2]/*.Freq*/ * (5 + extra_dbits[dcode]);\n// }\n// out_length >>>= 3;\n// //Tracev((stderr,\"\\nlast_lit %u, in %ld, out ~%ld(%ld%%) \",\n// // s->last_lit, in_length, out_length,\n// // 100L - out_length*100L/in_length));\n// if (s.matches < (s.last_lit>>1)/*int /2*/ && out_length < (in_length>>1)/*int /2*/) {\n// return true;\n// }\n// }\n//#endif\n\n return (s.last_lit === s.lit_bufsize-1);\n /* We avoid equality with lit_bufsize because of wraparound at 64K\n * on 16 bit machines and because stored blocks are restricted to\n * 64K-1 bytes.\n */\n}\n\nexports._tr_init = _tr_init;\nexports._tr_stored_block = _tr_stored_block;\nexports._tr_flush_block = _tr_flush_block;\nexports._tr_tally = _tr_tally;\nexports._tr_align = _tr_align;\n},{\"../utils/common\":27}],39:[function(_dereq_,module,exports){\n'use strict';\n\n\nfunction ZStream() {\n /* next input byte */\n this.input = null; // JS specific, because we have no pointers\n this.next_in = 0;\n /* number of bytes available at input */\n this.avail_in = 0;\n /* total number of input bytes read so far */\n this.total_in = 0;\n /* next output byte should be put there */\n this.output = null; // JS specific, because we have no pointers\n this.next_out = 0;\n /* remaining free space at output */\n this.avail_out = 0;\n /* total number of bytes output so far */\n this.total_out = 0;\n /* last error message, NULL if no error */\n this.msg = ''/*Z_NULL*/;\n /* not visible by applications */\n this.state = null;\n /* best guess about the data type: binary or text */\n this.data_type = 2/*Z_UNKNOWN*/;\n /* adler32 value of the uncompressed data */\n this.adler = 0;\n}\n\nmodule.exports = ZStream;\n},{}]},{},[9])\n(9)\n}));\n","'use strict';\n// https://tc39.es/ecma262/#sec-IsHTMLDDA-internal-slot\nvar documentAll = typeof document == 'object' && document.all;\n\n// `IsCallable` abstract operation\n// https://tc39.es/ecma262/#sec-iscallable\n// eslint-disable-next-line unicorn/no-typeof-undefined -- required for testing\nmodule.exports = typeof documentAll == 'undefined' && documentAll !== undefined ? function (argument) {\n return typeof argument == 'function' || argument === documentAll;\n} : function (argument) {\n return typeof argument == 'function';\n};\n","/**\n * Based on the work of https://github.com/jchook/uuid-random\n */\n\nlet\n buf,\n bufIdx = 0\nconst hexBytes = new Array(256)\n\n// Pre-calculate toString(16) for speed\nfor (let i = 0; i < 256; i++) {\n hexBytes[ i ] = (i + 0x100).toString(16).substr(1)\n}\n\n// Use best available PRNG\nconst randomBytes = (() => {\n // Node & Browser support\n const lib = typeof crypto !== 'undefined'\n ? crypto\n : (\n typeof window !== 'undefined'\n ? window.crypto || window.msCrypto\n : void 0\n )\n\n if (lib !== void 0) {\n if (lib.randomBytes !== void 0) {\n return lib.randomBytes\n }\n if (lib.getRandomValues !== void 0) {\n return n => {\n const bytes = new Uint8Array(n)\n lib.getRandomValues(bytes)\n return bytes\n }\n }\n }\n\n return n => {\n const r = []\n for (let i = n; i > 0; i--) {\n r.push(Math.floor(Math.random() * 256))\n }\n return r\n }\n})()\n\n// Buffer random numbers for speed\n// Reduce memory usage by decreasing this number (min 16)\n// or improve speed by increasing this number (try 16384)\nconst BUFFER_SIZE = 4096\n\nexport default function () {\n // Buffer some random bytes for speed\n if (buf === void 0 || (bufIdx + 16 > BUFFER_SIZE)) {\n bufIdx = 0\n buf = randomBytes(BUFFER_SIZE)\n }\n\n const b = Array.prototype.slice.call(buf, bufIdx, (bufIdx += 16))\n b[ 6 ] = (b[ 6 ] & 0x0f) | 0x40\n b[ 8 ] = (b[ 8 ] & 0x3f) | 0x80\n\n return hexBytes[ b[ 0 ] ] + hexBytes[ b[ 1 ] ]\n + hexBytes[ b[ 2 ] ] + hexBytes[ b[ 3 ] ] + '-'\n + hexBytes[ b[ 4 ] ] + hexBytes[ b[ 5 ] ] + '-'\n + hexBytes[ b[ 6 ] ] + hexBytes[ b[ 7 ] ] + '-'\n + hexBytes[ b[ 8 ] ] + hexBytes[ b[ 9 ] ] + '-'\n + hexBytes[ b[ 10 ] ] + hexBytes[ b[ 11 ] ]\n + hexBytes[ b[ 12 ] ] + hexBytes[ b[ 13 ] ]\n + hexBytes[ b[ 14 ] ] + hexBytes[ b[ 15 ] ]\n}\n","'use strict';\nvar isObject = require('../internals/is-object');\n\nmodule.exports = function (argument) {\n return isObject(argument) || argument === null;\n};\n","'use strict';\nvar toPositiveInteger = require('../internals/to-positive-integer');\n\nvar $RangeError = RangeError;\n\nmodule.exports = function (it, BYTES) {\n var offset = toPositiveInteger(it);\n if (offset % BYTES) throw new $RangeError('Wrong offset');\n return offset;\n};\n","'use strict';\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\n\nvar $TypeError = TypeError;\n\nmodule.exports = function (it, Prototype) {\n if (isPrototypeOf(Prototype, it)) return it;\n throw new $TypeError('Incorrect invocation');\n};\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar toObject = require('../internals/to-object');\n\nvar hasOwnProperty = uncurryThis({}.hasOwnProperty);\n\n// `HasOwnProperty` abstract operation\n// https://tc39.es/ecma262/#sec-hasownproperty\n// eslint-disable-next-line es/no-object-hasown -- safe\nmodule.exports = Object.hasOwn || function hasOwn(it, key) {\n return hasOwnProperty(toObject(it), key);\n};\n","'use strict';\nvar getBuiltIn = require('../internals/get-built-in');\n\nmodule.exports = getBuiltIn('document', 'documentElement');\n","export default function (fn, wait = 250, immediate) {\n let timeout\n\n function debounced (/* ...args */) {\n const args = arguments\n\n const later = () => {\n timeout = void 0\n if (immediate !== true) {\n fn.apply(this, args)\n }\n }\n\n clearTimeout(timeout)\n if (immediate === true && timeout === void 0) {\n fn.apply(this, args)\n }\n timeout = setTimeout(later, wait)\n }\n\n debounced.cancel = () => {\n clearTimeout(timeout)\n }\n\n return debounced\n}\n","/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh \n * @license MIT\n */\n/* eslint-disable no-proto */\n\n'use strict'\n\nvar base64 = require('base64-js')\nvar ieee754 = require('ieee754')\nvar isArray = require('isarray')\n\nexports.Buffer = Buffer\nexports.SlowBuffer = SlowBuffer\nexports.INSPECT_MAX_BYTES = 50\n\n/**\n * If `Buffer.TYPED_ARRAY_SUPPORT`:\n * === true Use Uint8Array implementation (fastest)\n * === false Use Object implementation (most compatible, even IE6)\n *\n * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\n * Opera 11.6+, iOS 4.2+.\n *\n * Due to various browser bugs, sometimes the Object implementation will be used even\n * when the browser supports typed arrays.\n *\n * Note:\n *\n * - Firefox 4-29 lacks support for adding new properties to `Uint8Array` instances,\n * See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438.\n *\n * - Chrome 9-10 is missing the `TypedArray.prototype.subarray` function.\n *\n * - IE10 has a broken `TypedArray.prototype.subarray` function which returns arrays of\n * incorrect length in some situations.\n\n * We detect these buggy browsers and set `Buffer.TYPED_ARRAY_SUPPORT` to `false` so they\n * get the Object implementation, which is slower but behaves correctly.\n */\nBuffer.TYPED_ARRAY_SUPPORT = global.TYPED_ARRAY_SUPPORT !== undefined\n ? global.TYPED_ARRAY_SUPPORT\n : typedArraySupport()\n\n/*\n * Export kMaxLength after typed array support is determined.\n */\nexports.kMaxLength = kMaxLength()\n\nfunction typedArraySupport () {\n try {\n var arr = new Uint8Array(1)\n arr.__proto__ = {__proto__: Uint8Array.prototype, foo: function () { return 42 }}\n return arr.foo() === 42 && // typed array instances can be augmented\n typeof arr.subarray === 'function' && // chrome 9-10 lack `subarray`\n arr.subarray(1, 1).byteLength === 0 // ie10 has broken `subarray`\n } catch (e) {\n return false\n }\n}\n\nfunction kMaxLength () {\n return Buffer.TYPED_ARRAY_SUPPORT\n ? 0x7fffffff\n : 0x3fffffff\n}\n\nfunction createBuffer (that, length) {\n if (kMaxLength() < length) {\n throw new RangeError('Invalid typed array length')\n }\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n // Return an augmented `Uint8Array` instance, for best performance\n that = new Uint8Array(length)\n that.__proto__ = Buffer.prototype\n } else {\n // Fallback: Return an object instance of the Buffer class\n if (that === null) {\n that = new Buffer(length)\n }\n that.length = length\n }\n\n return that\n}\n\n/**\n * The Buffer constructor returns instances of `Uint8Array` that have their\n * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of\n * `Uint8Array`, so the returned instances will have all the node `Buffer` methods\n * and the `Uint8Array` methods. Square bracket notation works as expected -- it\n * returns a single octet.\n *\n * The `Uint8Array` prototype remains unmodified.\n */\n\nfunction Buffer (arg, encodingOrOffset, length) {\n if (!Buffer.TYPED_ARRAY_SUPPORT && !(this instanceof Buffer)) {\n return new Buffer(arg, encodingOrOffset, length)\n }\n\n // Common case.\n if (typeof arg === 'number') {\n if (typeof encodingOrOffset === 'string') {\n throw new Error(\n 'If encoding is specified then the first argument must be a string'\n )\n }\n return allocUnsafe(this, arg)\n }\n return from(this, arg, encodingOrOffset, length)\n}\n\nBuffer.poolSize = 8192 // not used by this implementation\n\n// TODO: Legacy, not needed anymore. Remove in next major version.\nBuffer._augment = function (arr) {\n arr.__proto__ = Buffer.prototype\n return arr\n}\n\nfunction from (that, value, encodingOrOffset, length) {\n if (typeof value === 'number') {\n throw new TypeError('\"value\" argument must not be a number')\n }\n\n if (typeof ArrayBuffer !== 'undefined' && value instanceof ArrayBuffer) {\n return fromArrayBuffer(that, value, encodingOrOffset, length)\n }\n\n if (typeof value === 'string') {\n return fromString(that, value, encodingOrOffset)\n }\n\n return fromObject(that, value)\n}\n\n/**\n * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError\n * if value is a number.\n * Buffer.from(str[, encoding])\n * Buffer.from(array)\n * Buffer.from(buffer)\n * Buffer.from(arrayBuffer[, byteOffset[, length]])\n **/\nBuffer.from = function (value, encodingOrOffset, length) {\n return from(null, value, encodingOrOffset, length)\n}\n\nif (Buffer.TYPED_ARRAY_SUPPORT) {\n Buffer.prototype.__proto__ = Uint8Array.prototype\n Buffer.__proto__ = Uint8Array\n if (typeof Symbol !== 'undefined' && Symbol.species &&\n Buffer[Symbol.species] === Buffer) {\n // Fix subarray() in ES2016. See: https://github.com/feross/buffer/pull/97\n Object.defineProperty(Buffer, Symbol.species, {\n value: null,\n configurable: true\n })\n }\n}\n\nfunction assertSize (size) {\n if (typeof size !== 'number') {\n throw new TypeError('\"size\" argument must be a number')\n } else if (size < 0) {\n throw new RangeError('\"size\" argument must not be negative')\n }\n}\n\nfunction alloc (that, size, fill, encoding) {\n assertSize(size)\n if (size <= 0) {\n return createBuffer(that, size)\n }\n if (fill !== undefined) {\n // Only pay attention to encoding if it's a string. This\n // prevents accidentally sending in a number that would\n // be interpretted as a start offset.\n return typeof encoding === 'string'\n ? createBuffer(that, size).fill(fill, encoding)\n : createBuffer(that, size).fill(fill)\n }\n return createBuffer(that, size)\n}\n\n/**\n * Creates a new filled Buffer instance.\n * alloc(size[, fill[, encoding]])\n **/\nBuffer.alloc = function (size, fill, encoding) {\n return alloc(null, size, fill, encoding)\n}\n\nfunction allocUnsafe (that, size) {\n assertSize(size)\n that = createBuffer(that, size < 0 ? 0 : checked(size) | 0)\n if (!Buffer.TYPED_ARRAY_SUPPORT) {\n for (var i = 0; i < size; ++i) {\n that[i] = 0\n }\n }\n return that\n}\n\n/**\n * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.\n * */\nBuffer.allocUnsafe = function (size) {\n return allocUnsafe(null, size)\n}\n/**\n * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.\n */\nBuffer.allocUnsafeSlow = function (size) {\n return allocUnsafe(null, size)\n}\n\nfunction fromString (that, string, encoding) {\n if (typeof encoding !== 'string' || encoding === '') {\n encoding = 'utf8'\n }\n\n if (!Buffer.isEncoding(encoding)) {\n throw new TypeError('\"encoding\" must be a valid string encoding')\n }\n\n var length = byteLength(string, encoding) | 0\n that = createBuffer(that, length)\n\n var actual = that.write(string, encoding)\n\n if (actual !== length) {\n // Writing a hex string, for example, that contains invalid characters will\n // cause everything after the first invalid character to be ignored. (e.g.\n // 'abxxcd' will be treated as 'ab')\n that = that.slice(0, actual)\n }\n\n return that\n}\n\nfunction fromArrayLike (that, array) {\n var length = array.length < 0 ? 0 : checked(array.length) | 0\n that = createBuffer(that, length)\n for (var i = 0; i < length; i += 1) {\n that[i] = array[i] & 255\n }\n return that\n}\n\nfunction fromArrayBuffer (that, array, byteOffset, length) {\n array.byteLength // this throws if `array` is not a valid ArrayBuffer\n\n if (byteOffset < 0 || array.byteLength < byteOffset) {\n throw new RangeError('\\'offset\\' is out of bounds')\n }\n\n if (array.byteLength < byteOffset + (length || 0)) {\n throw new RangeError('\\'length\\' is out of bounds')\n }\n\n if (byteOffset === undefined && length === undefined) {\n array = new Uint8Array(array)\n } else if (length === undefined) {\n array = new Uint8Array(array, byteOffset)\n } else {\n array = new Uint8Array(array, byteOffset, length)\n }\n\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n // Return an augmented `Uint8Array` instance, for best performance\n that = array\n that.__proto__ = Buffer.prototype\n } else {\n // Fallback: Return an object instance of the Buffer class\n that = fromArrayLike(that, array)\n }\n return that\n}\n\nfunction fromObject (that, obj) {\n if (Buffer.isBuffer(obj)) {\n var len = checked(obj.length) | 0\n that = createBuffer(that, len)\n\n if (that.length === 0) {\n return that\n }\n\n obj.copy(that, 0, 0, len)\n return that\n }\n\n if (obj) {\n if ((typeof ArrayBuffer !== 'undefined' &&\n obj.buffer instanceof ArrayBuffer) || 'length' in obj) {\n if (typeof obj.length !== 'number' || isnan(obj.length)) {\n return createBuffer(that, 0)\n }\n return fromArrayLike(that, obj)\n }\n\n if (obj.type === 'Buffer' && isArray(obj.data)) {\n return fromArrayLike(that, obj.data)\n }\n }\n\n throw new TypeError('First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.')\n}\n\nfunction checked (length) {\n // Note: cannot use `length < kMaxLength()` here because that fails when\n // length is NaN (which is otherwise coerced to zero.)\n if (length >= kMaxLength()) {\n throw new RangeError('Attempt to allocate Buffer larger than maximum ' +\n 'size: 0x' + kMaxLength().toString(16) + ' bytes')\n }\n return length | 0\n}\n\nfunction SlowBuffer (length) {\n if (+length != length) { // eslint-disable-line eqeqeq\n length = 0\n }\n return Buffer.alloc(+length)\n}\n\nBuffer.isBuffer = function isBuffer (b) {\n return !!(b != null && b._isBuffer)\n}\n\nBuffer.compare = function compare (a, b) {\n if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\n throw new TypeError('Arguments must be Buffers')\n }\n\n if (a === b) return 0\n\n var x = a.length\n var y = b.length\n\n for (var i = 0, len = Math.min(x, y); i < len; ++i) {\n if (a[i] !== b[i]) {\n x = a[i]\n y = b[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\nBuffer.isEncoding = function isEncoding (encoding) {\n switch (String(encoding).toLowerCase()) {\n case 'hex':\n case 'utf8':\n case 'utf-8':\n case 'ascii':\n case 'latin1':\n case 'binary':\n case 'base64':\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return true\n default:\n return false\n }\n}\n\nBuffer.concat = function concat (list, length) {\n if (!isArray(list)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n\n if (list.length === 0) {\n return Buffer.alloc(0)\n }\n\n var i\n if (length === undefined) {\n length = 0\n for (i = 0; i < list.length; ++i) {\n length += list[i].length\n }\n }\n\n var buffer = Buffer.allocUnsafe(length)\n var pos = 0\n for (i = 0; i < list.length; ++i) {\n var buf = list[i]\n if (!Buffer.isBuffer(buf)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n buf.copy(buffer, pos)\n pos += buf.length\n }\n return buffer\n}\n\nfunction byteLength (string, encoding) {\n if (Buffer.isBuffer(string)) {\n return string.length\n }\n if (typeof ArrayBuffer !== 'undefined' && typeof ArrayBuffer.isView === 'function' &&\n (ArrayBuffer.isView(string) || string instanceof ArrayBuffer)) {\n return string.byteLength\n }\n if (typeof string !== 'string') {\n string = '' + string\n }\n\n var len = string.length\n if (len === 0) return 0\n\n // Use a for loop to avoid recursion\n var loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'ascii':\n case 'latin1':\n case 'binary':\n return len\n case 'utf8':\n case 'utf-8':\n case undefined:\n return utf8ToBytes(string).length\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return len * 2\n case 'hex':\n return len >>> 1\n case 'base64':\n return base64ToBytes(string).length\n default:\n if (loweredCase) return utf8ToBytes(string).length // assume utf8\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\nBuffer.byteLength = byteLength\n\nfunction slowToString (encoding, start, end) {\n var loweredCase = false\n\n // No need to verify that \"this.length <= MAX_UINT32\" since it's a read-only\n // property of a typed array.\n\n // This behaves neither like String nor Uint8Array in that we set start/end\n // to their upper/lower bounds if the value passed is out of range.\n // undefined is handled specially as per ECMA-262 6th Edition,\n // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.\n if (start === undefined || start < 0) {\n start = 0\n }\n // Return early if start > this.length. Done here to prevent potential uint32\n // coercion fail below.\n if (start > this.length) {\n return ''\n }\n\n if (end === undefined || end > this.length) {\n end = this.length\n }\n\n if (end <= 0) {\n return ''\n }\n\n // Force coersion to uint32. This will also coerce falsey/NaN values to 0.\n end >>>= 0\n start >>>= 0\n\n if (end <= start) {\n return ''\n }\n\n if (!encoding) encoding = 'utf8'\n\n while (true) {\n switch (encoding) {\n case 'hex':\n return hexSlice(this, start, end)\n\n case 'utf8':\n case 'utf-8':\n return utf8Slice(this, start, end)\n\n case 'ascii':\n return asciiSlice(this, start, end)\n\n case 'latin1':\n case 'binary':\n return latin1Slice(this, start, end)\n\n case 'base64':\n return base64Slice(this, start, end)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return utf16leSlice(this, start, end)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = (encoding + '').toLowerCase()\n loweredCase = true\n }\n }\n}\n\n// The property is used by `Buffer.isBuffer` and `is-buffer` (in Safari 5-7) to detect\n// Buffer instances.\nBuffer.prototype._isBuffer = true\n\nfunction swap (b, n, m) {\n var i = b[n]\n b[n] = b[m]\n b[m] = i\n}\n\nBuffer.prototype.swap16 = function swap16 () {\n var len = this.length\n if (len % 2 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 16-bits')\n }\n for (var i = 0; i < len; i += 2) {\n swap(this, i, i + 1)\n }\n return this\n}\n\nBuffer.prototype.swap32 = function swap32 () {\n var len = this.length\n if (len % 4 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 32-bits')\n }\n for (var i = 0; i < len; i += 4) {\n swap(this, i, i + 3)\n swap(this, i + 1, i + 2)\n }\n return this\n}\n\nBuffer.prototype.swap64 = function swap64 () {\n var len = this.length\n if (len % 8 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 64-bits')\n }\n for (var i = 0; i < len; i += 8) {\n swap(this, i, i + 7)\n swap(this, i + 1, i + 6)\n swap(this, i + 2, i + 5)\n swap(this, i + 3, i + 4)\n }\n return this\n}\n\nBuffer.prototype.toString = function toString () {\n var length = this.length | 0\n if (length === 0) return ''\n if (arguments.length === 0) return utf8Slice(this, 0, length)\n return slowToString.apply(this, arguments)\n}\n\nBuffer.prototype.equals = function equals (b) {\n if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')\n if (this === b) return true\n return Buffer.compare(this, b) === 0\n}\n\nBuffer.prototype.inspect = function inspect () {\n var str = ''\n var max = exports.INSPECT_MAX_BYTES\n if (this.length > 0) {\n str = this.toString('hex', 0, max).match(/.{2}/g).join(' ')\n if (this.length > max) str += ' ... '\n }\n return ''\n}\n\nBuffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {\n if (!Buffer.isBuffer(target)) {\n throw new TypeError('Argument must be a Buffer')\n }\n\n if (start === undefined) {\n start = 0\n }\n if (end === undefined) {\n end = target ? target.length : 0\n }\n if (thisStart === undefined) {\n thisStart = 0\n }\n if (thisEnd === undefined) {\n thisEnd = this.length\n }\n\n if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {\n throw new RangeError('out of range index')\n }\n\n if (thisStart >= thisEnd && start >= end) {\n return 0\n }\n if (thisStart >= thisEnd) {\n return -1\n }\n if (start >= end) {\n return 1\n }\n\n start >>>= 0\n end >>>= 0\n thisStart >>>= 0\n thisEnd >>>= 0\n\n if (this === target) return 0\n\n var x = thisEnd - thisStart\n var y = end - start\n var len = Math.min(x, y)\n\n var thisCopy = this.slice(thisStart, thisEnd)\n var targetCopy = target.slice(start, end)\n\n for (var i = 0; i < len; ++i) {\n if (thisCopy[i] !== targetCopy[i]) {\n x = thisCopy[i]\n y = targetCopy[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\n// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,\n// OR the last index of `val` in `buffer` at offset <= `byteOffset`.\n//\n// Arguments:\n// - buffer - a Buffer to search\n// - val - a string, Buffer, or number\n// - byteOffset - an index into `buffer`; will be clamped to an int32\n// - encoding - an optional encoding, relevant is val is a string\n// - dir - true for indexOf, false for lastIndexOf\nfunction bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {\n // Empty buffer means no match\n if (buffer.length === 0) return -1\n\n // Normalize byteOffset\n if (typeof byteOffset === 'string') {\n encoding = byteOffset\n byteOffset = 0\n } else if (byteOffset > 0x7fffffff) {\n byteOffset = 0x7fffffff\n } else if (byteOffset < -0x80000000) {\n byteOffset = -0x80000000\n }\n byteOffset = +byteOffset // Coerce to Number.\n if (isNaN(byteOffset)) {\n // byteOffset: it it's undefined, null, NaN, \"foo\", etc, search whole buffer\n byteOffset = dir ? 0 : (buffer.length - 1)\n }\n\n // Normalize byteOffset: negative offsets start from the end of the buffer\n if (byteOffset < 0) byteOffset = buffer.length + byteOffset\n if (byteOffset >= buffer.length) {\n if (dir) return -1\n else byteOffset = buffer.length - 1\n } else if (byteOffset < 0) {\n if (dir) byteOffset = 0\n else return -1\n }\n\n // Normalize val\n if (typeof val === 'string') {\n val = Buffer.from(val, encoding)\n }\n\n // Finally, search either indexOf (if dir is true) or lastIndexOf\n if (Buffer.isBuffer(val)) {\n // Special case: looking for empty string/buffer always fails\n if (val.length === 0) {\n return -1\n }\n return arrayIndexOf(buffer, val, byteOffset, encoding, dir)\n } else if (typeof val === 'number') {\n val = val & 0xFF // Search for a byte value [0-255]\n if (Buffer.TYPED_ARRAY_SUPPORT &&\n typeof Uint8Array.prototype.indexOf === 'function') {\n if (dir) {\n return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)\n } else {\n return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)\n }\n }\n return arrayIndexOf(buffer, [ val ], byteOffset, encoding, dir)\n }\n\n throw new TypeError('val must be string, number or Buffer')\n}\n\nfunction arrayIndexOf (arr, val, byteOffset, encoding, dir) {\n var indexSize = 1\n var arrLength = arr.length\n var valLength = val.length\n\n if (encoding !== undefined) {\n encoding = String(encoding).toLowerCase()\n if (encoding === 'ucs2' || encoding === 'ucs-2' ||\n encoding === 'utf16le' || encoding === 'utf-16le') {\n if (arr.length < 2 || val.length < 2) {\n return -1\n }\n indexSize = 2\n arrLength /= 2\n valLength /= 2\n byteOffset /= 2\n }\n }\n\n function read (buf, i) {\n if (indexSize === 1) {\n return buf[i]\n } else {\n return buf.readUInt16BE(i * indexSize)\n }\n }\n\n var i\n if (dir) {\n var foundIndex = -1\n for (i = byteOffset; i < arrLength; i++) {\n if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {\n if (foundIndex === -1) foundIndex = i\n if (i - foundIndex + 1 === valLength) return foundIndex * indexSize\n } else {\n if (foundIndex !== -1) i -= i - foundIndex\n foundIndex = -1\n }\n }\n } else {\n if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength\n for (i = byteOffset; i >= 0; i--) {\n var found = true\n for (var j = 0; j < valLength; j++) {\n if (read(arr, i + j) !== read(val, j)) {\n found = false\n break\n }\n }\n if (found) return i\n }\n }\n\n return -1\n}\n\nBuffer.prototype.includes = function includes (val, byteOffset, encoding) {\n return this.indexOf(val, byteOffset, encoding) !== -1\n}\n\nBuffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, true)\n}\n\nBuffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, false)\n}\n\nfunction hexWrite (buf, string, offset, length) {\n offset = Number(offset) || 0\n var remaining = buf.length - offset\n if (!length) {\n length = remaining\n } else {\n length = Number(length)\n if (length > remaining) {\n length = remaining\n }\n }\n\n // must be an even number of digits\n var strLen = string.length\n if (strLen % 2 !== 0) throw new TypeError('Invalid hex string')\n\n if (length > strLen / 2) {\n length = strLen / 2\n }\n for (var i = 0; i < length; ++i) {\n var parsed = parseInt(string.substr(i * 2, 2), 16)\n if (isNaN(parsed)) return i\n buf[offset + i] = parsed\n }\n return i\n}\n\nfunction utf8Write (buf, string, offset, length) {\n return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nfunction asciiWrite (buf, string, offset, length) {\n return blitBuffer(asciiToBytes(string), buf, offset, length)\n}\n\nfunction latin1Write (buf, string, offset, length) {\n return asciiWrite(buf, string, offset, length)\n}\n\nfunction base64Write (buf, string, offset, length) {\n return blitBuffer(base64ToBytes(string), buf, offset, length)\n}\n\nfunction ucs2Write (buf, string, offset, length) {\n return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nBuffer.prototype.write = function write (string, offset, length, encoding) {\n // Buffer#write(string)\n if (offset === undefined) {\n encoding = 'utf8'\n length = this.length\n offset = 0\n // Buffer#write(string, encoding)\n } else if (length === undefined && typeof offset === 'string') {\n encoding = offset\n length = this.length\n offset = 0\n // Buffer#write(string, offset[, length][, encoding])\n } else if (isFinite(offset)) {\n offset = offset | 0\n if (isFinite(length)) {\n length = length | 0\n if (encoding === undefined) encoding = 'utf8'\n } else {\n encoding = length\n length = undefined\n }\n // legacy write(string, encoding, offset, length) - remove in v0.13\n } else {\n throw new Error(\n 'Buffer.write(string, encoding, offset[, length]) is no longer supported'\n )\n }\n\n var remaining = this.length - offset\n if (length === undefined || length > remaining) length = remaining\n\n if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {\n throw new RangeError('Attempt to write outside buffer bounds')\n }\n\n if (!encoding) encoding = 'utf8'\n\n var loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'hex':\n return hexWrite(this, string, offset, length)\n\n case 'utf8':\n case 'utf-8':\n return utf8Write(this, string, offset, length)\n\n case 'ascii':\n return asciiWrite(this, string, offset, length)\n\n case 'latin1':\n case 'binary':\n return latin1Write(this, string, offset, length)\n\n case 'base64':\n // Warning: maxLength not taken into account in base64Write\n return base64Write(this, string, offset, length)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return ucs2Write(this, string, offset, length)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\n\nBuffer.prototype.toJSON = function toJSON () {\n return {\n type: 'Buffer',\n data: Array.prototype.slice.call(this._arr || this, 0)\n }\n}\n\nfunction base64Slice (buf, start, end) {\n if (start === 0 && end === buf.length) {\n return base64.fromByteArray(buf)\n } else {\n return base64.fromByteArray(buf.slice(start, end))\n }\n}\n\nfunction utf8Slice (buf, start, end) {\n end = Math.min(buf.length, end)\n var res = []\n\n var i = start\n while (i < end) {\n var firstByte = buf[i]\n var codePoint = null\n var bytesPerSequence = (firstByte > 0xEF) ? 4\n : (firstByte > 0xDF) ? 3\n : (firstByte > 0xBF) ? 2\n : 1\n\n if (i + bytesPerSequence <= end) {\n var secondByte, thirdByte, fourthByte, tempCodePoint\n\n switch (bytesPerSequence) {\n case 1:\n if (firstByte < 0x80) {\n codePoint = firstByte\n }\n break\n case 2:\n secondByte = buf[i + 1]\n if ((secondByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)\n if (tempCodePoint > 0x7F) {\n codePoint = tempCodePoint\n }\n }\n break\n case 3:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)\n if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {\n codePoint = tempCodePoint\n }\n }\n break\n case 4:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n fourthByte = buf[i + 3]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)\n if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {\n codePoint = tempCodePoint\n }\n }\n }\n }\n\n if (codePoint === null) {\n // we did not generate a valid codePoint so insert a\n // replacement char (U+FFFD) and advance only 1 byte\n codePoint = 0xFFFD\n bytesPerSequence = 1\n } else if (codePoint > 0xFFFF) {\n // encode to utf16 (surrogate pair dance)\n codePoint -= 0x10000\n res.push(codePoint >>> 10 & 0x3FF | 0xD800)\n codePoint = 0xDC00 | codePoint & 0x3FF\n }\n\n res.push(codePoint)\n i += bytesPerSequence\n }\n\n return decodeCodePointsArray(res)\n}\n\n// Based on http://stackoverflow.com/a/22747272/680742, the browser with\n// the lowest limit is Chrome, with 0x10000 args.\n// We go 1 magnitude less, for safety\nvar MAX_ARGUMENTS_LENGTH = 0x1000\n\nfunction decodeCodePointsArray (codePoints) {\n var len = codePoints.length\n if (len <= MAX_ARGUMENTS_LENGTH) {\n return String.fromCharCode.apply(String, codePoints) // avoid extra slice()\n }\n\n // Decode in chunks to avoid \"call stack size exceeded\".\n var res = ''\n var i = 0\n while (i < len) {\n res += String.fromCharCode.apply(\n String,\n codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)\n )\n }\n return res\n}\n\nfunction asciiSlice (buf, start, end) {\n var ret = ''\n end = Math.min(buf.length, end)\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i] & 0x7F)\n }\n return ret\n}\n\nfunction latin1Slice (buf, start, end) {\n var ret = ''\n end = Math.min(buf.length, end)\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i])\n }\n return ret\n}\n\nfunction hexSlice (buf, start, end) {\n var len = buf.length\n\n if (!start || start < 0) start = 0\n if (!end || end < 0 || end > len) end = len\n\n var out = ''\n for (var i = start; i < end; ++i) {\n out += toHex(buf[i])\n }\n return out\n}\n\nfunction utf16leSlice (buf, start, end) {\n var bytes = buf.slice(start, end)\n var res = ''\n for (var i = 0; i < bytes.length; i += 2) {\n res += String.fromCharCode(bytes[i] + bytes[i + 1] * 256)\n }\n return res\n}\n\nBuffer.prototype.slice = function slice (start, end) {\n var len = this.length\n start = ~~start\n end = end === undefined ? len : ~~end\n\n if (start < 0) {\n start += len\n if (start < 0) start = 0\n } else if (start > len) {\n start = len\n }\n\n if (end < 0) {\n end += len\n if (end < 0) end = 0\n } else if (end > len) {\n end = len\n }\n\n if (end < start) end = start\n\n var newBuf\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n newBuf = this.subarray(start, end)\n newBuf.__proto__ = Buffer.prototype\n } else {\n var sliceLen = end - start\n newBuf = new Buffer(sliceLen, undefined)\n for (var i = 0; i < sliceLen; ++i) {\n newBuf[i] = this[i + start]\n }\n }\n\n return newBuf\n}\n\n/*\n * Need to make sure that buffer isn't trying to write out of bounds.\n */\nfunction checkOffset (offset, ext, length) {\n if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')\n if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')\n}\n\nBuffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var val = this[offset]\n var mul = 1\n var i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) {\n checkOffset(offset, byteLength, this.length)\n }\n\n var val = this[offset + --byteLength]\n var mul = 1\n while (byteLength > 0 && (mul *= 0x100)) {\n val += this[offset + --byteLength] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 1, this.length)\n return this[offset]\n}\n\nBuffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n return this[offset] | (this[offset + 1] << 8)\n}\n\nBuffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n return (this[offset] << 8) | this[offset + 1]\n}\n\nBuffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return ((this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16)) +\n (this[offset + 3] * 0x1000000)\n}\n\nBuffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] * 0x1000000) +\n ((this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n this[offset + 3])\n}\n\nBuffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var val = this[offset]\n var mul = 1\n var i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var i = byteLength\n var mul = 1\n var val = this[offset + --i]\n while (i > 0 && (mul *= 0x100)) {\n val += this[offset + --i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readInt8 = function readInt8 (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 1, this.length)\n if (!(this[offset] & 0x80)) return (this[offset])\n return ((0xff - this[offset] + 1) * -1)\n}\n\nBuffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n var val = this[offset] | (this[offset + 1] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n var val = this[offset + 1] | (this[offset] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16) |\n (this[offset + 3] << 24)\n}\n\nBuffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] << 24) |\n (this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n (this[offset + 3])\n}\n\nBuffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, true, 23, 4)\n}\n\nBuffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, false, 23, 4)\n}\n\nBuffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, true, 52, 8)\n}\n\nBuffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, false, 52, 8)\n}\n\nfunction checkInt (buf, value, offset, ext, max, min) {\n if (!Buffer.isBuffer(buf)) throw new TypeError('\"buffer\" argument must be a Buffer instance')\n if (value > max || value < min) throw new RangeError('\"value\" argument is out of bounds')\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n}\n\nBuffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n var mul = 1\n var i = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n var i = byteLength - 1\n var mul = 1\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)\n if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value)\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nfunction objectWriteUInt16 (buf, value, offset, littleEndian) {\n if (value < 0) value = 0xffff + value + 1\n for (var i = 0, j = Math.min(buf.length - offset, 2); i < j; ++i) {\n buf[offset + i] = (value & (0xff << (8 * (littleEndian ? i : 1 - i)))) >>>\n (littleEndian ? i : 1 - i) * 8\n }\n}\n\nBuffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n } else {\n objectWriteUInt16(this, value, offset, true)\n }\n return offset + 2\n}\n\nBuffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n } else {\n objectWriteUInt16(this, value, offset, false)\n }\n return offset + 2\n}\n\nfunction objectWriteUInt32 (buf, value, offset, littleEndian) {\n if (value < 0) value = 0xffffffff + value + 1\n for (var i = 0, j = Math.min(buf.length - offset, 4); i < j; ++i) {\n buf[offset + i] = (value >>> (littleEndian ? i : 3 - i) * 8) & 0xff\n }\n}\n\nBuffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset + 3] = (value >>> 24)\n this[offset + 2] = (value >>> 16)\n this[offset + 1] = (value >>> 8)\n this[offset] = (value & 0xff)\n } else {\n objectWriteUInt32(this, value, offset, true)\n }\n return offset + 4\n}\n\nBuffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n } else {\n objectWriteUInt32(this, value, offset, false)\n }\n return offset + 4\n}\n\nBuffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) {\n var limit = Math.pow(2, 8 * byteLength - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n var i = 0\n var mul = 1\n var sub = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) {\n var limit = Math.pow(2, 8 * byteLength - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n var i = byteLength - 1\n var mul = 1\n var sub = 0\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)\n if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value)\n if (value < 0) value = 0xff + value + 1\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n } else {\n objectWriteUInt16(this, value, offset, true)\n }\n return offset + 2\n}\n\nBuffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n } else {\n objectWriteUInt16(this, value, offset, false)\n }\n return offset + 2\n}\n\nBuffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n this[offset + 2] = (value >>> 16)\n this[offset + 3] = (value >>> 24)\n } else {\n objectWriteUInt32(this, value, offset, true)\n }\n return offset + 4\n}\n\nBuffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (value < 0) value = 0xffffffff + value + 1\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n } else {\n objectWriteUInt32(this, value, offset, false)\n }\n return offset + 4\n}\n\nfunction checkIEEE754 (buf, value, offset, ext, max, min) {\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n if (offset < 0) throw new RangeError('Index out of range')\n}\n\nfunction writeFloat (buf, value, offset, littleEndian, noAssert) {\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)\n }\n ieee754.write(buf, value, offset, littleEndian, 23, 4)\n return offset + 4\n}\n\nBuffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {\n return writeFloat(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {\n return writeFloat(this, value, offset, false, noAssert)\n}\n\nfunction writeDouble (buf, value, offset, littleEndian, noAssert) {\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)\n }\n ieee754.write(buf, value, offset, littleEndian, 52, 8)\n return offset + 8\n}\n\nBuffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {\n return writeDouble(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {\n return writeDouble(this, value, offset, false, noAssert)\n}\n\n// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\nBuffer.prototype.copy = function copy (target, targetStart, start, end) {\n if (!start) start = 0\n if (!end && end !== 0) end = this.length\n if (targetStart >= target.length) targetStart = target.length\n if (!targetStart) targetStart = 0\n if (end > 0 && end < start) end = start\n\n // Copy 0 bytes; we're done\n if (end === start) return 0\n if (target.length === 0 || this.length === 0) return 0\n\n // Fatal error conditions\n if (targetStart < 0) {\n throw new RangeError('targetStart out of bounds')\n }\n if (start < 0 || start >= this.length) throw new RangeError('sourceStart out of bounds')\n if (end < 0) throw new RangeError('sourceEnd out of bounds')\n\n // Are we oob?\n if (end > this.length) end = this.length\n if (target.length - targetStart < end - start) {\n end = target.length - targetStart + start\n }\n\n var len = end - start\n var i\n\n if (this === target && start < targetStart && targetStart < end) {\n // descending copy from end\n for (i = len - 1; i >= 0; --i) {\n target[i + targetStart] = this[i + start]\n }\n } else if (len < 1000 || !Buffer.TYPED_ARRAY_SUPPORT) {\n // ascending copy from start\n for (i = 0; i < len; ++i) {\n target[i + targetStart] = this[i + start]\n }\n } else {\n Uint8Array.prototype.set.call(\n target,\n this.subarray(start, start + len),\n targetStart\n )\n }\n\n return len\n}\n\n// Usage:\n// buffer.fill(number[, offset[, end]])\n// buffer.fill(buffer[, offset[, end]])\n// buffer.fill(string[, offset[, end]][, encoding])\nBuffer.prototype.fill = function fill (val, start, end, encoding) {\n // Handle string cases:\n if (typeof val === 'string') {\n if (typeof start === 'string') {\n encoding = start\n start = 0\n end = this.length\n } else if (typeof end === 'string') {\n encoding = end\n end = this.length\n }\n if (val.length === 1) {\n var code = val.charCodeAt(0)\n if (code < 256) {\n val = code\n }\n }\n if (encoding !== undefined && typeof encoding !== 'string') {\n throw new TypeError('encoding must be a string')\n }\n if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n } else if (typeof val === 'number') {\n val = val & 255\n }\n\n // Invalid ranges are not set to a default, so can range check early.\n if (start < 0 || this.length < start || this.length < end) {\n throw new RangeError('Out of range index')\n }\n\n if (end <= start) {\n return this\n }\n\n start = start >>> 0\n end = end === undefined ? this.length : end >>> 0\n\n if (!val) val = 0\n\n var i\n if (typeof val === 'number') {\n for (i = start; i < end; ++i) {\n this[i] = val\n }\n } else {\n var bytes = Buffer.isBuffer(val)\n ? val\n : utf8ToBytes(new Buffer(val, encoding).toString())\n var len = bytes.length\n for (i = 0; i < end - start; ++i) {\n this[i + start] = bytes[i % len]\n }\n }\n\n return this\n}\n\n// HELPER FUNCTIONS\n// ================\n\nvar INVALID_BASE64_RE = /[^+\\/0-9A-Za-z-_]/g\n\nfunction base64clean (str) {\n // Node strips out invalid characters like \\n and \\t from the string, base64-js does not\n str = stringtrim(str).replace(INVALID_BASE64_RE, '')\n // Node converts strings with length < 2 to ''\n if (str.length < 2) return ''\n // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\n while (str.length % 4 !== 0) {\n str = str + '='\n }\n return str\n}\n\nfunction stringtrim (str) {\n if (str.trim) return str.trim()\n return str.replace(/^\\s+|\\s+$/g, '')\n}\n\nfunction toHex (n) {\n if (n < 16) return '0' + n.toString(16)\n return n.toString(16)\n}\n\nfunction utf8ToBytes (string, units) {\n units = units || Infinity\n var codePoint\n var length = string.length\n var leadSurrogate = null\n var bytes = []\n\n for (var i = 0; i < length; ++i) {\n codePoint = string.charCodeAt(i)\n\n // is surrogate component\n if (codePoint > 0xD7FF && codePoint < 0xE000) {\n // last char was a lead\n if (!leadSurrogate) {\n // no lead yet\n if (codePoint > 0xDBFF) {\n // unexpected trail\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n } else if (i + 1 === length) {\n // unpaired lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n }\n\n // valid lead\n leadSurrogate = codePoint\n\n continue\n }\n\n // 2 leads in a row\n if (codePoint < 0xDC00) {\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n leadSurrogate = codePoint\n continue\n }\n\n // valid surrogate pair\n codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000\n } else if (leadSurrogate) {\n // valid bmp char, but last char was a lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n }\n\n leadSurrogate = null\n\n // encode utf8\n if (codePoint < 0x80) {\n if ((units -= 1) < 0) break\n bytes.push(codePoint)\n } else if (codePoint < 0x800) {\n if ((units -= 2) < 0) break\n bytes.push(\n codePoint >> 0x6 | 0xC0,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x10000) {\n if ((units -= 3) < 0) break\n bytes.push(\n codePoint >> 0xC | 0xE0,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x110000) {\n if ((units -= 4) < 0) break\n bytes.push(\n codePoint >> 0x12 | 0xF0,\n codePoint >> 0xC & 0x3F | 0x80,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else {\n throw new Error('Invalid code point')\n }\n }\n\n return bytes\n}\n\nfunction asciiToBytes (str) {\n var byteArray = []\n for (var i = 0; i < str.length; ++i) {\n // Node's code seems to be doing this and not & 0x7F..\n byteArray.push(str.charCodeAt(i) & 0xFF)\n }\n return byteArray\n}\n\nfunction utf16leToBytes (str, units) {\n var c, hi, lo\n var byteArray = []\n for (var i = 0; i < str.length; ++i) {\n if ((units -= 2) < 0) break\n\n c = str.charCodeAt(i)\n hi = c >> 8\n lo = c % 256\n byteArray.push(lo)\n byteArray.push(hi)\n }\n\n return byteArray\n}\n\nfunction base64ToBytes (str) {\n return base64.toByteArray(base64clean(str))\n}\n\nfunction blitBuffer (src, dst, offset, length) {\n for (var i = 0; i < length; ++i) {\n if ((i + offset >= dst.length) || (i >= src.length)) break\n dst[i + offset] = src[i]\n }\n return i\n}\n\nfunction isnan (val) {\n return val !== val // eslint-disable-line no-self-compare\n}\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $findLastIndex = require('../internals/array-iteration-from-last').findLastIndex;\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.findLastIndex` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.findlastindex\nexportTypedArrayMethod('findLastIndex', function findLastIndex(predicate /* , thisArg */) {\n return $findLastIndex(aTypedArray(this), predicate, arguments.length > 1 ? arguments[1] : undefined);\n});\n","'use strict';\n\nmodule.exports = function bind(fn, thisArg) {\n return function wrap() {\n var args = new Array(arguments.length);\n for (var i = 0; i < args.length; i++) {\n args[i] = arguments[i];\n }\n return fn.apply(thisArg, args);\n };\n};\n","'use strict';\nvar isNullOrUndefined = require('../internals/is-null-or-undefined');\n\nvar $TypeError = TypeError;\n\n// `RequireObjectCoercible` abstract operation\n// https://tc39.es/ecma262/#sec-requireobjectcoercible\nmodule.exports = function (it) {\n if (isNullOrUndefined(it)) throw new $TypeError(\"Can't call method on \" + it);\n return it;\n};\n","import { h, computed } from 'vue'\n\nexport const useFormProps = {\n name: String\n}\n\nexport function useFormAttrs (props) {\n return computed(() => ({\n type: 'hidden',\n name: props.name,\n value: props.modelValue\n }))\n}\n\nexport function useFormInject (formAttrs = {}, formDomProps = {}) {\n return (child, action, className) => {\n child[ action ](\n h('input', {\n class: 'hidden' + (className || ''),\n ...formAttrs.value,\n ...formDomProps.value\n })\n )\n }\n}\n\nexport function useFormInputNameAttr (props) {\n return computed(() => props.name || props.for)\n}\n","'use strict';\nvar $ = require('../internals/export');\nvar symmetricDifference = require('../internals/set-symmetric-difference');\nvar setMethodAcceptSetLike = require('../internals/set-method-accept-set-like');\n\n// `Set.prototype.symmetricDifference` method\n// https://tc39.es/ecma262/#sec-set.prototype.symmetricdifference\n$({ target: 'Set', proto: true, real: true, forced: !setMethodAcceptSetLike('symmetricDifference') }, {\n symmetricDifference: symmetricDifference\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar difference = require('../internals/set-difference');\nvar setMethodAcceptSetLike = require('../internals/set-method-accept-set-like');\n\nvar INCORRECT = !setMethodAcceptSetLike('difference', function (result) {\n return result.size === 0;\n});\n\n// `Set.prototype.difference` method\n// https://tc39.es/ecma262/#sec-set.prototype.difference\n$({ target: 'Set', proto: true, real: true, forced: INCORRECT }, {\n difference: difference\n});\n","'use strict'\n\nexports.byteLength = byteLength\nexports.toByteArray = toByteArray\nexports.fromByteArray = fromByteArray\n\nvar lookup = []\nvar revLookup = []\nvar Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array\n\nvar code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'\nfor (var i = 0, len = code.length; i < len; ++i) {\n lookup[i] = code[i]\n revLookup[code.charCodeAt(i)] = i\n}\n\n// Support decoding URL-safe base64 strings, as Node.js does.\n// See: https://en.wikipedia.org/wiki/Base64#URL_applications\nrevLookup['-'.charCodeAt(0)] = 62\nrevLookup['_'.charCodeAt(0)] = 63\n\nfunction getLens (b64) {\n var len = b64.length\n\n if (len % 4 > 0) {\n throw new Error('Invalid string. Length must be a multiple of 4')\n }\n\n // Trim off extra bytes after placeholder bytes are found\n // See: https://github.com/beatgammit/base64-js/issues/42\n var validLen = b64.indexOf('=')\n if (validLen === -1) validLen = len\n\n var placeHoldersLen = validLen === len\n ? 0\n : 4 - (validLen % 4)\n\n return [validLen, placeHoldersLen]\n}\n\n// base64 is 4/3 + up to two characters of the original data\nfunction byteLength (b64) {\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction _byteLength (b64, validLen, placeHoldersLen) {\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction toByteArray (b64) {\n var tmp\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n\n var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen))\n\n var curByte = 0\n\n // if there are placeholders, only get up to the last complete 4 chars\n var len = placeHoldersLen > 0\n ? validLen - 4\n : validLen\n\n var i\n for (i = 0; i < len; i += 4) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 18) |\n (revLookup[b64.charCodeAt(i + 1)] << 12) |\n (revLookup[b64.charCodeAt(i + 2)] << 6) |\n revLookup[b64.charCodeAt(i + 3)]\n arr[curByte++] = (tmp >> 16) & 0xFF\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 2) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 2) |\n (revLookup[b64.charCodeAt(i + 1)] >> 4)\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 1) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 10) |\n (revLookup[b64.charCodeAt(i + 1)] << 4) |\n (revLookup[b64.charCodeAt(i + 2)] >> 2)\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n return arr\n}\n\nfunction tripletToBase64 (num) {\n return lookup[num >> 18 & 0x3F] +\n lookup[num >> 12 & 0x3F] +\n lookup[num >> 6 & 0x3F] +\n lookup[num & 0x3F]\n}\n\nfunction encodeChunk (uint8, start, end) {\n var tmp\n var output = []\n for (var i = start; i < end; i += 3) {\n tmp =\n ((uint8[i] << 16) & 0xFF0000) +\n ((uint8[i + 1] << 8) & 0xFF00) +\n (uint8[i + 2] & 0xFF)\n output.push(tripletToBase64(tmp))\n }\n return output.join('')\n}\n\nfunction fromByteArray (uint8) {\n var tmp\n var len = uint8.length\n var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes\n var parts = []\n var maxChunkLength = 16383 // must be multiple of 3\n\n // go through the array every three bytes, we'll deal with trailing stuff later\n for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)))\n }\n\n // pad the end with zeros, but make sure to not forget the extra bytes\n if (extraBytes === 1) {\n tmp = uint8[len - 1]\n parts.push(\n lookup[tmp >> 2] +\n lookup[(tmp << 4) & 0x3F] +\n '=='\n )\n } else if (extraBytes === 2) {\n tmp = (uint8[len - 2] << 8) + uint8[len - 1]\n parts.push(\n lookup[tmp >> 10] +\n lookup[(tmp >> 4) & 0x3F] +\n lookup[(tmp << 2) & 0x3F] +\n '='\n )\n }\n\n return parts.join('')\n}\n","'use strict';\nvar isDetached = require('../internals/array-buffer-is-detached');\n\nvar $TypeError = TypeError;\n\nmodule.exports = function (it) {\n if (isDetached(it)) throw new $TypeError('ArrayBuffer is detached');\n return it;\n};\n","var NodeType;\r\n(function (NodeType) {\r\n NodeType[NodeType[\"Document\"] = 0] = \"Document\";\r\n NodeType[NodeType[\"DocumentType\"] = 1] = \"DocumentType\";\r\n NodeType[NodeType[\"Element\"] = 2] = \"Element\";\r\n NodeType[NodeType[\"Text\"] = 3] = \"Text\";\r\n NodeType[NodeType[\"CDATA\"] = 4] = \"CDATA\";\r\n NodeType[NodeType[\"Comment\"] = 5] = \"Comment\";\r\n})(NodeType || (NodeType = {}));\n\nfunction isElement(n) {\r\n return n.nodeType === n.ELEMENT_NODE;\r\n}\r\nfunction isShadowRoot(n) {\r\n const host = n === null || n === void 0 ? void 0 : n.host;\r\n return Boolean((host === null || host === void 0 ? void 0 : host.shadowRoot) === n);\r\n}\r\nfunction isNativeShadowDom(shadowRoot) {\r\n return Object.prototype.toString.call(shadowRoot) === '[object ShadowRoot]';\r\n}\r\nfunction fixBrowserCompatibilityIssuesInCSS(cssText) {\r\n if (cssText.includes(' background-clip: text;') &&\r\n !cssText.includes(' -webkit-background-clip: text;')) {\r\n cssText = cssText.replace(' background-clip: text;', ' -webkit-background-clip: text; background-clip: text;');\r\n }\r\n return cssText;\r\n}\r\nfunction escapeImportStatement(rule) {\r\n const { cssText } = rule;\r\n if (cssText.split('\"').length < 3)\r\n return cssText;\r\n const statement = ['@import', `url(${JSON.stringify(rule.href)})`];\r\n if (rule.layerName === '') {\r\n statement.push(`layer`);\r\n }\r\n else if (rule.layerName) {\r\n statement.push(`layer(${rule.layerName})`);\r\n }\r\n if (rule.supportsText) {\r\n statement.push(`supports(${rule.supportsText})`);\r\n }\r\n if (rule.media.length) {\r\n statement.push(rule.media.mediaText);\r\n }\r\n return statement.join(' ') + ';';\r\n}\r\nfunction stringifyStylesheet(s) {\r\n try {\r\n const rules = s.rules || s.cssRules;\r\n return rules\r\n ? fixBrowserCompatibilityIssuesInCSS(Array.from(rules, stringifyRule).join(''))\r\n : null;\r\n }\r\n catch (error) {\r\n return null;\r\n }\r\n}\r\nfunction stringifyRule(rule) {\r\n let importStringified;\r\n if (isCSSImportRule(rule)) {\r\n try {\r\n importStringified =\r\n stringifyStylesheet(rule.styleSheet) ||\r\n escapeImportStatement(rule);\r\n }\r\n catch (error) {\r\n }\r\n }\r\n else if (isCSSStyleRule(rule) && rule.selectorText.includes(':')) {\r\n return fixSafariColons(rule.cssText);\r\n }\r\n return importStringified || rule.cssText;\r\n}\r\nfunction fixSafariColons(cssStringified) {\r\n const regex = /(\\[(?:[\\w-]+)[^\\\\])(:(?:[\\w-]+)\\])/gm;\r\n return cssStringified.replace(regex, '$1\\\\$2');\r\n}\r\nfunction isCSSImportRule(rule) {\r\n return 'styleSheet' in rule;\r\n}\r\nfunction isCSSStyleRule(rule) {\r\n return 'selectorText' in rule;\r\n}\r\nclass Mirror {\r\n constructor() {\r\n this.idNodeMap = new Map();\r\n this.nodeMetaMap = new WeakMap();\r\n }\r\n getId(n) {\r\n var _a;\r\n if (!n)\r\n return -1;\r\n const id = (_a = this.getMeta(n)) === null || _a === void 0 ? void 0 : _a.id;\r\n return id !== null && id !== void 0 ? id : -1;\r\n }\r\n getNode(id) {\r\n return this.idNodeMap.get(id) || null;\r\n }\r\n getIds() {\r\n return Array.from(this.idNodeMap.keys());\r\n }\r\n getMeta(n) {\r\n return this.nodeMetaMap.get(n) || null;\r\n }\r\n removeNodeFromMap(n) {\r\n const id = this.getId(n);\r\n this.idNodeMap.delete(id);\r\n if (n.childNodes) {\r\n n.childNodes.forEach((childNode) => this.removeNodeFromMap(childNode));\r\n }\r\n }\r\n has(id) {\r\n return this.idNodeMap.has(id);\r\n }\r\n hasNode(node) {\r\n return this.nodeMetaMap.has(node);\r\n }\r\n add(n, meta) {\r\n const id = meta.id;\r\n this.idNodeMap.set(id, n);\r\n this.nodeMetaMap.set(n, meta);\r\n }\r\n replace(id, n) {\r\n const oldNode = this.getNode(id);\r\n if (oldNode) {\r\n const meta = this.nodeMetaMap.get(oldNode);\r\n if (meta)\r\n this.nodeMetaMap.set(n, meta);\r\n }\r\n this.idNodeMap.set(id, n);\r\n }\r\n reset() {\r\n this.idNodeMap = new Map();\r\n this.nodeMetaMap = new WeakMap();\r\n }\r\n}\r\nfunction createMirror() {\r\n return new Mirror();\r\n}\r\nfunction maskInputValue({ element, maskInputOptions, tagName, type, value, maskInputFn, }) {\r\n let text = value || '';\r\n const actualType = type && toLowerCase(type);\r\n if (maskInputOptions[tagName.toLowerCase()] ||\r\n (actualType && maskInputOptions[actualType])) {\r\n if (maskInputFn) {\r\n text = maskInputFn(text, element);\r\n }\r\n else {\r\n text = '*'.repeat(text.length);\r\n }\r\n }\r\n return text;\r\n}\r\nfunction toLowerCase(str) {\r\n return str.toLowerCase();\r\n}\r\nconst ORIGINAL_ATTRIBUTE_NAME = '__rrweb_original__';\r\nfunction is2DCanvasBlank(canvas) {\r\n const ctx = canvas.getContext('2d');\r\n if (!ctx)\r\n return true;\r\n const chunkSize = 50;\r\n for (let x = 0; x < canvas.width; x += chunkSize) {\r\n for (let y = 0; y < canvas.height; y += chunkSize) {\r\n const getImageData = ctx.getImageData;\r\n const originalGetImageData = ORIGINAL_ATTRIBUTE_NAME in getImageData\r\n ? getImageData[ORIGINAL_ATTRIBUTE_NAME]\r\n : getImageData;\r\n const pixelBuffer = new Uint32Array(originalGetImageData.call(ctx, x, y, Math.min(chunkSize, canvas.width - x), Math.min(chunkSize, canvas.height - y)).data.buffer);\r\n if (pixelBuffer.some((pixel) => pixel !== 0))\r\n return false;\r\n }\r\n }\r\n return true;\r\n}\r\nfunction getInputType(element) {\r\n const type = element.type;\r\n return element.hasAttribute('data-rr-is-password')\r\n ? 'password'\r\n : type\r\n ?\r\n toLowerCase(type)\r\n : null;\r\n}\r\nfunction extractFileExtension(path, baseURL) {\r\n var _a;\r\n let url;\r\n try {\r\n url = new URL(path, baseURL !== null && baseURL !== void 0 ? baseURL : window.location.href);\r\n }\r\n catch (err) {\r\n return null;\r\n }\r\n const regex = /\\.([0-9a-z]+)(?:$)/i;\r\n const match = url.pathname.match(regex);\r\n return (_a = match === null || match === void 0 ? void 0 : match[1]) !== null && _a !== void 0 ? _a : null;\r\n}\n\nlet _id = 1;\r\nconst tagNameRegex = new RegExp('[^a-z0-9-_:]');\r\nconst IGNORED_NODE = -2;\r\nfunction genId() {\r\n return _id++;\r\n}\r\nfunction getValidTagName(element) {\r\n if (element instanceof HTMLFormElement) {\r\n return 'form';\r\n }\r\n const processedTagName = toLowerCase(element.tagName);\r\n if (tagNameRegex.test(processedTagName)) {\r\n return 'div';\r\n }\r\n return processedTagName;\r\n}\r\nfunction extractOrigin(url) {\r\n let origin = '';\r\n if (url.indexOf('//') > -1) {\r\n origin = url.split('/').slice(0, 3).join('/');\r\n }\r\n else {\r\n origin = url.split('/')[0];\r\n }\r\n origin = origin.split('?')[0];\r\n return origin;\r\n}\r\nlet canvasService;\r\nlet canvasCtx;\r\nconst URL_IN_CSS_REF = /url\\((?:(')([^']*)'|(\")(.*?)\"|([^)]*))\\)/gm;\r\nconst URL_PROTOCOL_MATCH = /^(?:[a-z+]+:)?\\/\\//i;\r\nconst URL_WWW_MATCH = /^www\\..*/i;\r\nconst DATA_URI = /^(data:)([^,]*),(.*)/i;\r\nfunction absoluteToStylesheet(cssText, href) {\r\n return (cssText || '').replace(URL_IN_CSS_REF, (origin, quote1, path1, quote2, path2, path3) => {\r\n const filePath = path1 || path2 || path3;\r\n const maybeQuote = quote1 || quote2 || '';\r\n if (!filePath) {\r\n return origin;\r\n }\r\n if (URL_PROTOCOL_MATCH.test(filePath) || URL_WWW_MATCH.test(filePath)) {\r\n return `url(${maybeQuote}${filePath}${maybeQuote})`;\r\n }\r\n if (DATA_URI.test(filePath)) {\r\n return `url(${maybeQuote}${filePath}${maybeQuote})`;\r\n }\r\n if (filePath[0] === '/') {\r\n return `url(${maybeQuote}${extractOrigin(href) + filePath}${maybeQuote})`;\r\n }\r\n const stack = href.split('/');\r\n const parts = filePath.split('/');\r\n stack.pop();\r\n for (const part of parts) {\r\n if (part === '.') {\r\n continue;\r\n }\r\n else if (part === '..') {\r\n stack.pop();\r\n }\r\n else {\r\n stack.push(part);\r\n }\r\n }\r\n return `url(${maybeQuote}${stack.join('/')}${maybeQuote})`;\r\n });\r\n}\r\nconst SRCSET_NOT_SPACES = /^[^ \\t\\n\\r\\u000c]+/;\r\nconst SRCSET_COMMAS_OR_SPACES = /^[, \\t\\n\\r\\u000c]+/;\r\nfunction getAbsoluteSrcsetString(doc, attributeValue) {\r\n if (attributeValue.trim() === '') {\r\n return attributeValue;\r\n }\r\n let pos = 0;\r\n function collectCharacters(regEx) {\r\n let chars;\r\n const match = regEx.exec(attributeValue.substring(pos));\r\n if (match) {\r\n chars = match[0];\r\n pos += chars.length;\r\n return chars;\r\n }\r\n return '';\r\n }\r\n const output = [];\r\n while (true) {\r\n collectCharacters(SRCSET_COMMAS_OR_SPACES);\r\n if (pos >= attributeValue.length) {\r\n break;\r\n }\r\n let url = collectCharacters(SRCSET_NOT_SPACES);\r\n if (url.slice(-1) === ',') {\r\n url = absoluteToDoc(doc, url.substring(0, url.length - 1));\r\n output.push(url);\r\n }\r\n else {\r\n let descriptorsStr = '';\r\n url = absoluteToDoc(doc, url);\r\n let inParens = false;\r\n while (true) {\r\n const c = attributeValue.charAt(pos);\r\n if (c === '') {\r\n output.push((url + descriptorsStr).trim());\r\n break;\r\n }\r\n else if (!inParens) {\r\n if (c === ',') {\r\n pos += 1;\r\n output.push((url + descriptorsStr).trim());\r\n break;\r\n }\r\n else if (c === '(') {\r\n inParens = true;\r\n }\r\n }\r\n else {\r\n if (c === ')') {\r\n inParens = false;\r\n }\r\n }\r\n descriptorsStr += c;\r\n pos += 1;\r\n }\r\n }\r\n }\r\n return output.join(', ');\r\n}\r\nfunction absoluteToDoc(doc, attributeValue) {\r\n if (!attributeValue || attributeValue.trim() === '') {\r\n return attributeValue;\r\n }\r\n const a = doc.createElement('a');\r\n a.href = attributeValue;\r\n return a.href;\r\n}\r\nfunction isSVGElement(el) {\r\n return Boolean(el.tagName === 'svg' || el.ownerSVGElement);\r\n}\r\nfunction getHref() {\r\n const a = document.createElement('a');\r\n a.href = '';\r\n return a.href;\r\n}\r\nfunction transformAttribute(doc, tagName, name, value) {\r\n if (!value) {\r\n return value;\r\n }\r\n if (name === 'src' ||\r\n (name === 'href' && !(tagName === 'use' && value[0] === '#'))) {\r\n return absoluteToDoc(doc, value);\r\n }\r\n else if (name === 'xlink:href' && value[0] !== '#') {\r\n return absoluteToDoc(doc, value);\r\n }\r\n else if (name === 'background' &&\r\n (tagName === 'table' || tagName === 'td' || tagName === 'th')) {\r\n return absoluteToDoc(doc, value);\r\n }\r\n else if (name === 'srcset') {\r\n return getAbsoluteSrcsetString(doc, value);\r\n }\r\n else if (name === 'style') {\r\n return absoluteToStylesheet(value, getHref());\r\n }\r\n else if (tagName === 'object' && name === 'data') {\r\n return absoluteToDoc(doc, value);\r\n }\r\n return value;\r\n}\r\nfunction ignoreAttribute(tagName, name, _value) {\r\n return (tagName === 'video' || tagName === 'audio') && name === 'autoplay';\r\n}\r\nfunction _isBlockedElement(element, blockClass, blockSelector) {\r\n try {\r\n if (typeof blockClass === 'string') {\r\n if (element.classList.contains(blockClass)) {\r\n return true;\r\n }\r\n }\r\n else {\r\n for (let eIndex = element.classList.length; eIndex--;) {\r\n const className = element.classList[eIndex];\r\n if (blockClass.test(className)) {\r\n return true;\r\n }\r\n }\r\n }\r\n if (blockSelector) {\r\n return element.matches(blockSelector);\r\n }\r\n }\r\n catch (e) {\r\n }\r\n return false;\r\n}\r\nfunction classMatchesRegex(node, regex, checkAncestors) {\r\n if (!node)\r\n return false;\r\n if (node.nodeType !== node.ELEMENT_NODE) {\r\n if (!checkAncestors)\r\n return false;\r\n return classMatchesRegex(node.parentNode, regex, checkAncestors);\r\n }\r\n for (let eIndex = node.classList.length; eIndex--;) {\r\n const className = node.classList[eIndex];\r\n if (regex.test(className)) {\r\n return true;\r\n }\r\n }\r\n if (!checkAncestors)\r\n return false;\r\n return classMatchesRegex(node.parentNode, regex, checkAncestors);\r\n}\r\nfunction needMaskingText(node, maskTextClass, maskTextSelector, checkAncestors) {\r\n try {\r\n const el = node.nodeType === node.ELEMENT_NODE\r\n ? node\r\n : node.parentElement;\r\n if (el === null)\r\n return false;\r\n if (typeof maskTextClass === 'string') {\r\n if (checkAncestors) {\r\n if (el.closest(`.${maskTextClass}`))\r\n return true;\r\n }\r\n else {\r\n if (el.classList.contains(maskTextClass))\r\n return true;\r\n }\r\n }\r\n else {\r\n if (classMatchesRegex(el, maskTextClass, checkAncestors))\r\n return true;\r\n }\r\n if (maskTextSelector) {\r\n if (checkAncestors) {\r\n if (el.closest(maskTextSelector))\r\n return true;\r\n }\r\n else {\r\n if (el.matches(maskTextSelector))\r\n return true;\r\n }\r\n }\r\n }\r\n catch (e) {\r\n }\r\n return false;\r\n}\r\nfunction onceIframeLoaded(iframeEl, listener, iframeLoadTimeout) {\r\n const win = iframeEl.contentWindow;\r\n if (!win) {\r\n return;\r\n }\r\n let fired = false;\r\n let readyState;\r\n try {\r\n readyState = win.document.readyState;\r\n }\r\n catch (error) {\r\n return;\r\n }\r\n if (readyState !== 'complete') {\r\n const timer = setTimeout(() => {\r\n if (!fired) {\r\n listener();\r\n fired = true;\r\n }\r\n }, iframeLoadTimeout);\r\n iframeEl.addEventListener('load', () => {\r\n clearTimeout(timer);\r\n fired = true;\r\n listener();\r\n });\r\n return;\r\n }\r\n const blankUrl = 'about:blank';\r\n if (win.location.href !== blankUrl ||\r\n iframeEl.src === blankUrl ||\r\n iframeEl.src === '') {\r\n setTimeout(listener, 0);\r\n return iframeEl.addEventListener('load', listener);\r\n }\r\n iframeEl.addEventListener('load', listener);\r\n}\r\nfunction onceStylesheetLoaded(link, listener, styleSheetLoadTimeout) {\r\n let fired = false;\r\n let styleSheetLoaded;\r\n try {\r\n styleSheetLoaded = link.sheet;\r\n }\r\n catch (error) {\r\n return;\r\n }\r\n if (styleSheetLoaded)\r\n return;\r\n const timer = setTimeout(() => {\r\n if (!fired) {\r\n listener();\r\n fired = true;\r\n }\r\n }, styleSheetLoadTimeout);\r\n link.addEventListener('load', () => {\r\n clearTimeout(timer);\r\n fired = true;\r\n listener();\r\n });\r\n}\r\nfunction serializeNode(n, options) {\r\n const { doc, mirror, blockClass, blockSelector, needsMask, inlineStylesheet, maskInputOptions = {}, maskTextFn, maskInputFn, dataURLOptions = {}, inlineImages, recordCanvas, keepIframeSrcFn, newlyAddedElement = false, } = options;\r\n const rootId = getRootId(doc, mirror);\r\n switch (n.nodeType) {\r\n case n.DOCUMENT_NODE:\r\n if (n.compatMode !== 'CSS1Compat') {\r\n return {\r\n type: NodeType.Document,\r\n childNodes: [],\r\n compatMode: n.compatMode,\r\n };\r\n }\r\n else {\r\n return {\r\n type: NodeType.Document,\r\n childNodes: [],\r\n };\r\n }\r\n case n.DOCUMENT_TYPE_NODE:\r\n return {\r\n type: NodeType.DocumentType,\r\n name: n.name,\r\n publicId: n.publicId,\r\n systemId: n.systemId,\r\n rootId,\r\n };\r\n case n.ELEMENT_NODE:\r\n return serializeElementNode(n, {\r\n doc,\r\n blockClass,\r\n blockSelector,\r\n inlineStylesheet,\r\n maskInputOptions,\r\n maskInputFn,\r\n dataURLOptions,\r\n inlineImages,\r\n recordCanvas,\r\n keepIframeSrcFn,\r\n newlyAddedElement,\r\n rootId,\r\n });\r\n case n.TEXT_NODE:\r\n return serializeTextNode(n, {\r\n needsMask,\r\n maskTextFn,\r\n rootId,\r\n });\r\n case n.CDATA_SECTION_NODE:\r\n return {\r\n type: NodeType.CDATA,\r\n textContent: '',\r\n rootId,\r\n };\r\n case n.COMMENT_NODE:\r\n return {\r\n type: NodeType.Comment,\r\n textContent: n.textContent || '',\r\n rootId,\r\n };\r\n default:\r\n return false;\r\n }\r\n}\r\nfunction getRootId(doc, mirror) {\r\n if (!mirror.hasNode(doc))\r\n return undefined;\r\n const docId = mirror.getId(doc);\r\n return docId === 1 ? undefined : docId;\r\n}\r\nfunction serializeTextNode(n, options) {\r\n var _a;\r\n const { needsMask, maskTextFn, rootId } = options;\r\n const parentTagName = n.parentNode && n.parentNode.tagName;\r\n let textContent = n.textContent;\r\n const isStyle = parentTagName === 'STYLE' ? true : undefined;\r\n const isScript = parentTagName === 'SCRIPT' ? true : undefined;\r\n if (isStyle && textContent) {\r\n try {\r\n if (n.nextSibling || n.previousSibling) {\r\n }\r\n else if ((_a = n.parentNode.sheet) === null || _a === void 0 ? void 0 : _a.cssRules) {\r\n textContent = stringifyStylesheet(n.parentNode.sheet);\r\n }\r\n }\r\n catch (err) {\r\n console.warn(`Cannot get CSS styles from text's parentNode. Error: ${err}`, n);\r\n }\r\n textContent = absoluteToStylesheet(textContent, getHref());\r\n }\r\n if (isScript) {\r\n textContent = 'SCRIPT_PLACEHOLDER';\r\n }\r\n if (!isStyle && !isScript && textContent && needsMask) {\r\n textContent = maskTextFn\r\n ? maskTextFn(textContent, n.parentElement)\r\n : textContent.replace(/[\\S]/g, '*');\r\n }\r\n return {\r\n type: NodeType.Text,\r\n textContent: textContent || '',\r\n isStyle,\r\n rootId,\r\n };\r\n}\r\nfunction serializeElementNode(n, options) {\r\n const { doc, blockClass, blockSelector, inlineStylesheet, maskInputOptions = {}, maskInputFn, dataURLOptions = {}, inlineImages, recordCanvas, keepIframeSrcFn, newlyAddedElement = false, rootId, } = options;\r\n const needBlock = _isBlockedElement(n, blockClass, blockSelector);\r\n const tagName = getValidTagName(n);\r\n let attributes = {};\r\n const len = n.attributes.length;\r\n for (let i = 0; i < len; i++) {\r\n const attr = n.attributes[i];\r\n if (!ignoreAttribute(tagName, attr.name, attr.value)) {\r\n attributes[attr.name] = transformAttribute(doc, tagName, toLowerCase(attr.name), attr.value);\r\n }\r\n }\r\n if (tagName === 'link' && inlineStylesheet) {\r\n const stylesheet = Array.from(doc.styleSheets).find((s) => {\r\n return s.href === n.href;\r\n });\r\n let cssText = null;\r\n if (stylesheet) {\r\n cssText = stringifyStylesheet(stylesheet);\r\n }\r\n if (cssText) {\r\n delete attributes.rel;\r\n delete attributes.href;\r\n attributes._cssText = absoluteToStylesheet(cssText, stylesheet.href);\r\n }\r\n }\r\n if (tagName === 'style' &&\r\n n.sheet &&\r\n !(n.innerText || n.textContent || '').trim().length) {\r\n const cssText = stringifyStylesheet(n.sheet);\r\n if (cssText) {\r\n attributes._cssText = absoluteToStylesheet(cssText, getHref());\r\n }\r\n }\r\n if (tagName === 'input' || tagName === 'textarea' || tagName === 'select') {\r\n const value = n.value;\r\n const checked = n.checked;\r\n if (attributes.type !== 'radio' &&\r\n attributes.type !== 'checkbox' &&\r\n attributes.type !== 'submit' &&\r\n attributes.type !== 'button' &&\r\n value) {\r\n attributes.value = maskInputValue({\r\n element: n,\r\n type: getInputType(n),\r\n tagName,\r\n value,\r\n maskInputOptions,\r\n maskInputFn,\r\n });\r\n }\r\n else if (checked) {\r\n attributes.checked = checked;\r\n }\r\n }\r\n if (tagName === 'option') {\r\n if (n.selected && !maskInputOptions['select']) {\r\n attributes.selected = true;\r\n }\r\n else {\r\n delete attributes.selected;\r\n }\r\n }\r\n if (tagName === 'canvas' && recordCanvas) {\r\n if (n.__context === '2d') {\r\n if (!is2DCanvasBlank(n)) {\r\n attributes.rr_dataURL = n.toDataURL(dataURLOptions.type, dataURLOptions.quality);\r\n }\r\n }\r\n else if (!('__context' in n)) {\r\n const canvasDataURL = n.toDataURL(dataURLOptions.type, dataURLOptions.quality);\r\n const blankCanvas = document.createElement('canvas');\r\n blankCanvas.width = n.width;\r\n blankCanvas.height = n.height;\r\n const blankCanvasDataURL = blankCanvas.toDataURL(dataURLOptions.type, dataURLOptions.quality);\r\n if (canvasDataURL !== blankCanvasDataURL) {\r\n attributes.rr_dataURL = canvasDataURL;\r\n }\r\n }\r\n }\r\n if (tagName === 'img' && inlineImages) {\r\n if (!canvasService) {\r\n canvasService = doc.createElement('canvas');\r\n canvasCtx = canvasService.getContext('2d');\r\n }\r\n const image = n;\r\n const oldValue = image.crossOrigin;\r\n image.crossOrigin = 'anonymous';\r\n const recordInlineImage = () => {\r\n image.removeEventListener('load', recordInlineImage);\r\n try {\r\n canvasService.width = image.naturalWidth;\r\n canvasService.height = image.naturalHeight;\r\n canvasCtx.drawImage(image, 0, 0);\r\n attributes.rr_dataURL = canvasService.toDataURL(dataURLOptions.type, dataURLOptions.quality);\r\n }\r\n catch (err) {\r\n console.warn(`Cannot inline img src=${image.currentSrc}! Error: ${err}`);\r\n }\r\n oldValue\r\n ? (attributes.crossOrigin = oldValue)\r\n : image.removeAttribute('crossorigin');\r\n };\r\n if (image.complete && image.naturalWidth !== 0)\r\n recordInlineImage();\r\n else\r\n image.addEventListener('load', recordInlineImage);\r\n }\r\n if (tagName === 'audio' || tagName === 'video') {\r\n const mediaAttributes = attributes;\r\n mediaAttributes.rr_mediaState = n.paused\r\n ? 'paused'\r\n : 'played';\r\n mediaAttributes.rr_mediaCurrentTime = n.currentTime;\r\n mediaAttributes.rr_mediaPlaybackRate = n.playbackRate;\r\n mediaAttributes.rr_mediaMuted = n.muted;\r\n mediaAttributes.rr_mediaLoop = n.loop;\r\n mediaAttributes.rr_mediaVolume = n.volume;\r\n }\r\n if (!newlyAddedElement) {\r\n if (n.scrollLeft) {\r\n attributes.rr_scrollLeft = n.scrollLeft;\r\n }\r\n if (n.scrollTop) {\r\n attributes.rr_scrollTop = n.scrollTop;\r\n }\r\n }\r\n if (needBlock) {\r\n const { width, height } = n.getBoundingClientRect();\r\n attributes = {\r\n class: attributes.class,\r\n rr_width: `${width}px`,\r\n rr_height: `${height}px`,\r\n };\r\n }\r\n if (tagName === 'iframe' && !keepIframeSrcFn(attributes.src)) {\r\n if (!n.contentDocument) {\r\n attributes.rr_src = attributes.src;\r\n }\r\n delete attributes.src;\r\n }\r\n let isCustomElement;\r\n try {\r\n if (customElements.get(tagName))\r\n isCustomElement = true;\r\n }\r\n catch (e) {\r\n }\r\n return {\r\n type: NodeType.Element,\r\n tagName,\r\n attributes,\r\n childNodes: [],\r\n isSVG: isSVGElement(n) || undefined,\r\n needBlock,\r\n rootId,\r\n isCustom: isCustomElement,\r\n };\r\n}\r\nfunction lowerIfExists(maybeAttr) {\r\n if (maybeAttr === undefined || maybeAttr === null) {\r\n return '';\r\n }\r\n else {\r\n return maybeAttr.toLowerCase();\r\n }\r\n}\r\nfunction slimDOMExcluded(sn, slimDOMOptions) {\r\n if (slimDOMOptions.comment && sn.type === NodeType.Comment) {\r\n return true;\r\n }\r\n else if (sn.type === NodeType.Element) {\r\n if (slimDOMOptions.script &&\r\n (sn.tagName === 'script' ||\r\n (sn.tagName === 'link' &&\r\n (sn.attributes.rel === 'preload' ||\r\n sn.attributes.rel === 'modulepreload') &&\r\n sn.attributes.as === 'script') ||\r\n (sn.tagName === 'link' &&\r\n sn.attributes.rel === 'prefetch' &&\r\n typeof sn.attributes.href === 'string' &&\r\n extractFileExtension(sn.attributes.href) === 'js'))) {\r\n return true;\r\n }\r\n else if (slimDOMOptions.headFavicon &&\r\n ((sn.tagName === 'link' && sn.attributes.rel === 'shortcut icon') ||\r\n (sn.tagName === 'meta' &&\r\n (lowerIfExists(sn.attributes.name).match(/^msapplication-tile(image|color)$/) ||\r\n lowerIfExists(sn.attributes.name) === 'application-name' ||\r\n lowerIfExists(sn.attributes.rel) === 'icon' ||\r\n lowerIfExists(sn.attributes.rel) === 'apple-touch-icon' ||\r\n lowerIfExists(sn.attributes.rel) === 'shortcut icon')))) {\r\n return true;\r\n }\r\n else if (sn.tagName === 'meta') {\r\n if (slimDOMOptions.headMetaDescKeywords &&\r\n lowerIfExists(sn.attributes.name).match(/^description|keywords$/)) {\r\n return true;\r\n }\r\n else if (slimDOMOptions.headMetaSocial &&\r\n (lowerIfExists(sn.attributes.property).match(/^(og|twitter|fb):/) ||\r\n lowerIfExists(sn.attributes.name).match(/^(og|twitter):/) ||\r\n lowerIfExists(sn.attributes.name) === 'pinterest')) {\r\n return true;\r\n }\r\n else if (slimDOMOptions.headMetaRobots &&\r\n (lowerIfExists(sn.attributes.name) === 'robots' ||\r\n lowerIfExists(sn.attributes.name) === 'googlebot' ||\r\n lowerIfExists(sn.attributes.name) === 'bingbot')) {\r\n return true;\r\n }\r\n else if (slimDOMOptions.headMetaHttpEquiv &&\r\n sn.attributes['http-equiv'] !== undefined) {\r\n return true;\r\n }\r\n else if (slimDOMOptions.headMetaAuthorship &&\r\n (lowerIfExists(sn.attributes.name) === 'author' ||\r\n lowerIfExists(sn.attributes.name) === 'generator' ||\r\n lowerIfExists(sn.attributes.name) === 'framework' ||\r\n lowerIfExists(sn.attributes.name) === 'publisher' ||\r\n lowerIfExists(sn.attributes.name) === 'progid' ||\r\n lowerIfExists(sn.attributes.property).match(/^article:/) ||\r\n lowerIfExists(sn.attributes.property).match(/^product:/))) {\r\n return true;\r\n }\r\n else if (slimDOMOptions.headMetaVerification &&\r\n (lowerIfExists(sn.attributes.name) === 'google-site-verification' ||\r\n lowerIfExists(sn.attributes.name) === 'yandex-verification' ||\r\n lowerIfExists(sn.attributes.name) === 'csrf-token' ||\r\n lowerIfExists(sn.attributes.name) === 'p:domain_verify' ||\r\n lowerIfExists(sn.attributes.name) === 'verify-v1' ||\r\n lowerIfExists(sn.attributes.name) === 'verification' ||\r\n lowerIfExists(sn.attributes.name) === 'shopify-checkout-api-token')) {\r\n return true;\r\n }\r\n }\r\n }\r\n return false;\r\n}\r\nfunction serializeNodeWithId(n, options) {\r\n const { doc, mirror, blockClass, blockSelector, maskTextClass, maskTextSelector, skipChild = false, inlineStylesheet = true, maskInputOptions = {}, maskTextFn, maskInputFn, slimDOMOptions, dataURLOptions = {}, inlineImages = false, recordCanvas = false, onSerialize, onIframeLoad, iframeLoadTimeout = 5000, onStylesheetLoad, stylesheetLoadTimeout = 5000, keepIframeSrcFn = () => false, newlyAddedElement = false, } = options;\r\n let { needsMask } = options;\r\n let { preserveWhiteSpace = true } = options;\r\n if (!needsMask &&\r\n n.childNodes) {\r\n const checkAncestors = needsMask === undefined;\r\n needsMask = needMaskingText(n, maskTextClass, maskTextSelector, checkAncestors);\r\n }\r\n const _serializedNode = serializeNode(n, {\r\n doc,\r\n mirror,\r\n blockClass,\r\n blockSelector,\r\n needsMask,\r\n inlineStylesheet,\r\n maskInputOptions,\r\n maskTextFn,\r\n maskInputFn,\r\n dataURLOptions,\r\n inlineImages,\r\n recordCanvas,\r\n keepIframeSrcFn,\r\n newlyAddedElement,\r\n });\r\n if (!_serializedNode) {\r\n console.warn(n, 'not serialized');\r\n return null;\r\n }\r\n let id;\r\n if (mirror.hasNode(n)) {\r\n id = mirror.getId(n);\r\n }\r\n else if (slimDOMExcluded(_serializedNode, slimDOMOptions) ||\r\n (!preserveWhiteSpace &&\r\n _serializedNode.type === NodeType.Text &&\r\n !_serializedNode.isStyle &&\r\n !_serializedNode.textContent.replace(/^\\s+|\\s+$/gm, '').length)) {\r\n id = IGNORED_NODE;\r\n }\r\n else {\r\n id = genId();\r\n }\r\n const serializedNode = Object.assign(_serializedNode, { id });\r\n mirror.add(n, serializedNode);\r\n if (id === IGNORED_NODE) {\r\n return null;\r\n }\r\n if (onSerialize) {\r\n onSerialize(n);\r\n }\r\n let recordChild = !skipChild;\r\n if (serializedNode.type === NodeType.Element) {\r\n recordChild = recordChild && !serializedNode.needBlock;\r\n delete serializedNode.needBlock;\r\n const shadowRoot = n.shadowRoot;\r\n if (shadowRoot && isNativeShadowDom(shadowRoot))\r\n serializedNode.isShadowHost = true;\r\n }\r\n if ((serializedNode.type === NodeType.Document ||\r\n serializedNode.type === NodeType.Element) &&\r\n recordChild) {\r\n if (slimDOMOptions.headWhitespace &&\r\n serializedNode.type === NodeType.Element &&\r\n serializedNode.tagName === 'head') {\r\n preserveWhiteSpace = false;\r\n }\r\n const bypassOptions = {\r\n doc,\r\n mirror,\r\n blockClass,\r\n blockSelector,\r\n needsMask,\r\n maskTextClass,\r\n maskTextSelector,\r\n skipChild,\r\n inlineStylesheet,\r\n maskInputOptions,\r\n maskTextFn,\r\n maskInputFn,\r\n slimDOMOptions,\r\n dataURLOptions,\r\n inlineImages,\r\n recordCanvas,\r\n preserveWhiteSpace,\r\n onSerialize,\r\n onIframeLoad,\r\n iframeLoadTimeout,\r\n onStylesheetLoad,\r\n stylesheetLoadTimeout,\r\n keepIframeSrcFn,\r\n };\r\n if (serializedNode.type === NodeType.Element &&\r\n serializedNode.tagName === 'textarea' &&\r\n serializedNode.attributes.value !== undefined) ;\r\n else {\r\n for (const childN of Array.from(n.childNodes)) {\r\n const serializedChildNode = serializeNodeWithId(childN, bypassOptions);\r\n if (serializedChildNode) {\r\n serializedNode.childNodes.push(serializedChildNode);\r\n }\r\n }\r\n }\r\n if (isElement(n) && n.shadowRoot) {\r\n for (const childN of Array.from(n.shadowRoot.childNodes)) {\r\n const serializedChildNode = serializeNodeWithId(childN, bypassOptions);\r\n if (serializedChildNode) {\r\n isNativeShadowDom(n.shadowRoot) &&\r\n (serializedChildNode.isShadow = true);\r\n serializedNode.childNodes.push(serializedChildNode);\r\n }\r\n }\r\n }\r\n }\r\n if (n.parentNode &&\r\n isShadowRoot(n.parentNode) &&\r\n isNativeShadowDom(n.parentNode)) {\r\n serializedNode.isShadow = true;\r\n }\r\n if (serializedNode.type === NodeType.Element &&\r\n serializedNode.tagName === 'iframe') {\r\n onceIframeLoaded(n, () => {\r\n const iframeDoc = n.contentDocument;\r\n if (iframeDoc && onIframeLoad) {\r\n const serializedIframeNode = serializeNodeWithId(iframeDoc, {\r\n doc: iframeDoc,\r\n mirror,\r\n blockClass,\r\n blockSelector,\r\n needsMask,\r\n maskTextClass,\r\n maskTextSelector,\r\n skipChild: false,\r\n inlineStylesheet,\r\n maskInputOptions,\r\n maskTextFn,\r\n maskInputFn,\r\n slimDOMOptions,\r\n dataURLOptions,\r\n inlineImages,\r\n recordCanvas,\r\n preserveWhiteSpace,\r\n onSerialize,\r\n onIframeLoad,\r\n iframeLoadTimeout,\r\n onStylesheetLoad,\r\n stylesheetLoadTimeout,\r\n keepIframeSrcFn,\r\n });\r\n if (serializedIframeNode) {\r\n onIframeLoad(n, serializedIframeNode);\r\n }\r\n }\r\n }, iframeLoadTimeout);\r\n }\r\n if (serializedNode.type === NodeType.Element &&\r\n serializedNode.tagName === 'link' &&\r\n typeof serializedNode.attributes.rel === 'string' &&\r\n (serializedNode.attributes.rel === 'stylesheet' ||\r\n (serializedNode.attributes.rel === 'preload' &&\r\n typeof serializedNode.attributes.href === 'string' &&\r\n extractFileExtension(serializedNode.attributes.href) === 'css'))) {\r\n onceStylesheetLoaded(n, () => {\r\n if (onStylesheetLoad) {\r\n const serializedLinkNode = serializeNodeWithId(n, {\r\n doc,\r\n mirror,\r\n blockClass,\r\n blockSelector,\r\n needsMask,\r\n maskTextClass,\r\n maskTextSelector,\r\n skipChild: false,\r\n inlineStylesheet,\r\n maskInputOptions,\r\n maskTextFn,\r\n maskInputFn,\r\n slimDOMOptions,\r\n dataURLOptions,\r\n inlineImages,\r\n recordCanvas,\r\n preserveWhiteSpace,\r\n onSerialize,\r\n onIframeLoad,\r\n iframeLoadTimeout,\r\n onStylesheetLoad,\r\n stylesheetLoadTimeout,\r\n keepIframeSrcFn,\r\n });\r\n if (serializedLinkNode) {\r\n onStylesheetLoad(n, serializedLinkNode);\r\n }\r\n }\r\n }, stylesheetLoadTimeout);\r\n }\r\n return serializedNode;\r\n}\r\nfunction snapshot(n, options) {\r\n const { mirror = new Mirror(), blockClass = 'rr-block', blockSelector = null, maskTextClass = 'rr-mask', maskTextSelector = null, inlineStylesheet = true, inlineImages = false, recordCanvas = false, maskAllInputs = false, maskTextFn, maskInputFn, slimDOM = false, dataURLOptions, preserveWhiteSpace, onSerialize, onIframeLoad, iframeLoadTimeout, onStylesheetLoad, stylesheetLoadTimeout, keepIframeSrcFn = () => false, } = options || {};\r\n const maskInputOptions = maskAllInputs === true\r\n ? {\r\n color: true,\r\n date: true,\r\n 'datetime-local': true,\r\n email: true,\r\n month: true,\r\n number: true,\r\n range: true,\r\n search: true,\r\n tel: true,\r\n text: true,\r\n time: true,\r\n url: true,\r\n week: true,\r\n textarea: true,\r\n select: true,\r\n password: true,\r\n }\r\n : maskAllInputs === false\r\n ? {\r\n password: true,\r\n }\r\n : maskAllInputs;\r\n const slimDOMOptions = slimDOM === true || slimDOM === 'all'\r\n ?\r\n {\r\n script: true,\r\n comment: true,\r\n headFavicon: true,\r\n headWhitespace: true,\r\n headMetaDescKeywords: slimDOM === 'all',\r\n headMetaSocial: true,\r\n headMetaRobots: true,\r\n headMetaHttpEquiv: true,\r\n headMetaAuthorship: true,\r\n headMetaVerification: true,\r\n }\r\n : slimDOM === false\r\n ? {}\r\n : slimDOM;\r\n return serializeNodeWithId(n, {\r\n doc: n,\r\n mirror,\r\n blockClass,\r\n blockSelector,\r\n maskTextClass,\r\n maskTextSelector,\r\n skipChild: false,\r\n inlineStylesheet,\r\n maskInputOptions,\r\n maskTextFn,\r\n maskInputFn,\r\n slimDOMOptions,\r\n dataURLOptions,\r\n inlineImages,\r\n recordCanvas,\r\n preserveWhiteSpace,\r\n onSerialize,\r\n onIframeLoad,\r\n iframeLoadTimeout,\r\n onStylesheetLoad,\r\n stylesheetLoadTimeout,\r\n keepIframeSrcFn,\r\n newlyAddedElement: false,\r\n });\r\n}\n\nfunction on(type, fn, target = document) {\r\n const options = { capture: true, passive: true };\r\n target.addEventListener(type, fn, options);\r\n return () => target.removeEventListener(type, fn, options);\r\n}\r\nconst DEPARTED_MIRROR_ACCESS_WARNING = 'Please stop import mirror directly. Instead of that,' +\r\n '\\r\\n' +\r\n 'now you can use replayer.getMirror() to access the mirror instance of a replayer,' +\r\n '\\r\\n' +\r\n 'or you can use record.mirror to access the mirror instance during recording.';\r\nlet _mirror = {\r\n map: {},\r\n getId() {\r\n console.error(DEPARTED_MIRROR_ACCESS_WARNING);\r\n return -1;\r\n },\r\n getNode() {\r\n console.error(DEPARTED_MIRROR_ACCESS_WARNING);\r\n return null;\r\n },\r\n removeNodeFromMap() {\r\n console.error(DEPARTED_MIRROR_ACCESS_WARNING);\r\n },\r\n has() {\r\n console.error(DEPARTED_MIRROR_ACCESS_WARNING);\r\n return false;\r\n },\r\n reset() {\r\n console.error(DEPARTED_MIRROR_ACCESS_WARNING);\r\n },\r\n};\r\nif (typeof window !== 'undefined' && window.Proxy && window.Reflect) {\r\n _mirror = new Proxy(_mirror, {\r\n get(target, prop, receiver) {\r\n if (prop === 'map') {\r\n console.error(DEPARTED_MIRROR_ACCESS_WARNING);\r\n }\r\n return Reflect.get(target, prop, receiver);\r\n },\r\n });\r\n}\r\nfunction throttle(func, wait, options = {}) {\r\n let timeout = null;\r\n let previous = 0;\r\n return function (...args) {\r\n const now = Date.now();\r\n if (!previous && options.leading === false) {\r\n previous = now;\r\n }\r\n const remaining = wait - (now - previous);\r\n const context = this;\r\n if (remaining <= 0 || remaining > wait) {\r\n if (timeout) {\r\n clearTimeout(timeout);\r\n timeout = null;\r\n }\r\n previous = now;\r\n func.apply(context, args);\r\n }\r\n else if (!timeout && options.trailing !== false) {\r\n timeout = setTimeout(() => {\r\n previous = options.leading === false ? 0 : Date.now();\r\n timeout = null;\r\n func.apply(context, args);\r\n }, remaining);\r\n }\r\n };\r\n}\r\nfunction hookSetter(target, key, d, isRevoked, win = window) {\r\n const original = win.Object.getOwnPropertyDescriptor(target, key);\r\n win.Object.defineProperty(target, key, isRevoked\r\n ? d\r\n : {\r\n set(value) {\r\n setTimeout(() => {\r\n d.set.call(this, value);\r\n }, 0);\r\n if (original && original.set) {\r\n original.set.call(this, value);\r\n }\r\n },\r\n });\r\n return () => hookSetter(target, key, original || {}, true);\r\n}\r\nfunction patch(source, name, replacement) {\r\n try {\r\n if (!(name in source)) {\r\n return () => {\r\n };\r\n }\r\n const original = source[name];\r\n const wrapped = replacement(original);\r\n if (typeof wrapped === 'function') {\r\n wrapped.prototype = wrapped.prototype || {};\r\n Object.defineProperties(wrapped, {\r\n __rrweb_original__: {\r\n enumerable: false,\r\n value: original,\r\n },\r\n });\r\n }\r\n source[name] = wrapped;\r\n return () => {\r\n source[name] = original;\r\n };\r\n }\r\n catch (_a) {\r\n return () => {\r\n };\r\n }\r\n}\r\nlet nowTimestamp = Date.now;\r\nif (!(/[1-9][0-9]{12}/.test(Date.now().toString()))) {\r\n nowTimestamp = () => new Date().getTime();\r\n}\r\nfunction getWindowScroll(win) {\r\n var _a, _b, _c, _d, _e, _f;\r\n const doc = win.document;\r\n return {\r\n left: doc.scrollingElement\r\n ? doc.scrollingElement.scrollLeft\r\n : win.pageXOffset !== undefined\r\n ? win.pageXOffset\r\n : (doc === null || doc === void 0 ? void 0 : doc.documentElement.scrollLeft) ||\r\n ((_b = (_a = doc === null || doc === void 0 ? void 0 : doc.body) === null || _a === void 0 ? void 0 : _a.parentElement) === null || _b === void 0 ? void 0 : _b.scrollLeft) ||\r\n ((_c = doc === null || doc === void 0 ? void 0 : doc.body) === null || _c === void 0 ? void 0 : _c.scrollLeft) ||\r\n 0,\r\n top: doc.scrollingElement\r\n ? doc.scrollingElement.scrollTop\r\n : win.pageYOffset !== undefined\r\n ? win.pageYOffset\r\n : (doc === null || doc === void 0 ? void 0 : doc.documentElement.scrollTop) ||\r\n ((_e = (_d = doc === null || doc === void 0 ? void 0 : doc.body) === null || _d === void 0 ? void 0 : _d.parentElement) === null || _e === void 0 ? void 0 : _e.scrollTop) ||\r\n ((_f = doc === null || doc === void 0 ? void 0 : doc.body) === null || _f === void 0 ? void 0 : _f.scrollTop) ||\r\n 0,\r\n };\r\n}\r\nfunction getWindowHeight() {\r\n return (window.innerHeight ||\r\n (document.documentElement && document.documentElement.clientHeight) ||\r\n (document.body && document.body.clientHeight));\r\n}\r\nfunction getWindowWidth() {\r\n return (window.innerWidth ||\r\n (document.documentElement && document.documentElement.clientWidth) ||\r\n (document.body && document.body.clientWidth));\r\n}\r\nfunction closestElementOfNode(node) {\r\n if (!node) {\r\n return null;\r\n }\r\n const el = node.nodeType === node.ELEMENT_NODE\r\n ? node\r\n : node.parentElement;\r\n return el;\r\n}\r\nfunction isBlocked(node, blockClass, blockSelector, checkAncestors) {\r\n if (!node) {\r\n return false;\r\n }\r\n const el = closestElementOfNode(node);\r\n if (!el) {\r\n return false;\r\n }\r\n try {\r\n if (typeof blockClass === 'string') {\r\n if (el.classList.contains(blockClass))\r\n return true;\r\n if (checkAncestors && el.closest('.' + blockClass) !== null)\r\n return true;\r\n }\r\n else {\r\n if (classMatchesRegex(el, blockClass, checkAncestors))\r\n return true;\r\n }\r\n }\r\n catch (e) {\r\n }\r\n if (blockSelector) {\r\n if (el.matches(blockSelector))\r\n return true;\r\n if (checkAncestors && el.closest(blockSelector) !== null)\r\n return true;\r\n }\r\n return false;\r\n}\r\nfunction isSerialized(n, mirror) {\r\n return mirror.getId(n) !== -1;\r\n}\r\nfunction isIgnored(n, mirror) {\r\n return mirror.getId(n) === IGNORED_NODE;\r\n}\r\nfunction isAncestorRemoved(target, mirror) {\r\n if (isShadowRoot(target)) {\r\n return false;\r\n }\r\n const id = mirror.getId(target);\r\n if (!mirror.has(id)) {\r\n return true;\r\n }\r\n if (target.parentNode &&\r\n target.parentNode.nodeType === target.DOCUMENT_NODE) {\r\n return false;\r\n }\r\n if (!target.parentNode) {\r\n return true;\r\n }\r\n return isAncestorRemoved(target.parentNode, mirror);\r\n}\r\nfunction legacy_isTouchEvent(event) {\r\n return Boolean(event.changedTouches);\r\n}\r\nfunction polyfill(win = window) {\r\n if ('NodeList' in win && !win.NodeList.prototype.forEach) {\r\n win.NodeList.prototype.forEach = Array.prototype\r\n .forEach;\r\n }\r\n if ('DOMTokenList' in win && !win.DOMTokenList.prototype.forEach) {\r\n win.DOMTokenList.prototype.forEach = Array.prototype\r\n .forEach;\r\n }\r\n if (!Node.prototype.contains) {\r\n Node.prototype.contains = (...args) => {\r\n let node = args[0];\r\n if (!(0 in args)) {\r\n throw new TypeError('1 argument is required');\r\n }\r\n do {\r\n if (this === node) {\r\n return true;\r\n }\r\n } while ((node = node && node.parentNode));\r\n return false;\r\n };\r\n }\r\n}\r\nfunction isSerializedIframe(n, mirror) {\r\n return Boolean(n.nodeName === 'IFRAME' && mirror.getMeta(n));\r\n}\r\nfunction isSerializedStylesheet(n, mirror) {\r\n return Boolean(n.nodeName === 'LINK' &&\r\n n.nodeType === n.ELEMENT_NODE &&\r\n n.getAttribute &&\r\n n.getAttribute('rel') === 'stylesheet' &&\r\n mirror.getMeta(n));\r\n}\r\nfunction hasShadowRoot(n) {\r\n return Boolean(n === null || n === void 0 ? void 0 : n.shadowRoot);\r\n}\r\nclass StyleSheetMirror {\r\n constructor() {\r\n this.id = 1;\r\n this.styleIDMap = new WeakMap();\r\n this.idStyleMap = new Map();\r\n }\r\n getId(stylesheet) {\r\n var _a;\r\n return (_a = this.styleIDMap.get(stylesheet)) !== null && _a !== void 0 ? _a : -1;\r\n }\r\n has(stylesheet) {\r\n return this.styleIDMap.has(stylesheet);\r\n }\r\n add(stylesheet, id) {\r\n if (this.has(stylesheet))\r\n return this.getId(stylesheet);\r\n let newId;\r\n if (id === undefined) {\r\n newId = this.id++;\r\n }\r\n else\r\n newId = id;\r\n this.styleIDMap.set(stylesheet, newId);\r\n this.idStyleMap.set(newId, stylesheet);\r\n return newId;\r\n }\r\n getStyle(id) {\r\n return this.idStyleMap.get(id) || null;\r\n }\r\n reset() {\r\n this.styleIDMap = new WeakMap();\r\n this.idStyleMap = new Map();\r\n this.id = 1;\r\n }\r\n generateId() {\r\n return this.id++;\r\n }\r\n}\r\nfunction getShadowHost(n) {\r\n var _a, _b;\r\n let shadowHost = null;\r\n if (((_b = (_a = n.getRootNode) === null || _a === void 0 ? void 0 : _a.call(n)) === null || _b === void 0 ? void 0 : _b.nodeType) === Node.DOCUMENT_FRAGMENT_NODE &&\r\n n.getRootNode().host)\r\n shadowHost = n.getRootNode().host;\r\n return shadowHost;\r\n}\r\nfunction getRootShadowHost(n) {\r\n let rootShadowHost = n;\r\n let shadowHost;\r\n while ((shadowHost = getShadowHost(rootShadowHost)))\r\n rootShadowHost = shadowHost;\r\n return rootShadowHost;\r\n}\r\nfunction shadowHostInDom(n) {\r\n const doc = n.ownerDocument;\r\n if (!doc)\r\n return false;\r\n const shadowHost = getRootShadowHost(n);\r\n return doc.contains(shadowHost);\r\n}\r\nfunction inDom(n) {\r\n const doc = n.ownerDocument;\r\n if (!doc)\r\n return false;\r\n return doc.contains(n) || shadowHostInDom(n);\r\n}\n\nvar EventType$1 = /* @__PURE__ */ ((EventType2) => {\n EventType2[EventType2[\"DomContentLoaded\"] = 0] = \"DomContentLoaded\";\n EventType2[EventType2[\"Load\"] = 1] = \"Load\";\n EventType2[EventType2[\"FullSnapshot\"] = 2] = \"FullSnapshot\";\n EventType2[EventType2[\"IncrementalSnapshot\"] = 3] = \"IncrementalSnapshot\";\n EventType2[EventType2[\"Meta\"] = 4] = \"Meta\";\n EventType2[EventType2[\"Custom\"] = 5] = \"Custom\";\n EventType2[EventType2[\"Plugin\"] = 6] = \"Plugin\";\n return EventType2;\n})(EventType$1 || {});\nvar IncrementalSource$1 = /* @__PURE__ */ ((IncrementalSource2) => {\n IncrementalSource2[IncrementalSource2[\"Mutation\"] = 0] = \"Mutation\";\n IncrementalSource2[IncrementalSource2[\"MouseMove\"] = 1] = \"MouseMove\";\n IncrementalSource2[IncrementalSource2[\"MouseInteraction\"] = 2] = \"MouseInteraction\";\n IncrementalSource2[IncrementalSource2[\"Scroll\"] = 3] = \"Scroll\";\n IncrementalSource2[IncrementalSource2[\"ViewportResize\"] = 4] = \"ViewportResize\";\n IncrementalSource2[IncrementalSource2[\"Input\"] = 5] = \"Input\";\n IncrementalSource2[IncrementalSource2[\"TouchMove\"] = 6] = \"TouchMove\";\n IncrementalSource2[IncrementalSource2[\"MediaInteraction\"] = 7] = \"MediaInteraction\";\n IncrementalSource2[IncrementalSource2[\"StyleSheetRule\"] = 8] = \"StyleSheetRule\";\n IncrementalSource2[IncrementalSource2[\"CanvasMutation\"] = 9] = \"CanvasMutation\";\n IncrementalSource2[IncrementalSource2[\"Font\"] = 10] = \"Font\";\n IncrementalSource2[IncrementalSource2[\"Log\"] = 11] = \"Log\";\n IncrementalSource2[IncrementalSource2[\"Drag\"] = 12] = \"Drag\";\n IncrementalSource2[IncrementalSource2[\"StyleDeclaration\"] = 13] = \"StyleDeclaration\";\n IncrementalSource2[IncrementalSource2[\"Selection\"] = 14] = \"Selection\";\n IncrementalSource2[IncrementalSource2[\"AdoptedStyleSheet\"] = 15] = \"AdoptedStyleSheet\";\n IncrementalSource2[IncrementalSource2[\"CustomElement\"] = 16] = \"CustomElement\";\n return IncrementalSource2;\n})(IncrementalSource$1 || {});\nvar MouseInteractions = /* @__PURE__ */ ((MouseInteractions2) => {\n MouseInteractions2[MouseInteractions2[\"MouseUp\"] = 0] = \"MouseUp\";\n MouseInteractions2[MouseInteractions2[\"MouseDown\"] = 1] = \"MouseDown\";\n MouseInteractions2[MouseInteractions2[\"Click\"] = 2] = \"Click\";\n MouseInteractions2[MouseInteractions2[\"ContextMenu\"] = 3] = \"ContextMenu\";\n MouseInteractions2[MouseInteractions2[\"DblClick\"] = 4] = \"DblClick\";\n MouseInteractions2[MouseInteractions2[\"Focus\"] = 5] = \"Focus\";\n MouseInteractions2[MouseInteractions2[\"Blur\"] = 6] = \"Blur\";\n MouseInteractions2[MouseInteractions2[\"TouchStart\"] = 7] = \"TouchStart\";\n MouseInteractions2[MouseInteractions2[\"TouchMove_Departed\"] = 8] = \"TouchMove_Departed\";\n MouseInteractions2[MouseInteractions2[\"TouchEnd\"] = 9] = \"TouchEnd\";\n MouseInteractions2[MouseInteractions2[\"TouchCancel\"] = 10] = \"TouchCancel\";\n return MouseInteractions2;\n})(MouseInteractions || {});\nvar PointerTypes = /* @__PURE__ */ ((PointerTypes2) => {\n PointerTypes2[PointerTypes2[\"Mouse\"] = 0] = \"Mouse\";\n PointerTypes2[PointerTypes2[\"Pen\"] = 1] = \"Pen\";\n PointerTypes2[PointerTypes2[\"Touch\"] = 2] = \"Touch\";\n return PointerTypes2;\n})(PointerTypes || {});\nvar CanvasContext = /* @__PURE__ */ ((CanvasContext2) => {\n CanvasContext2[CanvasContext2[\"2D\"] = 0] = \"2D\";\n CanvasContext2[CanvasContext2[\"WebGL\"] = 1] = \"WebGL\";\n CanvasContext2[CanvasContext2[\"WebGL2\"] = 2] = \"WebGL2\";\n return CanvasContext2;\n})(CanvasContext || {});\n\nfunction isNodeInLinkedList(n) {\r\n return '__ln' in n;\r\n}\r\nclass DoubleLinkedList {\r\n constructor() {\r\n this.length = 0;\r\n this.head = null;\r\n this.tail = null;\r\n }\r\n get(position) {\r\n if (position >= this.length) {\r\n throw new Error('Position outside of list range');\r\n }\r\n let current = this.head;\r\n for (let index = 0; index < position; index++) {\r\n current = (current === null || current === void 0 ? void 0 : current.next) || null;\r\n }\r\n return current;\r\n }\r\n addNode(n) {\r\n const node = {\r\n value: n,\r\n previous: null,\r\n next: null,\r\n };\r\n n.__ln = node;\r\n if (n.previousSibling && isNodeInLinkedList(n.previousSibling)) {\r\n const current = n.previousSibling.__ln.next;\r\n node.next = current;\r\n node.previous = n.previousSibling.__ln;\r\n n.previousSibling.__ln.next = node;\r\n if (current) {\r\n current.previous = node;\r\n }\r\n }\r\n else if (n.nextSibling &&\r\n isNodeInLinkedList(n.nextSibling) &&\r\n n.nextSibling.__ln.previous) {\r\n const current = n.nextSibling.__ln.previous;\r\n node.previous = current;\r\n node.next = n.nextSibling.__ln;\r\n n.nextSibling.__ln.previous = node;\r\n if (current) {\r\n current.next = node;\r\n }\r\n }\r\n else {\r\n if (this.head) {\r\n this.head.previous = node;\r\n }\r\n node.next = this.head;\r\n this.head = node;\r\n }\r\n if (node.next === null) {\r\n this.tail = node;\r\n }\r\n this.length++;\r\n }\r\n removeNode(n) {\r\n const current = n.__ln;\r\n if (!this.head) {\r\n return;\r\n }\r\n if (!current.previous) {\r\n this.head = current.next;\r\n if (this.head) {\r\n this.head.previous = null;\r\n }\r\n else {\r\n this.tail = null;\r\n }\r\n }\r\n else {\r\n current.previous.next = current.next;\r\n if (current.next) {\r\n current.next.previous = current.previous;\r\n }\r\n else {\r\n this.tail = current.previous;\r\n }\r\n }\r\n if (n.__ln) {\r\n delete n.__ln;\r\n }\r\n this.length--;\r\n }\r\n}\r\nconst moveKey = (id, parentId) => `${id}@${parentId}`;\r\nclass MutationBuffer {\r\n constructor() {\r\n this.frozen = false;\r\n this.locked = false;\r\n this.texts = [];\r\n this.attributes = [];\r\n this.attributeMap = new WeakMap();\r\n this.removes = [];\r\n this.mapRemoves = [];\r\n this.movedMap = {};\r\n this.addedSet = new Set();\r\n this.movedSet = new Set();\r\n this.droppedSet = new Set();\r\n this.processMutations = (mutations) => {\r\n mutations.forEach(this.processMutation);\r\n this.emit();\r\n };\r\n this.emit = () => {\r\n if (this.frozen || this.locked) {\r\n return;\r\n }\r\n const adds = [];\r\n const addedIds = new Set();\r\n const addList = new DoubleLinkedList();\r\n const getNextId = (n) => {\r\n let ns = n;\r\n let nextId = IGNORED_NODE;\r\n while (nextId === IGNORED_NODE) {\r\n ns = ns && ns.nextSibling;\r\n nextId = ns && this.mirror.getId(ns);\r\n }\r\n return nextId;\r\n };\r\n const pushAdd = (n) => {\r\n if (!n.parentNode ||\r\n !inDom(n) ||\r\n n.parentNode.tagName === 'TEXTAREA') {\r\n return;\r\n }\r\n const parentId = isShadowRoot(n.parentNode)\r\n ? this.mirror.getId(getShadowHost(n))\r\n : this.mirror.getId(n.parentNode);\r\n const nextId = getNextId(n);\r\n if (parentId === -1 || nextId === -1) {\r\n return addList.addNode(n);\r\n }\r\n const sn = serializeNodeWithId(n, {\r\n doc: this.doc,\r\n mirror: this.mirror,\r\n blockClass: this.blockClass,\r\n blockSelector: this.blockSelector,\r\n maskTextClass: this.maskTextClass,\r\n maskTextSelector: this.maskTextSelector,\r\n skipChild: true,\r\n newlyAddedElement: true,\r\n inlineStylesheet: this.inlineStylesheet,\r\n maskInputOptions: this.maskInputOptions,\r\n maskTextFn: this.maskTextFn,\r\n maskInputFn: this.maskInputFn,\r\n slimDOMOptions: this.slimDOMOptions,\r\n dataURLOptions: this.dataURLOptions,\r\n recordCanvas: this.recordCanvas,\r\n inlineImages: this.inlineImages,\r\n onSerialize: (currentN) => {\r\n if (isSerializedIframe(currentN, this.mirror)) {\r\n this.iframeManager.addIframe(currentN);\r\n }\r\n if (isSerializedStylesheet(currentN, this.mirror)) {\r\n this.stylesheetManager.trackLinkElement(currentN);\r\n }\r\n if (hasShadowRoot(n)) {\r\n this.shadowDomManager.addShadowRoot(n.shadowRoot, this.doc);\r\n }\r\n },\r\n onIframeLoad: (iframe, childSn) => {\r\n this.iframeManager.attachIframe(iframe, childSn);\r\n this.shadowDomManager.observeAttachShadow(iframe);\r\n },\r\n onStylesheetLoad: (link, childSn) => {\r\n this.stylesheetManager.attachLinkElement(link, childSn);\r\n },\r\n });\r\n if (sn) {\r\n adds.push({\r\n parentId,\r\n nextId,\r\n node: sn,\r\n });\r\n addedIds.add(sn.id);\r\n }\r\n };\r\n while (this.mapRemoves.length) {\r\n this.mirror.removeNodeFromMap(this.mapRemoves.shift());\r\n }\r\n for (const n of this.movedSet) {\r\n if (isParentRemoved(this.removes, n, this.mirror) &&\r\n !this.movedSet.has(n.parentNode)) {\r\n continue;\r\n }\r\n pushAdd(n);\r\n }\r\n for (const n of this.addedSet) {\r\n if (!isAncestorInSet(this.droppedSet, n) &&\r\n !isParentRemoved(this.removes, n, this.mirror)) {\r\n pushAdd(n);\r\n }\r\n else if (isAncestorInSet(this.movedSet, n)) {\r\n pushAdd(n);\r\n }\r\n else {\r\n this.droppedSet.add(n);\r\n }\r\n }\r\n let candidate = null;\r\n while (addList.length) {\r\n let node = null;\r\n if (candidate) {\r\n const parentId = this.mirror.getId(candidate.value.parentNode);\r\n const nextId = getNextId(candidate.value);\r\n if (parentId !== -1 && nextId !== -1) {\r\n node = candidate;\r\n }\r\n }\r\n if (!node) {\r\n let tailNode = addList.tail;\r\n while (tailNode) {\r\n const _node = tailNode;\r\n tailNode = tailNode.previous;\r\n if (_node) {\r\n const parentId = this.mirror.getId(_node.value.parentNode);\r\n const nextId = getNextId(_node.value);\r\n if (nextId === -1)\r\n continue;\r\n else if (parentId !== -1) {\r\n node = _node;\r\n break;\r\n }\r\n else {\r\n const unhandledNode = _node.value;\r\n if (unhandledNode.parentNode &&\r\n unhandledNode.parentNode.nodeType ===\r\n Node.DOCUMENT_FRAGMENT_NODE) {\r\n const shadowHost = unhandledNode.parentNode\r\n .host;\r\n const parentId = this.mirror.getId(shadowHost);\r\n if (parentId !== -1) {\r\n node = _node;\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n if (!node) {\r\n while (addList.head) {\r\n addList.removeNode(addList.head.value);\r\n }\r\n break;\r\n }\r\n candidate = node.previous;\r\n addList.removeNode(node.value);\r\n pushAdd(node.value);\r\n }\r\n const payload = {\r\n texts: this.texts\r\n .map((text) => {\r\n const n = text.node;\r\n if (n.parentNode &&\r\n n.parentNode.tagName === 'TEXTAREA') {\r\n this.genTextAreaValueMutation(n.parentNode);\r\n }\r\n return {\r\n id: this.mirror.getId(n),\r\n value: text.value,\r\n };\r\n })\r\n .filter((text) => !addedIds.has(text.id))\r\n .filter((text) => this.mirror.has(text.id)),\r\n attributes: this.attributes\r\n .map((attribute) => {\r\n const { attributes } = attribute;\r\n if (typeof attributes.style === 'string') {\r\n const diffAsStr = JSON.stringify(attribute.styleDiff);\r\n const unchangedAsStr = JSON.stringify(attribute._unchangedStyles);\r\n if (diffAsStr.length < attributes.style.length) {\r\n if ((diffAsStr + unchangedAsStr).split('var(').length ===\r\n attributes.style.split('var(').length) {\r\n attributes.style = attribute.styleDiff;\r\n }\r\n }\r\n }\r\n return {\r\n id: this.mirror.getId(attribute.node),\r\n attributes: attributes,\r\n };\r\n })\r\n .filter((attribute) => !addedIds.has(attribute.id))\r\n .filter((attribute) => this.mirror.has(attribute.id)),\r\n removes: this.removes,\r\n adds,\r\n };\r\n if (!payload.texts.length &&\r\n !payload.attributes.length &&\r\n !payload.removes.length &&\r\n !payload.adds.length) {\r\n return;\r\n }\r\n this.texts = [];\r\n this.attributes = [];\r\n this.attributeMap = new WeakMap();\r\n this.removes = [];\r\n this.addedSet = new Set();\r\n this.movedSet = new Set();\r\n this.droppedSet = new Set();\r\n this.movedMap = {};\r\n this.mutationCb(payload);\r\n };\r\n this.genTextAreaValueMutation = (textarea) => {\r\n let item = this.attributeMap.get(textarea);\r\n if (!item) {\r\n item = {\r\n node: textarea,\r\n attributes: {},\r\n styleDiff: {},\r\n _unchangedStyles: {},\r\n };\r\n this.attributes.push(item);\r\n this.attributeMap.set(textarea, item);\r\n }\r\n item.attributes.value = Array.from(textarea.childNodes, (cn) => cn.textContent || '').join('');\r\n };\r\n this.processMutation = (m) => {\r\n if (isIgnored(m.target, this.mirror)) {\r\n return;\r\n }\r\n switch (m.type) {\r\n case 'characterData': {\r\n const value = m.target.textContent;\r\n if (!isBlocked(m.target, this.blockClass, this.blockSelector, false) &&\r\n value !== m.oldValue) {\r\n this.texts.push({\r\n value: needMaskingText(m.target, this.maskTextClass, this.maskTextSelector, true) && value\r\n ? this.maskTextFn\r\n ? this.maskTextFn(value, closestElementOfNode(m.target))\r\n : value.replace(/[\\S]/g, '*')\r\n : value,\r\n node: m.target,\r\n });\r\n }\r\n break;\r\n }\r\n case 'attributes': {\r\n const target = m.target;\r\n let attributeName = m.attributeName;\r\n let value = m.target.getAttribute(attributeName);\r\n if (attributeName === 'value') {\r\n const type = getInputType(target);\r\n value = maskInputValue({\r\n element: target,\r\n maskInputOptions: this.maskInputOptions,\r\n tagName: target.tagName,\r\n type,\r\n value,\r\n maskInputFn: this.maskInputFn,\r\n });\r\n }\r\n if (isBlocked(m.target, this.blockClass, this.blockSelector, false) ||\r\n value === m.oldValue) {\r\n return;\r\n }\r\n let item = this.attributeMap.get(m.target);\r\n if (target.tagName === 'IFRAME' &&\r\n attributeName === 'src' &&\r\n !this.keepIframeSrcFn(value)) {\r\n if (!target.contentDocument) {\r\n attributeName = 'rr_src';\r\n }\r\n else {\r\n return;\r\n }\r\n }\r\n if (!item) {\r\n item = {\r\n node: m.target,\r\n attributes: {},\r\n styleDiff: {},\r\n _unchangedStyles: {},\r\n };\r\n this.attributes.push(item);\r\n this.attributeMap.set(m.target, item);\r\n }\r\n if (attributeName === 'type' &&\r\n target.tagName === 'INPUT' &&\r\n (m.oldValue || '').toLowerCase() === 'password') {\r\n target.setAttribute('data-rr-is-password', 'true');\r\n }\r\n if (!ignoreAttribute(target.tagName, attributeName)) {\r\n item.attributes[attributeName] = transformAttribute(this.doc, toLowerCase(target.tagName), toLowerCase(attributeName), value);\r\n if (attributeName === 'style') {\r\n if (!this.unattachedDoc) {\r\n try {\r\n this.unattachedDoc =\r\n document.implementation.createHTMLDocument();\r\n }\r\n catch (e) {\r\n this.unattachedDoc = this.doc;\r\n }\r\n }\r\n const old = this.unattachedDoc.createElement('span');\r\n if (m.oldValue) {\r\n old.setAttribute('style', m.oldValue);\r\n }\r\n for (const pname of Array.from(target.style)) {\r\n const newValue = target.style.getPropertyValue(pname);\r\n const newPriority = target.style.getPropertyPriority(pname);\r\n if (newValue !== old.style.getPropertyValue(pname) ||\r\n newPriority !== old.style.getPropertyPriority(pname)) {\r\n if (newPriority === '') {\r\n item.styleDiff[pname] = newValue;\r\n }\r\n else {\r\n item.styleDiff[pname] = [newValue, newPriority];\r\n }\r\n }\r\n else {\r\n item._unchangedStyles[pname] = [newValue, newPriority];\r\n }\r\n }\r\n for (const pname of Array.from(old.style)) {\r\n if (target.style.getPropertyValue(pname) === '') {\r\n item.styleDiff[pname] = false;\r\n }\r\n }\r\n }\r\n }\r\n break;\r\n }\r\n case 'childList': {\r\n if (isBlocked(m.target, this.blockClass, this.blockSelector, true))\r\n return;\r\n if (m.target.tagName === 'TEXTAREA') {\r\n this.genTextAreaValueMutation(m.target);\r\n return;\r\n }\r\n m.addedNodes.forEach((n) => this.genAdds(n, m.target));\r\n m.removedNodes.forEach((n) => {\r\n const nodeId = this.mirror.getId(n);\r\n const parentId = isShadowRoot(m.target)\r\n ? this.mirror.getId(m.target.host)\r\n : this.mirror.getId(m.target);\r\n if (isBlocked(m.target, this.blockClass, this.blockSelector, false) ||\r\n isIgnored(n, this.mirror) ||\r\n !isSerialized(n, this.mirror)) {\r\n return;\r\n }\r\n if (this.addedSet.has(n)) {\r\n deepDelete(this.addedSet, n);\r\n this.droppedSet.add(n);\r\n }\r\n else if (this.addedSet.has(m.target) && nodeId === -1) ;\r\n else if (isAncestorRemoved(m.target, this.mirror)) ;\r\n else if (this.movedSet.has(n) &&\r\n this.movedMap[moveKey(nodeId, parentId)]) {\r\n deepDelete(this.movedSet, n);\r\n }\r\n else {\r\n this.removes.push({\r\n parentId,\r\n id: nodeId,\r\n isShadow: isShadowRoot(m.target) && isNativeShadowDom(m.target)\r\n ? true\r\n : undefined,\r\n });\r\n }\r\n this.mapRemoves.push(n);\r\n });\r\n break;\r\n }\r\n }\r\n };\r\n this.genAdds = (n, target) => {\r\n if (this.processedNodeManager.inOtherBuffer(n, this))\r\n return;\r\n if (this.addedSet.has(n) || this.movedSet.has(n))\r\n return;\r\n if (this.mirror.hasNode(n)) {\r\n if (isIgnored(n, this.mirror)) {\r\n return;\r\n }\r\n this.movedSet.add(n);\r\n let targetId = null;\r\n if (target && this.mirror.hasNode(target)) {\r\n targetId = this.mirror.getId(target);\r\n }\r\n if (targetId && targetId !== -1) {\r\n this.movedMap[moveKey(this.mirror.getId(n), targetId)] = true;\r\n }\r\n }\r\n else {\r\n this.addedSet.add(n);\r\n this.droppedSet.delete(n);\r\n }\r\n if (!isBlocked(n, this.blockClass, this.blockSelector, false)) {\r\n n.childNodes.forEach((childN) => this.genAdds(childN));\r\n if (hasShadowRoot(n)) {\r\n n.shadowRoot.childNodes.forEach((childN) => {\r\n this.processedNodeManager.add(childN, this);\r\n this.genAdds(childN, n);\r\n });\r\n }\r\n }\r\n };\r\n }\r\n init(options) {\r\n [\r\n 'mutationCb',\r\n 'blockClass',\r\n 'blockSelector',\r\n 'maskTextClass',\r\n 'maskTextSelector',\r\n 'inlineStylesheet',\r\n 'maskInputOptions',\r\n 'maskTextFn',\r\n 'maskInputFn',\r\n 'keepIframeSrcFn',\r\n 'recordCanvas',\r\n 'inlineImages',\r\n 'slimDOMOptions',\r\n 'dataURLOptions',\r\n 'doc',\r\n 'mirror',\r\n 'iframeManager',\r\n 'stylesheetManager',\r\n 'shadowDomManager',\r\n 'canvasManager',\r\n 'processedNodeManager',\r\n ].forEach((key) => {\r\n this[key] = options[key];\r\n });\r\n }\r\n freeze() {\r\n this.frozen = true;\r\n this.canvasManager.freeze();\r\n }\r\n unfreeze() {\r\n this.frozen = false;\r\n this.canvasManager.unfreeze();\r\n this.emit();\r\n }\r\n isFrozen() {\r\n return this.frozen;\r\n }\r\n lock() {\r\n this.locked = true;\r\n this.canvasManager.lock();\r\n }\r\n unlock() {\r\n this.locked = false;\r\n this.canvasManager.unlock();\r\n this.emit();\r\n }\r\n reset() {\r\n this.shadowDomManager.reset();\r\n this.canvasManager.reset();\r\n }\r\n}\r\nfunction deepDelete(addsSet, n) {\r\n addsSet.delete(n);\r\n n.childNodes.forEach((childN) => deepDelete(addsSet, childN));\r\n}\r\nfunction isParentRemoved(removes, n, mirror) {\r\n if (removes.length === 0)\r\n return false;\r\n return _isParentRemoved(removes, n, mirror);\r\n}\r\nfunction _isParentRemoved(removes, n, mirror) {\r\n const { parentNode } = n;\r\n if (!parentNode) {\r\n return false;\r\n }\r\n const parentId = mirror.getId(parentNode);\r\n if (removes.some((r) => r.id === parentId)) {\r\n return true;\r\n }\r\n return _isParentRemoved(removes, parentNode, mirror);\r\n}\r\nfunction isAncestorInSet(set, n) {\r\n if (set.size === 0)\r\n return false;\r\n return _isAncestorInSet(set, n);\r\n}\r\nfunction _isAncestorInSet(set, n) {\r\n const { parentNode } = n;\r\n if (!parentNode) {\r\n return false;\r\n }\r\n if (set.has(parentNode)) {\r\n return true;\r\n }\r\n return _isAncestorInSet(set, parentNode);\r\n}\n\nlet errorHandler;\r\nfunction registerErrorHandler(handler) {\r\n errorHandler = handler;\r\n}\r\nfunction unregisterErrorHandler() {\r\n errorHandler = undefined;\r\n}\r\nconst callbackWrapper = (cb) => {\r\n if (!errorHandler) {\r\n return cb;\r\n }\r\n const rrwebWrapped = ((...rest) => {\r\n try {\r\n return cb(...rest);\r\n }\r\n catch (error) {\r\n if (errorHandler && errorHandler(error) === true) {\r\n return;\r\n }\r\n throw error;\r\n }\r\n });\r\n return rrwebWrapped;\r\n};\n\nconst mutationBuffers = [];\r\nfunction getEventTarget(event) {\r\n try {\r\n if ('composedPath' in event) {\r\n const path = event.composedPath();\r\n if (path.length) {\r\n return path[0];\r\n }\r\n }\r\n else if ('path' in event && event.path.length) {\r\n return event.path[0];\r\n }\r\n }\r\n catch (_a) {\r\n }\r\n return event && event.target;\r\n}\r\nfunction initMutationObserver(options, rootEl) {\r\n var _a, _b;\r\n const mutationBuffer = new MutationBuffer();\r\n mutationBuffers.push(mutationBuffer);\r\n mutationBuffer.init(options);\r\n let mutationObserverCtor = window.MutationObserver ||\r\n window.__rrMutationObserver;\r\n const angularZoneSymbol = (_b = (_a = window === null || window === void 0 ? void 0 : window.Zone) === null || _a === void 0 ? void 0 : _a.__symbol__) === null || _b === void 0 ? void 0 : _b.call(_a, 'MutationObserver');\r\n if (angularZoneSymbol &&\r\n window[angularZoneSymbol]) {\r\n mutationObserverCtor = window[angularZoneSymbol];\r\n }\r\n const observer = new mutationObserverCtor(callbackWrapper(mutationBuffer.processMutations.bind(mutationBuffer)));\r\n observer.observe(rootEl, {\r\n attributes: true,\r\n attributeOldValue: true,\r\n characterData: true,\r\n characterDataOldValue: true,\r\n childList: true,\r\n subtree: true,\r\n });\r\n return observer;\r\n}\r\nfunction initMoveObserver({ mousemoveCb, sampling, doc, mirror, }) {\r\n if (sampling.mousemove === false) {\r\n return () => {\r\n };\r\n }\r\n const threshold = typeof sampling.mousemove === 'number' ? sampling.mousemove : 50;\r\n const callbackThreshold = typeof sampling.mousemoveCallback === 'number'\r\n ? sampling.mousemoveCallback\r\n : 500;\r\n let positions = [];\r\n let timeBaseline;\r\n const wrappedCb = throttle(callbackWrapper((source) => {\r\n const totalOffset = Date.now() - timeBaseline;\r\n mousemoveCb(positions.map((p) => {\r\n p.timeOffset -= totalOffset;\r\n return p;\r\n }), source);\r\n positions = [];\r\n timeBaseline = null;\r\n }), callbackThreshold);\r\n const updatePosition = callbackWrapper(throttle(callbackWrapper((evt) => {\r\n const target = getEventTarget(evt);\r\n const { clientX, clientY } = legacy_isTouchEvent(evt)\r\n ? evt.changedTouches[0]\r\n : evt;\r\n if (!timeBaseline) {\r\n timeBaseline = nowTimestamp();\r\n }\r\n positions.push({\r\n x: clientX,\r\n y: clientY,\r\n id: mirror.getId(target),\r\n timeOffset: nowTimestamp() - timeBaseline,\r\n });\r\n wrappedCb(typeof DragEvent !== 'undefined' && evt instanceof DragEvent\r\n ? IncrementalSource$1.Drag\r\n : evt instanceof MouseEvent\r\n ? IncrementalSource$1.MouseMove\r\n : IncrementalSource$1.TouchMove);\r\n }), threshold, {\r\n trailing: false,\r\n }));\r\n const handlers = [\r\n on('mousemove', updatePosition, doc),\r\n on('touchmove', updatePosition, doc),\r\n on('drag', updatePosition, doc),\r\n ];\r\n return callbackWrapper(() => {\r\n handlers.forEach((h) => h());\r\n });\r\n}\r\nfunction initMouseInteractionObserver({ mouseInteractionCb, doc, mirror, blockClass, blockSelector, sampling, }) {\r\n if (sampling.mouseInteraction === false) {\r\n return () => {\r\n };\r\n }\r\n const disableMap = sampling.mouseInteraction === true ||\r\n sampling.mouseInteraction === undefined\r\n ? {}\r\n : sampling.mouseInteraction;\r\n const handlers = [];\r\n let currentPointerType = null;\r\n const getHandler = (eventKey) => {\r\n return (event) => {\r\n const target = getEventTarget(event);\r\n if (isBlocked(target, blockClass, blockSelector, true)) {\r\n return;\r\n }\r\n let pointerType = null;\r\n let thisEventKey = eventKey;\r\n if ('pointerType' in event) {\r\n switch (event.pointerType) {\r\n case 'mouse':\r\n pointerType = PointerTypes.Mouse;\r\n break;\r\n case 'touch':\r\n pointerType = PointerTypes.Touch;\r\n break;\r\n case 'pen':\r\n pointerType = PointerTypes.Pen;\r\n break;\r\n }\r\n if (pointerType === PointerTypes.Touch) {\r\n if (MouseInteractions[eventKey] === MouseInteractions.MouseDown) {\r\n thisEventKey = 'TouchStart';\r\n }\r\n else if (MouseInteractions[eventKey] === MouseInteractions.MouseUp) {\r\n thisEventKey = 'TouchEnd';\r\n }\r\n }\r\n else if (pointerType === PointerTypes.Pen) ;\r\n }\r\n else if (legacy_isTouchEvent(event)) {\r\n pointerType = PointerTypes.Touch;\r\n }\r\n if (pointerType !== null) {\r\n currentPointerType = pointerType;\r\n if ((thisEventKey.startsWith('Touch') &&\r\n pointerType === PointerTypes.Touch) ||\r\n (thisEventKey.startsWith('Mouse') &&\r\n pointerType === PointerTypes.Mouse)) {\r\n pointerType = null;\r\n }\r\n }\r\n else if (MouseInteractions[eventKey] === MouseInteractions.Click) {\r\n pointerType = currentPointerType;\r\n currentPointerType = null;\r\n }\r\n const e = legacy_isTouchEvent(event) ? event.changedTouches[0] : event;\r\n if (!e) {\r\n return;\r\n }\r\n const id = mirror.getId(target);\r\n const { clientX, clientY } = e;\r\n callbackWrapper(mouseInteractionCb)(Object.assign({ type: MouseInteractions[thisEventKey], id, x: clientX, y: clientY }, (pointerType !== null && { pointerType })));\r\n };\r\n };\r\n Object.keys(MouseInteractions)\r\n .filter((key) => Number.isNaN(Number(key)) &&\r\n !key.endsWith('_Departed') &&\r\n disableMap[key] !== false)\r\n .forEach((eventKey) => {\r\n let eventName = toLowerCase(eventKey);\r\n const handler = getHandler(eventKey);\r\n if (window.PointerEvent) {\r\n switch (MouseInteractions[eventKey]) {\r\n case MouseInteractions.MouseDown:\r\n case MouseInteractions.MouseUp:\r\n eventName = eventName.replace('mouse', 'pointer');\r\n break;\r\n case MouseInteractions.TouchStart:\r\n case MouseInteractions.TouchEnd:\r\n return;\r\n }\r\n }\r\n handlers.push(on(eventName, handler, doc));\r\n });\r\n return callbackWrapper(() => {\r\n handlers.forEach((h) => h());\r\n });\r\n}\r\nfunction initScrollObserver({ scrollCb, doc, mirror, blockClass, blockSelector, sampling, }) {\r\n const updatePosition = callbackWrapper(throttle(callbackWrapper((evt) => {\r\n const target = getEventTarget(evt);\r\n if (!target ||\r\n isBlocked(target, blockClass, blockSelector, true)) {\r\n return;\r\n }\r\n const id = mirror.getId(target);\r\n if (target === doc && doc.defaultView) {\r\n const scrollLeftTop = getWindowScroll(doc.defaultView);\r\n scrollCb({\r\n id,\r\n x: scrollLeftTop.left,\r\n y: scrollLeftTop.top,\r\n });\r\n }\r\n else {\r\n scrollCb({\r\n id,\r\n x: target.scrollLeft,\r\n y: target.scrollTop,\r\n });\r\n }\r\n }), sampling.scroll || 100));\r\n return on('scroll', updatePosition, doc);\r\n}\r\nfunction initViewportResizeObserver({ viewportResizeCb }, { win }) {\r\n let lastH = -1;\r\n let lastW = -1;\r\n const updateDimension = callbackWrapper(throttle(callbackWrapper(() => {\r\n const height = getWindowHeight();\r\n const width = getWindowWidth();\r\n if (lastH !== height || lastW !== width) {\r\n viewportResizeCb({\r\n width: Number(width),\r\n height: Number(height),\r\n });\r\n lastH = height;\r\n lastW = width;\r\n }\r\n }), 200));\r\n return on('resize', updateDimension, win);\r\n}\r\nconst INPUT_TAGS = ['INPUT', 'TEXTAREA', 'SELECT'];\r\nconst lastInputValueMap = new WeakMap();\r\nfunction initInputObserver({ inputCb, doc, mirror, blockClass, blockSelector, ignoreClass, ignoreSelector, maskInputOptions, maskInputFn, sampling, userTriggeredOnInput, }) {\r\n function eventHandler(event) {\r\n let target = getEventTarget(event);\r\n const userTriggered = event.isTrusted;\r\n const tagName = target && target.tagName;\r\n if (target && tagName === 'OPTION') {\r\n target = target.parentElement;\r\n }\r\n if (!target ||\r\n !tagName ||\r\n INPUT_TAGS.indexOf(tagName) < 0 ||\r\n isBlocked(target, blockClass, blockSelector, true)) {\r\n return;\r\n }\r\n if (target.classList.contains(ignoreClass) ||\r\n (ignoreSelector && target.matches(ignoreSelector))) {\r\n return;\r\n }\r\n let text = target.value;\r\n let isChecked = false;\r\n const type = getInputType(target) || '';\r\n if (type === 'radio' || type === 'checkbox') {\r\n isChecked = target.checked;\r\n }\r\n else if (maskInputOptions[tagName.toLowerCase()] ||\r\n maskInputOptions[type]) {\r\n text = maskInputValue({\r\n element: target,\r\n maskInputOptions,\r\n tagName,\r\n type,\r\n value: text,\r\n maskInputFn,\r\n });\r\n }\r\n cbWithDedup(target, userTriggeredOnInput\r\n ? { text, isChecked, userTriggered }\r\n : { text, isChecked });\r\n const name = target.name;\r\n if (type === 'radio' && name && isChecked) {\r\n doc\r\n .querySelectorAll(`input[type=\"radio\"][name=\"${name}\"]`)\r\n .forEach((el) => {\r\n if (el !== target) {\r\n const text = el.value;\r\n cbWithDedup(el, userTriggeredOnInput\r\n ? { text, isChecked: !isChecked, userTriggered: false }\r\n : { text, isChecked: !isChecked });\r\n }\r\n });\r\n }\r\n }\r\n function cbWithDedup(target, v) {\r\n const lastInputValue = lastInputValueMap.get(target);\r\n if (!lastInputValue ||\r\n lastInputValue.text !== v.text ||\r\n lastInputValue.isChecked !== v.isChecked) {\r\n lastInputValueMap.set(target, v);\r\n const id = mirror.getId(target);\r\n callbackWrapper(inputCb)(Object.assign(Object.assign({}, v), { id }));\r\n }\r\n }\r\n const events = sampling.input === 'last' ? ['change'] : ['input', 'change'];\r\n const handlers = events.map((eventName) => on(eventName, callbackWrapper(eventHandler), doc));\r\n const currentWindow = doc.defaultView;\r\n if (!currentWindow) {\r\n return () => {\r\n handlers.forEach((h) => h());\r\n };\r\n }\r\n const propertyDescriptor = currentWindow.Object.getOwnPropertyDescriptor(currentWindow.HTMLInputElement.prototype, 'value');\r\n const hookProperties = [\r\n [currentWindow.HTMLInputElement.prototype, 'value'],\r\n [currentWindow.HTMLInputElement.prototype, 'checked'],\r\n [currentWindow.HTMLSelectElement.prototype, 'value'],\r\n [currentWindow.HTMLTextAreaElement.prototype, 'value'],\r\n [currentWindow.HTMLSelectElement.prototype, 'selectedIndex'],\r\n [currentWindow.HTMLOptionElement.prototype, 'selected'],\r\n ];\r\n if (propertyDescriptor && propertyDescriptor.set) {\r\n handlers.push(...hookProperties.map((p) => hookSetter(p[0], p[1], {\r\n set() {\r\n callbackWrapper(eventHandler)({\r\n target: this,\r\n isTrusted: false,\r\n });\r\n },\r\n }, false, currentWindow)));\r\n }\r\n return callbackWrapper(() => {\r\n handlers.forEach((h) => h());\r\n });\r\n}\r\nfunction getNestedCSSRulePositions(rule) {\r\n const positions = [];\r\n function recurse(childRule, pos) {\r\n if ((hasNestedCSSRule('CSSGroupingRule') &&\r\n childRule.parentRule instanceof CSSGroupingRule) ||\r\n (hasNestedCSSRule('CSSMediaRule') &&\r\n childRule.parentRule instanceof CSSMediaRule) ||\r\n (hasNestedCSSRule('CSSSupportsRule') &&\r\n childRule.parentRule instanceof CSSSupportsRule) ||\r\n (hasNestedCSSRule('CSSConditionRule') &&\r\n childRule.parentRule instanceof CSSConditionRule)) {\r\n const rules = Array.from(childRule.parentRule.cssRules);\r\n const index = rules.indexOf(childRule);\r\n pos.unshift(index);\r\n }\r\n else if (childRule.parentStyleSheet) {\r\n const rules = Array.from(childRule.parentStyleSheet.cssRules);\r\n const index = rules.indexOf(childRule);\r\n pos.unshift(index);\r\n }\r\n return pos;\r\n }\r\n return recurse(rule, positions);\r\n}\r\nfunction getIdAndStyleId(sheet, mirror, styleMirror) {\r\n let id, styleId;\r\n if (!sheet)\r\n return {};\r\n if (sheet.ownerNode)\r\n id = mirror.getId(sheet.ownerNode);\r\n else\r\n styleId = styleMirror.getId(sheet);\r\n return {\r\n styleId,\r\n id,\r\n };\r\n}\r\nfunction initStyleSheetObserver({ styleSheetRuleCb, mirror, stylesheetManager }, { win }) {\r\n if (!win.CSSStyleSheet || !win.CSSStyleSheet.prototype) {\r\n return () => {\r\n };\r\n }\r\n const insertRule = win.CSSStyleSheet.prototype.insertRule;\r\n win.CSSStyleSheet.prototype.insertRule = new Proxy(insertRule, {\r\n apply: callbackWrapper((target, thisArg, argumentsList) => {\r\n const [rule, index] = argumentsList;\r\n const { id, styleId } = getIdAndStyleId(thisArg, mirror, stylesheetManager.styleMirror);\r\n if ((id && id !== -1) || (styleId && styleId !== -1)) {\r\n styleSheetRuleCb({\r\n id,\r\n styleId,\r\n adds: [{ rule, index }],\r\n });\r\n }\r\n return target.apply(thisArg, argumentsList);\r\n }),\r\n });\r\n const deleteRule = win.CSSStyleSheet.prototype.deleteRule;\r\n win.CSSStyleSheet.prototype.deleteRule = new Proxy(deleteRule, {\r\n apply: callbackWrapper((target, thisArg, argumentsList) => {\r\n const [index] = argumentsList;\r\n const { id, styleId } = getIdAndStyleId(thisArg, mirror, stylesheetManager.styleMirror);\r\n if ((id && id !== -1) || (styleId && styleId !== -1)) {\r\n styleSheetRuleCb({\r\n id,\r\n styleId,\r\n removes: [{ index }],\r\n });\r\n }\r\n return target.apply(thisArg, argumentsList);\r\n }),\r\n });\r\n let replace;\r\n if (win.CSSStyleSheet.prototype.replace) {\r\n replace = win.CSSStyleSheet.prototype.replace;\r\n win.CSSStyleSheet.prototype.replace = new Proxy(replace, {\r\n apply: callbackWrapper((target, thisArg, argumentsList) => {\r\n const [text] = argumentsList;\r\n const { id, styleId } = getIdAndStyleId(thisArg, mirror, stylesheetManager.styleMirror);\r\n if ((id && id !== -1) || (styleId && styleId !== -1)) {\r\n styleSheetRuleCb({\r\n id,\r\n styleId,\r\n replace: text,\r\n });\r\n }\r\n return target.apply(thisArg, argumentsList);\r\n }),\r\n });\r\n }\r\n let replaceSync;\r\n if (win.CSSStyleSheet.prototype.replaceSync) {\r\n replaceSync = win.CSSStyleSheet.prototype.replaceSync;\r\n win.CSSStyleSheet.prototype.replaceSync = new Proxy(replaceSync, {\r\n apply: callbackWrapper((target, thisArg, argumentsList) => {\r\n const [text] = argumentsList;\r\n const { id, styleId } = getIdAndStyleId(thisArg, mirror, stylesheetManager.styleMirror);\r\n if ((id && id !== -1) || (styleId && styleId !== -1)) {\r\n styleSheetRuleCb({\r\n id,\r\n styleId,\r\n replaceSync: text,\r\n });\r\n }\r\n return target.apply(thisArg, argumentsList);\r\n }),\r\n });\r\n }\r\n const supportedNestedCSSRuleTypes = {};\r\n if (canMonkeyPatchNestedCSSRule('CSSGroupingRule')) {\r\n supportedNestedCSSRuleTypes.CSSGroupingRule = win.CSSGroupingRule;\r\n }\r\n else {\r\n if (canMonkeyPatchNestedCSSRule('CSSMediaRule')) {\r\n supportedNestedCSSRuleTypes.CSSMediaRule = win.CSSMediaRule;\r\n }\r\n if (canMonkeyPatchNestedCSSRule('CSSConditionRule')) {\r\n supportedNestedCSSRuleTypes.CSSConditionRule = win.CSSConditionRule;\r\n }\r\n if (canMonkeyPatchNestedCSSRule('CSSSupportsRule')) {\r\n supportedNestedCSSRuleTypes.CSSSupportsRule = win.CSSSupportsRule;\r\n }\r\n }\r\n const unmodifiedFunctions = {};\r\n Object.entries(supportedNestedCSSRuleTypes).forEach(([typeKey, type]) => {\r\n unmodifiedFunctions[typeKey] = {\r\n insertRule: type.prototype.insertRule,\r\n deleteRule: type.prototype.deleteRule,\r\n };\r\n type.prototype.insertRule = new Proxy(unmodifiedFunctions[typeKey].insertRule, {\r\n apply: callbackWrapper((target, thisArg, argumentsList) => {\r\n const [rule, index] = argumentsList;\r\n const { id, styleId } = getIdAndStyleId(thisArg.parentStyleSheet, mirror, stylesheetManager.styleMirror);\r\n if ((id && id !== -1) || (styleId && styleId !== -1)) {\r\n styleSheetRuleCb({\r\n id,\r\n styleId,\r\n adds: [\r\n {\r\n rule,\r\n index: [\r\n ...getNestedCSSRulePositions(thisArg),\r\n index || 0,\r\n ],\r\n },\r\n ],\r\n });\r\n }\r\n return target.apply(thisArg, argumentsList);\r\n }),\r\n });\r\n type.prototype.deleteRule = new Proxy(unmodifiedFunctions[typeKey].deleteRule, {\r\n apply: callbackWrapper((target, thisArg, argumentsList) => {\r\n const [index] = argumentsList;\r\n const { id, styleId } = getIdAndStyleId(thisArg.parentStyleSheet, mirror, stylesheetManager.styleMirror);\r\n if ((id && id !== -1) || (styleId && styleId !== -1)) {\r\n styleSheetRuleCb({\r\n id,\r\n styleId,\r\n removes: [\r\n { index: [...getNestedCSSRulePositions(thisArg), index] },\r\n ],\r\n });\r\n }\r\n return target.apply(thisArg, argumentsList);\r\n }),\r\n });\r\n });\r\n return callbackWrapper(() => {\r\n win.CSSStyleSheet.prototype.insertRule = insertRule;\r\n win.CSSStyleSheet.prototype.deleteRule = deleteRule;\r\n replace && (win.CSSStyleSheet.prototype.replace = replace);\r\n replaceSync && (win.CSSStyleSheet.prototype.replaceSync = replaceSync);\r\n Object.entries(supportedNestedCSSRuleTypes).forEach(([typeKey, type]) => {\r\n type.prototype.insertRule = unmodifiedFunctions[typeKey].insertRule;\r\n type.prototype.deleteRule = unmodifiedFunctions[typeKey].deleteRule;\r\n });\r\n });\r\n}\r\nfunction initAdoptedStyleSheetObserver({ mirror, stylesheetManager, }, host) {\r\n var _a, _b, _c;\r\n let hostId = null;\r\n if (host.nodeName === '#document')\r\n hostId = mirror.getId(host);\r\n else\r\n hostId = mirror.getId(host.host);\r\n const patchTarget = host.nodeName === '#document'\r\n ? (_a = host.defaultView) === null || _a === void 0 ? void 0 : _a.Document\r\n : (_c = (_b = host.ownerDocument) === null || _b === void 0 ? void 0 : _b.defaultView) === null || _c === void 0 ? void 0 : _c.ShadowRoot;\r\n const originalPropertyDescriptor = (patchTarget === null || patchTarget === void 0 ? void 0 : patchTarget.prototype)\r\n ? Object.getOwnPropertyDescriptor(patchTarget === null || patchTarget === void 0 ? void 0 : patchTarget.prototype, 'adoptedStyleSheets')\r\n : undefined;\r\n if (hostId === null ||\r\n hostId === -1 ||\r\n !patchTarget ||\r\n !originalPropertyDescriptor)\r\n return () => {\r\n };\r\n Object.defineProperty(host, 'adoptedStyleSheets', {\r\n configurable: originalPropertyDescriptor.configurable,\r\n enumerable: originalPropertyDescriptor.enumerable,\r\n get() {\r\n var _a;\r\n return (_a = originalPropertyDescriptor.get) === null || _a === void 0 ? void 0 : _a.call(this);\r\n },\r\n set(sheets) {\r\n var _a;\r\n const result = (_a = originalPropertyDescriptor.set) === null || _a === void 0 ? void 0 : _a.call(this, sheets);\r\n if (hostId !== null && hostId !== -1) {\r\n try {\r\n stylesheetManager.adoptStyleSheets(sheets, hostId);\r\n }\r\n catch (e) {\r\n }\r\n }\r\n return result;\r\n },\r\n });\r\n return callbackWrapper(() => {\r\n Object.defineProperty(host, 'adoptedStyleSheets', {\r\n configurable: originalPropertyDescriptor.configurable,\r\n enumerable: originalPropertyDescriptor.enumerable,\r\n get: originalPropertyDescriptor.get,\r\n set: originalPropertyDescriptor.set,\r\n });\r\n });\r\n}\r\nfunction initStyleDeclarationObserver({ styleDeclarationCb, mirror, ignoreCSSAttributes, stylesheetManager, }, { win }) {\r\n const setProperty = win.CSSStyleDeclaration.prototype.setProperty;\r\n win.CSSStyleDeclaration.prototype.setProperty = new Proxy(setProperty, {\r\n apply: callbackWrapper((target, thisArg, argumentsList) => {\r\n var _a;\r\n const [property, value, priority] = argumentsList;\r\n if (ignoreCSSAttributes.has(property)) {\r\n return setProperty.apply(thisArg, [property, value, priority]);\r\n }\r\n const { id, styleId } = getIdAndStyleId((_a = thisArg.parentRule) === null || _a === void 0 ? void 0 : _a.parentStyleSheet, mirror, stylesheetManager.styleMirror);\r\n if ((id && id !== -1) || (styleId && styleId !== -1)) {\r\n styleDeclarationCb({\r\n id,\r\n styleId,\r\n set: {\r\n property,\r\n value,\r\n priority,\r\n },\r\n index: getNestedCSSRulePositions(thisArg.parentRule),\r\n });\r\n }\r\n return target.apply(thisArg, argumentsList);\r\n }),\r\n });\r\n const removeProperty = win.CSSStyleDeclaration.prototype.removeProperty;\r\n win.CSSStyleDeclaration.prototype.removeProperty = new Proxy(removeProperty, {\r\n apply: callbackWrapper((target, thisArg, argumentsList) => {\r\n var _a;\r\n const [property] = argumentsList;\r\n if (ignoreCSSAttributes.has(property)) {\r\n return removeProperty.apply(thisArg, [property]);\r\n }\r\n const { id, styleId } = getIdAndStyleId((_a = thisArg.parentRule) === null || _a === void 0 ? void 0 : _a.parentStyleSheet, mirror, stylesheetManager.styleMirror);\r\n if ((id && id !== -1) || (styleId && styleId !== -1)) {\r\n styleDeclarationCb({\r\n id,\r\n styleId,\r\n remove: {\r\n property,\r\n },\r\n index: getNestedCSSRulePositions(thisArg.parentRule),\r\n });\r\n }\r\n return target.apply(thisArg, argumentsList);\r\n }),\r\n });\r\n return callbackWrapper(() => {\r\n win.CSSStyleDeclaration.prototype.setProperty = setProperty;\r\n win.CSSStyleDeclaration.prototype.removeProperty = removeProperty;\r\n });\r\n}\r\nfunction initMediaInteractionObserver({ mediaInteractionCb, blockClass, blockSelector, mirror, sampling, doc, }) {\r\n const handler = callbackWrapper((type) => throttle(callbackWrapper((event) => {\r\n const target = getEventTarget(event);\r\n if (!target ||\r\n isBlocked(target, blockClass, blockSelector, true)) {\r\n return;\r\n }\r\n const { currentTime, volume, muted, playbackRate, loop } = target;\r\n mediaInteractionCb({\r\n type,\r\n id: mirror.getId(target),\r\n currentTime,\r\n volume,\r\n muted,\r\n playbackRate,\r\n loop,\r\n });\r\n }), sampling.media || 500));\r\n const handlers = [\r\n on('play', handler(0), doc),\r\n on('pause', handler(1), doc),\r\n on('seeked', handler(2), doc),\r\n on('volumechange', handler(3), doc),\r\n on('ratechange', handler(4), doc),\r\n ];\r\n return callbackWrapper(() => {\r\n handlers.forEach((h) => h());\r\n });\r\n}\r\nfunction initFontObserver({ fontCb, doc }) {\r\n const win = doc.defaultView;\r\n if (!win) {\r\n return () => {\r\n };\r\n }\r\n const handlers = [];\r\n const fontMap = new WeakMap();\r\n const originalFontFace = win.FontFace;\r\n win.FontFace = function FontFace(family, source, descriptors) {\r\n const fontFace = new originalFontFace(family, source, descriptors);\r\n fontMap.set(fontFace, {\r\n family,\r\n buffer: typeof source !== 'string',\r\n descriptors,\r\n fontSource: typeof source === 'string'\r\n ? source\r\n : JSON.stringify(Array.from(new Uint8Array(source))),\r\n });\r\n return fontFace;\r\n };\r\n const restoreHandler = patch(doc.fonts, 'add', function (original) {\r\n return function (fontFace) {\r\n setTimeout(callbackWrapper(() => {\r\n const p = fontMap.get(fontFace);\r\n if (p) {\r\n fontCb(p);\r\n fontMap.delete(fontFace);\r\n }\r\n }), 0);\r\n return original.apply(this, [fontFace]);\r\n };\r\n });\r\n handlers.push(() => {\r\n win.FontFace = originalFontFace;\r\n });\r\n handlers.push(restoreHandler);\r\n return callbackWrapper(() => {\r\n handlers.forEach((h) => h());\r\n });\r\n}\r\nfunction initSelectionObserver(param) {\r\n const { doc, mirror, blockClass, blockSelector, selectionCb } = param;\r\n let collapsed = true;\r\n const updateSelection = callbackWrapper(() => {\r\n const selection = doc.getSelection();\r\n if (!selection || (collapsed && (selection === null || selection === void 0 ? void 0 : selection.isCollapsed)))\r\n return;\r\n collapsed = selection.isCollapsed || false;\r\n const ranges = [];\r\n const count = selection.rangeCount || 0;\r\n for (let i = 0; i < count; i++) {\r\n const range = selection.getRangeAt(i);\r\n const { startContainer, startOffset, endContainer, endOffset } = range;\r\n const blocked = isBlocked(startContainer, blockClass, blockSelector, true) ||\r\n isBlocked(endContainer, blockClass, blockSelector, true);\r\n if (blocked)\r\n continue;\r\n ranges.push({\r\n start: mirror.getId(startContainer),\r\n startOffset,\r\n end: mirror.getId(endContainer),\r\n endOffset,\r\n });\r\n }\r\n selectionCb({ ranges });\r\n });\r\n updateSelection();\r\n return on('selectionchange', updateSelection);\r\n}\r\nfunction initCustomElementObserver({ doc, customElementCb, }) {\r\n const win = doc.defaultView;\r\n if (!win || !win.customElements)\r\n return () => { };\r\n const restoreHandler = patch(win.customElements, 'define', function (original) {\r\n return function (name, constructor, options) {\r\n try {\r\n customElementCb({\r\n define: {\r\n name,\r\n },\r\n });\r\n }\r\n catch (e) {\r\n console.warn(`Custom element callback failed for ${name}`);\r\n }\r\n return original.apply(this, [name, constructor, options]);\r\n };\r\n });\r\n return restoreHandler;\r\n}\r\nfunction mergeHooks(o, hooks) {\r\n const { mutationCb, mousemoveCb, mouseInteractionCb, scrollCb, viewportResizeCb, inputCb, mediaInteractionCb, styleSheetRuleCb, styleDeclarationCb, canvasMutationCb, fontCb, selectionCb, customElementCb, } = o;\r\n o.mutationCb = (...p) => {\r\n if (hooks.mutation) {\r\n hooks.mutation(...p);\r\n }\r\n mutationCb(...p);\r\n };\r\n o.mousemoveCb = (...p) => {\r\n if (hooks.mousemove) {\r\n hooks.mousemove(...p);\r\n }\r\n mousemoveCb(...p);\r\n };\r\n o.mouseInteractionCb = (...p) => {\r\n if (hooks.mouseInteraction) {\r\n hooks.mouseInteraction(...p);\r\n }\r\n mouseInteractionCb(...p);\r\n };\r\n o.scrollCb = (...p) => {\r\n if (hooks.scroll) {\r\n hooks.scroll(...p);\r\n }\r\n scrollCb(...p);\r\n };\r\n o.viewportResizeCb = (...p) => {\r\n if (hooks.viewportResize) {\r\n hooks.viewportResize(...p);\r\n }\r\n viewportResizeCb(...p);\r\n };\r\n o.inputCb = (...p) => {\r\n if (hooks.input) {\r\n hooks.input(...p);\r\n }\r\n inputCb(...p);\r\n };\r\n o.mediaInteractionCb = (...p) => {\r\n if (hooks.mediaInteaction) {\r\n hooks.mediaInteaction(...p);\r\n }\r\n mediaInteractionCb(...p);\r\n };\r\n o.styleSheetRuleCb = (...p) => {\r\n if (hooks.styleSheetRule) {\r\n hooks.styleSheetRule(...p);\r\n }\r\n styleSheetRuleCb(...p);\r\n };\r\n o.styleDeclarationCb = (...p) => {\r\n if (hooks.styleDeclaration) {\r\n hooks.styleDeclaration(...p);\r\n }\r\n styleDeclarationCb(...p);\r\n };\r\n o.canvasMutationCb = (...p) => {\r\n if (hooks.canvasMutation) {\r\n hooks.canvasMutation(...p);\r\n }\r\n canvasMutationCb(...p);\r\n };\r\n o.fontCb = (...p) => {\r\n if (hooks.font) {\r\n hooks.font(...p);\r\n }\r\n fontCb(...p);\r\n };\r\n o.selectionCb = (...p) => {\r\n if (hooks.selection) {\r\n hooks.selection(...p);\r\n }\r\n selectionCb(...p);\r\n };\r\n o.customElementCb = (...c) => {\r\n if (hooks.customElement) {\r\n hooks.customElement(...c);\r\n }\r\n customElementCb(...c);\r\n };\r\n}\r\nfunction initObservers(o, hooks = {}) {\r\n const currentWindow = o.doc.defaultView;\r\n if (!currentWindow) {\r\n return () => {\r\n };\r\n }\r\n mergeHooks(o, hooks);\r\n let mutationObserver;\r\n if (o.recordDOM) {\r\n mutationObserver = initMutationObserver(o, o.doc);\r\n }\r\n const mousemoveHandler = initMoveObserver(o);\r\n const mouseInteractionHandler = initMouseInteractionObserver(o);\r\n const scrollHandler = initScrollObserver(o);\r\n const viewportResizeHandler = initViewportResizeObserver(o, {\r\n win: currentWindow,\r\n });\r\n const inputHandler = initInputObserver(o);\r\n const mediaInteractionHandler = initMediaInteractionObserver(o);\r\n let styleSheetObserver = () => { };\r\n let adoptedStyleSheetObserver = () => { };\r\n let styleDeclarationObserver = () => { };\r\n let fontObserver = () => { };\r\n if (o.recordDOM) {\r\n styleSheetObserver = initStyleSheetObserver(o, { win: currentWindow });\r\n adoptedStyleSheetObserver = initAdoptedStyleSheetObserver(o, o.doc);\r\n styleDeclarationObserver = initStyleDeclarationObserver(o, {\r\n win: currentWindow,\r\n });\r\n if (o.collectFonts) {\r\n fontObserver = initFontObserver(o);\r\n }\r\n }\r\n const selectionObserver = initSelectionObserver(o);\r\n const customElementObserver = initCustomElementObserver(o);\r\n const pluginHandlers = [];\r\n for (const plugin of o.plugins) {\r\n pluginHandlers.push(plugin.observer(plugin.callback, currentWindow, plugin.options));\r\n }\r\n return callbackWrapper(() => {\r\n mutationBuffers.forEach((b) => b.reset());\r\n mutationObserver === null || mutationObserver === void 0 ? void 0 : mutationObserver.disconnect();\r\n mousemoveHandler();\r\n mouseInteractionHandler();\r\n scrollHandler();\r\n viewportResizeHandler();\r\n inputHandler();\r\n mediaInteractionHandler();\r\n styleSheetObserver();\r\n adoptedStyleSheetObserver();\r\n styleDeclarationObserver();\r\n fontObserver();\r\n selectionObserver();\r\n customElementObserver();\r\n pluginHandlers.forEach((h) => h());\r\n });\r\n}\r\nfunction hasNestedCSSRule(prop) {\r\n return typeof window[prop] !== 'undefined';\r\n}\r\nfunction canMonkeyPatchNestedCSSRule(prop) {\r\n return Boolean(typeof window[prop] !== 'undefined' &&\r\n window[prop].prototype &&\r\n 'insertRule' in window[prop].prototype &&\r\n 'deleteRule' in window[prop].prototype);\r\n}\n\nclass CrossOriginIframeMirror {\r\n constructor(generateIdFn) {\r\n this.generateIdFn = generateIdFn;\r\n this.iframeIdToRemoteIdMap = new WeakMap();\r\n this.iframeRemoteIdToIdMap = new WeakMap();\r\n }\r\n getId(iframe, remoteId, idToRemoteMap, remoteToIdMap) {\r\n const idToRemoteIdMap = idToRemoteMap || this.getIdToRemoteIdMap(iframe);\r\n const remoteIdToIdMap = remoteToIdMap || this.getRemoteIdToIdMap(iframe);\r\n let id = idToRemoteIdMap.get(remoteId);\r\n if (!id) {\r\n id = this.generateIdFn();\r\n idToRemoteIdMap.set(remoteId, id);\r\n remoteIdToIdMap.set(id, remoteId);\r\n }\r\n return id;\r\n }\r\n getIds(iframe, remoteId) {\r\n const idToRemoteIdMap = this.getIdToRemoteIdMap(iframe);\r\n const remoteIdToIdMap = this.getRemoteIdToIdMap(iframe);\r\n return remoteId.map((id) => this.getId(iframe, id, idToRemoteIdMap, remoteIdToIdMap));\r\n }\r\n getRemoteId(iframe, id, map) {\r\n const remoteIdToIdMap = map || this.getRemoteIdToIdMap(iframe);\r\n if (typeof id !== 'number')\r\n return id;\r\n const remoteId = remoteIdToIdMap.get(id);\r\n if (!remoteId)\r\n return -1;\r\n return remoteId;\r\n }\r\n getRemoteIds(iframe, ids) {\r\n const remoteIdToIdMap = this.getRemoteIdToIdMap(iframe);\r\n return ids.map((id) => this.getRemoteId(iframe, id, remoteIdToIdMap));\r\n }\r\n reset(iframe) {\r\n if (!iframe) {\r\n this.iframeIdToRemoteIdMap = new WeakMap();\r\n this.iframeRemoteIdToIdMap = new WeakMap();\r\n return;\r\n }\r\n this.iframeIdToRemoteIdMap.delete(iframe);\r\n this.iframeRemoteIdToIdMap.delete(iframe);\r\n }\r\n getIdToRemoteIdMap(iframe) {\r\n let idToRemoteIdMap = this.iframeIdToRemoteIdMap.get(iframe);\r\n if (!idToRemoteIdMap) {\r\n idToRemoteIdMap = new Map();\r\n this.iframeIdToRemoteIdMap.set(iframe, idToRemoteIdMap);\r\n }\r\n return idToRemoteIdMap;\r\n }\r\n getRemoteIdToIdMap(iframe) {\r\n let remoteIdToIdMap = this.iframeRemoteIdToIdMap.get(iframe);\r\n if (!remoteIdToIdMap) {\r\n remoteIdToIdMap = new Map();\r\n this.iframeRemoteIdToIdMap.set(iframe, remoteIdToIdMap);\r\n }\r\n return remoteIdToIdMap;\r\n }\r\n}\n\nclass IframeManager {\r\n constructor(options) {\r\n this.iframes = new WeakMap();\r\n this.crossOriginIframeMap = new WeakMap();\r\n this.crossOriginIframeMirror = new CrossOriginIframeMirror(genId);\r\n this.crossOriginIframeRootIdMap = new WeakMap();\r\n this.mutationCb = options.mutationCb;\r\n this.wrappedEmit = options.wrappedEmit;\r\n this.stylesheetManager = options.stylesheetManager;\r\n this.recordCrossOriginIframes = options.recordCrossOriginIframes;\r\n this.crossOriginIframeStyleMirror = new CrossOriginIframeMirror(this.stylesheetManager.styleMirror.generateId.bind(this.stylesheetManager.styleMirror));\r\n this.mirror = options.mirror;\r\n if (this.recordCrossOriginIframes) {\r\n window.addEventListener('message', this.handleMessage.bind(this));\r\n }\r\n }\r\n addIframe(iframeEl) {\r\n this.iframes.set(iframeEl, true);\r\n if (iframeEl.contentWindow)\r\n this.crossOriginIframeMap.set(iframeEl.contentWindow, iframeEl);\r\n }\r\n addLoadListener(cb) {\r\n this.loadListener = cb;\r\n }\r\n attachIframe(iframeEl, childSn) {\r\n var _a;\r\n this.mutationCb({\r\n adds: [\r\n {\r\n parentId: this.mirror.getId(iframeEl),\r\n nextId: null,\r\n node: childSn,\r\n },\r\n ],\r\n removes: [],\r\n texts: [],\r\n attributes: [],\r\n isAttachIframe: true,\r\n });\r\n (_a = this.loadListener) === null || _a === void 0 ? void 0 : _a.call(this, iframeEl);\r\n if (iframeEl.contentDocument &&\r\n iframeEl.contentDocument.adoptedStyleSheets &&\r\n iframeEl.contentDocument.adoptedStyleSheets.length > 0)\r\n this.stylesheetManager.adoptStyleSheets(iframeEl.contentDocument.adoptedStyleSheets, this.mirror.getId(iframeEl.contentDocument));\r\n }\r\n handleMessage(message) {\r\n const crossOriginMessageEvent = message;\r\n if (crossOriginMessageEvent.data.type !== 'rrweb' ||\r\n crossOriginMessageEvent.origin !== crossOriginMessageEvent.data.origin)\r\n return;\r\n const iframeSourceWindow = message.source;\r\n if (!iframeSourceWindow)\r\n return;\r\n const iframeEl = this.crossOriginIframeMap.get(message.source);\r\n if (!iframeEl)\r\n return;\r\n const transformedEvent = this.transformCrossOriginEvent(iframeEl, crossOriginMessageEvent.data.event);\r\n if (transformedEvent)\r\n this.wrappedEmit(transformedEvent, crossOriginMessageEvent.data.isCheckout);\r\n }\r\n transformCrossOriginEvent(iframeEl, e) {\r\n var _a;\r\n switch (e.type) {\r\n case EventType$1.FullSnapshot: {\r\n this.crossOriginIframeMirror.reset(iframeEl);\r\n this.crossOriginIframeStyleMirror.reset(iframeEl);\r\n this.replaceIdOnNode(e.data.node, iframeEl);\r\n const rootId = e.data.node.id;\r\n this.crossOriginIframeRootIdMap.set(iframeEl, rootId);\r\n this.patchRootIdOnNode(e.data.node, rootId);\r\n return {\r\n timestamp: e.timestamp,\r\n type: EventType$1.IncrementalSnapshot,\r\n data: {\r\n source: IncrementalSource$1.Mutation,\r\n adds: [\r\n {\r\n parentId: this.mirror.getId(iframeEl),\r\n nextId: null,\r\n node: e.data.node,\r\n },\r\n ],\r\n removes: [],\r\n texts: [],\r\n attributes: [],\r\n isAttachIframe: true,\r\n },\r\n };\r\n }\r\n case EventType$1.Meta:\r\n case EventType$1.Load:\r\n case EventType$1.DomContentLoaded: {\r\n return false;\r\n }\r\n case EventType$1.Plugin: {\r\n return e;\r\n }\r\n case EventType$1.Custom: {\r\n this.replaceIds(e.data.payload, iframeEl, ['id', 'parentId', 'previousId', 'nextId']);\r\n return e;\r\n }\r\n case EventType$1.IncrementalSnapshot: {\r\n switch (e.data.source) {\r\n case IncrementalSource$1.Mutation: {\r\n e.data.adds.forEach((n) => {\r\n this.replaceIds(n, iframeEl, [\r\n 'parentId',\r\n 'nextId',\r\n 'previousId',\r\n ]);\r\n this.replaceIdOnNode(n.node, iframeEl);\r\n const rootId = this.crossOriginIframeRootIdMap.get(iframeEl);\r\n rootId && this.patchRootIdOnNode(n.node, rootId);\r\n });\r\n e.data.removes.forEach((n) => {\r\n this.replaceIds(n, iframeEl, ['parentId', 'id']);\r\n });\r\n e.data.attributes.forEach((n) => {\r\n this.replaceIds(n, iframeEl, ['id']);\r\n });\r\n e.data.texts.forEach((n) => {\r\n this.replaceIds(n, iframeEl, ['id']);\r\n });\r\n return e;\r\n }\r\n case IncrementalSource$1.Drag:\r\n case IncrementalSource$1.TouchMove:\r\n case IncrementalSource$1.MouseMove: {\r\n e.data.positions.forEach((p) => {\r\n this.replaceIds(p, iframeEl, ['id']);\r\n });\r\n return e;\r\n }\r\n case IncrementalSource$1.ViewportResize: {\r\n return false;\r\n }\r\n case IncrementalSource$1.MediaInteraction:\r\n case IncrementalSource$1.MouseInteraction:\r\n case IncrementalSource$1.Scroll:\r\n case IncrementalSource$1.CanvasMutation:\r\n case IncrementalSource$1.Input: {\r\n this.replaceIds(e.data, iframeEl, ['id']);\r\n return e;\r\n }\r\n case IncrementalSource$1.StyleSheetRule:\r\n case IncrementalSource$1.StyleDeclaration: {\r\n this.replaceIds(e.data, iframeEl, ['id']);\r\n this.replaceStyleIds(e.data, iframeEl, ['styleId']);\r\n return e;\r\n }\r\n case IncrementalSource$1.Font: {\r\n return e;\r\n }\r\n case IncrementalSource$1.Selection: {\r\n e.data.ranges.forEach((range) => {\r\n this.replaceIds(range, iframeEl, ['start', 'end']);\r\n });\r\n return e;\r\n }\r\n case IncrementalSource$1.AdoptedStyleSheet: {\r\n this.replaceIds(e.data, iframeEl, ['id']);\r\n this.replaceStyleIds(e.data, iframeEl, ['styleIds']);\r\n (_a = e.data.styles) === null || _a === void 0 ? void 0 : _a.forEach((style) => {\r\n this.replaceStyleIds(style, iframeEl, ['styleId']);\r\n });\r\n return e;\r\n }\r\n }\r\n }\r\n }\r\n return false;\r\n }\r\n replace(iframeMirror, obj, iframeEl, keys) {\r\n for (const key of keys) {\r\n if (!Array.isArray(obj[key]) && typeof obj[key] !== 'number')\r\n continue;\r\n if (Array.isArray(obj[key])) {\r\n obj[key] = iframeMirror.getIds(iframeEl, obj[key]);\r\n }\r\n else {\r\n obj[key] = iframeMirror.getId(iframeEl, obj[key]);\r\n }\r\n }\r\n return obj;\r\n }\r\n replaceIds(obj, iframeEl, keys) {\r\n return this.replace(this.crossOriginIframeMirror, obj, iframeEl, keys);\r\n }\r\n replaceStyleIds(obj, iframeEl, keys) {\r\n return this.replace(this.crossOriginIframeStyleMirror, obj, iframeEl, keys);\r\n }\r\n replaceIdOnNode(node, iframeEl) {\r\n this.replaceIds(node, iframeEl, ['id', 'rootId']);\r\n if ('childNodes' in node) {\r\n node.childNodes.forEach((child) => {\r\n this.replaceIdOnNode(child, iframeEl);\r\n });\r\n }\r\n }\r\n patchRootIdOnNode(node, rootId) {\r\n if (node.type !== NodeType.Document && !node.rootId)\r\n node.rootId = rootId;\r\n if ('childNodes' in node) {\r\n node.childNodes.forEach((child) => {\r\n this.patchRootIdOnNode(child, rootId);\r\n });\r\n }\r\n }\r\n}\n\nclass ShadowDomManager {\r\n constructor(options) {\r\n this.shadowDoms = new WeakSet();\r\n this.restoreHandlers = [];\r\n this.mutationCb = options.mutationCb;\r\n this.scrollCb = options.scrollCb;\r\n this.bypassOptions = options.bypassOptions;\r\n this.mirror = options.mirror;\r\n this.init();\r\n }\r\n init() {\r\n this.reset();\r\n this.patchAttachShadow(Element, document);\r\n }\r\n addShadowRoot(shadowRoot, doc) {\r\n if (!isNativeShadowDom(shadowRoot))\r\n return;\r\n if (this.shadowDoms.has(shadowRoot))\r\n return;\r\n this.shadowDoms.add(shadowRoot);\r\n const observer = initMutationObserver(Object.assign(Object.assign({}, this.bypassOptions), { doc, mutationCb: this.mutationCb, mirror: this.mirror, shadowDomManager: this }), shadowRoot);\r\n this.restoreHandlers.push(() => observer.disconnect());\r\n this.restoreHandlers.push(initScrollObserver(Object.assign(Object.assign({}, this.bypassOptions), { scrollCb: this.scrollCb, doc: shadowRoot, mirror: this.mirror })));\r\n setTimeout(() => {\r\n if (shadowRoot.adoptedStyleSheets &&\r\n shadowRoot.adoptedStyleSheets.length > 0)\r\n this.bypassOptions.stylesheetManager.adoptStyleSheets(shadowRoot.adoptedStyleSheets, this.mirror.getId(shadowRoot.host));\r\n this.restoreHandlers.push(initAdoptedStyleSheetObserver({\r\n mirror: this.mirror,\r\n stylesheetManager: this.bypassOptions.stylesheetManager,\r\n }, shadowRoot));\r\n }, 0);\r\n }\r\n observeAttachShadow(iframeElement) {\r\n if (!iframeElement.contentWindow || !iframeElement.contentDocument)\r\n return;\r\n this.patchAttachShadow(iframeElement.contentWindow.Element, iframeElement.contentDocument);\r\n }\r\n patchAttachShadow(element, doc) {\r\n const manager = this;\r\n this.restoreHandlers.push(patch(element.prototype, 'attachShadow', function (original) {\r\n return function (option) {\r\n const shadowRoot = original.call(this, option);\r\n if (this.shadowRoot && inDom(this))\r\n manager.addShadowRoot(this.shadowRoot, doc);\r\n return shadowRoot;\r\n };\r\n }));\r\n }\r\n reset() {\r\n this.restoreHandlers.forEach((handler) => {\r\n try {\r\n handler();\r\n }\r\n catch (e) {\r\n }\r\n });\r\n this.restoreHandlers = [];\r\n this.shadowDoms = new WeakSet();\r\n }\r\n}\n\n/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n\r\nfunction __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nfunction __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\n\n/*\n * base64-arraybuffer 1.0.1 \n * Copyright (c) 2021 Niklas von Hertzen \n * Released under MIT License\n */\nvar chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\n// Use a lookup table to find the index.\nvar lookup = typeof Uint8Array === 'undefined' ? [] : new Uint8Array(256);\nfor (var i = 0; i < chars.length; i++) {\n lookup[chars.charCodeAt(i)] = i;\n}\nvar encode = function (arraybuffer) {\n var bytes = new Uint8Array(arraybuffer), i, len = bytes.length, base64 = '';\n for (i = 0; i < len; i += 3) {\n base64 += chars[bytes[i] >> 2];\n base64 += chars[((bytes[i] & 3) << 4) | (bytes[i + 1] >> 4)];\n base64 += chars[((bytes[i + 1] & 15) << 2) | (bytes[i + 2] >> 6)];\n base64 += chars[bytes[i + 2] & 63];\n }\n if (len % 3 === 2) {\n base64 = base64.substring(0, base64.length - 1) + '=';\n }\n else if (len % 3 === 1) {\n base64 = base64.substring(0, base64.length - 2) + '==';\n }\n return base64;\n};\n\nconst canvasVarMap = new Map();\r\nfunction variableListFor(ctx, ctor) {\r\n let contextMap = canvasVarMap.get(ctx);\r\n if (!contextMap) {\r\n contextMap = new Map();\r\n canvasVarMap.set(ctx, contextMap);\r\n }\r\n if (!contextMap.has(ctor)) {\r\n contextMap.set(ctor, []);\r\n }\r\n return contextMap.get(ctor);\r\n}\r\nconst saveWebGLVar = (value, win, ctx) => {\r\n if (!value ||\r\n !(isInstanceOfWebGLObject(value, win) || typeof value === 'object'))\r\n return;\r\n const name = value.constructor.name;\r\n const list = variableListFor(ctx, name);\r\n let index = list.indexOf(value);\r\n if (index === -1) {\r\n index = list.length;\r\n list.push(value);\r\n }\r\n return index;\r\n};\r\nfunction serializeArg(value, win, ctx) {\r\n if (value instanceof Array) {\r\n return value.map((arg) => serializeArg(arg, win, ctx));\r\n }\r\n else if (value === null) {\r\n return value;\r\n }\r\n else if (value instanceof Float32Array ||\r\n value instanceof Float64Array ||\r\n value instanceof Int32Array ||\r\n value instanceof Uint32Array ||\r\n value instanceof Uint8Array ||\r\n value instanceof Uint16Array ||\r\n value instanceof Int16Array ||\r\n value instanceof Int8Array ||\r\n value instanceof Uint8ClampedArray) {\r\n const name = value.constructor.name;\r\n return {\r\n rr_type: name,\r\n args: [Object.values(value)],\r\n };\r\n }\r\n else if (value instanceof ArrayBuffer) {\r\n const name = value.constructor.name;\r\n const base64 = encode(value);\r\n return {\r\n rr_type: name,\r\n base64,\r\n };\r\n }\r\n else if (value instanceof DataView) {\r\n const name = value.constructor.name;\r\n return {\r\n rr_type: name,\r\n args: [\r\n serializeArg(value.buffer, win, ctx),\r\n value.byteOffset,\r\n value.byteLength,\r\n ],\r\n };\r\n }\r\n else if (value instanceof HTMLImageElement) {\r\n const name = value.constructor.name;\r\n const { src } = value;\r\n return {\r\n rr_type: name,\r\n src,\r\n };\r\n }\r\n else if (value instanceof HTMLCanvasElement) {\r\n const name = 'HTMLImageElement';\r\n const src = value.toDataURL();\r\n return {\r\n rr_type: name,\r\n src,\r\n };\r\n }\r\n else if (value instanceof ImageData) {\r\n const name = value.constructor.name;\r\n return {\r\n rr_type: name,\r\n args: [serializeArg(value.data, win, ctx), value.width, value.height],\r\n };\r\n }\r\n else if (isInstanceOfWebGLObject(value, win) || typeof value === 'object') {\r\n const name = value.constructor.name;\r\n const index = saveWebGLVar(value, win, ctx);\r\n return {\r\n rr_type: name,\r\n index: index,\r\n };\r\n }\r\n return value;\r\n}\r\nconst serializeArgs = (args, win, ctx) => {\r\n return args.map((arg) => serializeArg(arg, win, ctx));\r\n};\r\nconst isInstanceOfWebGLObject = (value, win) => {\r\n const webGLConstructorNames = [\r\n 'WebGLActiveInfo',\r\n 'WebGLBuffer',\r\n 'WebGLFramebuffer',\r\n 'WebGLProgram',\r\n 'WebGLRenderbuffer',\r\n 'WebGLShader',\r\n 'WebGLShaderPrecisionFormat',\r\n 'WebGLTexture',\r\n 'WebGLUniformLocation',\r\n 'WebGLVertexArrayObject',\r\n 'WebGLVertexArrayObjectOES',\r\n ];\r\n const supportedWebGLConstructorNames = webGLConstructorNames.filter((name) => typeof win[name] === 'function');\r\n return Boolean(supportedWebGLConstructorNames.find((name) => value instanceof win[name]));\r\n};\n\nfunction initCanvas2DMutationObserver(cb, win, blockClass, blockSelector) {\r\n const handlers = [];\r\n const props2D = Object.getOwnPropertyNames(win.CanvasRenderingContext2D.prototype);\r\n for (const prop of props2D) {\r\n try {\r\n if (typeof win.CanvasRenderingContext2D.prototype[prop] !== 'function') {\r\n continue;\r\n }\r\n const restoreHandler = patch(win.CanvasRenderingContext2D.prototype, prop, function (original) {\r\n return function (...args) {\r\n if (!isBlocked(this.canvas, blockClass, blockSelector, true)) {\r\n setTimeout(() => {\r\n const recordArgs = serializeArgs(args, win, this);\r\n cb(this.canvas, {\r\n type: CanvasContext['2D'],\r\n property: prop,\r\n args: recordArgs,\r\n });\r\n }, 0);\r\n }\r\n return original.apply(this, args);\r\n };\r\n });\r\n handlers.push(restoreHandler);\r\n }\r\n catch (_a) {\r\n const hookHandler = hookSetter(win.CanvasRenderingContext2D.prototype, prop, {\r\n set(v) {\r\n cb(this.canvas, {\r\n type: CanvasContext['2D'],\r\n property: prop,\r\n args: [v],\r\n setter: true,\r\n });\r\n },\r\n });\r\n handlers.push(hookHandler);\r\n }\r\n }\r\n return () => {\r\n handlers.forEach((h) => h());\r\n };\r\n}\n\nfunction getNormalizedContextName(contextType) {\r\n return contextType === 'experimental-webgl' ? 'webgl' : contextType;\r\n}\r\nfunction initCanvasContextObserver(win, blockClass, blockSelector, setPreserveDrawingBufferToTrue) {\r\n const handlers = [];\r\n try {\r\n const restoreHandler = patch(win.HTMLCanvasElement.prototype, 'getContext', function (original) {\r\n return function (contextType, ...args) {\r\n if (!isBlocked(this, blockClass, blockSelector, true)) {\r\n const ctxName = getNormalizedContextName(contextType);\r\n if (!('__context' in this))\r\n this.__context = ctxName;\r\n if (setPreserveDrawingBufferToTrue &&\r\n ['webgl', 'webgl2'].includes(ctxName)) {\r\n if (args[0] && typeof args[0] === 'object') {\r\n const contextAttributes = args[0];\r\n if (!contextAttributes.preserveDrawingBuffer) {\r\n contextAttributes.preserveDrawingBuffer = true;\r\n }\r\n }\r\n else {\r\n args.splice(0, 1, {\r\n preserveDrawingBuffer: true,\r\n });\r\n }\r\n }\r\n }\r\n return original.apply(this, [contextType, ...args]);\r\n };\r\n });\r\n handlers.push(restoreHandler);\r\n }\r\n catch (_a) {\r\n console.error('failed to patch HTMLCanvasElement.prototype.getContext');\r\n }\r\n return () => {\r\n handlers.forEach((h) => h());\r\n };\r\n}\n\nfunction patchGLPrototype(prototype, type, cb, blockClass, blockSelector, mirror, win) {\r\n const handlers = [];\r\n const props = Object.getOwnPropertyNames(prototype);\r\n for (const prop of props) {\r\n if ([\r\n 'isContextLost',\r\n 'canvas',\r\n 'drawingBufferWidth',\r\n 'drawingBufferHeight',\r\n ].includes(prop)) {\r\n continue;\r\n }\r\n try {\r\n if (typeof prototype[prop] !== 'function') {\r\n continue;\r\n }\r\n const restoreHandler = patch(prototype, prop, function (original) {\r\n return function (...args) {\r\n const result = original.apply(this, args);\r\n saveWebGLVar(result, win, this);\r\n if ('tagName' in this.canvas &&\r\n !isBlocked(this.canvas, blockClass, blockSelector, true)) {\r\n const recordArgs = serializeArgs(args, win, this);\r\n const mutation = {\r\n type,\r\n property: prop,\r\n args: recordArgs,\r\n };\r\n cb(this.canvas, mutation);\r\n }\r\n return result;\r\n };\r\n });\r\n handlers.push(restoreHandler);\r\n }\r\n catch (_a) {\r\n const hookHandler = hookSetter(prototype, prop, {\r\n set(v) {\r\n cb(this.canvas, {\r\n type,\r\n property: prop,\r\n args: [v],\r\n setter: true,\r\n });\r\n },\r\n });\r\n handlers.push(hookHandler);\r\n }\r\n }\r\n return handlers;\r\n}\r\nfunction initCanvasWebGLMutationObserver(cb, win, blockClass, blockSelector, mirror) {\r\n const handlers = [];\r\n handlers.push(...patchGLPrototype(win.WebGLRenderingContext.prototype, CanvasContext.WebGL, cb, blockClass, blockSelector, mirror, win));\r\n if (typeof win.WebGL2RenderingContext !== 'undefined') {\r\n handlers.push(...patchGLPrototype(win.WebGL2RenderingContext.prototype, CanvasContext.WebGL2, cb, blockClass, blockSelector, mirror, win));\r\n }\r\n return () => {\r\n handlers.forEach((h) => h());\r\n };\r\n}\n\nfunction funcToSource(fn, sourcemapArg) {\n var sourcemap = sourcemapArg === undefined ? null : sourcemapArg;\n var source = fn.toString();\n var lines = source.split('\\n');\n lines.pop();\n lines.shift();\n var blankPrefixLength = lines[0].search(/\\S/);\n var regex = /(['\"])__worker_loader_strict__(['\"])/g;\n for (var i = 0, n = lines.length; i < n; ++i) {\n lines[i] = lines[i].substring(blankPrefixLength).replace(regex, '$1use strict$2') + '\\n';\n }\n if (sourcemap) {\n lines.push('\\/\\/# sourceMappingURL=' + sourcemap + '\\n');\n }\n return lines;\n}\n\nfunction createURL(fn, sourcemapArg) {\n var lines = funcToSource(fn, sourcemapArg);\n var blob = new Blob(lines, { type: 'application/javascript' });\n return URL.createObjectURL(blob);\n}\n\nfunction createInlineWorkerFactory(fn, sourcemapArg) {\n var url;\n return function WorkerFactory(options) {\n url = url || createURL(fn, sourcemapArg);\n return new Worker(url, options);\n };\n}\n\nvar WorkerFactory = createInlineWorkerFactory(/* rollup-plugin-web-worker-loader */function () {\n(function () {\n '__worker_loader_strict__';\n\n /*! *****************************************************************************\r\n Copyright (c) Microsoft Corporation.\r\n\r\n Permission to use, copy, modify, and/or distribute this software for any\r\n purpose with or without fee is hereby granted.\r\n\r\n THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\n REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\n AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\n INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\n LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\n OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\n PERFORMANCE OF THIS SOFTWARE.\r\n ***************************************************************************** */\r\n\r\n function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n }\n\n /*\n * base64-arraybuffer 1.0.1 \n * Copyright (c) 2021 Niklas von Hertzen \n * Released under MIT License\n */\n var chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\n // Use a lookup table to find the index.\n var lookup = typeof Uint8Array === 'undefined' ? [] : new Uint8Array(256);\n for (var i = 0; i < chars.length; i++) {\n lookup[chars.charCodeAt(i)] = i;\n }\n var encode = function (arraybuffer) {\n var bytes = new Uint8Array(arraybuffer), i, len = bytes.length, base64 = '';\n for (i = 0; i < len; i += 3) {\n base64 += chars[bytes[i] >> 2];\n base64 += chars[((bytes[i] & 3) << 4) | (bytes[i + 1] >> 4)];\n base64 += chars[((bytes[i + 1] & 15) << 2) | (bytes[i + 2] >> 6)];\n base64 += chars[bytes[i + 2] & 63];\n }\n if (len % 3 === 2) {\n base64 = base64.substring(0, base64.length - 1) + '=';\n }\n else if (len % 3 === 1) {\n base64 = base64.substring(0, base64.length - 2) + '==';\n }\n return base64;\n };\n\n const lastBlobMap = new Map();\r\n const transparentBlobMap = new Map();\r\n function getTransparentBlobFor(width, height, dataURLOptions) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n const id = `${width}-${height}`;\r\n if ('OffscreenCanvas' in globalThis) {\r\n if (transparentBlobMap.has(id))\r\n return transparentBlobMap.get(id);\r\n const offscreen = new OffscreenCanvas(width, height);\r\n offscreen.getContext('2d');\r\n const blob = yield offscreen.convertToBlob(dataURLOptions);\r\n const arrayBuffer = yield blob.arrayBuffer();\r\n const base64 = encode(arrayBuffer);\r\n transparentBlobMap.set(id, base64);\r\n return base64;\r\n }\r\n else {\r\n return '';\r\n }\r\n });\r\n }\r\n const worker = self;\r\n worker.onmessage = function (e) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n if ('OffscreenCanvas' in globalThis) {\r\n const { id, bitmap, width, height, dataURLOptions } = e.data;\r\n const transparentBase64 = getTransparentBlobFor(width, height, dataURLOptions);\r\n const offscreen = new OffscreenCanvas(width, height);\r\n const ctx = offscreen.getContext('2d');\r\n ctx.drawImage(bitmap, 0, 0);\r\n bitmap.close();\r\n const blob = yield offscreen.convertToBlob(dataURLOptions);\r\n const type = blob.type;\r\n const arrayBuffer = yield blob.arrayBuffer();\r\n const base64 = encode(arrayBuffer);\r\n if (!lastBlobMap.has(id) && (yield transparentBase64) === base64) {\r\n lastBlobMap.set(id, base64);\r\n return worker.postMessage({ id });\r\n }\r\n if (lastBlobMap.get(id) === base64)\r\n return worker.postMessage({ id });\r\n worker.postMessage({\r\n id,\r\n type,\r\n base64,\r\n width,\r\n height,\r\n });\r\n lastBlobMap.set(id, base64);\r\n }\r\n else {\r\n return worker.postMessage({ id: e.data.id });\r\n }\r\n });\r\n };\n\n})();\n}, null);\n\nclass CanvasManager {\r\n reset() {\r\n this.pendingCanvasMutations.clear();\r\n this.resetObservers && this.resetObservers();\r\n }\r\n freeze() {\r\n this.frozen = true;\r\n }\r\n unfreeze() {\r\n this.frozen = false;\r\n }\r\n lock() {\r\n this.locked = true;\r\n }\r\n unlock() {\r\n this.locked = false;\r\n }\r\n constructor(options) {\r\n this.pendingCanvasMutations = new Map();\r\n this.rafStamps = { latestId: 0, invokeId: null };\r\n this.frozen = false;\r\n this.locked = false;\r\n this.processMutation = (target, mutation) => {\r\n const newFrame = this.rafStamps.invokeId &&\r\n this.rafStamps.latestId !== this.rafStamps.invokeId;\r\n if (newFrame || !this.rafStamps.invokeId)\r\n this.rafStamps.invokeId = this.rafStamps.latestId;\r\n if (!this.pendingCanvasMutations.has(target)) {\r\n this.pendingCanvasMutations.set(target, []);\r\n }\r\n this.pendingCanvasMutations.get(target).push(mutation);\r\n };\r\n const { sampling = 'all', win, blockClass, blockSelector, recordCanvas, dataURLOptions, } = options;\r\n this.mutationCb = options.mutationCb;\r\n this.mirror = options.mirror;\r\n if (recordCanvas && sampling === 'all')\r\n this.initCanvasMutationObserver(win, blockClass, blockSelector);\r\n if (recordCanvas && typeof sampling === 'number')\r\n this.initCanvasFPSObserver(sampling, win, blockClass, blockSelector, {\r\n dataURLOptions,\r\n });\r\n }\r\n initCanvasFPSObserver(fps, win, blockClass, blockSelector, options) {\r\n const canvasContextReset = initCanvasContextObserver(win, blockClass, blockSelector, true);\r\n const snapshotInProgressMap = new Map();\r\n const worker = new WorkerFactory();\r\n worker.onmessage = (e) => {\r\n const { id } = e.data;\r\n snapshotInProgressMap.set(id, false);\r\n if (!('base64' in e.data))\r\n return;\r\n const { base64, type, width, height } = e.data;\r\n this.mutationCb({\r\n id,\r\n type: CanvasContext['2D'],\r\n commands: [\r\n {\r\n property: 'clearRect',\r\n args: [0, 0, width, height],\r\n },\r\n {\r\n property: 'drawImage',\r\n args: [\r\n {\r\n rr_type: 'ImageBitmap',\r\n args: [\r\n {\r\n rr_type: 'Blob',\r\n data: [{ rr_type: 'ArrayBuffer', base64 }],\r\n type,\r\n },\r\n ],\r\n },\r\n 0,\r\n 0,\r\n ],\r\n },\r\n ],\r\n });\r\n };\r\n const timeBetweenSnapshots = 1000 / fps;\r\n let lastSnapshotTime = 0;\r\n let rafId;\r\n const getCanvas = () => {\r\n const matchedCanvas = [];\r\n win.document.querySelectorAll('canvas').forEach((canvas) => {\r\n if (!isBlocked(canvas, blockClass, blockSelector, true)) {\r\n matchedCanvas.push(canvas);\r\n }\r\n });\r\n return matchedCanvas;\r\n };\r\n const takeCanvasSnapshots = (timestamp) => {\r\n if (lastSnapshotTime &&\r\n timestamp - lastSnapshotTime < timeBetweenSnapshots) {\r\n rafId = requestAnimationFrame(takeCanvasSnapshots);\r\n return;\r\n }\r\n lastSnapshotTime = timestamp;\r\n getCanvas()\r\n .forEach((canvas) => __awaiter(this, void 0, void 0, function* () {\r\n var _a;\r\n const id = this.mirror.getId(canvas);\r\n if (snapshotInProgressMap.get(id))\r\n return;\r\n if (canvas.width === 0 || canvas.height === 0)\r\n return;\r\n snapshotInProgressMap.set(id, true);\r\n if (['webgl', 'webgl2'].includes(canvas.__context)) {\r\n const context = canvas.getContext(canvas.__context);\r\n if (((_a = context === null || context === void 0 ? void 0 : context.getContextAttributes()) === null || _a === void 0 ? void 0 : _a.preserveDrawingBuffer) === false) {\r\n context.clear(context.COLOR_BUFFER_BIT);\r\n }\r\n }\r\n const bitmap = yield createImageBitmap(canvas);\r\n worker.postMessage({\r\n id,\r\n bitmap,\r\n width: canvas.width,\r\n height: canvas.height,\r\n dataURLOptions: options.dataURLOptions,\r\n }, [bitmap]);\r\n }));\r\n rafId = requestAnimationFrame(takeCanvasSnapshots);\r\n };\r\n rafId = requestAnimationFrame(takeCanvasSnapshots);\r\n this.resetObservers = () => {\r\n canvasContextReset();\r\n cancelAnimationFrame(rafId);\r\n };\r\n }\r\n initCanvasMutationObserver(win, blockClass, blockSelector) {\r\n this.startRAFTimestamping();\r\n this.startPendingCanvasMutationFlusher();\r\n const canvasContextReset = initCanvasContextObserver(win, blockClass, blockSelector, false);\r\n const canvas2DReset = initCanvas2DMutationObserver(this.processMutation.bind(this), win, blockClass, blockSelector);\r\n const canvasWebGL1and2Reset = initCanvasWebGLMutationObserver(this.processMutation.bind(this), win, blockClass, blockSelector, this.mirror);\r\n this.resetObservers = () => {\r\n canvasContextReset();\r\n canvas2DReset();\r\n canvasWebGL1and2Reset();\r\n };\r\n }\r\n startPendingCanvasMutationFlusher() {\r\n requestAnimationFrame(() => this.flushPendingCanvasMutations());\r\n }\r\n startRAFTimestamping() {\r\n const setLatestRAFTimestamp = (timestamp) => {\r\n this.rafStamps.latestId = timestamp;\r\n requestAnimationFrame(setLatestRAFTimestamp);\r\n };\r\n requestAnimationFrame(setLatestRAFTimestamp);\r\n }\r\n flushPendingCanvasMutations() {\r\n this.pendingCanvasMutations.forEach((values, canvas) => {\r\n const id = this.mirror.getId(canvas);\r\n this.flushPendingCanvasMutationFor(canvas, id);\r\n });\r\n requestAnimationFrame(() => this.flushPendingCanvasMutations());\r\n }\r\n flushPendingCanvasMutationFor(canvas, id) {\r\n if (this.frozen || this.locked) {\r\n return;\r\n }\r\n const valuesWithType = this.pendingCanvasMutations.get(canvas);\r\n if (!valuesWithType || id === -1)\r\n return;\r\n const values = valuesWithType.map((value) => {\r\n const rest = __rest(value, [\"type\"]);\r\n return rest;\r\n });\r\n const { type } = valuesWithType[0];\r\n this.mutationCb({ id, type, commands: values });\r\n this.pendingCanvasMutations.delete(canvas);\r\n }\r\n}\n\nclass StylesheetManager {\r\n constructor(options) {\r\n this.trackedLinkElements = new WeakSet();\r\n this.styleMirror = new StyleSheetMirror();\r\n this.mutationCb = options.mutationCb;\r\n this.adoptedStyleSheetCb = options.adoptedStyleSheetCb;\r\n }\r\n attachLinkElement(linkEl, childSn) {\r\n if ('_cssText' in childSn.attributes)\r\n this.mutationCb({\r\n adds: [],\r\n removes: [],\r\n texts: [],\r\n attributes: [\r\n {\r\n id: childSn.id,\r\n attributes: childSn\r\n .attributes,\r\n },\r\n ],\r\n });\r\n this.trackLinkElement(linkEl);\r\n }\r\n trackLinkElement(linkEl) {\r\n if (this.trackedLinkElements.has(linkEl))\r\n return;\r\n this.trackedLinkElements.add(linkEl);\r\n this.trackStylesheetInLinkElement(linkEl);\r\n }\r\n adoptStyleSheets(sheets, hostId) {\r\n if (sheets.length === 0)\r\n return;\r\n const adoptedStyleSheetData = {\r\n id: hostId,\r\n styleIds: [],\r\n };\r\n const styles = [];\r\n for (const sheet of sheets) {\r\n let styleId;\r\n if (!this.styleMirror.has(sheet)) {\r\n styleId = this.styleMirror.add(sheet);\r\n styles.push({\r\n styleId,\r\n rules: Array.from(sheet.rules || CSSRule, (r, index) => ({\r\n rule: stringifyRule(r),\r\n index,\r\n })),\r\n });\r\n }\r\n else\r\n styleId = this.styleMirror.getId(sheet);\r\n adoptedStyleSheetData.styleIds.push(styleId);\r\n }\r\n if (styles.length > 0)\r\n adoptedStyleSheetData.styles = styles;\r\n this.adoptedStyleSheetCb(adoptedStyleSheetData);\r\n }\r\n reset() {\r\n this.styleMirror.reset();\r\n this.trackedLinkElements = new WeakSet();\r\n }\r\n trackStylesheetInLinkElement(linkEl) {\r\n }\r\n}\n\nclass ProcessedNodeManager {\r\n constructor() {\r\n this.nodeMap = new WeakMap();\r\n this.loop = true;\r\n this.periodicallyClear();\r\n }\r\n periodicallyClear() {\r\n requestAnimationFrame(() => {\r\n this.clear();\r\n if (this.loop)\r\n this.periodicallyClear();\r\n });\r\n }\r\n inOtherBuffer(node, thisBuffer) {\r\n const buffers = this.nodeMap.get(node);\r\n return (buffers && Array.from(buffers).some((buffer) => buffer !== thisBuffer));\r\n }\r\n add(node, buffer) {\r\n this.nodeMap.set(node, (this.nodeMap.get(node) || new Set()).add(buffer));\r\n }\r\n clear() {\r\n this.nodeMap = new WeakMap();\r\n }\r\n destroy() {\r\n this.loop = false;\r\n }\r\n}\n\nfunction wrapEvent(e) {\r\n return Object.assign(Object.assign({}, e), { timestamp: nowTimestamp() });\r\n}\r\nlet wrappedEmit;\r\nlet takeFullSnapshot;\r\nlet canvasManager;\r\nlet recording = false;\r\nconst mirror = createMirror();\r\nfunction record(options = {}) {\r\n const { emit, checkoutEveryNms, checkoutEveryNth, blockClass = 'rr-block', blockSelector = null, ignoreClass = 'rr-ignore', ignoreSelector = null, maskTextClass = 'rr-mask', maskTextSelector = null, inlineStylesheet = true, maskAllInputs, maskInputOptions: _maskInputOptions, slimDOMOptions: _slimDOMOptions, maskInputFn, maskTextFn, hooks, packFn, sampling = {}, dataURLOptions = {}, mousemoveWait, recordDOM = true, recordCanvas = false, recordCrossOriginIframes = false, recordAfter = options.recordAfter === 'DOMContentLoaded'\r\n ? options.recordAfter\r\n : 'load', userTriggeredOnInput = false, collectFonts = false, inlineImages = false, plugins, keepIframeSrcFn = () => false, ignoreCSSAttributes = new Set([]), errorHandler, } = options;\r\n registerErrorHandler(errorHandler);\r\n const inEmittingFrame = recordCrossOriginIframes\r\n ? window.parent === window\r\n : true;\r\n let passEmitsToParent = false;\r\n if (!inEmittingFrame) {\r\n try {\r\n if (window.parent.document) {\r\n passEmitsToParent = false;\r\n }\r\n }\r\n catch (e) {\r\n passEmitsToParent = true;\r\n }\r\n }\r\n if (inEmittingFrame && !emit) {\r\n throw new Error('emit function is required');\r\n }\r\n if (mousemoveWait !== undefined && sampling.mousemove === undefined) {\r\n sampling.mousemove = mousemoveWait;\r\n }\r\n mirror.reset();\r\n const maskInputOptions = maskAllInputs === true\r\n ? {\r\n color: true,\r\n date: true,\r\n 'datetime-local': true,\r\n email: true,\r\n month: true,\r\n number: true,\r\n range: true,\r\n search: true,\r\n tel: true,\r\n text: true,\r\n time: true,\r\n url: true,\r\n week: true,\r\n textarea: true,\r\n select: true,\r\n password: true,\r\n }\r\n : _maskInputOptions !== undefined\r\n ? _maskInputOptions\r\n : { password: true };\r\n const slimDOMOptions = _slimDOMOptions === true || _slimDOMOptions === 'all'\r\n ? {\r\n script: true,\r\n comment: true,\r\n headFavicon: true,\r\n headWhitespace: true,\r\n headMetaSocial: true,\r\n headMetaRobots: true,\r\n headMetaHttpEquiv: true,\r\n headMetaVerification: true,\r\n headMetaAuthorship: _slimDOMOptions === 'all',\r\n headMetaDescKeywords: _slimDOMOptions === 'all',\r\n }\r\n : _slimDOMOptions\r\n ? _slimDOMOptions\r\n : {};\r\n polyfill();\r\n let lastFullSnapshotEvent;\r\n let incrementalSnapshotCount = 0;\r\n const eventProcessor = (e) => {\r\n for (const plugin of plugins || []) {\r\n if (plugin.eventProcessor) {\r\n e = plugin.eventProcessor(e);\r\n }\r\n }\r\n if (packFn &&\r\n !passEmitsToParent) {\r\n e = packFn(e);\r\n }\r\n return e;\r\n };\r\n wrappedEmit = (e, isCheckout) => {\r\n var _a;\r\n if (((_a = mutationBuffers[0]) === null || _a === void 0 ? void 0 : _a.isFrozen()) &&\r\n e.type !== EventType$1.FullSnapshot &&\r\n !(e.type === EventType$1.IncrementalSnapshot &&\r\n e.data.source === IncrementalSource$1.Mutation)) {\r\n mutationBuffers.forEach((buf) => buf.unfreeze());\r\n }\r\n if (inEmittingFrame) {\r\n emit === null || emit === void 0 ? void 0 : emit(eventProcessor(e), isCheckout);\r\n }\r\n else if (passEmitsToParent) {\r\n const message = {\r\n type: 'rrweb',\r\n event: eventProcessor(e),\r\n origin: window.location.origin,\r\n isCheckout,\r\n };\r\n window.parent.postMessage(message, '*');\r\n }\r\n if (e.type === EventType$1.FullSnapshot) {\r\n lastFullSnapshotEvent = e;\r\n incrementalSnapshotCount = 0;\r\n }\r\n else if (e.type === EventType$1.IncrementalSnapshot) {\r\n if (e.data.source === IncrementalSource$1.Mutation &&\r\n e.data.isAttachIframe) {\r\n return;\r\n }\r\n incrementalSnapshotCount++;\r\n const exceedCount = checkoutEveryNth && incrementalSnapshotCount >= checkoutEveryNth;\r\n const exceedTime = checkoutEveryNms &&\r\n e.timestamp - lastFullSnapshotEvent.timestamp > checkoutEveryNms;\r\n if (exceedCount || exceedTime) {\r\n takeFullSnapshot(true);\r\n }\r\n }\r\n };\r\n const wrappedMutationEmit = (m) => {\r\n wrappedEmit(wrapEvent({\r\n type: EventType$1.IncrementalSnapshot,\r\n data: Object.assign({ source: IncrementalSource$1.Mutation }, m),\r\n }));\r\n };\r\n const wrappedScrollEmit = (p) => wrappedEmit(wrapEvent({\r\n type: EventType$1.IncrementalSnapshot,\r\n data: Object.assign({ source: IncrementalSource$1.Scroll }, p),\r\n }));\r\n const wrappedCanvasMutationEmit = (p) => wrappedEmit(wrapEvent({\r\n type: EventType$1.IncrementalSnapshot,\r\n data: Object.assign({ source: IncrementalSource$1.CanvasMutation }, p),\r\n }));\r\n const wrappedAdoptedStyleSheetEmit = (a) => wrappedEmit(wrapEvent({\r\n type: EventType$1.IncrementalSnapshot,\r\n data: Object.assign({ source: IncrementalSource$1.AdoptedStyleSheet }, a),\r\n }));\r\n const stylesheetManager = new StylesheetManager({\r\n mutationCb: wrappedMutationEmit,\r\n adoptedStyleSheetCb: wrappedAdoptedStyleSheetEmit,\r\n });\r\n const iframeManager = new IframeManager({\r\n mirror,\r\n mutationCb: wrappedMutationEmit,\r\n stylesheetManager: stylesheetManager,\r\n recordCrossOriginIframes,\r\n wrappedEmit,\r\n });\r\n for (const plugin of plugins || []) {\r\n if (plugin.getMirror)\r\n plugin.getMirror({\r\n nodeMirror: mirror,\r\n crossOriginIframeMirror: iframeManager.crossOriginIframeMirror,\r\n crossOriginIframeStyleMirror: iframeManager.crossOriginIframeStyleMirror,\r\n });\r\n }\r\n const processedNodeManager = new ProcessedNodeManager();\r\n canvasManager = new CanvasManager({\r\n recordCanvas,\r\n mutationCb: wrappedCanvasMutationEmit,\r\n win: window,\r\n blockClass,\r\n blockSelector,\r\n mirror,\r\n sampling: sampling.canvas,\r\n dataURLOptions,\r\n });\r\n const shadowDomManager = new ShadowDomManager({\r\n mutationCb: wrappedMutationEmit,\r\n scrollCb: wrappedScrollEmit,\r\n bypassOptions: {\r\n blockClass,\r\n blockSelector,\r\n maskTextClass,\r\n maskTextSelector,\r\n inlineStylesheet,\r\n maskInputOptions,\r\n dataURLOptions,\r\n maskTextFn,\r\n maskInputFn,\r\n recordCanvas,\r\n inlineImages,\r\n sampling,\r\n slimDOMOptions,\r\n iframeManager,\r\n stylesheetManager,\r\n canvasManager,\r\n keepIframeSrcFn,\r\n processedNodeManager,\r\n },\r\n mirror,\r\n });\r\n takeFullSnapshot = (isCheckout = false) => {\r\n if (!recordDOM) {\r\n return;\r\n }\r\n wrappedEmit(wrapEvent({\r\n type: EventType$1.Meta,\r\n data: {\r\n href: window.location.href,\r\n width: getWindowWidth(),\r\n height: getWindowHeight(),\r\n },\r\n }), isCheckout);\r\n stylesheetManager.reset();\r\n shadowDomManager.init();\r\n mutationBuffers.forEach((buf) => buf.lock());\r\n const node = snapshot(document, {\r\n mirror,\r\n blockClass,\r\n blockSelector,\r\n maskTextClass,\r\n maskTextSelector,\r\n inlineStylesheet,\r\n maskAllInputs: maskInputOptions,\r\n maskTextFn,\r\n slimDOM: slimDOMOptions,\r\n dataURLOptions,\r\n recordCanvas,\r\n inlineImages,\r\n onSerialize: (n) => {\r\n if (isSerializedIframe(n, mirror)) {\r\n iframeManager.addIframe(n);\r\n }\r\n if (isSerializedStylesheet(n, mirror)) {\r\n stylesheetManager.trackLinkElement(n);\r\n }\r\n if (hasShadowRoot(n)) {\r\n shadowDomManager.addShadowRoot(n.shadowRoot, document);\r\n }\r\n },\r\n onIframeLoad: (iframe, childSn) => {\r\n iframeManager.attachIframe(iframe, childSn);\r\n shadowDomManager.observeAttachShadow(iframe);\r\n },\r\n onStylesheetLoad: (linkEl, childSn) => {\r\n stylesheetManager.attachLinkElement(linkEl, childSn);\r\n },\r\n keepIframeSrcFn,\r\n });\r\n if (!node) {\r\n return console.warn('Failed to snapshot the document');\r\n }\r\n wrappedEmit(wrapEvent({\r\n type: EventType$1.FullSnapshot,\r\n data: {\r\n node,\r\n initialOffset: getWindowScroll(window),\r\n },\r\n }), isCheckout);\r\n mutationBuffers.forEach((buf) => buf.unlock());\r\n if (document.adoptedStyleSheets && document.adoptedStyleSheets.length > 0)\r\n stylesheetManager.adoptStyleSheets(document.adoptedStyleSheets, mirror.getId(document));\r\n };\r\n try {\r\n const handlers = [];\r\n const observe = (doc) => {\r\n var _a;\r\n return callbackWrapper(initObservers)({\r\n mutationCb: wrappedMutationEmit,\r\n mousemoveCb: (positions, source) => wrappedEmit(wrapEvent({\r\n type: EventType$1.IncrementalSnapshot,\r\n data: {\r\n source,\r\n positions,\r\n },\r\n })),\r\n mouseInteractionCb: (d) => wrappedEmit(wrapEvent({\r\n type: EventType$1.IncrementalSnapshot,\r\n data: Object.assign({ source: IncrementalSource$1.MouseInteraction }, d),\r\n })),\r\n scrollCb: wrappedScrollEmit,\r\n viewportResizeCb: (d) => wrappedEmit(wrapEvent({\r\n type: EventType$1.IncrementalSnapshot,\r\n data: Object.assign({ source: IncrementalSource$1.ViewportResize }, d),\r\n })),\r\n inputCb: (v) => wrappedEmit(wrapEvent({\r\n type: EventType$1.IncrementalSnapshot,\r\n data: Object.assign({ source: IncrementalSource$1.Input }, v),\r\n })),\r\n mediaInteractionCb: (p) => wrappedEmit(wrapEvent({\r\n type: EventType$1.IncrementalSnapshot,\r\n data: Object.assign({ source: IncrementalSource$1.MediaInteraction }, p),\r\n })),\r\n styleSheetRuleCb: (r) => wrappedEmit(wrapEvent({\r\n type: EventType$1.IncrementalSnapshot,\r\n data: Object.assign({ source: IncrementalSource$1.StyleSheetRule }, r),\r\n })),\r\n styleDeclarationCb: (r) => wrappedEmit(wrapEvent({\r\n type: EventType$1.IncrementalSnapshot,\r\n data: Object.assign({ source: IncrementalSource$1.StyleDeclaration }, r),\r\n })),\r\n canvasMutationCb: wrappedCanvasMutationEmit,\r\n fontCb: (p) => wrappedEmit(wrapEvent({\r\n type: EventType$1.IncrementalSnapshot,\r\n data: Object.assign({ source: IncrementalSource$1.Font }, p),\r\n })),\r\n selectionCb: (p) => {\r\n wrappedEmit(wrapEvent({\r\n type: EventType$1.IncrementalSnapshot,\r\n data: Object.assign({ source: IncrementalSource$1.Selection }, p),\r\n }));\r\n },\r\n customElementCb: (c) => {\r\n wrappedEmit(wrapEvent({\r\n type: EventType$1.IncrementalSnapshot,\r\n data: Object.assign({ source: IncrementalSource$1.CustomElement }, c),\r\n }));\r\n },\r\n blockClass,\r\n ignoreClass,\r\n ignoreSelector,\r\n maskTextClass,\r\n maskTextSelector,\r\n maskInputOptions,\r\n inlineStylesheet,\r\n sampling,\r\n recordDOM,\r\n recordCanvas,\r\n inlineImages,\r\n userTriggeredOnInput,\r\n collectFonts,\r\n doc,\r\n maskInputFn,\r\n maskTextFn,\r\n keepIframeSrcFn,\r\n blockSelector,\r\n slimDOMOptions,\r\n dataURLOptions,\r\n mirror,\r\n iframeManager,\r\n stylesheetManager,\r\n shadowDomManager,\r\n processedNodeManager,\r\n canvasManager,\r\n ignoreCSSAttributes,\r\n plugins: ((_a = plugins === null || plugins === void 0 ? void 0 : plugins.filter((p) => p.observer)) === null || _a === void 0 ? void 0 : _a.map((p) => ({\r\n observer: p.observer,\r\n options: p.options,\r\n callback: (payload) => wrappedEmit(wrapEvent({\r\n type: EventType$1.Plugin,\r\n data: {\r\n plugin: p.name,\r\n payload,\r\n },\r\n })),\r\n }))) || [],\r\n }, hooks);\r\n };\r\n iframeManager.addLoadListener((iframeEl) => {\r\n try {\r\n handlers.push(observe(iframeEl.contentDocument));\r\n }\r\n catch (error) {\r\n console.warn(error);\r\n }\r\n });\r\n const init = () => {\r\n takeFullSnapshot();\r\n handlers.push(observe(document));\r\n recording = true;\r\n };\r\n if (document.readyState === 'interactive' ||\r\n document.readyState === 'complete') {\r\n init();\r\n }\r\n else {\r\n handlers.push(on('DOMContentLoaded', () => {\r\n wrappedEmit(wrapEvent({\r\n type: EventType$1.DomContentLoaded,\r\n data: {},\r\n }));\r\n if (recordAfter === 'DOMContentLoaded')\r\n init();\r\n }));\r\n handlers.push(on('load', () => {\r\n wrappedEmit(wrapEvent({\r\n type: EventType$1.Load,\r\n data: {},\r\n }));\r\n if (recordAfter === 'load')\r\n init();\r\n }, window));\r\n }\r\n return () => {\r\n handlers.forEach((h) => h());\r\n processedNodeManager.destroy();\r\n recording = false;\r\n unregisterErrorHandler();\r\n };\r\n }\r\n catch (error) {\r\n console.warn(error);\r\n }\r\n}\r\nrecord.addCustomEvent = (tag, payload) => {\r\n if (!recording) {\r\n throw new Error('please add custom event after start recording');\r\n }\r\n wrappedEmit(wrapEvent({\r\n type: EventType$1.Custom,\r\n data: {\r\n tag,\r\n payload,\r\n },\r\n }));\r\n};\r\nrecord.freezePage = () => {\r\n mutationBuffers.forEach((buf) => buf.freeze());\r\n};\r\nrecord.takeFullSnapshot = (isCheckout) => {\r\n if (!recording) {\r\n throw new Error('please take full snapshot after start recording');\r\n }\r\n takeFullSnapshot(isCheckout);\r\n};\r\nrecord.mirror = mirror;\n\nvar EventType = /* @__PURE__ */ ((EventType2) => {\n EventType2[EventType2[\"DomContentLoaded\"] = 0] = \"DomContentLoaded\";\n EventType2[EventType2[\"Load\"] = 1] = \"Load\";\n EventType2[EventType2[\"FullSnapshot\"] = 2] = \"FullSnapshot\";\n EventType2[EventType2[\"IncrementalSnapshot\"] = 3] = \"IncrementalSnapshot\";\n EventType2[EventType2[\"Meta\"] = 4] = \"Meta\";\n EventType2[EventType2[\"Custom\"] = 5] = \"Custom\";\n EventType2[EventType2[\"Plugin\"] = 6] = \"Plugin\";\n return EventType2;\n})(EventType || {});\nvar IncrementalSource = /* @__PURE__ */ ((IncrementalSource2) => {\n IncrementalSource2[IncrementalSource2[\"Mutation\"] = 0] = \"Mutation\";\n IncrementalSource2[IncrementalSource2[\"MouseMove\"] = 1] = \"MouseMove\";\n IncrementalSource2[IncrementalSource2[\"MouseInteraction\"] = 2] = \"MouseInteraction\";\n IncrementalSource2[IncrementalSource2[\"Scroll\"] = 3] = \"Scroll\";\n IncrementalSource2[IncrementalSource2[\"ViewportResize\"] = 4] = \"ViewportResize\";\n IncrementalSource2[IncrementalSource2[\"Input\"] = 5] = \"Input\";\n IncrementalSource2[IncrementalSource2[\"TouchMove\"] = 6] = \"TouchMove\";\n IncrementalSource2[IncrementalSource2[\"MediaInteraction\"] = 7] = \"MediaInteraction\";\n IncrementalSource2[IncrementalSource2[\"StyleSheetRule\"] = 8] = \"StyleSheetRule\";\n IncrementalSource2[IncrementalSource2[\"CanvasMutation\"] = 9] = \"CanvasMutation\";\n IncrementalSource2[IncrementalSource2[\"Font\"] = 10] = \"Font\";\n IncrementalSource2[IncrementalSource2[\"Log\"] = 11] = \"Log\";\n IncrementalSource2[IncrementalSource2[\"Drag\"] = 12] = \"Drag\";\n IncrementalSource2[IncrementalSource2[\"StyleDeclaration\"] = 13] = \"StyleDeclaration\";\n IncrementalSource2[IncrementalSource2[\"Selection\"] = 14] = \"Selection\";\n IncrementalSource2[IncrementalSource2[\"AdoptedStyleSheet\"] = 15] = \"AdoptedStyleSheet\";\n IncrementalSource2[IncrementalSource2[\"CustomElement\"] = 16] = \"CustomElement\";\n return IncrementalSource2;\n})(IncrementalSource || {});\n\nvar Config = {\n DEBUG: false,\n LIB_VERSION: '2.60.0'\n};\n\n// since es6 imports are static and we run unit tests from the console, window won't be defined when importing this file\nvar win;\nif (typeof(window) === 'undefined') {\n var loc = {\n hostname: ''\n };\n win = {\n navigator: { userAgent: '', onLine: true },\n document: {\n createElement: function() { return {}; },\n location: loc,\n referrer: ''\n },\n screen: { width: 0, height: 0 },\n location: loc,\n addEventListener: function() {},\n removeEventListener: function() {}\n };\n} else {\n win = window;\n}\n\nvar setImmediate = win['setImmediate'];\nvar builtInProp, cycle, schedulingQueue,\n ToString = Object.prototype.toString,\n timer = (typeof setImmediate !== 'undefined') ?\n function timer(fn) { return setImmediate(fn); } :\n setTimeout;\n\n// dammit, IE8.\ntry {\n Object.defineProperty({},'x',{});\n builtInProp = function builtInProp(obj,name,val,config) {\n return Object.defineProperty(obj,name,{\n value: val,\n writable: true,\n configurable: config !== false\n });\n };\n}\ncatch (err) {\n builtInProp = function builtInProp(obj,name,val) {\n obj[name] = val;\n return obj;\n };\n}\n\n// Note: using a queue instead of array for efficiency\nschedulingQueue = (function Queue() {\n var first, last, item;\n\n function Item(fn,self) {\n this.fn = fn;\n this.self = self;\n this.next = void 0;\n }\n\n return {\n add: function add(fn,self) {\n item = new Item(fn,self);\n if (last) {\n last.next = item;\n }\n else {\n first = item;\n }\n last = item;\n item = void 0;\n },\n drain: function drain() {\n var f = first;\n first = last = cycle = void 0;\n\n while (f) {\n f.fn.call(f.self);\n f = f.next;\n }\n }\n };\n})();\n\nfunction schedule(fn,self) {\n schedulingQueue.add(fn,self);\n if (!cycle) {\n cycle = timer(schedulingQueue.drain);\n }\n}\n\n// promise duck typing\nfunction isThenable(o) {\n var _then, oType = typeof o;\n\n if (o !== null && (oType === 'object' || oType === 'function')) {\n _then = o.then;\n }\n return typeof _then === 'function' ? _then : false;\n}\n\nfunction notify() {\n for (var i=0; i 0) {\n schedule(notify,self);\n }\n }\n }\n catch (err) {\n reject.call(new MakeDefWrapper(self),err);\n }\n}\n\nfunction reject(msg) {\n var self = this;\n\n // already triggered?\n if (self.triggered) { return; }\n\n self.triggered = true;\n\n // unwrap\n if (self.def) {\n self = self.def;\n }\n\n self.msg = msg;\n self.state = 2;\n if (self.chain.length > 0) {\n schedule(notify,self);\n }\n}\n\nfunction iteratePromises(Constructor,arr,resolver,rejecter) {\n for (var idx=0; idx 0) {\n ret[k] = v;\n }\n });\n return ret;\n};\n\n/*\n * this function returns a copy of object after truncating it. If\n * passed an Array or Object it will iterate through obj and\n * truncate all the values recursively.\n */\n_.truncate = function(obj, length) {\n var ret;\n\n if (typeof(obj) === 'string') {\n ret = obj.slice(0, length);\n } else if (_.isArray(obj)) {\n ret = [];\n _.each(obj, function(val) {\n ret.push(_.truncate(val, length));\n });\n } else if (_.isObject(obj)) {\n ret = {};\n _.each(obj, function(val, key) {\n ret[key] = _.truncate(val, length);\n });\n } else {\n ret = obj;\n }\n\n return ret;\n};\n\n_.JSONEncode = (function() {\n return function(mixed_val) {\n var value = mixed_val;\n var quote = function(string) {\n var escapable = /[\\\\\"\\x00-\\x1f\\x7f-\\x9f\\u00ad\\u0600-\\u0604\\u070f\\u17b4\\u17b5\\u200c-\\u200f\\u2028-\\u202f\\u2060-\\u206f\\ufeff\\ufff0-\\uffff]/g; // eslint-disable-line no-control-regex\n var meta = { // table of character substitutions\n '\\b': '\\\\b',\n '\\t': '\\\\t',\n '\\n': '\\\\n',\n '\\f': '\\\\f',\n '\\r': '\\\\r',\n '\"': '\\\\\"',\n '\\\\': '\\\\\\\\'\n };\n\n escapable.lastIndex = 0;\n return escapable.test(string) ?\n '\"' + string.replace(escapable, function(a) {\n var c = meta[a];\n return typeof c === 'string' ? c :\n '\\\\u' + ('0000' + a.charCodeAt(0).toString(16)).slice(-4);\n }) + '\"' :\n '\"' + string + '\"';\n };\n\n var str = function(key, holder) {\n var gap = '';\n var indent = ' ';\n var i = 0; // The loop counter.\n var k = ''; // The member key.\n var v = ''; // The member value.\n var length = 0;\n var mind = gap;\n var partial = [];\n var value = holder[key];\n\n // If the value has a toJSON method, call it to obtain a replacement value.\n if (value && typeof value === 'object' &&\n typeof value.toJSON === 'function') {\n value = value.toJSON(key);\n }\n\n // What happens next depends on the value's type.\n switch (typeof value) {\n case 'string':\n return quote(value);\n\n case 'number':\n // JSON numbers must be finite. Encode non-finite numbers as null.\n return isFinite(value) ? String(value) : 'null';\n\n case 'boolean':\n case 'null':\n // If the value is a boolean or null, convert it to a string. Note:\n // typeof null does not produce 'null'. The case is included here in\n // the remote chance that this gets fixed someday.\n\n return String(value);\n\n case 'object':\n // If the type is 'object', we might be dealing with an object or an array or\n // null.\n // Due to a specification blunder in ECMAScript, typeof null is 'object',\n // so watch out for that case.\n if (!value) {\n return 'null';\n }\n\n // Make an array to hold the partial results of stringifying this object value.\n gap += indent;\n partial = [];\n\n // Is the value an array?\n if (toString.apply(value) === '[object Array]') {\n // The value is an array. Stringify every element. Use null as a placeholder\n // for non-JSON values.\n\n length = value.length;\n for (i = 0; i < length; i += 1) {\n partial[i] = str(i, value) || 'null';\n }\n\n // Join all of the elements together, separated with commas, and wrap them in\n // brackets.\n v = partial.length === 0 ? '[]' :\n gap ? '[\\n' + gap +\n partial.join(',\\n' + gap) + '\\n' +\n mind + ']' :\n '[' + partial.join(',') + ']';\n gap = mind;\n return v;\n }\n\n // Iterate through all of the keys in the object.\n for (k in value) {\n if (hasOwnProperty.call(value, k)) {\n v = str(k, value);\n if (v) {\n partial.push(quote(k) + (gap ? ': ' : ':') + v);\n }\n }\n }\n\n // Join all of the member texts together, separated with commas,\n // and wrap them in braces.\n v = partial.length === 0 ? '{}' :\n gap ? '{' + partial.join(',') + '' +\n mind + '}' : '{' + partial.join(',') + '}';\n gap = mind;\n return v;\n }\n };\n\n // Make a fake root object containing our value under the key of ''.\n // Return the result of stringifying the value.\n return str('', {\n '': value\n });\n };\n})();\n\n/**\n * From https://github.com/douglascrockford/JSON-js/blob/master/json_parse.js\n * Slightly modified to throw a real Error rather than a POJO\n */\n_.JSONDecode = (function() {\n var at, // The index of the current character\n ch, // The current character\n escapee = {\n '\"': '\"',\n '\\\\': '\\\\',\n '/': '/',\n 'b': '\\b',\n 'f': '\\f',\n 'n': '\\n',\n 'r': '\\r',\n 't': '\\t'\n },\n text,\n error = function(m) {\n var e = new SyntaxError(m);\n e.at = at;\n e.text = text;\n throw e;\n },\n next = function(c) {\n // If a c parameter is provided, verify that it matches the current character.\n if (c && c !== ch) {\n error('Expected \\'' + c + '\\' instead of \\'' + ch + '\\'');\n }\n // Get the next character. When there are no more characters,\n // return the empty string.\n ch = text.charAt(at);\n at += 1;\n return ch;\n },\n number = function() {\n // Parse a number value.\n var number,\n string = '';\n\n if (ch === '-') {\n string = '-';\n next('-');\n }\n while (ch >= '0' && ch <= '9') {\n string += ch;\n next();\n }\n if (ch === '.') {\n string += '.';\n while (next() && ch >= '0' && ch <= '9') {\n string += ch;\n }\n }\n if (ch === 'e' || ch === 'E') {\n string += ch;\n next();\n if (ch === '-' || ch === '+') {\n string += ch;\n next();\n }\n while (ch >= '0' && ch <= '9') {\n string += ch;\n next();\n }\n }\n number = +string;\n if (!isFinite(number)) {\n error('Bad number');\n } else {\n return number;\n }\n },\n\n string = function() {\n // Parse a string value.\n var hex,\n i,\n string = '',\n uffff;\n // When parsing for string values, we must look for \" and \\ characters.\n if (ch === '\"') {\n while (next()) {\n if (ch === '\"') {\n next();\n return string;\n }\n if (ch === '\\\\') {\n next();\n if (ch === 'u') {\n uffff = 0;\n for (i = 0; i < 4; i += 1) {\n hex = parseInt(next(), 16);\n if (!isFinite(hex)) {\n break;\n }\n uffff = uffff * 16 + hex;\n }\n string += String.fromCharCode(uffff);\n } else if (typeof escapee[ch] === 'string') {\n string += escapee[ch];\n } else {\n break;\n }\n } else {\n string += ch;\n }\n }\n }\n error('Bad string');\n },\n white = function() {\n // Skip whitespace.\n while (ch && ch <= ' ') {\n next();\n }\n },\n word = function() {\n // true, false, or null.\n switch (ch) {\n case 't':\n next('t');\n next('r');\n next('u');\n next('e');\n return true;\n case 'f':\n next('f');\n next('a');\n next('l');\n next('s');\n next('e');\n return false;\n case 'n':\n next('n');\n next('u');\n next('l');\n next('l');\n return null;\n }\n error('Unexpected \"' + ch + '\"');\n },\n value, // Placeholder for the value function.\n array = function() {\n // Parse an array value.\n var array = [];\n\n if (ch === '[') {\n next('[');\n white();\n if (ch === ']') {\n next(']');\n return array; // empty array\n }\n while (ch) {\n array.push(value());\n white();\n if (ch === ']') {\n next(']');\n return array;\n }\n next(',');\n white();\n }\n }\n error('Bad array');\n },\n object = function() {\n // Parse an object value.\n var key,\n object = {};\n\n if (ch === '{') {\n next('{');\n white();\n if (ch === '}') {\n next('}');\n return object; // empty object\n }\n while (ch) {\n key = string();\n white();\n next(':');\n if (Object.hasOwnProperty.call(object, key)) {\n error('Duplicate key \"' + key + '\"');\n }\n object[key] = value();\n white();\n if (ch === '}') {\n next('}');\n return object;\n }\n next(',');\n white();\n }\n }\n error('Bad object');\n };\n\n value = function() {\n // Parse a JSON value. It could be an object, an array, a string,\n // a number, or a word.\n white();\n switch (ch) {\n case '{':\n return object();\n case '[':\n return array();\n case '\"':\n return string();\n case '-':\n return number();\n default:\n return ch >= '0' && ch <= '9' ? number() : word();\n }\n };\n\n // Return the json_parse function. It will have access to all of the\n // above functions and variables.\n return function(source) {\n var result;\n\n text = source;\n at = 0;\n ch = ' ';\n result = value();\n white();\n if (ch) {\n error('Syntax error');\n }\n\n return result;\n };\n})();\n\n_.base64Encode = function(data) {\n var b64 = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';\n var o1, o2, o3, h1, h2, h3, h4, bits, i = 0,\n ac = 0,\n enc = '',\n tmp_arr = [];\n\n if (!data) {\n return data;\n }\n\n data = _.utf8Encode(data);\n\n do { // pack three octets into four hexets\n o1 = data.charCodeAt(i++);\n o2 = data.charCodeAt(i++);\n o3 = data.charCodeAt(i++);\n\n bits = o1 << 16 | o2 << 8 | o3;\n\n h1 = bits >> 18 & 0x3f;\n h2 = bits >> 12 & 0x3f;\n h3 = bits >> 6 & 0x3f;\n h4 = bits & 0x3f;\n\n // use hexets to index into b64, and append result to encoded string\n tmp_arr[ac++] = b64.charAt(h1) + b64.charAt(h2) + b64.charAt(h3) + b64.charAt(h4);\n } while (i < data.length);\n\n enc = tmp_arr.join('');\n\n switch (data.length % 3) {\n case 1:\n enc = enc.slice(0, -2) + '==';\n break;\n case 2:\n enc = enc.slice(0, -1) + '=';\n break;\n }\n\n return enc;\n};\n\n_.utf8Encode = function(string) {\n string = (string + '').replace(/\\r\\n/g, '\\n').replace(/\\r/g, '\\n');\n\n var utftext = '',\n start,\n end;\n var stringl = 0,\n n;\n\n start = end = 0;\n stringl = string.length;\n\n for (n = 0; n < stringl; n++) {\n var c1 = string.charCodeAt(n);\n var enc = null;\n\n if (c1 < 128) {\n end++;\n } else if ((c1 > 127) && (c1 < 2048)) {\n enc = String.fromCharCode((c1 >> 6) | 192, (c1 & 63) | 128);\n } else {\n enc = String.fromCharCode((c1 >> 12) | 224, ((c1 >> 6) & 63) | 128, (c1 & 63) | 128);\n }\n if (enc !== null) {\n if (end > start) {\n utftext += string.substring(start, end);\n }\n utftext += enc;\n start = end = n + 1;\n }\n }\n\n if (end > start) {\n utftext += string.substring(start, string.length);\n }\n\n return utftext;\n};\n\n_.UUID = (function() {\n\n // Time-based entropy\n var T = function() {\n var time = 1 * new Date(); // cross-browser version of Date.now()\n var ticks;\n if (win.performance && win.performance.now) {\n ticks = win.performance.now();\n } else {\n // fall back to busy loop\n ticks = 0;\n\n // this while loop figures how many browser ticks go by\n // before 1*new Date() returns a new number, ie the amount\n // of ticks that go by per millisecond\n while (time == 1 * new Date()) {\n ticks++;\n }\n }\n return time.toString(16) + Math.floor(ticks).toString(16);\n };\n\n // Math.Random entropy\n var R = function() {\n return Math.random().toString(16).replace('.', '');\n };\n\n // User agent entropy\n // This function takes the user agent string, and then xors\n // together each sequence of 8 bytes. This produces a final\n // sequence of 8 bytes which it returns as hex.\n var UA = function() {\n var ua = userAgent,\n i, ch, buffer = [],\n ret = 0;\n\n function xor(result, byte_array) {\n var j, tmp = 0;\n for (j = 0; j < byte_array.length; j++) {\n tmp |= (buffer[j] << j * 8);\n }\n return result ^ tmp;\n }\n\n for (i = 0; i < ua.length; i++) {\n ch = ua.charCodeAt(i);\n buffer.unshift(ch & 0xFF);\n if (buffer.length >= 4) {\n ret = xor(ret, buffer);\n buffer = [];\n }\n }\n\n if (buffer.length > 0) {\n ret = xor(ret, buffer);\n }\n\n return ret.toString(16);\n };\n\n return function() {\n var se = (screen.height * screen.width).toString(16);\n return (T() + '-' + R() + '-' + UA() + '-' + se + '-' + T());\n };\n})();\n\n// _.isBlockedUA()\n// This is to block various web spiders from executing our JS and\n// sending false tracking data\nvar BLOCKED_UA_STRS = [\n 'ahrefsbot',\n 'ahrefssiteaudit',\n 'amazonbot',\n 'baiduspider',\n 'bingbot',\n 'bingpreview',\n 'chrome-lighthouse',\n 'facebookexternal',\n 'petalbot',\n 'pinterest',\n 'screaming frog',\n 'yahoo! slurp',\n 'yandex',\n\n // a whole bunch of goog-specific crawlers\n // https://developers.google.com/search/docs/advanced/crawling/overview-google-crawlers\n 'adsbot-google',\n 'apis-google',\n 'duplexweb-google',\n 'feedfetcher-google',\n 'google favicon',\n 'google web preview',\n 'google-read-aloud',\n 'googlebot',\n 'googleweblight',\n 'mediapartners-google',\n 'storebot-google'\n];\n_.isBlockedUA = function(ua) {\n var i;\n ua = ua.toLowerCase();\n for (i = 0; i < BLOCKED_UA_STRS.length; i++) {\n if (ua.indexOf(BLOCKED_UA_STRS[i]) !== -1) {\n return true;\n }\n }\n return false;\n};\n\n/**\n * @param {Object=} formdata\n * @param {string=} arg_separator\n */\n_.HTTPBuildQuery = function(formdata, arg_separator) {\n var use_val, use_key, tmp_arr = [];\n\n if (_.isUndefined(arg_separator)) {\n arg_separator = '&';\n }\n\n _.each(formdata, function(val, key) {\n use_val = encodeURIComponent(val.toString());\n use_key = encodeURIComponent(key);\n tmp_arr[tmp_arr.length] = use_key + '=' + use_val;\n });\n\n return tmp_arr.join(arg_separator);\n};\n\n_.getQueryParam = function(url, param) {\n // Expects a raw URL\n\n param = param.replace(/[[]/g, '\\\\[').replace(/[\\]]/g, '\\\\]');\n var regexS = '[\\\\?&]' + param + '=([^&#]*)',\n regex = new RegExp(regexS),\n results = regex.exec(url);\n if (results === null || (results && typeof(results[1]) !== 'string' && results[1].length)) {\n return '';\n } else {\n var result = results[1];\n try {\n result = decodeURIComponent(result);\n } catch(err) {\n console$1.error('Skipping decoding for malformed query param: ' + result);\n }\n return result.replace(/\\+/g, ' ');\n }\n};\n\n\n// _.cookie\n// Methods partially borrowed from quirksmode.org/js/cookies.html\n_.cookie = {\n get: function(name) {\n var nameEQ = name + '=';\n var ca = document$1.cookie.split(';');\n for (var i = 0; i < ca.length; i++) {\n var c = ca[i];\n while (c.charAt(0) == ' ') {\n c = c.substring(1, c.length);\n }\n if (c.indexOf(nameEQ) === 0) {\n return decodeURIComponent(c.substring(nameEQ.length, c.length));\n }\n }\n return null;\n },\n\n parse: function(name) {\n var cookie;\n try {\n cookie = _.JSONDecode(_.cookie.get(name)) || {};\n } catch (err) {\n // noop\n }\n return cookie;\n },\n\n set_seconds: function(name, value, seconds, is_cross_subdomain, is_secure, is_cross_site, domain_override) {\n var cdomain = '',\n expires = '',\n secure = '';\n\n if (domain_override) {\n cdomain = '; domain=' + domain_override;\n } else if (is_cross_subdomain) {\n var domain = extract_domain(document$1.location.hostname);\n cdomain = domain ? '; domain=.' + domain : '';\n }\n\n if (seconds) {\n var date = new Date();\n date.setTime(date.getTime() + (seconds * 1000));\n expires = '; expires=' + date.toGMTString();\n }\n\n if (is_cross_site) {\n is_secure = true;\n secure = '; SameSite=None';\n }\n if (is_secure) {\n secure += '; secure';\n }\n\n document$1.cookie = name + '=' + encodeURIComponent(value) + expires + '; path=/' + cdomain + secure;\n },\n\n set: function(name, value, days, is_cross_subdomain, is_secure, is_cross_site, domain_override) {\n var cdomain = '', expires = '', secure = '';\n\n if (domain_override) {\n cdomain = '; domain=' + domain_override;\n } else if (is_cross_subdomain) {\n var domain = extract_domain(document$1.location.hostname);\n cdomain = domain ? '; domain=.' + domain : '';\n }\n\n if (days) {\n var date = new Date();\n date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000));\n expires = '; expires=' + date.toGMTString();\n }\n\n if (is_cross_site) {\n is_secure = true;\n secure = '; SameSite=None';\n }\n if (is_secure) {\n secure += '; secure';\n }\n\n var new_cookie_val = name + '=' + encodeURIComponent(value) + expires + '; path=/' + cdomain + secure;\n document$1.cookie = new_cookie_val;\n return new_cookie_val;\n },\n\n remove: function(name, is_cross_subdomain, domain_override) {\n _.cookie.set(name, '', -1, is_cross_subdomain, false, false, domain_override);\n }\n};\n\nvar _localStorageSupported = null;\nvar localStorageSupported = function(storage, forceCheck) {\n if (_localStorageSupported !== null && !forceCheck) {\n return _localStorageSupported;\n }\n\n var supported = true;\n try {\n storage = storage || win.localStorage;\n var key = '__mplss_' + cheap_guid(8),\n val = 'xyz';\n storage.setItem(key, val);\n if (storage.getItem(key) !== val) {\n supported = false;\n }\n storage.removeItem(key);\n } catch (err) {\n supported = false;\n }\n\n _localStorageSupported = supported;\n return supported;\n};\n\n// _.localStorage\n_.localStorage = {\n is_supported: function(force_check) {\n var supported = localStorageSupported(null, force_check);\n if (!supported) {\n console$1.error('localStorage unsupported; falling back to cookie store');\n }\n return supported;\n },\n\n error: function(msg) {\n console$1.error('localStorage error: ' + msg);\n },\n\n get: function(name) {\n try {\n return win.localStorage.getItem(name);\n } catch (err) {\n _.localStorage.error(err);\n }\n return null;\n },\n\n parse: function(name) {\n try {\n return _.JSONDecode(_.localStorage.get(name)) || {};\n } catch (err) {\n // noop\n }\n return null;\n },\n\n set: function(name, value) {\n try {\n win.localStorage.setItem(name, value);\n } catch (err) {\n _.localStorage.error(err);\n }\n },\n\n remove: function(name) {\n try {\n win.localStorage.removeItem(name);\n } catch (err) {\n _.localStorage.error(err);\n }\n }\n};\n\n_.register_event = (function() {\n // written by Dean Edwards, 2005\n // with input from Tino Zijdel - crisp@xs4all.nl\n // with input from Carl Sverre - mail@carlsverre.com\n // with input from Mixpanel\n // http://dean.edwards.name/weblog/2005/10/add-event/\n // https://gist.github.com/1930440\n\n /**\n * @param {Object} element\n * @param {string} type\n * @param {function(...*)} handler\n * @param {boolean=} oldSchool\n * @param {boolean=} useCapture\n */\n var register_event = function(element, type, handler, oldSchool, useCapture) {\n if (!element) {\n console$1.error('No valid element provided to register_event');\n return;\n }\n\n if (element.addEventListener && !oldSchool) {\n element.addEventListener(type, handler, !!useCapture);\n } else {\n var ontype = 'on' + type;\n var old_handler = element[ontype]; // can be undefined\n element[ontype] = makeHandler(element, handler, old_handler);\n }\n };\n\n function makeHandler(element, new_handler, old_handlers) {\n var handler = function(event) {\n event = event || fixEvent(win.event);\n\n // this basically happens in firefox whenever another script\n // overwrites the onload callback and doesn't pass the event\n // object to previously defined callbacks. All the browsers\n // that don't define window.event implement addEventListener\n // so the dom_loaded handler will still be fired as usual.\n if (!event) {\n return undefined;\n }\n\n var ret = true;\n var old_result, new_result;\n\n if (_.isFunction(old_handlers)) {\n old_result = old_handlers(event);\n }\n new_result = new_handler.call(element, event);\n\n if ((false === old_result) || (false === new_result)) {\n ret = false;\n }\n\n return ret;\n };\n\n return handler;\n }\n\n function fixEvent(event) {\n if (event) {\n event.preventDefault = fixEvent.preventDefault;\n event.stopPropagation = fixEvent.stopPropagation;\n }\n return event;\n }\n fixEvent.preventDefault = function() {\n this.returnValue = false;\n };\n fixEvent.stopPropagation = function() {\n this.cancelBubble = true;\n };\n\n return register_event;\n})();\n\n\nvar TOKEN_MATCH_REGEX = new RegExp('^(\\\\w*)\\\\[(\\\\w+)([=~\\\\|\\\\^\\\\$\\\\*]?)=?\"?([^\\\\]\"]*)\"?\\\\]$');\n\n_.dom_query = (function() {\n /* document.getElementsBySelector(selector)\n - returns an array of element objects from the current document\n matching the CSS selector. Selectors can contain element names,\n class names and ids and can be nested. For example:\n\n elements = document.getElementsBySelector('div#main p a.external')\n\n Will return an array of all 'a' elements with 'external' in their\n class attribute that are contained inside 'p' elements that are\n contained inside the 'div' element which has id=\"main\"\n\n New in version 0.4: Support for CSS2 and CSS3 attribute selectors:\n See http://www.w3.org/TR/css3-selectors/#attribute-selectors\n\n Version 0.4 - Simon Willison, March 25th 2003\n -- Works in Phoenix 0.5, Mozilla 1.3, Opera 7, Internet Explorer 6, Internet Explorer 5 on Windows\n -- Opera 7 fails\n\n Version 0.5 - Carl Sverre, Jan 7th 2013\n -- Now uses jQuery-esque `hasClass` for testing class name\n equality. This fixes a bug related to '-' characters being\n considered not part of a 'word' in regex.\n */\n\n function getAllChildren(e) {\n // Returns all children of element. Workaround required for IE5/Windows. Ugh.\n return e.all ? e.all : e.getElementsByTagName('*');\n }\n\n var bad_whitespace = /[\\t\\r\\n]/g;\n\n function hasClass(elem, selector) {\n var className = ' ' + selector + ' ';\n return ((' ' + elem.className + ' ').replace(bad_whitespace, ' ').indexOf(className) >= 0);\n }\n\n function getElementsBySelector(selector) {\n // Attempt to fail gracefully in lesser browsers\n if (!document$1.getElementsByTagName) {\n return [];\n }\n // Split selector in to tokens\n var tokens = selector.split(' ');\n var token, bits, tagName, found, foundCount, i, j, k, elements, currentContextIndex;\n var currentContext = [document$1];\n for (i = 0; i < tokens.length; i++) {\n token = tokens[i].replace(/^\\s+/, '').replace(/\\s+$/, '');\n if (token.indexOf('#') > -1) {\n // Token is an ID selector\n bits = token.split('#');\n tagName = bits[0];\n var id = bits[1];\n var element = document$1.getElementById(id);\n if (!element || (tagName && element.nodeName.toLowerCase() != tagName)) {\n // element not found or tag with that ID not found, return false\n return [];\n }\n // Set currentContext to contain just this element\n currentContext = [element];\n continue; // Skip to next token\n }\n if (token.indexOf('.') > -1) {\n // Token contains a class selector\n bits = token.split('.');\n tagName = bits[0];\n var className = bits[1];\n if (!tagName) {\n tagName = '*';\n }\n // Get elements matching tag, filter them for class selector\n found = [];\n foundCount = 0;\n for (j = 0; j < currentContext.length; j++) {\n if (tagName == '*') {\n elements = getAllChildren(currentContext[j]);\n } else {\n elements = currentContext[j].getElementsByTagName(tagName);\n }\n for (k = 0; k < elements.length; k++) {\n found[foundCount++] = elements[k];\n }\n }\n currentContext = [];\n currentContextIndex = 0;\n for (j = 0; j < found.length; j++) {\n if (found[j].className &&\n _.isString(found[j].className) && // some SVG elements have classNames which are not strings\n hasClass(found[j], className)\n ) {\n currentContext[currentContextIndex++] = found[j];\n }\n }\n continue; // Skip to next token\n }\n // Code to deal with attribute selectors\n var token_match = token.match(TOKEN_MATCH_REGEX);\n if (token_match) {\n tagName = token_match[1];\n var attrName = token_match[2];\n var attrOperator = token_match[3];\n var attrValue = token_match[4];\n if (!tagName) {\n tagName = '*';\n }\n // Grab all of the tagName elements within current context\n found = [];\n foundCount = 0;\n for (j = 0; j < currentContext.length; j++) {\n if (tagName == '*') {\n elements = getAllChildren(currentContext[j]);\n } else {\n elements = currentContext[j].getElementsByTagName(tagName);\n }\n for (k = 0; k < elements.length; k++) {\n found[foundCount++] = elements[k];\n }\n }\n currentContext = [];\n currentContextIndex = 0;\n var checkFunction; // This function will be used to filter the elements\n switch (attrOperator) {\n case '=': // Equality\n checkFunction = function(e) {\n return (e.getAttribute(attrName) == attrValue);\n };\n break;\n case '~': // Match one of space seperated words\n checkFunction = function(e) {\n return (e.getAttribute(attrName).match(new RegExp('\\\\b' + attrValue + '\\\\b')));\n };\n break;\n case '|': // Match start with value followed by optional hyphen\n checkFunction = function(e) {\n return (e.getAttribute(attrName).match(new RegExp('^' + attrValue + '-?')));\n };\n break;\n case '^': // Match starts with value\n checkFunction = function(e) {\n return (e.getAttribute(attrName).indexOf(attrValue) === 0);\n };\n break;\n case '$': // Match ends with value - fails with \"Warning\" in Opera 7\n checkFunction = function(e) {\n return (e.getAttribute(attrName).lastIndexOf(attrValue) == e.getAttribute(attrName).length - attrValue.length);\n };\n break;\n case '*': // Match ends with value\n checkFunction = function(e) {\n return (e.getAttribute(attrName).indexOf(attrValue) > -1);\n };\n break;\n default:\n // Just test for existence of attribute\n checkFunction = function(e) {\n return e.getAttribute(attrName);\n };\n }\n currentContext = [];\n currentContextIndex = 0;\n for (j = 0; j < found.length; j++) {\n if (checkFunction(found[j])) {\n currentContext[currentContextIndex++] = found[j];\n }\n }\n // alert('Attribute Selector: '+tagName+' '+attrName+' '+attrOperator+' '+attrValue);\n continue; // Skip to next token\n }\n // If we get here, token is JUST an element (not a class or ID selector)\n tagName = token;\n found = [];\n foundCount = 0;\n for (j = 0; j < currentContext.length; j++) {\n elements = currentContext[j].getElementsByTagName(tagName);\n for (k = 0; k < elements.length; k++) {\n found[foundCount++] = elements[k];\n }\n }\n currentContext = found;\n }\n return currentContext;\n }\n\n return function(query) {\n if (_.isElement(query)) {\n return [query];\n } else if (_.isObject(query) && !_.isUndefined(query.length)) {\n return query;\n } else {\n return getElementsBySelector.call(this, query);\n }\n };\n})();\n\nvar CAMPAIGN_KEYWORDS = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_content', 'utm_term', 'utm_id', 'utm_source_platform','utm_campaign_id', 'utm_creative_format', 'utm_marketing_tactic'];\nvar CLICK_IDS = ['dclid', 'fbclid', 'gclid', 'ko_click_id', 'li_fat_id', 'msclkid', 'sccid', 'ttclid', 'twclid', 'wbraid'];\n\n_.info = {\n campaignParams: function(default_value) {\n var kw = '',\n params = {};\n _.each(CAMPAIGN_KEYWORDS, function(kwkey) {\n kw = _.getQueryParam(document$1.URL, kwkey);\n if (kw.length) {\n params[kwkey] = kw;\n } else if (default_value !== undefined) {\n params[kwkey] = default_value;\n }\n });\n\n return params;\n },\n\n clickParams: function() {\n var id = '',\n params = {};\n _.each(CLICK_IDS, function(idkey) {\n id = _.getQueryParam(document$1.URL, idkey);\n if (id.length) {\n params[idkey] = id;\n }\n });\n\n return params;\n },\n\n marketingParams: function() {\n return _.extend(_.info.campaignParams(), _.info.clickParams());\n },\n\n searchEngine: function(referrer) {\n if (referrer.search('https?://(.*)google.([^/?]*)') === 0) {\n return 'google';\n } else if (referrer.search('https?://(.*)bing.com') === 0) {\n return 'bing';\n } else if (referrer.search('https?://(.*)yahoo.com') === 0) {\n return 'yahoo';\n } else if (referrer.search('https?://(.*)duckduckgo.com') === 0) {\n return 'duckduckgo';\n } else {\n return null;\n }\n },\n\n searchInfo: function(referrer) {\n var search = _.info.searchEngine(referrer),\n param = (search != 'yahoo') ? 'q' : 'p',\n ret = {};\n\n if (search !== null) {\n ret['$search_engine'] = search;\n\n var keyword = _.getQueryParam(referrer, param);\n if (keyword.length) {\n ret['mp_keyword'] = keyword;\n }\n }\n\n return ret;\n },\n\n /**\n * This function detects which browser is running this script.\n * The order of the checks are important since many user agents\n * include key words used in later checks.\n */\n browser: function(user_agent, vendor, opera) {\n vendor = vendor || ''; // vendor is undefined for at least IE9\n if (opera || _.includes(user_agent, ' OPR/')) {\n if (_.includes(user_agent, 'Mini')) {\n return 'Opera Mini';\n }\n return 'Opera';\n } else if (/(BlackBerry|PlayBook|BB10)/i.test(user_agent)) {\n return 'BlackBerry';\n } else if (_.includes(user_agent, 'IEMobile') || _.includes(user_agent, 'WPDesktop')) {\n return 'Internet Explorer Mobile';\n } else if (_.includes(user_agent, 'SamsungBrowser/')) {\n // https://developer.samsung.com/internet/user-agent-string-format\n return 'Samsung Internet';\n } else if (_.includes(user_agent, 'Edge') || _.includes(user_agent, 'Edg/')) {\n return 'Microsoft Edge';\n } else if (_.includes(user_agent, 'FBIOS')) {\n return 'Facebook Mobile';\n } else if (_.includes(user_agent, 'Chrome')) {\n return 'Chrome';\n } else if (_.includes(user_agent, 'CriOS')) {\n return 'Chrome iOS';\n } else if (_.includes(user_agent, 'UCWEB') || _.includes(user_agent, 'UCBrowser')) {\n return 'UC Browser';\n } else if (_.includes(user_agent, 'FxiOS')) {\n return 'Firefox iOS';\n } else if (_.includes(vendor, 'Apple')) {\n if (_.includes(user_agent, 'Mobile')) {\n return 'Mobile Safari';\n }\n return 'Safari';\n } else if (_.includes(user_agent, 'Android')) {\n return 'Android Mobile';\n } else if (_.includes(user_agent, 'Konqueror')) {\n return 'Konqueror';\n } else if (_.includes(user_agent, 'Firefox')) {\n return 'Firefox';\n } else if (_.includes(user_agent, 'MSIE') || _.includes(user_agent, 'Trident/')) {\n return 'Internet Explorer';\n } else if (_.includes(user_agent, 'Gecko')) {\n return 'Mozilla';\n } else {\n return '';\n }\n },\n\n /**\n * This function detects which browser version is running this script,\n * parsing major and minor version (e.g., 42.1). User agent strings from:\n * http://www.useragentstring.com/pages/useragentstring.php\n */\n browserVersion: function(userAgent, vendor, opera) {\n var browser = _.info.browser(userAgent, vendor, opera);\n var versionRegexs = {\n 'Internet Explorer Mobile': /rv:(\\d+(\\.\\d+)?)/,\n 'Microsoft Edge': /Edge?\\/(\\d+(\\.\\d+)?)/,\n 'Chrome': /Chrome\\/(\\d+(\\.\\d+)?)/,\n 'Chrome iOS': /CriOS\\/(\\d+(\\.\\d+)?)/,\n 'UC Browser' : /(UCBrowser|UCWEB)\\/(\\d+(\\.\\d+)?)/,\n 'Safari': /Version\\/(\\d+(\\.\\d+)?)/,\n 'Mobile Safari': /Version\\/(\\d+(\\.\\d+)?)/,\n 'Opera': /(Opera|OPR)\\/(\\d+(\\.\\d+)?)/,\n 'Firefox': /Firefox\\/(\\d+(\\.\\d+)?)/,\n 'Firefox iOS': /FxiOS\\/(\\d+(\\.\\d+)?)/,\n 'Konqueror': /Konqueror:(\\d+(\\.\\d+)?)/,\n 'BlackBerry': /BlackBerry (\\d+(\\.\\d+)?)/,\n 'Android Mobile': /android\\s(\\d+(\\.\\d+)?)/,\n 'Samsung Internet': /SamsungBrowser\\/(\\d+(\\.\\d+)?)/,\n 'Internet Explorer': /(rv:|MSIE )(\\d+(\\.\\d+)?)/,\n 'Mozilla': /rv:(\\d+(\\.\\d+)?)/\n };\n var regex = versionRegexs[browser];\n if (regex === undefined) {\n return null;\n }\n var matches = userAgent.match(regex);\n if (!matches) {\n return null;\n }\n return parseFloat(matches[matches.length - 2]);\n },\n\n os: function() {\n var a = userAgent;\n if (/Windows/i.test(a)) {\n if (/Phone/.test(a) || /WPDesktop/.test(a)) {\n return 'Windows Phone';\n }\n return 'Windows';\n } else if (/(iPhone|iPad|iPod)/.test(a)) {\n return 'iOS';\n } else if (/Android/.test(a)) {\n return 'Android';\n } else if (/(BlackBerry|PlayBook|BB10)/i.test(a)) {\n return 'BlackBerry';\n } else if (/Mac/i.test(a)) {\n return 'Mac OS X';\n } else if (/Linux/.test(a)) {\n return 'Linux';\n } else if (/CrOS/.test(a)) {\n return 'Chrome OS';\n } else {\n return '';\n }\n },\n\n device: function(user_agent) {\n if (/Windows Phone/i.test(user_agent) || /WPDesktop/.test(user_agent)) {\n return 'Windows Phone';\n } else if (/iPad/.test(user_agent)) {\n return 'iPad';\n } else if (/iPod/.test(user_agent)) {\n return 'iPod Touch';\n } else if (/iPhone/.test(user_agent)) {\n return 'iPhone';\n } else if (/(BlackBerry|PlayBook|BB10)/i.test(user_agent)) {\n return 'BlackBerry';\n } else if (/Android/.test(user_agent)) {\n return 'Android';\n } else {\n return '';\n }\n },\n\n referringDomain: function(referrer) {\n var split = referrer.split('/');\n if (split.length >= 3) {\n return split[2];\n }\n return '';\n },\n\n currentUrl: function() {\n return win.location.href;\n },\n\n properties: function(extra_props) {\n if (typeof extra_props !== 'object') {\n extra_props = {};\n }\n return _.extend(_.strip_empty_properties({\n '$os': _.info.os(),\n '$browser': _.info.browser(userAgent, navigator.vendor, windowOpera),\n '$referrer': document$1.referrer,\n '$referring_domain': _.info.referringDomain(document$1.referrer),\n '$device': _.info.device(userAgent)\n }), {\n '$current_url': _.info.currentUrl(),\n '$browser_version': _.info.browserVersion(userAgent, navigator.vendor, windowOpera),\n '$screen_height': screen.height,\n '$screen_width': screen.width,\n 'mp_lib': 'web',\n '$lib_version': Config.LIB_VERSION,\n '$insert_id': cheap_guid(),\n 'time': _.timestamp() / 1000 // epoch time in seconds\n }, _.strip_empty_properties(extra_props));\n },\n\n people_properties: function() {\n return _.extend(_.strip_empty_properties({\n '$os': _.info.os(),\n '$browser': _.info.browser(userAgent, navigator.vendor, windowOpera)\n }), {\n '$browser_version': _.info.browserVersion(userAgent, navigator.vendor, windowOpera)\n });\n },\n\n mpPageViewProperties: function() {\n return _.strip_empty_properties({\n 'current_page_title': document$1.title,\n 'current_domain': win.location.hostname,\n 'current_url_path': win.location.pathname,\n 'current_url_protocol': win.location.protocol,\n 'current_url_search': win.location.search\n });\n }\n};\n\nvar cheap_guid = function(maxlen) {\n var guid = Math.random().toString(36).substring(2, 10) + Math.random().toString(36).substring(2, 10);\n return maxlen ? guid.substring(0, maxlen) : guid;\n};\n\n// naive way to extract domain name (example.com) from full hostname (my.sub.example.com)\nvar SIMPLE_DOMAIN_MATCH_REGEX = /[a-z0-9][a-z0-9-]*\\.[a-z]+$/i;\n// this next one attempts to account for some ccSLDs, e.g. extracting oxford.ac.uk from www.oxford.ac.uk\nvar DOMAIN_MATCH_REGEX = /[a-z0-9][a-z0-9-]+\\.[a-z.]{2,6}$/i;\n/**\n * Attempts to extract main domain name from full hostname, using a few blunt heuristics. For\n * common TLDs like .com/.org that always have a simple SLD.TLD structure (example.com), we\n * simply extract the last two .-separated parts of the hostname (SIMPLE_DOMAIN_MATCH_REGEX).\n * For others, we attempt to account for short ccSLD+TLD combos (.ac.uk) with the legacy\n * DOMAIN_MATCH_REGEX (kept to maintain backwards compatibility with existing Mixpanel\n * integrations). The only _reliable_ way to extract domain from hostname is with an up-to-date\n * list like at https://publicsuffix.org/ so for cases that this helper fails at, the SDK\n * offers the 'cookie_domain' config option to set it explicitly.\n * @example\n * extract_domain('my.sub.example.com')\n * // 'example.com'\n */\nvar extract_domain = function(hostname) {\n var domain_regex = DOMAIN_MATCH_REGEX;\n var parts = hostname.split('.');\n var tld = parts[parts.length - 1];\n if (tld.length > 4 || tld === 'com' || tld === 'org') {\n domain_regex = SIMPLE_DOMAIN_MATCH_REGEX;\n }\n var matches = hostname.match(domain_regex);\n return matches ? matches[0] : '';\n};\n\n/**\n * Check whether we have network connection. default to true for browsers that don't support navigator.onLine (IE)\n * @returns {boolean}\n */\nvar isOnline = function() {\n var onLine = win.navigator['onLine'];\n return _.isUndefined(onLine) || onLine;\n};\n\nvar JSONStringify = null, JSONParse = null;\nif (typeof JSON !== 'undefined') {\n JSONStringify = JSON.stringify;\n JSONParse = JSON.parse;\n}\nJSONStringify = JSONStringify || _.JSONEncode;\nJSONParse = JSONParse || _.JSONDecode;\n\n// EXPORTS (for closure compiler)\n_['toArray'] = _.toArray;\n_['isObject'] = _.isObject;\n_['JSONEncode'] = _.JSONEncode;\n_['JSONDecode'] = _.JSONDecode;\n_['isBlockedUA'] = _.isBlockedUA;\n_['isEmptyObject'] = _.isEmptyObject;\n_['info'] = _.info;\n_['info']['device'] = _.info.device;\n_['info']['browser'] = _.info.browser;\n_['info']['browserVersion'] = _.info.browserVersion;\n_['info']['properties'] = _.info.properties;\n_['NPO'] = NpoPromise;\n\n/**\n * GDPR utils\n *\n * The General Data Protection Regulation (GDPR) is a regulation in EU law on data protection\n * and privacy for all individuals within the European Union. It addresses the export of personal\n * data outside the EU. The GDPR aims primarily to give control back to citizens and residents\n * over their personal data and to simplify the regulatory environment for international business\n * by unifying the regulation within the EU.\n *\n * This set of utilities is intended to enable opt in/out functionality in the Mixpanel JS SDK.\n * These functions are used internally by the SDK and are not intended to be publicly exposed.\n */\n\n/**\n * A function used to track a Mixpanel event (e.g. MixpanelLib.track)\n * @callback trackFunction\n * @param {String} event_name The name of the event. This can be anything the user does - 'Button Click', 'Sign Up', 'Item Purchased', etc.\n * @param {Object} [properties] A set of properties to include with the event you're sending. These describe the user who did the event or details about the event itself.\n * @param {Function} [callback] If provided, the callback function will be called after tracking the event.\n */\n\n/** Public **/\n\nvar GDPR_DEFAULT_PERSISTENCE_PREFIX = '__mp_opt_in_out_';\n\n/**\n * Opt the user in to data tracking and cookies/localstorage for the given token\n * @param {string} token - Mixpanel project tracking token\n * @param {Object} [options]\n * @param {trackFunction} [options.track] - function used for tracking a Mixpanel event to record the opt-in action\n * @param {string} [options.trackEventName] - event name to be used for tracking the opt-in action\n * @param {Object} [options.trackProperties] - set of properties to be tracked along with the opt-in action\n * @param {string} [options.persistenceType] Persistence mechanism used - cookie or localStorage\n * @param {string} [options.persistencePrefix=__mp_opt_in_out] - custom prefix to be used in the cookie/localstorage name\n * @param {Number} [options.cookieExpiration] - number of days until the opt-in cookie expires\n * @param {string} [options.cookieDomain] - custom cookie domain\n * @param {boolean} [options.crossSiteCookie] - whether the opt-in cookie is set as cross-site-enabled\n * @param {boolean} [options.crossSubdomainCookie] - whether the opt-in cookie is set as cross-subdomain or not\n * @param {boolean} [options.secureCookie] - whether the opt-in cookie is set as secure or not\n */\nfunction optIn(token, options) {\n _optInOut(true, token, options);\n}\n\n/**\n * Opt the user out of data tracking and cookies/localstorage for the given token\n * @param {string} token - Mixpanel project tracking token\n * @param {Object} [options]\n * @param {string} [options.persistenceType] Persistence mechanism used - cookie or localStorage\n * @param {string} [options.persistencePrefix=__mp_opt_in_out] - custom prefix to be used in the cookie/localstorage name\n * @param {Number} [options.cookieExpiration] - number of days until the opt-out cookie expires\n * @param {string} [options.cookieDomain] - custom cookie domain\n * @param {boolean} [options.crossSiteCookie] - whether the opt-in cookie is set as cross-site-enabled\n * @param {boolean} [options.crossSubdomainCookie] - whether the opt-out cookie is set as cross-subdomain or not\n * @param {boolean} [options.secureCookie] - whether the opt-out cookie is set as secure or not\n */\nfunction optOut(token, options) {\n _optInOut(false, token, options);\n}\n\n/**\n * Check whether the user has opted in to data tracking and cookies/localstorage for the given token\n * @param {string} token - Mixpanel project tracking token\n * @param {Object} [options]\n * @param {string} [options.persistenceType] Persistence mechanism used - cookie or localStorage\n * @param {string} [options.persistencePrefix=__mp_opt_in_out] - custom prefix to be used in the cookie/localstorage name\n * @returns {boolean} whether the user has opted in to the given opt type\n */\nfunction hasOptedIn(token, options) {\n return _getStorageValue(token, options) === '1';\n}\n\n/**\n * Check whether the user has opted out of data tracking and cookies/localstorage for the given token\n * @param {string} token - Mixpanel project tracking token\n * @param {Object} [options]\n * @param {string} [options.persistenceType] Persistence mechanism used - cookie or localStorage\n * @param {string} [options.persistencePrefix=__mp_opt_in_out] - custom prefix to be used in the cookie/localstorage name\n * @param {boolean} [options.ignoreDnt] - flag to ignore browser DNT settings and always return false\n * @returns {boolean} whether the user has opted out of the given opt type\n */\nfunction hasOptedOut(token, options) {\n if (_hasDoNotTrackFlagOn(options)) {\n console$1.warn('This browser has \"Do Not Track\" enabled. This will prevent the Mixpanel SDK from sending any data. To ignore the \"Do Not Track\" browser setting, initialize the Mixpanel instance with the config \"ignore_dnt: true\"');\n return true;\n }\n var optedOut = _getStorageValue(token, options) === '0';\n if (optedOut) {\n console$1.warn('You are opted out of Mixpanel tracking. This will prevent the Mixpanel SDK from sending any data.');\n }\n return optedOut;\n}\n\n/**\n * Wrap a MixpanelLib method with a check for whether the user is opted out of data tracking and cookies/localstorage for the given token\n * If the user has opted out, return early instead of executing the method.\n * If a callback argument was provided, execute it passing the 0 error code.\n * @param {function} method - wrapped method to be executed if the user has not opted out\n * @returns {*} the result of executing method OR undefined if the user has opted out\n */\nfunction addOptOutCheckMixpanelLib(method) {\n return _addOptOutCheck(method, function(name) {\n return this.get_config(name);\n });\n}\n\n/**\n * Wrap a MixpanelPeople method with a check for whether the user is opted out of data tracking and cookies/localstorage for the given token\n * If the user has opted out, return early instead of executing the method.\n * If a callback argument was provided, execute it passing the 0 error code.\n * @param {function} method - wrapped method to be executed if the user has not opted out\n * @returns {*} the result of executing method OR undefined if the user has opted out\n */\nfunction addOptOutCheckMixpanelPeople(method) {\n return _addOptOutCheck(method, function(name) {\n return this._get_config(name);\n });\n}\n\n/**\n * Wrap a MixpanelGroup method with a check for whether the user is opted out of data tracking and cookies/localstorage for the given token\n * If the user has opted out, return early instead of executing the method.\n * If a callback argument was provided, execute it passing the 0 error code.\n * @param {function} method - wrapped method to be executed if the user has not opted out\n * @returns {*} the result of executing method OR undefined if the user has opted out\n */\nfunction addOptOutCheckMixpanelGroup(method) {\n return _addOptOutCheck(method, function(name) {\n return this._get_config(name);\n });\n}\n\n/**\n * Clear the user's opt in/out status of data tracking and cookies/localstorage for the given token\n * @param {string} token - Mixpanel project tracking token\n * @param {Object} [options]\n * @param {string} [options.persistenceType] Persistence mechanism used - cookie or localStorage\n * @param {string} [options.persistencePrefix=__mp_opt_in_out] - custom prefix to be used in the cookie/localstorage name\n * @param {Number} [options.cookieExpiration] - number of days until the opt-in cookie expires\n * @param {string} [options.cookieDomain] - custom cookie domain\n * @param {boolean} [options.crossSiteCookie] - whether the opt-in cookie is set as cross-site-enabled\n * @param {boolean} [options.crossSubdomainCookie] - whether the opt-in cookie is set as cross-subdomain or not\n * @param {boolean} [options.secureCookie] - whether the opt-in cookie is set as secure or not\n */\nfunction clearOptInOut(token, options) {\n options = options || {};\n _getStorage(options).remove(\n _getStorageKey(token, options), !!options.crossSubdomainCookie, options.cookieDomain\n );\n}\n\n/** Private **/\n\n/**\n * Get storage util\n * @param {Object} [options]\n * @param {string} [options.persistenceType]\n * @returns {object} either _.cookie or _.localstorage\n */\nfunction _getStorage(options) {\n options = options || {};\n return options.persistenceType === 'localStorage' ? _.localStorage : _.cookie;\n}\n\n/**\n * Get the name of the cookie that is used for the given opt type (tracking, cookie, etc.)\n * @param {string} token - Mixpanel project tracking token\n * @param {Object} [options]\n * @param {string} [options.persistencePrefix=__mp_opt_in_out] - custom prefix to be used in the cookie/localstorage name\n * @returns {string} the name of the cookie for the given opt type\n */\nfunction _getStorageKey(token, options) {\n options = options || {};\n return (options.persistencePrefix || GDPR_DEFAULT_PERSISTENCE_PREFIX) + token;\n}\n\n/**\n * Get the value of the cookie that is used for the given opt type (tracking, cookie, etc.)\n * @param {string} token - Mixpanel project tracking token\n * @param {Object} [options]\n * @param {string} [options.persistencePrefix=__mp_opt_in_out] - custom prefix to be used in the cookie/localstorage name\n * @returns {string} the value of the cookie for the given opt type\n */\nfunction _getStorageValue(token, options) {\n return _getStorage(options).get(_getStorageKey(token, options));\n}\n\n/**\n * Check whether the user has set the DNT/doNotTrack setting to true in their browser\n * @param {Object} [options]\n * @param {string} [options.window] - alternate window object to check; used to force various DNT settings in browser tests\n * @param {boolean} [options.ignoreDnt] - flag to ignore browser DNT settings and always return false\n * @returns {boolean} whether the DNT setting is true\n */\nfunction _hasDoNotTrackFlagOn(options) {\n if (options && options.ignoreDnt) {\n return false;\n }\n var win$1 = (options && options.window) || win;\n var nav = win$1['navigator'] || {};\n var hasDntOn = false;\n\n _.each([\n nav['doNotTrack'], // standard\n nav['msDoNotTrack'],\n win$1['doNotTrack']\n ], function(dntValue) {\n if (_.includes([true, 1, '1', 'yes'], dntValue)) {\n hasDntOn = true;\n }\n });\n\n return hasDntOn;\n}\n\n/**\n * Set cookie/localstorage for the user indicating that they are opted in or out for the given opt type\n * @param {boolean} optValue - whether to opt the user in or out for the given opt type\n * @param {string} token - Mixpanel project tracking token\n * @param {Object} [options]\n * @param {trackFunction} [options.track] - function used for tracking a Mixpanel event to record the opt-in action\n * @param {string} [options.trackEventName] - event name to be used for tracking the opt-in action\n * @param {Object} [options.trackProperties] - set of properties to be tracked along with the opt-in action\n * @param {string} [options.persistencePrefix=__mp_opt_in_out] - custom prefix to be used in the cookie/localstorage name\n * @param {Number} [options.cookieExpiration] - number of days until the opt-in cookie expires\n * @param {string} [options.cookieDomain] - custom cookie domain\n * @param {boolean} [options.crossSiteCookie] - whether the opt-in cookie is set as cross-site-enabled\n * @param {boolean} [options.crossSubdomainCookie] - whether the opt-in cookie is set as cross-subdomain or not\n * @param {boolean} [options.secureCookie] - whether the opt-in cookie is set as secure or not\n */\nfunction _optInOut(optValue, token, options) {\n if (!_.isString(token) || !token.length) {\n console$1.error('gdpr.' + (optValue ? 'optIn' : 'optOut') + ' called with an invalid token');\n return;\n }\n\n options = options || {};\n\n _getStorage(options).set(\n _getStorageKey(token, options),\n optValue ? 1 : 0,\n _.isNumber(options.cookieExpiration) ? options.cookieExpiration : null,\n !!options.crossSubdomainCookie,\n !!options.secureCookie,\n !!options.crossSiteCookie,\n options.cookieDomain\n );\n\n if (options.track && optValue) { // only track event if opting in (optValue=true)\n options.track(options.trackEventName || '$opt_in', options.trackProperties, {\n 'send_immediately': true\n });\n }\n}\n\n/**\n * Wrap a method with a check for whether the user is opted out of data tracking and cookies/localstorage for the given token\n * If the user has opted out, return early instead of executing the method.\n * If a callback argument was provided, execute it passing the 0 error code.\n * @param {function} method - wrapped method to be executed if the user has not opted out\n * @param {function} getConfigValue - getter function for the Mixpanel API token and other options to be used with opt-out check\n * @returns {*} the result of executing method OR undefined if the user has opted out\n */\nfunction _addOptOutCheck(method, getConfigValue) {\n return function() {\n var optedOut = false;\n\n try {\n var token = getConfigValue.call(this, 'token');\n var ignoreDnt = getConfigValue.call(this, 'ignore_dnt');\n var persistenceType = getConfigValue.call(this, 'opt_out_tracking_persistence_type');\n var persistencePrefix = getConfigValue.call(this, 'opt_out_tracking_cookie_prefix');\n var win = getConfigValue.call(this, 'window'); // used to override window during browser tests\n\n if (token) { // if there was an issue getting the token, continue method execution as normal\n optedOut = hasOptedOut(token, {\n ignoreDnt: ignoreDnt,\n persistenceType: persistenceType,\n persistencePrefix: persistencePrefix,\n window: win\n });\n }\n } catch(err) {\n console$1.error('Unexpected error when checking tracking opt-out status: ' + err);\n }\n\n if (!optedOut) {\n return method.apply(this, arguments);\n }\n\n var callback = arguments[arguments.length - 1];\n if (typeof(callback) === 'function') {\n callback(0);\n }\n\n return;\n };\n}\n\nvar logger$5 = console_with_prefix('lock');\n\n/**\n * SharedLock: a mutex built on HTML5 localStorage, to ensure that only one browser\n * window/tab at a time will be able to access shared resources.\n *\n * Based on the Alur and Taubenfeld fast lock\n * (http://www.cs.rochester.edu/research/synchronization/pseudocode/fastlock.html)\n * with an added timeout to ensure there will be eventual progress in the event\n * that a window is closed in the middle of the callback.\n *\n * Implementation based on the original version by David Wolever (https://github.com/wolever)\n * at https://gist.github.com/wolever/5fd7573d1ef6166e8f8c4af286a69432.\n *\n * @example\n * const myLock = new SharedLock('some-key');\n * myLock.withLock(function() {\n * console.log('I hold the mutex!');\n * });\n *\n * @constructor\n */\nvar SharedLock = function(key, options) {\n options = options || {};\n\n this.storageKey = key;\n this.storage = options.storage || window.localStorage;\n this.pollIntervalMS = options.pollIntervalMS || 100;\n this.timeoutMS = options.timeoutMS || 2000;\n\n // dependency-inject promise implementation for testing purposes\n this.promiseImpl = options.promiseImpl || PromisePolyfill;\n};\n\n// pass in a specific pid to test contention scenarios; otherwise\n// it is chosen randomly for each acquisition attempt\nSharedLock.prototype.withLock = function(lockedCB, pid) {\n var Promise = this.promiseImpl;\n return new Promise(_.bind(function (resolve, reject) {\n var i = pid || (new Date().getTime() + '|' + Math.random());\n var startTime = new Date().getTime();\n\n var key = this.storageKey;\n var pollIntervalMS = this.pollIntervalMS;\n var timeoutMS = this.timeoutMS;\n var storage = this.storage;\n\n var keyX = key + ':X';\n var keyY = key + ':Y';\n var keyZ = key + ':Z';\n\n var delay = function(cb) {\n if (new Date().getTime() - startTime > timeoutMS) {\n logger$5.error('Timeout waiting for mutex on ' + key + '; clearing lock. [' + i + ']');\n storage.removeItem(keyZ);\n storage.removeItem(keyY);\n loop();\n return;\n }\n setTimeout(function() {\n try {\n cb();\n } catch(err) {\n reject(err);\n }\n }, pollIntervalMS * (Math.random() + 0.1));\n };\n\n var waitFor = function(predicate, cb) {\n if (predicate()) {\n cb();\n } else {\n delay(function() {\n waitFor(predicate, cb);\n });\n }\n };\n\n var getSetY = function() {\n var valY = storage.getItem(keyY);\n if (valY && valY !== i) { // if Y == i then this process already has the lock (useful for test cases)\n return false;\n } else {\n storage.setItem(keyY, i);\n if (storage.getItem(keyY) === i) {\n return true;\n } else {\n if (!localStorageSupported(storage, true)) {\n reject(new Error('localStorage support dropped while acquiring lock'));\n }\n return false;\n }\n }\n };\n\n var loop = function() {\n storage.setItem(keyX, i);\n\n waitFor(getSetY, function() {\n if (storage.getItem(keyX) === i) {\n criticalSection();\n return;\n }\n\n delay(function() {\n if (storage.getItem(keyY) !== i) {\n loop();\n return;\n }\n waitFor(function() {\n return !storage.getItem(keyZ);\n }, criticalSection);\n });\n });\n };\n\n var criticalSection = function() {\n storage.setItem(keyZ, '1');\n var removeLock = function () {\n storage.removeItem(keyZ);\n if (storage.getItem(keyY) === i) {\n storage.removeItem(keyY);\n }\n if (storage.getItem(keyX) === i) {\n storage.removeItem(keyX);\n }\n };\n\n lockedCB()\n .then(function (ret) {\n removeLock();\n resolve(ret);\n })\n .catch(function (err) {\n removeLock();\n reject(err);\n });\n };\n\n try {\n if (localStorageSupported(storage, true)) {\n loop();\n } else {\n throw new Error('localStorage support check failed');\n }\n } catch(err) {\n reject(err);\n }\n }, this));\n};\n\n/**\n * @typedef {import('./wrapper').StorageWrapper}\n */\n\n/**\n * @type {StorageWrapper}\n */\nvar LocalStorageWrapper = function (storageOverride) {\n this.storage = storageOverride || localStorage;\n};\n\nLocalStorageWrapper.prototype.init = function () {\n return PromisePolyfill.resolve();\n};\n\nLocalStorageWrapper.prototype.setItem = function (key, value) {\n return new PromisePolyfill(_.bind(function (resolve, reject) {\n try {\n this.storage.setItem(key, value);\n } catch (e) {\n reject(e);\n }\n resolve();\n }, this));\n};\n\nLocalStorageWrapper.prototype.getItem = function (key) {\n return new PromisePolyfill(_.bind(function (resolve, reject) {\n var item;\n try {\n item = this.storage.getItem(key);\n } catch (e) {\n reject(e);\n }\n resolve(item);\n }, this));\n};\n\nLocalStorageWrapper.prototype.removeItem = function (key) {\n return new PromisePolyfill(_.bind(function (resolve, reject) {\n try {\n this.storage.removeItem(key);\n } catch (e) {\n reject(e);\n }\n resolve();\n }, this));\n};\n\nvar logger$4 = console_with_prefix('batch');\n\n/**\n * RequestQueue: queue for batching API requests with localStorage backup for retries.\n * Maintains an in-memory queue which represents the source of truth for the current\n * page, but also writes all items out to a copy in the browser's localStorage, which\n * can be read on subsequent pageloads and retried. For batchability, all the request\n * items in the queue should be of the same type (events, people updates, group updates)\n * so they can be sent in a single request to the same API endpoint.\n *\n * LocalStorage keying and locking: In order for reloads and subsequent pageloads of\n * the same site to access the same persisted data, they must share the same localStorage\n * key (for instance based on project token and queue type). Therefore access to the\n * localStorage entry is guarded by an asynchronous mutex (SharedLock) to prevent\n * simultaneously open windows/tabs from overwriting each other's data (which would lead\n * to data loss in some situations).\n * @constructor\n */\nvar RequestQueue = function (storageKey, options) {\n options = options || {};\n this.storageKey = storageKey;\n this.usePersistence = options.usePersistence;\n if (this.usePersistence) {\n this.queueStorage = options.queueStorage || new LocalStorageWrapper();\n this.lock = new SharedLock(storageKey, { storage: options.sharedLockStorage || window.localStorage });\n this.queueStorage.init();\n }\n this.reportError = options.errorReporter || _.bind(logger$4.error, logger$4);\n\n this.pid = options.pid || null; // pass pid to test out storage lock contention scenarios\n\n this.memQueue = [];\n this.initialized = false;\n};\n\nRequestQueue.prototype.ensureInit = function () {\n if (this.initialized) {\n return PromisePolyfill.resolve();\n }\n\n return this.queueStorage\n .init()\n .then(_.bind(function () {\n this.initialized = true;\n }, this))\n .catch(_.bind(function (err) {\n this.reportError('Error initializing queue persistence. Disabling persistence', err);\n this.initialized = true;\n this.usePersistence = false;\n }, this));\n};\n\n/**\n * Add one item to queues (memory and localStorage). The queued entry includes\n * the given item along with an auto-generated ID and a \"flush-after\" timestamp.\n * It is expected that the item will be sent over the network and dequeued\n * before the flush-after time; if this doesn't happen it is considered orphaned\n * (e.g., the original tab where it was enqueued got closed before it could be\n * sent) and the item can be sent by any tab that finds it in localStorage.\n *\n * The final callback param is called with a param indicating success or\n * failure of the enqueue operation; it is asynchronous because the localStorage\n * lock is asynchronous.\n */\nRequestQueue.prototype.enqueue = function (item, flushInterval) {\n var queueEntry = {\n 'id': cheap_guid(),\n 'flushAfter': new Date().getTime() + flushInterval * 2,\n 'payload': item\n };\n\n if (!this.usePersistence) {\n this.memQueue.push(queueEntry);\n return PromisePolyfill.resolve(true);\n } else {\n\n var enqueueItem = _.bind(function () {\n return this.ensureInit()\n .then(_.bind(function () {\n return this.readFromStorage();\n }, this))\n .then(_.bind(function (storedQueue) {\n storedQueue.push(queueEntry);\n return this.saveToStorage(storedQueue);\n }, this))\n .then(_.bind(function (succeeded) {\n // only add to in-memory queue when storage succeeds\n if (succeeded) {\n this.memQueue.push(queueEntry);\n }\n return succeeded;\n }, this))\n .catch(_.bind(function (err) {\n this.reportError('Error enqueueing item', err, item);\n return false;\n }, this));\n }, this);\n\n return this.lock\n .withLock(enqueueItem, this.pid)\n .catch(_.bind(function (err) {\n this.reportError('Error acquiring storage lock', err);\n return false;\n }, this));\n }\n};\n\n/**\n * Read out the given number of queue entries. If this.memQueue\n * has fewer than batchSize items, then look for \"orphaned\" items\n * in the persisted queue (items where the 'flushAfter' time has\n * already passed).\n */\nRequestQueue.prototype.fillBatch = function (batchSize) {\n var batch = this.memQueue.slice(0, batchSize);\n if (this.usePersistence && batch.length < batchSize) {\n // don't need lock just to read events; localStorage is thread-safe\n // and the worst that could happen is a duplicate send of some\n // orphaned events, which will be deduplicated on the server side\n return this.ensureInit()\n .then(_.bind(function () {\n return this.readFromStorage();\n }, this))\n .then(_.bind(function (storedQueue) {\n if (storedQueue.length) {\n // item IDs already in batch; don't duplicate out of storage\n var idsInBatch = {}; // poor man's Set\n _.each(batch, function (item) {\n idsInBatch[item['id']] = true;\n });\n\n for (var i = 0; i < storedQueue.length; i++) {\n var item = storedQueue[i];\n if (new Date().getTime() > item['flushAfter'] && !idsInBatch[item['id']]) {\n item.orphaned = true;\n batch.push(item);\n if (batch.length >= batchSize) {\n break;\n }\n }\n }\n }\n\n return batch;\n }, this));\n } else {\n return PromisePolyfill.resolve(batch);\n }\n};\n\n/**\n * Remove items with matching 'id' from array (immutably)\n * also remove any item without a valid id (e.g., malformed\n * storage entries).\n */\nvar filterOutIDsAndInvalid = function (items, idSet) {\n var filteredItems = [];\n _.each(items, function (item) {\n if (item['id'] && !idSet[item['id']]) {\n filteredItems.push(item);\n }\n });\n return filteredItems;\n};\n\n/**\n * Remove items with matching IDs from both in-memory queue\n * and persisted queue\n */\nRequestQueue.prototype.removeItemsByID = function (ids) {\n var idSet = {}; // poor man's Set\n _.each(ids, function (id) {\n idSet[id] = true;\n });\n\n this.memQueue = filterOutIDsAndInvalid(this.memQueue, idSet);\n if (!this.usePersistence) {\n return PromisePolyfill.resolve(true);\n } else {\n var removeFromStorage = _.bind(function () {\n return this.ensureInit()\n .then(_.bind(function () {\n return this.readFromStorage();\n }, this))\n .then(_.bind(function (storedQueue) {\n storedQueue = filterOutIDsAndInvalid(storedQueue, idSet);\n return this.saveToStorage(storedQueue);\n }, this))\n .then(_.bind(function () {\n return this.readFromStorage();\n }, this))\n .then(_.bind(function (storedQueue) {\n // an extra check: did storage report success but somehow\n // the items are still there?\n for (var i = 0; i < storedQueue.length; i++) {\n var item = storedQueue[i];\n if (item['id'] && !!idSet[item['id']]) {\n throw new Error('Item not removed from storage');\n }\n }\n return true;\n }, this))\n .catch(_.bind(function (err) {\n this.reportError('Error removing items', err, ids);\n return false;\n }, this));\n }, this);\n\n return this.lock\n .withLock(removeFromStorage, this.pid)\n .catch(_.bind(function (err) {\n this.reportError('Error acquiring storage lock', err);\n if (!localStorageSupported(this.queueStorage.storage, true)) {\n // Looks like localStorage writes have stopped working sometime after\n // initialization (probably full), and so nobody can acquire locks\n // anymore. Consider it temporarily safe to remove items without the\n // lock, since nobody's writing successfully anyway.\n return removeFromStorage()\n .then(_.bind(function (success) {\n if (!success) {\n // OK, we couldn't even write out the smaller queue. Try clearing it\n // entirely.\n return this.queueStorage.removeItem(this.storageKey).then(function () {\n return success;\n });\n }\n return success;\n }, this))\n .catch(_.bind(function (err) {\n this.reportError('Error clearing queue', err);\n return false;\n }, this));\n } else {\n return false;\n }\n }, this));\n }\n};\n\n// internal helper for RequestQueue.updatePayloads\nvar updatePayloads = function (existingItems, itemsToUpdate) {\n var newItems = [];\n _.each(existingItems, function (item) {\n var id = item['id'];\n if (id in itemsToUpdate) {\n var newPayload = itemsToUpdate[id];\n if (newPayload !== null) {\n item['payload'] = newPayload;\n newItems.push(item);\n }\n } else {\n // no update\n newItems.push(item);\n }\n });\n return newItems;\n};\n\n/**\n * Update payloads of given items in both in-memory queue and\n * persisted queue. Items set to null are removed from queues.\n */\nRequestQueue.prototype.updatePayloads = function (itemsToUpdate) {\n this.memQueue = updatePayloads(this.memQueue, itemsToUpdate);\n if (!this.usePersistence) {\n return PromisePolyfill.resolve(true);\n } else {\n return this.lock\n .withLock(_.bind(function lockAcquired() {\n return this.ensureInit()\n .then(_.bind(function () {\n return this.readFromStorage();\n }, this))\n .then(_.bind(function (storedQueue) {\n storedQueue = updatePayloads(storedQueue, itemsToUpdate);\n return this.saveToStorage(storedQueue);\n }, this))\n .catch(_.bind(function (err) {\n this.reportError('Error updating items', itemsToUpdate, err);\n return false;\n }, this));\n }, this), this.pid)\n .catch(_.bind(function (err) {\n this.reportError('Error acquiring storage lock', err);\n return false;\n }, this));\n }\n};\n\n/**\n * Read and parse items array from localStorage entry, handling\n * malformed/missing data if necessary.\n */\nRequestQueue.prototype.readFromStorage = function () {\n return this.ensureInit()\n .then(_.bind(function () {\n return this.queueStorage.getItem(this.storageKey);\n }, this))\n .then(_.bind(function (storageEntry) {\n if (storageEntry) {\n storageEntry = JSONParse(storageEntry);\n if (!_.isArray(storageEntry)) {\n this.reportError('Invalid storage entry:', storageEntry);\n storageEntry = null;\n }\n }\n return storageEntry || [];\n }, this))\n .catch(_.bind(function (err) {\n this.reportError('Error retrieving queue', err);\n return [];\n }, this));\n};\n\n/**\n * Serialize the given items array to localStorage.\n */\nRequestQueue.prototype.saveToStorage = function (queue) {\n try {\n var serialized = JSONStringify(queue);\n } catch (err) {\n this.reportError('Error serializing queue', err);\n return PromisePolyfill.resolve(false);\n }\n\n return this.ensureInit()\n .then(_.bind(function () {\n return this.queueStorage.setItem(this.storageKey, serialized);\n }, this))\n .then(function () {\n return true;\n })\n .catch(_.bind(function (err) {\n this.reportError('Error saving queue', err);\n return false;\n }, this));\n};\n\n/**\n * Clear out queues (memory and localStorage).\n */\nRequestQueue.prototype.clear = function () {\n this.memQueue = [];\n\n if (this.usePersistence) {\n return this.ensureInit()\n .then(_.bind(function () {\n return this.queueStorage.removeItem(this.storageKey);\n }, this));\n } else {\n return PromisePolyfill.resolve();\n }\n};\n\n// maximum interval between request retries after exponential backoff\nvar MAX_RETRY_INTERVAL_MS = 10 * 60 * 1000; // 10 minutes\n\nvar logger$3 = console_with_prefix('batch');\n\n/**\n * RequestBatcher: manages the queueing, flushing, retry etc of requests of one\n * type (events, people, groups).\n * Uses RequestQueue to manage the backing store.\n * @constructor\n */\nvar RequestBatcher = function(storageKey, options) {\n this.errorReporter = options.errorReporter;\n this.queue = new RequestQueue(storageKey, {\n errorReporter: _.bind(this.reportError, this),\n queueStorage: options.queueStorage,\n sharedLockStorage: options.sharedLockStorage,\n usePersistence: options.usePersistence\n });\n\n this.libConfig = options.libConfig;\n this.sendRequest = options.sendRequestFunc;\n this.beforeSendHook = options.beforeSendHook;\n this.stopAllBatching = options.stopAllBatchingFunc;\n\n // seed variable batch size + flush interval with configured values\n this.batchSize = this.libConfig['batch_size'];\n this.flushInterval = this.libConfig['batch_flush_interval_ms'];\n\n this.stopped = !this.libConfig['batch_autostart'];\n this.consecutiveRemovalFailures = 0;\n\n // extra client-side dedupe\n this.itemIdsSentSuccessfully = {};\n\n // Make the flush occur at the interval specified by flushIntervalMs, default behavior will attempt consecutive flushes\n // as long as the queue is not empty. This is useful for high-frequency events like Session Replay where we might end up\n // in a request loop and get ratelimited by the server.\n this.flushOnlyOnInterval = options.flushOnlyOnInterval || false;\n};\n\n/**\n * Add one item to queue.\n */\nRequestBatcher.prototype.enqueue = function(item) {\n return this.queue.enqueue(item, this.flushInterval);\n};\n\n/**\n * Start flushing batches at the configured time interval. Must call\n * this method upon SDK init in order to send anything over the network.\n */\nRequestBatcher.prototype.start = function() {\n this.stopped = false;\n this.consecutiveRemovalFailures = 0;\n return this.flush();\n};\n\n/**\n * Stop flushing batches. Can be restarted by calling start().\n */\nRequestBatcher.prototype.stop = function() {\n this.stopped = true;\n if (this.timeoutID) {\n clearTimeout(this.timeoutID);\n this.timeoutID = null;\n }\n};\n\n/**\n * Clear out queue.\n */\nRequestBatcher.prototype.clear = function() {\n return this.queue.clear();\n};\n\n/**\n * Restore batch size configuration to whatever is set in the main SDK.\n */\nRequestBatcher.prototype.resetBatchSize = function() {\n this.batchSize = this.libConfig['batch_size'];\n};\n\n/**\n * Restore flush interval time configuration to whatever is set in the main SDK.\n */\nRequestBatcher.prototype.resetFlush = function() {\n this.scheduleFlush(this.libConfig['batch_flush_interval_ms']);\n};\n\n/**\n * Schedule the next flush in the given number of milliseconds.\n */\nRequestBatcher.prototype.scheduleFlush = function(flushMS) {\n this.flushInterval = flushMS;\n if (!this.stopped) { // don't schedule anymore if batching has been stopped\n this.timeoutID = setTimeout(_.bind(function() {\n if (!this.stopped) {\n this.flush();\n }\n }, this), this.flushInterval);\n }\n};\n\n/**\n * Send a request using the sendRequest callback, but promisified.\n * TODO: sendRequest should be promisified in the first place.\n */\nRequestBatcher.prototype.sendRequestPromise = function(data, options) {\n return new PromisePolyfill(_.bind(function(resolve) {\n this.sendRequest(data, options, resolve);\n }, this));\n};\n\n\n/**\n * Flush one batch to network. Depending on success/failure modes, it will either\n * remove the batch from the queue or leave it in for retry, and schedule the next\n * flush. In cases of most network or API failures, it will back off exponentially\n * when retrying.\n * @param {Object} [options]\n * @param {boolean} [options.sendBeacon] - whether to send batch with\n * navigator.sendBeacon (only useful for sending batches before page unloads, as\n * sendBeacon offers no callbacks or status indications)\n */\nRequestBatcher.prototype.flush = function(options) {\n if (this.requestInProgress) {\n logger$3.log('Flush: Request already in progress');\n return PromisePolyfill.resolve();\n }\n\n this.requestInProgress = true;\n\n options = options || {};\n var timeoutMS = this.libConfig['batch_request_timeout_ms'];\n var startTime = new Date().getTime();\n var currentBatchSize = this.batchSize;\n\n return this.queue.fillBatch(currentBatchSize)\n .then(_.bind(function(batch) {\n\n // if there's more items in the queue than the batch size, attempt\n // to flush again after the current batch is done.\n var attemptSecondaryFlush = batch.length === currentBatchSize;\n var dataForRequest = [];\n var transformedItems = {};\n _.each(batch, function(item) {\n var payload = item['payload'];\n if (this.beforeSendHook && !item.orphaned) {\n payload = this.beforeSendHook(payload);\n }\n if (payload) {\n // mp_sent_by_lib_version prop captures which lib version actually\n // sends each event (regardless of which version originally queued\n // it for sending)\n if (payload['event'] && payload['properties']) {\n payload['properties'] = _.extend(\n {},\n payload['properties'],\n {'mp_sent_by_lib_version': Config.LIB_VERSION}\n );\n }\n var addPayload = true;\n var itemId = item['id'];\n if (itemId) {\n if ((this.itemIdsSentSuccessfully[itemId] || 0) > 5) {\n this.reportError('[dupe] item ID sent too many times, not sending', {\n item: item,\n batchSize: batch.length,\n timesSent: this.itemIdsSentSuccessfully[itemId]\n });\n addPayload = false;\n }\n } else {\n this.reportError('[dupe] found item with no ID', {item: item});\n }\n\n if (addPayload) {\n dataForRequest.push(payload);\n }\n }\n transformedItems[item['id']] = payload;\n }, this);\n\n if (dataForRequest.length < 1) {\n this.requestInProgress = false;\n this.resetFlush();\n return PromisePolyfill.resolve(); // nothing to do\n }\n\n var removeItemsFromQueue = _.bind(function () {\n return this.queue\n .removeItemsByID(\n _.map(batch, function (item) {\n return item['id'];\n })\n )\n .then(_.bind(function (succeeded) {\n // client-side dedupe\n _.each(batch, _.bind(function(item) {\n var itemId = item['id'];\n if (itemId) {\n this.itemIdsSentSuccessfully[itemId] = this.itemIdsSentSuccessfully[itemId] || 0;\n this.itemIdsSentSuccessfully[itemId]++;\n if (this.itemIdsSentSuccessfully[itemId] > 5) {\n this.reportError('[dupe] item ID sent too many times', {\n item: item,\n batchSize: batch.length,\n timesSent: this.itemIdsSentSuccessfully[itemId]\n });\n }\n } else {\n this.reportError('[dupe] found item with no ID while removing', {item: item});\n }\n }, this));\n\n if (succeeded) {\n this.consecutiveRemovalFailures = 0;\n if (this.flushOnlyOnInterval && !attemptSecondaryFlush) {\n this.resetFlush(); // schedule next batch with a delay\n return PromisePolyfill.resolve();\n } else {\n return this.flush(); // handle next batch if the queue isn't empty\n }\n } else {\n if (++this.consecutiveRemovalFailures > 5) {\n this.reportError('Too many queue failures; disabling batching system.');\n this.stopAllBatching();\n } else {\n this.resetFlush();\n }\n return PromisePolyfill.resolve();\n }\n }, this));\n }, this);\n\n var batchSendCallback = _.bind(function(res) {\n this.requestInProgress = false;\n\n try {\n\n // handle API response in a try-catch to make sure we can reset the\n // flush operation if something goes wrong\n\n if (options.unloading) {\n // update persisted data to include hook transformations\n return this.queue.updatePayloads(transformedItems);\n } else if (\n _.isObject(res) &&\n res.error === 'timeout' &&\n new Date().getTime() - startTime >= timeoutMS\n ) {\n this.reportError('Network timeout; retrying');\n return this.flush();\n } else if (\n _.isObject(res) &&\n (\n res.httpStatusCode >= 500\n || res.httpStatusCode === 429\n || (res.httpStatusCode <= 0 && !isOnline())\n || res.error === 'timeout'\n )\n ) {\n // network or API error, or 429 Too Many Requests, retry\n var retryMS = this.flushInterval * 2;\n if (res.retryAfter) {\n retryMS = (parseInt(res.retryAfter, 10) * 1000) || retryMS;\n }\n retryMS = Math.min(MAX_RETRY_INTERVAL_MS, retryMS);\n this.reportError('Error; retry in ' + retryMS + ' ms');\n this.scheduleFlush(retryMS);\n return PromisePolyfill.resolve();\n } else if (_.isObject(res) && res.httpStatusCode === 413) {\n // 413 Payload Too Large\n if (batch.length > 1) {\n var halvedBatchSize = Math.max(1, Math.floor(currentBatchSize / 2));\n this.batchSize = Math.min(this.batchSize, halvedBatchSize, batch.length - 1);\n this.reportError('413 response; reducing batch size to ' + this.batchSize);\n this.resetFlush();\n return PromisePolyfill.resolve();\n } else {\n this.reportError('Single-event request too large; dropping', batch);\n this.resetBatchSize();\n return removeItemsFromQueue();\n }\n } else {\n // successful network request+response; remove each item in batch from queue\n // (even if it was e.g. a 400, in which case retrying won't help)\n return removeItemsFromQueue();\n }\n } catch(err) {\n this.reportError('Error handling API response', err);\n this.resetFlush();\n }\n }, this);\n var requestOptions = {\n method: 'POST',\n verbose: true,\n ignore_json_errors: true, // eslint-disable-line camelcase\n timeout_ms: timeoutMS // eslint-disable-line camelcase\n };\n if (options.unloading) {\n requestOptions.transport = 'sendBeacon';\n }\n logger$3.log('MIXPANEL REQUEST:', dataForRequest);\n return this.sendRequestPromise(dataForRequest, requestOptions).then(batchSendCallback);\n }, this))\n .catch(_.bind(function(err) {\n this.reportError('Error flushing request queue', err);\n this.resetFlush();\n }, this));\n};\n\n/**\n * Log error to global logger and optional user-defined logger.\n */\nRequestBatcher.prototype.reportError = function(msg, err) {\n logger$3.error.apply(logger$3.error, arguments);\n if (this.errorReporter) {\n try {\n if (!(err instanceof Error)) {\n err = new Error(msg);\n }\n this.errorReporter(msg, err);\n } catch(err) {\n logger$3.error(err);\n }\n }\n};\n\nvar logger$2 = console_with_prefix('recorder');\nvar CompressionStream = win['CompressionStream'];\n\nvar RECORDER_BATCHER_LIB_CONFIG = {\n 'batch_size': 1000,\n 'batch_flush_interval_ms': 10 * 1000,\n 'batch_request_timeout_ms': 90 * 1000,\n 'batch_autostart': true\n};\n\nvar ACTIVE_SOURCES = new Set([\n IncrementalSource.MouseMove,\n IncrementalSource.MouseInteraction,\n IncrementalSource.Scroll,\n IncrementalSource.ViewportResize,\n IncrementalSource.Input,\n IncrementalSource.TouchMove,\n IncrementalSource.MediaInteraction,\n IncrementalSource.Drag,\n IncrementalSource.Selection,\n]);\n\nfunction isUserEvent(ev) {\n return ev.type === EventType.IncrementalSnapshot && ACTIVE_SOURCES.has(ev.data.source);\n}\n\n/**\n * This class encapsulates a single session recording and its lifecycle.\n * @param {Object} [options.mixpanelInstance] - reference to the core MixpanelLib\n * @param {String} [options.replayId] - unique uuid for a single replay\n * @param {Function} [options.onIdleTimeout] - callback when a recording reaches idle timeout\n * @param {Function} [options.onMaxLengthReached] - callback when a recording reaches its maximum length\n * @param {Function} [options.rrwebRecord] - rrweb's `record` function\n */\nvar SessionRecording = function(options) {\n this._mixpanel = options.mixpanelInstance;\n this._onIdleTimeout = options.onIdleTimeout;\n this._onMaxLengthReached = options.onMaxLengthReached;\n this._rrwebRecord = options.rrwebRecord;\n\n this.replayId = options.replayId;\n\n // internal rrweb stopRecording function\n this._stopRecording = null;\n\n this.seqNo = 0;\n this.replayStartTime = null;\n this.replayStartUrl = null;\n this.batchStartUrl = null;\n\n this.idleTimeoutId = null;\n this.maxTimeoutId = null;\n\n this.recordMaxMs = MAX_RECORDING_MS;\n this.recordMinMs = 0;\n\n // each replay has its own batcher key to avoid conflicts between rrweb events of different recordings\n // this will be important when persistence is introduced\n var batcherKey = '__mprec_' + this.getConfig('token') + '_' + this.replayId;\n this.batcher = new RequestBatcher(batcherKey, {\n errorReporter: _.bind(this.reportError, this),\n flushOnlyOnInterval: true,\n libConfig: RECORDER_BATCHER_LIB_CONFIG,\n sendRequestFunc: _.bind(this.flushEventsWithOptOut, this),\n usePersistence: false\n });\n};\n\nSessionRecording.prototype.getConfig = function(configVar) {\n return this._mixpanel.get_config(configVar);\n};\n\n// Alias for getConfig, used by the common addOptOutCheckMixpanelLib function which\n// reaches into this class instance and expects the snake case version of the function.\n// eslint-disable-next-line camelcase\nSessionRecording.prototype.get_config = function(configVar) {\n return this.getConfig(configVar);\n};\n\nSessionRecording.prototype.startRecording = function (shouldStopBatcher) {\n if (this._stopRecording !== null) {\n logger$2.log('Recording already in progress, skipping startRecording.');\n return;\n }\n\n this.recordMaxMs = this.getConfig('record_max_ms');\n if (this.recordMaxMs > MAX_RECORDING_MS) {\n this.recordMaxMs = MAX_RECORDING_MS;\n logger$2.critical('record_max_ms cannot be greater than ' + MAX_RECORDING_MS + 'ms. Capping value.');\n }\n\n this.recordMinMs = this.getConfig('record_min_ms');\n if (this.recordMinMs > MAX_VALUE_FOR_MIN_RECORDING_MS) {\n this.recordMinMs = MAX_VALUE_FOR_MIN_RECORDING_MS;\n logger$2.critical('record_min_ms cannot be greater than ' + MAX_VALUE_FOR_MIN_RECORDING_MS + 'ms. Capping value.');\n }\n\n this.replayStartTime = new Date().getTime();\n this.batchStartUrl = _.info.currentUrl();\n this.replayStartUrl = _.info.currentUrl();\n\n if (shouldStopBatcher || this.recordMinMs > 0) {\n // the primary case for shouldStopBatcher is when we're starting recording after a reset\n // and don't want to send anything over the network until there's\n // actual user activity\n // this also applies if the minimum recording length has not been hit yet\n // so that we don't send data until we know the recording will be long enough\n this.batcher.stop();\n } else {\n this.batcher.start();\n }\n\n var resetIdleTimeout = _.bind(function () {\n clearTimeout(this.idleTimeoutId);\n this.idleTimeoutId = setTimeout(this._onIdleTimeout, this.getConfig('record_idle_timeout_ms'));\n }, this);\n\n var blockSelector = this.getConfig('record_block_selector');\n if (blockSelector === '' || blockSelector === null) {\n blockSelector = undefined;\n }\n\n this._stopRecording = this._rrwebRecord({\n 'emit': _.bind(function (ev) {\n this.batcher.enqueue(ev);\n if (isUserEvent(ev)) {\n if (this.batcher.stopped && new Date().getTime() - this.replayStartTime >= this.recordMinMs) {\n // start flushing again after user activity\n this.batcher.start();\n }\n resetIdleTimeout();\n }\n }, this),\n 'blockClass': this.getConfig('record_block_class'),\n 'blockSelector': blockSelector,\n 'collectFonts': this.getConfig('record_collect_fonts'),\n 'dataURLOptions': { // canvas image options (https://developer.mozilla.org/en-US/docs/Web/API/HTMLCanvasElement/toDataURL)\n 'type': 'image/webp',\n 'quality': 0.6\n },\n 'maskAllInputs': true,\n 'maskTextClass': this.getConfig('record_mask_text_class'),\n 'maskTextSelector': this.getConfig('record_mask_text_selector'),\n 'recordCanvas': this.getConfig('record_canvas'),\n 'sampling': {\n 'canvas': 15\n }\n });\n\n if (typeof this._stopRecording !== 'function') {\n this.reportError('rrweb failed to start, skipping this recording.');\n this._stopRecording = null;\n this.stopRecording(); // stop batcher looping and any timeouts\n return;\n }\n\n resetIdleTimeout();\n\n this.maxTimeoutId = setTimeout(_.bind(this._onMaxLengthReached, this), this.recordMaxMs);\n};\n\nSessionRecording.prototype.stopRecording = function () {\n if (!this.isRrwebStopped()) {\n try {\n this._stopRecording();\n } catch (err) {\n this.reportError('Error with rrweb stopRecording', err);\n }\n this._stopRecording = null;\n }\n\n if (this.batcher.stopped) {\n // never got user activity to flush after reset, so just clear the batcher\n this.batcher.clear();\n } else {\n // flush any remaining events from running batcher\n this.batcher.flush();\n this.batcher.stop();\n }\n\n clearTimeout(this.idleTimeoutId);\n clearTimeout(this.maxTimeoutId);\n};\n\nSessionRecording.prototype.isRrwebStopped = function () {\n return this._stopRecording === null;\n};\n\n/**\n * Flushes the current batch of events to the server, but passes an opt-out callback to make sure\n * we stop recording and dump any queued events if the user has opted out.\n */\nSessionRecording.prototype.flushEventsWithOptOut = function (data, options, cb) {\n this._flushEvents(data, options, cb, _.bind(this._onOptOut, this));\n};\n\nSessionRecording.prototype._onOptOut = function (code) {\n // addOptOutCheckMixpanelLib invokes this function with code=0 when the user has opted out\n if (code === 0) {\n this.stopRecording();\n }\n};\n\nSessionRecording.prototype._sendRequest = function(currentReplayId, reqParams, reqBody, callback) {\n var onSuccess = _.bind(function (response, responseBody) {\n // Update batch specific props only if the request was successful to guarantee ordering.\n // RequestBatcher will always flush the next batch after the previous one succeeds.\n // extra check to see if the replay ID has changed so that we don't increment the seqNo on the wrong replay\n if (response.status === 200 && this.replayId === currentReplayId) {\n this.seqNo++;\n this.batchStartUrl = _.info.currentUrl();\n }\n callback({\n status: 0,\n httpStatusCode: response.status,\n responseBody: responseBody,\n retryAfter: response.headers.get('Retry-After')\n });\n }, this);\n\n win['fetch'](this.getConfig('api_host') + '/' + this.getConfig('api_routes')['record'] + '?' + new URLSearchParams(reqParams), {\n 'method': 'POST',\n 'headers': {\n 'Authorization': 'Basic ' + btoa(this.getConfig('token') + ':'),\n 'Content-Type': 'application/octet-stream'\n },\n 'body': reqBody,\n }).then(function (response) {\n response.json().then(function (responseBody) {\n onSuccess(response, responseBody);\n }).catch(function (error) {\n callback({error: error});\n });\n }).catch(function (error) {\n callback({error: error, httpStatusCode: 0});\n });\n};\n\nSessionRecording.prototype._flushEvents = addOptOutCheckMixpanelLib(function (data, options, callback) {\n const numEvents = data.length;\n\n if (numEvents > 0) {\n var replayId = this.replayId;\n // each rrweb event has a timestamp - leverage those to get time properties\n var batchStartTime = data[0].timestamp;\n if (this.seqNo === 0 || !this.replayStartTime) {\n // extra safety net so that we don't send a null replay start time\n if (this.seqNo !== 0) {\n this.reportError('Replay start time not set but seqNo is not 0. Using current batch start time as a fallback.');\n }\n\n this.replayStartTime = batchStartTime;\n }\n var replayLengthMs = data[numEvents - 1].timestamp - this.replayStartTime;\n\n var reqParams = {\n '$current_url': this.batchStartUrl,\n '$lib_version': Config.LIB_VERSION,\n 'batch_start_time': batchStartTime / 1000,\n 'distinct_id': String(this._mixpanel.get_distinct_id()),\n 'mp_lib': 'web',\n 'replay_id': replayId,\n 'replay_length_ms': replayLengthMs,\n 'replay_start_time': this.replayStartTime / 1000,\n 'replay_start_url': this.replayStartUrl,\n 'seq': this.seqNo\n };\n var eventsJson = _.JSONEncode(data);\n\n // send ID management props if they exist\n var deviceId = this._mixpanel.get_property('$device_id');\n if (deviceId) {\n reqParams['$device_id'] = deviceId;\n }\n var userId = this._mixpanel.get_property('$user_id');\n if (userId) {\n reqParams['$user_id'] = userId;\n }\n\n if (CompressionStream) {\n var jsonStream = new Blob([eventsJson], {type: 'application/json'}).stream();\n var gzipStream = jsonStream.pipeThrough(new CompressionStream('gzip'));\n new Response(gzipStream)\n .blob()\n .then(_.bind(function(compressedBlob) {\n reqParams['format'] = 'gzip';\n this._sendRequest(replayId, reqParams, compressedBlob, callback);\n }, this));\n } else {\n reqParams['format'] = 'body';\n this._sendRequest(replayId, reqParams, eventsJson, callback);\n }\n }\n});\n\n\nSessionRecording.prototype.reportError = function(msg, err) {\n logger$2.error.apply(logger$2.error, arguments);\n try {\n if (!err && !(msg instanceof Error)) {\n msg = new Error(msg);\n }\n this.getConfig('error_reporter')(msg, err);\n } catch(err) {\n logger$2.error(err);\n }\n};\n\nvar logger$1 = console_with_prefix('recorder');\n\n/**\n * Recorder API: manages recordings and exposes methods public to the core Mixpanel library.\n * @param {Object} [options.mixpanelInstance] - reference to the core MixpanelLib\n */\nvar MixpanelRecorder = function(mixpanelInstance) {\n this._mixpanel = mixpanelInstance;\n this.activeRecording = null;\n};\n\nMixpanelRecorder.prototype.startRecording = function(shouldStopBatcher) {\n if (this.activeRecording && !this.activeRecording.isRrwebStopped()) {\n logger$1.log('Recording already in progress, skipping startRecording.');\n return;\n }\n\n var onIdleTimeout = _.bind(function () {\n logger$1.log('Idle timeout reached, restarting recording.');\n this.resetRecording();\n }, this);\n\n var onMaxLengthReached = _.bind(function () {\n logger$1.log('Max recording length reached, stopping recording.');\n this.resetRecording();\n }, this);\n\n this.activeRecording = new SessionRecording({\n mixpanelInstance: this._mixpanel,\n onIdleTimeout: onIdleTimeout,\n onMaxLengthReached: onMaxLengthReached,\n replayId: _.UUID(),\n rrwebRecord: record\n });\n\n this.activeRecording.startRecording(shouldStopBatcher);\n};\n\nMixpanelRecorder.prototype.stopRecording = function() {\n if (this.activeRecording) {\n this.activeRecording.stopRecording();\n this.activeRecording = null;\n }\n};\n\nMixpanelRecorder.prototype.resetRecording = function () {\n this.stopRecording();\n this.startRecording(true);\n};\n\nMixpanelRecorder.prototype.getActiveReplayId = function () {\n if (this.activeRecording && !this.activeRecording.isRrwebStopped()) {\n return this.activeRecording.replayId;\n } else {\n return null;\n }\n};\n\n// getter so that older mixpanel-core versions can still retrieve the replay ID\n// when pulling the latest recorder bundle from the CDN\nObject.defineProperty(MixpanelRecorder.prototype, 'replayId', {\n get: function () {\n return this.getActiveReplayId();\n }\n});\n\nwin['__mp_recorder'] = MixpanelRecorder;\n\n// stateless utils\n\nvar EV_CHANGE = 'change';\nvar EV_CLICK = 'click';\nvar EV_HASHCHANGE = 'hashchange';\nvar EV_MP_LOCATION_CHANGE = 'mp_locationchange';\nvar EV_POPSTATE = 'popstate';\n// TODO scrollend isn't available in Safari: document or polyfill?\nvar EV_SCROLLEND = 'scrollend';\nvar EV_SUBMIT = 'submit';\n\nvar CLICK_EVENT_PROPS = [\n 'clientX', 'clientY',\n 'offsetX', 'offsetY',\n 'pageX', 'pageY',\n 'screenX', 'screenY',\n 'x', 'y'\n];\nvar OPT_IN_CLASSES = ['mp-include'];\nvar OPT_OUT_CLASSES = ['mp-no-track'];\nvar SENSITIVE_DATA_CLASSES = OPT_OUT_CLASSES.concat(['mp-sensitive']);\nvar TRACKED_ATTRS = [\n 'aria-label', 'aria-labelledby', 'aria-describedby',\n 'href', 'name', 'role', 'title', 'type'\n];\n\nvar logger = console_with_prefix('autocapture');\n\n\nfunction getClasses(el) {\n var classes = {};\n var classList = getClassName(el).split(' ');\n for (var i = 0; i < classList.length; i++) {\n var cls = classList[i];\n if (cls) {\n classes[cls] = true;\n }\n }\n return classes;\n}\n\n/*\n * Get the className of an element, accounting for edge cases where element.className is an object\n * @param {Element} el - element to get the className of\n * @returns {string} the element's class\n */\nfunction getClassName(el) {\n switch(typeof el.className) {\n case 'string':\n return el.className;\n case 'object': // handle cases where className might be SVGAnimatedString or some other type\n return el.className.baseVal || el.getAttribute('class') || '';\n default: // future proof\n return '';\n }\n}\n\nfunction getPreviousElementSibling(el) {\n if (el.previousElementSibling) {\n return el.previousElementSibling;\n } else {\n do {\n el = el.previousSibling;\n } while (el && !isElementNode(el));\n return el;\n }\n}\n\nfunction getPropertiesFromElement(el, ev, blockAttrsSet, extraAttrs, allowElementCallback, allowSelectors) {\n var props = {\n '$classes': getClassName(el).split(' '),\n '$tag_name': el.tagName.toLowerCase()\n };\n var elId = el.id;\n if (elId) {\n props['$id'] = elId;\n }\n\n if (shouldTrackElementDetails(el, ev, allowElementCallback, allowSelectors)) {\n _.each(TRACKED_ATTRS.concat(extraAttrs), function(attr) {\n if (el.hasAttribute(attr) && !blockAttrsSet[attr]) {\n var attrVal = el.getAttribute(attr);\n if (shouldTrackValue(attrVal)) {\n props['$attr-' + attr] = attrVal;\n }\n }\n });\n }\n\n var nthChild = 1;\n var nthOfType = 1;\n var currentElem = el;\n while (currentElem = getPreviousElementSibling(currentElem)) { // eslint-disable-line no-cond-assign\n nthChild++;\n if (currentElem.tagName === el.tagName) {\n nthOfType++;\n }\n }\n props['$nth_child'] = nthChild;\n props['$nth_of_type'] = nthOfType;\n\n return props;\n}\n\nfunction getPropsForDOMEvent(ev, config) {\n var allowElementCallback = config.allowElementCallback;\n var allowSelectors = config.allowSelectors || [];\n var blockAttrs = config.blockAttrs || [];\n var blockElementCallback = config.blockElementCallback;\n var blockSelectors = config.blockSelectors || [];\n var captureTextContent = config.captureTextContent || false;\n var captureExtraAttrs = config.captureExtraAttrs || [];\n\n // convert array to set every time, as the config may have changed\n var blockAttrsSet = {};\n _.each(blockAttrs, function(attr) {\n blockAttrsSet[attr] = true;\n });\n\n var props = null;\n\n var target = typeof ev.target === 'undefined' ? ev.srcElement : ev.target;\n if (isTextNode(target)) { // defeat Safari bug (see: http://www.quirksmode.org/js/events_properties.html)\n target = target.parentNode;\n }\n\n if (\n shouldTrackDomEvent(target, ev) &&\n isElementAllowed(target, ev, allowElementCallback, allowSelectors) &&\n !isElementBlocked(target, ev, blockElementCallback, blockSelectors)\n ) {\n var targetElementList = [target];\n var curEl = target;\n while (curEl.parentNode && !isTag(curEl, 'body')) {\n targetElementList.push(curEl.parentNode);\n curEl = curEl.parentNode;\n }\n\n var elementsJson = [];\n var href, explicitNoTrack = false;\n _.each(targetElementList, function(el) {\n var shouldTrackDetails = shouldTrackElementDetails(el, ev, allowElementCallback, allowSelectors);\n\n // if the element or a parent element is an anchor tag\n // include the href as a property\n if (!blockAttrsSet['href'] && el.tagName.toLowerCase() === 'a') {\n href = el.getAttribute('href');\n href = shouldTrackDetails && shouldTrackValue(href) && href;\n }\n\n if (isElementBlocked(el, ev, blockElementCallback, blockSelectors)) {\n explicitNoTrack = true;\n }\n\n elementsJson.push(getPropertiesFromElement(el, ev, blockAttrsSet, captureExtraAttrs, allowElementCallback, allowSelectors));\n }, this);\n\n if (!explicitNoTrack) {\n var docElement = document$1['documentElement'];\n props = {\n '$event_type': ev.type,\n '$host': win.location.host,\n '$pathname': win.location.pathname,\n '$elements': elementsJson,\n '$el_attr__href': href,\n '$viewportHeight': Math.max(docElement['clientHeight'], win['innerHeight'] || 0),\n '$viewportWidth': Math.max(docElement['clientWidth'], win['innerWidth'] || 0)\n };\n _.each(captureExtraAttrs, function(attr) {\n if (!blockAttrsSet[attr] && target.hasAttribute(attr)) {\n var attrVal = target.getAttribute(attr);\n if (shouldTrackValue(attrVal)) {\n props['$el_attr__' + attr] = attrVal;\n }\n }\n });\n\n if (captureTextContent) {\n elementText = getSafeText(target, ev, allowElementCallback, allowSelectors);\n if (elementText && elementText.length) {\n props['$el_text'] = elementText;\n }\n }\n\n if (ev.type === EV_CLICK) {\n _.each(CLICK_EVENT_PROPS, function(prop) {\n if (prop in ev) {\n props['$' + prop] = ev[prop];\n }\n });\n target = guessRealClickTarget(ev);\n }\n // prioritize text content from \"real\" click target if different from original target\n if (captureTextContent) {\n var elementText = getSafeText(target, ev, allowElementCallback, allowSelectors);\n if (elementText && elementText.length) {\n props['$el_text'] = elementText;\n }\n }\n\n if (target) {\n // target may have been recalculated; check allowlists and blocklists again\n if (\n !isElementAllowed(target, ev, allowElementCallback, allowSelectors) ||\n isElementBlocked(target, ev, blockElementCallback, blockSelectors)\n ) {\n return null;\n }\n\n var targetProps = getPropertiesFromElement(target, ev, blockAttrsSet, captureExtraAttrs, allowElementCallback, allowSelectors);\n props['$target'] = targetProps;\n // pull up more props onto main event props\n props['$el_classes'] = targetProps['$classes'];\n _.extend(props, _.strip_empty_properties({\n '$el_id': targetProps['$id'],\n '$el_tag_name': targetProps['$tag_name']\n }));\n }\n }\n }\n\n return props;\n}\n\n\n/**\n * Get the direct text content of an element, protecting against sensitive data collection.\n * Concats textContent of each of the element's text node children; this avoids potential\n * collection of sensitive data that could happen if we used element.textContent and the\n * element had sensitive child elements, since element.textContent includes child content.\n * Scrubs values that look like they could be sensitive (i.e. cc or ssn number).\n * @param {Element} el - element to get the text of\n * @param {Array} allowSelectors - CSS selectors for elements that should be included\n * @returns {string} the element's direct text content\n */\nfunction getSafeText(el, ev, allowElementCallback, allowSelectors) {\n var elText = '';\n\n if (shouldTrackElementDetails(el, ev, allowElementCallback, allowSelectors) && el.childNodes && el.childNodes.length) {\n _.each(el.childNodes, function(child) {\n if (isTextNode(child) && child.textContent) {\n elText += _.trim(child.textContent)\n // scrub potentially sensitive values\n .split(/(\\s+)/).filter(shouldTrackValue).join('')\n // normalize whitespace\n .replace(/[\\r\\n]/g, ' ').replace(/[ ]+/g, ' ')\n // truncate\n .substring(0, 255);\n }\n });\n }\n\n return _.trim(elText);\n}\n\nfunction guessRealClickTarget(ev) {\n var target = ev.target;\n var composedPath = ev['composedPath']();\n for (var i = 0; i < composedPath.length; i++) {\n var node = composedPath[i];\n if (\n isTag(node, 'a') ||\n isTag(node, 'button') ||\n isTag(node, 'input') ||\n isTag(node, 'select') ||\n (node.getAttribute && node.getAttribute('role') === 'button')\n ) {\n target = node;\n break;\n }\n if (node === target) {\n break;\n }\n }\n return target;\n}\n\nfunction isElementAllowed(el, ev, allowElementCallback, allowSelectors) {\n if (allowElementCallback) {\n try {\n if (!allowElementCallback(el, ev)) {\n return false;\n }\n } catch (err) {\n logger.critical('Error while checking element in allowElementCallback', err);\n return false;\n }\n }\n\n if (!allowSelectors.length) {\n // no allowlist; all elements are fair game\n return true;\n }\n\n for (var i = 0; i < allowSelectors.length; i++) {\n var sel = allowSelectors[i];\n try {\n if (el['matches'](sel)) {\n return true;\n }\n } catch (err) {\n logger.critical('Error while checking selector: ' + sel, err);\n }\n }\n return false;\n}\n\nfunction isElementBlocked(el, ev, blockElementCallback, blockSelectors) {\n var i;\n\n if (blockElementCallback) {\n try {\n if (blockElementCallback(el, ev)) {\n return true;\n }\n } catch (err) {\n logger.critical('Error while checking element in blockElementCallback', err);\n return true;\n }\n }\n\n if (blockSelectors && blockSelectors.length) {\n // programmatically prevent tracking of elements that match CSS selectors\n for (i = 0; i < blockSelectors.length; i++) {\n var sel = blockSelectors[i];\n try {\n if (el['matches'](sel)) {\n return true;\n }\n } catch (err) {\n logger.critical('Error while checking selector: ' + sel, err);\n }\n }\n }\n\n // allow users to programmatically prevent tracking of elements by adding default classes such as 'mp-no-track'\n var classes = getClasses(el);\n for (i = 0; i < OPT_OUT_CLASSES.length; i++) {\n if (classes[OPT_OUT_CLASSES[i]]) {\n return true;\n }\n }\n\n return false;\n}\n\n/*\n * Check whether a DOM node has nodeType Node.ELEMENT_NODE\n * @param {Node} node - node to check\n * @returns {boolean} whether node is of the correct nodeType\n */\nfunction isElementNode(node) {\n return node && node.nodeType === 1; // Node.ELEMENT_NODE - use integer constant for browser portability\n}\n\n/*\n * Check whether an element is of a given tag type.\n * Due to potential reference discrepancies (such as the webcomponents.js polyfill),\n * we want to match tagNames instead of specific references because something like\n * element === document.body won't always work because element might not be a native\n * element.\n * @param {Element} el - element to check\n * @param {string} tag - tag name (e.g., \"div\")\n * @returns {boolean} whether el is of the given tag type\n */\nfunction isTag(el, tag) {\n return el && el.tagName && el.tagName.toLowerCase() === tag.toLowerCase();\n}\n\n/*\n * Check whether a DOM node is a TEXT_NODE\n * @param {Node} node - node to check\n * @returns {boolean} whether node is of type Node.TEXT_NODE\n */\nfunction isTextNode(node) {\n return node && node.nodeType === 3; // Node.TEXT_NODE - use integer constant for browser portability\n}\n\nfunction minDOMApisSupported() {\n try {\n var testEl = document$1.createElement('div');\n return !!testEl['matches'];\n } catch (err) {\n return false;\n }\n}\n\n/*\n * Check whether a DOM event should be \"tracked\" or if it may contain sensitive data\n * using a variety of heuristics.\n * @param {Element} el - element to check\n * @param {Event} ev - event to check\n * @returns {boolean} whether the event should be tracked\n */\nfunction shouldTrackDomEvent(el, ev) {\n if (!el || isTag(el, 'html') || !isElementNode(el)) {\n return false;\n }\n var tag = el.tagName.toLowerCase();\n switch (tag) {\n case 'form':\n return ev.type === EV_SUBMIT;\n case 'input':\n if (['button', 'submit'].indexOf(el.getAttribute('type')) === -1) {\n return ev.type === EV_CHANGE;\n } else {\n return ev.type === EV_CLICK;\n }\n case 'select':\n case 'textarea':\n return ev.type === EV_CHANGE;\n default:\n return ev.type === EV_CLICK;\n }\n}\n\n/*\n * Check whether a DOM element should be \"tracked\" or if it may contain sensitive data\n * using a variety of heuristics.\n * @param {Element} el - element to check\n * @param {Array} allowSelectors - CSS selectors for elements that should be included\n * @returns {boolean} whether the element should be tracked\n */\nfunction shouldTrackElementDetails(el, ev, allowElementCallback, allowSelectors) {\n var i;\n\n if (!isElementAllowed(el, ev, allowElementCallback, allowSelectors)) {\n return false;\n }\n\n for (var curEl = el; curEl.parentNode && !isTag(curEl, 'body'); curEl = curEl.parentNode) {\n var classes = getClasses(curEl);\n for (i = 0; i < SENSITIVE_DATA_CLASSES.length; i++) {\n if (classes[SENSITIVE_DATA_CLASSES[i]]) {\n return false;\n }\n }\n }\n\n var elClasses = getClasses(el);\n for (i = 0; i < OPT_IN_CLASSES.length; i++) {\n if (elClasses[OPT_IN_CLASSES[i]]) {\n return true;\n }\n }\n\n // don't send data from inputs or similar elements since there will always be\n // a risk of clientside javascript placing sensitive data in attributes\n if (\n isTag(el, 'input') ||\n isTag(el, 'select') ||\n isTag(el, 'textarea') ||\n el.getAttribute('contenteditable') === 'true'\n ) {\n return false;\n }\n\n // don't include hidden or password fields\n var type = el.type || '';\n if (typeof type === 'string') { // it's possible for el.type to be a DOM element if el is a form with a child input[name=\"type\"]\n switch(type.toLowerCase()) {\n case 'hidden':\n return false;\n case 'password':\n return false;\n }\n }\n\n // filter out data from fields that look like sensitive fields\n var name = el.name || el.id || '';\n if (typeof name === 'string') { // it's possible for el.name or el.id to be a DOM element if el is a form with a child input[name=\"name\"]\n var sensitiveNameRegex = /^cc|cardnum|ccnum|creditcard|csc|cvc|cvv|exp|pass|pwd|routing|seccode|securitycode|securitynum|socialsec|socsec|ssn/i;\n if (sensitiveNameRegex.test(name.replace(/[^a-zA-Z0-9]/g, ''))) {\n return false;\n }\n }\n\n return true;\n}\n\n\n/*\n * Check whether a string value should be \"tracked\" or if it may contain sensitive data\n * using a variety of heuristics.\n * @param {string} value - string value to check\n * @returns {boolean} whether the element should be tracked\n */\nfunction shouldTrackValue(value) {\n if (value === null || _.isUndefined(value)) {\n return false;\n }\n\n if (typeof value === 'string') {\n value = _.trim(value);\n\n // check to see if input value looks like a credit card number\n // see: https://www.safaribooksonline.com/library/view/regular-expressions-cookbook/9781449327453/ch04s20.html\n var ccRegex = /^(?:(4[0-9]{12}(?:[0-9]{3})?)|(5[1-5][0-9]{14})|(6(?:011|5[0-9]{2})[0-9]{12})|(3[47][0-9]{13})|(3(?:0[0-5]|[68][0-9])[0-9]{11})|((?:2131|1800|35[0-9]{3})[0-9]{11}))$/;\n if (ccRegex.test((value || '').replace(/[- ]/g, ''))) {\n return false;\n }\n\n // check to see if input value looks like a social security number\n var ssnRegex = /(^\\d{3}-?\\d{2}-?\\d{4}$)/;\n if (ssnRegex.test(value)) {\n return false;\n }\n }\n\n return true;\n}\n\nvar AUTOCAPTURE_CONFIG_KEY = 'autocapture';\nvar LEGACY_PAGEVIEW_CONFIG_KEY = 'track_pageview';\n\nvar PAGEVIEW_OPTION_FULL_URL = 'full-url';\nvar PAGEVIEW_OPTION_URL_WITH_PATH_AND_QUERY_STRING = 'url-with-path-and-query-string';\nvar PAGEVIEW_OPTION_URL_WITH_PATH = 'url-with-path';\n\nvar CONFIG_ALLOW_ELEMENT_CALLBACK = 'allow_element_callback';\nvar CONFIG_ALLOW_SELECTORS = 'allow_selectors';\nvar CONFIG_ALLOW_URL_REGEXES = 'allow_url_regexes';\nvar CONFIG_BLOCK_ATTRS = 'block_attrs';\nvar CONFIG_BLOCK_ELEMENT_CALLBACK = 'block_element_callback';\nvar CONFIG_BLOCK_SELECTORS = 'block_selectors';\nvar CONFIG_BLOCK_URL_REGEXES = 'block_url_regexes';\nvar CONFIG_CAPTURE_EXTRA_ATTRS = 'capture_extra_attrs';\nvar CONFIG_CAPTURE_TEXT_CONTENT = 'capture_text_content';\nvar CONFIG_SCROLL_CAPTURE_ALL = 'scroll_capture_all';\nvar CONFIG_SCROLL_CHECKPOINTS = 'scroll_depth_percent_checkpoints';\nvar CONFIG_TRACK_CLICK = 'click';\nvar CONFIG_TRACK_INPUT = 'input';\nvar CONFIG_TRACK_PAGEVIEW = 'pageview';\nvar CONFIG_TRACK_SCROLL = 'scroll';\nvar CONFIG_TRACK_SUBMIT = 'submit';\n\nvar CONFIG_DEFAULTS = {};\nCONFIG_DEFAULTS[CONFIG_ALLOW_SELECTORS] = [];\nCONFIG_DEFAULTS[CONFIG_ALLOW_URL_REGEXES] = [];\nCONFIG_DEFAULTS[CONFIG_BLOCK_ATTRS] = [];\nCONFIG_DEFAULTS[CONFIG_BLOCK_ELEMENT_CALLBACK] = null;\nCONFIG_DEFAULTS[CONFIG_BLOCK_SELECTORS] = [];\nCONFIG_DEFAULTS[CONFIG_BLOCK_URL_REGEXES] = [];\nCONFIG_DEFAULTS[CONFIG_CAPTURE_EXTRA_ATTRS] = [];\nCONFIG_DEFAULTS[CONFIG_CAPTURE_TEXT_CONTENT] = false;\nCONFIG_DEFAULTS[CONFIG_SCROLL_CAPTURE_ALL] = false;\nCONFIG_DEFAULTS[CONFIG_SCROLL_CHECKPOINTS] = [25, 50, 75, 100];\nCONFIG_DEFAULTS[CONFIG_TRACK_CLICK] = true;\nCONFIG_DEFAULTS[CONFIG_TRACK_INPUT] = true;\nCONFIG_DEFAULTS[CONFIG_TRACK_PAGEVIEW] = PAGEVIEW_OPTION_FULL_URL;\nCONFIG_DEFAULTS[CONFIG_TRACK_SCROLL] = true;\nCONFIG_DEFAULTS[CONFIG_TRACK_SUBMIT] = true;\n\nvar DEFAULT_PROPS = {\n '$mp_autocapture': true\n};\n\nvar MP_EV_CLICK = '$mp_click';\nvar MP_EV_INPUT = '$mp_input_change';\nvar MP_EV_SCROLL = '$mp_scroll';\nvar MP_EV_SUBMIT = '$mp_submit';\n\n/**\n * Autocapture: manages automatic event tracking\n * @constructor\n */\nvar Autocapture = function(mp) {\n this.mp = mp;\n};\n\nAutocapture.prototype.init = function() {\n if (!minDOMApisSupported()) {\n logger.critical('Autocapture unavailable: missing required DOM APIs');\n return;\n }\n\n this.initPageviewTracking();\n this.initClickTracking();\n this.initInputTracking();\n this.initScrollTracking();\n this.initSubmitTracking();\n};\n\nAutocapture.prototype.getFullConfig = function() {\n var autocaptureConfig = this.mp.get_config(AUTOCAPTURE_CONFIG_KEY);\n if (!autocaptureConfig) {\n // Autocapture is completely off\n return {};\n } else if (_.isObject(autocaptureConfig)) {\n return _.extend({}, CONFIG_DEFAULTS, autocaptureConfig);\n } else {\n // Autocapture config is non-object truthy value, return default\n return CONFIG_DEFAULTS;\n }\n};\n\nAutocapture.prototype.getConfig = function(key) {\n return this.getFullConfig()[key];\n};\n\nAutocapture.prototype.currentUrlBlocked = function() {\n var i;\n var currentUrl = _.info.currentUrl();\n\n var allowUrlRegexes = this.getConfig(CONFIG_ALLOW_URL_REGEXES) || [];\n if (allowUrlRegexes.length) {\n // we're using an allowlist, only track if current URL matches\n var allowed = false;\n for (i = 0; i < allowUrlRegexes.length; i++) {\n var allowRegex = allowUrlRegexes[i];\n try {\n if (currentUrl.match(allowRegex)) {\n allowed = true;\n break;\n }\n } catch (err) {\n logger.critical('Error while checking block URL regex: ' + allowRegex, err);\n return true;\n }\n }\n if (!allowed) {\n // wasn't allowed by any regex\n return true;\n }\n }\n\n var blockUrlRegexes = this.getConfig(CONFIG_BLOCK_URL_REGEXES) || [];\n if (!blockUrlRegexes || !blockUrlRegexes.length) {\n return false;\n }\n\n for (i = 0; i < blockUrlRegexes.length; i++) {\n try {\n if (currentUrl.match(blockUrlRegexes[i])) {\n return true;\n }\n } catch (err) {\n logger.critical('Error while checking block URL regex: ' + blockUrlRegexes[i], err);\n return true;\n }\n }\n return false;\n};\n\nAutocapture.prototype.pageviewTrackingConfig = function() {\n // supports both autocapture config and old track_pageview config\n if (this.mp.get_config(AUTOCAPTURE_CONFIG_KEY)) {\n return this.getConfig(CONFIG_TRACK_PAGEVIEW);\n } else {\n return this.mp.get_config(LEGACY_PAGEVIEW_CONFIG_KEY);\n }\n};\n\n// helper for event handlers\nAutocapture.prototype.trackDomEvent = function(ev, mpEventName) {\n if (this.currentUrlBlocked()) {\n return;\n }\n\n var props = getPropsForDOMEvent(ev, {\n allowElementCallback: this.getConfig(CONFIG_ALLOW_ELEMENT_CALLBACK),\n allowSelectors: this.getConfig(CONFIG_ALLOW_SELECTORS),\n blockAttrs: this.getConfig(CONFIG_BLOCK_ATTRS),\n blockElementCallback: this.getConfig(CONFIG_BLOCK_ELEMENT_CALLBACK),\n blockSelectors: this.getConfig(CONFIG_BLOCK_SELECTORS),\n captureExtraAttrs: this.getConfig(CONFIG_CAPTURE_EXTRA_ATTRS),\n captureTextContent: this.getConfig(CONFIG_CAPTURE_TEXT_CONTENT)\n });\n if (props) {\n _.extend(props, DEFAULT_PROPS);\n this.mp.track(mpEventName, props);\n }\n};\n\nAutocapture.prototype.initClickTracking = function() {\n win.removeEventListener(EV_CLICK, this.listenerClick);\n\n if (!this.getConfig(CONFIG_TRACK_CLICK)) {\n return;\n }\n logger.log('Initializing click tracking');\n\n this.listenerClick = win.addEventListener(EV_CLICK, function(ev) {\n if (!this.getConfig(CONFIG_TRACK_CLICK)) {\n return;\n }\n this.trackDomEvent(ev, MP_EV_CLICK);\n }.bind(this));\n};\n\nAutocapture.prototype.initInputTracking = function() {\n win.removeEventListener(EV_CHANGE, this.listenerChange);\n\n if (!this.getConfig(CONFIG_TRACK_INPUT)) {\n return;\n }\n logger.log('Initializing input tracking');\n\n this.listenerChange = win.addEventListener(EV_CHANGE, function(ev) {\n if (!this.getConfig(CONFIG_TRACK_INPUT)) {\n return;\n }\n this.trackDomEvent(ev, MP_EV_INPUT);\n }.bind(this));\n};\n\nAutocapture.prototype.initPageviewTracking = function() {\n win.removeEventListener(EV_POPSTATE, this.listenerPopstate);\n win.removeEventListener(EV_HASHCHANGE, this.listenerHashchange);\n win.removeEventListener(EV_MP_LOCATION_CHANGE, this.listenerLocationchange);\n\n if (!this.pageviewTrackingConfig()) {\n return;\n }\n logger.log('Initializing pageview tracking');\n\n var previousTrackedUrl = '';\n var tracked = false;\n if (!this.currentUrlBlocked()) {\n tracked = this.mp.track_pageview(DEFAULT_PROPS);\n }\n if (tracked) {\n previousTrackedUrl = _.info.currentUrl();\n }\n\n this.listenerPopstate = win.addEventListener(EV_POPSTATE, function() {\n win.dispatchEvent(new Event(EV_MP_LOCATION_CHANGE));\n });\n this.listenerHashchange = win.addEventListener(EV_HASHCHANGE, function() {\n win.dispatchEvent(new Event(EV_MP_LOCATION_CHANGE));\n });\n var nativePushState = win.history.pushState;\n if (typeof nativePushState === 'function') {\n win.history.pushState = function(state, unused, url) {\n nativePushState.call(win.history, state, unused, url);\n win.dispatchEvent(new Event(EV_MP_LOCATION_CHANGE));\n };\n }\n var nativeReplaceState = win.history.replaceState;\n if (typeof nativeReplaceState === 'function') {\n win.history.replaceState = function(state, unused, url) {\n nativeReplaceState.call(win.history, state, unused, url);\n win.dispatchEvent(new Event(EV_MP_LOCATION_CHANGE));\n };\n }\n this.listenerLocationchange = win.addEventListener(EV_MP_LOCATION_CHANGE, safewrap(function() {\n if (this.currentUrlBlocked()) {\n return;\n }\n\n var currentUrl = _.info.currentUrl();\n var shouldTrack = false;\n var didPathChange = currentUrl.split('#')[0].split('?')[0] !== previousTrackedUrl.split('#')[0].split('?')[0];\n var trackPageviewOption = this.pageviewTrackingConfig();\n if (trackPageviewOption === PAGEVIEW_OPTION_FULL_URL) {\n shouldTrack = currentUrl !== previousTrackedUrl;\n } else if (trackPageviewOption === PAGEVIEW_OPTION_URL_WITH_PATH_AND_QUERY_STRING) {\n shouldTrack = currentUrl.split('#')[0] !== previousTrackedUrl.split('#')[0];\n } else if (trackPageviewOption === PAGEVIEW_OPTION_URL_WITH_PATH) {\n shouldTrack = didPathChange;\n }\n\n if (shouldTrack) {\n var tracked = this.mp.track_pageview(DEFAULT_PROPS);\n if (tracked) {\n previousTrackedUrl = currentUrl;\n }\n if (didPathChange) {\n this.lastScrollCheckpoint = 0;\n logger.log('Path change: re-initializing scroll depth checkpoints');\n }\n }\n }.bind(this)));\n};\n\nAutocapture.prototype.initScrollTracking = function() {\n win.removeEventListener(EV_SCROLLEND, this.listenerScroll);\n\n if (!this.getConfig(CONFIG_TRACK_SCROLL)) {\n return;\n }\n logger.log('Initializing scroll tracking');\n this.lastScrollCheckpoint = 0;\n\n this.listenerScroll = win.addEventListener(EV_SCROLLEND, safewrap(function() {\n if (!this.getConfig(CONFIG_TRACK_SCROLL)) {\n return;\n }\n if (this.currentUrlBlocked()) {\n return;\n }\n\n var shouldTrack = this.getConfig(CONFIG_SCROLL_CAPTURE_ALL);\n var scrollCheckpoints = (this.getConfig(CONFIG_SCROLL_CHECKPOINTS) || [])\n .slice()\n .sort(function(a, b) { return a - b; });\n\n var scrollTop = win.scrollY;\n var props = _.extend({'$scroll_top': scrollTop}, DEFAULT_PROPS);\n try {\n var scrollHeight = document$1.body.scrollHeight;\n var scrollPercentage = Math.round((scrollTop / (scrollHeight - win.innerHeight)) * 100);\n props['$scroll_height'] = scrollHeight;\n props['$scroll_percentage'] = scrollPercentage;\n if (scrollPercentage > this.lastScrollCheckpoint) {\n for (var i = 0; i < scrollCheckpoints.length; i++) {\n var checkpoint = scrollCheckpoints[i];\n if (\n scrollPercentage >= checkpoint &&\n this.lastScrollCheckpoint < checkpoint\n ) {\n props['$scroll_checkpoint'] = checkpoint;\n this.lastScrollCheckpoint = checkpoint;\n shouldTrack = true;\n }\n }\n }\n } catch (err) {\n logger.critical('Error while calculating scroll percentage', err);\n }\n if (shouldTrack) {\n this.mp.track(MP_EV_SCROLL, props);\n }\n }.bind(this)));\n};\n\nAutocapture.prototype.initSubmitTracking = function() {\n win.removeEventListener(EV_SUBMIT, this.listenerSubmit);\n\n if (!this.getConfig(CONFIG_TRACK_SUBMIT)) {\n return;\n }\n logger.log('Initializing submit tracking');\n\n this.listenerSubmit = win.addEventListener(EV_SUBMIT, function(ev) {\n if (!this.getConfig(CONFIG_TRACK_SUBMIT)) {\n return;\n }\n this.trackDomEvent(ev, MP_EV_SUBMIT);\n }.bind(this));\n};\n\n// TODO integrate error_reporter from mixpanel instance\nsafewrapClass(Autocapture);\n\n/* eslint camelcase: \"off\" */\n\n/**\n * DomTracker Object\n * @constructor\n */\nvar DomTracker = function() {};\n\n\n// interface\nDomTracker.prototype.create_properties = function() {};\nDomTracker.prototype.event_handler = function() {};\nDomTracker.prototype.after_track_handler = function() {};\n\nDomTracker.prototype.init = function(mixpanel_instance) {\n this.mp = mixpanel_instance;\n return this;\n};\n\n/**\n * @param {Object|string} query\n * @param {string} event_name\n * @param {Object=} properties\n * @param {function=} user_callback\n */\nDomTracker.prototype.track = function(query, event_name, properties, user_callback) {\n var that = this;\n var elements = _.dom_query(query);\n\n if (elements.length === 0) {\n console$1.error('The DOM query (' + query + ') returned 0 elements');\n return;\n }\n\n _.each(elements, function(element) {\n _.register_event(element, this.override_event, function(e) {\n var options = {};\n var props = that.create_properties(properties, this);\n var timeout = that.mp.get_config('track_links_timeout');\n\n that.event_handler(e, this, options);\n\n // in case the mixpanel servers don't get back to us in time\n window.setTimeout(that.track_callback(user_callback, props, options, true), timeout);\n\n // fire the tracking event\n that.mp.track(event_name, props, that.track_callback(user_callback, props, options));\n });\n }, this);\n\n return true;\n};\n\n/**\n * @param {function} user_callback\n * @param {Object} props\n * @param {boolean=} timeout_occured\n */\nDomTracker.prototype.track_callback = function(user_callback, props, options, timeout_occured) {\n timeout_occured = timeout_occured || false;\n var that = this;\n\n return function() {\n // options is referenced from both callbacks, so we can have\n // a 'lock' of sorts to ensure only one fires\n if (options.callback_fired) { return; }\n options.callback_fired = true;\n\n if (user_callback && user_callback(timeout_occured, props) === false) {\n // user can prevent the default functionality by\n // returning false from their callback\n return;\n }\n\n that.after_track_handler(props, options, timeout_occured);\n };\n};\n\nDomTracker.prototype.create_properties = function(properties, element) {\n var props;\n\n if (typeof(properties) === 'function') {\n props = properties(element);\n } else {\n props = _.extend({}, properties);\n }\n\n return props;\n};\n\n/**\n * LinkTracker Object\n * @constructor\n * @extends DomTracker\n */\nvar LinkTracker = function() {\n this.override_event = 'click';\n};\n_.inherit(LinkTracker, DomTracker);\n\nLinkTracker.prototype.create_properties = function(properties, element) {\n var props = LinkTracker.superclass.create_properties.apply(this, arguments);\n\n if (element.href) { props['url'] = element.href; }\n\n return props;\n};\n\nLinkTracker.prototype.event_handler = function(evt, element, options) {\n options.new_tab = (\n evt.which === 2 ||\n evt.metaKey ||\n evt.ctrlKey ||\n element.target === '_blank'\n );\n options.href = element.href;\n\n if (!options.new_tab) {\n evt.preventDefault();\n }\n};\n\nLinkTracker.prototype.after_track_handler = function(props, options) {\n if (options.new_tab) { return; }\n\n setTimeout(function() {\n window.location = options.href;\n }, 0);\n};\n\n/**\n * FormTracker Object\n * @constructor\n * @extends DomTracker\n */\nvar FormTracker = function() {\n this.override_event = 'submit';\n};\n_.inherit(FormTracker, DomTracker);\n\nFormTracker.prototype.event_handler = function(evt, element, options) {\n options.element = element;\n evt.preventDefault();\n};\n\nFormTracker.prototype.after_track_handler = function(props, options) {\n setTimeout(function() {\n options.element.submit();\n }, 0);\n};\n\n/* eslint camelcase: \"off\" */\n\n/** @const */ var SET_ACTION = '$set';\n/** @const */ var SET_ONCE_ACTION = '$set_once';\n/** @const */ var UNSET_ACTION = '$unset';\n/** @const */ var ADD_ACTION = '$add';\n/** @const */ var APPEND_ACTION = '$append';\n/** @const */ var UNION_ACTION = '$union';\n/** @const */ var REMOVE_ACTION = '$remove';\n/** @const */ var DELETE_ACTION = '$delete';\n\n// Common internal methods for mixpanel.people and mixpanel.group APIs.\n// These methods shouldn't involve network I/O.\nvar apiActions = {\n set_action: function(prop, to) {\n var data = {};\n var $set = {};\n if (_.isObject(prop)) {\n _.each(prop, function(v, k) {\n if (!this._is_reserved_property(k)) {\n $set[k] = v;\n }\n }, this);\n } else {\n $set[prop] = to;\n }\n\n data[SET_ACTION] = $set;\n return data;\n },\n\n unset_action: function(prop) {\n var data = {};\n var $unset = [];\n if (!_.isArray(prop)) {\n prop = [prop];\n }\n\n _.each(prop, function(k) {\n if (!this._is_reserved_property(k)) {\n $unset.push(k);\n }\n }, this);\n\n data[UNSET_ACTION] = $unset;\n return data;\n },\n\n set_once_action: function(prop, to) {\n var data = {};\n var $set_once = {};\n if (_.isObject(prop)) {\n _.each(prop, function(v, k) {\n if (!this._is_reserved_property(k)) {\n $set_once[k] = v;\n }\n }, this);\n } else {\n $set_once[prop] = to;\n }\n data[SET_ONCE_ACTION] = $set_once;\n return data;\n },\n\n union_action: function(list_name, values) {\n var data = {};\n var $union = {};\n if (_.isObject(list_name)) {\n _.each(list_name, function(v, k) {\n if (!this._is_reserved_property(k)) {\n $union[k] = _.isArray(v) ? v : [v];\n }\n }, this);\n } else {\n $union[list_name] = _.isArray(values) ? values : [values];\n }\n data[UNION_ACTION] = $union;\n return data;\n },\n\n append_action: function(list_name, value) {\n var data = {};\n var $append = {};\n if (_.isObject(list_name)) {\n _.each(list_name, function(v, k) {\n if (!this._is_reserved_property(k)) {\n $append[k] = v;\n }\n }, this);\n } else {\n $append[list_name] = value;\n }\n data[APPEND_ACTION] = $append;\n return data;\n },\n\n remove_action: function(list_name, value) {\n var data = {};\n var $remove = {};\n if (_.isObject(list_name)) {\n _.each(list_name, function(v, k) {\n if (!this._is_reserved_property(k)) {\n $remove[k] = v;\n }\n }, this);\n } else {\n $remove[list_name] = value;\n }\n data[REMOVE_ACTION] = $remove;\n return data;\n },\n\n delete_action: function() {\n var data = {};\n data[DELETE_ACTION] = '';\n return data;\n }\n};\n\n/* eslint camelcase: \"off\" */\n\n/**\n * Mixpanel Group Object\n * @constructor\n */\nvar MixpanelGroup = function() {};\n\n_.extend(MixpanelGroup.prototype, apiActions);\n\nMixpanelGroup.prototype._init = function(mixpanel_instance, group_key, group_id) {\n this._mixpanel = mixpanel_instance;\n this._group_key = group_key;\n this._group_id = group_id;\n};\n\n/**\n * Set properties on a group.\n *\n * ### Usage:\n *\n * mixpanel.get_group('company', 'mixpanel').set('Location', '405 Howard');\n *\n * // or set multiple properties at once\n * mixpanel.get_group('company', 'mixpanel').set({\n * 'Location': '405 Howard',\n * 'Founded' : 2009,\n * });\n * // properties can be strings, integers, dates, or lists\n *\n * @param {Object|String} prop If a string, this is the name of the property. If an object, this is an associative array of names and values.\n * @param {*} [to] A value to set on the given property name\n * @param {Function} [callback] If provided, the callback will be called after the tracking event\n */\nMixpanelGroup.prototype.set = addOptOutCheckMixpanelGroup(function(prop, to, callback) {\n var data = this.set_action(prop, to);\n if (_.isObject(prop)) {\n callback = to;\n }\n return this._send_request(data, callback);\n});\n\n/**\n * Set properties on a group, only if they do not yet exist.\n * This will not overwrite previous group property values, unlike\n * group.set().\n *\n * ### Usage:\n *\n * mixpanel.get_group('company', 'mixpanel').set_once('Location', '405 Howard');\n *\n * // or set multiple properties at once\n * mixpanel.get_group('company', 'mixpanel').set_once({\n * 'Location': '405 Howard',\n * 'Founded' : 2009,\n * });\n * // properties can be strings, integers, lists or dates\n *\n * @param {Object|String} prop If a string, this is the name of the property. If an object, this is an associative array of names and values.\n * @param {*} [to] A value to set on the given property name\n * @param {Function} [callback] If provided, the callback will be called after the tracking event\n */\nMixpanelGroup.prototype.set_once = addOptOutCheckMixpanelGroup(function(prop, to, callback) {\n var data = this.set_once_action(prop, to);\n if (_.isObject(prop)) {\n callback = to;\n }\n return this._send_request(data, callback);\n});\n\n/**\n * Unset properties on a group permanently.\n *\n * ### Usage:\n *\n * mixpanel.get_group('company', 'mixpanel').unset('Founded');\n *\n * @param {String} prop The name of the property.\n * @param {Function} [callback] If provided, the callback will be called after the tracking event\n */\nMixpanelGroup.prototype.unset = addOptOutCheckMixpanelGroup(function(prop, callback) {\n var data = this.unset_action(prop);\n return this._send_request(data, callback);\n});\n\n/**\n * Merge a given list with a list-valued group property, excluding duplicate values.\n *\n * ### Usage:\n *\n * // merge a value to a list, creating it if needed\n * mixpanel.get_group('company', 'mixpanel').union('Location', ['San Francisco', 'London']);\n *\n * @param {String} list_name Name of the property.\n * @param {Array} values Values to merge with the given property\n * @param {Function} [callback] If provided, the callback will be called after the tracking event\n */\nMixpanelGroup.prototype.union = addOptOutCheckMixpanelGroup(function(list_name, values, callback) {\n if (_.isObject(list_name)) {\n callback = values;\n }\n var data = this.union_action(list_name, values);\n return this._send_request(data, callback);\n});\n\n/**\n * Permanently delete a group.\n *\n * ### Usage:\n *\n * mixpanel.get_group('company', 'mixpanel').delete();\n *\n * @param {Function} [callback] If provided, the callback will be called after the tracking event\n */\nMixpanelGroup.prototype['delete'] = addOptOutCheckMixpanelGroup(function(callback) {\n // bracket notation above prevents a minification error related to reserved words\n var data = this.delete_action();\n return this._send_request(data, callback);\n});\n\n/**\n * Remove a property from a group. The value will be ignored if doesn't exist.\n *\n * ### Usage:\n *\n * mixpanel.get_group('company', 'mixpanel').remove('Location', 'London');\n *\n * @param {String} list_name Name of the property.\n * @param {Object} value Value to remove from the given group property\n * @param {Function} [callback] If provided, the callback will be called after the tracking event\n */\nMixpanelGroup.prototype.remove = addOptOutCheckMixpanelGroup(function(list_name, value, callback) {\n var data = this.remove_action(list_name, value);\n return this._send_request(data, callback);\n});\n\nMixpanelGroup.prototype._send_request = function(data, callback) {\n data['$group_key'] = this._group_key;\n data['$group_id'] = this._group_id;\n data['$token'] = this._get_config('token');\n\n var date_encoded_data = _.encodeDates(data);\n return this._mixpanel._track_or_batch({\n type: 'groups',\n data: date_encoded_data,\n endpoint: this._get_config('api_host') + '/' + this._get_config('api_routes')['groups'],\n batcher: this._mixpanel.request_batchers.groups\n }, callback);\n};\n\nMixpanelGroup.prototype._is_reserved_property = function(prop) {\n return prop === '$group_key' || prop === '$group_id';\n};\n\nMixpanelGroup.prototype._get_config = function(conf) {\n return this._mixpanel.get_config(conf);\n};\n\nMixpanelGroup.prototype.toString = function() {\n return this._mixpanel.toString() + '.group.' + this._group_key + '.' + this._group_id;\n};\n\n// MixpanelGroup Exports\nMixpanelGroup.prototype['remove'] = MixpanelGroup.prototype.remove;\nMixpanelGroup.prototype['set'] = MixpanelGroup.prototype.set;\nMixpanelGroup.prototype['set_once'] = MixpanelGroup.prototype.set_once;\nMixpanelGroup.prototype['union'] = MixpanelGroup.prototype.union;\nMixpanelGroup.prototype['unset'] = MixpanelGroup.prototype.unset;\nMixpanelGroup.prototype['toString'] = MixpanelGroup.prototype.toString;\n\n/* eslint camelcase: \"off\" */\n\n/**\n * Mixpanel People Object\n * @constructor\n */\nvar MixpanelPeople = function() {};\n\n_.extend(MixpanelPeople.prototype, apiActions);\n\nMixpanelPeople.prototype._init = function(mixpanel_instance) {\n this._mixpanel = mixpanel_instance;\n};\n\n/*\n* Set properties on a user record.\n*\n* ### Usage:\n*\n* mixpanel.people.set('gender', 'm');\n*\n* // or set multiple properties at once\n* mixpanel.people.set({\n* 'Company': 'Acme',\n* 'Plan': 'Premium',\n* 'Upgrade date': new Date()\n* });\n* // properties can be strings, integers, dates, or lists\n*\n* @param {Object|String} prop If a string, this is the name of the property. If an object, this is an associative array of names and values.\n* @param {*} [to] A value to set on the given property name\n* @param {Function} [callback] If provided, the callback will be called after tracking the event.\n*/\nMixpanelPeople.prototype.set = addOptOutCheckMixpanelPeople(function(prop, to, callback) {\n var data = this.set_action(prop, to);\n if (_.isObject(prop)) {\n callback = to;\n }\n // make sure that the referrer info has been updated and saved\n if (this._get_config('save_referrer')) {\n this._mixpanel['persistence'].update_referrer_info(document.referrer);\n }\n\n // update $set object with default people properties\n data[SET_ACTION] = _.extend(\n {},\n _.info.people_properties(),\n data[SET_ACTION]\n );\n return this._send_request(data, callback);\n});\n\n/*\n* Set properties on a user record, only if they do not yet exist.\n* This will not overwrite previous people property values, unlike\n* people.set().\n*\n* ### Usage:\n*\n* mixpanel.people.set_once('First Login Date', new Date());\n*\n* // or set multiple properties at once\n* mixpanel.people.set_once({\n* 'First Login Date': new Date(),\n* 'Starting Plan': 'Premium'\n* });\n*\n* // properties can be strings, integers or dates\n*\n* @param {Object|String} prop If a string, this is the name of the property. If an object, this is an associative array of names and values.\n* @param {*} [to] A value to set on the given property name\n* @param {Function} [callback] If provided, the callback will be called after tracking the event.\n*/\nMixpanelPeople.prototype.set_once = addOptOutCheckMixpanelPeople(function(prop, to, callback) {\n var data = this.set_once_action(prop, to);\n if (_.isObject(prop)) {\n callback = to;\n }\n return this._send_request(data, callback);\n});\n\n/*\n* Unset properties on a user record (permanently removes the properties and their values from a profile).\n*\n* ### Usage:\n*\n* mixpanel.people.unset('gender');\n*\n* // or unset multiple properties at once\n* mixpanel.people.unset(['gender', 'Company']);\n*\n* @param {Array|String} prop If a string, this is the name of the property. If an array, this is a list of property names.\n* @param {Function} [callback] If provided, the callback will be called after tracking the event.\n*/\nMixpanelPeople.prototype.unset = addOptOutCheckMixpanelPeople(function(prop, callback) {\n var data = this.unset_action(prop);\n return this._send_request(data, callback);\n});\n\n/*\n* Increment/decrement numeric people analytics properties.\n*\n* ### Usage:\n*\n* mixpanel.people.increment('page_views', 1);\n*\n* // or, for convenience, if you're just incrementing a counter by\n* // 1, you can simply do\n* mixpanel.people.increment('page_views');\n*\n* // to decrement a counter, pass a negative number\n* mixpanel.people.increment('credits_left', -1);\n*\n* // like mixpanel.people.set(), you can increment multiple\n* // properties at once:\n* mixpanel.people.increment({\n* counter1: 1,\n* counter2: 6\n* });\n*\n* @param {Object|String} prop If a string, this is the name of the property. If an object, this is an associative array of names and numeric values.\n* @param {Number} [by] An amount to increment the given property\n* @param {Function} [callback] If provided, the callback will be called after tracking the event.\n*/\nMixpanelPeople.prototype.increment = addOptOutCheckMixpanelPeople(function(prop, by, callback) {\n var data = {};\n var $add = {};\n if (_.isObject(prop)) {\n _.each(prop, function(v, k) {\n if (!this._is_reserved_property(k)) {\n if (isNaN(parseFloat(v))) {\n console$1.error('Invalid increment value passed to mixpanel.people.increment - must be a number');\n return;\n } else {\n $add[k] = v;\n }\n }\n }, this);\n callback = by;\n } else {\n // convenience: mixpanel.people.increment('property'); will\n // increment 'property' by 1\n if (_.isUndefined(by)) {\n by = 1;\n }\n $add[prop] = by;\n }\n data[ADD_ACTION] = $add;\n\n return this._send_request(data, callback);\n});\n\n/*\n* Append a value to a list-valued people analytics property.\n*\n* ### Usage:\n*\n* // append a value to a list, creating it if needed\n* mixpanel.people.append('pages_visited', 'homepage');\n*\n* // like mixpanel.people.set(), you can append multiple\n* // properties at once:\n* mixpanel.people.append({\n* list1: 'bob',\n* list2: 123\n* });\n*\n* @param {Object|String} list_name If a string, this is the name of the property. If an object, this is an associative array of names and values.\n* @param {*} [value] value An item to append to the list\n* @param {Function} [callback] If provided, the callback will be called after tracking the event.\n*/\nMixpanelPeople.prototype.append = addOptOutCheckMixpanelPeople(function(list_name, value, callback) {\n if (_.isObject(list_name)) {\n callback = value;\n }\n var data = this.append_action(list_name, value);\n return this._send_request(data, callback);\n});\n\n/*\n* Remove a value from a list-valued people analytics property.\n*\n* ### Usage:\n*\n* mixpanel.people.remove('School', 'UCB');\n*\n* @param {Object|String} list_name If a string, this is the name of the property. If an object, this is an associative array of names and values.\n* @param {*} [value] value Item to remove from the list\n* @param {Function} [callback] If provided, the callback will be called after tracking the event.\n*/\nMixpanelPeople.prototype.remove = addOptOutCheckMixpanelPeople(function(list_name, value, callback) {\n if (_.isObject(list_name)) {\n callback = value;\n }\n var data = this.remove_action(list_name, value);\n return this._send_request(data, callback);\n});\n\n/*\n* Merge a given list with a list-valued people analytics property,\n* excluding duplicate values.\n*\n* ### Usage:\n*\n* // merge a value to a list, creating it if needed\n* mixpanel.people.union('pages_visited', 'homepage');\n*\n* // like mixpanel.people.set(), you can append multiple\n* // properties at once:\n* mixpanel.people.union({\n* list1: 'bob',\n* list2: 123\n* });\n*\n* // like mixpanel.people.append(), you can append multiple\n* // values to the same list:\n* mixpanel.people.union({\n* list1: ['bob', 'billy']\n* });\n*\n* @param {Object|String} list_name If a string, this is the name of the property. If an object, this is an associative array of names and values.\n* @param {*} [value] Value / values to merge with the given property\n* @param {Function} [callback] If provided, the callback will be called after tracking the event.\n*/\nMixpanelPeople.prototype.union = addOptOutCheckMixpanelPeople(function(list_name, values, callback) {\n if (_.isObject(list_name)) {\n callback = values;\n }\n var data = this.union_action(list_name, values);\n return this._send_request(data, callback);\n});\n\n/*\n * Record that you have charged the current user a certain amount\n * of money. Charges recorded with track_charge() will appear in the\n * Mixpanel revenue report.\n *\n * ### Usage:\n *\n * // charge a user $50\n * mixpanel.people.track_charge(50);\n *\n * // charge a user $30.50 on the 2nd of january\n * mixpanel.people.track_charge(30.50, {\n * '$time': new Date('jan 1 2012')\n * });\n *\n * @param {Number} amount The amount of money charged to the current user\n * @param {Object} [properties] An associative array of properties associated with the charge\n * @param {Function} [callback] If provided, the callback will be called when the server responds\n * @deprecated\n */\nMixpanelPeople.prototype.track_charge = addOptOutCheckMixpanelPeople(function(amount, properties, callback) {\n if (!_.isNumber(amount)) {\n amount = parseFloat(amount);\n if (isNaN(amount)) {\n console$1.error('Invalid value passed to mixpanel.people.track_charge - must be a number');\n return;\n }\n }\n\n return this.append('$transactions', _.extend({\n '$amount': amount\n }, properties), callback);\n});\n\n/*\n * Permanently clear all revenue report transactions from the\n * current user's people analytics profile.\n *\n * ### Usage:\n *\n * mixpanel.people.clear_charges();\n *\n * @param {Function} [callback] If provided, the callback will be called after tracking the event.\n * @deprecated\n */\nMixpanelPeople.prototype.clear_charges = function(callback) {\n return this.set('$transactions', [], callback);\n};\n\n/*\n* Permanently deletes the current people analytics profile from\n* Mixpanel (using the current distinct_id).\n*\n* ### Usage:\n*\n* // remove the all data you have stored about the current user\n* mixpanel.people.delete_user();\n*\n*/\nMixpanelPeople.prototype.delete_user = function() {\n if (!this._identify_called()) {\n console$1.error('mixpanel.people.delete_user() requires you to call identify() first');\n return;\n }\n var data = {'$delete': this._mixpanel.get_distinct_id()};\n return this._send_request(data);\n};\n\nMixpanelPeople.prototype.toString = function() {\n return this._mixpanel.toString() + '.people';\n};\n\nMixpanelPeople.prototype._send_request = function(data, callback) {\n data['$token'] = this._get_config('token');\n data['$distinct_id'] = this._mixpanel.get_distinct_id();\n var device_id = this._mixpanel.get_property('$device_id');\n var user_id = this._mixpanel.get_property('$user_id');\n var had_persisted_distinct_id = this._mixpanel.get_property('$had_persisted_distinct_id');\n if (device_id) {\n data['$device_id'] = device_id;\n }\n if (user_id) {\n data['$user_id'] = user_id;\n }\n if (had_persisted_distinct_id) {\n data['$had_persisted_distinct_id'] = had_persisted_distinct_id;\n }\n\n var date_encoded_data = _.encodeDates(data);\n\n if (!this._identify_called()) {\n this._enqueue(data);\n if (!_.isUndefined(callback)) {\n if (this._get_config('verbose')) {\n callback({status: -1, error: null});\n } else {\n callback(-1);\n }\n }\n return _.truncate(date_encoded_data, 255);\n }\n\n return this._mixpanel._track_or_batch({\n type: 'people',\n data: date_encoded_data,\n endpoint: this._get_config('api_host') + '/' + this._get_config('api_routes')['engage'],\n batcher: this._mixpanel.request_batchers.people\n }, callback);\n};\n\nMixpanelPeople.prototype._get_config = function(conf_var) {\n return this._mixpanel.get_config(conf_var);\n};\n\nMixpanelPeople.prototype._identify_called = function() {\n return this._mixpanel._flags.identify_called === true;\n};\n\n// Queue up engage operations if identify hasn't been called yet.\nMixpanelPeople.prototype._enqueue = function(data) {\n if (SET_ACTION in data) {\n this._mixpanel['persistence']._add_to_people_queue(SET_ACTION, data);\n } else if (SET_ONCE_ACTION in data) {\n this._mixpanel['persistence']._add_to_people_queue(SET_ONCE_ACTION, data);\n } else if (UNSET_ACTION in data) {\n this._mixpanel['persistence']._add_to_people_queue(UNSET_ACTION, data);\n } else if (ADD_ACTION in data) {\n this._mixpanel['persistence']._add_to_people_queue(ADD_ACTION, data);\n } else if (APPEND_ACTION in data) {\n this._mixpanel['persistence']._add_to_people_queue(APPEND_ACTION, data);\n } else if (REMOVE_ACTION in data) {\n this._mixpanel['persistence']._add_to_people_queue(REMOVE_ACTION, data);\n } else if (UNION_ACTION in data) {\n this._mixpanel['persistence']._add_to_people_queue(UNION_ACTION, data);\n } else {\n console$1.error('Invalid call to _enqueue():', data);\n }\n};\n\nMixpanelPeople.prototype._flush_one_queue = function(action, action_method, callback, queue_to_params_fn) {\n var _this = this;\n var queued_data = _.extend({}, this._mixpanel['persistence'].load_queue(action));\n var action_params = queued_data;\n\n if (!_.isUndefined(queued_data) && _.isObject(queued_data) && !_.isEmptyObject(queued_data)) {\n _this._mixpanel['persistence']._pop_from_people_queue(action, queued_data);\n _this._mixpanel['persistence'].save();\n if (queue_to_params_fn) {\n action_params = queue_to_params_fn(queued_data);\n }\n action_method.call(_this, action_params, function(response, data) {\n // on bad response, we want to add it back to the queue\n if (response === 0) {\n _this._mixpanel['persistence']._add_to_people_queue(action, queued_data);\n }\n if (!_.isUndefined(callback)) {\n callback(response, data);\n }\n });\n }\n};\n\n// Flush queued engage operations - order does not matter,\n// and there are network level race conditions anyway\nMixpanelPeople.prototype._flush = function(\n _set_callback, _add_callback, _append_callback, _set_once_callback, _union_callback, _unset_callback, _remove_callback\n) {\n var _this = this;\n\n this._flush_one_queue(SET_ACTION, this.set, _set_callback);\n this._flush_one_queue(SET_ONCE_ACTION, this.set_once, _set_once_callback);\n this._flush_one_queue(UNSET_ACTION, this.unset, _unset_callback, function(queue) { return _.keys(queue); });\n this._flush_one_queue(ADD_ACTION, this.increment, _add_callback);\n this._flush_one_queue(UNION_ACTION, this.union, _union_callback);\n\n // we have to fire off each $append individually since there is\n // no concat method server side\n var $append_queue = this._mixpanel['persistence'].load_queue(APPEND_ACTION);\n if (!_.isUndefined($append_queue) && _.isArray($append_queue) && $append_queue.length) {\n var $append_item;\n var append_callback = function(response, data) {\n if (response === 0) {\n _this._mixpanel['persistence']._add_to_people_queue(APPEND_ACTION, $append_item);\n }\n if (!_.isUndefined(_append_callback)) {\n _append_callback(response, data);\n }\n };\n for (var i = $append_queue.length - 1; i >= 0; i--) {\n $append_queue = this._mixpanel['persistence'].load_queue(APPEND_ACTION);\n $append_item = $append_queue.pop();\n _this._mixpanel['persistence'].save();\n if (!_.isEmptyObject($append_item)) {\n _this.append($append_item, append_callback);\n }\n }\n }\n\n // same for $remove\n var $remove_queue = this._mixpanel['persistence'].load_queue(REMOVE_ACTION);\n if (!_.isUndefined($remove_queue) && _.isArray($remove_queue) && $remove_queue.length) {\n var $remove_item;\n var remove_callback = function(response, data) {\n if (response === 0) {\n _this._mixpanel['persistence']._add_to_people_queue(REMOVE_ACTION, $remove_item);\n }\n if (!_.isUndefined(_remove_callback)) {\n _remove_callback(response, data);\n }\n };\n for (var j = $remove_queue.length - 1; j >= 0; j--) {\n $remove_queue = this._mixpanel['persistence'].load_queue(REMOVE_ACTION);\n $remove_item = $remove_queue.pop();\n _this._mixpanel['persistence'].save();\n if (!_.isEmptyObject($remove_item)) {\n _this.remove($remove_item, remove_callback);\n }\n }\n }\n};\n\nMixpanelPeople.prototype._is_reserved_property = function(prop) {\n return prop === '$distinct_id' || prop === '$token' || prop === '$device_id' || prop === '$user_id' || prop === '$had_persisted_distinct_id';\n};\n\n// MixpanelPeople Exports\nMixpanelPeople.prototype['set'] = MixpanelPeople.prototype.set;\nMixpanelPeople.prototype['set_once'] = MixpanelPeople.prototype.set_once;\nMixpanelPeople.prototype['unset'] = MixpanelPeople.prototype.unset;\nMixpanelPeople.prototype['increment'] = MixpanelPeople.prototype.increment;\nMixpanelPeople.prototype['append'] = MixpanelPeople.prototype.append;\nMixpanelPeople.prototype['remove'] = MixpanelPeople.prototype.remove;\nMixpanelPeople.prototype['union'] = MixpanelPeople.prototype.union;\nMixpanelPeople.prototype['track_charge'] = MixpanelPeople.prototype.track_charge;\nMixpanelPeople.prototype['clear_charges'] = MixpanelPeople.prototype.clear_charges;\nMixpanelPeople.prototype['delete_user'] = MixpanelPeople.prototype.delete_user;\nMixpanelPeople.prototype['toString'] = MixpanelPeople.prototype.toString;\n\n/* eslint camelcase: \"off\" */\n\n/*\n * Constants\n */\n/** @const */ var SET_QUEUE_KEY = '__mps';\n/** @const */ var SET_ONCE_QUEUE_KEY = '__mpso';\n/** @const */ var UNSET_QUEUE_KEY = '__mpus';\n/** @const */ var ADD_QUEUE_KEY = '__mpa';\n/** @const */ var APPEND_QUEUE_KEY = '__mpap';\n/** @const */ var REMOVE_QUEUE_KEY = '__mpr';\n/** @const */ var UNION_QUEUE_KEY = '__mpu';\n// This key is deprecated, but we want to check for it to see whether aliasing is allowed.\n/** @const */ var PEOPLE_DISTINCT_ID_KEY = '$people_distinct_id';\n/** @const */ var ALIAS_ID_KEY = '__alias';\n/** @const */ var EVENT_TIMERS_KEY = '__timers';\n/** @const */ var RESERVED_PROPERTIES = [\n SET_QUEUE_KEY,\n SET_ONCE_QUEUE_KEY,\n UNSET_QUEUE_KEY,\n ADD_QUEUE_KEY,\n APPEND_QUEUE_KEY,\n REMOVE_QUEUE_KEY,\n UNION_QUEUE_KEY,\n PEOPLE_DISTINCT_ID_KEY,\n ALIAS_ID_KEY,\n EVENT_TIMERS_KEY\n];\n\n/**\n * Mixpanel Persistence Object\n * @constructor\n */\nvar MixpanelPersistence = function(config) {\n this['props'] = {};\n this.campaign_params_saved = false;\n\n if (config['persistence_name']) {\n this.name = 'mp_' + config['persistence_name'];\n } else {\n this.name = 'mp_' + config['token'] + '_mixpanel';\n }\n\n var storage_type = config['persistence'];\n if (storage_type !== 'cookie' && storage_type !== 'localStorage') {\n console$1.critical('Unknown persistence type ' + storage_type + '; falling back to cookie');\n storage_type = config['persistence'] = 'cookie';\n }\n\n if (storage_type === 'localStorage' && _.localStorage.is_supported()) {\n this.storage = _.localStorage;\n } else {\n this.storage = _.cookie;\n }\n\n this.load();\n this.update_config(config);\n this.upgrade();\n this.save();\n};\n\nMixpanelPersistence.prototype.properties = function() {\n var p = {};\n\n this.load();\n\n // Filter out reserved properties\n _.each(this['props'], function(v, k) {\n if (!_.include(RESERVED_PROPERTIES, k)) {\n p[k] = v;\n }\n });\n return p;\n};\n\nMixpanelPersistence.prototype.load = function() {\n if (this.disabled) { return; }\n\n var entry = this.storage.parse(this.name);\n\n if (entry) {\n this['props'] = _.extend({}, entry);\n }\n};\n\nMixpanelPersistence.prototype.upgrade = function() {\n var old_cookie,\n old_localstorage;\n\n // if transferring from cookie to localStorage or vice-versa, copy existing\n // super properties over to new storage mode\n if (this.storage === _.localStorage) {\n old_cookie = _.cookie.parse(this.name);\n\n _.cookie.remove(this.name);\n _.cookie.remove(this.name, true);\n\n if (old_cookie) {\n this.register_once(old_cookie);\n }\n } else if (this.storage === _.cookie) {\n old_localstorage = _.localStorage.parse(this.name);\n\n _.localStorage.remove(this.name);\n\n if (old_localstorage) {\n this.register_once(old_localstorage);\n }\n }\n};\n\nMixpanelPersistence.prototype.save = function() {\n if (this.disabled) { return; }\n\n this.storage.set(\n this.name,\n _.JSONEncode(this['props']),\n this.expire_days,\n this.cross_subdomain,\n this.secure,\n this.cross_site,\n this.cookie_domain\n );\n};\n\nMixpanelPersistence.prototype.load_prop = function(key) {\n this.load();\n return this['props'][key];\n};\n\nMixpanelPersistence.prototype.remove = function() {\n // remove both domain and subdomain cookies\n this.storage.remove(this.name, false, this.cookie_domain);\n this.storage.remove(this.name, true, this.cookie_domain);\n};\n\n// removes the storage entry and deletes all loaded data\n// forced name for tests\nMixpanelPersistence.prototype.clear = function() {\n this.remove();\n this['props'] = {};\n};\n\n/**\n* @param {Object} props\n* @param {*=} default_value\n* @param {number=} days\n*/\nMixpanelPersistence.prototype.register_once = function(props, default_value, days) {\n if (_.isObject(props)) {\n if (typeof(default_value) === 'undefined') { default_value = 'None'; }\n this.expire_days = (typeof(days) === 'undefined') ? this.default_expiry : days;\n\n this.load();\n\n _.each(props, function(val, prop) {\n if (!this['props'].hasOwnProperty(prop) || this['props'][prop] === default_value) {\n this['props'][prop] = val;\n }\n }, this);\n\n this.save();\n\n return true;\n }\n return false;\n};\n\n/**\n* @param {Object} props\n* @param {number=} days\n*/\nMixpanelPersistence.prototype.register = function(props, days) {\n if (_.isObject(props)) {\n this.expire_days = (typeof(days) === 'undefined') ? this.default_expiry : days;\n\n this.load();\n _.extend(this['props'], props);\n this.save();\n\n return true;\n }\n return false;\n};\n\nMixpanelPersistence.prototype.unregister = function(prop) {\n this.load();\n if (prop in this['props']) {\n delete this['props'][prop];\n this.save();\n }\n};\n\nMixpanelPersistence.prototype.update_search_keyword = function(referrer) {\n this.register(_.info.searchInfo(referrer));\n};\n\n// EXPORTED METHOD, we test this directly.\nMixpanelPersistence.prototype.update_referrer_info = function(referrer) {\n // If referrer doesn't exist, we want to note the fact that it was type-in traffic.\n this.register_once({\n '$initial_referrer': referrer || '$direct',\n '$initial_referring_domain': _.info.referringDomain(referrer) || '$direct'\n }, '');\n};\n\nMixpanelPersistence.prototype.get_referrer_info = function() {\n return _.strip_empty_properties({\n '$initial_referrer': this['props']['$initial_referrer'],\n '$initial_referring_domain': this['props']['$initial_referring_domain']\n });\n};\n\nMixpanelPersistence.prototype.update_config = function(config) {\n this.default_expiry = this.expire_days = config['cookie_expiration'];\n this.set_disabled(config['disable_persistence']);\n this.set_cookie_domain(config['cookie_domain']);\n this.set_cross_site(config['cross_site_cookie']);\n this.set_cross_subdomain(config['cross_subdomain_cookie']);\n this.set_secure(config['secure_cookie']);\n};\n\nMixpanelPersistence.prototype.set_disabled = function(disabled) {\n this.disabled = disabled;\n if (this.disabled) {\n this.remove();\n } else {\n this.save();\n }\n};\n\nMixpanelPersistence.prototype.set_cookie_domain = function(cookie_domain) {\n if (cookie_domain !== this.cookie_domain) {\n this.remove();\n this.cookie_domain = cookie_domain;\n this.save();\n }\n};\n\nMixpanelPersistence.prototype.set_cross_site = function(cross_site) {\n if (cross_site !== this.cross_site) {\n this.cross_site = cross_site;\n this.remove();\n this.save();\n }\n};\n\nMixpanelPersistence.prototype.set_cross_subdomain = function(cross_subdomain) {\n if (cross_subdomain !== this.cross_subdomain) {\n this.cross_subdomain = cross_subdomain;\n this.remove();\n this.save();\n }\n};\n\nMixpanelPersistence.prototype.get_cross_subdomain = function() {\n return this.cross_subdomain;\n};\n\nMixpanelPersistence.prototype.set_secure = function(secure) {\n if (secure !== this.secure) {\n this.secure = secure ? true : false;\n this.remove();\n this.save();\n }\n};\n\nMixpanelPersistence.prototype._add_to_people_queue = function(queue, data) {\n var q_key = this._get_queue_key(queue),\n q_data = data[queue],\n set_q = this._get_or_create_queue(SET_ACTION),\n set_once_q = this._get_or_create_queue(SET_ONCE_ACTION),\n unset_q = this._get_or_create_queue(UNSET_ACTION),\n add_q = this._get_or_create_queue(ADD_ACTION),\n union_q = this._get_or_create_queue(UNION_ACTION),\n remove_q = this._get_or_create_queue(REMOVE_ACTION, []),\n append_q = this._get_or_create_queue(APPEND_ACTION, []);\n\n if (q_key === SET_QUEUE_KEY) {\n // Update the set queue - we can override any existing values\n _.extend(set_q, q_data);\n // if there was a pending increment, override it\n // with the set.\n this._pop_from_people_queue(ADD_ACTION, q_data);\n // if there was a pending union, override it\n // with the set.\n this._pop_from_people_queue(UNION_ACTION, q_data);\n this._pop_from_people_queue(UNSET_ACTION, q_data);\n } else if (q_key === SET_ONCE_QUEUE_KEY) {\n // only queue the data if there is not already a set_once call for it.\n _.each(q_data, function(v, k) {\n if (!(k in set_once_q)) {\n set_once_q[k] = v;\n }\n });\n this._pop_from_people_queue(UNSET_ACTION, q_data);\n } else if (q_key === UNSET_QUEUE_KEY) {\n _.each(q_data, function(prop) {\n\n // undo previously-queued actions on this key\n _.each([set_q, set_once_q, add_q, union_q], function(enqueued_obj) {\n if (prop in enqueued_obj) {\n delete enqueued_obj[prop];\n }\n });\n _.each(append_q, function(append_obj) {\n if (prop in append_obj) {\n delete append_obj[prop];\n }\n });\n\n unset_q[prop] = true;\n\n });\n } else if (q_key === ADD_QUEUE_KEY) {\n _.each(q_data, function(v, k) {\n // If it exists in the set queue, increment\n // the value\n if (k in set_q) {\n set_q[k] += v;\n } else {\n // If it doesn't exist, update the add\n // queue\n if (!(k in add_q)) {\n add_q[k] = 0;\n }\n add_q[k] += v;\n }\n }, this);\n this._pop_from_people_queue(UNSET_ACTION, q_data);\n } else if (q_key === UNION_QUEUE_KEY) {\n _.each(q_data, function(v, k) {\n if (_.isArray(v)) {\n if (!(k in union_q)) {\n union_q[k] = [];\n }\n // Prevent duplicate values\n _.each(v, function(item) {\n if (!_.include(union_q[k], item)) {\n union_q[k].push(item);\n }\n });\n }\n });\n this._pop_from_people_queue(UNSET_ACTION, q_data);\n } else if (q_key === REMOVE_QUEUE_KEY) {\n remove_q.push(q_data);\n this._pop_from_people_queue(APPEND_ACTION, q_data);\n } else if (q_key === APPEND_QUEUE_KEY) {\n append_q.push(q_data);\n this._pop_from_people_queue(UNSET_ACTION, q_data);\n }\n\n console$1.log('MIXPANEL PEOPLE REQUEST (QUEUED, PENDING IDENTIFY):');\n console$1.log(data);\n\n this.save();\n};\n\nMixpanelPersistence.prototype._pop_from_people_queue = function(queue, data) {\n var q = this['props'][this._get_queue_key(queue)];\n if (!_.isUndefined(q)) {\n _.each(data, function(v, k) {\n if (queue === APPEND_ACTION || queue === REMOVE_ACTION) {\n // list actions: only remove if both k+v match\n // e.g. remove should not override append in a case like\n // append({foo: 'bar'}); remove({foo: 'qux'})\n _.each(q, function(queued_action) {\n if (queued_action[k] === v) {\n delete queued_action[k];\n }\n });\n } else {\n delete q[k];\n }\n }, this);\n }\n};\n\nMixpanelPersistence.prototype.load_queue = function(queue) {\n return this.load_prop(this._get_queue_key(queue));\n};\n\nMixpanelPersistence.prototype._get_queue_key = function(queue) {\n if (queue === SET_ACTION) {\n return SET_QUEUE_KEY;\n } else if (queue === SET_ONCE_ACTION) {\n return SET_ONCE_QUEUE_KEY;\n } else if (queue === UNSET_ACTION) {\n return UNSET_QUEUE_KEY;\n } else if (queue === ADD_ACTION) {\n return ADD_QUEUE_KEY;\n } else if (queue === APPEND_ACTION) {\n return APPEND_QUEUE_KEY;\n } else if (queue === REMOVE_ACTION) {\n return REMOVE_QUEUE_KEY;\n } else if (queue === UNION_ACTION) {\n return UNION_QUEUE_KEY;\n } else {\n console$1.error('Invalid queue:', queue);\n }\n};\n\nMixpanelPersistence.prototype._get_or_create_queue = function(queue, default_val) {\n var key = this._get_queue_key(queue);\n default_val = _.isUndefined(default_val) ? {} : default_val;\n return this['props'][key] || (this['props'][key] = default_val);\n};\n\nMixpanelPersistence.prototype.set_event_timer = function(event_name, timestamp) {\n var timers = this.load_prop(EVENT_TIMERS_KEY) || {};\n timers[event_name] = timestamp;\n this['props'][EVENT_TIMERS_KEY] = timers;\n this.save();\n};\n\nMixpanelPersistence.prototype.remove_event_timer = function(event_name) {\n var timers = this.load_prop(EVENT_TIMERS_KEY) || {};\n var timestamp = timers[event_name];\n if (!_.isUndefined(timestamp)) {\n delete this['props'][EVENT_TIMERS_KEY][event_name];\n this.save();\n }\n return timestamp;\n};\n\n/* eslint camelcase: \"off\" */\n\n/*\n * Mixpanel JS Library\n *\n * Copyright 2012, Mixpanel, Inc. All Rights Reserved\n * http://mixpanel.com/\n *\n * Includes portions of Underscore.js\n * http://documentcloud.github.com/underscore/\n * (c) 2011 Jeremy Ashkenas, DocumentCloud Inc.\n * Released under the MIT License.\n */\n\n// ==ClosureCompiler==\n// @compilation_level ADVANCED_OPTIMIZATIONS\n// @output_file_name mixpanel-2.8.min.js\n// ==/ClosureCompiler==\n\n/*\nSIMPLE STYLE GUIDE:\n\nthis.x === public function\nthis._x === internal - only use within this file\nthis.__x === private - only use within the class\n\nGlobals should be all caps\n*/\n\nvar init_type; // MODULE or SNIPPET loader\n// allow bundlers to specify how extra code (recorder bundle) should be loaded\n// eslint-disable-next-line no-unused-vars\nvar load_extra_bundle = function(src, _onload) {\n throw new Error(src + ' not available in this build.');\n};\n\nvar mixpanel_master; // main mixpanel instance / object\nvar INIT_MODULE = 0;\nvar INIT_SNIPPET = 1;\n\nvar IDENTITY_FUNC = function(x) {return x;};\nvar NOOP_FUNC = function() {};\n\n/** @const */ var PRIMARY_INSTANCE_NAME = 'mixpanel';\n/** @const */ var PAYLOAD_TYPE_BASE64 = 'base64';\n/** @const */ var PAYLOAD_TYPE_JSON = 'json';\n/** @const */ var DEVICE_ID_PREFIX = '$device:';\n\n\n/*\n * Dynamic... constants? Is that an oxymoron?\n */\n// http://hacks.mozilla.org/2009/07/cross-site-xmlhttprequest-with-cors/\n// https://developer.mozilla.org/en-US/docs/DOM/XMLHttpRequest#withCredentials\nvar USE_XHR = (win.XMLHttpRequest && 'withCredentials' in new XMLHttpRequest());\n\n// IE<10 does not support cross-origin XHR's but script tags\n// with defer won't block window.onload; ENQUEUE_REQUESTS\n// should only be true for Opera<12\nvar ENQUEUE_REQUESTS = !USE_XHR && (userAgent.indexOf('MSIE') === -1) && (userAgent.indexOf('Mozilla') === -1);\n\n// save reference to navigator.sendBeacon so it can be minified\nvar sendBeacon = null;\nif (navigator['sendBeacon']) {\n sendBeacon = function() {\n // late reference to navigator.sendBeacon to allow patching/spying\n return navigator['sendBeacon'].apply(navigator, arguments);\n };\n}\n\nvar DEFAULT_API_ROUTES = {\n 'track': 'track/',\n 'engage': 'engage/',\n 'groups': 'groups/',\n 'record': 'record/'\n};\n\n/*\n * Module-level globals\n */\nvar DEFAULT_CONFIG = {\n 'api_host': 'https://api-js.mixpanel.com',\n 'api_routes': DEFAULT_API_ROUTES,\n 'api_method': 'POST',\n 'api_transport': 'XHR',\n 'api_payload_format': PAYLOAD_TYPE_BASE64,\n 'app_host': 'https://mixpanel.com',\n 'autocapture': false,\n 'cdn': 'https://cdn.mxpnl.com',\n 'cross_site_cookie': false,\n 'cross_subdomain_cookie': true,\n 'error_reporter': NOOP_FUNC,\n 'persistence': 'cookie',\n 'persistence_name': '',\n 'cookie_domain': '',\n 'cookie_name': '',\n 'loaded': NOOP_FUNC,\n 'mp_loader': null,\n 'track_marketing': true,\n 'track_pageview': false,\n 'skip_first_touch_marketing': false,\n 'store_google': true,\n 'stop_utm_persistence': false,\n 'save_referrer': true,\n 'test': false,\n 'verbose': false,\n 'img': false,\n 'debug': false,\n 'track_links_timeout': 300,\n 'cookie_expiration': 365,\n 'upgrade': false,\n 'disable_persistence': false,\n 'disable_cookie': false,\n 'secure_cookie': false,\n 'ip': true,\n 'opt_out_tracking_by_default': false,\n 'opt_out_persistence_by_default': false,\n 'opt_out_tracking_persistence_type': 'localStorage',\n 'opt_out_tracking_cookie_prefix': null,\n 'property_blacklist': [],\n 'xhr_headers': {}, // { header: value, header2: value }\n 'ignore_dnt': false,\n 'batch_requests': true,\n 'batch_size': 50,\n 'batch_flush_interval_ms': 5000,\n 'batch_request_timeout_ms': 90000,\n 'batch_autostart': true,\n 'hooks': {},\n 'record_block_class': new RegExp('^(mp-block|fs-exclude|amp-block|rr-block|ph-no-capture)$'),\n 'record_block_selector': 'img, video',\n 'record_canvas': false,\n 'record_collect_fonts': false,\n 'record_idle_timeout_ms': 30 * 60 * 1000, // 30 minutes\n 'record_mask_text_class': new RegExp('^(mp-mask|fs-mask|amp-mask|rr-mask|ph-mask)$'),\n 'record_mask_text_selector': '*',\n 'record_max_ms': MAX_RECORDING_MS,\n 'record_min_ms': 0,\n 'record_sessions_percent': 0,\n 'recorder_src': 'https://cdn.mxpnl.com/libs/mixpanel-recorder.min.js'\n};\n\nvar DOM_LOADED = false;\n\n/**\n * Mixpanel Library Object\n * @constructor\n */\nvar MixpanelLib = function() {};\n\n\n/**\n * create_mplib(token:string, config:object, name:string)\n *\n * This function is used by the init method of MixpanelLib objects\n * as well as the main initializer at the end of the JSLib (that\n * initializes document.mixpanel as well as any additional instances\n * declared before this file has loaded).\n */\nvar create_mplib = function(token, config, name) {\n var instance,\n target = (name === PRIMARY_INSTANCE_NAME) ? mixpanel_master : mixpanel_master[name];\n\n if (target && init_type === INIT_MODULE) {\n instance = target;\n } else {\n if (target && !_.isArray(target)) {\n console$1.error('You have already initialized ' + name);\n return;\n }\n instance = new MixpanelLib();\n }\n\n instance._cached_groups = {}; // cache groups in a pool\n\n instance._init(token, config, name);\n\n instance['people'] = new MixpanelPeople();\n instance['people']._init(instance);\n\n if (!instance.get_config('skip_first_touch_marketing')) {\n // We need null UTM params in the object because\n // UTM parameters act as a tuple. If any UTM param\n // is present, then we set all UTM params including\n // empty ones together\n var utm_params = _.info.campaignParams(null);\n var initial_utm_params = {};\n var has_utm = false;\n _.each(utm_params, function(utm_value, utm_key) {\n initial_utm_params['initial_' + utm_key] = utm_value;\n if (utm_value) {\n has_utm = true;\n }\n });\n if (has_utm) {\n instance['people'].set_once(initial_utm_params);\n }\n }\n\n // if any instance on the page has debug = true, we set the\n // global debug to be true\n Config.DEBUG = Config.DEBUG || instance.get_config('debug');\n\n // if target is not defined, we called init after the lib already\n // loaded, so there won't be an array of things to execute\n if (!_.isUndefined(target) && _.isArray(target)) {\n // Crunch through the people queue first - we queue this data up &\n // flush on identify, so it's better to do all these operations first\n instance._execute_array.call(instance['people'], target['people']);\n instance._execute_array(target);\n }\n\n return instance;\n};\n\n// Initialization methods\n\n/**\n * This function initializes a new instance of the Mixpanel tracking object.\n * All new instances are added to the main mixpanel object as sub properties (such as\n * mixpanel.library_name) and also returned by this function. To define a\n * second instance on the page, you would call:\n *\n * mixpanel.init('new token', { your: 'config' }, 'library_name');\n *\n * and use it like so:\n *\n * mixpanel.library_name.track(...);\n *\n * @param {String} token Your Mixpanel API token\n * @param {Object} [config] A dictionary of config options to override. See a list of default config options.\n * @param {String} [name] The name for the new mixpanel instance that you want created\n */\nMixpanelLib.prototype.init = function (token, config, name) {\n if (_.isUndefined(name)) {\n this.report_error('You must name your new library: init(token, config, name)');\n return;\n }\n if (name === PRIMARY_INSTANCE_NAME) {\n this.report_error('You must initialize the main mixpanel object right after you include the Mixpanel js snippet');\n return;\n }\n\n var instance = create_mplib(token, config, name);\n mixpanel_master[name] = instance;\n instance._loaded();\n\n return instance;\n};\n\n// mixpanel._init(token:string, config:object, name:string)\n//\n// This function sets up the current instance of the mixpanel\n// library. The difference between this method and the init(...)\n// method is this one initializes the actual instance, whereas the\n// init(...) method sets up a new library and calls _init on it.\n//\nMixpanelLib.prototype._init = function(token, config, name) {\n config = config || {};\n\n this['__loaded'] = true;\n this['config'] = {};\n\n var variable_features = {};\n\n // default to JSON payload for standard mixpanel.com API hosts\n if (!('api_payload_format' in config)) {\n var api_host = config['api_host'] || DEFAULT_CONFIG['api_host'];\n if (api_host.match(/\\.mixpanel\\.com/)) {\n variable_features['api_payload_format'] = PAYLOAD_TYPE_JSON;\n }\n }\n\n this.set_config(_.extend({}, DEFAULT_CONFIG, variable_features, config, {\n 'name': name,\n 'token': token,\n 'callback_fn': ((name === PRIMARY_INSTANCE_NAME) ? name : PRIMARY_INSTANCE_NAME + '.' + name) + '._jsc'\n }));\n\n this['_jsc'] = NOOP_FUNC;\n\n this.__dom_loaded_queue = [];\n this.__request_queue = [];\n this.__disabled_events = [];\n this._flags = {\n 'disable_all_events': false,\n 'identify_called': false\n };\n\n // set up request queueing/batching\n this.request_batchers = {};\n this._batch_requests = this.get_config('batch_requests');\n if (this._batch_requests) {\n if (!_.localStorage.is_supported(true) || !USE_XHR) {\n this._batch_requests = false;\n console$1.log('Turning off Mixpanel request-queueing; needs XHR and localStorage support');\n _.each(this.get_batcher_configs(), function(batcher_config) {\n console$1.log('Clearing batch queue ' + batcher_config.queue_key);\n _.localStorage.remove(batcher_config.queue_key);\n });\n } else {\n this.init_batchers();\n if (sendBeacon && win.addEventListener) {\n // Before page closes or hides (user tabs away etc), attempt to flush any events\n // queued up via navigator.sendBeacon. Since sendBeacon doesn't report success/failure,\n // events will not be removed from the persistent store; if the site is loaded again,\n // the events will be flushed again on startup and deduplicated on the Mixpanel server\n // side.\n // There is no reliable way to capture only page close events, so we lean on the\n // visibilitychange and pagehide events as recommended at\n // https://developer.mozilla.org/en-US/docs/Web/API/Window/unload_event#usage_notes.\n // These events fire when the user clicks away from the current page/tab, so will occur\n // more frequently than page unload, but are the only mechanism currently for capturing\n // this scenario somewhat reliably.\n var flush_on_unload = _.bind(function() {\n if (!this.request_batchers.events.stopped) {\n this.request_batchers.events.flush({unloading: true});\n }\n }, this);\n win.addEventListener('pagehide', function(ev) {\n if (ev['persisted']) {\n flush_on_unload();\n }\n });\n win.addEventListener('visibilitychange', function() {\n if (document$1['visibilityState'] === 'hidden') {\n flush_on_unload();\n }\n });\n }\n }\n }\n\n this['persistence'] = this['cookie'] = new MixpanelPersistence(this['config']);\n this.unpersisted_superprops = {};\n this._gdpr_init();\n\n var uuid = _.UUID();\n if (!this.get_distinct_id()) {\n // There is no need to set the distinct id\n // or the device id if something was already stored\n // in the persitence\n this.register_once({\n 'distinct_id': DEVICE_ID_PREFIX + uuid,\n '$device_id': uuid\n }, '');\n }\n\n this.autocapture = new Autocapture(this);\n this.autocapture.init();\n\n if (this.get_config('record_sessions_percent') > 0 && Math.random() * 100 <= this.get_config('record_sessions_percent')) {\n this.start_session_recording();\n }\n};\n\nMixpanelLib.prototype.start_session_recording = addOptOutCheckMixpanelLib(function () {\n if (!win['MutationObserver']) {\n console$1.critical('Browser does not support MutationObserver; skipping session recording');\n return;\n }\n\n var handleLoadedRecorder = _.bind(function() {\n this._recorder = this._recorder || new win['__mp_recorder'](this);\n this._recorder['startRecording']();\n }, this);\n\n if (_.isUndefined(win['__mp_recorder'])) {\n load_extra_bundle(this.get_config('recorder_src'), handleLoadedRecorder);\n } else {\n handleLoadedRecorder();\n }\n});\n\nMixpanelLib.prototype.stop_session_recording = function () {\n if (this._recorder) {\n this._recorder['stopRecording']();\n } else {\n console$1.critical('Session recorder module not loaded');\n }\n};\n\nMixpanelLib.prototype.get_session_recording_properties = function () {\n var props = {};\n var replay_id = this._get_session_replay_id();\n if (replay_id) {\n props['$mp_replay_id'] = replay_id;\n }\n return props;\n};\n\nMixpanelLib.prototype.get_session_replay_url = function () {\n var replay_url = null;\n var replay_id = this._get_session_replay_id();\n if (replay_id) {\n var query_params = _.HTTPBuildQuery({\n 'replay_id': replay_id,\n 'distinct_id': this.get_distinct_id(),\n 'token': this.get_config('token')\n });\n replay_url = 'https://mixpanel.com/projects/replay-redirect?' + query_params;\n }\n return replay_url;\n};\n\nMixpanelLib.prototype._get_session_replay_id = function () {\n var replay_id = null;\n if (this._recorder) {\n replay_id = this._recorder['replayId'];\n }\n return replay_id || null;\n};\n\n// Private methods\n\nMixpanelLib.prototype._loaded = function() {\n this.get_config('loaded')(this);\n this._set_default_superprops();\n this['people'].set_once(this['persistence'].get_referrer_info());\n\n // `store_google` is now deprecated and previously stored UTM parameters are cleared\n // from persistence by default.\n if (this.get_config('store_google') && this.get_config('stop_utm_persistence')) {\n var utm_params = _.info.campaignParams(null);\n _.each(utm_params, function(_utm_value, utm_key) {\n // We need to unregister persisted UTM parameters so old values\n // are not mixed with the new UTM parameters\n this.unregister(utm_key);\n }.bind(this));\n }\n};\n\n// update persistence with info on referrer, UTM params, etc\nMixpanelLib.prototype._set_default_superprops = function() {\n this['persistence'].update_search_keyword(document$1.referrer);\n // Registering super properties for UTM persistence by 'store_google' is deprecated.\n if (this.get_config('store_google') && !this.get_config('stop_utm_persistence')) {\n this.register(_.info.campaignParams());\n }\n if (this.get_config('save_referrer')) {\n this['persistence'].update_referrer_info(document$1.referrer);\n }\n};\n\nMixpanelLib.prototype._dom_loaded = function() {\n _.each(this.__dom_loaded_queue, function(item) {\n this._track_dom.apply(this, item);\n }, this);\n\n if (!this.has_opted_out_tracking()) {\n _.each(this.__request_queue, function(item) {\n this._send_request.apply(this, item);\n }, this);\n }\n\n delete this.__dom_loaded_queue;\n delete this.__request_queue;\n};\n\nMixpanelLib.prototype._track_dom = function(DomClass, args) {\n if (this.get_config('img')) {\n this.report_error('You can\\'t use DOM tracking functions with img = true.');\n return false;\n }\n\n if (!DOM_LOADED) {\n this.__dom_loaded_queue.push([DomClass, args]);\n return false;\n }\n\n var dt = new DomClass().init(this);\n return dt.track.apply(dt, args);\n};\n\n/**\n * _prepare_callback() should be called by callers of _send_request for use\n * as the callback argument.\n *\n * If there is no callback, this returns null.\n * If we are going to make XHR/XDR requests, this returns a function.\n * If we are going to use script tags, this returns a string to use as the\n * callback GET param.\n */\nMixpanelLib.prototype._prepare_callback = function(callback, data) {\n if (_.isUndefined(callback)) {\n return null;\n }\n\n if (USE_XHR) {\n var callback_function = function(response) {\n callback(response, data);\n };\n return callback_function;\n } else {\n // if the user gives us a callback, we store as a random\n // property on this instances jsc function and update our\n // callback string to reflect that.\n var jsc = this['_jsc'];\n var randomized_cb = '' + Math.floor(Math.random() * 100000000);\n var callback_string = this.get_config('callback_fn') + '[' + randomized_cb + ']';\n jsc[randomized_cb] = function(response) {\n delete jsc[randomized_cb];\n callback(response, data);\n };\n return callback_string;\n }\n};\n\nMixpanelLib.prototype._send_request = function(url, data, options, callback) {\n var succeeded = true;\n\n if (ENQUEUE_REQUESTS) {\n this.__request_queue.push(arguments);\n return succeeded;\n }\n\n var DEFAULT_OPTIONS = {\n method: this.get_config('api_method'),\n transport: this.get_config('api_transport'),\n verbose: this.get_config('verbose')\n };\n var body_data = null;\n\n if (!callback && (_.isFunction(options) || typeof options === 'string')) {\n callback = options;\n options = null;\n }\n options = _.extend(DEFAULT_OPTIONS, options || {});\n if (!USE_XHR) {\n options.method = 'GET';\n }\n var use_post = options.method === 'POST';\n var use_sendBeacon = sendBeacon && use_post && options.transport.toLowerCase() === 'sendbeacon';\n\n // needed to correctly format responses\n var verbose_mode = options.verbose;\n if (data['verbose']) { verbose_mode = true; }\n\n if (this.get_config('test')) { data['test'] = 1; }\n if (verbose_mode) { data['verbose'] = 1; }\n if (this.get_config('img')) { data['img'] = 1; }\n if (!USE_XHR) {\n if (callback) {\n data['callback'] = callback;\n } else if (verbose_mode || this.get_config('test')) {\n // Verbose output (from verbose mode, or an error in test mode) is a json blob,\n // which by itself is not valid javascript. Without a callback, this verbose output will\n // cause an error when returned via jsonp, so we force a no-op callback param.\n // See the ECMA script spec: http://www.ecma-international.org/ecma-262/5.1/#sec-12.4\n data['callback'] = '(function(){})';\n }\n }\n\n data['ip'] = this.get_config('ip')?1:0;\n data['_'] = new Date().getTime().toString();\n\n if (use_post) {\n body_data = 'data=' + encodeURIComponent(data['data']);\n delete data['data'];\n }\n\n url += '?' + _.HTTPBuildQuery(data);\n\n var lib = this;\n if ('img' in data) {\n var img = document$1.createElement('img');\n img.src = url;\n document$1.body.appendChild(img);\n } else if (use_sendBeacon) {\n try {\n succeeded = sendBeacon(url, body_data);\n } catch (e) {\n lib.report_error(e);\n succeeded = false;\n }\n try {\n if (callback) {\n callback(succeeded ? 1 : 0);\n }\n } catch (e) {\n lib.report_error(e);\n }\n } else if (USE_XHR) {\n try {\n var req = new XMLHttpRequest();\n req.open(options.method, url, true);\n\n var headers = this.get_config('xhr_headers');\n if (use_post) {\n headers['Content-Type'] = 'application/x-www-form-urlencoded';\n }\n _.each(headers, function(headerValue, headerName) {\n req.setRequestHeader(headerName, headerValue);\n });\n\n if (options.timeout_ms && typeof req.timeout !== 'undefined') {\n req.timeout = options.timeout_ms;\n var start_time = new Date().getTime();\n }\n\n // send the mp_optout cookie\n // withCredentials cannot be modified until after calling .open on Android and Mobile Safari\n req.withCredentials = true;\n req.onreadystatechange = function () {\n if (req.readyState === 4) { // XMLHttpRequest.DONE == 4, except in safari 4\n if (req.status === 200) {\n if (callback) {\n if (verbose_mode) {\n var response;\n try {\n response = _.JSONDecode(req.responseText);\n } catch (e) {\n lib.report_error(e);\n if (options.ignore_json_errors) {\n response = req.responseText;\n } else {\n return;\n }\n }\n callback(response);\n } else {\n callback(Number(req.responseText));\n }\n }\n } else {\n var error;\n if (\n req.timeout &&\n !req.status &&\n new Date().getTime() - start_time >= req.timeout\n ) {\n error = 'timeout';\n } else {\n error = 'Bad HTTP status: ' + req.status + ' ' + req.statusText;\n }\n lib.report_error(error);\n if (callback) {\n if (verbose_mode) {\n var response_headers = req['responseHeaders'] || {};\n callback({status: 0, httpStatusCode: req['status'], error: error, retryAfter: response_headers['Retry-After']});\n } else {\n callback(0);\n }\n }\n }\n }\n };\n req.send(body_data);\n } catch (e) {\n lib.report_error(e);\n succeeded = false;\n }\n } else {\n var script = document$1.createElement('script');\n script.type = 'text/javascript';\n script.async = true;\n script.defer = true;\n script.src = url;\n var s = document$1.getElementsByTagName('script')[0];\n s.parentNode.insertBefore(script, s);\n }\n\n return succeeded;\n};\n\n/**\n * _execute_array() deals with processing any mixpanel function\n * calls that were called before the Mixpanel library were loaded\n * (and are thus stored in an array so they can be called later)\n *\n * Note: we fire off all the mixpanel function calls && user defined\n * functions BEFORE we fire off mixpanel tracking calls. This is so\n * identify/register/set_config calls can properly modify early\n * tracking calls.\n *\n * @param {Array} array\n */\nMixpanelLib.prototype._execute_array = function(array) {\n var fn_name, alias_calls = [], other_calls = [], tracking_calls = [];\n _.each(array, function(item) {\n if (item) {\n fn_name = item[0];\n if (_.isArray(fn_name)) {\n tracking_calls.push(item); // chained call e.g. mixpanel.get_group().set()\n } else if (typeof(item) === 'function') {\n item.call(this);\n } else if (_.isArray(item) && fn_name === 'alias') {\n alias_calls.push(item);\n } else if (_.isArray(item) && fn_name.indexOf('track') !== -1 && typeof(this[fn_name]) === 'function') {\n tracking_calls.push(item);\n } else {\n other_calls.push(item);\n }\n }\n }, this);\n\n var execute = function(calls, context) {\n _.each(calls, function(item) {\n if (_.isArray(item[0])) {\n // chained call\n var caller = context;\n _.each(item, function(call) {\n caller = caller[call[0]].apply(caller, call.slice(1));\n });\n } else {\n this[item[0]].apply(this, item.slice(1));\n }\n }, context);\n };\n\n execute(alias_calls, this);\n execute(other_calls, this);\n execute(tracking_calls, this);\n};\n\n// request queueing utils\n\nMixpanelLib.prototype.are_batchers_initialized = function() {\n return !!this.request_batchers.events;\n};\n\nMixpanelLib.prototype.get_batcher_configs = function() {\n var queue_prefix = '__mpq_' + this.get_config('token');\n var api_routes = this.get_config('api_routes');\n this._batcher_configs = this._batcher_configs || {\n events: {type: 'events', endpoint: '/' + api_routes['track'], queue_key: queue_prefix + '_ev'},\n people: {type: 'people', endpoint: '/' + api_routes['engage'], queue_key: queue_prefix + '_pp'},\n groups: {type: 'groups', endpoint: '/' + api_routes['groups'], queue_key: queue_prefix + '_gr'}\n };\n return this._batcher_configs;\n};\n\nMixpanelLib.prototype.init_batchers = function() {\n if (!this.are_batchers_initialized()) {\n var batcher_for = _.bind(function(attrs) {\n return new RequestBatcher(\n attrs.queue_key,\n {\n libConfig: this['config'],\n errorReporter: this.get_config('error_reporter'),\n sendRequestFunc: _.bind(function(data, options, cb) {\n this._send_request(\n this.get_config('api_host') + attrs.endpoint,\n this._encode_data_for_request(data),\n options,\n this._prepare_callback(cb, data)\n );\n }, this),\n beforeSendHook: _.bind(function(item) {\n return this._run_hook('before_send_' + attrs.type, item);\n }, this),\n stopAllBatchingFunc: _.bind(this.stop_batch_senders, this),\n usePersistence: true\n }\n );\n }, this);\n var batcher_configs = this.get_batcher_configs();\n this.request_batchers = {\n events: batcher_for(batcher_configs.events),\n people: batcher_for(batcher_configs.people),\n groups: batcher_for(batcher_configs.groups)\n };\n }\n if (this.get_config('batch_autostart')) {\n this.start_batch_senders();\n }\n};\n\nMixpanelLib.prototype.start_batch_senders = function() {\n this._batchers_were_started = true;\n if (this.are_batchers_initialized()) {\n this._batch_requests = true;\n _.each(this.request_batchers, function(batcher) {\n batcher.start();\n });\n }\n};\n\nMixpanelLib.prototype.stop_batch_senders = function() {\n this._batch_requests = false;\n _.each(this.request_batchers, function(batcher) {\n batcher.stop();\n batcher.clear();\n });\n};\n\n/**\n * push() keeps the standard async-array-push\n * behavior around after the lib is loaded.\n * This is only useful for external integrations that\n * do not wish to rely on our convenience methods\n * (created in the snippet).\n *\n * ### Usage:\n * mixpanel.push(['register', { a: 'b' }]);\n *\n * @param {Array} item A [function_name, args...] array to be executed\n */\nMixpanelLib.prototype.push = function(item) {\n this._execute_array([item]);\n};\n\n/**\n * Disable events on the Mixpanel object. If passed no arguments,\n * this function disables tracking of any event. If passed an\n * array of event names, those events will be disabled, but other\n * events will continue to be tracked.\n *\n * Note: this function does not stop other mixpanel functions from\n * firing, such as register() or people.set().\n *\n * @param {Array} [events] An array of event names to disable\n */\nMixpanelLib.prototype.disable = function(events) {\n if (typeof(events) === 'undefined') {\n this._flags.disable_all_events = true;\n } else {\n this.__disabled_events = this.__disabled_events.concat(events);\n }\n};\n\nMixpanelLib.prototype._encode_data_for_request = function(data) {\n var encoded_data = _.JSONEncode(data);\n if (this.get_config('api_payload_format') === PAYLOAD_TYPE_BASE64) {\n encoded_data = _.base64Encode(encoded_data);\n }\n return {'data': encoded_data};\n};\n\n// internal method for handling track vs batch-enqueue logic\nMixpanelLib.prototype._track_or_batch = function(options, callback) {\n var truncated_data = _.truncate(options.data, 255);\n var endpoint = options.endpoint;\n var batcher = options.batcher;\n var should_send_immediately = options.should_send_immediately;\n var send_request_options = options.send_request_options || {};\n callback = callback || NOOP_FUNC;\n\n var request_enqueued_or_initiated = true;\n var send_request_immediately = _.bind(function() {\n if (!send_request_options.skip_hooks) {\n truncated_data = this._run_hook('before_send_' + options.type, truncated_data);\n }\n if (truncated_data) {\n console$1.log('MIXPANEL REQUEST:');\n console$1.log(truncated_data);\n return this._send_request(\n endpoint,\n this._encode_data_for_request(truncated_data),\n send_request_options,\n this._prepare_callback(callback, truncated_data)\n );\n } else {\n return null;\n }\n }, this);\n\n if (this._batch_requests && !should_send_immediately) {\n batcher.enqueue(truncated_data).then(function(succeeded) {\n if (succeeded) {\n callback(1, truncated_data);\n } else {\n send_request_immediately();\n }\n });\n } else {\n request_enqueued_or_initiated = send_request_immediately();\n }\n\n return request_enqueued_or_initiated && truncated_data;\n};\n\n/**\n * Track an event. This is the most important and\n * frequently used Mixpanel function.\n *\n * ### Usage:\n *\n * // track an event named 'Registered'\n * mixpanel.track('Registered', {'Gender': 'Male', 'Age': 21});\n *\n * // track an event using navigator.sendBeacon\n * mixpanel.track('Left page', {'duration_seconds': 35}, {transport: 'sendBeacon'});\n *\n * To track link clicks or form submissions, see track_links() or track_forms().\n *\n * @param {String} event_name The name of the event. This can be anything the user does - 'Button Click', 'Sign Up', 'Item Purchased', etc.\n * @param {Object} [properties] A set of properties to include with the event you're sending. These describe the user who did the event or details about the event itself.\n * @param {Object} [options] Optional configuration for this track request.\n * @param {String} [options.transport] Transport method for network request ('xhr' or 'sendBeacon').\n * @param {Boolean} [options.send_immediately] Whether to bypass batching/queueing and send track request immediately.\n * @param {Function} [callback] If provided, the callback function will be called after tracking the event.\n * @returns {Boolean|Object} If the tracking request was successfully initiated/queued, an object\n * with the tracking payload sent to the API server is returned; otherwise false.\n */\nMixpanelLib.prototype.track = addOptOutCheckMixpanelLib(function(event_name, properties, options, callback) {\n if (!callback && typeof options === 'function') {\n callback = options;\n options = null;\n }\n options = options || {};\n var transport = options['transport']; // external API, don't minify 'transport' prop\n if (transport) {\n options.transport = transport; // 'transport' prop name can be minified internally\n }\n var should_send_immediately = options['send_immediately'];\n if (typeof callback !== 'function') {\n callback = NOOP_FUNC;\n }\n\n if (_.isUndefined(event_name)) {\n this.report_error('No event name provided to mixpanel.track');\n return;\n }\n\n if (this._event_is_disabled(event_name)) {\n callback(0);\n return;\n }\n\n // set defaults\n properties = _.extend({}, properties);\n properties['token'] = this.get_config('token');\n\n // set $duration if time_event was previously called for this event\n var start_timestamp = this['persistence'].remove_event_timer(event_name);\n if (!_.isUndefined(start_timestamp)) {\n var duration_in_ms = new Date().getTime() - start_timestamp;\n properties['$duration'] = parseFloat((duration_in_ms / 1000).toFixed(3));\n }\n\n this._set_default_superprops();\n\n var marketing_properties = this.get_config('track_marketing')\n ? _.info.marketingParams()\n : {};\n\n // note: extend writes to the first object, so lets make sure we\n // don't write to the persistence properties object and info\n // properties object by passing in a new object\n\n // update properties with pageview info and super-properties\n properties = _.extend(\n {},\n _.info.properties({'mp_loader': this.get_config('mp_loader')}),\n marketing_properties,\n this['persistence'].properties(),\n this.unpersisted_superprops,\n this.get_session_recording_properties(),\n properties\n );\n\n var property_blacklist = this.get_config('property_blacklist');\n if (_.isArray(property_blacklist)) {\n _.each(property_blacklist, function(blacklisted_prop) {\n delete properties[blacklisted_prop];\n });\n } else {\n this.report_error('Invalid value for property_blacklist config: ' + property_blacklist);\n }\n\n var data = {\n 'event': event_name,\n 'properties': properties\n };\n var ret = this._track_or_batch({\n type: 'events',\n data: data,\n endpoint: this.get_config('api_host') + '/' + this.get_config('api_routes')['track'],\n batcher: this.request_batchers.events,\n should_send_immediately: should_send_immediately,\n send_request_options: options\n }, callback);\n\n return ret;\n});\n\n/**\n * Register the current user into one/many groups.\n *\n * ### Usage:\n *\n * mixpanel.set_group('company', ['mixpanel', 'google']) // an array of IDs\n * mixpanel.set_group('company', 'mixpanel')\n * mixpanel.set_group('company', 128746312)\n *\n * @param {String} group_key Group key\n * @param {Array|String|Number} group_ids An array of group IDs, or a singular group ID\n * @param {Function} [callback] If provided, the callback will be called after tracking the event.\n *\n */\nMixpanelLib.prototype.set_group = addOptOutCheckMixpanelLib(function(group_key, group_ids, callback) {\n if (!_.isArray(group_ids)) {\n group_ids = [group_ids];\n }\n var prop = {};\n prop[group_key] = group_ids;\n this.register(prop);\n return this['people'].set(group_key, group_ids, callback);\n});\n\n/**\n * Add a new group for this user.\n *\n * ### Usage:\n *\n * mixpanel.add_group('company', 'mixpanel')\n *\n * @param {String} group_key Group key\n * @param {*} group_id A valid Mixpanel property type\n * @param {Function} [callback] If provided, the callback will be called after tracking the event.\n */\nMixpanelLib.prototype.add_group = addOptOutCheckMixpanelLib(function(group_key, group_id, callback) {\n var old_values = this.get_property(group_key);\n var prop = {};\n if (old_values === undefined) {\n prop[group_key] = [group_id];\n this.register(prop);\n } else {\n if (old_values.indexOf(group_id) === -1) {\n old_values.push(group_id);\n prop[group_key] = old_values;\n this.register(prop);\n }\n }\n return this['people'].union(group_key, group_id, callback);\n});\n\n/**\n * Remove a group from this user.\n *\n * ### Usage:\n *\n * mixpanel.remove_group('company', 'mixpanel')\n *\n * @param {String} group_key Group key\n * @param {*} group_id A valid Mixpanel property type\n * @param {Function} [callback] If provided, the callback will be called after tracking the event.\n */\nMixpanelLib.prototype.remove_group = addOptOutCheckMixpanelLib(function(group_key, group_id, callback) {\n var old_value = this.get_property(group_key);\n // if the value doesn't exist, the persistent store is unchanged\n if (old_value !== undefined) {\n var idx = old_value.indexOf(group_id);\n if (idx > -1) {\n old_value.splice(idx, 1);\n this.register({group_key: old_value});\n }\n if (old_value.length === 0) {\n this.unregister(group_key);\n }\n }\n return this['people'].remove(group_key, group_id, callback);\n});\n\n/**\n * Track an event with specific groups.\n *\n * ### Usage:\n *\n * mixpanel.track_with_groups('purchase', {'product': 'iphone'}, {'University': ['UCB', 'UCLA']})\n *\n * @param {String} event_name The name of the event (see `mixpanel.track()`)\n * @param {Object=} properties A set of properties to include with the event you're sending (see `mixpanel.track()`)\n * @param {Object=} groups An object mapping group name keys to one or more values\n * @param {Function} [callback] If provided, the callback will be called after tracking the event.\n */\nMixpanelLib.prototype.track_with_groups = addOptOutCheckMixpanelLib(function(event_name, properties, groups, callback) {\n var tracking_props = _.extend({}, properties || {});\n _.each(groups, function(v, k) {\n if (v !== null && v !== undefined) {\n tracking_props[k] = v;\n }\n });\n return this.track(event_name, tracking_props, callback);\n});\n\nMixpanelLib.prototype._create_map_key = function (group_key, group_id) {\n return group_key + '_' + JSON.stringify(group_id);\n};\n\nMixpanelLib.prototype._remove_group_from_cache = function (group_key, group_id) {\n delete this._cached_groups[this._create_map_key(group_key, group_id)];\n};\n\n/**\n * Look up reference to a Mixpanel group\n *\n * ### Usage:\n *\n * mixpanel.get_group(group_key, group_id)\n *\n * @param {String} group_key Group key\n * @param {Object} group_id A valid Mixpanel property type\n * @returns {Object} A MixpanelGroup identifier\n */\nMixpanelLib.prototype.get_group = function (group_key, group_id) {\n var map_key = this._create_map_key(group_key, group_id);\n var group = this._cached_groups[map_key];\n if (group === undefined || group._group_key !== group_key || group._group_id !== group_id) {\n group = new MixpanelGroup();\n group._init(this, group_key, group_id);\n this._cached_groups[map_key] = group;\n }\n return group;\n};\n\n/**\n * Track a default Mixpanel page view event, which includes extra default event properties to\n * improve page view data.\n *\n * ### Usage:\n *\n * // track a default $mp_web_page_view event\n * mixpanel.track_pageview();\n *\n * // track a page view event with additional event properties\n * mixpanel.track_pageview({'ab_test_variant': 'card-layout-b'});\n *\n * // example approach to track page views on different page types as event properties\n * mixpanel.track_pageview({'page': 'pricing'});\n * mixpanel.track_pageview({'page': 'homepage'});\n *\n * // UNCOMMON: Tracking a page view event with a custom event_name option. NOT expected to be used for\n * // individual pages on the same site or product. Use cases for custom event_name may be page\n * // views on different products or internal applications that are considered completely separate\n * mixpanel.track_pageview({'page': 'customer-search'}, {'event_name': '[internal] Admin Page View'});\n *\n * ### Notes:\n *\n * The `config.track_pageview` option for mixpanel.init()\n * may be turned on for tracking page loads automatically.\n *\n * // track only page loads\n * mixpanel.init(PROJECT_TOKEN, {track_pageview: true});\n *\n * // track when the URL changes in any manner\n * mixpanel.init(PROJECT_TOKEN, {track_pageview: 'full-url'});\n *\n * // track when the URL changes, ignoring any changes in the hash part\n * mixpanel.init(PROJECT_TOKEN, {track_pageview: 'url-with-path-and-query-string'});\n *\n * // track when the path changes, ignoring any query parameter or hash changes\n * mixpanel.init(PROJECT_TOKEN, {track_pageview: 'url-with-path'});\n *\n * @param {Object} [properties] An optional set of additional properties to send with the page view event\n * @param {Object} [options] Page view tracking options\n * @param {String} [options.event_name] - Alternate name for the tracking event\n * @returns {Boolean|Object} If the tracking request was successfully initiated/queued, an object\n * with the tracking payload sent to the API server is returned; otherwise false.\n */\nMixpanelLib.prototype.track_pageview = addOptOutCheckMixpanelLib(function(properties, options) {\n if (typeof properties !== 'object') {\n properties = {};\n }\n options = options || {};\n var event_name = options['event_name'] || '$mp_web_page_view';\n\n var default_page_properties = _.extend(\n _.info.mpPageViewProperties(),\n _.info.campaignParams(),\n _.info.clickParams()\n );\n\n var event_properties = _.extend(\n {},\n default_page_properties,\n properties\n );\n\n return this.track(event_name, event_properties);\n});\n\n/**\n * Track clicks on a set of document elements. Selector must be a\n * valid query. Elements must exist on the page at the time track_links is called.\n *\n * ### Usage:\n *\n * // track click for link id #nav\n * mixpanel.track_links('#nav', 'Clicked Nav Link');\n *\n * ### Notes:\n *\n * This function will wait up to 300 ms for the Mixpanel\n * servers to respond. If they have not responded by that time\n * it will head to the link without ensuring that your event\n * has been tracked. To configure this timeout please see the\n * set_config() documentation below.\n *\n * If you pass a function in as the properties argument, the\n * function will receive the DOMElement that triggered the\n * event as an argument. You are expected to return an object\n * from the function; any properties defined on this object\n * will be sent to mixpanel as event properties.\n *\n * @type {Function}\n * @param {Object|String} query A valid DOM query, element or jQuery-esque list\n * @param {String} event_name The name of the event to track\n * @param {Object|Function} [properties] A properties object or function that returns a dictionary of properties when passed a DOMElement\n */\nMixpanelLib.prototype.track_links = function() {\n return this._track_dom.call(this, LinkTracker, arguments);\n};\n\n/**\n * Track form submissions. Selector must be a valid query.\n *\n * ### Usage:\n *\n * // track submission for form id 'register'\n * mixpanel.track_forms('#register', 'Created Account');\n *\n * ### Notes:\n *\n * This function will wait up to 300 ms for the mixpanel\n * servers to respond, if they have not responded by that time\n * it will head to the link without ensuring that your event\n * has been tracked. To configure this timeout please see the\n * set_config() documentation below.\n *\n * If you pass a function in as the properties argument, the\n * function will receive the DOMElement that triggered the\n * event as an argument. You are expected to return an object\n * from the function; any properties defined on this object\n * will be sent to mixpanel as event properties.\n *\n * @type {Function}\n * @param {Object|String} query A valid DOM query, element or jQuery-esque list\n * @param {String} event_name The name of the event to track\n * @param {Object|Function} [properties] This can be a set of properties, or a function that returns a set of properties after being passed a DOMElement\n */\nMixpanelLib.prototype.track_forms = function() {\n return this._track_dom.call(this, FormTracker, arguments);\n};\n\n/**\n * Time an event by including the time between this call and a\n * later 'track' call for the same event in the properties sent\n * with the event.\n *\n * ### Usage:\n *\n * // time an event named 'Registered'\n * mixpanel.time_event('Registered');\n * mixpanel.track('Registered', {'Gender': 'Male', 'Age': 21});\n *\n * When called for a particular event name, the next track call for that event\n * name will include the elapsed time between the 'time_event' and 'track'\n * calls. This value is stored as seconds in the '$duration' property.\n *\n * @param {String} event_name The name of the event.\n */\nMixpanelLib.prototype.time_event = function(event_name) {\n if (_.isUndefined(event_name)) {\n this.report_error('No event name provided to mixpanel.time_event');\n return;\n }\n\n if (this._event_is_disabled(event_name)) {\n return;\n }\n\n this['persistence'].set_event_timer(event_name, new Date().getTime());\n};\n\nvar REGISTER_DEFAULTS = {\n 'persistent': true\n};\n/**\n * Helper to parse options param for register methods, maintaining\n * legacy support for plain \"days\" param instead of options object\n * @param {Number|Object} [days_or_options] 'days' option (Number), or Options object for register methods\n * @returns {Object} options object\n */\nvar options_for_register = function(days_or_options) {\n var options;\n if (_.isObject(days_or_options)) {\n options = days_or_options;\n } else if (!_.isUndefined(days_or_options)) {\n options = {'days': days_or_options};\n } else {\n options = {};\n }\n return _.extend({}, REGISTER_DEFAULTS, options);\n};\n\n/**\n * Register a set of super properties, which are included with all\n * events. This will overwrite previous super property values.\n *\n * ### Usage:\n *\n * // register 'Gender' as a super property\n * mixpanel.register({'Gender': 'Female'});\n *\n * // register several super properties when a user signs up\n * mixpanel.register({\n * 'Email': 'jdoe@example.com',\n * 'Account Type': 'Free'\n * });\n *\n * // register only for the current pageload\n * mixpanel.register({'Name': 'Pat'}, {persistent: false});\n *\n * @param {Object} properties An associative array of properties to store about the user\n * @param {Number|Object} [days_or_options] Options object or number of days since the user's last visit to store the super properties (only valid for persisted props)\n * @param {boolean} [days_or_options.days] - number of days since the user's last visit to store the super properties (only valid for persisted props)\n * @param {boolean} [days_or_options.persistent=true] - whether to put in persistent storage (cookie/localStorage)\n */\nMixpanelLib.prototype.register = function(props, days_or_options) {\n var options = options_for_register(days_or_options);\n if (options['persistent']) {\n this['persistence'].register(props, options['days']);\n } else {\n _.extend(this.unpersisted_superprops, props);\n }\n};\n\n/**\n * Register a set of super properties only once. This will not\n * overwrite previous super property values, unlike register().\n *\n * ### Usage:\n *\n * // register a super property for the first time only\n * mixpanel.register_once({\n * 'First Login Date': new Date().toISOString()\n * });\n *\n * // register once, only for the current pageload\n * mixpanel.register_once({\n * 'First interaction time': new Date().toISOString()\n * }, 'None', {persistent: false});\n *\n * ### Notes:\n *\n * If default_value is specified, current super properties\n * with that value will be overwritten.\n *\n * @param {Object} properties An associative array of properties to store about the user\n * @param {*} [default_value] Value to override if already set in super properties (ex: 'False') Default: 'None'\n * @param {Number|Object} [days_or_options] Options object or number of days since the user's last visit to store the super properties (only valid for persisted props)\n * @param {boolean} [days_or_options.days] - number of days since the user's last visit to store the super properties (only valid for persisted props)\n * @param {boolean} [days_or_options.persistent=true] - whether to put in persistent storage (cookie/localStorage)\n */\nMixpanelLib.prototype.register_once = function(props, default_value, days_or_options) {\n var options = options_for_register(days_or_options);\n if (options['persistent']) {\n this['persistence'].register_once(props, default_value, options['days']);\n } else {\n if (typeof(default_value) === 'undefined') {\n default_value = 'None';\n }\n _.each(props, function(val, prop) {\n if (!this.unpersisted_superprops.hasOwnProperty(prop) || this.unpersisted_superprops[prop] === default_value) {\n this.unpersisted_superprops[prop] = val;\n }\n }, this);\n }\n};\n\n/**\n * Delete a super property stored with the current user.\n *\n * @param {String} property The name of the super property to remove\n * @param {Object} [options]\n * @param {boolean} [options.persistent=true] - whether to look in persistent storage (cookie/localStorage)\n */\nMixpanelLib.prototype.unregister = function(property, options) {\n options = options_for_register(options);\n if (options['persistent']) {\n this['persistence'].unregister(property);\n } else {\n delete this.unpersisted_superprops[property];\n }\n};\n\nMixpanelLib.prototype._register_single = function(prop, value) {\n var props = {};\n props[prop] = value;\n this.register(props);\n};\n\n/**\n * Identify a user with a unique ID to track user activity across\n * devices, tie a user to their events, and create a user profile.\n * If you never call this method, unique visitors are tracked using\n * a UUID generated the first time they visit the site.\n *\n * Call identify when you know the identity of the current user,\n * typically after login or signup. We recommend against using\n * identify for anonymous visitors to your site.\n *\n * ### Notes:\n * If your project has\n * ID Merge\n * enabled, the identify method will connect pre- and\n * post-authentication events when appropriate.\n *\n * If your project does not have ID Merge enabled, identify will\n * change the user's local distinct_id to the unique ID you pass.\n * Events tracked prior to authentication will not be connected\n * to the same user identity. If ID Merge is disabled, alias can\n * be used to connect pre- and post-registration events.\n *\n * @param {String} [unique_id] A string that uniquely identifies a user. If not provided, the distinct_id currently in the persistent store (cookie or localStorage) will be used.\n */\nMixpanelLib.prototype.identify = function(\n new_distinct_id, _set_callback, _add_callback, _append_callback, _set_once_callback, _union_callback, _unset_callback, _remove_callback\n) {\n // Optional Parameters\n // _set_callback:function A callback to be run if and when the People set queue is flushed\n // _add_callback:function A callback to be run if and when the People add queue is flushed\n // _append_callback:function A callback to be run if and when the People append queue is flushed\n // _set_once_callback:function A callback to be run if and when the People set_once queue is flushed\n // _union_callback:function A callback to be run if and when the People union queue is flushed\n // _unset_callback:function A callback to be run if and when the People unset queue is flushed\n\n var previous_distinct_id = this.get_distinct_id();\n if (new_distinct_id && previous_distinct_id !== new_distinct_id) {\n // we allow the following condition if previous distinct_id is same as new_distinct_id\n // so that you can force flush people updates for anonymous profiles.\n if (typeof new_distinct_id === 'string' && new_distinct_id.indexOf(DEVICE_ID_PREFIX) === 0) {\n this.report_error('distinct_id cannot have $device: prefix');\n return -1;\n }\n this.register({'$user_id': new_distinct_id});\n }\n\n if (!this.get_property('$device_id')) {\n // The persisted distinct id might not actually be a device id at all\n // it might be a distinct id of the user from before\n var device_id = previous_distinct_id;\n this.register_once({\n '$had_persisted_distinct_id': true,\n '$device_id': device_id\n }, '');\n }\n\n // identify only changes the distinct id if it doesn't match either the existing or the alias;\n // if it's new, blow away the alias as well.\n if (new_distinct_id !== previous_distinct_id && new_distinct_id !== this.get_property(ALIAS_ID_KEY)) {\n this.unregister(ALIAS_ID_KEY);\n this.register({'distinct_id': new_distinct_id});\n }\n this._flags.identify_called = true;\n // Flush any queued up people requests\n this['people']._flush(_set_callback, _add_callback, _append_callback, _set_once_callback, _union_callback, _unset_callback, _remove_callback);\n\n // send an $identify event any time the distinct_id is changing - logic on the server\n // will determine whether or not to do anything with it.\n if (new_distinct_id !== previous_distinct_id) {\n this.track('$identify', {\n 'distinct_id': new_distinct_id,\n '$anon_distinct_id': previous_distinct_id\n }, {skip_hooks: true});\n }\n};\n\n/**\n * Clears super properties and generates a new random distinct_id for this instance.\n * Useful for clearing data when a user logs out.\n */\nMixpanelLib.prototype.reset = function() {\n this['persistence'].clear();\n this._flags.identify_called = false;\n var uuid = _.UUID();\n this.register_once({\n 'distinct_id': DEVICE_ID_PREFIX + uuid,\n '$device_id': uuid\n }, '');\n};\n\n/**\n * Returns the current distinct id of the user. This is either the id automatically\n * generated by the library or the id that has been passed by a call to identify().\n *\n * ### Notes:\n *\n * get_distinct_id() can only be called after the Mixpanel library has finished loading.\n * init() has a loaded function available to handle this automatically. For example:\n *\n * // set distinct_id after the mixpanel library has loaded\n * mixpanel.init('YOUR PROJECT TOKEN', {\n * loaded: function(mixpanel) {\n * distinct_id = mixpanel.get_distinct_id();\n * }\n * });\n */\nMixpanelLib.prototype.get_distinct_id = function() {\n return this.get_property('distinct_id');\n};\n\n/**\n * The alias method creates an alias which Mixpanel will use to\n * remap one id to another. Multiple aliases can point to the\n * same identifier.\n *\n * The following is a valid use of alias:\n *\n * mixpanel.alias('new_id', 'existing_id');\n * // You can add multiple id aliases to the existing ID\n * mixpanel.alias('newer_id', 'existing_id');\n *\n * Aliases can also be chained - the following is a valid example:\n *\n * mixpanel.alias('new_id', 'existing_id');\n * // chain newer_id - new_id - existing_id\n * mixpanel.alias('newer_id', 'new_id');\n *\n * Aliases cannot point to multiple identifiers - the following\n * example will not work:\n *\n * mixpanel.alias('new_id', 'existing_id');\n * // this is invalid as 'new_id' already points to 'existing_id'\n * mixpanel.alias('new_id', 'newer_id');\n *\n * ### Notes:\n *\n * If your project does not have\n * ID Merge\n * enabled, the best practice is to call alias once when a unique\n * ID is first created for a user (e.g., when a user first registers\n * for an account). Do not use alias multiple times for a single\n * user without ID Merge enabled.\n *\n * @param {String} alias A unique identifier that you want to use for this user in the future.\n * @param {String} [original] The current identifier being used for this user.\n */\nMixpanelLib.prototype.alias = function(alias, original) {\n // If the $people_distinct_id key exists in persistence, there has been a previous\n // mixpanel.people.identify() call made for this user. It is VERY BAD to make an alias with\n // this ID, as it will duplicate users.\n if (alias === this.get_property(PEOPLE_DISTINCT_ID_KEY)) {\n this.report_error('Attempting to create alias for existing People user - aborting.');\n return -2;\n }\n\n var _this = this;\n if (_.isUndefined(original)) {\n original = this.get_distinct_id();\n }\n if (alias !== original) {\n this._register_single(ALIAS_ID_KEY, alias);\n return this.track('$create_alias', {\n 'alias': alias,\n 'distinct_id': original\n }, {\n skip_hooks: true\n }, function() {\n // Flush the people queue\n _this.identify(alias);\n });\n } else {\n this.report_error('alias matches current distinct_id - skipping api call.');\n this.identify(alias);\n return -1;\n }\n};\n\n/**\n * Provide a string to recognize the user by. The string passed to\n * this method will appear in the Mixpanel Streams product rather\n * than an automatically generated name. Name tags do not have to\n * be unique.\n *\n * This value will only be included in Streams data.\n *\n * @param {String} name_tag A human readable name for the user\n * @deprecated\n */\nMixpanelLib.prototype.name_tag = function(name_tag) {\n this._register_single('mp_name_tag', name_tag);\n};\n\n/**\n * Update the configuration of a mixpanel library instance.\n *\n * The default config is:\n *\n * {\n * // host for requests (customizable for e.g. a local proxy)\n * api_host: 'https://api-js.mixpanel.com',\n *\n * // endpoints for different types of requests\n * api_routes: {\n * track: 'track/',\n * engage: 'engage/',\n * groups: 'groups/',\n * }\n *\n * // HTTP method for tracking requests\n * api_method: 'POST'\n *\n * // transport for sending requests ('XHR' or 'sendBeacon')\n * // NB: sendBeacon should only be used for scenarios such as\n * // page unload where a \"best-effort\" attempt to send is\n * // acceptable; the sendBeacon API does not support callbacks\n * // or any way to know the result of the request. Mixpanel\n * // tracking via sendBeacon will not support any event-\n * // batching or retry mechanisms.\n * api_transport: 'XHR'\n *\n * // request-batching/queueing/retry\n * batch_requests: true,\n *\n * // maximum number of events/updates to send in a single\n * // network request\n * batch_size: 50,\n *\n * // milliseconds to wait between sending batch requests\n * batch_flush_interval_ms: 5000,\n *\n * // milliseconds to wait for network responses to batch requests\n * // before they are considered timed-out and retried\n * batch_request_timeout_ms: 90000,\n *\n * // override value for cookie domain, only useful for ensuring\n * // correct cross-subdomain cookies on unusual domains like\n * // subdomain.mainsite.avocat.fr; NB this cannot be used to\n * // set cookies on a different domain than the current origin\n * cookie_domain: ''\n *\n * // super properties cookie expiration (in days)\n * cookie_expiration: 365\n *\n * // if true, cookie will be set with SameSite=None; Secure\n * // this is only useful in special situations, like embedded\n * // 3rd-party iframes that set up a Mixpanel instance\n * cross_site_cookie: false\n *\n * // super properties span subdomains\n * cross_subdomain_cookie: true\n *\n * // debug mode\n * debug: false\n *\n * // if this is true, the mixpanel cookie or localStorage entry\n * // will be deleted, and no user persistence will take place\n * disable_persistence: false\n *\n * // if this is true, Mixpanel will automatically determine\n * // City, Region and Country data using the IP address of\n * //the client\n * ip: true\n *\n * // opt users out of tracking by this Mixpanel instance by default\n * opt_out_tracking_by_default: false\n *\n * // opt users out of browser data storage by this Mixpanel instance by default\n * opt_out_persistence_by_default: false\n *\n * // persistence mechanism used by opt-in/opt-out methods - cookie\n * // or localStorage - falls back to cookie if localStorage is unavailable\n * opt_out_tracking_persistence_type: 'localStorage'\n *\n * // customize the name of cookie/localStorage set by opt-in/opt-out methods\n * opt_out_tracking_cookie_prefix: null\n *\n * // type of persistent store for super properties (cookie/\n * // localStorage) if set to 'localStorage', any existing\n * // mixpanel cookie value with the same persistence_name\n * // will be transferred to localStorage and deleted\n * persistence: 'cookie'\n *\n * // name for super properties persistent store\n * persistence_name: ''\n *\n * // names of properties/superproperties which should never\n * // be sent with track() calls\n * property_blacklist: []\n *\n * // if this is true, mixpanel cookies will be marked as\n * // secure, meaning they will only be transmitted over https\n * secure_cookie: false\n *\n * // disables enriching user profiles with first touch marketing data\n * skip_first_touch_marketing: false\n *\n * // the amount of time track_links will\n * // wait for Mixpanel's servers to respond\n * track_links_timeout: 300\n *\n * // adds any UTM parameters and click IDs present on the page to any events fired\n * track_marketing: true\n *\n * // enables automatic page view tracking using default page view events through\n * // the track_pageview() method\n * track_pageview: false\n *\n * // if you set upgrade to be true, the library will check for\n * // a cookie from our old js library and import super\n * // properties from it, then the old cookie is deleted\n * // The upgrade config option only works in the initialization,\n * // so make sure you set it when you create the library.\n * upgrade: false\n *\n * // extra HTTP request headers to set for each API request, in\n * // the format {'Header-Name': value}\n * xhr_headers: {}\n *\n * // whether to ignore or respect the web browser's Do Not Track setting\n * ignore_dnt: false\n * }\n *\n *\n * @param {Object} config A dictionary of new configuration values to update\n */\nMixpanelLib.prototype.set_config = function(config) {\n if (_.isObject(config)) {\n _.extend(this['config'], config);\n\n var new_batch_size = config['batch_size'];\n if (new_batch_size) {\n _.each(this.request_batchers, function(batcher) {\n batcher.resetBatchSize();\n });\n }\n\n if (!this.get_config('persistence_name')) {\n this['config']['persistence_name'] = this['config']['cookie_name'];\n }\n if (!this.get_config('disable_persistence')) {\n this['config']['disable_persistence'] = this['config']['disable_cookie'];\n }\n\n if (this['persistence']) {\n this['persistence'].update_config(this['config']);\n }\n Config.DEBUG = Config.DEBUG || this.get_config('debug');\n\n if ('autocapture' in config && this.autocapture) {\n this.autocapture.init();\n }\n }\n};\n\n/**\n * returns the current config object for the library.\n */\nMixpanelLib.prototype.get_config = function(prop_name) {\n return this['config'][prop_name];\n};\n\n/**\n * Fetch a hook function from config, with safe default, and run it\n * against the given arguments\n * @param {string} hook_name which hook to retrieve\n * @returns {any|null} return value of user-provided hook, or null if nothing was returned\n */\nMixpanelLib.prototype._run_hook = function(hook_name) {\n var ret = (this['config']['hooks'][hook_name] || IDENTITY_FUNC).apply(this, slice.call(arguments, 1));\n if (typeof ret === 'undefined') {\n this.report_error(hook_name + ' hook did not return a value');\n ret = null;\n }\n return ret;\n};\n\n/**\n * Returns the value of the super property named property_name. If no such\n * property is set, get_property() will return the undefined value.\n *\n * ### Notes:\n *\n * get_property() can only be called after the Mixpanel library has finished loading.\n * init() has a loaded function available to handle this automatically. For example:\n *\n * // grab value for 'user_id' after the mixpanel library has loaded\n * mixpanel.init('YOUR PROJECT TOKEN', {\n * loaded: function(mixpanel) {\n * user_id = mixpanel.get_property('user_id');\n * }\n * });\n *\n * @param {String} property_name The name of the super property you want to retrieve\n */\nMixpanelLib.prototype.get_property = function(property_name) {\n return this['persistence'].load_prop([property_name]);\n};\n\nMixpanelLib.prototype.toString = function() {\n var name = this.get_config('name');\n if (name !== PRIMARY_INSTANCE_NAME) {\n name = PRIMARY_INSTANCE_NAME + '.' + name;\n }\n return name;\n};\n\nMixpanelLib.prototype._event_is_disabled = function(event_name) {\n return _.isBlockedUA(userAgent) ||\n this._flags.disable_all_events ||\n _.include(this.__disabled_events, event_name);\n};\n\n// perform some housekeeping around GDPR opt-in/out state\nMixpanelLib.prototype._gdpr_init = function() {\n var is_localStorage_requested = this.get_config('opt_out_tracking_persistence_type') === 'localStorage';\n\n // try to convert opt-in/out cookies to localStorage if possible\n if (is_localStorage_requested && _.localStorage.is_supported()) {\n if (!this.has_opted_in_tracking() && this.has_opted_in_tracking({'persistence_type': 'cookie'})) {\n this.opt_in_tracking({'enable_persistence': false});\n }\n if (!this.has_opted_out_tracking() && this.has_opted_out_tracking({'persistence_type': 'cookie'})) {\n this.opt_out_tracking({'clear_persistence': false});\n }\n this.clear_opt_in_out_tracking({\n 'persistence_type': 'cookie',\n 'enable_persistence': false\n });\n }\n\n // check whether the user has already opted out - if so, clear & disable persistence\n if (this.has_opted_out_tracking()) {\n this._gdpr_update_persistence({'clear_persistence': true});\n\n // check whether we should opt out by default\n // note: we don't clear persistence here by default since opt-out default state is often\n // used as an initial state while GDPR information is being collected\n } else if (!this.has_opted_in_tracking() && (\n this.get_config('opt_out_tracking_by_default') || _.cookie.get('mp_optout')\n )) {\n _.cookie.remove('mp_optout');\n this.opt_out_tracking({\n 'clear_persistence': this.get_config('opt_out_persistence_by_default')\n });\n }\n};\n\n/**\n * Enable or disable persistence based on options\n * only enable/disable if persistence is not already in this state\n * @param {boolean} [options.clear_persistence] If true, will delete all data stored by the sdk in persistence and disable it\n * @param {boolean} [options.enable_persistence] If true, will re-enable sdk persistence\n */\nMixpanelLib.prototype._gdpr_update_persistence = function(options) {\n var disabled;\n if (options && options['clear_persistence']) {\n disabled = true;\n } else if (options && options['enable_persistence']) {\n disabled = false;\n } else {\n return;\n }\n\n if (!this.get_config('disable_persistence') && this['persistence'].disabled !== disabled) {\n this['persistence'].set_disabled(disabled);\n }\n\n if (disabled) {\n this.stop_batch_senders();\n } else {\n // only start batchers after opt-in if they have previously been started\n // in order to avoid unintentionally starting up batching for the first time\n if (this._batchers_were_started) {\n this.start_batch_senders();\n }\n }\n};\n\n// call a base gdpr function after constructing the appropriate token and options args\nMixpanelLib.prototype._gdpr_call_func = function(func, options) {\n options = _.extend({\n 'track': _.bind(this.track, this),\n 'persistence_type': this.get_config('opt_out_tracking_persistence_type'),\n 'cookie_prefix': this.get_config('opt_out_tracking_cookie_prefix'),\n 'cookie_expiration': this.get_config('cookie_expiration'),\n 'cross_site_cookie': this.get_config('cross_site_cookie'),\n 'cross_subdomain_cookie': this.get_config('cross_subdomain_cookie'),\n 'cookie_domain': this.get_config('cookie_domain'),\n 'secure_cookie': this.get_config('secure_cookie'),\n 'ignore_dnt': this.get_config('ignore_dnt')\n }, options);\n\n // check if localStorage can be used for recording opt out status, fall back to cookie if not\n if (!_.localStorage.is_supported()) {\n options['persistence_type'] = 'cookie';\n }\n\n return func(this.get_config('token'), {\n track: options['track'],\n trackEventName: options['track_event_name'],\n trackProperties: options['track_properties'],\n persistenceType: options['persistence_type'],\n persistencePrefix: options['cookie_prefix'],\n cookieDomain: options['cookie_domain'],\n cookieExpiration: options['cookie_expiration'],\n crossSiteCookie: options['cross_site_cookie'],\n crossSubdomainCookie: options['cross_subdomain_cookie'],\n secureCookie: options['secure_cookie'],\n ignoreDnt: options['ignore_dnt']\n });\n};\n\n/**\n * Opt the user in to data tracking and cookies/localstorage for this Mixpanel instance\n *\n * ### Usage:\n *\n * // opt user in\n * mixpanel.opt_in_tracking();\n *\n * // opt user in with specific event name, properties, cookie configuration\n * mixpanel.opt_in_tracking({\n * track_event_name: 'User opted in',\n * track_event_properties: {\n * 'Email': 'jdoe@example.com'\n * },\n * cookie_expiration: 30,\n * secure_cookie: true\n * });\n *\n * @param {Object} [options] A dictionary of config options to override\n * @param {function} [options.track] Function used for tracking a Mixpanel event to record the opt-in action (default is this Mixpanel instance's track method)\n * @param {string} [options.track_event_name=$opt_in] Event name to be used for tracking the opt-in action\n * @param {Object} [options.track_properties] Set of properties to be tracked along with the opt-in action\n * @param {boolean} [options.enable_persistence=true] If true, will re-enable sdk persistence\n * @param {string} [options.persistence_type=localStorage] Persistence mechanism used - cookie or localStorage - falls back to cookie if localStorage is unavailable\n * @param {string} [options.cookie_prefix=__mp_opt_in_out] Custom prefix to be used in the cookie/localstorage name\n * @param {Number} [options.cookie_expiration] Number of days until the opt-in cookie expires (overrides value specified in this Mixpanel instance's config)\n * @param {string} [options.cookie_domain] Custom cookie domain (overrides value specified in this Mixpanel instance's config)\n * @param {boolean} [options.cross_site_cookie] Whether the opt-in cookie is set as cross-site-enabled (overrides value specified in this Mixpanel instance's config)\n * @param {boolean} [options.cross_subdomain_cookie] Whether the opt-in cookie is set as cross-subdomain or not (overrides value specified in this Mixpanel instance's config)\n * @param {boolean} [options.secure_cookie] Whether the opt-in cookie is set as secure or not (overrides value specified in this Mixpanel instance's config)\n */\nMixpanelLib.prototype.opt_in_tracking = function(options) {\n options = _.extend({\n 'enable_persistence': true\n }, options);\n\n this._gdpr_call_func(optIn, options);\n this._gdpr_update_persistence(options);\n};\n\n/**\n * Opt the user out of data tracking and cookies/localstorage for this Mixpanel instance\n *\n * ### Usage:\n *\n * // opt user out\n * mixpanel.opt_out_tracking();\n *\n * // opt user out with different cookie configuration from Mixpanel instance\n * mixpanel.opt_out_tracking({\n * cookie_expiration: 30,\n * secure_cookie: true\n * });\n *\n * @param {Object} [options] A dictionary of config options to override\n * @param {boolean} [options.delete_user=true] If true, will delete the currently identified user's profile and clear all charges after opting the user out\n * @param {boolean} [options.clear_persistence=true] If true, will delete all data stored by the sdk in persistence\n * @param {string} [options.persistence_type=localStorage] Persistence mechanism used - cookie or localStorage - falls back to cookie if localStorage is unavailable\n * @param {string} [options.cookie_prefix=__mp_opt_in_out] Custom prefix to be used in the cookie/localstorage name\n * @param {Number} [options.cookie_expiration] Number of days until the opt-in cookie expires (overrides value specified in this Mixpanel instance's config)\n * @param {string} [options.cookie_domain] Custom cookie domain (overrides value specified in this Mixpanel instance's config)\n * @param {boolean} [options.cross_site_cookie] Whether the opt-in cookie is set as cross-site-enabled (overrides value specified in this Mixpanel instance's config)\n * @param {boolean} [options.cross_subdomain_cookie] Whether the opt-in cookie is set as cross-subdomain or not (overrides value specified in this Mixpanel instance's config)\n * @param {boolean} [options.secure_cookie] Whether the opt-in cookie is set as secure or not (overrides value specified in this Mixpanel instance's config)\n */\nMixpanelLib.prototype.opt_out_tracking = function(options) {\n options = _.extend({\n 'clear_persistence': true,\n 'delete_user': true\n }, options);\n\n // delete user and clear charges since these methods may be disabled by opt-out\n if (options['delete_user'] && this['people'] && this['people']._identify_called()) {\n this['people'].delete_user();\n this['people'].clear_charges();\n }\n\n this._gdpr_call_func(optOut, options);\n this._gdpr_update_persistence(options);\n};\n\n/**\n * Check whether the user has opted in to data tracking and cookies/localstorage for this Mixpanel instance\n *\n * ### Usage:\n *\n * var has_opted_in = mixpanel.has_opted_in_tracking();\n * // use has_opted_in value\n *\n * @param {Object} [options] A dictionary of config options to override\n * @param {string} [options.persistence_type=localStorage] Persistence mechanism used - cookie or localStorage - falls back to cookie if localStorage is unavailable\n * @param {string} [options.cookie_prefix=__mp_opt_in_out] Custom prefix to be used in the cookie/localstorage name\n * @returns {boolean} current opt-in status\n */\nMixpanelLib.prototype.has_opted_in_tracking = function(options) {\n return this._gdpr_call_func(hasOptedIn, options);\n};\n\n/**\n * Check whether the user has opted out of data tracking and cookies/localstorage for this Mixpanel instance\n *\n * ### Usage:\n *\n * var has_opted_out = mixpanel.has_opted_out_tracking();\n * // use has_opted_out value\n *\n * @param {Object} [options] A dictionary of config options to override\n * @param {string} [options.persistence_type=localStorage] Persistence mechanism used - cookie or localStorage - falls back to cookie if localStorage is unavailable\n * @param {string} [options.cookie_prefix=__mp_opt_in_out] Custom prefix to be used in the cookie/localstorage name\n * @returns {boolean} current opt-out status\n */\nMixpanelLib.prototype.has_opted_out_tracking = function(options) {\n return this._gdpr_call_func(hasOptedOut, options);\n};\n\n/**\n * Clear the user's opt in/out status of data tracking and cookies/localstorage for this Mixpanel instance\n *\n * ### Usage:\n *\n * // clear user's opt-in/out status\n * mixpanel.clear_opt_in_out_tracking();\n *\n * // clear user's opt-in/out status with specific cookie configuration - should match\n * // configuration used when opt_in_tracking/opt_out_tracking methods were called.\n * mixpanel.clear_opt_in_out_tracking({\n * cookie_expiration: 30,\n * secure_cookie: true\n * });\n *\n * @param {Object} [options] A dictionary of config options to override\n * @param {boolean} [options.enable_persistence=true] If true, will re-enable sdk persistence\n * @param {string} [options.persistence_type=localStorage] Persistence mechanism used - cookie or localStorage - falls back to cookie if localStorage is unavailable\n * @param {string} [options.cookie_prefix=__mp_opt_in_out] Custom prefix to be used in the cookie/localstorage name\n * @param {Number} [options.cookie_expiration] Number of days until the opt-in cookie expires (overrides value specified in this Mixpanel instance's config)\n * @param {string} [options.cookie_domain] Custom cookie domain (overrides value specified in this Mixpanel instance's config)\n * @param {boolean} [options.cross_site_cookie] Whether the opt-in cookie is set as cross-site-enabled (overrides value specified in this Mixpanel instance's config)\n * @param {boolean} [options.cross_subdomain_cookie] Whether the opt-in cookie is set as cross-subdomain or not (overrides value specified in this Mixpanel instance's config)\n * @param {boolean} [options.secure_cookie] Whether the opt-in cookie is set as secure or not (overrides value specified in this Mixpanel instance's config)\n */\nMixpanelLib.prototype.clear_opt_in_out_tracking = function(options) {\n options = _.extend({\n 'enable_persistence': true\n }, options);\n\n this._gdpr_call_func(clearOptInOut, options);\n this._gdpr_update_persistence(options);\n};\n\nMixpanelLib.prototype.report_error = function(msg, err) {\n console$1.error.apply(console$1.error, arguments);\n try {\n if (!err && !(msg instanceof Error)) {\n msg = new Error(msg);\n }\n this.get_config('error_reporter')(msg, err);\n } catch(err) {\n console$1.error(err);\n }\n};\n\n// EXPORTS (for closure compiler)\n\n// MixpanelLib Exports\nMixpanelLib.prototype['init'] = MixpanelLib.prototype.init;\nMixpanelLib.prototype['reset'] = MixpanelLib.prototype.reset;\nMixpanelLib.prototype['disable'] = MixpanelLib.prototype.disable;\nMixpanelLib.prototype['time_event'] = MixpanelLib.prototype.time_event;\nMixpanelLib.prototype['track'] = MixpanelLib.prototype.track;\nMixpanelLib.prototype['track_links'] = MixpanelLib.prototype.track_links;\nMixpanelLib.prototype['track_forms'] = MixpanelLib.prototype.track_forms;\nMixpanelLib.prototype['track_pageview'] = MixpanelLib.prototype.track_pageview;\nMixpanelLib.prototype['register'] = MixpanelLib.prototype.register;\nMixpanelLib.prototype['register_once'] = MixpanelLib.prototype.register_once;\nMixpanelLib.prototype['unregister'] = MixpanelLib.prototype.unregister;\nMixpanelLib.prototype['identify'] = MixpanelLib.prototype.identify;\nMixpanelLib.prototype['alias'] = MixpanelLib.prototype.alias;\nMixpanelLib.prototype['name_tag'] = MixpanelLib.prototype.name_tag;\nMixpanelLib.prototype['set_config'] = MixpanelLib.prototype.set_config;\nMixpanelLib.prototype['get_config'] = MixpanelLib.prototype.get_config;\nMixpanelLib.prototype['get_property'] = MixpanelLib.prototype.get_property;\nMixpanelLib.prototype['get_distinct_id'] = MixpanelLib.prototype.get_distinct_id;\nMixpanelLib.prototype['toString'] = MixpanelLib.prototype.toString;\nMixpanelLib.prototype['opt_out_tracking'] = MixpanelLib.prototype.opt_out_tracking;\nMixpanelLib.prototype['opt_in_tracking'] = MixpanelLib.prototype.opt_in_tracking;\nMixpanelLib.prototype['has_opted_out_tracking'] = MixpanelLib.prototype.has_opted_out_tracking;\nMixpanelLib.prototype['has_opted_in_tracking'] = MixpanelLib.prototype.has_opted_in_tracking;\nMixpanelLib.prototype['clear_opt_in_out_tracking'] = MixpanelLib.prototype.clear_opt_in_out_tracking;\nMixpanelLib.prototype['get_group'] = MixpanelLib.prototype.get_group;\nMixpanelLib.prototype['set_group'] = MixpanelLib.prototype.set_group;\nMixpanelLib.prototype['add_group'] = MixpanelLib.prototype.add_group;\nMixpanelLib.prototype['remove_group'] = MixpanelLib.prototype.remove_group;\nMixpanelLib.prototype['track_with_groups'] = MixpanelLib.prototype.track_with_groups;\nMixpanelLib.prototype['start_batch_senders'] = MixpanelLib.prototype.start_batch_senders;\nMixpanelLib.prototype['stop_batch_senders'] = MixpanelLib.prototype.stop_batch_senders;\nMixpanelLib.prototype['start_session_recording'] = MixpanelLib.prototype.start_session_recording;\nMixpanelLib.prototype['stop_session_recording'] = MixpanelLib.prototype.stop_session_recording;\nMixpanelLib.prototype['get_session_recording_properties'] = MixpanelLib.prototype.get_session_recording_properties;\nMixpanelLib.prototype['get_session_replay_url'] = MixpanelLib.prototype.get_session_replay_url;\nMixpanelLib.prototype['DEFAULT_API_ROUTES'] = DEFAULT_API_ROUTES;\n\n// MixpanelPersistence Exports\nMixpanelPersistence.prototype['properties'] = MixpanelPersistence.prototype.properties;\nMixpanelPersistence.prototype['update_search_keyword'] = MixpanelPersistence.prototype.update_search_keyword;\nMixpanelPersistence.prototype['update_referrer_info'] = MixpanelPersistence.prototype.update_referrer_info;\nMixpanelPersistence.prototype['get_cross_subdomain'] = MixpanelPersistence.prototype.get_cross_subdomain;\nMixpanelPersistence.prototype['clear'] = MixpanelPersistence.prototype.clear;\n\n\nvar instances = {};\nvar extend_mp = function() {\n // add all the sub mixpanel instances\n _.each(instances, function(instance, name) {\n if (name !== PRIMARY_INSTANCE_NAME) { mixpanel_master[name] = instance; }\n });\n\n // add private functions as _\n mixpanel_master['_'] = _;\n};\n\nvar override_mp_init_func = function() {\n // we override the snippets init function to handle the case where a\n // user initializes the mixpanel library after the script loads & runs\n mixpanel_master['init'] = function(token, config, name) {\n if (name) {\n // initialize a sub library\n if (!mixpanel_master[name]) {\n mixpanel_master[name] = instances[name] = create_mplib(token, config, name);\n mixpanel_master[name]._loaded();\n }\n return mixpanel_master[name];\n } else {\n var instance = mixpanel_master;\n\n if (instances[PRIMARY_INSTANCE_NAME]) {\n // main mixpanel lib already initialized\n instance = instances[PRIMARY_INSTANCE_NAME];\n } else if (token) {\n // intialize the main mixpanel lib\n instance = create_mplib(token, config, PRIMARY_INSTANCE_NAME);\n instance._loaded();\n instances[PRIMARY_INSTANCE_NAME] = instance;\n }\n\n mixpanel_master = instance;\n if (init_type === INIT_SNIPPET) {\n win[PRIMARY_INSTANCE_NAME] = mixpanel_master;\n }\n extend_mp();\n }\n };\n};\n\nvar add_dom_loaded_handler = function() {\n // Cross browser DOM Loaded support\n function dom_loaded_handler() {\n // function flag since we only want to execute this once\n if (dom_loaded_handler.done) { return; }\n dom_loaded_handler.done = true;\n\n DOM_LOADED = true;\n ENQUEUE_REQUESTS = false;\n\n _.each(instances, function(inst) {\n inst._dom_loaded();\n });\n }\n\n function do_scroll_check() {\n try {\n document$1.documentElement.doScroll('left');\n } catch(e) {\n setTimeout(do_scroll_check, 1);\n return;\n }\n\n dom_loaded_handler();\n }\n\n if (document$1.addEventListener) {\n if (document$1.readyState === 'complete') {\n // safari 4 can fire the DOMContentLoaded event before loading all\n // external JS (including this file). you will see some copypasta\n // on the internet that checks for 'complete' and 'loaded', but\n // 'loaded' is an IE thing\n dom_loaded_handler();\n } else {\n document$1.addEventListener('DOMContentLoaded', dom_loaded_handler, false);\n }\n } else if (document$1.attachEvent) {\n // IE\n document$1.attachEvent('onreadystatechange', dom_loaded_handler);\n\n // check to make sure we arn't in a frame\n var toplevel = false;\n try {\n toplevel = win.frameElement === null;\n } catch(e) {\n // noop\n }\n\n if (document$1.documentElement.doScroll && toplevel) {\n do_scroll_check();\n }\n }\n\n // fallback handler, always will work\n _.register_event(win, 'load', dom_loaded_handler, true);\n};\n\nfunction init_as_module(bundle_loader) {\n load_extra_bundle = bundle_loader;\n init_type = INIT_MODULE;\n mixpanel_master = new MixpanelLib();\n\n override_mp_init_func();\n mixpanel_master['init']();\n add_dom_loaded_handler();\n\n return mixpanel_master;\n}\n\n// For loading separate bundles asynchronously via script tag\n\n// For builds that have everything in one bundle, no extra work.\nfunction loadNoop (_src, onload) {\n onload();\n}\n\n/* eslint camelcase: \"off\" */\n\nvar mixpanel = init_as_module(loadNoop);\n\nexport { mixpanel as default };\n","/* cpexcel.js (C) 2013-present SheetJS -- http://sheetjs.com */\n/*jshint -W100 */\nvar cptable = {version:\"1.14.0\"};\ncptable[437] = (function(){ var d = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~ÇüéâäàåçêëèïîìÄÅÉæÆôöòûùÿÖÜ¢£¥₧ƒáíóúñѪº¿⌐¬½¼¡«»░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■ \", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\ncptable[620] = (function(){ var d = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~ÇüéâäàąçêëèïîćÄĄĘęłôöĆûùŚÖÜ¢Ł¥śƒŹŻóÓńŃźż¿⌐¬½¼¡«»░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■ \", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\ncptable[737] = (function(){ var d = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~ΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡΣΤΥΦΧΨΩαβγδεζηθικλμνξοπρσςτυφχψ░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀ωάέήϊίόύϋώΆΈΉΊΌΎΏ±≥≤ΪΫ÷≈°∙·√ⁿ²■ \", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\ncptable[850] = (function(){ var d = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~ÇüéâäàåçêëèïîìÄÅÉæÆôöòûùÿÖÜø£Ø׃áíóúñѪº¿®¬½¼¡«»░▒▓│┤ÁÂÀ©╣║╗╝¢¥┐└┴┬├─┼ãÃ╚╔╩╦╠═╬¤ðÐÊËÈıÍÎÏ┘┌█▄¦Ì▀ÓßÔÒõÕµþÞÚÛÙýݯ´­±‗¾¶§÷¸°¨·¹³²■ \", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\ncptable[852] = (function(){ var d = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~ÇüéâäůćçłëŐőîŹÄĆÉĹĺôöĽľŚśÖÜŤťŁ×čáíóúĄąŽžĘ꬟Ⱥ«»░▒▓│┤ÁÂĚŞ╣║╗╝Żż┐└┴┬├─┼Ăă╚╔╩╦╠═╬¤đĐĎËďŇÍÎě┘┌█▄ŢŮ▀ÓßÔŃńňŠšŔÚŕŰýÝţ´­˝˛ˇ˘§÷¸°¨˙űŘř■ \", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\ncptable[857] = (function(){ var d = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~ÇüéâäàåçêëèïîıÄÅÉæÆôöòûùİÖÜø£ØŞşáíóúñÑĞ𿮬½¼¡«»░▒▓│┤ÁÂÀ©╣║╗╝¢¥┐└┴┬├─┼ãÃ╚╔╩╦╠═╬¤ºªÊËÈ�ÍÎÏ┘┌█▄¦Ì▀ÓßÔÒõÕµ�×ÚÛÙìÿ¯´­±�¾¶§÷¸°¨·¹³²■ \", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\ncptable[861] = (function(){ var d = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~ÇüéâäàåçêëèÐðÞÄÅÉæÆôöþûÝýÖÜø£Ø₧ƒáíóúÁÍÓÚ¿⌐¬½¼¡«»░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■ \", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\ncptable[865] = (function(){ var d = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~ÇüéâäàåçêëèïîìÄÅÉæÆôöòûùÿÖÜø£Ø₧ƒáíóúñѪº¿⌐¬½¼¡«¤░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■ \", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\ncptable[866] = (function(){ var d = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмноп░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀рстуфхцчшщъыьэюяЁёЄєЇїЎў°∙·√№¤■ \", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\ncptable[874] = (function(){ var d = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~€����…�����������‘’“”•–—�������� กขฃคฅฆงจฉชซฌญฎฏฐฑฒณดตถทธนบปผฝพฟภมยรฤลฦวศษสหฬอฮฯะัาำิีึืฺุู����฿เแโใไๅๆ็่้๊๋์ํ๎๏๐๑๒๓๔๕๖๗๘๙๚๛����\", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\ncptable[895] = (function(){ var d = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~ČüéďäĎŤčěĚĹÍľǪÄÁÉžŽôöÓůÚýÖÜŠĽÝŘťáíóúňŇŮÔšřŕŔ¼§«»░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■ \", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\ncptable[932] = (function(){ var d = [], e = {}, D = [], j;\nD[0] = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~���������������������������������。「」、・ヲァィゥェォャュョッーアイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモヤユヨラリルレロワン゙゚��������������������������������\".split(\"\");\nfor(j = 0; j != D[0].length; ++j) if(D[0][j].charCodeAt(0) !== 0xFFFD) { e[D[0][j]] = 0 + j; d[0 + j] = D[0][j];}\nD[129] = \"���������������������������������������������������������������� 、。,.・:;?!゛゜´`¨^ ̄_ヽヾゝゞ〃仝々〆〇ー―‐/\~∥|…‥‘’“”()〔〕[]{}〈〉《》「」『』【】+-±×�÷=≠<>≦≧∞∴♂♀°′″℃¥$¢£%#&*@§☆★○●◎◇◆□■△▲▽▼※〒→←↑↓〓�����������∈∋⊆⊇⊂⊃∪∩��������∧∨¬⇒⇔∀∃�����������∠⊥⌒∂∇≡≒≪≫√∽∝∵∫∬�������ʼn♯♭♪†‡¶����◯���\".split(\"\");\nfor(j = 0; j != D[129].length; ++j) if(D[129][j].charCodeAt(0) !== 0xFFFD) { e[D[129][j]] = 33024 + j; d[33024 + j] = D[129][j];}\nD[130] = \"�������������������������������������������������������������������������������0123456789�������ABCDEFGHIJKLMNOPQRSTUVWXYZ�������abcdefghijklmnopqrstuvwxyz����ぁあぃいぅうぇえぉおかがきぎくぐけげこごさざしじすずせぜそぞただちぢっつづてでとどなにぬねのはばぱひびぴふぶぷへべぺほぼぽまみむめもゃやゅゆょよらりるれろゎわゐゑをん��������������\".split(\"\");\nfor(j = 0; j != D[130].length; ++j) if(D[130][j].charCodeAt(0) !== 0xFFFD) { e[D[130][j]] = 33280 + j; d[33280 + j] = D[130][j];}\nD[131] = \"����������������������������������������������������������������ァアィイゥウェエォオカガキギクグケゲコゴサザシジスズセゼソゾタダチヂッツヅテデトドナニヌネノハバパヒビピフブプヘベペホボポマミ�ムメモャヤュユョヨラリルレロヮワヰヱヲンヴヵヶ��������ΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡΣΤΥΦΧΨΩ��������αβγδεζηθικλμνξοπρστυφχψω�����������������������������������������\".split(\"\");\nfor(j = 0; j != D[131].length; ++j) if(D[131][j].charCodeAt(0) !== 0xFFFD) { e[D[131][j]] = 33536 + j; d[33536 + j] = D[131][j];}\nD[132] = \"����������������������������������������������������������������АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ���������������абвгдеёжзийклмн�опрстуфхцчшщъыьэюя�������������─│┌┐┘└├┬┤┴┼━┃┏┓┛┗┣┳┫┻╋┠┯┨┷┿┝┰┥┸╂�����������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[132].length; ++j) if(D[132][j].charCodeAt(0) !== 0xFFFD) { e[D[132][j]] = 33792 + j; d[33792 + j] = D[132][j];}\nD[135] = \"����������������������������������������������������������������①②③④⑤⑥⑦⑧⑨⑩⑪⑫⑬⑭⑮⑯⑰⑱⑲⑳ⅠⅡⅢⅣⅤⅥⅦⅧⅨⅩ�㍉㌔㌢㍍㌘㌧㌃㌶㍑㍗㌍㌦㌣㌫㍊㌻㎜㎝㎞㎎㎏㏄㎡��������㍻�〝〟№㏍℡㊤㊥㊦㊧㊨㈱㈲㈹㍾㍽㍼≒≡∫∮∑√⊥∠∟⊿∵∩∪���������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[135].length; ++j) if(D[135][j].charCodeAt(0) !== 0xFFFD) { e[D[135][j]] = 34560 + j; d[34560 + j] = D[135][j];}\nD[136] = \"���������������������������������������������������������������������������������������������������������������������������������������������������������������亜唖娃阿哀愛挨姶逢葵茜穐悪握渥旭葦芦鯵梓圧斡扱宛姐虻飴絢綾鮎或粟袷安庵按暗案闇鞍杏以伊位依偉囲夷委威尉惟意慰易椅為畏異移維緯胃萎衣謂違遺医井亥域育郁磯一壱溢逸稲茨芋鰯允印咽員因姻引飲淫胤蔭���\".split(\"\");\nfor(j = 0; j != D[136].length; ++j) if(D[136][j].charCodeAt(0) !== 0xFFFD) { e[D[136][j]] = 34816 + j; d[34816 + j] = D[136][j];}\nD[137] = \"����������������������������������������������������������������院陰隠韻吋右宇烏羽迂雨卯鵜窺丑碓臼渦嘘唄欝蔚鰻姥厩浦瓜閏噂云運雲荏餌叡営嬰影映曳栄永泳洩瑛盈穎頴英衛詠鋭液疫益駅悦謁越閲榎厭円�園堰奄宴延怨掩援沿演炎焔煙燕猿縁艶苑薗遠鉛鴛塩於汚甥凹央奥往応押旺横欧殴王翁襖鴬鴎黄岡沖荻億屋憶臆桶牡乙俺卸恩温穏音下化仮何伽価佳加可嘉夏嫁家寡科暇果架歌河火珂禍禾稼箇花苛茄荷華菓蝦課嘩貨迦過霞蚊俄峨我牙画臥芽蛾賀雅餓駕介会解回塊壊廻快怪悔恢懐戒拐改���\".split(\"\");\nfor(j = 0; j != D[137].length; ++j) if(D[137][j].charCodeAt(0) !== 0xFFFD) { e[D[137][j]] = 35072 + j; d[35072 + j] = D[137][j];}\nD[138] = \"����������������������������������������������������������������魁晦械海灰界皆絵芥蟹開階貝凱劾外咳害崖慨概涯碍蓋街該鎧骸浬馨蛙垣柿蛎鈎劃嚇各廓拡撹格核殻獲確穫覚角赫較郭閣隔革学岳楽額顎掛笠樫�橿梶鰍潟割喝恰括活渇滑葛褐轄且鰹叶椛樺鞄株兜竃蒲釜鎌噛鴨栢茅萱粥刈苅瓦乾侃冠寒刊勘勧巻喚堪姦完官寛干幹患感慣憾換敢柑桓棺款歓汗漢澗潅環甘監看竿管簡緩缶翰肝艦莞観諌貫還鑑間閑関陥韓館舘丸含岸巌玩癌眼岩翫贋雁頑顔願企伎危喜器基奇嬉寄岐希幾忌揮机旗既期棋棄���\".split(\"\");\nfor(j = 0; j != D[138].length; ++j) if(D[138][j].charCodeAt(0) !== 0xFFFD) { e[D[138][j]] = 35328 + j; d[35328 + j] = D[138][j];}\nD[139] = \"����������������������������������������������������������������機帰毅気汽畿祈季稀紀徽規記貴起軌輝飢騎鬼亀偽儀妓宜戯技擬欺犠疑祇義蟻誼議掬菊鞠吉吃喫桔橘詰砧杵黍却客脚虐逆丘久仇休及吸宮弓急救�朽求汲泣灸球究窮笈級糾給旧牛去居巨拒拠挙渠虚許距鋸漁禦魚亨享京供侠僑兇競共凶協匡卿叫喬境峡強彊怯恐恭挟教橋況狂狭矯胸脅興蕎郷鏡響饗驚仰凝尭暁業局曲極玉桐粁僅勤均巾錦斤欣欽琴禁禽筋緊芹菌衿襟謹近金吟銀九倶句区狗玖矩苦躯駆駈駒具愚虞喰空偶寓遇隅串櫛釧屑屈���\".split(\"\");\nfor(j = 0; j != D[139].length; ++j) if(D[139][j].charCodeAt(0) !== 0xFFFD) { e[D[139][j]] = 35584 + j; d[35584 + j] = D[139][j];}\nD[140] = \"����������������������������������������������������������������掘窟沓靴轡窪熊隈粂栗繰桑鍬勲君薫訓群軍郡卦袈祁係傾刑兄啓圭珪型契形径恵慶慧憩掲携敬景桂渓畦稽系経継繋罫茎荊蛍計詣警軽頚鶏芸迎鯨�劇戟撃激隙桁傑欠決潔穴結血訣月件倹倦健兼券剣喧圏堅嫌建憲懸拳捲検権牽犬献研硯絹県肩見謙賢軒遣鍵険顕験鹸元原厳幻弦減源玄現絃舷言諺限乎個古呼固姑孤己庫弧戸故枯湖狐糊袴股胡菰虎誇跨鈷雇顧鼓五互伍午呉吾娯後御悟梧檎瑚碁語誤護醐乞鯉交佼侯候倖光公功効勾厚口向���\".split(\"\");\nfor(j = 0; j != D[140].length; ++j) if(D[140][j].charCodeAt(0) !== 0xFFFD) { e[D[140][j]] = 35840 + j; d[35840 + j] = D[140][j];}\nD[141] = \"����������������������������������������������������������������后喉坑垢好孔孝宏工巧巷幸広庚康弘恒慌抗拘控攻昂晃更杭校梗構江洪浩港溝甲皇硬稿糠紅紘絞綱耕考肯肱腔膏航荒行衡講貢購郊酵鉱砿鋼閤降�項香高鴻剛劫号合壕拷濠豪轟麹克刻告国穀酷鵠黒獄漉腰甑忽惚骨狛込此頃今困坤墾婚恨懇昏昆根梱混痕紺艮魂些佐叉唆嵯左差査沙瑳砂詐鎖裟坐座挫債催再最哉塞妻宰彩才採栽歳済災采犀砕砦祭斎細菜裁載際剤在材罪財冴坂阪堺榊肴咲崎埼碕鷺作削咋搾昨朔柵窄策索錯桜鮭笹匙冊刷���\".split(\"\");\nfor(j = 0; j != D[141].length; ++j) if(D[141][j].charCodeAt(0) !== 0xFFFD) { e[D[141][j]] = 36096 + j; d[36096 + j] = D[141][j];}\nD[142] = \"����������������������������������������������������������������察拶撮擦札殺薩雑皐鯖捌錆鮫皿晒三傘参山惨撒散桟燦珊産算纂蚕讃賛酸餐斬暫残仕仔伺使刺司史嗣四士始姉姿子屍市師志思指支孜斯施旨枝止�死氏獅祉私糸紙紫肢脂至視詞詩試誌諮資賜雌飼歯事似侍児字寺慈持時次滋治爾璽痔磁示而耳自蒔辞汐鹿式識鴫竺軸宍雫七叱執失嫉室悉湿漆疾質実蔀篠偲柴芝屡蕊縞舎写射捨赦斜煮社紗者謝車遮蛇邪借勺尺杓灼爵酌釈錫若寂弱惹主取守手朱殊狩珠種腫趣酒首儒受呪寿授樹綬需囚収周���\".split(\"\");\nfor(j = 0; j != D[142].length; ++j) if(D[142][j].charCodeAt(0) !== 0xFFFD) { e[D[142][j]] = 36352 + j; d[36352 + j] = D[142][j];}\nD[143] = \"����������������������������������������������������������������宗就州修愁拾洲秀秋終繍習臭舟蒐衆襲讐蹴輯週酋酬集醜什住充十従戎柔汁渋獣縦重銃叔夙宿淑祝縮粛塾熟出術述俊峻春瞬竣舜駿准循旬楯殉淳�準潤盾純巡遵醇順処初所暑曙渚庶緒署書薯藷諸助叙女序徐恕鋤除傷償勝匠升召哨商唱嘗奨妾娼宵将小少尚庄床廠彰承抄招掌捷昇昌昭晶松梢樟樵沼消渉湘焼焦照症省硝礁祥称章笑粧紹肖菖蒋蕉衝裳訟証詔詳象賞醤鉦鍾鐘障鞘上丈丞乗冗剰城場壌嬢常情擾条杖浄状畳穣蒸譲醸錠嘱埴飾���\".split(\"\");\nfor(j = 0; j != D[143].length; ++j) if(D[143][j].charCodeAt(0) !== 0xFFFD) { e[D[143][j]] = 36608 + j; d[36608 + j] = D[143][j];}\nD[144] = \"����������������������������������������������������������������拭植殖燭織職色触食蝕辱尻伸信侵唇娠寝審心慎振新晋森榛浸深申疹真神秦紳臣芯薪親診身辛進針震人仁刃塵壬尋甚尽腎訊迅陣靭笥諏須酢図厨�逗吹垂帥推水炊睡粋翠衰遂酔錐錘随瑞髄崇嵩数枢趨雛据杉椙菅頗雀裾澄摺寸世瀬畝是凄制勢姓征性成政整星晴棲栖正清牲生盛精聖声製西誠誓請逝醒青静斉税脆隻席惜戚斥昔析石積籍績脊責赤跡蹟碩切拙接摂折設窃節説雪絶舌蝉仙先千占宣専尖川戦扇撰栓栴泉浅洗染潜煎煽旋穿箭線���\".split(\"\");\nfor(j = 0; j != D[144].length; ++j) if(D[144][j].charCodeAt(0) !== 0xFFFD) { e[D[144][j]] = 36864 + j; d[36864 + j] = D[144][j];}\nD[145] = \"����������������������������������������������������������������繊羨腺舛船薦詮賎践選遷銭銑閃鮮前善漸然全禅繕膳糎噌塑岨措曾曽楚狙疏疎礎祖租粗素組蘇訴阻遡鼠僧創双叢倉喪壮奏爽宋層匝惣想捜掃挿掻�操早曹巣槍槽漕燥争痩相窓糟総綜聡草荘葬蒼藻装走送遭鎗霜騒像増憎臓蔵贈造促側則即息捉束測足速俗属賊族続卒袖其揃存孫尊損村遜他多太汰詑唾堕妥惰打柁舵楕陀駄騨体堆対耐岱帯待怠態戴替泰滞胎腿苔袋貸退逮隊黛鯛代台大第醍題鷹滝瀧卓啄宅托択拓沢濯琢託鐸濁諾茸凧蛸只���\".split(\"\");\nfor(j = 0; j != D[145].length; ++j) if(D[145][j].charCodeAt(0) !== 0xFFFD) { e[D[145][j]] = 37120 + j; d[37120 + j] = D[145][j];}\nD[146] = \"����������������������������������������������������������������叩但達辰奪脱巽竪辿棚谷狸鱈樽誰丹単嘆坦担探旦歎淡湛炭短端箪綻耽胆蛋誕鍛団壇弾断暖檀段男談値知地弛恥智池痴稚置致蜘遅馳築畜竹筑蓄�逐秩窒茶嫡着中仲宙忠抽昼柱注虫衷註酎鋳駐樗瀦猪苧著貯丁兆凋喋寵帖帳庁弔張彫徴懲挑暢朝潮牒町眺聴脹腸蝶調諜超跳銚長頂鳥勅捗直朕沈珍賃鎮陳津墜椎槌追鎚痛通塚栂掴槻佃漬柘辻蔦綴鍔椿潰坪壷嬬紬爪吊釣鶴亭低停偵剃貞呈堤定帝底庭廷弟悌抵挺提梯汀碇禎程締艇訂諦蹄逓���\".split(\"\");\nfor(j = 0; j != D[146].length; ++j) if(D[146][j].charCodeAt(0) !== 0xFFFD) { e[D[146][j]] = 37376 + j; d[37376 + j] = D[146][j];}\nD[147] = \"����������������������������������������������������������������邸鄭釘鼎泥摘擢敵滴的笛適鏑溺哲徹撤轍迭鉄典填天展店添纏甜貼転顛点伝殿澱田電兎吐堵塗妬屠徒斗杜渡登菟賭途都鍍砥砺努度土奴怒倒党冬�凍刀唐塔塘套宕島嶋悼投搭東桃梼棟盗淘湯涛灯燈当痘祷等答筒糖統到董蕩藤討謄豆踏逃透鐙陶頭騰闘働動同堂導憧撞洞瞳童胴萄道銅峠鴇匿得徳涜特督禿篤毒独読栃橡凸突椴届鳶苫寅酉瀞噸屯惇敦沌豚遁頓呑曇鈍奈那内乍凪薙謎灘捺鍋楢馴縄畷南楠軟難汝二尼弐迩匂賑肉虹廿日乳入���\".split(\"\");\nfor(j = 0; j != D[147].length; ++j) if(D[147][j].charCodeAt(0) !== 0xFFFD) { e[D[147][j]] = 37632 + j; d[37632 + j] = D[147][j];}\nD[148] = \"����������������������������������������������������������������如尿韮任妊忍認濡禰祢寧葱猫熱年念捻撚燃粘乃廼之埜嚢悩濃納能脳膿農覗蚤巴把播覇杷波派琶破婆罵芭馬俳廃拝排敗杯盃牌背肺輩配倍培媒梅�楳煤狽買売賠陪這蝿秤矧萩伯剥博拍柏泊白箔粕舶薄迫曝漠爆縛莫駁麦函箱硲箸肇筈櫨幡肌畑畠八鉢溌発醗髪伐罰抜筏閥鳩噺塙蛤隼伴判半反叛帆搬斑板氾汎版犯班畔繁般藩販範釆煩頒飯挽晩番盤磐蕃蛮匪卑否妃庇彼悲扉批披斐比泌疲皮碑秘緋罷肥被誹費避非飛樋簸備尾微枇毘琵眉美���\".split(\"\");\nfor(j = 0; j != D[148].length; ++j) if(D[148][j].charCodeAt(0) !== 0xFFFD) { e[D[148][j]] = 37888 + j; d[37888 + j] = D[148][j];}\nD[149] = \"����������������������������������������������������������������鼻柊稗匹疋髭彦膝菱肘弼必畢筆逼桧姫媛紐百謬俵彪標氷漂瓢票表評豹廟描病秒苗錨鋲蒜蛭鰭品彬斌浜瀕貧賓頻敏瓶不付埠夫婦富冨布府怖扶敷�斧普浮父符腐膚芙譜負賦赴阜附侮撫武舞葡蕪部封楓風葺蕗伏副復幅服福腹複覆淵弗払沸仏物鮒分吻噴墳憤扮焚奮粉糞紛雰文聞丙併兵塀幣平弊柄並蔽閉陛米頁僻壁癖碧別瞥蔑箆偏変片篇編辺返遍便勉娩弁鞭保舗鋪圃捕歩甫補輔穂募墓慕戊暮母簿菩倣俸包呆報奉宝峰峯崩庖抱捧放方朋���\".split(\"\");\nfor(j = 0; j != D[149].length; ++j) if(D[149][j].charCodeAt(0) !== 0xFFFD) { e[D[149][j]] = 38144 + j; d[38144 + j] = D[149][j];}\nD[150] = \"����������������������������������������������������������������法泡烹砲縫胞芳萌蓬蜂褒訪豊邦鋒飽鳳鵬乏亡傍剖坊妨帽忘忙房暴望某棒冒紡肪膨謀貌貿鉾防吠頬北僕卜墨撲朴牧睦穆釦勃没殆堀幌奔本翻凡盆�摩磨魔麻埋妹昧枚毎哩槙幕膜枕鮪柾鱒桝亦俣又抹末沫迄侭繭麿万慢満漫蔓味未魅巳箕岬密蜜湊蓑稔脈妙粍民眠務夢無牟矛霧鵡椋婿娘冥名命明盟迷銘鳴姪牝滅免棉綿緬面麺摸模茂妄孟毛猛盲網耗蒙儲木黙目杢勿餅尤戻籾貰問悶紋門匁也冶夜爺耶野弥矢厄役約薬訳躍靖柳薮鑓愉愈油癒���\".split(\"\");\nfor(j = 0; j != D[150].length; ++j) if(D[150][j].charCodeAt(0) !== 0xFFFD) { e[D[150][j]] = 38400 + j; d[38400 + j] = D[150][j];}\nD[151] = \"����������������������������������������������������������������諭輸唯佑優勇友宥幽悠憂揖有柚湧涌猶猷由祐裕誘遊邑郵雄融夕予余与誉輿預傭幼妖容庸揚揺擁曜楊様洋溶熔用窯羊耀葉蓉要謡踊遥陽養慾抑欲�沃浴翌翼淀羅螺裸来莱頼雷洛絡落酪乱卵嵐欄濫藍蘭覧利吏履李梨理璃痢裏裡里離陸律率立葎掠略劉流溜琉留硫粒隆竜龍侶慮旅虜了亮僚両凌寮料梁涼猟療瞭稜糧良諒遼量陵領力緑倫厘林淋燐琳臨輪隣鱗麟瑠塁涙累類令伶例冷励嶺怜玲礼苓鈴隷零霊麗齢暦歴列劣烈裂廉恋憐漣煉簾練聯���\".split(\"\");\nfor(j = 0; j != D[151].length; ++j) if(D[151][j].charCodeAt(0) !== 0xFFFD) { e[D[151][j]] = 38656 + j; d[38656 + j] = D[151][j];}\nD[152] = \"����������������������������������������������������������������蓮連錬呂魯櫓炉賂路露労婁廊弄朗楼榔浪漏牢狼篭老聾蝋郎六麓禄肋録論倭和話歪賄脇惑枠鷲亙亘鰐詫藁蕨椀湾碗腕��������������������������������������������弌丐丕个丱丶丼丿乂乖乘亂亅豫亊舒弍于亞亟亠亢亰亳亶从仍仄仆仂仗仞仭仟价伉佚估佛佝佗佇佶侈侏侘佻佩佰侑佯來侖儘俔俟俎俘俛俑俚俐俤俥倚倨倔倪倥倅伜俶倡倩倬俾俯們倆偃假會偕偐偈做偖偬偸傀傚傅傴傲���\".split(\"\");\nfor(j = 0; j != D[152].length; ++j) if(D[152][j].charCodeAt(0) !== 0xFFFD) { e[D[152][j]] = 38912 + j; d[38912 + j] = D[152][j];}\nD[153] = \"����������������������������������������������������������������僉僊傳僂僖僞僥僭僣僮價僵儉儁儂儖儕儔儚儡儺儷儼儻儿兀兒兌兔兢竸兩兪兮冀冂囘册冉冏冑冓冕冖冤冦冢冩冪冫决冱冲冰况冽凅凉凛几處凩凭�凰凵凾刄刋刔刎刧刪刮刳刹剏剄剋剌剞剔剪剴剩剳剿剽劍劔劒剱劈劑辨辧劬劭劼劵勁勍勗勞勣勦飭勠勳勵勸勹匆匈甸匍匐匏匕匚匣匯匱匳匸區卆卅丗卉卍凖卞卩卮夘卻卷厂厖厠厦厥厮厰厶參簒雙叟曼燮叮叨叭叺吁吽呀听吭吼吮吶吩吝呎咏呵咎呟呱呷呰咒呻咀呶咄咐咆哇咢咸咥咬哄哈咨���\".split(\"\");\nfor(j = 0; j != D[153].length; ++j) if(D[153][j].charCodeAt(0) !== 0xFFFD) { e[D[153][j]] = 39168 + j; d[39168 + j] = D[153][j];}\nD[154] = \"����������������������������������������������������������������咫哂咤咾咼哘哥哦唏唔哽哮哭哺哢唹啀啣啌售啜啅啖啗唸唳啝喙喀咯喊喟啻啾喘喞單啼喃喩喇喨嗚嗅嗟嗄嗜嗤嗔嘔嗷嘖嗾嗽嘛嗹噎噐營嘴嘶嘲嘸�噫噤嘯噬噪嚆嚀嚊嚠嚔嚏嚥嚮嚶嚴囂嚼囁囃囀囈囎囑囓囗囮囹圀囿圄圉圈國圍圓團圖嗇圜圦圷圸坎圻址坏坩埀垈坡坿垉垓垠垳垤垪垰埃埆埔埒埓堊埖埣堋堙堝塲堡塢塋塰毀塒堽塹墅墹墟墫墺壞墻墸墮壅壓壑壗壙壘壥壜壤壟壯壺壹壻壼壽夂夊夐夛梦夥夬夭夲夸夾竒奕奐奎奚奘奢奠奧奬奩���\".split(\"\");\nfor(j = 0; j != D[154].length; ++j) if(D[154][j].charCodeAt(0) !== 0xFFFD) { e[D[154][j]] = 39424 + j; d[39424 + j] = D[154][j];}\nD[155] = \"����������������������������������������������������������������奸妁妝佞侫妣妲姆姨姜妍姙姚娥娟娑娜娉娚婀婬婉娵娶婢婪媚媼媾嫋嫂媽嫣嫗嫦嫩嫖嫺嫻嬌嬋嬖嬲嫐嬪嬶嬾孃孅孀孑孕孚孛孥孩孰孳孵學斈孺宀�它宦宸寃寇寉寔寐寤實寢寞寥寫寰寶寳尅將專對尓尠尢尨尸尹屁屆屎屓屐屏孱屬屮乢屶屹岌岑岔妛岫岻岶岼岷峅岾峇峙峩峽峺峭嶌峪崋崕崗嵜崟崛崑崔崢崚崙崘嵌嵒嵎嵋嵬嵳嵶嶇嶄嶂嶢嶝嶬嶮嶽嶐嶷嶼巉巍巓巒巖巛巫已巵帋帚帙帑帛帶帷幄幃幀幎幗幔幟幢幤幇幵并幺麼广庠廁廂廈廐廏���\".split(\"\");\nfor(j = 0; j != D[155].length; ++j) if(D[155][j].charCodeAt(0) !== 0xFFFD) { e[D[155][j]] = 39680 + j; d[39680 + j] = D[155][j];}\nD[156] = \"����������������������������������������������������������������廖廣廝廚廛廢廡廨廩廬廱廳廰廴廸廾弃弉彝彜弋弑弖弩弭弸彁彈彌彎弯彑彖彗彙彡彭彳彷徃徂彿徊很徑徇從徙徘徠徨徭徼忖忻忤忸忱忝悳忿怡恠�怙怐怩怎怱怛怕怫怦怏怺恚恁恪恷恟恊恆恍恣恃恤恂恬恫恙悁悍惧悃悚悄悛悖悗悒悧悋惡悸惠惓悴忰悽惆悵惘慍愕愆惶惷愀惴惺愃愡惻惱愍愎慇愾愨愧慊愿愼愬愴愽慂慄慳慷慘慙慚慫慴慯慥慱慟慝慓慵憙憖憇憬憔憚憊憑憫憮懌懊應懷懈懃懆憺懋罹懍懦懣懶懺懴懿懽懼懾戀戈戉戍戌戔戛���\".split(\"\");\nfor(j = 0; j != D[156].length; ++j) if(D[156][j].charCodeAt(0) !== 0xFFFD) { e[D[156][j]] = 39936 + j; d[39936 + j] = D[156][j];}\nD[157] = \"����������������������������������������������������������������戞戡截戮戰戲戳扁扎扞扣扛扠扨扼抂抉找抒抓抖拔抃抔拗拑抻拏拿拆擔拈拜拌拊拂拇抛拉挌拮拱挧挂挈拯拵捐挾捍搜捏掖掎掀掫捶掣掏掉掟掵捫�捩掾揩揀揆揣揉插揶揄搖搴搆搓搦搶攝搗搨搏摧摯摶摎攪撕撓撥撩撈撼據擒擅擇撻擘擂擱擧舉擠擡抬擣擯攬擶擴擲擺攀擽攘攜攅攤攣攫攴攵攷收攸畋效敖敕敍敘敞敝敲數斂斃變斛斟斫斷旃旆旁旄旌旒旛旙无旡旱杲昊昃旻杳昵昶昴昜晏晄晉晁晞晝晤晧晨晟晢晰暃暈暎暉暄暘暝曁暹曉暾暼���\".split(\"\");\nfor(j = 0; j != D[157].length; ++j) if(D[157][j].charCodeAt(0) !== 0xFFFD) { e[D[157][j]] = 40192 + j; d[40192 + j] = D[157][j];}\nD[158] = \"����������������������������������������������������������������曄暸曖曚曠昿曦曩曰曵曷朏朖朞朦朧霸朮朿朶杁朸朷杆杞杠杙杣杤枉杰枩杼杪枌枋枦枡枅枷柯枴柬枳柩枸柤柞柝柢柮枹柎柆柧檜栞框栩桀桍栲桎�梳栫桙档桷桿梟梏梭梔條梛梃檮梹桴梵梠梺椏梍桾椁棊椈棘椢椦棡椌棍棔棧棕椶椒椄棗棣椥棹棠棯椨椪椚椣椡棆楹楷楜楸楫楔楾楮椹楴椽楙椰楡楞楝榁楪榲榮槐榿槁槓榾槎寨槊槝榻槃榧樮榑榠榜榕榴槞槨樂樛槿權槹槲槧樅榱樞槭樔槫樊樒櫁樣樓橄樌橲樶橸橇橢橙橦橈樸樢檐檍檠檄檢檣���\".split(\"\");\nfor(j = 0; j != D[158].length; ++j) if(D[158][j].charCodeAt(0) !== 0xFFFD) { e[D[158][j]] = 40448 + j; d[40448 + j] = D[158][j];}\nD[159] = \"����������������������������������������������������������������檗蘗檻櫃櫂檸檳檬櫞櫑櫟檪櫚櫪櫻欅蘖櫺欒欖鬱欟欸欷盜欹飮歇歃歉歐歙歔歛歟歡歸歹歿殀殄殃殍殘殕殞殤殪殫殯殲殱殳殷殼毆毋毓毟毬毫毳毯�麾氈氓气氛氤氣汞汕汢汪沂沍沚沁沛汾汨汳沒沐泄泱泓沽泗泅泝沮沱沾沺泛泯泙泪洟衍洶洫洽洸洙洵洳洒洌浣涓浤浚浹浙涎涕濤涅淹渕渊涵淇淦涸淆淬淞淌淨淒淅淺淙淤淕淪淮渭湮渮渙湲湟渾渣湫渫湶湍渟湃渺湎渤滿渝游溂溪溘滉溷滓溽溯滄溲滔滕溏溥滂溟潁漑灌滬滸滾漿滲漱滯漲滌���\".split(\"\");\nfor(j = 0; j != D[159].length; ++j) if(D[159][j].charCodeAt(0) !== 0xFFFD) { e[D[159][j]] = 40704 + j; d[40704 + j] = D[159][j];}\nD[224] = \"����������������������������������������������������������������漾漓滷澆潺潸澁澀潯潛濳潭澂潼潘澎澑濂潦澳澣澡澤澹濆澪濟濕濬濔濘濱濮濛瀉瀋濺瀑瀁瀏濾瀛瀚潴瀝瀘瀟瀰瀾瀲灑灣炙炒炯烱炬炸炳炮烟烋烝�烙焉烽焜焙煥煕熈煦煢煌煖煬熏燻熄熕熨熬燗熹熾燒燉燔燎燠燬燧燵燼燹燿爍爐爛爨爭爬爰爲爻爼爿牀牆牋牘牴牾犂犁犇犒犖犢犧犹犲狃狆狄狎狒狢狠狡狹狷倏猗猊猜猖猝猴猯猩猥猾獎獏默獗獪獨獰獸獵獻獺珈玳珎玻珀珥珮珞璢琅瑯琥珸琲琺瑕琿瑟瑙瑁瑜瑩瑰瑣瑪瑶瑾璋璞璧瓊瓏瓔珱���\".split(\"\");\nfor(j = 0; j != D[224].length; ++j) if(D[224][j].charCodeAt(0) !== 0xFFFD) { e[D[224][j]] = 57344 + j; d[57344 + j] = D[224][j];}\nD[225] = \"����������������������������������������������������������������瓠瓣瓧瓩瓮瓲瓰瓱瓸瓷甄甃甅甌甎甍甕甓甞甦甬甼畄畍畊畉畛畆畚畩畤畧畫畭畸當疆疇畴疊疉疂疔疚疝疥疣痂疳痃疵疽疸疼疱痍痊痒痙痣痞痾痿�痼瘁痰痺痲痳瘋瘍瘉瘟瘧瘠瘡瘢瘤瘴瘰瘻癇癈癆癜癘癡癢癨癩癪癧癬癰癲癶癸發皀皃皈皋皎皖皓皙皚皰皴皸皹皺盂盍盖盒盞盡盥盧盪蘯盻眈眇眄眩眤眞眥眦眛眷眸睇睚睨睫睛睥睿睾睹瞎瞋瞑瞠瞞瞰瞶瞹瞿瞼瞽瞻矇矍矗矚矜矣矮矼砌砒礦砠礪硅碎硴碆硼碚碌碣碵碪碯磑磆磋磔碾碼磅磊磬���\".split(\"\");\nfor(j = 0; j != D[225].length; ++j) if(D[225][j].charCodeAt(0) !== 0xFFFD) { e[D[225][j]] = 57600 + j; d[57600 + j] = D[225][j];}\nD[226] = \"����������������������������������������������������������������磧磚磽磴礇礒礑礙礬礫祀祠祗祟祚祕祓祺祿禊禝禧齋禪禮禳禹禺秉秕秧秬秡秣稈稍稘稙稠稟禀稱稻稾稷穃穗穉穡穢穩龝穰穹穽窈窗窕窘窖窩竈窰�窶竅竄窿邃竇竊竍竏竕竓站竚竝竡竢竦竭竰笂笏笊笆笳笘笙笞笵笨笶筐筺笄筍笋筌筅筵筥筴筧筰筱筬筮箝箘箟箍箜箚箋箒箏筝箙篋篁篌篏箴篆篝篩簑簔篦篥籠簀簇簓篳篷簗簍篶簣簧簪簟簷簫簽籌籃籔籏籀籐籘籟籤籖籥籬籵粃粐粤粭粢粫粡粨粳粲粱粮粹粽糀糅糂糘糒糜糢鬻糯糲糴糶糺紆���\".split(\"\");\nfor(j = 0; j != D[226].length; ++j) if(D[226][j].charCodeAt(0) !== 0xFFFD) { e[D[226][j]] = 57856 + j; d[57856 + j] = D[226][j];}\nD[227] = \"����������������������������������������������������������������紂紜紕紊絅絋紮紲紿紵絆絳絖絎絲絨絮絏絣經綉絛綏絽綛綺綮綣綵緇綽綫總綢綯緜綸綟綰緘緝緤緞緻緲緡縅縊縣縡縒縱縟縉縋縢繆繦縻縵縹繃縷�縲縺繧繝繖繞繙繚繹繪繩繼繻纃緕繽辮繿纈纉續纒纐纓纔纖纎纛纜缸缺罅罌罍罎罐网罕罔罘罟罠罨罩罧罸羂羆羃羈羇羌羔羞羝羚羣羯羲羹羮羶羸譱翅翆翊翕翔翡翦翩翳翹飜耆耄耋耒耘耙耜耡耨耿耻聊聆聒聘聚聟聢聨聳聲聰聶聹聽聿肄肆肅肛肓肚肭冐肬胛胥胙胝胄胚胖脉胯胱脛脩脣脯腋���\".split(\"\");\nfor(j = 0; j != D[227].length; ++j) if(D[227][j].charCodeAt(0) !== 0xFFFD) { e[D[227][j]] = 58112 + j; d[58112 + j] = D[227][j];}\nD[228] = \"����������������������������������������������������������������隋腆脾腓腑胼腱腮腥腦腴膃膈膊膀膂膠膕膤膣腟膓膩膰膵膾膸膽臀臂膺臉臍臑臙臘臈臚臟臠臧臺臻臾舁舂舅與舊舍舐舖舩舫舸舳艀艙艘艝艚艟艤�艢艨艪艫舮艱艷艸艾芍芒芫芟芻芬苡苣苟苒苴苳苺莓范苻苹苞茆苜茉苙茵茴茖茲茱荀茹荐荅茯茫茗茘莅莚莪莟莢莖茣莎莇莊荼莵荳荵莠莉莨菴萓菫菎菽萃菘萋菁菷萇菠菲萍萢萠莽萸蔆菻葭萪萼蕚蒄葷葫蒭葮蒂葩葆萬葯葹萵蓊葢蒹蒿蒟蓙蓍蒻蓚蓐蓁蓆蓖蒡蔡蓿蓴蔗蔘蔬蔟蔕蔔蓼蕀蕣蕘蕈���\".split(\"\");\nfor(j = 0; j != D[228].length; ++j) if(D[228][j].charCodeAt(0) !== 0xFFFD) { e[D[228][j]] = 58368 + j; d[58368 + j] = D[228][j];}\nD[229] = \"����������������������������������������������������������������蕁蘂蕋蕕薀薤薈薑薊薨蕭薔薛藪薇薜蕷蕾薐藉薺藏薹藐藕藝藥藜藹蘊蘓蘋藾藺蘆蘢蘚蘰蘿虍乕虔號虧虱蚓蚣蚩蚪蚋蚌蚶蚯蛄蛆蚰蛉蠣蚫蛔蛞蛩蛬�蛟蛛蛯蜒蜆蜈蜀蜃蛻蜑蜉蜍蛹蜊蜴蜿蜷蜻蜥蜩蜚蝠蝟蝸蝌蝎蝴蝗蝨蝮蝙蝓蝣蝪蠅螢螟螂螯蟋螽蟀蟐雖螫蟄螳蟇蟆螻蟯蟲蟠蠏蠍蟾蟶蟷蠎蟒蠑蠖蠕蠢蠡蠱蠶蠹蠧蠻衄衂衒衙衞衢衫袁衾袞衵衽袵衲袂袗袒袮袙袢袍袤袰袿袱裃裄裔裘裙裝裹褂裼裴裨裲褄褌褊褓襃褞褥褪褫襁襄褻褶褸襌褝襠襞���\".split(\"\");\nfor(j = 0; j != D[229].length; ++j) if(D[229][j].charCodeAt(0) !== 0xFFFD) { e[D[229][j]] = 58624 + j; d[58624 + j] = D[229][j];}\nD[230] = \"����������������������������������������������������������������襦襤襭襪襯襴襷襾覃覈覊覓覘覡覩覦覬覯覲覺覽覿觀觚觜觝觧觴觸訃訖訐訌訛訝訥訶詁詛詒詆詈詼詭詬詢誅誂誄誨誡誑誥誦誚誣諄諍諂諚諫諳諧�諤諱謔諠諢諷諞諛謌謇謚諡謖謐謗謠謳鞫謦謫謾謨譁譌譏譎證譖譛譚譫譟譬譯譴譽讀讌讎讒讓讖讙讚谺豁谿豈豌豎豐豕豢豬豸豺貂貉貅貊貍貎貔豼貘戝貭貪貽貲貳貮貶賈賁賤賣賚賽賺賻贄贅贊贇贏贍贐齎贓賍贔贖赧赭赱赳趁趙跂趾趺跏跚跖跌跛跋跪跫跟跣跼踈踉跿踝踞踐踟蹂踵踰踴蹊���\".split(\"\");\nfor(j = 0; j != D[230].length; ++j) if(D[230][j].charCodeAt(0) !== 0xFFFD) { e[D[230][j]] = 58880 + j; d[58880 + j] = D[230][j];}\nD[231] = \"����������������������������������������������������������������蹇蹉蹌蹐蹈蹙蹤蹠踪蹣蹕蹶蹲蹼躁躇躅躄躋躊躓躑躔躙躪躡躬躰軆躱躾軅軈軋軛軣軼軻軫軾輊輅輕輒輙輓輜輟輛輌輦輳輻輹轅轂輾轌轉轆轎轗轜�轢轣轤辜辟辣辭辯辷迚迥迢迪迯邇迴逅迹迺逑逕逡逍逞逖逋逧逶逵逹迸遏遐遑遒逎遉逾遖遘遞遨遯遶隨遲邂遽邁邀邊邉邏邨邯邱邵郢郤扈郛鄂鄒鄙鄲鄰酊酖酘酣酥酩酳酲醋醉醂醢醫醯醪醵醴醺釀釁釉釋釐釖釟釡釛釼釵釶鈞釿鈔鈬鈕鈑鉞鉗鉅鉉鉤鉈銕鈿鉋鉐銜銖銓銛鉚鋏銹銷鋩錏鋺鍄錮���\".split(\"\");\nfor(j = 0; j != D[231].length; ++j) if(D[231][j].charCodeAt(0) !== 0xFFFD) { e[D[231][j]] = 59136 + j; d[59136 + j] = D[231][j];}\nD[232] = \"����������������������������������������������������������������錙錢錚錣錺錵錻鍜鍠鍼鍮鍖鎰鎬鎭鎔鎹鏖鏗鏨鏥鏘鏃鏝鏐鏈鏤鐚鐔鐓鐃鐇鐐鐶鐫鐵鐡鐺鑁鑒鑄鑛鑠鑢鑞鑪鈩鑰鑵鑷鑽鑚鑼鑾钁鑿閂閇閊閔閖閘閙�閠閨閧閭閼閻閹閾闊濶闃闍闌闕闔闖關闡闥闢阡阨阮阯陂陌陏陋陷陜陞陝陟陦陲陬隍隘隕隗險隧隱隲隰隴隶隸隹雎雋雉雍襍雜霍雕雹霄霆霈霓霎霑霏霖霙霤霪霰霹霽霾靄靆靈靂靉靜靠靤靦靨勒靫靱靹鞅靼鞁靺鞆鞋鞏鞐鞜鞨鞦鞣鞳鞴韃韆韈韋韜韭齏韲竟韶韵頏頌頸頤頡頷頽顆顏顋顫顯顰���\".split(\"\");\nfor(j = 0; j != D[232].length; ++j) if(D[232][j].charCodeAt(0) !== 0xFFFD) { e[D[232][j]] = 59392 + j; d[59392 + j] = D[232][j];}\nD[233] = \"����������������������������������������������������������������顱顴顳颪颯颱颶飄飃飆飩飫餃餉餒餔餘餡餝餞餤餠餬餮餽餾饂饉饅饐饋饑饒饌饕馗馘馥馭馮馼駟駛駝駘駑駭駮駱駲駻駸騁騏騅駢騙騫騷驅驂驀驃�騾驕驍驛驗驟驢驥驤驩驫驪骭骰骼髀髏髑髓體髞髟髢髣髦髯髫髮髴髱髷髻鬆鬘鬚鬟鬢鬣鬥鬧鬨鬩鬪鬮鬯鬲魄魃魏魍魎魑魘魴鮓鮃鮑鮖鮗鮟鮠鮨鮴鯀鯊鮹鯆鯏鯑鯒鯣鯢鯤鯔鯡鰺鯲鯱鯰鰕鰔鰉鰓鰌鰆鰈鰒鰊鰄鰮鰛鰥鰤鰡鰰鱇鰲鱆鰾鱚鱠鱧鱶鱸鳧鳬鳰鴉鴈鳫鴃鴆鴪鴦鶯鴣鴟鵄鴕鴒鵁鴿鴾鵆鵈���\".split(\"\");\nfor(j = 0; j != D[233].length; ++j) if(D[233][j].charCodeAt(0) !== 0xFFFD) { e[D[233][j]] = 59648 + j; d[59648 + j] = D[233][j];}\nD[234] = \"����������������������������������������������������������������鵝鵞鵤鵑鵐鵙鵲鶉鶇鶫鵯鵺鶚鶤鶩鶲鷄鷁鶻鶸鶺鷆鷏鷂鷙鷓鷸鷦鷭鷯鷽鸚鸛鸞鹵鹹鹽麁麈麋麌麒麕麑麝麥麩麸麪麭靡黌黎黏黐黔黜點黝黠黥黨黯�黴黶黷黹黻黼黽鼇鼈皷鼕鼡鼬鼾齊齒齔齣齟齠齡齦齧齬齪齷齲齶龕龜龠堯槇遙瑤凜熙�������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[234].length; ++j) if(D[234][j].charCodeAt(0) !== 0xFFFD) { e[D[234][j]] = 59904 + j; d[59904 + j] = D[234][j];}\nD[237] = \"����������������������������������������������������������������纊褜鍈銈蓜俉炻昱棈鋹曻彅丨仡仼伀伃伹佖侒侊侚侔俍偀倢俿倞偆偰偂傔僴僘兊兤冝冾凬刕劜劦勀勛匀匇匤卲厓厲叝﨎咜咊咩哿喆坙坥垬埈埇﨏�塚增墲夋奓奛奝奣妤妺孖寀甯寘寬尞岦岺峵崧嵓﨑嵂嵭嶸嶹巐弡弴彧德忞恝悅悊惞惕愠惲愑愷愰憘戓抦揵摠撝擎敎昀昕昻昉昮昞昤晥晗晙晴晳暙暠暲暿曺朎朗杦枻桒柀栁桄棏﨓楨﨔榘槢樰橫橆橳橾櫢櫤毖氿汜沆汯泚洄涇浯涖涬淏淸淲淼渹湜渧渼溿澈澵濵瀅瀇瀨炅炫焏焄煜煆煇凞燁燾犱���\".split(\"\");\nfor(j = 0; j != D[237].length; ++j) if(D[237][j].charCodeAt(0) !== 0xFFFD) { e[D[237][j]] = 60672 + j; d[60672 + j] = D[237][j];}\nD[238] = \"����������������������������������������������������������������犾猤猪獷玽珉珖珣珒琇珵琦琪琩琮瑢璉璟甁畯皂皜皞皛皦益睆劯砡硎硤硺礰礼神祥禔福禛竑竧靖竫箞精絈絜綷綠緖繒罇羡羽茁荢荿菇菶葈蒴蕓蕙�蕫﨟薰蘒﨡蠇裵訒訷詹誧誾諟諸諶譓譿賰賴贒赶﨣軏﨤逸遧郞都鄕鄧釚釗釞釭釮釤釥鈆鈐鈊鈺鉀鈼鉎鉙鉑鈹鉧銧鉷鉸鋧鋗鋙鋐﨧鋕鋠鋓錥錡鋻﨨錞鋿錝錂鍰鍗鎤鏆鏞鏸鐱鑅鑈閒隆﨩隝隯霳霻靃靍靏靑靕顗顥飯飼餧館馞驎髙髜魵魲鮏鮱鮻鰀鵰鵫鶴鸙黑��ⅰⅱⅲⅳⅴⅵⅶⅷⅸⅹ¬¦'"���\".split(\"\");\nfor(j = 0; j != D[238].length; ++j) if(D[238][j].charCodeAt(0) !== 0xFFFD) { e[D[238][j]] = 60928 + j; d[60928 + j] = D[238][j];}\nD[250] = \"����������������������������������������������������������������ⅰⅱⅲⅳⅴⅵⅶⅷⅸⅹⅠⅡⅢⅣⅤⅥⅦⅧⅨⅩ¬¦'"㈱№℡∵纊褜鍈銈蓜俉炻昱棈鋹曻彅丨仡仼伀伃伹佖侒侊侚侔俍偀倢俿倞偆偰偂傔僴僘兊�兤冝冾凬刕劜劦勀勛匀匇匤卲厓厲叝﨎咜咊咩哿喆坙坥垬埈埇﨏塚增墲夋奓奛奝奣妤妺孖寀甯寘寬尞岦岺峵崧嵓﨑嵂嵭嶸嶹巐弡弴彧德忞恝悅悊惞惕愠惲愑愷愰憘戓抦揵摠撝擎敎昀昕昻昉昮昞昤晥晗晙晴晳暙暠暲暿曺朎朗杦枻桒柀栁桄棏﨓楨﨔榘槢樰橫橆橳橾櫢櫤毖氿汜沆汯泚洄涇浯���\".split(\"\");\nfor(j = 0; j != D[250].length; ++j) if(D[250][j].charCodeAt(0) !== 0xFFFD) { e[D[250][j]] = 64000 + j; d[64000 + j] = D[250][j];}\nD[251] = \"����������������������������������������������������������������涖涬淏淸淲淼渹湜渧渼溿澈澵濵瀅瀇瀨炅炫焏焄煜煆煇凞燁燾犱犾猤猪獷玽珉珖珣珒琇珵琦琪琩琮瑢璉璟甁畯皂皜皞皛皦益睆劯砡硎硤硺礰礼神�祥禔福禛竑竧靖竫箞精絈絜綷綠緖繒罇羡羽茁荢荿菇菶葈蒴蕓蕙蕫﨟薰蘒﨡蠇裵訒訷詹誧誾諟諸諶譓譿賰賴贒赶﨣軏﨤逸遧郞都鄕鄧釚釗釞釭釮釤釥鈆鈐鈊鈺鉀鈼鉎鉙鉑鈹鉧銧鉷鉸鋧鋗鋙鋐﨧鋕鋠鋓錥錡鋻﨨錞鋿錝錂鍰鍗鎤鏆鏞鏸鐱鑅鑈閒隆﨩隝隯霳霻靃靍靏靑靕顗顥飯飼餧館馞驎髙���\".split(\"\");\nfor(j = 0; j != D[251].length; ++j) if(D[251][j].charCodeAt(0) !== 0xFFFD) { e[D[251][j]] = 64256 + j; d[64256 + j] = D[251][j];}\nD[252] = \"����������������������������������������������������������������髜魵魲鮏鮱鮻鰀鵰鵫鶴鸙黑������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[252].length; ++j) if(D[252][j].charCodeAt(0) !== 0xFFFD) { e[D[252][j]] = 64512 + j; d[64512 + j] = D[252][j];}\nreturn {\"enc\": e, \"dec\": d }; })();\ncptable[936] = (function(){ var d = [], e = {}, D = [], j;\nD[0] = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~€�������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[0].length; ++j) if(D[0][j].charCodeAt(0) !== 0xFFFD) { e[D[0][j]] = 0 + j; d[0 + j] = D[0][j];}\nD[129] = \"����������������������������������������������������������������丂丄丅丆丏丒丗丟丠両丣並丩丮丯丱丳丵丷丼乀乁乂乄乆乊乑乕乗乚乛乢乣乤乥乧乨乪乫乬乭乮乯乲乴乵乶乷乸乹乺乻乼乽乿亀亁亂亃亄亅亇亊�亐亖亗亙亜亝亞亣亪亯亰亱亴亶亷亸亹亼亽亾仈仌仏仐仒仚仛仜仠仢仦仧仩仭仮仯仱仴仸仹仺仼仾伀伂伃伄伅伆伇伈伋伌伒伓伔伕伖伜伝伡伣伨伩伬伭伮伱伳伵伷伹伻伾伿佀佁佂佄佅佇佈佉佊佋佌佒佔佖佡佢佦佨佪佫佭佮佱佲併佷佸佹佺佽侀侁侂侅來侇侊侌侎侐侒侓侕侖侘侙侚侜侞侟価侢�\".split(\"\");\nfor(j = 0; j != D[129].length; ++j) if(D[129][j].charCodeAt(0) !== 0xFFFD) { e[D[129][j]] = 33024 + j; d[33024 + j] = D[129][j];}\nD[130] = \"����������������������������������������������������������������侤侫侭侰侱侲侳侴侶侷侸侹侺侻侼侽侾俀俁係俆俇俈俉俋俌俍俒俓俔俕俖俙俛俠俢俤俥俧俫俬俰俲俴俵俶俷俹俻俼俽俿倀倁倂倃倄倅倆倇倈倉倊�個倎倐們倓倕倖倗倛倝倞倠倢倣値倧倫倯倰倱倲倳倴倵倶倷倸倹倻倽倿偀偁偂偄偅偆偉偊偋偍偐偑偒偓偔偖偗偘偙偛偝偞偟偠偡偢偣偤偦偧偨偩偪偫偭偮偯偰偱偲偳側偵偸偹偺偼偽傁傂傃傄傆傇傉傊傋傌傎傏傐傑傒傓傔傕傖傗傘備傚傛傜傝傞傟傠傡傢傤傦傪傫傭傮傯傰傱傳傴債傶傷傸傹傼�\".split(\"\");\nfor(j = 0; j != D[130].length; ++j) if(D[130][j].charCodeAt(0) !== 0xFFFD) { e[D[130][j]] = 33280 + j; d[33280 + j] = D[130][j];}\nD[131] = \"����������������������������������������������������������������傽傾傿僀僁僂僃僄僅僆僇僈僉僊僋僌働僎僐僑僒僓僔僕僗僘僙僛僜僝僞僟僠僡僢僣僤僥僨僩僪僫僯僰僱僲僴僶僷僸價僺僼僽僾僿儀儁儂儃億儅儈�儉儊儌儍儎儏儐儑儓儔儕儖儗儘儙儚儛儜儝儞償儠儢儣儤儥儦儧儨儩優儫儬儭儮儯儰儱儲儳儴儵儶儷儸儹儺儻儼儽儾兂兇兊兌兎兏児兒兓兗兘兙兛兝兞兟兠兡兣兤兦內兩兪兯兲兺兾兿冃冄円冇冊冋冎冏冐冑冓冔冘冚冝冞冟冡冣冦冧冨冩冪冭冮冴冸冹冺冾冿凁凂凃凅凈凊凍凎凐凒凓凔凕凖凗�\".split(\"\");\nfor(j = 0; j != D[131].length; ++j) if(D[131][j].charCodeAt(0) !== 0xFFFD) { e[D[131][j]] = 33536 + j; d[33536 + j] = D[131][j];}\nD[132] = \"����������������������������������������������������������������凘凙凚凜凞凟凢凣凥処凧凨凩凪凬凮凱凲凴凷凾刄刅刉刋刌刏刐刓刔刕刜刞刟刡刢刣別刦刧刪刬刯刱刲刴刵刼刾剄剅剆則剈剉剋剎剏剒剓剕剗剘�剙剚剛剝剟剠剢剣剤剦剨剫剬剭剮剰剱剳剴創剶剷剸剹剺剻剼剾劀劃劄劅劆劇劉劊劋劌劍劎劏劑劒劔劕劖劗劘劙劚劜劤劥劦劧劮劯劰労劵劶劷劸効劺劻劼劽勀勁勂勄勅勆勈勊勌勍勎勏勑勓勔動勗務勚勛勜勝勞勠勡勢勣勥勦勧勨勩勪勫勬勭勮勯勱勲勳勴勵勶勷勸勻勼勽匁匂匃匄匇匉匊匋匌匎�\".split(\"\");\nfor(j = 0; j != D[132].length; ++j) if(D[132][j].charCodeAt(0) !== 0xFFFD) { e[D[132][j]] = 33792 + j; d[33792 + j] = D[132][j];}\nD[133] = \"����������������������������������������������������������������匑匒匓匔匘匛匜匞匟匢匤匥匧匨匩匫匬匭匯匰匱匲匳匴匵匶匷匸匼匽區卂卄卆卋卌卍卐協単卙卛卝卥卨卪卬卭卲卶卹卻卼卽卾厀厁厃厇厈厊厎厏�厐厑厒厓厔厖厗厙厛厜厞厠厡厤厧厪厫厬厭厯厰厱厲厳厴厵厷厸厹厺厼厽厾叀參叄叅叆叇収叏叐叒叓叕叚叜叝叞叡叢叧叴叺叾叿吀吂吅吇吋吔吘吙吚吜吢吤吥吪吰吳吶吷吺吽吿呁呂呄呅呇呉呌呍呎呏呑呚呝呞呟呠呡呣呥呧呩呪呫呬呭呮呯呰呴呹呺呾呿咁咃咅咇咈咉咊咍咑咓咗咘咜咞咟咠咡�\".split(\"\");\nfor(j = 0; j != D[133].length; ++j) if(D[133][j].charCodeAt(0) !== 0xFFFD) { e[D[133][j]] = 34048 + j; d[34048 + j] = D[133][j];}\nD[134] = \"����������������������������������������������������������������咢咥咮咰咲咵咶咷咹咺咼咾哃哅哊哋哖哘哛哠員哢哣哤哫哬哯哰哱哴哵哶哷哸哹哻哾唀唂唃唄唅唈唊唋唌唍唎唒唓唕唖唗唘唙唚唜唝唞唟唡唥唦�唨唩唫唭唲唴唵唶唸唹唺唻唽啀啂啅啇啈啋啌啍啎問啑啒啓啔啗啘啙啚啛啝啞啟啠啢啣啨啩啫啯啰啱啲啳啴啹啺啽啿喅喆喌喍喎喐喒喓喕喖喗喚喛喞喠喡喢喣喤喥喦喨喩喪喫喬喭單喯喰喲喴営喸喺喼喿嗀嗁嗂嗃嗆嗇嗈嗊嗋嗎嗏嗐嗕嗗嗘嗙嗚嗛嗞嗠嗢嗧嗩嗭嗮嗰嗱嗴嗶嗸嗹嗺嗻嗼嗿嘂嘃嘄嘅�\".split(\"\");\nfor(j = 0; j != D[134].length; ++j) if(D[134][j].charCodeAt(0) !== 0xFFFD) { e[D[134][j]] = 34304 + j; d[34304 + j] = D[134][j];}\nD[135] = \"����������������������������������������������������������������嘆嘇嘊嘋嘍嘐嘑嘒嘓嘔嘕嘖嘗嘙嘚嘜嘝嘠嘡嘢嘥嘦嘨嘩嘪嘫嘮嘯嘰嘳嘵嘷嘸嘺嘼嘽嘾噀噁噂噃噄噅噆噇噈噉噊噋噏噐噑噒噓噕噖噚噛噝噞噟噠噡�噣噥噦噧噭噮噯噰噲噳噴噵噷噸噹噺噽噾噿嚀嚁嚂嚃嚄嚇嚈嚉嚊嚋嚌嚍嚐嚑嚒嚔嚕嚖嚗嚘嚙嚚嚛嚜嚝嚞嚟嚠嚡嚢嚤嚥嚦嚧嚨嚩嚪嚫嚬嚭嚮嚰嚱嚲嚳嚴嚵嚶嚸嚹嚺嚻嚽嚾嚿囀囁囂囃囄囅囆囇囈囉囋囌囍囎囏囐囑囒囓囕囖囘囙囜団囥囦囧囨囩囪囬囮囯囲図囶囷囸囻囼圀圁圂圅圇國圌圍圎圏圐圑�\".split(\"\");\nfor(j = 0; j != D[135].length; ++j) if(D[135][j].charCodeAt(0) !== 0xFFFD) { e[D[135][j]] = 34560 + j; d[34560 + j] = D[135][j];}\nD[136] = \"����������������������������������������������������������������園圓圔圕圖圗團圙圚圛圝圞圠圡圢圤圥圦圧圫圱圲圴圵圶圷圸圼圽圿坁坃坄坅坆坈坉坋坒坓坔坕坖坘坙坢坣坥坧坬坮坰坱坲坴坵坸坹坺坽坾坿垀�垁垇垈垉垊垍垎垏垐垑垔垕垖垗垘垙垚垜垝垞垟垥垨垪垬垯垰垱垳垵垶垷垹垺垻垼垽垾垿埀埁埄埅埆埇埈埉埊埌埍埐埑埓埖埗埛埜埞埡埢埣埥埦埧埨埩埪埫埬埮埰埱埲埳埵埶執埻埼埾埿堁堃堄堅堈堉堊堌堎堏堐堒堓堔堖堗堘堚堛堜堝堟堢堣堥堦堧堨堩堫堬堭堮堯報堲堳場堶堷堸堹堺堻堼堽�\".split(\"\");\nfor(j = 0; j != D[136].length; ++j) if(D[136][j].charCodeAt(0) !== 0xFFFD) { e[D[136][j]] = 34816 + j; d[34816 + j] = D[136][j];}\nD[137] = \"����������������������������������������������������������������堾堿塀塁塂塃塅塆塇塈塉塊塋塎塏塐塒塓塕塖塗塙塚塛塜塝塟塠塡塢塣塤塦塧塨塩塪塭塮塯塰塱塲塳塴塵塶塷塸塹塺塻塼塽塿墂墄墆墇墈墊墋墌�墍墎墏墐墑墔墕墖増墘墛墜墝墠墡墢墣墤墥墦墧墪墫墬墭墮墯墰墱墲墳墴墵墶墷墸墹墺墻墽墾墿壀壂壃壄壆壇壈壉壊壋壌壍壎壏壐壒壓壔壖壗壘壙壚壛壜壝壞壟壠壡壢壣壥壦壧壨壩壪壭壯壱売壴壵壷壸壺壻壼壽壾壿夀夁夃夅夆夈変夊夋夌夎夐夑夒夓夗夘夛夝夞夠夡夢夣夦夨夬夰夲夳夵夶夻�\".split(\"\");\nfor(j = 0; j != D[137].length; ++j) if(D[137][j].charCodeAt(0) !== 0xFFFD) { e[D[137][j]] = 35072 + j; d[35072 + j] = D[137][j];}\nD[138] = \"����������������������������������������������������������������夽夾夿奀奃奅奆奊奌奍奐奒奓奙奛奜奝奞奟奡奣奤奦奧奨奩奪奫奬奭奮奯奰奱奲奵奷奺奻奼奾奿妀妅妉妋妌妎妏妐妑妔妕妘妚妛妜妝妟妠妡妢妦�妧妬妭妰妱妳妴妵妶妷妸妺妼妽妿姀姁姂姃姄姅姇姈姉姌姍姎姏姕姖姙姛姞姟姠姡姢姤姦姧姩姪姫姭姮姯姰姱姲姳姴姵姶姷姸姺姼姽姾娀娂娊娋娍娎娏娐娒娔娕娖娗娙娚娛娝娞娡娢娤娦娧娨娪娫娬娭娮娯娰娳娵娷娸娹娺娻娽娾娿婁婂婃婄婅婇婈婋婌婍婎婏婐婑婒婓婔婖婗婘婙婛婜婝婞婟婠�\".split(\"\");\nfor(j = 0; j != D[138].length; ++j) if(D[138][j].charCodeAt(0) !== 0xFFFD) { e[D[138][j]] = 35328 + j; d[35328 + j] = D[138][j];}\nD[139] = \"����������������������������������������������������������������婡婣婤婥婦婨婩婫婬婭婮婯婰婱婲婳婸婹婻婼婽婾媀媁媂媃媄媅媆媇媈媉媊媋媌媍媎媏媐媑媓媔媕媖媗媘媙媜媝媞媟媠媡媢媣媤媥媦媧媨媩媫媬�媭媮媯媰媱媴媶媷媹媺媻媼媽媿嫀嫃嫄嫅嫆嫇嫈嫊嫋嫍嫎嫏嫐嫑嫓嫕嫗嫙嫚嫛嫝嫞嫟嫢嫤嫥嫧嫨嫪嫬嫭嫮嫯嫰嫲嫳嫴嫵嫶嫷嫸嫹嫺嫻嫼嫽嫾嫿嬀嬁嬂嬃嬄嬅嬆嬇嬈嬊嬋嬌嬍嬎嬏嬐嬑嬒嬓嬔嬕嬘嬙嬚嬛嬜嬝嬞嬟嬠嬡嬢嬣嬤嬥嬦嬧嬨嬩嬪嬫嬬嬭嬮嬯嬰嬱嬳嬵嬶嬸嬹嬺嬻嬼嬽嬾嬿孁孂孃孄孅孆孇�\".split(\"\");\nfor(j = 0; j != D[139].length; ++j) if(D[139][j].charCodeAt(0) !== 0xFFFD) { e[D[139][j]] = 35584 + j; d[35584 + j] = D[139][j];}\nD[140] = \"����������������������������������������������������������������孈孉孊孋孌孍孎孏孒孖孞孠孡孧孨孫孭孮孯孲孴孶孷學孹孻孼孾孿宂宆宊宍宎宐宑宒宔宖実宧宨宩宬宭宮宯宱宲宷宺宻宼寀寁寃寈寉寊寋寍寎寏�寑寔寕寖寗寘寙寚寛寜寠寢寣實寧審寪寫寬寭寯寱寲寳寴寵寶寷寽対尀専尃尅將專尋尌對導尐尒尓尗尙尛尞尟尠尡尣尦尨尩尪尫尭尮尯尰尲尳尵尶尷屃屄屆屇屌屍屒屓屔屖屗屘屚屛屜屝屟屢層屧屨屩屪屫屬屭屰屲屳屴屵屶屷屸屻屼屽屾岀岃岄岅岆岇岉岊岋岎岏岒岓岕岝岞岟岠岡岤岥岦岧岨�\".split(\"\");\nfor(j = 0; j != D[140].length; ++j) if(D[140][j].charCodeAt(0) !== 0xFFFD) { e[D[140][j]] = 35840 + j; d[35840 + j] = D[140][j];}\nD[141] = \"����������������������������������������������������������������岪岮岯岰岲岴岶岹岺岻岼岾峀峂峃峅峆峇峈峉峊峌峍峎峏峐峑峓峔峕峖峗峘峚峛峜峝峞峟峠峢峣峧峩峫峬峮峯峱峲峳峴峵島峷峸峹峺峼峽峾峿崀�崁崄崅崈崉崊崋崌崍崏崐崑崒崓崕崗崘崙崚崜崝崟崠崡崢崣崥崨崪崫崬崯崰崱崲崳崵崶崷崸崹崺崻崼崿嵀嵁嵂嵃嵄嵅嵆嵈嵉嵍嵎嵏嵐嵑嵒嵓嵔嵕嵖嵗嵙嵚嵜嵞嵟嵠嵡嵢嵣嵤嵥嵦嵧嵨嵪嵭嵮嵰嵱嵲嵳嵵嵶嵷嵸嵹嵺嵻嵼嵽嵾嵿嶀嶁嶃嶄嶅嶆嶇嶈嶉嶊嶋嶌嶍嶎嶏嶐嶑嶒嶓嶔嶕嶖嶗嶘嶚嶛嶜嶞嶟嶠�\".split(\"\");\nfor(j = 0; j != D[141].length; ++j) if(D[141][j].charCodeAt(0) !== 0xFFFD) { e[D[141][j]] = 36096 + j; d[36096 + j] = D[141][j];}\nD[142] = \"����������������������������������������������������������������嶡嶢嶣嶤嶥嶦嶧嶨嶩嶪嶫嶬嶭嶮嶯嶰嶱嶲嶳嶴嶵嶶嶸嶹嶺嶻嶼嶽嶾嶿巀巁巂巃巄巆巇巈巉巊巋巌巎巏巐巑巒巓巔巕巖巗巘巙巚巜巟巠巣巤巪巬巭�巰巵巶巸巹巺巻巼巿帀帄帇帉帊帋帍帎帒帓帗帞帟帠帡帢帣帤帥帨帩帪師帬帯帰帲帳帴帵帶帹帺帾帿幀幁幃幆幇幈幉幊幋幍幎幏幐幑幒幓幖幗幘幙幚幜幝幟幠幣幤幥幦幧幨幩幪幫幬幭幮幯幰幱幵幷幹幾庁庂広庅庈庉庌庍庎庒庘庛庝庡庢庣庤庨庩庪庫庬庮庯庰庱庲庴庺庻庼庽庿廀廁廂廃廄廅�\".split(\"\");\nfor(j = 0; j != D[142].length; ++j) if(D[142][j].charCodeAt(0) !== 0xFFFD) { e[D[142][j]] = 36352 + j; d[36352 + j] = D[142][j];}\nD[143] = \"����������������������������������������������������������������廆廇廈廋廌廍廎廏廐廔廕廗廘廙廚廜廝廞廟廠廡廢廣廤廥廦廧廩廫廬廭廮廯廰廱廲廳廵廸廹廻廼廽弅弆弇弉弌弍弎弐弒弔弖弙弚弜弝弞弡弢弣弤�弨弫弬弮弰弲弳弴張弶強弸弻弽弾弿彁彂彃彄彅彆彇彈彉彊彋彌彍彎彏彑彔彙彚彛彜彞彟彠彣彥彧彨彫彮彯彲彴彵彶彸彺彽彾彿徃徆徍徎徏徑従徔徖徚徛徝從徟徠徢徣徤徥徦徧復徫徬徯徰徱徲徳徴徶徸徹徺徻徾徿忀忁忂忇忈忊忋忎忓忔忕忚忛応忞忟忢忣忥忦忨忩忬忯忰忲忳忴忶忷忹忺忼怇�\".split(\"\");\nfor(j = 0; j != D[143].length; ++j) if(D[143][j].charCodeAt(0) !== 0xFFFD) { e[D[143][j]] = 36608 + j; d[36608 + j] = D[143][j];}\nD[144] = \"����������������������������������������������������������������怈怉怋怌怐怑怓怗怘怚怞怟怢怣怤怬怭怮怰怱怲怳怴怶怷怸怹怺怽怾恀恄恅恆恇恈恉恊恌恎恏恑恓恔恖恗恘恛恜恞恟恠恡恥恦恮恱恲恴恵恷恾悀�悁悂悅悆悇悈悊悋悎悏悐悑悓悕悗悘悙悜悞悡悢悤悥悧悩悪悮悰悳悵悶悷悹悺悽悾悿惀惁惂惃惄惇惈惉惌惍惎惏惐惒惓惔惖惗惙惛惞惡惢惣惤惥惪惱惲惵惷惸惻惼惽惾惿愂愃愄愅愇愊愋愌愐愑愒愓愔愖愗愘愙愛愜愝愞愡愢愥愨愩愪愬愭愮愯愰愱愲愳愴愵愶愷愸愹愺愻愼愽愾慀慁慂慃慄慅慆�\".split(\"\");\nfor(j = 0; j != D[144].length; ++j) if(D[144][j].charCodeAt(0) !== 0xFFFD) { e[D[144][j]] = 36864 + j; d[36864 + j] = D[144][j];}\nD[145] = \"����������������������������������������������������������������慇慉態慍慏慐慒慓慔慖慗慘慙慚慛慜慞慟慠慡慣慤慥慦慩慪慫慬慭慮慯慱慲慳慴慶慸慹慺慻慼慽慾慿憀憁憂憃憄憅憆憇憈憉憊憌憍憏憐憑憒憓憕�憖憗憘憙憚憛憜憞憟憠憡憢憣憤憥憦憪憫憭憮憯憰憱憲憳憴憵憶憸憹憺憻憼憽憿懀懁懃懄懅懆懇應懌懍懎懏懐懓懕懖懗懘懙懚懛懜懝懞懟懠懡懢懣懤懥懧懨懩懪懫懬懭懮懯懰懱懲懳懴懶懷懸懹懺懻懼懽懾戀戁戂戃戄戅戇戉戓戔戙戜戝戞戠戣戦戧戨戩戫戭戯戰戱戲戵戶戸戹戺戻戼扂扄扅扆扊�\".split(\"\");\nfor(j = 0; j != D[145].length; ++j) if(D[145][j].charCodeAt(0) !== 0xFFFD) { e[D[145][j]] = 37120 + j; d[37120 + j] = D[145][j];}\nD[146] = \"����������������������������������������������������������������扏扐払扖扗扙扚扜扝扞扟扠扡扢扤扥扨扱扲扴扵扷扸扺扻扽抁抂抃抅抆抇抈抋抌抍抎抏抐抔抙抜抝択抣抦抧抩抪抭抮抯抰抲抳抴抶抷抸抺抾拀拁�拃拋拏拑拕拝拞拠拡拤拪拫拰拲拵拸拹拺拻挀挃挄挅挆挊挋挌挍挏挐挒挓挔挕挗挘挙挜挦挧挩挬挭挮挰挱挳挴挵挶挷挸挻挼挾挿捀捁捄捇捈捊捑捒捓捔捖捗捘捙捚捛捜捝捠捤捥捦捨捪捫捬捯捰捲捳捴捵捸捹捼捽捾捿掁掃掄掅掆掋掍掑掓掔掕掗掙掚掛掜掝掞掟採掤掦掫掯掱掲掵掶掹掻掽掿揀�\".split(\"\");\nfor(j = 0; j != D[146].length; ++j) if(D[146][j].charCodeAt(0) !== 0xFFFD) { e[D[146][j]] = 37376 + j; d[37376 + j] = D[146][j];}\nD[147] = \"����������������������������������������������������������������揁揂揃揅揇揈揊揋揌揑揓揔揕揗揘揙揚換揜揝揟揢揤揥揦揧揨揫揬揮揯揰揱揳揵揷揹揺揻揼揾搃搄搆搇搈搉搊損搎搑搒搕搖搗搘搙搚搝搟搢搣搤�搥搧搨搩搫搮搯搰搱搲搳搵搶搷搸搹搻搼搾摀摂摃摉摋摌摍摎摏摐摑摓摕摖摗摙摚摛摜摝摟摠摡摢摣摤摥摦摨摪摫摬摮摯摰摱摲摳摴摵摶摷摻摼摽摾摿撀撁撃撆撈撉撊撋撌撍撎撏撐撓撔撗撘撚撛撜撝撟撠撡撢撣撥撦撧撨撪撫撯撱撲撳撴撶撹撻撽撾撿擁擃擄擆擇擈擉擊擋擌擏擑擓擔擕擖擙據�\".split(\"\");\nfor(j = 0; j != D[147].length; ++j) if(D[147][j].charCodeAt(0) !== 0xFFFD) { e[D[147][j]] = 37632 + j; d[37632 + j] = D[147][j];}\nD[148] = \"����������������������������������������������������������������擛擜擝擟擠擡擣擥擧擨擩擪擫擬擭擮擯擰擱擲擳擴擵擶擷擸擹擺擻擼擽擾擿攁攂攃攄攅攆攇攈攊攋攌攍攎攏攐攑攓攔攕攖攗攙攚攛攜攝攞攟攠攡�攢攣攤攦攧攨攩攪攬攭攰攱攲攳攷攺攼攽敀敁敂敃敄敆敇敊敋敍敎敐敒敓敔敗敘敚敜敟敠敡敤敥敧敨敩敪敭敮敯敱敳敵敶數敹敺敻敼敽敾敿斀斁斂斃斄斅斆斈斉斊斍斎斏斒斔斕斖斘斚斝斞斠斢斣斦斨斪斬斮斱斲斳斴斵斶斷斸斺斻斾斿旀旂旇旈旉旊旍旐旑旓旔旕旘旙旚旛旜旝旞旟旡旣旤旪旫�\".split(\"\");\nfor(j = 0; j != D[148].length; ++j) if(D[148][j].charCodeAt(0) !== 0xFFFD) { e[D[148][j]] = 37888 + j; d[37888 + j] = D[148][j];}\nD[149] = \"����������������������������������������������������������������旲旳旴旵旸旹旻旼旽旾旿昁昄昅昇昈昉昋昍昐昑昒昖昗昘昚昛昜昞昡昢昣昤昦昩昪昫昬昮昰昲昳昷昸昹昺昻昽昿晀時晄晅晆晇晈晉晊晍晎晐晑晘�晙晛晜晝晞晠晢晣晥晧晩晪晫晬晭晱晲晳晵晸晹晻晼晽晿暀暁暃暅暆暈暉暊暋暍暎暏暐暒暓暔暕暘暙暚暛暜暞暟暠暡暢暣暤暥暦暩暪暫暬暭暯暰暱暲暳暵暶暷暸暺暻暼暽暿曀曁曂曃曄曅曆曇曈曉曊曋曌曍曎曏曐曑曒曓曔曕曖曗曘曚曞曟曠曡曢曣曤曥曧曨曪曫曬曭曮曯曱曵曶書曺曻曽朁朂會�\".split(\"\");\nfor(j = 0; j != D[149].length; ++j) if(D[149][j].charCodeAt(0) !== 0xFFFD) { e[D[149][j]] = 38144 + j; d[38144 + j] = D[149][j];}\nD[150] = \"����������������������������������������������������������������朄朅朆朇朌朎朏朑朒朓朖朘朙朚朜朞朠朡朢朣朤朥朧朩朮朰朲朳朶朷朸朹朻朼朾朿杁杄杅杇杊杋杍杒杔杕杗杘杙杚杛杝杢杣杤杦杧杫杬杮東杴杶�杸杹杺杻杽枀枂枃枅枆枈枊枌枍枎枏枑枒枓枔枖枙枛枟枠枡枤枦枩枬枮枱枲枴枹枺枻枼枽枾枿柀柂柅柆柇柈柉柊柋柌柍柎柕柖柗柛柟柡柣柤柦柧柨柪柫柭柮柲柵柶柷柸柹柺査柼柾栁栂栃栄栆栍栐栒栔栕栘栙栚栛栜栞栟栠栢栣栤栥栦栧栨栫栬栭栮栯栰栱栴栵栶栺栻栿桇桋桍桏桒桖桗桘桙桚桛�\".split(\"\");\nfor(j = 0; j != D[150].length; ++j) if(D[150][j].charCodeAt(0) !== 0xFFFD) { e[D[150][j]] = 38400 + j; d[38400 + j] = D[150][j];}\nD[151] = \"����������������������������������������������������������������桜桝桞桟桪桬桭桮桯桰桱桲桳桵桸桹桺桻桼桽桾桿梀梂梄梇梈梉梊梋梌梍梎梐梑梒梔梕梖梘梙梚梛梜條梞梟梠梡梣梤梥梩梪梫梬梮梱梲梴梶梷梸�梹梺梻梼梽梾梿棁棃棄棅棆棇棈棊棌棎棏棐棑棓棔棖棗棙棛棜棝棞棟棡棢棤棥棦棧棨棩棪棫棬棭棯棲棳棴棶棷棸棻棽棾棿椀椂椃椄椆椇椈椉椊椌椏椑椓椔椕椖椗椘椙椚椛検椝椞椡椢椣椥椦椧椨椩椪椫椬椮椯椱椲椳椵椶椷椸椺椻椼椾楀楁楃楄楅楆楇楈楉楊楋楌楍楎楏楐楑楒楓楕楖楘楙楛楜楟�\".split(\"\");\nfor(j = 0; j != D[151].length; ++j) if(D[151][j].charCodeAt(0) !== 0xFFFD) { e[D[151][j]] = 38656 + j; d[38656 + j] = D[151][j];}\nD[152] = \"����������������������������������������������������������������楡楢楤楥楧楨楩楪楬業楯楰楲楳楴極楶楺楻楽楾楿榁榃榅榊榋榌榎榏榐榑榒榓榖榗榙榚榝榞榟榠榡榢榣榤榥榦榩榪榬榮榯榰榲榳榵榶榸榹榺榼榽�榾榿槀槂槃槄槅槆槇槈槉構槍槏槑槒槓槕槖槗様槙槚槜槝槞槡槢槣槤槥槦槧槨槩槪槫槬槮槯槰槱槳槴槵槶槷槸槹槺槻槼槾樀樁樂樃樄樅樆樇樈樉樋樌樍樎樏樐樑樒樓樔樕樖標樚樛樜樝樞樠樢樣樤樥樦樧権樫樬樭樮樰樲樳樴樶樷樸樹樺樻樼樿橀橁橂橃橅橆橈橉橊橋橌橍橎橏橑橒橓橔橕橖橗橚�\".split(\"\");\nfor(j = 0; j != D[152].length; ++j) if(D[152][j].charCodeAt(0) !== 0xFFFD) { e[D[152][j]] = 38912 + j; d[38912 + j] = D[152][j];}\nD[153] = \"����������������������������������������������������������������橜橝橞機橠橢橣橤橦橧橨橩橪橫橬橭橮橯橰橲橳橴橵橶橷橸橺橻橽橾橿檁檂檃檅檆檇檈檉檊檋檌檍檏檒檓檔檕檖檘檙檚檛檜檝檞檟檡檢檣檤檥檦�檧檨檪檭檮檯檰檱檲檳檴檵檶檷檸檹檺檻檼檽檾檿櫀櫁櫂櫃櫄櫅櫆櫇櫈櫉櫊櫋櫌櫍櫎櫏櫐櫑櫒櫓櫔櫕櫖櫗櫘櫙櫚櫛櫜櫝櫞櫟櫠櫡櫢櫣櫤櫥櫦櫧櫨櫩櫪櫫櫬櫭櫮櫯櫰櫱櫲櫳櫴櫵櫶櫷櫸櫹櫺櫻櫼櫽櫾櫿欀欁欂欃欄欅欆欇欈欉權欋欌欍欎欏欐欑欒欓欔欕欖欗欘欙欚欛欜欝欞欟欥欦欨欩欪欫欬欭欮�\".split(\"\");\nfor(j = 0; j != D[153].length; ++j) if(D[153][j].charCodeAt(0) !== 0xFFFD) { e[D[153][j]] = 39168 + j; d[39168 + j] = D[153][j];}\nD[154] = \"����������������������������������������������������������������欯欰欱欳欴欵欶欸欻欼欽欿歀歁歂歄歅歈歊歋歍歎歏歐歑歒歓歔歕歖歗歘歚歛歜歝歞歟歠歡歨歩歫歬歭歮歯歰歱歲歳歴歵歶歷歸歺歽歾歿殀殅殈�殌殎殏殐殑殔殕殗殘殙殜殝殞殟殠殢殣殤殥殦殧殨殩殫殬殭殮殯殰殱殲殶殸殹殺殻殼殽殾毀毃毄毆毇毈毉毊毌毎毐毑毘毚毜毝毞毟毠毢毣毤毥毦毧毨毩毬毭毮毰毱毲毴毶毷毸毺毻毼毾毿氀氁氂氃氄氈氉氊氋氌氎氒気氜氝氞氠氣氥氫氬氭氱氳氶氷氹氺氻氼氾氿汃汄汅汈汋汌汍汎汏汑汒汓汖汘�\".split(\"\");\nfor(j = 0; j != D[154].length; ++j) if(D[154][j].charCodeAt(0) !== 0xFFFD) { e[D[154][j]] = 39424 + j; d[39424 + j] = D[154][j];}\nD[155] = \"����������������������������������������������������������������汙汚汢汣汥汦汧汫汬汭汮汯汱汳汵汷汸決汻汼汿沀沄沇沊沋沍沎沑沒沕沖沗沘沚沜沝沞沠沢沨沬沯沰沴沵沶沷沺泀況泂泃泆泇泈泋泍泎泏泑泒泘�泙泚泜泝泟泤泦泧泩泬泭泲泴泹泿洀洂洃洅洆洈洉洊洍洏洐洑洓洔洕洖洘洜洝洟洠洡洢洣洤洦洨洩洬洭洯洰洴洶洷洸洺洿浀浂浄浉浌浐浕浖浗浘浛浝浟浡浢浤浥浧浨浫浬浭浰浱浲浳浵浶浹浺浻浽浾浿涀涁涃涄涆涇涊涋涍涏涐涒涖涗涘涙涚涜涢涥涬涭涰涱涳涴涶涷涹涺涻涼涽涾淁淂淃淈淉淊�\".split(\"\");\nfor(j = 0; j != D[155].length; ++j) if(D[155][j].charCodeAt(0) !== 0xFFFD) { e[D[155][j]] = 39680 + j; d[39680 + j] = D[155][j];}\nD[156] = \"����������������������������������������������������������������淍淎淏淐淒淓淔淕淗淚淛淜淟淢淣淥淧淨淩淪淭淯淰淲淴淵淶淸淺淽淾淿渀渁渂渃渄渆渇済渉渋渏渒渓渕渘渙減渜渞渟渢渦渧渨渪測渮渰渱渳渵�渶渷渹渻渼渽渾渿湀湁湂湅湆湇湈湉湊湋湌湏湐湑湒湕湗湙湚湜湝湞湠湡湢湣湤湥湦湧湨湩湪湬湭湯湰湱湲湳湴湵湶湷湸湹湺湻湼湽満溁溂溄溇溈溊溋溌溍溎溑溒溓溔溕準溗溙溚溛溝溞溠溡溣溤溦溨溩溫溬溭溮溰溳溵溸溹溼溾溿滀滃滄滅滆滈滉滊滌滍滎滐滒滖滘滙滛滜滝滣滧滪滫滬滭滮滯�\".split(\"\");\nfor(j = 0; j != D[156].length; ++j) if(D[156][j].charCodeAt(0) !== 0xFFFD) { e[D[156][j]] = 39936 + j; d[39936 + j] = D[156][j];}\nD[157] = \"����������������������������������������������������������������滰滱滲滳滵滶滷滸滺滻滼滽滾滿漀漁漃漄漅漇漈漊漋漌漍漎漐漑漒漖漗漘漙漚漛漜漝漞漟漡漢漣漥漦漧漨漬漮漰漲漴漵漷漸漹漺漻漼漽漿潀潁潂�潃潄潅潈潉潊潌潎潏潐潑潒潓潔潕潖潗潙潚潛潝潟潠潡潣潤潥潧潨潩潪潫潬潯潰潱潳潵潶潷潹潻潽潾潿澀澁澂澃澅澆澇澊澋澏澐澑澒澓澔澕澖澗澘澙澚澛澝澞澟澠澢澣澤澥澦澨澩澪澫澬澭澮澯澰澱澲澴澵澷澸澺澻澼澽澾澿濁濃濄濅濆濇濈濊濋濌濍濎濏濐濓濔濕濖濗濘濙濚濛濜濝濟濢濣濤濥�\".split(\"\");\nfor(j = 0; j != D[157].length; ++j) if(D[157][j].charCodeAt(0) !== 0xFFFD) { e[D[157][j]] = 40192 + j; d[40192 + j] = D[157][j];}\nD[158] = \"����������������������������������������������������������������濦濧濨濩濪濫濬濭濰濱濲濳濴濵濶濷濸濹濺濻濼濽濾濿瀀瀁瀂瀃瀄瀅瀆瀇瀈瀉瀊瀋瀌瀍瀎瀏瀐瀒瀓瀔瀕瀖瀗瀘瀙瀜瀝瀞瀟瀠瀡瀢瀤瀥瀦瀧瀨瀩瀪�瀫瀬瀭瀮瀯瀰瀱瀲瀳瀴瀶瀷瀸瀺瀻瀼瀽瀾瀿灀灁灂灃灄灅灆灇灈灉灊灋灍灎灐灑灒灓灔灕灖灗灘灙灚灛灜灝灟灠灡灢灣灤灥灦灧灨灩灪灮灱灲灳灴灷灹灺灻災炁炂炃炄炆炇炈炋炌炍炏炐炑炓炗炘炚炛炞炟炠炡炢炣炤炥炦炧炨炩炪炰炲炴炵炶為炾炿烄烅烆烇烉烋烌烍烎烏烐烑烒烓烔烕烖烗烚�\".split(\"\");\nfor(j = 0; j != D[158].length; ++j) if(D[158][j].charCodeAt(0) !== 0xFFFD) { e[D[158][j]] = 40448 + j; d[40448 + j] = D[158][j];}\nD[159] = \"����������������������������������������������������������������烜烝烞烠烡烢烣烥烪烮烰烱烲烳烴烵烶烸烺烻烼烾烿焀焁焂焃焄焅焆焇焈焋焌焍焎焏焑焒焔焗焛焜焝焞焟焠無焢焣焤焥焧焨焩焪焫焬焭焮焲焳焴�焵焷焸焹焺焻焼焽焾焿煀煁煂煃煄煆煇煈煉煋煍煏煐煑煒煓煔煕煖煗煘煙煚煛煝煟煠煡煢煣煥煩煪煫煬煭煯煰煱煴煵煶煷煹煻煼煾煿熀熁熂熃熅熆熇熈熉熋熌熍熎熐熑熒熓熕熖熗熚熛熜熝熞熡熢熣熤熥熦熧熩熪熫熭熮熯熰熱熲熴熶熷熸熺熻熼熽熾熿燀燁燂燄燅燆燇燈燉燊燋燌燍燏燐燑燒燓�\".split(\"\");\nfor(j = 0; j != D[159].length; ++j) if(D[159][j].charCodeAt(0) !== 0xFFFD) { e[D[159][j]] = 40704 + j; d[40704 + j] = D[159][j];}\nD[160] = \"����������������������������������������������������������������燖燗燘燙燚燛燜燝燞營燡燢燣燤燦燨燩燪燫燬燭燯燰燱燲燳燴燵燶燷燸燺燻燼燽燾燿爀爁爂爃爄爅爇爈爉爊爋爌爍爎爏爐爑爒爓爔爕爖爗爘爙爚�爛爜爞爟爠爡爢爣爤爥爦爧爩爫爭爮爯爲爳爴爺爼爾牀牁牂牃牄牅牆牉牊牋牎牏牐牑牓牔牕牗牘牚牜牞牠牣牤牥牨牪牫牬牭牰牱牳牴牶牷牸牻牼牽犂犃犅犆犇犈犉犌犎犐犑犓犔犕犖犗犘犙犚犛犜犝犞犠犡犢犣犤犥犦犧犨犩犪犫犮犱犲犳犵犺犻犼犽犾犿狀狅狆狇狉狊狋狌狏狑狓狔狕狖狘狚狛�\".split(\"\");\nfor(j = 0; j != D[160].length; ++j) if(D[160][j].charCodeAt(0) !== 0xFFFD) { e[D[160][j]] = 40960 + j; d[40960 + j] = D[160][j];}\nD[161] = \"����������������������������������������������������������������������������������������������������������������������������������������������������������������� 、。·ˉˇ¨〃々—~‖…‘’“”〔〕〈〉《》「」『』〖〗【】±×÷∶∧∨∑∏∪∩∈∷√⊥∥∠⌒⊙∫∮≡≌≈∽∝≠≮≯≤≥∞∵∴♂♀°′″℃$¤¢£‰§№☆★○●◎◇◆□■△▲※→←↑↓〓�\".split(\"\");\nfor(j = 0; j != D[161].length; ++j) if(D[161][j].charCodeAt(0) !== 0xFFFD) { e[D[161][j]] = 41216 + j; d[41216 + j] = D[161][j];}\nD[162] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������ⅰⅱⅲⅳⅴⅵⅶⅷⅸⅹ������⒈⒉⒊⒋⒌⒍⒎⒏⒐⒑⒒⒓⒔⒕⒖⒗⒘⒙⒚⒛⑴⑵⑶⑷⑸⑹⑺⑻⑼⑽⑾⑿⒀⒁⒂⒃⒄⒅⒆⒇①②③④⑤⑥⑦⑧⑨⑩��㈠㈡㈢㈣㈤㈥㈦㈧㈨㈩��ⅠⅡⅢⅣⅤⅥⅦⅧⅨⅩⅪⅫ���\".split(\"\");\nfor(j = 0; j != D[162].length; ++j) if(D[162][j].charCodeAt(0) !== 0xFFFD) { e[D[162][j]] = 41472 + j; d[41472 + j] = D[162][j];}\nD[163] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������!"#¥%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|} ̄�\".split(\"\");\nfor(j = 0; j != D[163].length; ++j) if(D[163][j].charCodeAt(0) !== 0xFFFD) { e[D[163][j]] = 41728 + j; d[41728 + j] = D[163][j];}\nD[164] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������ぁあぃいぅうぇえぉおかがきぎくぐけげこごさざしじすずせぜそぞただちぢっつづてでとどなにぬねのはばぱひびぴふぶぷへべぺほぼぽまみむめもゃやゅゆょよらりるれろゎわゐゑをん������������\".split(\"\");\nfor(j = 0; j != D[164].length; ++j) if(D[164][j].charCodeAt(0) !== 0xFFFD) { e[D[164][j]] = 41984 + j; d[41984 + j] = D[164][j];}\nD[165] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������ァアィイゥウェエォオカガキギクグケゲコゴサザシジスズセゼソゾタダチヂッツヅテデトドナニヌネノハバパヒビピフブプヘベペホボポマミムメモャヤュユョヨラリルレロヮワヰヱヲンヴヵヶ���������\".split(\"\");\nfor(j = 0; j != D[165].length; ++j) if(D[165][j].charCodeAt(0) !== 0xFFFD) { e[D[165][j]] = 42240 + j; d[42240 + j] = D[165][j];}\nD[166] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������ΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡΣΤΥΦΧΨΩ��������αβγδεζηθικλμνξοπρστυφχψω�������︵︶︹︺︿﹀︽︾﹁﹂﹃﹄��︻︼︷︸︱�︳︴����������\".split(\"\");\nfor(j = 0; j != D[166].length; ++j) if(D[166][j].charCodeAt(0) !== 0xFFFD) { e[D[166][j]] = 42496 + j; d[42496 + j] = D[166][j];}\nD[167] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ���������������абвгдеёжзийклмнопрстуфхцчшщъыьэюя��������������\".split(\"\");\nfor(j = 0; j != D[167].length; ++j) if(D[167][j].charCodeAt(0) !== 0xFFFD) { e[D[167][j]] = 42752 + j; d[42752 + j] = D[167][j];}\nD[168] = \"����������������������������������������������������������������ˊˋ˙–―‥‵℅℉↖↗↘↙∕∟∣≒≦≧⊿═║╒╓╔╕╖╗╘╙╚╛╜╝╞╟╠╡╢╣╤╥╦╧╨╩╪╫╬╭╮╯╰╱╲╳▁▂▃▄▅▆▇�█▉▊▋▌▍▎▏▓▔▕▼▽◢◣◤◥☉⊕〒〝〞�����������āáǎàēéěèīíǐìōóǒòūúǔùǖǘǚǜüêɑ�ńň�ɡ����ㄅㄆㄇㄈㄉㄊㄋㄌㄍㄎㄏㄐㄑㄒㄓㄔㄕㄖㄗㄘㄙㄚㄛㄜㄝㄞㄟㄠㄡㄢㄣㄤㄥㄦㄧㄨㄩ����������������������\".split(\"\");\nfor(j = 0; j != D[168].length; ++j) if(D[168][j].charCodeAt(0) !== 0xFFFD) { e[D[168][j]] = 43008 + j; d[43008 + j] = D[168][j];}\nD[169] = \"����������������������������������������������������������������〡〢〣〤〥〦〧〨〩㊣㎎㎏㎜㎝㎞㎡㏄㏎㏑㏒㏕︰¬¦�℡㈱�‐���ー゛゜ヽヾ〆ゝゞ﹉﹊﹋﹌﹍﹎﹏﹐﹑﹒﹔﹕﹖﹗﹙﹚﹛﹜﹝﹞﹟﹠﹡�﹢﹣﹤﹥﹦﹨﹩﹪﹫�������������〇�������������─━│┃┄┅┆┇┈┉┊┋┌┍┎┏┐┑┒┓└┕┖┗┘┙┚┛├┝┞┟┠┡┢┣┤┥┦┧┨┩┪┫┬┭┮┯┰┱┲┳┴┵┶┷┸┹┺┻┼┽┾┿╀╁╂╃╄╅╆╇╈╉╊╋����������������\".split(\"\");\nfor(j = 0; j != D[169].length; ++j) if(D[169][j].charCodeAt(0) !== 0xFFFD) { e[D[169][j]] = 43264 + j; d[43264 + j] = D[169][j];}\nD[170] = \"����������������������������������������������������������������狜狝狟狢狣狤狥狦狧狪狫狵狶狹狽狾狿猀猂猄猅猆猇猈猉猋猌猍猏猐猑猒猔猘猙猚猟猠猣猤猦猧猨猭猯猰猲猳猵猶猺猻猼猽獀獁獂獃獄獅獆獇獈�獉獊獋獌獎獏獑獓獔獕獖獘獙獚獛獜獝獞獟獡獢獣獤獥獦獧獨獩獪獫獮獰獱�����������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[170].length; ++j) if(D[170][j].charCodeAt(0) !== 0xFFFD) { e[D[170][j]] = 43520 + j; d[43520 + j] = D[170][j];}\nD[171] = \"����������������������������������������������������������������獲獳獴獵獶獷獸獹獺獻獼獽獿玀玁玂玃玅玆玈玊玌玍玏玐玒玓玔玕玗玘玙玚玜玝玞玠玡玣玤玥玦玧玨玪玬玭玱玴玵玶玸玹玼玽玾玿珁珃珄珅珆珇�珋珌珎珒珓珔珕珖珗珘珚珛珜珝珟珡珢珣珤珦珨珪珫珬珮珯珰珱珳珴珵珶珷�����������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[171].length; ++j) if(D[171][j].charCodeAt(0) !== 0xFFFD) { e[D[171][j]] = 43776 + j; d[43776 + j] = D[171][j];}\nD[172] = \"����������������������������������������������������������������珸珹珺珻珼珽現珿琀琁琂琄琇琈琋琌琍琎琑琒琓琔琕琖琗琘琙琜琝琞琟琠琡琣琤琧琩琫琭琯琱琲琷琸琹琺琻琽琾琿瑀瑂瑃瑄瑅瑆瑇瑈瑉瑊瑋瑌瑍�瑎瑏瑐瑑瑒瑓瑔瑖瑘瑝瑠瑡瑢瑣瑤瑥瑦瑧瑨瑩瑪瑫瑬瑮瑯瑱瑲瑳瑴瑵瑸瑹瑺�����������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[172].length; ++j) if(D[172][j].charCodeAt(0) !== 0xFFFD) { e[D[172][j]] = 44032 + j; d[44032 + j] = D[172][j];}\nD[173] = \"����������������������������������������������������������������瑻瑼瑽瑿璂璄璅璆璈璉璊璌璍璏璑璒璓璔璕璖璗璘璙璚璛璝璟璠璡璢璣璤璥璦璪璫璬璭璮璯環璱璲璳璴璵璶璷璸璹璻璼璽璾璿瓀瓁瓂瓃瓄瓅瓆瓇�瓈瓉瓊瓋瓌瓍瓎瓏瓐瓑瓓瓔瓕瓖瓗瓘瓙瓚瓛瓝瓟瓡瓥瓧瓨瓩瓪瓫瓬瓭瓰瓱瓲�����������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[173].length; ++j) if(D[173][j].charCodeAt(0) !== 0xFFFD) { e[D[173][j]] = 44288 + j; d[44288 + j] = D[173][j];}\nD[174] = \"����������������������������������������������������������������瓳瓵瓸瓹瓺瓻瓼瓽瓾甀甁甂甃甅甆甇甈甉甊甋甌甎甐甒甔甕甖甗甛甝甞甠甡產産甤甦甧甪甮甴甶甹甼甽甿畁畂畃畄畆畇畉畊畍畐畑畒畓畕畖畗畘�畝畞畟畠畡畢畣畤畧畨畩畫畬畭畮畯異畱畳畵當畷畺畻畼畽畾疀疁疂疄疅疇�����������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[174].length; ++j) if(D[174][j].charCodeAt(0) !== 0xFFFD) { e[D[174][j]] = 44544 + j; d[44544 + j] = D[174][j];}\nD[175] = \"����������������������������������������������������������������疈疉疊疌疍疎疐疓疕疘疛疜疞疢疦疧疨疩疪疭疶疷疺疻疿痀痁痆痋痌痎痏痐痑痓痗痙痚痜痝痟痠痡痥痩痬痭痮痯痲痳痵痶痷痸痺痻痽痾瘂瘄瘆瘇�瘈瘉瘋瘍瘎瘏瘑瘒瘓瘔瘖瘚瘜瘝瘞瘡瘣瘧瘨瘬瘮瘯瘱瘲瘶瘷瘹瘺瘻瘽癁療癄�����������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[175].length; ++j) if(D[175][j].charCodeAt(0) !== 0xFFFD) { e[D[175][j]] = 44800 + j; d[44800 + j] = D[175][j];}\nD[176] = \"����������������������������������������������������������������癅癆癇癈癉癊癋癎癏癐癑癒癓癕癗癘癙癚癛癝癟癠癡癢癤癥癦癧癨癩癪癬癭癮癰癱癲癳癴癵癶癷癹発發癿皀皁皃皅皉皊皌皍皏皐皒皔皕皗皘皚皛�皜皝皞皟皠皡皢皣皥皦皧皨皩皪皫皬皭皯皰皳皵皶皷皸皹皺皻皼皽皾盀盁盃啊阿埃挨哎唉哀皑癌蔼矮艾碍爱隘鞍氨安俺按暗岸胺案肮昂盎凹敖熬翱袄傲奥懊澳芭捌扒叭吧笆八疤巴拔跋靶把耙坝霸罢爸白柏百摆佰败拜稗斑班搬扳般颁板版扮拌伴瓣半办绊邦帮梆榜膀绑棒磅蚌镑傍谤苞胞包褒剥�\".split(\"\");\nfor(j = 0; j != D[176].length; ++j) if(D[176][j].charCodeAt(0) !== 0xFFFD) { e[D[176][j]] = 45056 + j; d[45056 + j] = D[176][j];}\nD[177] = \"����������������������������������������������������������������盄盇盉盋盌盓盕盙盚盜盝盞盠盡盢監盤盦盧盨盩盪盫盬盭盰盳盵盶盷盺盻盽盿眀眂眃眅眆眊県眎眏眐眑眒眓眔眕眖眗眘眛眜眝眞眡眣眤眥眧眪眫�眬眮眰眱眲眳眴眹眻眽眾眿睂睄睅睆睈睉睊睋睌睍睎睏睒睓睔睕睖睗睘睙睜薄雹保堡饱宝抱报暴豹鲍爆杯碑悲卑北辈背贝钡倍狈备惫焙被奔苯本笨崩绷甭泵蹦迸逼鼻比鄙笔彼碧蓖蔽毕毙毖币庇痹闭敝弊必辟壁臂避陛鞭边编贬扁便变卞辨辩辫遍标彪膘表鳖憋别瘪彬斌濒滨宾摈兵冰柄丙秉饼炳�\".split(\"\");\nfor(j = 0; j != D[177].length; ++j) if(D[177][j].charCodeAt(0) !== 0xFFFD) { e[D[177][j]] = 45312 + j; d[45312 + j] = D[177][j];}\nD[178] = \"����������������������������������������������������������������睝睞睟睠睤睧睩睪睭睮睯睰睱睲睳睴睵睶睷睸睺睻睼瞁瞂瞃瞆瞇瞈瞉瞊瞋瞏瞐瞓瞔瞕瞖瞗瞘瞙瞚瞛瞜瞝瞞瞡瞣瞤瞦瞨瞫瞭瞮瞯瞱瞲瞴瞶瞷瞸瞹瞺�瞼瞾矀矁矂矃矄矅矆矇矈矉矊矋矌矎矏矐矑矒矓矔矕矖矘矙矚矝矞矟矠矡矤病并玻菠播拨钵波博勃搏铂箔伯帛舶脖膊渤泊驳捕卜哺补埠不布步簿部怖擦猜裁材才财睬踩采彩菜蔡餐参蚕残惭惨灿苍舱仓沧藏操糙槽曹草厕策侧册测层蹭插叉茬茶查碴搽察岔差诧拆柴豺搀掺蝉馋谗缠铲产阐颤昌猖�\".split(\"\");\nfor(j = 0; j != D[178].length; ++j) if(D[178][j].charCodeAt(0) !== 0xFFFD) { e[D[178][j]] = 45568 + j; d[45568 + j] = D[178][j];}\nD[179] = \"����������������������������������������������������������������矦矨矪矯矰矱矲矴矵矷矹矺矻矼砃砄砅砆砇砈砊砋砎砏砐砓砕砙砛砞砠砡砢砤砨砪砫砮砯砱砲砳砵砶砽砿硁硂硃硄硆硈硉硊硋硍硏硑硓硔硘硙硚�硛硜硞硟硠硡硢硣硤硥硦硧硨硩硯硰硱硲硳硴硵硶硸硹硺硻硽硾硿碀碁碂碃场尝常长偿肠厂敞畅唱倡超抄钞朝嘲潮巢吵炒车扯撤掣彻澈郴臣辰尘晨忱沉陈趁衬撑称城橙成呈乘程惩澄诚承逞骋秤吃痴持匙池迟弛驰耻齿侈尺赤翅斥炽充冲虫崇宠抽酬畴踌稠愁筹仇绸瞅丑臭初出橱厨躇锄雏滁除楚�\".split(\"\");\nfor(j = 0; j != D[179].length; ++j) if(D[179][j].charCodeAt(0) !== 0xFFFD) { e[D[179][j]] = 45824 + j; d[45824 + j] = D[179][j];}\nD[180] = \"����������������������������������������������������������������碄碅碆碈碊碋碏碐碒碔碕碖碙碝碞碠碢碤碦碨碩碪碫碬碭碮碯碵碶碷碸確碻碼碽碿磀磂磃磄磆磇磈磌磍磎磏磑磒磓磖磗磘磚磛磜磝磞磟磠磡磢磣�磤磥磦磧磩磪磫磭磮磯磰磱磳磵磶磸磹磻磼磽磾磿礀礂礃礄礆礇礈礉礊礋礌础储矗搐触处揣川穿椽传船喘串疮窗幢床闯创吹炊捶锤垂春椿醇唇淳纯蠢戳绰疵茨磁雌辞慈瓷词此刺赐次聪葱囱匆从丛凑粗醋簇促蹿篡窜摧崔催脆瘁粹淬翠村存寸磋撮搓措挫错搭达答瘩打大呆歹傣戴带殆代贷袋待逮�\".split(\"\");\nfor(j = 0; j != D[180].length; ++j) if(D[180][j].charCodeAt(0) !== 0xFFFD) { e[D[180][j]] = 46080 + j; d[46080 + j] = D[180][j];}\nD[181] = \"����������������������������������������������������������������礍礎礏礐礑礒礔礕礖礗礘礙礚礛礜礝礟礠礡礢礣礥礦礧礨礩礪礫礬礭礮礯礰礱礲礳礵礶礷礸礹礽礿祂祃祄祅祇祊祋祌祍祎祏祐祑祒祔祕祘祙祡祣�祤祦祩祪祫祬祮祰祱祲祳祴祵祶祹祻祼祽祾祿禂禃禆禇禈禉禋禌禍禎禐禑禒怠耽担丹单郸掸胆旦氮但惮淡诞弹蛋当挡党荡档刀捣蹈倒岛祷导到稻悼道盗德得的蹬灯登等瞪凳邓堤低滴迪敌笛狄涤翟嫡抵底地蒂第帝弟递缔颠掂滇碘点典靛垫电佃甸店惦奠淀殿碉叼雕凋刁掉吊钓调跌爹碟蝶迭谍叠�\".split(\"\");\nfor(j = 0; j != D[181].length; ++j) if(D[181][j].charCodeAt(0) !== 0xFFFD) { e[D[181][j]] = 46336 + j; d[46336 + j] = D[181][j];}\nD[182] = \"����������������������������������������������������������������禓禔禕禖禗禘禙禛禜禝禞禟禠禡禢禣禤禥禦禨禩禪禫禬禭禮禯禰禱禲禴禵禶禷禸禼禿秂秄秅秇秈秊秌秎秏秐秓秔秖秗秙秚秛秜秝秞秠秡秢秥秨秪�秬秮秱秲秳秴秵秶秷秹秺秼秾秿稁稄稅稇稈稉稊稌稏稐稑稒稓稕稖稘稙稛稜丁盯叮钉顶鼎锭定订丢东冬董懂动栋侗恫冻洞兜抖斗陡豆逗痘都督毒犊独读堵睹赌杜镀肚度渡妒端短锻段断缎堆兑队对墩吨蹲敦顿囤钝盾遁掇哆多夺垛躲朵跺舵剁惰堕蛾峨鹅俄额讹娥恶厄扼遏鄂饿恩而儿耳尔饵洱二�\".split(\"\");\nfor(j = 0; j != D[182].length; ++j) if(D[182][j].charCodeAt(0) !== 0xFFFD) { e[D[182][j]] = 46592 + j; d[46592 + j] = D[182][j];}\nD[183] = \"����������������������������������������������������������������稝稟稡稢稤稥稦稧稨稩稪稫稬稭種稯稰稱稲稴稵稶稸稺稾穀穁穂穃穄穅穇穈穉穊穋穌積穎穏穐穒穓穔穕穖穘穙穚穛穜穝穞穟穠穡穢穣穤穥穦穧穨�穩穪穫穬穭穮穯穱穲穳穵穻穼穽穾窂窅窇窉窊窋窌窎窏窐窓窔窙窚窛窞窡窢贰发罚筏伐乏阀法珐藩帆番翻樊矾钒繁凡烦反返范贩犯饭泛坊芳方肪房防妨仿访纺放菲非啡飞肥匪诽吠肺废沸费芬酚吩氛分纷坟焚汾粉奋份忿愤粪丰封枫蜂峰锋风疯烽逢冯缝讽奉凤佛否夫敷肤孵扶拂辐幅氟符伏俘服�\".split(\"\");\nfor(j = 0; j != D[183].length; ++j) if(D[183][j].charCodeAt(0) !== 0xFFFD) { e[D[183][j]] = 46848 + j; d[46848 + j] = D[183][j];}\nD[184] = \"����������������������������������������������������������������窣窤窧窩窪窫窮窯窰窱窲窴窵窶窷窸窹窺窻窼窽窾竀竁竂竃竄竅竆竇竈竉竊竌竍竎竏竐竑竒竓竔竕竗竘竚竛竜竝竡竢竤竧竨竩竪竫竬竮竰竱竲竳�竴竵競竷竸竻竼竾笀笁笂笅笇笉笌笍笎笐笒笓笖笗笘笚笜笝笟笡笢笣笧笩笭浮涪福袱弗甫抚辅俯釜斧脯腑府腐赴副覆赋复傅付阜父腹负富讣附妇缚咐噶嘎该改概钙盖溉干甘杆柑竿肝赶感秆敢赣冈刚钢缸肛纲岗港杠篙皋高膏羔糕搞镐稿告哥歌搁戈鸽胳疙割革葛格蛤阁隔铬个各给根跟耕更庚羹�\".split(\"\");\nfor(j = 0; j != D[184].length; ++j) if(D[184][j].charCodeAt(0) !== 0xFFFD) { e[D[184][j]] = 47104 + j; d[47104 + j] = D[184][j];}\nD[185] = \"����������������������������������������������������������������笯笰笲笴笵笶笷笹笻笽笿筀筁筂筃筄筆筈筊筍筎筓筕筗筙筜筞筟筡筣筤筥筦筧筨筩筪筫筬筭筯筰筳筴筶筸筺筼筽筿箁箂箃箄箆箇箈箉箊箋箌箎箏�箑箒箓箖箘箙箚箛箞箟箠箣箤箥箮箯箰箲箳箵箶箷箹箺箻箼箽箾箿節篂篃範埂耿梗工攻功恭龚供躬公宫弓巩汞拱贡共钩勾沟苟狗垢构购够辜菇咕箍估沽孤姑鼓古蛊骨谷股故顾固雇刮瓜剐寡挂褂乖拐怪棺关官冠观管馆罐惯灌贯光广逛瑰规圭硅归龟闺轨鬼诡癸桂柜跪贵刽辊滚棍锅郭国果裹过哈�\".split(\"\");\nfor(j = 0; j != D[185].length; ++j) if(D[185][j].charCodeAt(0) !== 0xFFFD) { e[D[185][j]] = 47360 + j; d[47360 + j] = D[185][j];}\nD[186] = \"����������������������������������������������������������������篅篈築篊篋篍篎篏篐篒篔篕篖篗篘篛篜篞篟篠篢篣篤篧篨篩篫篬篭篯篰篲篳篴篵篶篸篹篺篻篽篿簀簁簂簃簄簅簆簈簉簊簍簎簐簑簒簓簔簕簗簘簙�簚簛簜簝簞簠簡簢簣簤簥簨簩簫簬簭簮簯簰簱簲簳簴簵簶簷簹簺簻簼簽簾籂骸孩海氦亥害骇酣憨邯韩含涵寒函喊罕翰撼捍旱憾悍焊汗汉夯杭航壕嚎豪毫郝好耗号浩呵喝荷菏核禾和何合盒貉阂河涸赫褐鹤贺嘿黑痕很狠恨哼亨横衡恒轰哄烘虹鸿洪宏弘红喉侯猴吼厚候后呼乎忽瑚壶葫胡蝴狐糊湖�\".split(\"\");\nfor(j = 0; j != D[186].length; ++j) if(D[186][j].charCodeAt(0) !== 0xFFFD) { e[D[186][j]] = 47616 + j; d[47616 + j] = D[186][j];}\nD[187] = \"����������������������������������������������������������������籃籄籅籆籇籈籉籊籋籌籎籏籐籑籒籓籔籕籖籗籘籙籚籛籜籝籞籟籠籡籢籣籤籥籦籧籨籩籪籫籬籭籮籯籰籱籲籵籶籷籸籹籺籾籿粀粁粂粃粄粅粆粇�粈粊粋粌粍粎粏粐粓粔粖粙粚粛粠粡粣粦粧粨粩粫粬粭粯粰粴粵粶粷粸粺粻弧虎唬护互沪户花哗华猾滑画划化话槐徊怀淮坏欢环桓还缓换患唤痪豢焕涣宦幻荒慌黄磺蝗簧皇凰惶煌晃幌恍谎灰挥辉徽恢蛔回毁悔慧卉惠晦贿秽会烩汇讳诲绘荤昏婚魂浑混豁活伙火获或惑霍货祸击圾基机畸稽积箕�\".split(\"\");\nfor(j = 0; j != D[187].length; ++j) if(D[187][j].charCodeAt(0) !== 0xFFFD) { e[D[187][j]] = 47872 + j; d[47872 + j] = D[187][j];}\nD[188] = \"����������������������������������������������������������������粿糀糂糃糄糆糉糋糎糏糐糑糒糓糔糘糚糛糝糞糡糢糣糤糥糦糧糩糪糫糬糭糮糰糱糲糳糴糵糶糷糹糺糼糽糾糿紀紁紂紃約紅紆紇紈紉紋紌納紎紏紐�紑紒紓純紕紖紗紘紙級紛紜紝紞紟紡紣紤紥紦紨紩紪紬紭紮細紱紲紳紴紵紶肌饥迹激讥鸡姬绩缉吉极棘辑籍集及急疾汲即嫉级挤几脊己蓟技冀季伎祭剂悸济寄寂计记既忌际妓继纪嘉枷夹佳家加荚颊贾甲钾假稼价架驾嫁歼监坚尖笺间煎兼肩艰奸缄茧检柬碱硷拣捡简俭剪减荐槛鉴践贱见键箭件�\".split(\"\");\nfor(j = 0; j != D[188].length; ++j) if(D[188][j].charCodeAt(0) !== 0xFFFD) { e[D[188][j]] = 48128 + j; d[48128 + j] = D[188][j];}\nD[189] = \"����������������������������������������������������������������紷紸紹紺紻紼紽紾紿絀絁終絃組絅絆絇絈絉絊絋経絍絎絏結絑絒絓絔絕絖絗絘絙絚絛絜絝絞絟絠絡絢絣絤絥給絧絨絩絪絫絬絭絯絰統絲絳絴絵絶�絸絹絺絻絼絽絾絿綀綁綂綃綄綅綆綇綈綉綊綋綌綍綎綏綐綑綒經綔綕綖綗綘健舰剑饯渐溅涧建僵姜将浆江疆蒋桨奖讲匠酱降蕉椒礁焦胶交郊浇骄娇嚼搅铰矫侥脚狡角饺缴绞剿教酵轿较叫窖揭接皆秸街阶截劫节桔杰捷睫竭洁结解姐戒藉芥界借介疥诫届巾筋斤金今津襟紧锦仅谨进靳晋禁近烬浸�\".split(\"\");\nfor(j = 0; j != D[189].length; ++j) if(D[189][j].charCodeAt(0) !== 0xFFFD) { e[D[189][j]] = 48384 + j; d[48384 + j] = D[189][j];}\nD[190] = \"����������������������������������������������������������������継続綛綜綝綞綟綠綡綢綣綤綥綧綨綩綪綫綬維綯綰綱網綳綴綵綶綷綸綹綺綻綼綽綾綿緀緁緂緃緄緅緆緇緈緉緊緋緌緍緎総緐緑緒緓緔緕緖緗緘緙�線緛緜緝緞緟締緡緢緣緤緥緦緧編緩緪緫緬緭緮緯緰緱緲緳練緵緶緷緸緹緺尽劲荆兢茎睛晶鲸京惊精粳经井警景颈静境敬镜径痉靖竟竞净炯窘揪究纠玖韭久灸九酒厩救旧臼舅咎就疚鞠拘狙疽居驹菊局咀矩举沮聚拒据巨具距踞锯俱句惧炬剧捐鹃娟倦眷卷绢撅攫抉掘倔爵觉决诀绝均菌钧军君峻�\".split(\"\");\nfor(j = 0; j != D[190].length; ++j) if(D[190][j].charCodeAt(0) !== 0xFFFD) { e[D[190][j]] = 48640 + j; d[48640 + j] = D[190][j];}\nD[191] = \"����������������������������������������������������������������緻緼緽緾緿縀縁縂縃縄縅縆縇縈縉縊縋縌縍縎縏縐縑縒縓縔縕縖縗縘縙縚縛縜縝縞縟縠縡縢縣縤縥縦縧縨縩縪縫縬縭縮縯縰縱縲縳縴縵縶縷縸縹�縺縼總績縿繀繂繃繄繅繆繈繉繊繋繌繍繎繏繐繑繒繓織繕繖繗繘繙繚繛繜繝俊竣浚郡骏喀咖卡咯开揩楷凯慨刊堪勘坎砍看康慷糠扛抗亢炕考拷烤靠坷苛柯棵磕颗科壳咳可渴克刻客课肯啃垦恳坑吭空恐孔控抠口扣寇枯哭窟苦酷库裤夸垮挎跨胯块筷侩快宽款匡筐狂框矿眶旷况亏盔岿窥葵奎魁傀�\".split(\"\");\nfor(j = 0; j != D[191].length; ++j) if(D[191][j].charCodeAt(0) !== 0xFFFD) { e[D[191][j]] = 48896 + j; d[48896 + j] = D[191][j];}\nD[192] = \"����������������������������������������������������������������繞繟繠繡繢繣繤繥繦繧繨繩繪繫繬繭繮繯繰繱繲繳繴繵繶繷繸繹繺繻繼繽繾繿纀纁纃纄纅纆纇纈纉纊纋續纍纎纏纐纑纒纓纔纕纖纗纘纙纚纜纝纞�纮纴纻纼绖绤绬绹缊缐缞缷缹缻缼缽缾缿罀罁罃罆罇罈罉罊罋罌罍罎罏罒罓馈愧溃坤昆捆困括扩廓阔垃拉喇蜡腊辣啦莱来赖蓝婪栏拦篮阑兰澜谰揽览懒缆烂滥琅榔狼廊郎朗浪捞劳牢老佬姥酪烙涝勒乐雷镭蕾磊累儡垒擂肋类泪棱楞冷厘梨犁黎篱狸离漓理李里鲤礼莉荔吏栗丽厉励砾历利傈例俐�\".split(\"\");\nfor(j = 0; j != D[192].length; ++j) if(D[192][j].charCodeAt(0) !== 0xFFFD) { e[D[192][j]] = 49152 + j; d[49152 + j] = D[192][j];}\nD[193] = \"����������������������������������������������������������������罖罙罛罜罝罞罠罣罤罥罦罧罫罬罭罯罰罳罵罶罷罸罺罻罼罽罿羀羂羃羄羅羆羇羈羉羋羍羏羐羑羒羓羕羖羗羘羙羛羜羠羢羣羥羦羨義羪羫羬羭羮羱�羳羴羵羶羷羺羻羾翀翂翃翄翆翇翈翉翋翍翏翐翑習翓翖翗翙翚翛翜翝翞翢翣痢立粒沥隶力璃哩俩联莲连镰廉怜涟帘敛脸链恋炼练粮凉梁粱良两辆量晾亮谅撩聊僚疗燎寥辽潦了撂镣廖料列裂烈劣猎琳林磷霖临邻鳞淋凛赁吝拎玲菱零龄铃伶羚凌灵陵岭领另令溜琉榴硫馏留刘瘤流柳六龙聋咙笼窿�\".split(\"\");\nfor(j = 0; j != D[193].length; ++j) if(D[193][j].charCodeAt(0) !== 0xFFFD) { e[D[193][j]] = 49408 + j; d[49408 + j] = D[193][j];}\nD[194] = \"����������������������������������������������������������������翤翧翨翪翫翬翭翯翲翴翵翶翷翸翹翺翽翾翿耂耇耈耉耊耎耏耑耓耚耛耝耞耟耡耣耤耫耬耭耮耯耰耲耴耹耺耼耾聀聁聄聅聇聈聉聎聏聐聑聓聕聖聗�聙聛聜聝聞聟聠聡聢聣聤聥聦聧聨聫聬聭聮聯聰聲聳聴聵聶職聸聹聺聻聼聽隆垄拢陇楼娄搂篓漏陋芦卢颅庐炉掳卤虏鲁麓碌露路赂鹿潞禄录陆戮驴吕铝侣旅履屡缕虑氯律率滤绿峦挛孪滦卵乱掠略抡轮伦仑沦纶论萝螺罗逻锣箩骡裸落洛骆络妈麻玛码蚂马骂嘛吗埋买麦卖迈脉瞒馒蛮满蔓曼慢漫�\".split(\"\");\nfor(j = 0; j != D[194].length; ++j) if(D[194][j].charCodeAt(0) !== 0xFFFD) { e[D[194][j]] = 49664 + j; d[49664 + j] = D[194][j];}\nD[195] = \"����������������������������������������������������������������聾肁肂肅肈肊肍肎肏肐肑肒肔肕肗肙肞肣肦肧肨肬肰肳肵肶肸肹肻胅胇胈胉胊胋胏胐胑胒胓胔胕胘胟胠胢胣胦胮胵胷胹胻胾胿脀脁脃脄脅脇脈脋�脌脕脗脙脛脜脝脟脠脡脢脣脤脥脦脧脨脩脪脫脭脮脰脳脴脵脷脹脺脻脼脽脿谩芒茫盲氓忙莽猫茅锚毛矛铆卯茂冒帽貌贸么玫枚梅酶霉煤没眉媒镁每美昧寐妹媚门闷们萌蒙檬盟锰猛梦孟眯醚靡糜迷谜弥米秘觅泌蜜密幂棉眠绵冕免勉娩缅面苗描瞄藐秒渺庙妙蔑灭民抿皿敏悯闽明螟鸣铭名命谬摸�\".split(\"\");\nfor(j = 0; j != D[195].length; ++j) if(D[195][j].charCodeAt(0) !== 0xFFFD) { e[D[195][j]] = 49920 + j; d[49920 + j] = D[195][j];}\nD[196] = \"����������������������������������������������������������������腀腁腂腃腄腅腇腉腍腎腏腒腖腗腘腛腜腝腞腟腡腢腣腤腦腨腪腫腬腯腲腳腵腶腷腸膁膃膄膅膆膇膉膋膌膍膎膐膒膓膔膕膖膗膙膚膞膟膠膡膢膤膥�膧膩膫膬膭膮膯膰膱膲膴膵膶膷膸膹膼膽膾膿臄臅臇臈臉臋臍臎臏臐臑臒臓摹蘑模膜磨摩魔抹末莫墨默沫漠寞陌谋牟某拇牡亩姆母墓暮幕募慕木目睦牧穆拿哪呐钠那娜纳氖乃奶耐奈南男难囊挠脑恼闹淖呢馁内嫩能妮霓倪泥尼拟你匿腻逆溺蔫拈年碾撵捻念娘酿鸟尿捏聂孽啮镊镍涅您柠狞凝宁�\".split(\"\");\nfor(j = 0; j != D[196].length; ++j) if(D[196][j].charCodeAt(0) !== 0xFFFD) { e[D[196][j]] = 50176 + j; d[50176 + j] = D[196][j];}\nD[197] = \"����������������������������������������������������������������臔臕臖臗臘臙臚臛臜臝臞臟臠臡臢臤臥臦臨臩臫臮臯臰臱臲臵臶臷臸臹臺臽臿舃與興舉舊舋舎舏舑舓舕舖舗舘舙舚舝舠舤舥舦舧舩舮舲舺舼舽舿�艀艁艂艃艅艆艈艊艌艍艎艐艑艒艓艔艕艖艗艙艛艜艝艞艠艡艢艣艤艥艦艧艩拧泞牛扭钮纽脓浓农弄奴努怒女暖虐疟挪懦糯诺哦欧鸥殴藕呕偶沤啪趴爬帕怕琶拍排牌徘湃派攀潘盘磐盼畔判叛乓庞旁耪胖抛咆刨炮袍跑泡呸胚培裴赔陪配佩沛喷盆砰抨烹澎彭蓬棚硼篷膨朋鹏捧碰坯砒霹批披劈琵毗�\".split(\"\");\nfor(j = 0; j != D[197].length; ++j) if(D[197][j].charCodeAt(0) !== 0xFFFD) { e[D[197][j]] = 50432 + j; d[50432 + j] = D[197][j];}\nD[198] = \"����������������������������������������������������������������艪艫艬艭艱艵艶艷艸艻艼芀芁芃芅芆芇芉芌芐芓芔芕芖芚芛芞芠芢芣芧芲芵芶芺芻芼芿苀苂苃苅苆苉苐苖苙苚苝苢苧苨苩苪苬苭苮苰苲苳苵苶苸�苺苼苽苾苿茀茊茋茍茐茒茓茖茘茙茝茞茟茠茡茢茣茤茥茦茩茪茮茰茲茷茻茽啤脾疲皮匹痞僻屁譬篇偏片骗飘漂瓢票撇瞥拼频贫品聘乒坪苹萍平凭瓶评屏坡泼颇婆破魄迫粕剖扑铺仆莆葡菩蒲埔朴圃普浦谱曝瀑期欺栖戚妻七凄漆柒沏其棋奇歧畦崎脐齐旗祈祁骑起岂乞企启契砌器气迄弃汽泣讫掐�\".split(\"\");\nfor(j = 0; j != D[198].length; ++j) if(D[198][j].charCodeAt(0) !== 0xFFFD) { e[D[198][j]] = 50688 + j; d[50688 + j] = D[198][j];}\nD[199] = \"����������������������������������������������������������������茾茿荁荂荄荅荈荊荋荌荍荎荓荕荖荗荘荙荝荢荰荱荲荳荴荵荶荹荺荾荿莀莁莂莃莄莇莈莊莋莌莍莏莐莑莔莕莖莗莙莚莝莟莡莢莣莤莥莦莧莬莭莮�莯莵莻莾莿菂菃菄菆菈菉菋菍菎菐菑菒菓菕菗菙菚菛菞菢菣菤菦菧菨菫菬菭恰洽牵扦钎铅千迁签仟谦乾黔钱钳前潜遣浅谴堑嵌欠歉枪呛腔羌墙蔷强抢橇锹敲悄桥瞧乔侨巧鞘撬翘峭俏窍切茄且怯窃钦侵亲秦琴勤芹擒禽寝沁青轻氢倾卿清擎晴氰情顷请庆琼穷秋丘邱球求囚酋泅趋区蛆曲躯屈驱渠�\".split(\"\");\nfor(j = 0; j != D[199].length; ++j) if(D[199][j].charCodeAt(0) !== 0xFFFD) { e[D[199][j]] = 50944 + j; d[50944 + j] = D[199][j];}\nD[200] = \"����������������������������������������������������������������菮華菳菴菵菶菷菺菻菼菾菿萀萂萅萇萈萉萊萐萒萓萔萕萖萗萙萚萛萞萟萠萡萢萣萩萪萫萬萭萮萯萰萲萳萴萵萶萷萹萺萻萾萿葀葁葂葃葄葅葇葈葉�葊葋葌葍葎葏葐葒葓葔葕葖葘葝葞葟葠葢葤葥葦葧葨葪葮葯葰葲葴葷葹葻葼取娶龋趣去圈颧权醛泉全痊拳犬券劝缺炔瘸却鹊榷确雀裙群然燃冉染瓤壤攘嚷让饶扰绕惹热壬仁人忍韧任认刃妊纫扔仍日戎茸蓉荣融熔溶容绒冗揉柔肉茹蠕儒孺如辱乳汝入褥软阮蕊瑞锐闰润若弱撒洒萨腮鳃塞赛三叁�\".split(\"\");\nfor(j = 0; j != D[200].length; ++j) if(D[200][j].charCodeAt(0) !== 0xFFFD) { e[D[200][j]] = 51200 + j; d[51200 + j] = D[200][j];}\nD[201] = \"����������������������������������������������������������������葽葾葿蒀蒁蒃蒄蒅蒆蒊蒍蒏蒐蒑蒒蒓蒔蒕蒖蒘蒚蒛蒝蒞蒟蒠蒢蒣蒤蒥蒦蒧蒨蒩蒪蒫蒬蒭蒮蒰蒱蒳蒵蒶蒷蒻蒼蒾蓀蓂蓃蓅蓆蓇蓈蓋蓌蓎蓏蓒蓔蓕蓗�蓘蓙蓚蓛蓜蓞蓡蓢蓤蓧蓨蓩蓪蓫蓭蓮蓯蓱蓲蓳蓴蓵蓶蓷蓸蓹蓺蓻蓽蓾蔀蔁蔂伞散桑嗓丧搔骚扫嫂瑟色涩森僧莎砂杀刹沙纱傻啥煞筛晒珊苫杉山删煽衫闪陕擅赡膳善汕扇缮墒伤商赏晌上尚裳梢捎稍烧芍勺韶少哨邵绍奢赊蛇舌舍赦摄射慑涉社设砷申呻伸身深娠绅神沈审婶甚肾慎渗声生甥牲升绳�\".split(\"\");\nfor(j = 0; j != D[201].length; ++j) if(D[201][j].charCodeAt(0) !== 0xFFFD) { e[D[201][j]] = 51456 + j; d[51456 + j] = D[201][j];}\nD[202] = \"����������������������������������������������������������������蔃蔄蔅蔆蔇蔈蔉蔊蔋蔍蔎蔏蔐蔒蔔蔕蔖蔘蔙蔛蔜蔝蔞蔠蔢蔣蔤蔥蔦蔧蔨蔩蔪蔭蔮蔯蔰蔱蔲蔳蔴蔵蔶蔾蔿蕀蕁蕂蕄蕅蕆蕇蕋蕌蕍蕎蕏蕐蕑蕒蕓蕔蕕�蕗蕘蕚蕛蕜蕝蕟蕠蕡蕢蕣蕥蕦蕧蕩蕪蕫蕬蕭蕮蕯蕰蕱蕳蕵蕶蕷蕸蕼蕽蕿薀薁省盛剩胜圣师失狮施湿诗尸虱十石拾时什食蚀实识史矢使屎驶始式示士世柿事拭誓逝势是嗜噬适仕侍释饰氏市恃室视试收手首守寿授售受瘦兽蔬枢梳殊抒输叔舒淑疏书赎孰熟薯暑曙署蜀黍鼠属术述树束戍竖墅庶数漱�\".split(\"\");\nfor(j = 0; j != D[202].length; ++j) if(D[202][j].charCodeAt(0) !== 0xFFFD) { e[D[202][j]] = 51712 + j; d[51712 + j] = D[202][j];}\nD[203] = \"����������������������������������������������������������������薂薃薆薈薉薊薋薌薍薎薐薑薒薓薔薕薖薗薘薙薚薝薞薟薠薡薢薣薥薦薧薩薫薬薭薱薲薳薴薵薶薸薺薻薼薽薾薿藀藂藃藄藅藆藇藈藊藋藌藍藎藑藒�藔藖藗藘藙藚藛藝藞藟藠藡藢藣藥藦藧藨藪藫藬藭藮藯藰藱藲藳藴藵藶藷藸恕刷耍摔衰甩帅栓拴霜双爽谁水睡税吮瞬顺舜说硕朔烁斯撕嘶思私司丝死肆寺嗣四伺似饲巳松耸怂颂送宋讼诵搜艘擞嗽苏酥俗素速粟僳塑溯宿诉肃酸蒜算虽隋随绥髓碎岁穗遂隧祟孙损笋蓑梭唆缩琐索锁所塌他它她塔�\".split(\"\");\nfor(j = 0; j != D[203].length; ++j) if(D[203][j].charCodeAt(0) !== 0xFFFD) { e[D[203][j]] = 51968 + j; d[51968 + j] = D[203][j];}\nD[204] = \"����������������������������������������������������������������藹藺藼藽藾蘀蘁蘂蘃蘄蘆蘇蘈蘉蘊蘋蘌蘍蘎蘏蘐蘒蘓蘔蘕蘗蘘蘙蘚蘛蘜蘝蘞蘟蘠蘡蘢蘣蘤蘥蘦蘨蘪蘫蘬蘭蘮蘯蘰蘱蘲蘳蘴蘵蘶蘷蘹蘺蘻蘽蘾蘿虀�虁虂虃虄虅虆虇虈虉虊虋虌虒虓處虖虗虘虙虛虜虝號虠虡虣虤虥虦虧虨虩虪獭挞蹋踏胎苔抬台泰酞太态汰坍摊贪瘫滩坛檀痰潭谭谈坦毯袒碳探叹炭汤塘搪堂棠膛唐糖倘躺淌趟烫掏涛滔绦萄桃逃淘陶讨套特藤腾疼誊梯剔踢锑提题蹄啼体替嚏惕涕剃屉天添填田甜恬舔腆挑条迢眺跳贴铁帖厅听烃�\".split(\"\");\nfor(j = 0; j != D[204].length; ++j) if(D[204][j].charCodeAt(0) !== 0xFFFD) { e[D[204][j]] = 52224 + j; d[52224 + j] = D[204][j];}\nD[205] = \"����������������������������������������������������������������虭虯虰虲虳虴虵虶虷虸蚃蚄蚅蚆蚇蚈蚉蚎蚏蚐蚑蚒蚔蚖蚗蚘蚙蚚蚛蚞蚟蚠蚡蚢蚥蚦蚫蚭蚮蚲蚳蚷蚸蚹蚻蚼蚽蚾蚿蛁蛂蛃蛅蛈蛌蛍蛒蛓蛕蛖蛗蛚蛜�蛝蛠蛡蛢蛣蛥蛦蛧蛨蛪蛫蛬蛯蛵蛶蛷蛺蛻蛼蛽蛿蜁蜄蜅蜆蜋蜌蜎蜏蜐蜑蜔蜖汀廷停亭庭挺艇通桐酮瞳同铜彤童桶捅筒统痛偷投头透凸秃突图徒途涂屠土吐兔湍团推颓腿蜕褪退吞屯臀拖托脱鸵陀驮驼椭妥拓唾挖哇蛙洼娃瓦袜歪外豌弯湾玩顽丸烷完碗挽晚皖惋宛婉万腕汪王亡枉网往旺望忘妄威�\".split(\"\");\nfor(j = 0; j != D[205].length; ++j) if(D[205][j].charCodeAt(0) !== 0xFFFD) { e[D[205][j]] = 52480 + j; d[52480 + j] = D[205][j];}\nD[206] = \"����������������������������������������������������������������蜙蜛蜝蜟蜠蜤蜦蜧蜨蜪蜫蜬蜭蜯蜰蜲蜳蜵蜶蜸蜹蜺蜼蜽蝀蝁蝂蝃蝄蝅蝆蝊蝋蝍蝏蝐蝑蝒蝔蝕蝖蝘蝚蝛蝜蝝蝞蝟蝡蝢蝦蝧蝨蝩蝪蝫蝬蝭蝯蝱蝲蝳蝵�蝷蝸蝹蝺蝿螀螁螄螆螇螉螊螌螎螏螐螑螒螔螕螖螘螙螚螛螜螝螞螠螡螢螣螤巍微危韦违桅围唯惟为潍维苇萎委伟伪尾纬未蔚味畏胃喂魏位渭谓尉慰卫瘟温蚊文闻纹吻稳紊问嗡翁瓮挝蜗涡窝我斡卧握沃巫呜钨乌污诬屋无芜梧吾吴毋武五捂午舞伍侮坞戊雾晤物勿务悟误昔熙析西硒矽晰嘻吸锡牺�\".split(\"\");\nfor(j = 0; j != D[206].length; ++j) if(D[206][j].charCodeAt(0) !== 0xFFFD) { e[D[206][j]] = 52736 + j; d[52736 + j] = D[206][j];}\nD[207] = \"����������������������������������������������������������������螥螦螧螩螪螮螰螱螲螴螶螷螸螹螻螼螾螿蟁蟂蟃蟄蟅蟇蟈蟉蟌蟍蟎蟏蟐蟔蟕蟖蟗蟘蟙蟚蟜蟝蟞蟟蟡蟢蟣蟤蟦蟧蟨蟩蟫蟬蟭蟯蟰蟱蟲蟳蟴蟵蟶蟷蟸�蟺蟻蟼蟽蟿蠀蠁蠂蠄蠅蠆蠇蠈蠉蠋蠌蠍蠎蠏蠐蠑蠒蠔蠗蠘蠙蠚蠜蠝蠞蠟蠠蠣稀息希悉膝夕惜熄烯溪汐犀檄袭席习媳喜铣洗系隙戏细瞎虾匣霞辖暇峡侠狭下厦夏吓掀锨先仙鲜纤咸贤衔舷闲涎弦嫌显险现献县腺馅羡宪陷限线相厢镶香箱襄湘乡翔祥详想响享项巷橡像向象萧硝霄削哮嚣销消宵淆晓�\".split(\"\");\nfor(j = 0; j != D[207].length; ++j) if(D[207][j].charCodeAt(0) !== 0xFFFD) { e[D[207][j]] = 52992 + j; d[52992 + j] = D[207][j];}\nD[208] = \"����������������������������������������������������������������蠤蠥蠦蠧蠨蠩蠪蠫蠬蠭蠮蠯蠰蠱蠳蠴蠵蠶蠷蠸蠺蠻蠽蠾蠿衁衂衃衆衇衈衉衊衋衎衏衐衑衒術衕衖衘衚衛衜衝衞衟衠衦衧衪衭衯衱衳衴衵衶衸衹衺�衻衼袀袃袆袇袉袊袌袎袏袐袑袓袔袕袗袘袙袚袛袝袞袟袠袡袣袥袦袧袨袩袪小孝校肖啸笑效楔些歇蝎鞋协挟携邪斜胁谐写械卸蟹懈泄泻谢屑薪芯锌欣辛新忻心信衅星腥猩惺兴刑型形邢行醒幸杏性姓兄凶胸匈汹雄熊休修羞朽嗅锈秀袖绣墟戌需虚嘘须徐许蓄酗叙旭序畜恤絮婿绪续轩喧宣悬旋玄�\".split(\"\");\nfor(j = 0; j != D[208].length; ++j) if(D[208][j].charCodeAt(0) !== 0xFFFD) { e[D[208][j]] = 53248 + j; d[53248 + j] = D[208][j];}\nD[209] = \"����������������������������������������������������������������袬袮袯袰袲袳袴袵袶袸袹袺袻袽袾袿裀裃裄裇裈裊裋裌裍裏裐裑裓裖裗裚裛補裝裞裠裡裦裧裩裪裫裬裭裮裯裲裵裶裷裺裻製裿褀褁褃褄褅褆複褈�褉褋褌褍褎褏褑褔褕褖褗褘褜褝褞褟褠褢褣褤褦褧褨褩褬褭褮褯褱褲褳褵褷选癣眩绚靴薛学穴雪血勋熏循旬询寻驯巡殉汛训讯逊迅压押鸦鸭呀丫芽牙蚜崖衙涯雅哑亚讶焉咽阉烟淹盐严研蜒岩延言颜阎炎沿奄掩眼衍演艳堰燕厌砚雁唁彦焰宴谚验殃央鸯秧杨扬佯疡羊洋阳氧仰痒养样漾邀腰妖瑶�\".split(\"\");\nfor(j = 0; j != D[209].length; ++j) if(D[209][j].charCodeAt(0) !== 0xFFFD) { e[D[209][j]] = 53504 + j; d[53504 + j] = D[209][j];}\nD[210] = \"����������������������������������������������������������������褸褹褺褻褼褽褾褿襀襂襃襅襆襇襈襉襊襋襌襍襎襏襐襑襒襓襔襕襖襗襘襙襚襛襜襝襠襡襢襣襤襥襧襨襩襪襫襬襭襮襯襰襱襲襳襴襵襶襷襸襹襺襼�襽襾覀覂覄覅覇覈覉覊見覌覍覎規覐覑覒覓覔覕視覗覘覙覚覛覜覝覞覟覠覡摇尧遥窑谣姚咬舀药要耀椰噎耶爷野冶也页掖业叶曳腋夜液一壹医揖铱依伊衣颐夷遗移仪胰疑沂宜姨彝椅蚁倚已乙矣以艺抑易邑屹亿役臆逸肄疫亦裔意毅忆义益溢诣议谊译异翼翌绎茵荫因殷音阴姻吟银淫寅饮尹引隐�\".split(\"\");\nfor(j = 0; j != D[210].length; ++j) if(D[210][j].charCodeAt(0) !== 0xFFFD) { e[D[210][j]] = 53760 + j; d[53760 + j] = D[210][j];}\nD[211] = \"����������������������������������������������������������������覢覣覤覥覦覧覨覩親覫覬覭覮覯覰覱覲観覴覵覶覷覸覹覺覻覼覽覾覿觀觃觍觓觔觕觗觘觙觛觝觟觠觡觢觤觧觨觩觪觬觭觮觰觱觲觴觵觶觷觸觹觺�觻觼觽觾觿訁訂訃訄訅訆計訉訊訋訌訍討訏訐訑訒訓訔訕訖託記訙訚訛訜訝印英樱婴鹰应缨莹萤营荧蝇迎赢盈影颖硬映哟拥佣臃痈庸雍踊蛹咏泳涌永恿勇用幽优悠忧尤由邮铀犹油游酉有友右佑釉诱又幼迂淤于盂榆虞愚舆余俞逾鱼愉渝渔隅予娱雨与屿禹宇语羽玉域芋郁吁遇喻峪御愈欲狱育誉�\".split(\"\");\nfor(j = 0; j != D[211].length; ++j) if(D[211][j].charCodeAt(0) !== 0xFFFD) { e[D[211][j]] = 54016 + j; d[54016 + j] = D[211][j];}\nD[212] = \"����������������������������������������������������������������訞訟訠訡訢訣訤訥訦訧訨訩訪訫訬設訮訯訰許訲訳訴訵訶訷訸訹診註証訽訿詀詁詂詃詄詅詆詇詉詊詋詌詍詎詏詐詑詒詓詔評詖詗詘詙詚詛詜詝詞�詟詠詡詢詣詤詥試詧詨詩詪詫詬詭詮詯詰話該詳詴詵詶詷詸詺詻詼詽詾詿誀浴寓裕预豫驭鸳渊冤元垣袁原援辕园员圆猿源缘远苑愿怨院曰约越跃钥岳粤月悦阅耘云郧匀陨允运蕴酝晕韵孕匝砸杂栽哉灾宰载再在咱攒暂赞赃脏葬遭糟凿藻枣早澡蚤躁噪造皂灶燥责择则泽贼怎增憎曾赠扎喳渣札轧�\".split(\"\");\nfor(j = 0; j != D[212].length; ++j) if(D[212][j].charCodeAt(0) !== 0xFFFD) { e[D[212][j]] = 54272 + j; d[54272 + j] = D[212][j];}\nD[213] = \"����������������������������������������������������������������誁誂誃誄誅誆誇誈誋誌認誎誏誐誑誒誔誕誖誗誘誙誚誛誜誝語誟誠誡誢誣誤誥誦誧誨誩說誫説読誮誯誰誱課誳誴誵誶誷誸誹誺誻誼誽誾調諀諁諂�諃諄諅諆談諈諉諊請諌諍諎諏諐諑諒諓諔諕論諗諘諙諚諛諜諝諞諟諠諡諢諣铡闸眨栅榨咋乍炸诈摘斋宅窄债寨瞻毡詹粘沾盏斩辗崭展蘸栈占战站湛绽樟章彰漳张掌涨杖丈帐账仗胀瘴障招昭找沼赵照罩兆肇召遮折哲蛰辙者锗蔗这浙珍斟真甄砧臻贞针侦枕疹诊震振镇阵蒸挣睁征狰争怔整拯正政�\".split(\"\");\nfor(j = 0; j != D[213].length; ++j) if(D[213][j].charCodeAt(0) !== 0xFFFD) { e[D[213][j]] = 54528 + j; d[54528 + j] = D[213][j];}\nD[214] = \"����������������������������������������������������������������諤諥諦諧諨諩諪諫諬諭諮諯諰諱諲諳諴諵諶諷諸諹諺諻諼諽諾諿謀謁謂謃謄謅謆謈謉謊謋謌謍謎謏謐謑謒謓謔謕謖謗謘謙謚講謜謝謞謟謠謡謢謣�謤謥謧謨謩謪謫謬謭謮謯謰謱謲謳謴謵謶謷謸謹謺謻謼謽謾謿譀譁譂譃譄譅帧症郑证芝枝支吱蜘知肢脂汁之织职直植殖执值侄址指止趾只旨纸志挚掷至致置帜峙制智秩稚质炙痔滞治窒中盅忠钟衷终种肿重仲众舟周州洲诌粥轴肘帚咒皱宙昼骤珠株蛛朱猪诸诛逐竹烛煮拄瞩嘱主著柱助蛀贮铸筑�\".split(\"\");\nfor(j = 0; j != D[214].length; ++j) if(D[214][j].charCodeAt(0) !== 0xFFFD) { e[D[214][j]] = 54784 + j; d[54784 + j] = D[214][j];}\nD[215] = \"����������������������������������������������������������������譆譇譈證譊譋譌譍譎譏譐譑譒譓譔譕譖譗識譙譚譛譜譝譞譟譠譡譢譣譤譥譧譨譩譪譫譭譮譯議譱譲譳譴譵譶護譸譹譺譻譼譽譾譿讀讁讂讃讄讅讆�讇讈讉變讋讌讍讎讏讐讑讒讓讔讕讖讗讘讙讚讛讜讝讞讟讬讱讻诇诐诪谉谞住注祝驻抓爪拽专砖转撰赚篆桩庄装妆撞壮状椎锥追赘坠缀谆准捉拙卓桌琢茁酌啄着灼浊兹咨资姿滋淄孜紫仔籽滓子自渍字鬃棕踪宗综总纵邹走奏揍租足卒族祖诅阻组钻纂嘴醉最罪尊遵昨左佐柞做作坐座������\".split(\"\");\nfor(j = 0; j != D[215].length; ++j) if(D[215][j].charCodeAt(0) !== 0xFFFD) { e[D[215][j]] = 55040 + j; d[55040 + j] = D[215][j];}\nD[216] = \"����������������������������������������������������������������谸谹谺谻谼谽谾谿豀豂豃豄豅豈豊豋豍豎豏豐豑豒豓豔豖豗豘豙豛豜豝豞豟豠豣豤豥豦豧豨豩豬豭豮豯豰豱豲豴豵豶豷豻豼豽豾豿貀貁貃貄貆貇�貈貋貍貎貏貐貑貒貓貕貖貗貙貚貛貜貝貞貟負財貢貣貤貥貦貧貨販貪貫責貭亍丌兀丐廿卅丕亘丞鬲孬噩丨禺丿匕乇夭爻卮氐囟胤馗毓睾鼗丶亟鼐乜乩亓芈孛啬嘏仄厍厝厣厥厮靥赝匚叵匦匮匾赜卦卣刂刈刎刭刳刿剀剌剞剡剜蒯剽劂劁劐劓冂罔亻仃仉仂仨仡仫仞伛仳伢佤仵伥伧伉伫佞佧攸佚佝�\".split(\"\");\nfor(j = 0; j != D[216].length; ++j) if(D[216][j].charCodeAt(0) !== 0xFFFD) { e[D[216][j]] = 55296 + j; d[55296 + j] = D[216][j];}\nD[217] = \"����������������������������������������������������������������貮貯貰貱貲貳貴貵貶買貸貹貺費貼貽貾貿賀賁賂賃賄賅賆資賈賉賊賋賌賍賎賏賐賑賒賓賔賕賖賗賘賙賚賛賜賝賞賟賠賡賢賣賤賥賦賧賨賩質賫賬�賭賮賯賰賱賲賳賴賵賶賷賸賹賺賻購賽賾賿贀贁贂贃贄贅贆贇贈贉贊贋贌贍佟佗伲伽佶佴侑侉侃侏佾佻侪佼侬侔俦俨俪俅俚俣俜俑俟俸倩偌俳倬倏倮倭俾倜倌倥倨偾偃偕偈偎偬偻傥傧傩傺僖儆僭僬僦僮儇儋仝氽佘佥俎龠汆籴兮巽黉馘冁夔勹匍訇匐凫夙兕亠兖亳衮袤亵脔裒禀嬴蠃羸冫冱冽冼�\".split(\"\");\nfor(j = 0; j != D[217].length; ++j) if(D[217][j].charCodeAt(0) !== 0xFFFD) { e[D[217][j]] = 55552 + j; d[55552 + j] = D[217][j];}\nD[218] = \"����������������������������������������������������������������贎贏贐贑贒贓贔贕贖贗贘贙贚贛贜贠赑赒赗赟赥赨赩赪赬赮赯赱赲赸赹赺赻赼赽赾赿趀趂趃趆趇趈趉趌趍趎趏趐趒趓趕趖趗趘趙趚趛趜趝趞趠趡�趢趤趥趦趧趨趩趪趫趬趭趮趯趰趲趶趷趹趻趽跀跁跂跅跇跈跉跊跍跐跒跓跔凇冖冢冥讠讦讧讪讴讵讷诂诃诋诏诎诒诓诔诖诘诙诜诟诠诤诨诩诮诰诳诶诹诼诿谀谂谄谇谌谏谑谒谔谕谖谙谛谘谝谟谠谡谥谧谪谫谮谯谲谳谵谶卩卺阝阢阡阱阪阽阼陂陉陔陟陧陬陲陴隈隍隗隰邗邛邝邙邬邡邴邳邶邺�\".split(\"\");\nfor(j = 0; j != D[218].length; ++j) if(D[218][j].charCodeAt(0) !== 0xFFFD) { e[D[218][j]] = 55808 + j; d[55808 + j] = D[218][j];}\nD[219] = \"����������������������������������������������������������������跕跘跙跜跠跡跢跥跦跧跩跭跮跰跱跲跴跶跼跾跿踀踁踂踃踄踆踇踈踋踍踎踐踑踒踓踕踖踗踘踙踚踛踜踠踡踤踥踦踧踨踫踭踰踲踳踴踶踷踸踻踼踾�踿蹃蹅蹆蹌蹍蹎蹏蹐蹓蹔蹕蹖蹗蹘蹚蹛蹜蹝蹞蹟蹠蹡蹢蹣蹤蹥蹧蹨蹪蹫蹮蹱邸邰郏郅邾郐郄郇郓郦郢郜郗郛郫郯郾鄄鄢鄞鄣鄱鄯鄹酃酆刍奂劢劬劭劾哿勐勖勰叟燮矍廴凵凼鬯厶弁畚巯坌垩垡塾墼壅壑圩圬圪圳圹圮圯坜圻坂坩垅坫垆坼坻坨坭坶坳垭垤垌垲埏垧垴垓垠埕埘埚埙埒垸埴埯埸埤埝�\".split(\"\");\nfor(j = 0; j != D[219].length; ++j) if(D[219][j].charCodeAt(0) !== 0xFFFD) { e[D[219][j]] = 56064 + j; d[56064 + j] = D[219][j];}\nD[220] = \"����������������������������������������������������������������蹳蹵蹷蹸蹹蹺蹻蹽蹾躀躂躃躄躆躈躉躊躋躌躍躎躑躒躓躕躖躗躘躙躚躛躝躟躠躡躢躣躤躥躦躧躨躩躪躭躮躰躱躳躴躵躶躷躸躹躻躼躽躾躿軀軁軂�軃軄軅軆軇軈軉車軋軌軍軏軐軑軒軓軔軕軖軗軘軙軚軛軜軝軞軟軠軡転軣軤堋堍埽埭堀堞堙塄堠塥塬墁墉墚墀馨鼙懿艹艽艿芏芊芨芄芎芑芗芙芫芸芾芰苈苊苣芘芷芮苋苌苁芩芴芡芪芟苄苎芤苡茉苷苤茏茇苜苴苒苘茌苻苓茑茚茆茔茕苠苕茜荑荛荜茈莒茼茴茱莛荞茯荏荇荃荟荀茗荠茭茺茳荦荥�\".split(\"\");\nfor(j = 0; j != D[220].length; ++j) if(D[220][j].charCodeAt(0) !== 0xFFFD) { e[D[220][j]] = 56320 + j; d[56320 + j] = D[220][j];}\nD[221] = \"����������������������������������������������������������������軥軦軧軨軩軪軫軬軭軮軯軰軱軲軳軴軵軶軷軸軹軺軻軼軽軾軿輀輁輂較輄輅輆輇輈載輊輋輌輍輎輏輐輑輒輓輔輕輖輗輘輙輚輛輜輝輞輟輠輡輢輣�輤輥輦輧輨輩輪輫輬輭輮輯輰輱輲輳輴輵輶輷輸輹輺輻輼輽輾輿轀轁轂轃轄荨茛荩荬荪荭荮莰荸莳莴莠莪莓莜莅荼莶莩荽莸荻莘莞莨莺莼菁萁菥菘堇萘萋菝菽菖萜萸萑萆菔菟萏萃菸菹菪菅菀萦菰菡葜葑葚葙葳蒇蒈葺蒉葸萼葆葩葶蒌蒎萱葭蓁蓍蓐蓦蒽蓓蓊蒿蒺蓠蒡蒹蒴蒗蓥蓣蔌甍蔸蓰蔹蔟蔺�\".split(\"\");\nfor(j = 0; j != D[221].length; ++j) if(D[221][j].charCodeAt(0) !== 0xFFFD) { e[D[221][j]] = 56576 + j; d[56576 + j] = D[221][j];}\nD[222] = \"����������������������������������������������������������������轅轆轇轈轉轊轋轌轍轎轏轐轑轒轓轔轕轖轗轘轙轚轛轜轝轞轟轠轡轢轣轤轥轪辀辌辒辝辠辡辢辤辥辦辧辪辬辭辮辯農辳辴辵辷辸辺辻込辿迀迃迆�迉迊迋迌迍迏迒迖迗迚迠迡迣迧迬迯迱迲迴迵迶迺迻迼迾迿逇逈逌逎逓逕逘蕖蔻蓿蓼蕙蕈蕨蕤蕞蕺瞢蕃蕲蕻薤薨薇薏蕹薮薜薅薹薷薰藓藁藜藿蘧蘅蘩蘖蘼廾弈夼奁耷奕奚奘匏尢尥尬尴扌扪抟抻拊拚拗拮挢拶挹捋捃掭揶捱捺掎掴捭掬掊捩掮掼揲揸揠揿揄揞揎摒揆掾摅摁搋搛搠搌搦搡摞撄摭撖�\".split(\"\");\nfor(j = 0; j != D[222].length; ++j) if(D[222][j].charCodeAt(0) !== 0xFFFD) { e[D[222][j]] = 56832 + j; d[56832 + j] = D[222][j];}\nD[223] = \"����������������������������������������������������������������這逜連逤逥逧逨逩逪逫逬逰週進逳逴逷逹逺逽逿遀遃遅遆遈遉遊運遌過達違遖遙遚遜遝遞遟遠遡遤遦遧適遪遫遬遯遰遱遲遳遶遷選遹遺遻遼遾邁�還邅邆邇邉邊邌邍邎邏邐邒邔邖邘邚邜邞邟邠邤邥邧邨邩邫邭邲邷邼邽邿郀摺撷撸撙撺擀擐擗擤擢攉攥攮弋忒甙弑卟叱叽叩叨叻吒吖吆呋呒呓呔呖呃吡呗呙吣吲咂咔呷呱呤咚咛咄呶呦咝哐咭哂咴哒咧咦哓哔呲咣哕咻咿哌哙哚哜咩咪咤哝哏哞唛哧唠哽唔哳唢唣唏唑唧唪啧喏喵啉啭啁啕唿啐唼�\".split(\"\");\nfor(j = 0; j != D[223].length; ++j) if(D[223][j].charCodeAt(0) !== 0xFFFD) { e[D[223][j]] = 57088 + j; d[57088 + j] = D[223][j];}\nD[224] = \"����������������������������������������������������������������郂郃郆郈郉郋郌郍郒郔郕郖郘郙郚郞郟郠郣郤郥郩郪郬郮郰郱郲郳郵郶郷郹郺郻郼郿鄀鄁鄃鄅鄆鄇鄈鄉鄊鄋鄌鄍鄎鄏鄐鄑鄒鄓鄔鄕鄖鄗鄘鄚鄛鄜�鄝鄟鄠鄡鄤鄥鄦鄧鄨鄩鄪鄫鄬鄭鄮鄰鄲鄳鄴鄵鄶鄷鄸鄺鄻鄼鄽鄾鄿酀酁酂酄唷啖啵啶啷唳唰啜喋嗒喃喱喹喈喁喟啾嗖喑啻嗟喽喾喔喙嗪嗷嗉嘟嗑嗫嗬嗔嗦嗝嗄嗯嗥嗲嗳嗌嗍嗨嗵嗤辔嘞嘈嘌嘁嘤嘣嗾嘀嘧嘭噘嘹噗嘬噍噢噙噜噌噔嚆噤噱噫噻噼嚅嚓嚯囔囗囝囡囵囫囹囿圄圊圉圜帏帙帔帑帱帻帼�\".split(\"\");\nfor(j = 0; j != D[224].length; ++j) if(D[224][j].charCodeAt(0) !== 0xFFFD) { e[D[224][j]] = 57344 + j; d[57344 + j] = D[224][j];}\nD[225] = \"����������������������������������������������������������������酅酇酈酑酓酔酕酖酘酙酛酜酟酠酦酧酨酫酭酳酺酻酼醀醁醂醃醄醆醈醊醎醏醓醔醕醖醗醘醙醜醝醞醟醠醡醤醥醦醧醨醩醫醬醰醱醲醳醶醷醸醹醻�醼醽醾醿釀釁釂釃釄釅釆釈釋釐釒釓釔釕釖釗釘釙釚釛針釞釟釠釡釢釣釤釥帷幄幔幛幞幡岌屺岍岐岖岈岘岙岑岚岜岵岢岽岬岫岱岣峁岷峄峒峤峋峥崂崃崧崦崮崤崞崆崛嵘崾崴崽嵬嵛嵯嵝嵫嵋嵊嵩嵴嶂嶙嶝豳嶷巅彳彷徂徇徉後徕徙徜徨徭徵徼衢彡犭犰犴犷犸狃狁狎狍狒狨狯狩狲狴狷猁狳猃狺�\".split(\"\");\nfor(j = 0; j != D[225].length; ++j) if(D[225][j].charCodeAt(0) !== 0xFFFD) { e[D[225][j]] = 57600 + j; d[57600 + j] = D[225][j];}\nD[226] = \"����������������������������������������������������������������釦釧釨釩釪釫釬釭釮釯釰釱釲釳釴釵釶釷釸釹釺釻釼釽釾釿鈀鈁鈂鈃鈄鈅鈆鈇鈈鈉鈊鈋鈌鈍鈎鈏鈐鈑鈒鈓鈔鈕鈖鈗鈘鈙鈚鈛鈜鈝鈞鈟鈠鈡鈢鈣鈤�鈥鈦鈧鈨鈩鈪鈫鈬鈭鈮鈯鈰鈱鈲鈳鈴鈵鈶鈷鈸鈹鈺鈻鈼鈽鈾鈿鉀鉁鉂鉃鉄鉅狻猗猓猡猊猞猝猕猢猹猥猬猸猱獐獍獗獠獬獯獾舛夥飧夤夂饣饧饨饩饪饫饬饴饷饽馀馄馇馊馍馐馑馓馔馕庀庑庋庖庥庠庹庵庾庳赓廒廑廛廨廪膺忄忉忖忏怃忮怄忡忤忾怅怆忪忭忸怙怵怦怛怏怍怩怫怊怿怡恸恹恻恺恂�\".split(\"\");\nfor(j = 0; j != D[226].length; ++j) if(D[226][j].charCodeAt(0) !== 0xFFFD) { e[D[226][j]] = 57856 + j; d[57856 + j] = D[226][j];}\nD[227] = \"����������������������������������������������������������������鉆鉇鉈鉉鉊鉋鉌鉍鉎鉏鉐鉑鉒鉓鉔鉕鉖鉗鉘鉙鉚鉛鉜鉝鉞鉟鉠鉡鉢鉣鉤鉥鉦鉧鉨鉩鉪鉫鉬鉭鉮鉯鉰鉱鉲鉳鉵鉶鉷鉸鉹鉺鉻鉼鉽鉾鉿銀銁銂銃銄銅�銆銇銈銉銊銋銌銍銏銐銑銒銓銔銕銖銗銘銙銚銛銜銝銞銟銠銡銢銣銤銥銦銧恪恽悖悚悭悝悃悒悌悛惬悻悱惝惘惆惚悴愠愦愕愣惴愀愎愫慊慵憬憔憧憷懔懵忝隳闩闫闱闳闵闶闼闾阃阄阆阈阊阋阌阍阏阒阕阖阗阙阚丬爿戕氵汔汜汊沣沅沐沔沌汨汩汴汶沆沩泐泔沭泷泸泱泗沲泠泖泺泫泮沱泓泯泾�\".split(\"\");\nfor(j = 0; j != D[227].length; ++j) if(D[227][j].charCodeAt(0) !== 0xFFFD) { e[D[227][j]] = 58112 + j; d[58112 + j] = D[227][j];}\nD[228] = \"����������������������������������������������������������������銨銩銪銫銬銭銯銰銱銲銳銴銵銶銷銸銹銺銻銼銽銾銿鋀鋁鋂鋃鋄鋅鋆鋇鋉鋊鋋鋌鋍鋎鋏鋐鋑鋒鋓鋔鋕鋖鋗鋘鋙鋚鋛鋜鋝鋞鋟鋠鋡鋢鋣鋤鋥鋦鋧鋨�鋩鋪鋫鋬鋭鋮鋯鋰鋱鋲鋳鋴鋵鋶鋷鋸鋹鋺鋻鋼鋽鋾鋿錀錁錂錃錄錅錆錇錈錉洹洧洌浃浈洇洄洙洎洫浍洮洵洚浏浒浔洳涑浯涞涠浞涓涔浜浠浼浣渚淇淅淞渎涿淠渑淦淝淙渖涫渌涮渫湮湎湫溲湟溆湓湔渲渥湄滟溱溘滠漭滢溥溧溽溻溷滗溴滏溏滂溟潢潆潇漤漕滹漯漶潋潴漪漉漩澉澍澌潸潲潼潺濑�\".split(\"\");\nfor(j = 0; j != D[228].length; ++j) if(D[228][j].charCodeAt(0) !== 0xFFFD) { e[D[228][j]] = 58368 + j; d[58368 + j] = D[228][j];}\nD[229] = \"����������������������������������������������������������������錊錋錌錍錎錏錐錑錒錓錔錕錖錗錘錙錚錛錜錝錞錟錠錡錢錣錤錥錦錧錨錩錪錫錬錭錮錯錰錱録錳錴錵錶錷錸錹錺錻錼錽錿鍀鍁鍂鍃鍄鍅鍆鍇鍈鍉�鍊鍋鍌鍍鍎鍏鍐鍑鍒鍓鍔鍕鍖鍗鍘鍙鍚鍛鍜鍝鍞鍟鍠鍡鍢鍣鍤鍥鍦鍧鍨鍩鍫濉澧澹澶濂濡濮濞濠濯瀚瀣瀛瀹瀵灏灞宀宄宕宓宥宸甯骞搴寤寮褰寰蹇謇辶迓迕迥迮迤迩迦迳迨逅逄逋逦逑逍逖逡逵逶逭逯遄遑遒遐遨遘遢遛暹遴遽邂邈邃邋彐彗彖彘尻咫屐屙孱屣屦羼弪弩弭艴弼鬻屮妁妃妍妩妪妣�\".split(\"\");\nfor(j = 0; j != D[229].length; ++j) if(D[229][j].charCodeAt(0) !== 0xFFFD) { e[D[229][j]] = 58624 + j; d[58624 + j] = D[229][j];}\nD[230] = \"����������������������������������������������������������������鍬鍭鍮鍯鍰鍱鍲鍳鍴鍵鍶鍷鍸鍹鍺鍻鍼鍽鍾鍿鎀鎁鎂鎃鎄鎅鎆鎇鎈鎉鎊鎋鎌鎍鎎鎐鎑鎒鎓鎔鎕鎖鎗鎘鎙鎚鎛鎜鎝鎞鎟鎠鎡鎢鎣鎤鎥鎦鎧鎨鎩鎪鎫�鎬鎭鎮鎯鎰鎱鎲鎳鎴鎵鎶鎷鎸鎹鎺鎻鎼鎽鎾鎿鏀鏁鏂鏃鏄鏅鏆鏇鏈鏉鏋鏌鏍妗姊妫妞妤姒妲妯姗妾娅娆姝娈姣姘姹娌娉娲娴娑娣娓婀婧婊婕娼婢婵胬媪媛婷婺媾嫫媲嫒嫔媸嫠嫣嫱嫖嫦嫘嫜嬉嬗嬖嬲嬷孀尕尜孚孥孳孑孓孢驵驷驸驺驿驽骀骁骅骈骊骐骒骓骖骘骛骜骝骟骠骢骣骥骧纟纡纣纥纨纩�\".split(\"\");\nfor(j = 0; j != D[230].length; ++j) if(D[230][j].charCodeAt(0) !== 0xFFFD) { e[D[230][j]] = 58880 + j; d[58880 + j] = D[230][j];}\nD[231] = \"����������������������������������������������������������������鏎鏏鏐鏑鏒鏓鏔鏕鏗鏘鏙鏚鏛鏜鏝鏞鏟鏠鏡鏢鏣鏤鏥鏦鏧鏨鏩鏪鏫鏬鏭鏮鏯鏰鏱鏲鏳鏴鏵鏶鏷鏸鏹鏺鏻鏼鏽鏾鏿鐀鐁鐂鐃鐄鐅鐆鐇鐈鐉鐊鐋鐌鐍�鐎鐏鐐鐑鐒鐓鐔鐕鐖鐗鐘鐙鐚鐛鐜鐝鐞鐟鐠鐡鐢鐣鐤鐥鐦鐧鐨鐩鐪鐫鐬鐭鐮纭纰纾绀绁绂绉绋绌绐绔绗绛绠绡绨绫绮绯绱绲缍绶绺绻绾缁缂缃缇缈缋缌缏缑缒缗缙缜缛缟缡缢缣缤缥缦缧缪缫缬缭缯缰缱缲缳缵幺畿巛甾邕玎玑玮玢玟珏珂珑玷玳珀珉珈珥珙顼琊珩珧珞玺珲琏琪瑛琦琥琨琰琮琬�\".split(\"\");\nfor(j = 0; j != D[231].length; ++j) if(D[231][j].charCodeAt(0) !== 0xFFFD) { e[D[231][j]] = 59136 + j; d[59136 + j] = D[231][j];}\nD[232] = \"����������������������������������������������������������������鐯鐰鐱鐲鐳鐴鐵鐶鐷鐸鐹鐺鐻鐼鐽鐿鑀鑁鑂鑃鑄鑅鑆鑇鑈鑉鑊鑋鑌鑍鑎鑏鑐鑑鑒鑓鑔鑕鑖鑗鑘鑙鑚鑛鑜鑝鑞鑟鑠鑡鑢鑣鑤鑥鑦鑧鑨鑩鑪鑬鑭鑮鑯�鑰鑱鑲鑳鑴鑵鑶鑷鑸鑹鑺鑻鑼鑽鑾鑿钀钁钂钃钄钑钖钘铇铏铓铔铚铦铻锜锠琛琚瑁瑜瑗瑕瑙瑷瑭瑾璜璎璀璁璇璋璞璨璩璐璧瓒璺韪韫韬杌杓杞杈杩枥枇杪杳枘枧杵枨枞枭枋杷杼柰栉柘栊柩枰栌柙枵柚枳柝栀柃枸柢栎柁柽栲栳桠桡桎桢桄桤梃栝桕桦桁桧桀栾桊桉栩梵梏桴桷梓桫棂楮棼椟椠棹�\".split(\"\");\nfor(j = 0; j != D[232].length; ++j) if(D[232][j].charCodeAt(0) !== 0xFFFD) { e[D[232][j]] = 59392 + j; d[59392 + j] = D[232][j];}\nD[233] = \"����������������������������������������������������������������锧锳锽镃镈镋镕镚镠镮镴镵長镸镹镺镻镼镽镾門閁閂閃閄閅閆閇閈閉閊開閌閍閎閏閐閑閒間閔閕閖閗閘閙閚閛閜閝閞閟閠閡関閣閤閥閦閧閨閩閪�閫閬閭閮閯閰閱閲閳閴閵閶閷閸閹閺閻閼閽閾閿闀闁闂闃闄闅闆闇闈闉闊闋椤棰椋椁楗棣椐楱椹楠楂楝榄楫榀榘楸椴槌榇榈槎榉楦楣楹榛榧榻榫榭槔榱槁槊槟榕槠榍槿樯槭樗樘橥槲橄樾檠橐橛樵檎橹樽樨橘橼檑檐檩檗檫猷獒殁殂殇殄殒殓殍殚殛殡殪轫轭轱轲轳轵轶轸轷轹轺轼轾辁辂辄辇辋�\".split(\"\");\nfor(j = 0; j != D[233].length; ++j) if(D[233][j].charCodeAt(0) !== 0xFFFD) { e[D[233][j]] = 59648 + j; d[59648 + j] = D[233][j];}\nD[234] = \"����������������������������������������������������������������闌闍闎闏闐闑闒闓闔闕闖闗闘闙闚闛關闝闞闟闠闡闢闣闤闥闦闧闬闿阇阓阘阛阞阠阣阤阥阦阧阨阩阫阬阭阯阰阷阸阹阺阾陁陃陊陎陏陑陒陓陖陗�陘陙陚陜陝陞陠陣陥陦陫陭陮陯陰陱陳陸陹険陻陼陽陾陿隀隁隂隃隄隇隉隊辍辎辏辘辚軎戋戗戛戟戢戡戥戤戬臧瓯瓴瓿甏甑甓攴旮旯旰昊昙杲昃昕昀炅曷昝昴昱昶昵耆晟晔晁晏晖晡晗晷暄暌暧暝暾曛曜曦曩贲贳贶贻贽赀赅赆赈赉赇赍赕赙觇觊觋觌觎觏觐觑牮犟牝牦牯牾牿犄犋犍犏犒挈挲掰�\".split(\"\");\nfor(j = 0; j != D[234].length; ++j) if(D[234][j].charCodeAt(0) !== 0xFFFD) { e[D[234][j]] = 59904 + j; d[59904 + j] = D[234][j];}\nD[235] = \"����������������������������������������������������������������隌階隑隒隓隕隖隚際隝隞隟隠隡隢隣隤隥隦隨隩險隫隬隭隮隯隱隲隴隵隷隸隺隻隿雂雃雈雊雋雐雑雓雔雖雗雘雙雚雛雜雝雞雟雡離難雤雥雦雧雫�雬雭雮雰雱雲雴雵雸雺電雼雽雿霂霃霅霊霋霌霐霑霒霔霕霗霘霙霚霛霝霟霠搿擘耄毪毳毽毵毹氅氇氆氍氕氘氙氚氡氩氤氪氲攵敕敫牍牒牖爰虢刖肟肜肓肼朊肽肱肫肭肴肷胧胨胩胪胛胂胄胙胍胗朐胝胫胱胴胭脍脎胲胼朕脒豚脶脞脬脘脲腈腌腓腴腙腚腱腠腩腼腽腭腧塍媵膈膂膑滕膣膪臌朦臊膻�\".split(\"\");\nfor(j = 0; j != D[235].length; ++j) if(D[235][j].charCodeAt(0) !== 0xFFFD) { e[D[235][j]] = 60160 + j; d[60160 + j] = D[235][j];}\nD[236] = \"����������������������������������������������������������������霡霢霣霤霥霦霧霨霩霫霬霮霯霱霳霴霵霶霷霺霻霼霽霿靀靁靂靃靄靅靆靇靈靉靊靋靌靍靎靏靐靑靔靕靗靘靚靜靝靟靣靤靦靧靨靪靫靬靭靮靯靰靱�靲靵靷靸靹靺靻靽靾靿鞀鞁鞂鞃鞄鞆鞇鞈鞉鞊鞌鞎鞏鞐鞓鞕鞖鞗鞙鞚鞛鞜鞝臁膦欤欷欹歃歆歙飑飒飓飕飙飚殳彀毂觳斐齑斓於旆旄旃旌旎旒旖炀炜炖炝炻烀炷炫炱烨烊焐焓焖焯焱煳煜煨煅煲煊煸煺熘熳熵熨熠燠燔燧燹爝爨灬焘煦熹戾戽扃扈扉礻祀祆祉祛祜祓祚祢祗祠祯祧祺禅禊禚禧禳忑忐�\".split(\"\");\nfor(j = 0; j != D[236].length; ++j) if(D[236][j].charCodeAt(0) !== 0xFFFD) { e[D[236][j]] = 60416 + j; d[60416 + j] = D[236][j];}\nD[237] = \"����������������������������������������������������������������鞞鞟鞡鞢鞤鞥鞦鞧鞨鞩鞪鞬鞮鞰鞱鞳鞵鞶鞷鞸鞹鞺鞻鞼鞽鞾鞿韀韁韂韃韄韅韆韇韈韉韊韋韌韍韎韏韐韑韒韓韔韕韖韗韘韙韚韛韜韝韞韟韠韡韢韣�韤韥韨韮韯韰韱韲韴韷韸韹韺韻韼韽韾響頀頁頂頃頄項順頇須頉頊頋頌頍頎怼恝恚恧恁恙恣悫愆愍慝憩憝懋懑戆肀聿沓泶淼矶矸砀砉砗砘砑斫砭砜砝砹砺砻砟砼砥砬砣砩硎硭硖硗砦硐硇硌硪碛碓碚碇碜碡碣碲碹碥磔磙磉磬磲礅磴礓礤礞礴龛黹黻黼盱眄眍盹眇眈眚眢眙眭眦眵眸睐睑睇睃睚睨�\".split(\"\");\nfor(j = 0; j != D[237].length; ++j) if(D[237][j].charCodeAt(0) !== 0xFFFD) { e[D[237][j]] = 60672 + j; d[60672 + j] = D[237][j];}\nD[238] = \"����������������������������������������������������������������頏預頑頒頓頔頕頖頗領頙頚頛頜頝頞頟頠頡頢頣頤頥頦頧頨頩頪頫頬頭頮頯頰頱頲頳頴頵頶頷頸頹頺頻頼頽頾頿顀顁顂顃顄顅顆顇顈顉顊顋題額�顎顏顐顑顒顓顔顕顖顗願顙顚顛顜顝類顟顠顡顢顣顤顥顦顧顨顩顪顫顬顭顮睢睥睿瞍睽瞀瞌瞑瞟瞠瞰瞵瞽町畀畎畋畈畛畲畹疃罘罡罟詈罨罴罱罹羁罾盍盥蠲钅钆钇钋钊钌钍钏钐钔钗钕钚钛钜钣钤钫钪钭钬钯钰钲钴钶钷钸钹钺钼钽钿铄铈铉铊铋铌铍铎铐铑铒铕铖铗铙铘铛铞铟铠铢铤铥铧铨铪�\".split(\"\");\nfor(j = 0; j != D[238].length; ++j) if(D[238][j].charCodeAt(0) !== 0xFFFD) { e[D[238][j]] = 60928 + j; d[60928 + j] = D[238][j];}\nD[239] = \"����������������������������������������������������������������顯顰顱顲顳顴颋颎颒颕颙颣風颩颪颫颬颭颮颯颰颱颲颳颴颵颶颷颸颹颺颻颼颽颾颿飀飁飂飃飄飅飆飇飈飉飊飋飌飍飏飐飔飖飗飛飜飝飠飡飢飣飤�飥飦飩飪飫飬飭飮飯飰飱飲飳飴飵飶飷飸飹飺飻飼飽飾飿餀餁餂餃餄餅餆餇铩铫铮铯铳铴铵铷铹铼铽铿锃锂锆锇锉锊锍锎锏锒锓锔锕锖锘锛锝锞锟锢锪锫锩锬锱锲锴锶锷锸锼锾锿镂锵镄镅镆镉镌镎镏镒镓镔镖镗镘镙镛镞镟镝镡镢镤镥镦镧镨镩镪镫镬镯镱镲镳锺矧矬雉秕秭秣秫稆嵇稃稂稞稔�\".split(\"\");\nfor(j = 0; j != D[239].length; ++j) if(D[239][j].charCodeAt(0) !== 0xFFFD) { e[D[239][j]] = 61184 + j; d[61184 + j] = D[239][j];}\nD[240] = \"����������������������������������������������������������������餈餉養餋餌餎餏餑餒餓餔餕餖餗餘餙餚餛餜餝餞餟餠餡餢餣餤餥餦餧館餩餪餫餬餭餯餰餱餲餳餴餵餶餷餸餹餺餻餼餽餾餿饀饁饂饃饄饅饆饇饈饉�饊饋饌饍饎饏饐饑饒饓饖饗饘饙饚饛饜饝饞饟饠饡饢饤饦饳饸饹饻饾馂馃馉稹稷穑黏馥穰皈皎皓皙皤瓞瓠甬鸠鸢鸨鸩鸪鸫鸬鸲鸱鸶鸸鸷鸹鸺鸾鹁鹂鹄鹆鹇鹈鹉鹋鹌鹎鹑鹕鹗鹚鹛鹜鹞鹣鹦鹧鹨鹩鹪鹫鹬鹱鹭鹳疒疔疖疠疝疬疣疳疴疸痄疱疰痃痂痖痍痣痨痦痤痫痧瘃痱痼痿瘐瘀瘅瘌瘗瘊瘥瘘瘕瘙�\".split(\"\");\nfor(j = 0; j != D[240].length; ++j) if(D[240][j].charCodeAt(0) !== 0xFFFD) { e[D[240][j]] = 61440 + j; d[61440 + j] = D[240][j];}\nD[241] = \"����������������������������������������������������������������馌馎馚馛馜馝馞馟馠馡馢馣馤馦馧馩馪馫馬馭馮馯馰馱馲馳馴馵馶馷馸馹馺馻馼馽馾馿駀駁駂駃駄駅駆駇駈駉駊駋駌駍駎駏駐駑駒駓駔駕駖駗駘�駙駚駛駜駝駞駟駠駡駢駣駤駥駦駧駨駩駪駫駬駭駮駯駰駱駲駳駴駵駶駷駸駹瘛瘼瘢瘠癀瘭瘰瘿瘵癃瘾瘳癍癞癔癜癖癫癯翊竦穸穹窀窆窈窕窦窠窬窨窭窳衤衩衲衽衿袂袢裆袷袼裉裢裎裣裥裱褚裼裨裾裰褡褙褓褛褊褴褫褶襁襦襻疋胥皲皴矜耒耔耖耜耠耢耥耦耧耩耨耱耋耵聃聆聍聒聩聱覃顸颀颃�\".split(\"\");\nfor(j = 0; j != D[241].length; ++j) if(D[241][j].charCodeAt(0) !== 0xFFFD) { e[D[241][j]] = 61696 + j; d[61696 + j] = D[241][j];}\nD[242] = \"����������������������������������������������������������������駺駻駼駽駾駿騀騁騂騃騄騅騆騇騈騉騊騋騌騍騎騏騐騑騒験騔騕騖騗騘騙騚騛騜騝騞騟騠騡騢騣騤騥騦騧騨騩騪騫騬騭騮騯騰騱騲騳騴騵騶騷騸�騹騺騻騼騽騾騿驀驁驂驃驄驅驆驇驈驉驊驋驌驍驎驏驐驑驒驓驔驕驖驗驘驙颉颌颍颏颔颚颛颞颟颡颢颥颦虍虔虬虮虿虺虼虻蚨蚍蚋蚬蚝蚧蚣蚪蚓蚩蚶蛄蚵蛎蚰蚺蚱蚯蛉蛏蚴蛩蛱蛲蛭蛳蛐蜓蛞蛴蛟蛘蛑蜃蜇蛸蜈蜊蜍蜉蜣蜻蜞蜥蜮蜚蜾蝈蜴蜱蜩蜷蜿螂蜢蝽蝾蝻蝠蝰蝌蝮螋蝓蝣蝼蝤蝙蝥螓螯螨蟒�\".split(\"\");\nfor(j = 0; j != D[242].length; ++j) if(D[242][j].charCodeAt(0) !== 0xFFFD) { e[D[242][j]] = 61952 + j; d[61952 + j] = D[242][j];}\nD[243] = \"����������������������������������������������������������������驚驛驜驝驞驟驠驡驢驣驤驥驦驧驨驩驪驫驲骃骉骍骎骔骕骙骦骩骪骫骬骭骮骯骲骳骴骵骹骻骽骾骿髃髄髆髇髈髉髊髍髎髏髐髒體髕髖髗髙髚髛髜�髝髞髠髢髣髤髥髧髨髩髪髬髮髰髱髲髳髴髵髶髷髸髺髼髽髾髿鬀鬁鬂鬄鬅鬆蟆螈螅螭螗螃螫蟥螬螵螳蟋蟓螽蟑蟀蟊蟛蟪蟠蟮蠖蠓蟾蠊蠛蠡蠹蠼缶罂罄罅舐竺竽笈笃笄笕笊笫笏筇笸笪笙笮笱笠笥笤笳笾笞筘筚筅筵筌筝筠筮筻筢筲筱箐箦箧箸箬箝箨箅箪箜箢箫箴篑篁篌篝篚篥篦篪簌篾篼簏簖簋�\".split(\"\");\nfor(j = 0; j != D[243].length; ++j) if(D[243][j].charCodeAt(0) !== 0xFFFD) { e[D[243][j]] = 62208 + j; d[62208 + j] = D[243][j];}\nD[244] = \"����������������������������������������������������������������鬇鬉鬊鬋鬌鬍鬎鬐鬑鬒鬔鬕鬖鬗鬘鬙鬚鬛鬜鬝鬞鬠鬡鬢鬤鬥鬦鬧鬨鬩鬪鬫鬬鬭鬮鬰鬱鬳鬴鬵鬶鬷鬸鬹鬺鬽鬾鬿魀魆魊魋魌魎魐魒魓魕魖魗魘魙魚�魛魜魝魞魟魠魡魢魣魤魥魦魧魨魩魪魫魬魭魮魯魰魱魲魳魴魵魶魷魸魹魺魻簟簪簦簸籁籀臾舁舂舄臬衄舡舢舣舭舯舨舫舸舻舳舴舾艄艉艋艏艚艟艨衾袅袈裘裟襞羝羟羧羯羰羲籼敉粑粝粜粞粢粲粼粽糁糇糌糍糈糅糗糨艮暨羿翎翕翥翡翦翩翮翳糸絷綦綮繇纛麸麴赳趄趔趑趱赧赭豇豉酊酐酎酏酤�\".split(\"\");\nfor(j = 0; j != D[244].length; ++j) if(D[244][j].charCodeAt(0) !== 0xFFFD) { e[D[244][j]] = 62464 + j; d[62464 + j] = D[244][j];}\nD[245] = \"����������������������������������������������������������������魼魽魾魿鮀鮁鮂鮃鮄鮅鮆鮇鮈鮉鮊鮋鮌鮍鮎鮏鮐鮑鮒鮓鮔鮕鮖鮗鮘鮙鮚鮛鮜鮝鮞鮟鮠鮡鮢鮣鮤鮥鮦鮧鮨鮩鮪鮫鮬鮭鮮鮯鮰鮱鮲鮳鮴鮵鮶鮷鮸鮹鮺�鮻鮼鮽鮾鮿鯀鯁鯂鯃鯄鯅鯆鯇鯈鯉鯊鯋鯌鯍鯎鯏鯐鯑鯒鯓鯔鯕鯖鯗鯘鯙鯚鯛酢酡酰酩酯酽酾酲酴酹醌醅醐醍醑醢醣醪醭醮醯醵醴醺豕鹾趸跫踅蹙蹩趵趿趼趺跄跖跗跚跞跎跏跛跆跬跷跸跣跹跻跤踉跽踔踝踟踬踮踣踯踺蹀踹踵踽踱蹉蹁蹂蹑蹒蹊蹰蹶蹼蹯蹴躅躏躔躐躜躞豸貂貊貅貘貔斛觖觞觚觜�\".split(\"\");\nfor(j = 0; j != D[245].length; ++j) if(D[245][j].charCodeAt(0) !== 0xFFFD) { e[D[245][j]] = 62720 + j; d[62720 + j] = D[245][j];}\nD[246] = \"����������������������������������������������������������������鯜鯝鯞鯟鯠鯡鯢鯣鯤鯥鯦鯧鯨鯩鯪鯫鯬鯭鯮鯯鯰鯱鯲鯳鯴鯵鯶鯷鯸鯹鯺鯻鯼鯽鯾鯿鰀鰁鰂鰃鰄鰅鰆鰇鰈鰉鰊鰋鰌鰍鰎鰏鰐鰑鰒鰓鰔鰕鰖鰗鰘鰙鰚�鰛鰜鰝鰞鰟鰠鰡鰢鰣鰤鰥鰦鰧鰨鰩鰪鰫鰬鰭鰮鰯鰰鰱鰲鰳鰴鰵鰶鰷鰸鰹鰺鰻觥觫觯訾謦靓雩雳雯霆霁霈霏霎霪霭霰霾龀龃龅龆龇龈龉龊龌黾鼋鼍隹隼隽雎雒瞿雠銎銮鋈錾鍪鏊鎏鐾鑫鱿鲂鲅鲆鲇鲈稣鲋鲎鲐鲑鲒鲔鲕鲚鲛鲞鲟鲠鲡鲢鲣鲥鲦鲧鲨鲩鲫鲭鲮鲰鲱鲲鲳鲴鲵鲶鲷鲺鲻鲼鲽鳄鳅鳆鳇鳊鳋�\".split(\"\");\nfor(j = 0; j != D[246].length; ++j) if(D[246][j].charCodeAt(0) !== 0xFFFD) { e[D[246][j]] = 62976 + j; d[62976 + j] = D[246][j];}\nD[247] = \"����������������������������������������������������������������鰼鰽鰾鰿鱀鱁鱂鱃鱄鱅鱆鱇鱈鱉鱊鱋鱌鱍鱎鱏鱐鱑鱒鱓鱔鱕鱖鱗鱘鱙鱚鱛鱜鱝鱞鱟鱠鱡鱢鱣鱤鱥鱦鱧鱨鱩鱪鱫鱬鱭鱮鱯鱰鱱鱲鱳鱴鱵鱶鱷鱸鱹鱺�鱻鱽鱾鲀鲃鲄鲉鲊鲌鲏鲓鲖鲗鲘鲙鲝鲪鲬鲯鲹鲾鲿鳀鳁鳂鳈鳉鳑鳒鳚鳛鳠鳡鳌鳍鳎鳏鳐鳓鳔鳕鳗鳘鳙鳜鳝鳟鳢靼鞅鞑鞒鞔鞯鞫鞣鞲鞴骱骰骷鹘骶骺骼髁髀髅髂髋髌髑魅魃魇魉魈魍魑飨餍餮饕饔髟髡髦髯髫髻髭髹鬈鬏鬓鬟鬣麽麾縻麂麇麈麋麒鏖麝麟黛黜黝黠黟黢黩黧黥黪黯鼢鼬鼯鼹鼷鼽鼾齄�\".split(\"\");\nfor(j = 0; j != D[247].length; ++j) if(D[247][j].charCodeAt(0) !== 0xFFFD) { e[D[247][j]] = 63232 + j; d[63232 + j] = D[247][j];}\nD[248] = \"����������������������������������������������������������������鳣鳤鳥鳦鳧鳨鳩鳪鳫鳬鳭鳮鳯鳰鳱鳲鳳鳴鳵鳶鳷鳸鳹鳺鳻鳼鳽鳾鳿鴀鴁鴂鴃鴄鴅鴆鴇鴈鴉鴊鴋鴌鴍鴎鴏鴐鴑鴒鴓鴔鴕鴖鴗鴘鴙鴚鴛鴜鴝鴞鴟鴠鴡�鴢鴣鴤鴥鴦鴧鴨鴩鴪鴫鴬鴭鴮鴯鴰鴱鴲鴳鴴鴵鴶鴷鴸鴹鴺鴻鴼鴽鴾鴿鵀鵁鵂�����������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[248].length; ++j) if(D[248][j].charCodeAt(0) !== 0xFFFD) { e[D[248][j]] = 63488 + j; d[63488 + j] = D[248][j];}\nD[249] = \"����������������������������������������������������������������鵃鵄鵅鵆鵇鵈鵉鵊鵋鵌鵍鵎鵏鵐鵑鵒鵓鵔鵕鵖鵗鵘鵙鵚鵛鵜鵝鵞鵟鵠鵡鵢鵣鵤鵥鵦鵧鵨鵩鵪鵫鵬鵭鵮鵯鵰鵱鵲鵳鵴鵵鵶鵷鵸鵹鵺鵻鵼鵽鵾鵿鶀鶁�鶂鶃鶄鶅鶆鶇鶈鶉鶊鶋鶌鶍鶎鶏鶐鶑鶒鶓鶔鶕鶖鶗鶘鶙鶚鶛鶜鶝鶞鶟鶠鶡鶢�����������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[249].length; ++j) if(D[249][j].charCodeAt(0) !== 0xFFFD) { e[D[249][j]] = 63744 + j; d[63744 + j] = D[249][j];}\nD[250] = \"����������������������������������������������������������������鶣鶤鶥鶦鶧鶨鶩鶪鶫鶬鶭鶮鶯鶰鶱鶲鶳鶴鶵鶶鶷鶸鶹鶺鶻鶼鶽鶾鶿鷀鷁鷂鷃鷄鷅鷆鷇鷈鷉鷊鷋鷌鷍鷎鷏鷐鷑鷒鷓鷔鷕鷖鷗鷘鷙鷚鷛鷜鷝鷞鷟鷠鷡�鷢鷣鷤鷥鷦鷧鷨鷩鷪鷫鷬鷭鷮鷯鷰鷱鷲鷳鷴鷵鷶鷷鷸鷹鷺鷻鷼鷽鷾鷿鸀鸁鸂�����������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[250].length; ++j) if(D[250][j].charCodeAt(0) !== 0xFFFD) { e[D[250][j]] = 64000 + j; d[64000 + j] = D[250][j];}\nD[251] = \"����������������������������������������������������������������鸃鸄鸅鸆鸇鸈鸉鸊鸋鸌鸍鸎鸏鸐鸑鸒鸓鸔鸕鸖鸗鸘鸙鸚鸛鸜鸝鸞鸤鸧鸮鸰鸴鸻鸼鹀鹍鹐鹒鹓鹔鹖鹙鹝鹟鹠鹡鹢鹥鹮鹯鹲鹴鹵鹶鹷鹸鹹鹺鹻鹼鹽麀�麁麃麄麅麆麉麊麌麍麎麏麐麑麔麕麖麗麘麙麚麛麜麞麠麡麢麣麤麥麧麨麩麪�����������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[251].length; ++j) if(D[251][j].charCodeAt(0) !== 0xFFFD) { e[D[251][j]] = 64256 + j; d[64256 + j] = D[251][j];}\nD[252] = \"����������������������������������������������������������������麫麬麭麮麯麰麱麲麳麵麶麷麹麺麼麿黀黁黂黃黅黆黇黈黊黋黌黐黒黓黕黖黗黙黚點黡黣黤黦黨黫黬黭黮黰黱黲黳黴黵黶黷黸黺黽黿鼀鼁鼂鼃鼄鼅�鼆鼇鼈鼉鼊鼌鼏鼑鼒鼔鼕鼖鼘鼚鼛鼜鼝鼞鼟鼡鼣鼤鼥鼦鼧鼨鼩鼪鼫鼭鼮鼰鼱�����������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[252].length; ++j) if(D[252][j].charCodeAt(0) !== 0xFFFD) { e[D[252][j]] = 64512 + j; d[64512 + j] = D[252][j];}\nD[253] = \"����������������������������������������������������������������鼲鼳鼴鼵鼶鼸鼺鼼鼿齀齁齂齃齅齆齇齈齉齊齋齌齍齎齏齒齓齔齕齖齗齘齙齚齛齜齝齞齟齠齡齢齣齤齥齦齧齨齩齪齫齬齭齮齯齰齱齲齳齴齵齶齷齸�齹齺齻齼齽齾龁龂龍龎龏龐龑龒龓龔龕龖龗龘龜龝龞龡龢龣龤龥郎凉秊裏隣�����������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[253].length; ++j) if(D[253][j].charCodeAt(0) !== 0xFFFD) { e[D[253][j]] = 64768 + j; d[64768 + j] = D[253][j];}\nD[254] = \"����������������������������������������������������������������兀嗀﨎﨏﨑﨓﨔礼﨟蘒﨡﨣﨤﨧﨨﨩��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[254].length; ++j) if(D[254][j].charCodeAt(0) !== 0xFFFD) { e[D[254][j]] = 65024 + j; d[65024 + j] = D[254][j];}\nreturn {\"enc\": e, \"dec\": d }; })();\ncptable[949] = (function(){ var d = [], e = {}, D = [], j;\nD[0] = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~��������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[0].length; ++j) if(D[0][j].charCodeAt(0) !== 0xFFFD) { e[D[0][j]] = 0 + j; d[0 + j] = D[0][j];}\nD[129] = \"�����������������������������������������������������������������갂갃갅갆갋갌갍갎갏갘갞갟갡갢갣갥갦갧갨갩갪갫갮갲갳갴������갵갶갷갺갻갽갾갿걁걂걃걄걅걆걇걈걉걊걌걎걏걐걑걒걓걕������걖걗걙걚걛걝걞걟걠걡걢걣걤걥걦걧걨걩걪걫걬걭걮걯걲걳걵걶걹걻걼걽걾걿겂겇겈겍겎겏겑겒겓겕겖겗겘겙겚겛겞겢겣겤겥겦겧겫겭겮겱겲겳겴겵겶겷겺겾겿곀곂곃곅곆곇곉곊곋곍곎곏곐곑곒곓곔곖곘곙곚곛곜곝곞곟곢곣곥곦곩곫곭곮곲곴곷곸곹곺곻곾곿괁괂괃괅괇괈괉괊괋괎괐괒괓�\".split(\"\");\nfor(j = 0; j != D[129].length; ++j) if(D[129][j].charCodeAt(0) !== 0xFFFD) { e[D[129][j]] = 33024 + j; d[33024 + j] = D[129][j];}\nD[130] = \"�����������������������������������������������������������������괔괕괖괗괙괚괛괝괞괟괡괢괣괤괥괦괧괨괪괫괮괯괰괱괲괳������괶괷괹괺괻괽괾괿굀굁굂굃굆굈굊굋굌굍굎굏굑굒굓굕굖굗������굙굚굛굜굝굞굟굠굢굤굥굦굧굨굩굪굫굮굯굱굲굷굸굹굺굾궀궃궄궅궆궇궊궋궍궎궏궑궒궓궔궕궖궗궘궙궚궛궞궟궠궡궢궣궥궦궧궨궩궪궫궬궭궮궯궰궱궲궳궴궵궶궸궹궺궻궼궽궾궿귂귃귅귆귇귉귊귋귌귍귎귏귒귔귕귖귗귘귙귚귛귝귞귟귡귢귣귥귦귧귨귩귪귫귬귭귮귯귰귱귲귳귴귵귶귷�\".split(\"\");\nfor(j = 0; j != D[130].length; ++j) if(D[130][j].charCodeAt(0) !== 0xFFFD) { e[D[130][j]] = 33280 + j; d[33280 + j] = D[130][j];}\nD[131] = \"�����������������������������������������������������������������귺귻귽귾긂긃긄긅긆긇긊긌긎긏긐긑긒긓긕긖긗긘긙긚긛긜������긝긞긟긠긡긢긣긤긥긦긧긨긩긪긫긬긭긮긯긲긳긵긶긹긻긼������긽긾긿깂깄깇깈깉깋깏깑깒깓깕깗깘깙깚깛깞깢깣깤깦깧깪깫깭깮깯깱깲깳깴깵깶깷깺깾깿꺀꺁꺂꺃꺆꺇꺈꺉꺊꺋꺍꺎꺏꺐꺑꺒꺓꺔꺕꺖꺗꺘꺙꺚꺛꺜꺝꺞꺟꺠꺡꺢꺣꺤꺥꺦꺧꺨꺩꺪꺫꺬꺭꺮꺯꺰꺱꺲꺳꺴꺵꺶꺷꺸꺹꺺꺻꺿껁껂껃껅껆껇껈껉껊껋껎껒껓껔껕껖껗껚껛껝껞껟껠껡껢껣껤껥�\".split(\"\");\nfor(j = 0; j != D[131].length; ++j) if(D[131][j].charCodeAt(0) !== 0xFFFD) { e[D[131][j]] = 33536 + j; d[33536 + j] = D[131][j];}\nD[132] = \"�����������������������������������������������������������������껦껧껩껪껬껮껯껰껱껲껳껵껶껷껹껺껻껽껾껿꼀꼁꼂꼃꼄꼅������꼆꼉꼊꼋꼌꼎꼏꼑꼒꼓꼔꼕꼖꼗꼘꼙꼚꼛꼜꼝꼞꼟꼠꼡꼢꼣������꼤꼥꼦꼧꼨꼩꼪꼫꼮꼯꼱꼳꼵꼶꼷꼸꼹꼺꼻꼾꽀꽄꽅꽆꽇꽊꽋꽌꽍꽎꽏꽑꽒꽓꽔꽕꽖꽗꽘꽙꽚꽛꽞꽟꽠꽡꽢꽣꽦꽧꽨꽩꽪꽫꽬꽭꽮꽯꽰꽱꽲꽳꽴꽵꽶꽷꽸꽺꽻꽼꽽꽾꽿꾁꾂꾃꾅꾆꾇꾉꾊꾋꾌꾍꾎꾏꾒꾓꾔꾖꾗꾘꾙꾚꾛꾝꾞꾟꾠꾡꾢꾣꾤꾥꾦꾧꾨꾩꾪꾫꾬꾭꾮꾯꾰꾱꾲꾳꾴꾵꾶꾷꾺꾻꾽꾾�\".split(\"\");\nfor(j = 0; j != D[132].length; ++j) if(D[132][j].charCodeAt(0) !== 0xFFFD) { e[D[132][j]] = 33792 + j; d[33792 + j] = D[132][j];}\nD[133] = \"�����������������������������������������������������������������꾿꿁꿂꿃꿄꿅꿆꿊꿌꿏꿐꿑꿒꿓꿕꿖꿗꿘꿙꿚꿛꿝꿞꿟꿠꿡������꿢꿣꿤꿥꿦꿧꿪꿫꿬꿭꿮꿯꿲꿳꿵꿶꿷꿹꿺꿻꿼꿽꿾꿿뀂뀃������뀅뀆뀇뀈뀉뀊뀋뀍뀎뀏뀑뀒뀓뀕뀖뀗뀘뀙뀚뀛뀞뀟뀠뀡뀢뀣뀤뀥뀦뀧뀩뀪뀫뀬뀭뀮뀯뀰뀱뀲뀳뀴뀵뀶뀷뀸뀹뀺뀻뀼뀽뀾뀿끀끁끂끃끆끇끉끋끍끏끐끑끒끖끘끚끛끜끞끟끠끡끢끣끤끥끦끧끨끩끪끫끬끭끮끯끰끱끲끳끴끵끶끷끸끹끺끻끾끿낁낂낃낅낆낇낈낉낊낋낎낐낒낓낔낕낖낗낛낝낞낣낤�\".split(\"\");\nfor(j = 0; j != D[133].length; ++j) if(D[133][j].charCodeAt(0) !== 0xFFFD) { e[D[133][j]] = 34048 + j; d[34048 + j] = D[133][j];}\nD[134] = \"�����������������������������������������������������������������낥낦낧낪낰낲낶낷낹낺낻낽낾낿냀냁냂냃냆냊냋냌냍냎냏냒������냓냕냖냗냙냚냛냜냝냞냟냡냢냣냤냦냧냨냩냪냫냬냭냮냯냰������냱냲냳냴냵냶냷냸냹냺냻냼냽냾냿넀넁넂넃넄넅넆넇넊넍넎넏넑넔넕넖넗넚넞넟넠넡넢넦넧넩넪넫넭넮넯넰넱넲넳넶넺넻넼넽넾넿녂녃녅녆녇녉녊녋녌녍녎녏녒녓녖녗녙녚녛녝녞녟녡녢녣녤녥녦녧녨녩녪녫녬녭녮녯녰녱녲녳녴녵녶녷녺녻녽녾녿놁놃놄놅놆놇놊놌놎놏놐놑놕놖놗놙놚놛놝�\".split(\"\");\nfor(j = 0; j != D[134].length; ++j) if(D[134][j].charCodeAt(0) !== 0xFFFD) { e[D[134][j]] = 34304 + j; d[34304 + j] = D[134][j];}\nD[135] = \"�����������������������������������������������������������������놞놟놠놡놢놣놤놥놦놧놩놪놫놬놭놮놯놰놱놲놳놴놵놶놷놸������놹놺놻놼놽놾놿뇀뇁뇂뇃뇄뇅뇆뇇뇈뇉뇊뇋뇍뇎뇏뇑뇒뇓뇕������뇖뇗뇘뇙뇚뇛뇞뇠뇡뇢뇣뇤뇥뇦뇧뇪뇫뇭뇮뇯뇱뇲뇳뇴뇵뇶뇷뇸뇺뇼뇾뇿눀눁눂눃눆눇눉눊눍눎눏눐눑눒눓눖눘눚눛눜눝눞눟눡눢눣눤눥눦눧눨눩눪눫눬눭눮눯눰눱눲눳눵눶눷눸눹눺눻눽눾눿뉀뉁뉂뉃뉄뉅뉆뉇뉈뉉뉊뉋뉌뉍뉎뉏뉐뉑뉒뉓뉔뉕뉖뉗뉙뉚뉛뉝뉞뉟뉡뉢뉣뉤뉥뉦뉧뉪뉫뉬뉭뉮�\".split(\"\");\nfor(j = 0; j != D[135].length; ++j) if(D[135][j].charCodeAt(0) !== 0xFFFD) { e[D[135][j]] = 34560 + j; d[34560 + j] = D[135][j];}\nD[136] = \"�����������������������������������������������������������������뉯뉰뉱뉲뉳뉶뉷뉸뉹뉺뉻뉽뉾뉿늀늁늂늃늆늇늈늊늋늌늍늎������늏늒늓늕늖늗늛늜늝늞늟늢늤늧늨늩늫늭늮늯늱늲늳늵늶늷������늸늹늺늻늼늽늾늿닀닁닂닃닄닅닆닇닊닋닍닎닏닑닓닔닕닖닗닚닜닞닟닠닡닣닧닩닪닰닱닲닶닼닽닾댂댃댅댆댇댉댊댋댌댍댎댏댒댖댗댘댙댚댛댝댞댟댠댡댢댣댤댥댦댧댨댩댪댫댬댭댮댯댰댱댲댳댴댵댶댷댸댹댺댻댼댽댾댿덀덁덂덃덄덅덆덇덈덉덊덋덌덍덎덏덐덑덒덓덗덙덚덝덠덡덢덣�\".split(\"\");\nfor(j = 0; j != D[136].length; ++j) if(D[136][j].charCodeAt(0) !== 0xFFFD) { e[D[136][j]] = 34816 + j; d[34816 + j] = D[136][j];}\nD[137] = \"�����������������������������������������������������������������덦덨덪덬덭덯덲덳덵덶덷덹덺덻덼덽덾덿뎂뎆뎇뎈뎉뎊뎋뎍������뎎뎏뎑뎒뎓뎕뎖뎗뎘뎙뎚뎛뎜뎝뎞뎟뎢뎣뎤뎥뎦뎧뎩뎪뎫뎭������뎮뎯뎰뎱뎲뎳뎴뎵뎶뎷뎸뎹뎺뎻뎼뎽뎾뎿돀돁돂돃돆돇돉돊돍돏돑돒돓돖돘돚돜돞돟돡돢돣돥돦돧돩돪돫돬돭돮돯돰돱돲돳돴돵돶돷돸돹돺돻돽돾돿됀됁됂됃됄됅됆됇됈됉됊됋됌됍됎됏됑됒됓됔됕됖됗됙됚됛됝됞됟됡됢됣됤됥됦됧됪됬됭됮됯됰됱됲됳됵됶됷됸됹됺됻됼됽됾됿둀둁둂둃둄�\".split(\"\");\nfor(j = 0; j != D[137].length; ++j) if(D[137][j].charCodeAt(0) !== 0xFFFD) { e[D[137][j]] = 35072 + j; d[35072 + j] = D[137][j];}\nD[138] = \"�����������������������������������������������������������������둅둆둇둈둉둊둋둌둍둎둏둒둓둕둖둗둙둚둛둜둝둞둟둢둤둦������둧둨둩둪둫둭둮둯둰둱둲둳둴둵둶둷둸둹둺둻둼둽둾둿뒁뒂������뒃뒄뒅뒆뒇뒉뒊뒋뒌뒍뒎뒏뒐뒑뒒뒓뒔뒕뒖뒗뒘뒙뒚뒛뒜뒞뒟뒠뒡뒢뒣뒥뒦뒧뒩뒪뒫뒭뒮뒯뒰뒱뒲뒳뒴뒶뒸뒺뒻뒼뒽뒾뒿듁듂듃듅듆듇듉듊듋듌듍듎듏듑듒듓듔듖듗듘듙듚듛듞듟듡듢듥듧듨듩듪듫듮듰듲듳듴듵듶듷듹듺듻듼듽듾듿딀딁딂딃딄딅딆딇딈딉딊딋딌딍딎딏딐딑딒딓딖딗딙딚딝�\".split(\"\");\nfor(j = 0; j != D[138].length; ++j) if(D[138][j].charCodeAt(0) !== 0xFFFD) { e[D[138][j]] = 35328 + j; d[35328 + j] = D[138][j];}\nD[139] = \"�����������������������������������������������������������������딞딟딠딡딢딣딦딫딬딭딮딯딲딳딵딶딷딹딺딻딼딽딾딿땂땆������땇땈땉땊땎땏땑땒땓땕땖땗땘땙땚땛땞땢땣땤땥땦땧땨땩땪������땫땬땭땮땯땰땱땲땳땴땵땶땷땸땹땺땻땼땽땾땿떀떁떂떃떄떅떆떇떈떉떊떋떌떍떎떏떐떑떒떓떔떕떖떗떘떙떚떛떜떝떞떟떢떣떥떦떧떩떬떭떮떯떲떶떷떸떹떺떾떿뗁뗂뗃뗅뗆뗇뗈뗉뗊뗋뗎뗒뗓뗔뗕뗖뗗뗙뗚뗛뗜뗝뗞뗟뗠뗡뗢뗣뗤뗥뗦뗧뗨뗩뗪뗫뗭뗮뗯뗰뗱뗲뗳뗴뗵뗶뗷뗸뗹뗺뗻뗼뗽뗾뗿�\".split(\"\");\nfor(j = 0; j != D[139].length; ++j) if(D[139][j].charCodeAt(0) !== 0xFFFD) { e[D[139][j]] = 35584 + j; d[35584 + j] = D[139][j];}\nD[140] = \"�����������������������������������������������������������������똀똁똂똃똄똅똆똇똈똉똊똋똌똍똎똏똒똓똕똖똗똙똚똛똜똝������똞똟똠똡똢똣똤똦똧똨똩똪똫똭똮똯똰똱똲똳똵똶똷똸똹똺������똻똼똽똾똿뙀뙁뙂뙃뙄뙅뙆뙇뙉뙊뙋뙌뙍뙎뙏뙐뙑뙒뙓뙔뙕뙖뙗뙘뙙뙚뙛뙜뙝뙞뙟뙠뙡뙢뙣뙥뙦뙧뙩뙪뙫뙬뙭뙮뙯뙰뙱뙲뙳뙴뙵뙶뙷뙸뙹뙺뙻뙼뙽뙾뙿뚀뚁뚂뚃뚄뚅뚆뚇뚈뚉뚊뚋뚌뚍뚎뚏뚐뚑뚒뚓뚔뚕뚖뚗뚘뚙뚚뚛뚞뚟뚡뚢뚣뚥뚦뚧뚨뚩뚪뚭뚮뚯뚰뚲뚳뚴뚵뚶뚷뚸뚹뚺뚻뚼뚽뚾뚿뛀뛁뛂�\".split(\"\");\nfor(j = 0; j != D[140].length; ++j) if(D[140][j].charCodeAt(0) !== 0xFFFD) { e[D[140][j]] = 35840 + j; d[35840 + j] = D[140][j];}\nD[141] = \"�����������������������������������������������������������������뛃뛄뛅뛆뛇뛈뛉뛊뛋뛌뛍뛎뛏뛐뛑뛒뛓뛕뛖뛗뛘뛙뛚뛛뛜뛝������뛞뛟뛠뛡뛢뛣뛤뛥뛦뛧뛨뛩뛪뛫뛬뛭뛮뛯뛱뛲뛳뛵뛶뛷뛹뛺������뛻뛼뛽뛾뛿뜂뜃뜄뜆뜇뜈뜉뜊뜋뜌뜍뜎뜏뜐뜑뜒뜓뜔뜕뜖뜗뜘뜙뜚뜛뜜뜝뜞뜟뜠뜡뜢뜣뜤뜥뜦뜧뜪뜫뜭뜮뜱뜲뜳뜴뜵뜶뜷뜺뜼뜽뜾뜿띀띁띂띃띅띆띇띉띊띋띍띎띏띐띑띒띓띖띗띘띙띚띛띜띝띞띟띡띢띣띥띦띧띩띪띫띬띭띮띯띲띴띶띷띸띹띺띻띾띿랁랂랃랅랆랇랈랉랊랋랎랓랔랕랚랛랝랞�\".split(\"\");\nfor(j = 0; j != D[141].length; ++j) if(D[141][j].charCodeAt(0) !== 0xFFFD) { e[D[141][j]] = 36096 + j; d[36096 + j] = D[141][j];}\nD[142] = \"�����������������������������������������������������������������랟랡랢랣랤랥랦랧랪랮랯랰랱랲랳랶랷랹랺랻랼랽랾랿럀럁������럂럃럄럅럆럈럊럋럌럍럎럏럐럑럒럓럔럕럖럗럘럙럚럛럜럝������럞럟럠럡럢럣럤럥럦럧럨럩럪럫럮럯럱럲럳럵럶럷럸럹럺럻럾렂렃렄렅렆렊렋렍렎렏렑렒렓렔렕렖렗렚렜렞렟렠렡렢렣렦렧렩렪렫렭렮렯렰렱렲렳렶렺렻렼렽렾렿롁롂롃롅롆롇롈롉롊롋롌롍롎롏롐롒롔롕롖롗롘롙롚롛롞롟롡롢롣롥롦롧롨롩롪롫롮롰롲롳롴롵롶롷롹롺롻롽롾롿뢀뢁뢂뢃뢄�\".split(\"\");\nfor(j = 0; j != D[142].length; ++j) if(D[142][j].charCodeAt(0) !== 0xFFFD) { e[D[142][j]] = 36352 + j; d[36352 + j] = D[142][j];}\nD[143] = \"�����������������������������������������������������������������뢅뢆뢇뢈뢉뢊뢋뢌뢎뢏뢐뢑뢒뢓뢔뢕뢖뢗뢘뢙뢚뢛뢜뢝뢞뢟������뢠뢡뢢뢣뢤뢥뢦뢧뢩뢪뢫뢬뢭뢮뢯뢱뢲뢳뢵뢶뢷뢹뢺뢻뢼뢽������뢾뢿룂룄룆룇룈룉룊룋룍룎룏룑룒룓룕룖룗룘룙룚룛룜룞룠룢룣룤룥룦룧룪룫룭룮룯룱룲룳룴룵룶룷룺룼룾룿뤀뤁뤂뤃뤅뤆뤇뤈뤉뤊뤋뤌뤍뤎뤏뤐뤑뤒뤓뤔뤕뤖뤗뤙뤚뤛뤜뤝뤞뤟뤡뤢뤣뤤뤥뤦뤧뤨뤩뤪뤫뤬뤭뤮뤯뤰뤱뤲뤳뤴뤵뤶뤷뤸뤹뤺뤻뤾뤿륁륂륃륅륆륇륈륉륊륋륍륎륐륒륓륔륕륖륗�\".split(\"\");\nfor(j = 0; j != D[143].length; ++j) if(D[143][j].charCodeAt(0) !== 0xFFFD) { e[D[143][j]] = 36608 + j; d[36608 + j] = D[143][j];}\nD[144] = \"�����������������������������������������������������������������륚륛륝륞륟륡륢륣륤륥륦륧륪륬륮륯륰륱륲륳륶륷륹륺륻륽������륾륿릀릁릂릃릆릈릋릌릏릐릑릒릓릔릕릖릗릘릙릚릛릜릝릞������릟릠릡릢릣릤릥릦릧릨릩릪릫릮릯릱릲릳릵릶릷릸릹릺릻릾맀맂맃맄맅맆맇맊맋맍맓맔맕맖맗맚맜맟맠맢맦맧맩맪맫맭맮맯맰맱맲맳맶맻맼맽맾맿먂먃먄먅먆먇먉먊먋먌먍먎먏먐먑먒먓먔먖먗먘먙먚먛먜먝먞먟먠먡먢먣먤먥먦먧먨먩먪먫먬먭먮먯먰먱먲먳먴먵먶먷먺먻먽먾먿멁멃멄멅멆�\".split(\"\");\nfor(j = 0; j != D[144].length; ++j) if(D[144][j].charCodeAt(0) !== 0xFFFD) { e[D[144][j]] = 36864 + j; d[36864 + j] = D[144][j];}\nD[145] = \"�����������������������������������������������������������������멇멊멌멏멐멑멒멖멗멙멚멛멝멞멟멠멡멢멣멦멪멫멬멭멮멯������멲멳멵멶멷멹멺멻멼멽멾멿몀몁몂몆몈몉몊몋몍몎몏몐몑몒������몓몔몕몖몗몘몙몚몛몜몝몞몟몠몡몢몣몤몥몦몧몪몭몮몯몱몳몴몵몶몷몺몼몾몿뫀뫁뫂뫃뫅뫆뫇뫉뫊뫋뫌뫍뫎뫏뫐뫑뫒뫓뫔뫕뫖뫗뫚뫛뫜뫝뫞뫟뫠뫡뫢뫣뫤뫥뫦뫧뫨뫩뫪뫫뫬뫭뫮뫯뫰뫱뫲뫳뫴뫵뫶뫷뫸뫹뫺뫻뫽뫾뫿묁묂묃묅묆묇묈묉묊묋묌묎묐묒묓묔묕묖묗묙묚묛묝묞묟묡묢묣묤묥묦묧�\".split(\"\");\nfor(j = 0; j != D[145].length; ++j) if(D[145][j].charCodeAt(0) !== 0xFFFD) { e[D[145][j]] = 37120 + j; d[37120 + j] = D[145][j];}\nD[146] = \"�����������������������������������������������������������������묨묪묬묭묮묯묰묱묲묳묷묹묺묿뭀뭁뭂뭃뭆뭈뭊뭋뭌뭎뭑뭒������뭓뭕뭖뭗뭙뭚뭛뭜뭝뭞뭟뭠뭢뭤뭥뭦뭧뭨뭩뭪뭫뭭뭮뭯뭰뭱������뭲뭳뭴뭵뭶뭷뭸뭹뭺뭻뭼뭽뭾뭿뮀뮁뮂뮃뮄뮅뮆뮇뮉뮊뮋뮍뮎뮏뮑뮒뮓뮔뮕뮖뮗뮘뮙뮚뮛뮜뮝뮞뮟뮠뮡뮢뮣뮥뮦뮧뮩뮪뮫뮭뮮뮯뮰뮱뮲뮳뮵뮶뮸뮹뮺뮻뮼뮽뮾뮿믁믂믃믅믆믇믉믊믋믌믍믎믏믑믒믔믕믖믗믘믙믚믛믜믝믞믟믠믡믢믣믤믥믦믧믨믩믪믫믬믭믮믯믰믱믲믳믴믵믶믷믺믻믽믾밁�\".split(\"\");\nfor(j = 0; j != D[146].length; ++j) if(D[146][j].charCodeAt(0) !== 0xFFFD) { e[D[146][j]] = 37376 + j; d[37376 + j] = D[146][j];}\nD[147] = \"�����������������������������������������������������������������밃밄밅밆밇밊밎밐밒밓밙밚밠밡밢밣밦밨밪밫밬밮밯밲밳밵������밶밷밹밺밻밼밽밾밿뱂뱆뱇뱈뱊뱋뱎뱏뱑뱒뱓뱔뱕뱖뱗뱘뱙������뱚뱛뱜뱞뱟뱠뱡뱢뱣뱤뱥뱦뱧뱨뱩뱪뱫뱬뱭뱮뱯뱰뱱뱲뱳뱴뱵뱶뱷뱸뱹뱺뱻뱼뱽뱾뱿벀벁벂벃벆벇벉벊벍벏벐벑벒벓벖벘벛벜벝벞벟벢벣벥벦벩벪벫벬벭벮벯벲벶벷벸벹벺벻벾벿볁볂볃볅볆볇볈볉볊볋볌볎볒볓볔볖볗볙볚볛볝볞볟볠볡볢볣볤볥볦볧볨볩볪볫볬볭볮볯볰볱볲볳볷볹볺볻볽�\".split(\"\");\nfor(j = 0; j != D[147].length; ++j) if(D[147][j].charCodeAt(0) !== 0xFFFD) { e[D[147][j]] = 37632 + j; d[37632 + j] = D[147][j];}\nD[148] = \"�����������������������������������������������������������������볾볿봀봁봂봃봆봈봊봋봌봍봎봏봑봒봓봕봖봗봘봙봚봛봜봝������봞봟봠봡봢봣봥봦봧봨봩봪봫봭봮봯봰봱봲봳봴봵봶봷봸봹������봺봻봼봽봾봿뵁뵂뵃뵄뵅뵆뵇뵊뵋뵍뵎뵏뵑뵒뵓뵔뵕뵖뵗뵚뵛뵜뵝뵞뵟뵠뵡뵢뵣뵥뵦뵧뵩뵪뵫뵬뵭뵮뵯뵰뵱뵲뵳뵴뵵뵶뵷뵸뵹뵺뵻뵼뵽뵾뵿붂붃붅붆붋붌붍붎붏붒붔붖붗붘붛붝붞붟붠붡붢붣붥붦붧붨붩붪붫붬붭붮붯붱붲붳붴붵붶붷붹붺붻붼붽붾붿뷀뷁뷂뷃뷄뷅뷆뷇뷈뷉뷊뷋뷌뷍뷎뷏뷐뷑�\".split(\"\");\nfor(j = 0; j != D[148].length; ++j) if(D[148][j].charCodeAt(0) !== 0xFFFD) { e[D[148][j]] = 37888 + j; d[37888 + j] = D[148][j];}\nD[149] = \"�����������������������������������������������������������������뷒뷓뷖뷗뷙뷚뷛뷝뷞뷟뷠뷡뷢뷣뷤뷥뷦뷧뷨뷪뷫뷬뷭뷮뷯뷱������뷲뷳뷵뷶뷷뷹뷺뷻뷼뷽뷾뷿븁븂븄븆븇븈븉븊븋븎븏븑븒븓������븕븖븗븘븙븚븛븞븠븡븢븣븤븥븦븧븨븩븪븫븬븭븮븯븰븱븲븳븴븵븶븷븸븹븺븻븼븽븾븿빀빁빂빃빆빇빉빊빋빍빏빐빑빒빓빖빘빜빝빞빟빢빣빥빦빧빩빫빬빭빮빯빲빶빷빸빹빺빾빿뺁뺂뺃뺅뺆뺇뺈뺉뺊뺋뺎뺒뺓뺔뺕뺖뺗뺚뺛뺜뺝뺞뺟뺠뺡뺢뺣뺤뺥뺦뺧뺩뺪뺫뺬뺭뺮뺯뺰뺱뺲뺳뺴뺵뺶뺷�\".split(\"\");\nfor(j = 0; j != D[149].length; ++j) if(D[149][j].charCodeAt(0) !== 0xFFFD) { e[D[149][j]] = 38144 + j; d[38144 + j] = D[149][j];}\nD[150] = \"�����������������������������������������������������������������뺸뺹뺺뺻뺼뺽뺾뺿뻀뻁뻂뻃뻄뻅뻆뻇뻈뻉뻊뻋뻌뻍뻎뻏뻒뻓������뻕뻖뻙뻚뻛뻜뻝뻞뻟뻡뻢뻦뻧뻨뻩뻪뻫뻭뻮뻯뻰뻱뻲뻳뻴뻵������뻶뻷뻸뻹뻺뻻뻼뻽뻾뻿뼀뼂뼃뼄뼅뼆뼇뼊뼋뼌뼍뼎뼏뼐뼑뼒뼓뼔뼕뼖뼗뼚뼞뼟뼠뼡뼢뼣뼤뼥뼦뼧뼨뼩뼪뼫뼬뼭뼮뼯뼰뼱뼲뼳뼴뼵뼶뼷뼸뼹뼺뼻뼼뼽뼾뼿뽂뽃뽅뽆뽇뽉뽊뽋뽌뽍뽎뽏뽒뽓뽔뽖뽗뽘뽙뽚뽛뽜뽝뽞뽟뽠뽡뽢뽣뽤뽥뽦뽧뽨뽩뽪뽫뽬뽭뽮뽯뽰뽱뽲뽳뽴뽵뽶뽷뽸뽹뽺뽻뽼뽽뽾뽿뾀뾁뾂�\".split(\"\");\nfor(j = 0; j != D[150].length; ++j) if(D[150][j].charCodeAt(0) !== 0xFFFD) { e[D[150][j]] = 38400 + j; d[38400 + j] = D[150][j];}\nD[151] = \"�����������������������������������������������������������������뾃뾄뾅뾆뾇뾈뾉뾊뾋뾌뾍뾎뾏뾐뾑뾒뾓뾕뾖뾗뾘뾙뾚뾛뾜뾝������뾞뾟뾠뾡뾢뾣뾤뾥뾦뾧뾨뾩뾪뾫뾬뾭뾮뾯뾱뾲뾳뾴뾵뾶뾷뾸������뾹뾺뾻뾼뾽뾾뾿뿀뿁뿂뿃뿄뿆뿇뿈뿉뿊뿋뿎뿏뿑뿒뿓뿕뿖뿗뿘뿙뿚뿛뿝뿞뿠뿢뿣뿤뿥뿦뿧뿨뿩뿪뿫뿬뿭뿮뿯뿰뿱뿲뿳뿴뿵뿶뿷뿸뿹뿺뿻뿼뿽뿾뿿쀀쀁쀂쀃쀄쀅쀆쀇쀈쀉쀊쀋쀌쀍쀎쀏쀐쀑쀒쀓쀔쀕쀖쀗쀘쀙쀚쀛쀜쀝쀞쀟쀠쀡쀢쀣쀤쀥쀦쀧쀨쀩쀪쀫쀬쀭쀮쀯쀰쀱쀲쀳쀴쀵쀶쀷쀸쀹쀺쀻쀽쀾쀿�\".split(\"\");\nfor(j = 0; j != D[151].length; ++j) if(D[151][j].charCodeAt(0) !== 0xFFFD) { e[D[151][j]] = 38656 + j; d[38656 + j] = D[151][j];}\nD[152] = \"�����������������������������������������������������������������쁀쁁쁂쁃쁄쁅쁆쁇쁈쁉쁊쁋쁌쁍쁎쁏쁐쁒쁓쁔쁕쁖쁗쁙쁚쁛������쁝쁞쁟쁡쁢쁣쁤쁥쁦쁧쁪쁫쁬쁭쁮쁯쁰쁱쁲쁳쁴쁵쁶쁷쁸쁹������쁺쁻쁼쁽쁾쁿삀삁삂삃삄삅삆삇삈삉삊삋삌삍삎삏삒삓삕삖삗삙삚삛삜삝삞삟삢삤삦삧삨삩삪삫삮삱삲삷삸삹삺삻삾샂샃샄샆샇샊샋샍샎샏샑샒샓샔샕샖샗샚샞샟샠샡샢샣샦샧샩샪샫샭샮샯샰샱샲샳샶샸샺샻샼샽샾샿섁섂섃섅섆섇섉섊섋섌섍섎섏섑섒섓섔섖섗섘섙섚섛섡섢섥섨섩섪섫섮�\".split(\"\");\nfor(j = 0; j != D[152].length; ++j) if(D[152][j].charCodeAt(0) !== 0xFFFD) { e[D[152][j]] = 38912 + j; d[38912 + j] = D[152][j];}\nD[153] = \"�����������������������������������������������������������������섲섳섴섵섷섺섻섽섾섿셁셂셃셄셅셆셇셊셎셏셐셑셒셓셖셗������셙셚셛셝셞셟셠셡셢셣셦셪셫셬셭셮셯셱셲셳셵셶셷셹셺셻������셼셽셾셿솀솁솂솃솄솆솇솈솉솊솋솏솑솒솓솕솗솘솙솚솛솞솠솢솣솤솦솧솪솫솭솮솯솱솲솳솴솵솶솷솸솹솺솻솼솾솿쇀쇁쇂쇃쇅쇆쇇쇉쇊쇋쇍쇎쇏쇐쇑쇒쇓쇕쇖쇙쇚쇛쇜쇝쇞쇟쇡쇢쇣쇥쇦쇧쇩쇪쇫쇬쇭쇮쇯쇲쇴쇵쇶쇷쇸쇹쇺쇻쇾쇿숁숂숃숅숆숇숈숉숊숋숎숐숒숓숔숕숖숗숚숛숝숞숡숢숣�\".split(\"\");\nfor(j = 0; j != D[153].length; ++j) if(D[153][j].charCodeAt(0) !== 0xFFFD) { e[D[153][j]] = 39168 + j; d[39168 + j] = D[153][j];}\nD[154] = \"�����������������������������������������������������������������숤숥숦숧숪숬숮숰숳숵숶숷숸숹숺숻숼숽숾숿쉀쉁쉂쉃쉄쉅������쉆쉇쉉쉊쉋쉌쉍쉎쉏쉒쉓쉕쉖쉗쉙쉚쉛쉜쉝쉞쉟쉡쉢쉣쉤쉦������쉧쉨쉩쉪쉫쉮쉯쉱쉲쉳쉵쉶쉷쉸쉹쉺쉻쉾슀슂슃슄슅슆슇슊슋슌슍슎슏슑슒슓슔슕슖슗슙슚슜슞슟슠슡슢슣슦슧슩슪슫슮슯슰슱슲슳슶슸슺슻슼슽슾슿싀싁싂싃싄싅싆싇싈싉싊싋싌싍싎싏싐싑싒싓싔싕싖싗싘싙싚싛싞싟싡싢싥싦싧싨싩싪싮싰싲싳싴싵싷싺싽싾싿쌁쌂쌃쌄쌅쌆쌇쌊쌋쌎쌏�\".split(\"\");\nfor(j = 0; j != D[154].length; ++j) if(D[154][j].charCodeAt(0) !== 0xFFFD) { e[D[154][j]] = 39424 + j; d[39424 + j] = D[154][j];}\nD[155] = \"�����������������������������������������������������������������쌐쌑쌒쌖쌗쌙쌚쌛쌝쌞쌟쌠쌡쌢쌣쌦쌧쌪쌫쌬쌭쌮쌯쌰쌱쌲������쌳쌴쌵쌶쌷쌸쌹쌺쌻쌼쌽쌾쌿썀썁썂썃썄썆썇썈썉썊썋썌썍������썎썏썐썑썒썓썔썕썖썗썘썙썚썛썜썝썞썟썠썡썢썣썤썥썦썧썪썫썭썮썯썱썳썴썵썶썷썺썻썾썿쎀쎁쎂쎃쎅쎆쎇쎉쎊쎋쎍쎎쎏쎐쎑쎒쎓쎔쎕쎖쎗쎘쎙쎚쎛쎜쎝쎞쎟쎠쎡쎢쎣쎤쎥쎦쎧쎨쎩쎪쎫쎬쎭쎮쎯쎰쎱쎲쎳쎴쎵쎶쎷쎸쎹쎺쎻쎼쎽쎾쎿쏁쏂쏃쏄쏅쏆쏇쏈쏉쏊쏋쏌쏍쏎쏏쏐쏑쏒쏓쏔쏕쏖쏗쏚�\".split(\"\");\nfor(j = 0; j != D[155].length; ++j) if(D[155][j].charCodeAt(0) !== 0xFFFD) { e[D[155][j]] = 39680 + j; d[39680 + j] = D[155][j];}\nD[156] = \"�����������������������������������������������������������������쏛쏝쏞쏡쏣쏤쏥쏦쏧쏪쏫쏬쏮쏯쏰쏱쏲쏳쏶쏷쏹쏺쏻쏼쏽쏾������쏿쐀쐁쐂쐃쐄쐅쐆쐇쐉쐊쐋쐌쐍쐎쐏쐑쐒쐓쐔쐕쐖쐗쐘쐙쐚������쐛쐜쐝쐞쐟쐠쐡쐢쐣쐥쐦쐧쐨쐩쐪쐫쐭쐮쐯쐱쐲쐳쐵쐶쐷쐸쐹쐺쐻쐾쐿쑀쑁쑂쑃쑄쑅쑆쑇쑉쑊쑋쑌쑍쑎쑏쑐쑑쑒쑓쑔쑕쑖쑗쑘쑙쑚쑛쑜쑝쑞쑟쑠쑡쑢쑣쑦쑧쑩쑪쑫쑭쑮쑯쑰쑱쑲쑳쑶쑷쑸쑺쑻쑼쑽쑾쑿쒁쒂쒃쒄쒅쒆쒇쒈쒉쒊쒋쒌쒍쒎쒏쒐쒑쒒쒓쒕쒖쒗쒘쒙쒚쒛쒝쒞쒟쒠쒡쒢쒣쒤쒥쒦쒧쒨쒩�\".split(\"\");\nfor(j = 0; j != D[156].length; ++j) if(D[156][j].charCodeAt(0) !== 0xFFFD) { e[D[156][j]] = 39936 + j; d[39936 + j] = D[156][j];}\nD[157] = \"�����������������������������������������������������������������쒪쒫쒬쒭쒮쒯쒰쒱쒲쒳쒴쒵쒶쒷쒹쒺쒻쒽쒾쒿쓀쓁쓂쓃쓄쓅������쓆쓇쓈쓉쓊쓋쓌쓍쓎쓏쓐쓑쓒쓓쓔쓕쓖쓗쓘쓙쓚쓛쓜쓝쓞쓟������쓠쓡쓢쓣쓤쓥쓦쓧쓨쓪쓫쓬쓭쓮쓯쓲쓳쓵쓶쓷쓹쓻쓼쓽쓾씂씃씄씅씆씇씈씉씊씋씍씎씏씑씒씓씕씖씗씘씙씚씛씝씞씟씠씡씢씣씤씥씦씧씪씫씭씮씯씱씲씳씴씵씶씷씺씼씾씿앀앁앂앃앆앇앋앏앐앑앒앖앚앛앜앟앢앣앥앦앧앩앪앫앬앭앮앯앲앶앷앸앹앺앻앾앿얁얂얃얅얆얈얉얊얋얎얐얒얓얔�\".split(\"\");\nfor(j = 0; j != D[157].length; ++j) if(D[157][j].charCodeAt(0) !== 0xFFFD) { e[D[157][j]] = 40192 + j; d[40192 + j] = D[157][j];}\nD[158] = \"�����������������������������������������������������������������얖얙얚얛얝얞얟얡얢얣얤얥얦얧얨얪얫얬얭얮얯얰얱얲얳얶������얷얺얿엀엁엂엃엋엍엏엒엓엕엖엗엙엚엛엜엝엞엟엢엤엦엧������엨엩엪엫엯엱엲엳엵엸엹엺엻옂옃옄옉옊옋옍옎옏옑옒옓옔옕옖옗옚옝옞옟옠옡옢옣옦옧옩옪옫옯옱옲옶옸옺옼옽옾옿왂왃왅왆왇왉왊왋왌왍왎왏왒왖왗왘왙왚왛왞왟왡왢왣왤왥왦왧왨왩왪왫왭왮왰왲왳왴왵왶왷왺왻왽왾왿욁욂욃욄욅욆욇욊욌욎욏욐욑욒욓욖욗욙욚욛욝욞욟욠욡욢욣욦�\".split(\"\");\nfor(j = 0; j != D[158].length; ++j) if(D[158][j].charCodeAt(0) !== 0xFFFD) { e[D[158][j]] = 40448 + j; d[40448 + j] = D[158][j];}\nD[159] = \"�����������������������������������������������������������������욨욪욫욬욭욮욯욲욳욵욶욷욻욼욽욾욿웂웄웆웇웈웉웊웋웎������웏웑웒웓웕웖웗웘웙웚웛웞웟웢웣웤웥웦웧웪웫웭웮웯웱웲������웳웴웵웶웷웺웻웼웾웿윀윁윂윃윆윇윉윊윋윍윎윏윐윑윒윓윖윘윚윛윜윝윞윟윢윣윥윦윧윩윪윫윬윭윮윯윲윴윶윸윹윺윻윾윿읁읂읃읅읆읇읈읉읋읎읐읙읚읛읝읞읟읡읢읣읤읥읦읧읩읪읬읭읮읯읰읱읲읳읶읷읹읺읻읿잀잁잂잆잋잌잍잏잒잓잕잙잛잜잝잞잟잢잧잨잩잪잫잮잯잱잲잳잵잶잷�\".split(\"\");\nfor(j = 0; j != D[159].length; ++j) if(D[159][j].charCodeAt(0) !== 0xFFFD) { e[D[159][j]] = 40704 + j; d[40704 + j] = D[159][j];}\nD[160] = \"�����������������������������������������������������������������잸잹잺잻잾쟂쟃쟄쟅쟆쟇쟊쟋쟍쟏쟑쟒쟓쟔쟕쟖쟗쟙쟚쟛쟜������쟞쟟쟠쟡쟢쟣쟥쟦쟧쟩쟪쟫쟭쟮쟯쟰쟱쟲쟳쟴쟵쟶쟷쟸쟹쟺������쟻쟼쟽쟾쟿젂젃젅젆젇젉젋젌젍젎젏젒젔젗젘젙젚젛젞젟젡젢젣젥젦젧젨젩젪젫젮젰젲젳젴젵젶젷젹젺젻젽젾젿졁졂졃졄졅졆졇졊졋졎졏졐졑졒졓졕졖졗졘졙졚졛졜졝졞졟졠졡졢졣졤졥졦졧졨졩졪졫졬졭졮졯졲졳졵졶졷졹졻졼졽졾졿좂좄좈좉좊좎좏좐좑좒좓좕좖좗좘좙좚좛좜좞좠좢좣좤�\".split(\"\");\nfor(j = 0; j != D[160].length; ++j) if(D[160][j].charCodeAt(0) !== 0xFFFD) { e[D[160][j]] = 40960 + j; d[40960 + j] = D[160][j];}\nD[161] = \"�����������������������������������������������������������������좥좦좧좩좪좫좬좭좮좯좰좱좲좳좴좵좶좷좸좹좺좻좾좿죀죁������죂죃죅죆죇죉죊죋죍죎죏죐죑죒죓죖죘죚죛죜죝죞죟죢죣죥������죦죧죨죩죪죫죬죭죮죯죰죱죲죳죴죶죷죸죹죺죻죾죿줁줂줃줇줈줉줊줋줎 、。·‥…¨〃­―∥\∼‘’“”〔〕〈〉《》「」『』【】±×÷≠≤≥∞∴°′″℃Å¢£¥♂♀∠⊥⌒∂∇≡≒§※☆★○●◎◇◆□■△▲▽▼→←↑↓↔〓≪≫√∽∝∵∫∬∈∋⊆⊇⊂⊃∪∩∧∨¬�\".split(\"\");\nfor(j = 0; j != D[161].length; ++j) if(D[161][j].charCodeAt(0) !== 0xFFFD) { e[D[161][j]] = 41216 + j; d[41216 + j] = D[161][j];}\nD[162] = \"�����������������������������������������������������������������줐줒줓줔줕줖줗줙줚줛줜줝줞줟줠줡줢줣줤줥줦줧줨줩줪줫������줭줮줯줰줱줲줳줵줶줷줸줹줺줻줼줽줾줿쥀쥁쥂쥃쥄쥅쥆쥇������쥈쥉쥊쥋쥌쥍쥎쥏쥒쥓쥕쥖쥗쥙쥚쥛쥜쥝쥞쥟쥢쥤쥥쥦쥧쥨쥩쥪쥫쥭쥮쥯⇒⇔∀∃´~ˇ˘˝˚˙¸˛¡¿ː∮∑∏¤℉‰◁◀▷▶♤♠♡♥♧♣⊙◈▣◐◑▒▤▥▨▧▦▩♨☏☎☜☞¶†‡↕↗↙↖↘♭♩♪♬㉿㈜№㏇™㏂㏘℡€®������������������������\".split(\"\");\nfor(j = 0; j != D[162].length; ++j) if(D[162][j].charCodeAt(0) !== 0xFFFD) { e[D[162][j]] = 41472 + j; d[41472 + j] = D[162][j];}\nD[163] = \"�����������������������������������������������������������������쥱쥲쥳쥵쥶쥷쥸쥹쥺쥻쥽쥾쥿즀즁즂즃즄즅즆즇즊즋즍즎즏������즑즒즓즔즕즖즗즚즜즞즟즠즡즢즣즤즥즦즧즨즩즪즫즬즭즮������즯즰즱즲즳즴즵즶즷즸즹즺즻즼즽즾즿짂짃짅짆짉짋짌짍짎짏짒짔짗짘짛!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[₩]^_`abcdefghijklmnopqrstuvwxyz{|} ̄�\".split(\"\");\nfor(j = 0; j != D[163].length; ++j) if(D[163][j].charCodeAt(0) !== 0xFFFD) { e[D[163][j]] = 41728 + j; d[41728 + j] = D[163][j];}\nD[164] = \"�����������������������������������������������������������������짞짟짡짣짥짦짨짩짪짫짮짲짳짴짵짶짷짺짻짽짾짿쨁쨂쨃쨄������쨅쨆쨇쨊쨎쨏쨐쨑쨒쨓쨕쨖쨗쨙쨚쨛쨜쨝쨞쨟쨠쨡쨢쨣쨤쨥������쨦쨧쨨쨪쨫쨬쨭쨮쨯쨰쨱쨲쨳쨴쨵쨶쨷쨸쨹쨺쨻쨼쨽쨾쨿쩀쩁쩂쩃쩄쩅쩆ㄱㄲㄳㄴㄵㄶㄷㄸㄹㄺㄻㄼㄽㄾㄿㅀㅁㅂㅃㅄㅅㅆㅇㅈㅉㅊㅋㅌㅍㅎㅏㅐㅑㅒㅓㅔㅕㅖㅗㅘㅙㅚㅛㅜㅝㅞㅟㅠㅡㅢㅣㅤㅥㅦㅧㅨㅩㅪㅫㅬㅭㅮㅯㅰㅱㅲㅳㅴㅵㅶㅷㅸㅹㅺㅻㅼㅽㅾㅿㆀㆁㆂㆃㆄㆅㆆㆇㆈㆉㆊㆋㆌㆍㆎ�\".split(\"\");\nfor(j = 0; j != D[164].length; ++j) if(D[164][j].charCodeAt(0) !== 0xFFFD) { e[D[164][j]] = 41984 + j; d[41984 + j] = D[164][j];}\nD[165] = \"�����������������������������������������������������������������쩇쩈쩉쩊쩋쩎쩏쩑쩒쩓쩕쩖쩗쩘쩙쩚쩛쩞쩢쩣쩤쩥쩦쩧쩩쩪������쩫쩬쩭쩮쩯쩰쩱쩲쩳쩴쩵쩶쩷쩸쩹쩺쩻쩼쩾쩿쪀쪁쪂쪃쪅쪆������쪇쪈쪉쪊쪋쪌쪍쪎쪏쪐쪑쪒쪓쪔쪕쪖쪗쪙쪚쪛쪜쪝쪞쪟쪠쪡쪢쪣쪤쪥쪦쪧ⅰⅱⅲⅳⅴⅵⅶⅷⅸⅹ�����ⅠⅡⅢⅣⅤⅥⅦⅧⅨⅩ�������ΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡΣΤΥΦΧΨΩ��������αβγδεζηθικλμνξοπρστυφχψω�������\".split(\"\");\nfor(j = 0; j != D[165].length; ++j) if(D[165][j].charCodeAt(0) !== 0xFFFD) { e[D[165][j]] = 42240 + j; d[42240 + j] = D[165][j];}\nD[166] = \"�����������������������������������������������������������������쪨쪩쪪쪫쪬쪭쪮쪯쪰쪱쪲쪳쪴쪵쪶쪷쪸쪹쪺쪻쪾쪿쫁쫂쫃쫅������쫆쫇쫈쫉쫊쫋쫎쫐쫒쫔쫕쫖쫗쫚쫛쫜쫝쫞쫟쫡쫢쫣쫤쫥쫦쫧������쫨쫩쫪쫫쫭쫮쫯쫰쫱쫲쫳쫵쫶쫷쫸쫹쫺쫻쫼쫽쫾쫿쬀쬁쬂쬃쬄쬅쬆쬇쬉쬊─│┌┐┘└├┬┤┴┼━┃┏┓┛┗┣┳┫┻╋┠┯┨┷┿┝┰┥┸╂┒┑┚┙┖┕┎┍┞┟┡┢┦┧┩┪┭┮┱┲┵┶┹┺┽┾╀╁╃╄╅╆╇╈╉╊���������������������������\".split(\"\");\nfor(j = 0; j != D[166].length; ++j) if(D[166][j].charCodeAt(0) !== 0xFFFD) { e[D[166][j]] = 42496 + j; d[42496 + j] = D[166][j];}\nD[167] = \"�����������������������������������������������������������������쬋쬌쬍쬎쬏쬑쬒쬓쬕쬖쬗쬙쬚쬛쬜쬝쬞쬟쬢쬣쬤쬥쬦쬧쬨쬩������쬪쬫쬬쬭쬮쬯쬰쬱쬲쬳쬴쬵쬶쬷쬸쬹쬺쬻쬼쬽쬾쬿쭀쭂쭃쭄������쭅쭆쭇쭊쭋쭍쭎쭏쭑쭒쭓쭔쭕쭖쭗쭚쭛쭜쭞쭟쭠쭡쭢쭣쭥쭦쭧쭨쭩쭪쭫쭬㎕㎖㎗ℓ㎘㏄㎣㎤㎥㎦㎙㎚㎛㎜㎝㎞㎟㎠㎡㎢㏊㎍㎎㎏㏏㎈㎉㏈㎧㎨㎰㎱㎲㎳㎴㎵㎶㎷㎸㎹㎀㎁㎂㎃㎄㎺㎻㎼㎽㎾㎿㎐㎑㎒㎓㎔Ω㏀㏁㎊㎋㎌㏖㏅㎭㎮㎯㏛㎩㎪㎫㎬㏝㏐㏓㏃㏉㏜㏆����������������\".split(\"\");\nfor(j = 0; j != D[167].length; ++j) if(D[167][j].charCodeAt(0) !== 0xFFFD) { e[D[167][j]] = 42752 + j; d[42752 + j] = D[167][j];}\nD[168] = \"�����������������������������������������������������������������쭭쭮쭯쭰쭱쭲쭳쭴쭵쭶쭷쭺쭻쭼쭽쭾쭿쮀쮁쮂쮃쮄쮅쮆쮇쮈������쮉쮊쮋쮌쮍쮎쮏쮐쮑쮒쮓쮔쮕쮖쮗쮘쮙쮚쮛쮝쮞쮟쮠쮡쮢쮣������쮤쮥쮦쮧쮨쮩쮪쮫쮬쮭쮮쮯쮰쮱쮲쮳쮴쮵쮶쮷쮹쮺쮻쮼쮽쮾쮿쯀쯁쯂쯃쯄ÆЪĦ�IJ�ĿŁØŒºÞŦŊ�㉠㉡㉢㉣㉤㉥㉦㉧㉨㉩㉪㉫㉬㉭㉮㉯㉰㉱㉲㉳㉴㉵㉶㉷㉸㉹㉺㉻ⓐⓑⓒⓓⓔⓕⓖⓗⓘⓙⓚⓛⓜⓝⓞⓟⓠⓡⓢⓣⓤⓥⓦⓧⓨⓩ①②③④⑤⑥⑦⑧⑨⑩⑪⑫⑬⑭⑮½⅓⅔¼¾⅛⅜⅝⅞�\".split(\"\");\nfor(j = 0; j != D[168].length; ++j) if(D[168][j].charCodeAt(0) !== 0xFFFD) { e[D[168][j]] = 43008 + j; d[43008 + j] = D[168][j];}\nD[169] = \"�����������������������������������������������������������������쯅쯆쯇쯈쯉쯊쯋쯌쯍쯎쯏쯐쯑쯒쯓쯕쯖쯗쯘쯙쯚쯛쯜쯝쯞쯟������쯠쯡쯢쯣쯥쯦쯨쯪쯫쯬쯭쯮쯯쯰쯱쯲쯳쯴쯵쯶쯷쯸쯹쯺쯻쯼������쯽쯾쯿찀찁찂찃찄찅찆찇찈찉찊찋찎찏찑찒찓찕찖찗찘찙찚찛찞찟찠찣찤æđðħıijĸŀłøœßþŧŋʼn㈀㈁㈂㈃㈄㈅㈆㈇㈈㈉㈊㈋㈌㈍㈎㈏㈐㈑㈒㈓㈔㈕㈖㈗㈘㈙㈚㈛⒜⒝⒞⒟⒠⒡⒢⒣⒤⒥⒦⒧⒨⒩⒪⒫⒬⒭⒮⒯⒰⒱⒲⒳⒴⒵⑴⑵⑶⑷⑸⑹⑺⑻⑼⑽⑾⑿⒀⒁⒂¹²³⁴ⁿ₁₂₃₄�\".split(\"\");\nfor(j = 0; j != D[169].length; ++j) if(D[169][j].charCodeAt(0) !== 0xFFFD) { e[D[169][j]] = 43264 + j; d[43264 + j] = D[169][j];}\nD[170] = \"�����������������������������������������������������������������찥찦찪찫찭찯찱찲찳찴찵찶찷찺찿챀챁챂챃챆챇챉챊챋챍챎������챏챐챑챒챓챖챚챛챜챝챞챟챡챢챣챥챧챩챪챫챬챭챮챯챱챲������챳챴챶챷챸챹챺챻챼챽챾챿첀첁첂첃첄첅첆첇첈첉첊첋첌첍첎첏첐첑첒첓ぁあぃいぅうぇえぉおかがきぎくぐけげこごさざしじすずせぜそぞただちぢっつづてでとどなにぬねのはばぱひびぴふぶぷへべぺほぼぽまみむめもゃやゅゆょよらりるれろゎわゐゑをん������������\".split(\"\");\nfor(j = 0; j != D[170].length; ++j) if(D[170][j].charCodeAt(0) !== 0xFFFD) { e[D[170][j]] = 43520 + j; d[43520 + j] = D[170][j];}\nD[171] = \"�����������������������������������������������������������������첔첕첖첗첚첛첝첞첟첡첢첣첤첥첦첧첪첮첯첰첱첲첳첶첷첹������첺첻첽첾첿쳀쳁쳂쳃쳆쳈쳊쳋쳌쳍쳎쳏쳑쳒쳓쳕쳖쳗쳘쳙쳚������쳛쳜쳝쳞쳟쳠쳡쳢쳣쳥쳦쳧쳨쳩쳪쳫쳭쳮쳯쳱쳲쳳쳴쳵쳶쳷쳸쳹쳺쳻쳼쳽ァアィイゥウェエォオカガキギクグケゲコゴサザシジスズセゼソゾタダチヂッツヅテデトドナニヌネノハバパヒビピフブプヘベペホボポマミムメモャヤュユョヨラリルレロヮワヰヱヲンヴヵヶ���������\".split(\"\");\nfor(j = 0; j != D[171].length; ++j) if(D[171][j].charCodeAt(0) !== 0xFFFD) { e[D[171][j]] = 43776 + j; d[43776 + j] = D[171][j];}\nD[172] = \"�����������������������������������������������������������������쳾쳿촀촂촃촄촅촆촇촊촋촍촎촏촑촒촓촔촕촖촗촚촜촞촟촠������촡촢촣촥촦촧촩촪촫촭촮촯촰촱촲촳촴촵촶촷촸촺촻촼촽촾������촿쵀쵁쵂쵃쵄쵅쵆쵇쵈쵉쵊쵋쵌쵍쵎쵏쵐쵑쵒쵓쵔쵕쵖쵗쵘쵙쵚쵛쵝쵞쵟АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ���������������абвгдеёжзийклмнопрстуфхцчшщъыьэюя��������������\".split(\"\");\nfor(j = 0; j != D[172].length; ++j) if(D[172][j].charCodeAt(0) !== 0xFFFD) { e[D[172][j]] = 44032 + j; d[44032 + j] = D[172][j];}\nD[173] = \"�����������������������������������������������������������������쵡쵢쵣쵥쵦쵧쵨쵩쵪쵫쵮쵰쵲쵳쵴쵵쵶쵷쵹쵺쵻쵼쵽쵾쵿춀������춁춂춃춄춅춆춇춉춊춋춌춍춎춏춐춑춒춓춖춗춙춚춛춝춞춟������춠춡춢춣춦춨춪춫춬춭춮춯춱춲춳춴춵춶춷춸춹춺춻춼춽춾춿췀췁췂췃췅�����������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[173].length; ++j) if(D[173][j].charCodeAt(0) !== 0xFFFD) { e[D[173][j]] = 44288 + j; d[44288 + j] = D[173][j];}\nD[174] = \"�����������������������������������������������������������������췆췇췈췉췊췋췍췎췏췑췒췓췔췕췖췗췘췙췚췛췜췝췞췟췠췡������췢췣췤췥췦췧췩췪췫췭췮췯췱췲췳췴췵췶췷췺췼췾췿츀츁츂������츃츅츆츇츉츊츋츍츎츏츐츑츒츓츕츖츗츘츚츛츜츝츞츟츢츣츥츦츧츩츪츫�����������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[174].length; ++j) if(D[174][j].charCodeAt(0) !== 0xFFFD) { e[D[174][j]] = 44544 + j; d[44544 + j] = D[174][j];}\nD[175] = \"�����������������������������������������������������������������츬츭츮츯츲츴츶츷츸츹츺츻츼츽츾츿칀칁칂칃칄칅칆칇칈칉������칊칋칌칍칎칏칐칑칒칓칔칕칖칗칚칛칝칞칢칣칤칥칦칧칪칬������칮칯칰칱칲칳칶칷칹칺칻칽칾칿캀캁캂캃캆캈캊캋캌캍캎캏캒캓캕캖캗캙�����������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[175].length; ++j) if(D[175][j].charCodeAt(0) !== 0xFFFD) { e[D[175][j]] = 44800 + j; d[44800 + j] = D[175][j];}\nD[176] = \"�����������������������������������������������������������������캚캛캜캝캞캟캢캦캧캨캩캪캫캮캯캰캱캲캳캴캵캶캷캸캹캺������캻캼캽캾캿컀컂컃컄컅컆컇컈컉컊컋컌컍컎컏컐컑컒컓컔컕������컖컗컘컙컚컛컜컝컞컟컠컡컢컣컦컧컩컪컭컮컯컰컱컲컳컶컺컻컼컽컾컿가각간갇갈갉갊감갑값갓갔강갖갗같갚갛개객갠갤갬갭갯갰갱갸갹갼걀걋걍걔걘걜거걱건걷걸걺검겁것겄겅겆겉겊겋게겐겔겜겝겟겠겡겨격겪견겯결겸겹겻겼경곁계곈곌곕곗고곡곤곧골곪곬곯곰곱곳공곶과곽관괄괆�\".split(\"\");\nfor(j = 0; j != D[176].length; ++j) if(D[176][j].charCodeAt(0) !== 0xFFFD) { e[D[176][j]] = 45056 + j; d[45056 + j] = D[176][j];}\nD[177] = \"�����������������������������������������������������������������켂켃켅켆켇켉켊켋켌켍켎켏켒켔켖켗켘켙켚켛켝켞켟켡켢켣������켥켦켧켨켩켪켫켮켲켳켴켵켶켷켹켺켻켼켽켾켿콀콁콂콃콄������콅콆콇콈콉콊콋콌콍콎콏콐콑콒콓콖콗콙콚콛콝콞콟콠콡콢콣콦콨콪콫콬괌괍괏광괘괜괠괩괬괭괴괵괸괼굄굅굇굉교굔굘굡굣구국군굳굴굵굶굻굼굽굿궁궂궈궉권궐궜궝궤궷귀귁귄귈귐귑귓규균귤그극근귿글긁금급긋긍긔기긱긴긷길긺김깁깃깅깆깊까깍깎깐깔깖깜깝깟깠깡깥깨깩깬깰깸�\".split(\"\");\nfor(j = 0; j != D[177].length; ++j) if(D[177][j].charCodeAt(0) !== 0xFFFD) { e[D[177][j]] = 45312 + j; d[45312 + j] = D[177][j];}\nD[178] = \"�����������������������������������������������������������������콭콮콯콲콳콵콶콷콹콺콻콼콽콾콿쾁쾂쾃쾄쾆쾇쾈쾉쾊쾋쾍������쾎쾏쾐쾑쾒쾓쾔쾕쾖쾗쾘쾙쾚쾛쾜쾝쾞쾟쾠쾢쾣쾤쾥쾦쾧쾩������쾪쾫쾬쾭쾮쾯쾱쾲쾳쾴쾵쾶쾷쾸쾹쾺쾻쾼쾽쾾쾿쿀쿁쿂쿃쿅쿆쿇쿈쿉쿊쿋깹깻깼깽꺄꺅꺌꺼꺽꺾껀껄껌껍껏껐껑께껙껜껨껫껭껴껸껼꼇꼈꼍꼐꼬꼭꼰꼲꼴꼼꼽꼿꽁꽂꽃꽈꽉꽐꽜꽝꽤꽥꽹꾀꾄꾈꾐꾑꾕꾜꾸꾹꾼꿀꿇꿈꿉꿋꿍꿎꿔꿜꿨꿩꿰꿱꿴꿸뀀뀁뀄뀌뀐뀔뀜뀝뀨끄끅끈끊끌끎끓끔끕끗끙�\".split(\"\");\nfor(j = 0; j != D[178].length; ++j) if(D[178][j].charCodeAt(0) !== 0xFFFD) { e[D[178][j]] = 45568 + j; d[45568 + j] = D[178][j];}\nD[179] = \"�����������������������������������������������������������������쿌쿍쿎쿏쿐쿑쿒쿓쿔쿕쿖쿗쿘쿙쿚쿛쿜쿝쿞쿟쿢쿣쿥쿦쿧쿩������쿪쿫쿬쿭쿮쿯쿲쿴쿶쿷쿸쿹쿺쿻쿽쿾쿿퀁퀂퀃퀅퀆퀇퀈퀉퀊������퀋퀌퀍퀎퀏퀐퀒퀓퀔퀕퀖퀗퀙퀚퀛퀜퀝퀞퀟퀠퀡퀢퀣퀤퀥퀦퀧퀨퀩퀪퀫퀬끝끼끽낀낄낌낍낏낑나낙낚난낟날낡낢남납낫났낭낮낯낱낳내낵낸낼냄냅냇냈냉냐냑냔냘냠냥너넉넋넌널넒넓넘넙넛넜넝넣네넥넨넬넴넵넷넸넹녀녁년녈념녑녔녕녘녜녠노녹논놀놂놈놉놋농높놓놔놘놜놨뇌뇐뇔뇜뇝�\".split(\"\");\nfor(j = 0; j != D[179].length; ++j) if(D[179][j].charCodeAt(0) !== 0xFFFD) { e[D[179][j]] = 45824 + j; d[45824 + j] = D[179][j];}\nD[180] = \"�����������������������������������������������������������������퀮퀯퀰퀱퀲퀳퀶퀷퀹퀺퀻퀽퀾퀿큀큁큂큃큆큈큊큋큌큍큎큏������큑큒큓큕큖큗큙큚큛큜큝큞큟큡큢큣큤큥큦큧큨큩큪큫큮큯������큱큲큳큵큶큷큸큹큺큻큾큿킀킂킃킄킅킆킇킈킉킊킋킌킍킎킏킐킑킒킓킔뇟뇨뇩뇬뇰뇹뇻뇽누눅눈눋눌눔눕눗눙눠눴눼뉘뉜뉠뉨뉩뉴뉵뉼늄늅늉느늑는늘늙늚늠늡늣능늦늪늬늰늴니닉닌닐닒님닙닛닝닢다닥닦단닫달닭닮닯닳담답닷닸당닺닻닿대댁댄댈댐댑댓댔댕댜더덕덖던덛덜덞덟덤덥�\".split(\"\");\nfor(j = 0; j != D[180].length; ++j) if(D[180][j].charCodeAt(0) !== 0xFFFD) { e[D[180][j]] = 46080 + j; d[46080 + j] = D[180][j];}\nD[181] = \"�����������������������������������������������������������������킕킖킗킘킙킚킛킜킝킞킟킠킡킢킣킦킧킩킪킫킭킮킯킰킱킲������킳킶킸킺킻킼킽킾킿탂탃탅탆탇탊탋탌탍탎탏탒탖탗탘탙탚������탛탞탟탡탢탣탥탦탧탨탩탪탫탮탲탳탴탵탶탷탹탺탻탼탽탾탿턀턁턂턃턄덧덩덫덮데덱덴델뎀뎁뎃뎄뎅뎌뎐뎔뎠뎡뎨뎬도독돈돋돌돎돐돔돕돗동돛돝돠돤돨돼됐되된될됨됩됫됴두둑둔둘둠둡둣둥둬뒀뒈뒝뒤뒨뒬뒵뒷뒹듀듄듈듐듕드득든듣들듦듬듭듯등듸디딕딘딛딜딤딥딧딨딩딪따딱딴딸�\".split(\"\");\nfor(j = 0; j != D[181].length; ++j) if(D[181][j].charCodeAt(0) !== 0xFFFD) { e[D[181][j]] = 46336 + j; d[46336 + j] = D[181][j];}\nD[182] = \"�����������������������������������������������������������������턅턆턇턈턉턊턋턌턎턏턐턑턒턓턔턕턖턗턘턙턚턛턜턝턞턟������턠턡턢턣턤턥턦턧턨턩턪턫턬턭턮턯턲턳턵턶턷턹턻턼턽턾������턿텂텆텇텈텉텊텋텎텏텑텒텓텕텖텗텘텙텚텛텞텠텢텣텤텥텦텧텩텪텫텭땀땁땃땄땅땋때땍땐땔땜땝땟땠땡떠떡떤떨떪떫떰떱떳떴떵떻떼떽뗀뗄뗌뗍뗏뗐뗑뗘뗬또똑똔똘똥똬똴뙈뙤뙨뚜뚝뚠뚤뚫뚬뚱뛔뛰뛴뛸뜀뜁뜅뜨뜩뜬뜯뜰뜸뜹뜻띄띈띌띔띕띠띤띨띰띱띳띵라락란랄람랍랏랐랑랒랖랗�\".split(\"\");\nfor(j = 0; j != D[182].length; ++j) if(D[182][j].charCodeAt(0) !== 0xFFFD) { e[D[182][j]] = 46592 + j; d[46592 + j] = D[182][j];}\nD[183] = \"�����������������������������������������������������������������텮텯텰텱텲텳텴텵텶텷텸텹텺텻텽텾텿톀톁톂톃톅톆톇톉톊������톋톌톍톎톏톐톑톒톓톔톕톖톗톘톙톚톛톜톝톞톟톢톣톥톦톧������톩톪톫톬톭톮톯톲톴톶톷톸톹톻톽톾톿퇁퇂퇃퇄퇅퇆퇇퇈퇉퇊퇋퇌퇍퇎퇏래랙랜랠램랩랫랬랭랴략랸럇량러럭런럴럼럽럿렀렁렇레렉렌렐렘렙렛렝려력련렬렴렵렷렸령례롄롑롓로록론롤롬롭롯롱롸롼뢍뢨뢰뢴뢸룀룁룃룅료룐룔룝룟룡루룩룬룰룸룹룻룽뤄뤘뤠뤼뤽륀륄륌륏륑류륙륜률륨륩�\".split(\"\");\nfor(j = 0; j != D[183].length; ++j) if(D[183][j].charCodeAt(0) !== 0xFFFD) { e[D[183][j]] = 46848 + j; d[46848 + j] = D[183][j];}\nD[184] = \"�����������������������������������������������������������������퇐퇑퇒퇓퇔퇕퇖퇗퇙퇚퇛퇜퇝퇞퇟퇠퇡퇢퇣퇤퇥퇦퇧퇨퇩퇪������퇫퇬퇭퇮퇯퇰퇱퇲퇳퇵퇶퇷퇹퇺퇻퇼퇽퇾퇿툀툁툂툃툄툅툆������툈툊툋툌툍툎툏툑툒툓툔툕툖툗툘툙툚툛툜툝툞툟툠툡툢툣툤툥툦툧툨툩륫륭르륵른를름릅릇릉릊릍릎리릭린릴림립릿링마막만많맏말맑맒맘맙맛망맞맡맣매맥맨맬맴맵맷맸맹맺먀먁먈먕머먹먼멀멂멈멉멋멍멎멓메멕멘멜멤멥멧멨멩며멱면멸몃몄명몇몌모목몫몬몰몲몸몹못몽뫄뫈뫘뫙뫼�\".split(\"\");\nfor(j = 0; j != D[184].length; ++j) if(D[184][j].charCodeAt(0) !== 0xFFFD) { e[D[184][j]] = 47104 + j; d[47104 + j] = D[184][j];}\nD[185] = \"�����������������������������������������������������������������툪툫툮툯툱툲툳툵툶툷툸툹툺툻툾퉀퉂퉃퉄퉅퉆퉇퉉퉊퉋퉌������퉍퉎퉏퉐퉑퉒퉓퉔퉕퉖퉗퉘퉙퉚퉛퉝퉞퉟퉠퉡퉢퉣퉥퉦퉧퉨������퉩퉪퉫퉬퉭퉮퉯퉰퉱퉲퉳퉴퉵퉶퉷퉸퉹퉺퉻퉼퉽퉾퉿튂튃튅튆튇튉튊튋튌묀묄묍묏묑묘묜묠묩묫무묵묶문묻물묽묾뭄뭅뭇뭉뭍뭏뭐뭔뭘뭡뭣뭬뮈뮌뮐뮤뮨뮬뮴뮷므믄믈믐믓미믹민믿밀밂밈밉밋밌밍및밑바박밖밗반받발밝밞밟밤밥밧방밭배백밴밸뱀뱁뱃뱄뱅뱉뱌뱍뱐뱝버벅번벋벌벎범법벗�\".split(\"\");\nfor(j = 0; j != D[185].length; ++j) if(D[185][j].charCodeAt(0) !== 0xFFFD) { e[D[185][j]] = 47360 + j; d[47360 + j] = D[185][j];}\nD[186] = \"�����������������������������������������������������������������튍튎튏튒튓튔튖튗튘튙튚튛튝튞튟튡튢튣튥튦튧튨튩튪튫튭������튮튯튰튲튳튴튵튶튷튺튻튽튾틁틃틄틅틆틇틊틌틍틎틏틐틑������틒틓틕틖틗틙틚틛틝틞틟틠틡틢틣틦틧틨틩틪틫틬틭틮틯틲틳틵틶틷틹틺벙벚베벡벤벧벨벰벱벳벴벵벼벽변별볍볏볐병볕볘볜보복볶본볼봄봅봇봉봐봔봤봬뵀뵈뵉뵌뵐뵘뵙뵤뵨부북분붇불붉붊붐붑붓붕붙붚붜붤붰붸뷔뷕뷘뷜뷩뷰뷴뷸븀븃븅브븍븐블븜븝븟비빅빈빌빎빔빕빗빙빚빛빠빡빤�\".split(\"\");\nfor(j = 0; j != D[186].length; ++j) if(D[186][j].charCodeAt(0) !== 0xFFFD) { e[D[186][j]] = 47616 + j; d[47616 + j] = D[186][j];}\nD[187] = \"�����������������������������������������������������������������틻틼틽틾틿팂팄팆팇팈팉팊팋팏팑팒팓팕팗팘팙팚팛팞팢팣������팤팦팧팪팫팭팮팯팱팲팳팴팵팶팷팺팾팿퍀퍁퍂퍃퍆퍇퍈퍉������퍊퍋퍌퍍퍎퍏퍐퍑퍒퍓퍔퍕퍖퍗퍘퍙퍚퍛퍜퍝퍞퍟퍠퍡퍢퍣퍤퍥퍦퍧퍨퍩빨빪빰빱빳빴빵빻빼빽뺀뺄뺌뺍뺏뺐뺑뺘뺙뺨뻐뻑뻔뻗뻘뻠뻣뻤뻥뻬뼁뼈뼉뼘뼙뼛뼜뼝뽀뽁뽄뽈뽐뽑뽕뾔뾰뿅뿌뿍뿐뿔뿜뿟뿡쀼쁑쁘쁜쁠쁨쁩삐삑삔삘삠삡삣삥사삭삯산삳살삵삶삼삽삿샀상샅새색샌샐샘샙샛샜생샤�\".split(\"\");\nfor(j = 0; j != D[187].length; ++j) if(D[187][j].charCodeAt(0) !== 0xFFFD) { e[D[187][j]] = 47872 + j; d[47872 + j] = D[187][j];}\nD[188] = \"�����������������������������������������������������������������퍪퍫퍬퍭퍮퍯퍰퍱퍲퍳퍴퍵퍶퍷퍸퍹퍺퍻퍾퍿펁펂펃펅펆펇������펈펉펊펋펎펒펓펔펕펖펗펚펛펝펞펟펡펢펣펤펥펦펧펪펬펮������펯펰펱펲펳펵펶펷펹펺펻펽펾펿폀폁폂폃폆폇폊폋폌폍폎폏폑폒폓폔폕폖샥샨샬샴샵샷샹섀섄섈섐섕서석섞섟선섣설섦섧섬섭섯섰성섶세섹센셀셈셉셋셌셍셔셕션셜셤셥셧셨셩셰셴셸솅소속솎손솔솖솜솝솟송솥솨솩솬솰솽쇄쇈쇌쇔쇗쇘쇠쇤쇨쇰쇱쇳쇼쇽숀숄숌숍숏숑수숙순숟술숨숩숫숭�\".split(\"\");\nfor(j = 0; j != D[188].length; ++j) if(D[188][j].charCodeAt(0) !== 0xFFFD) { e[D[188][j]] = 48128 + j; d[48128 + j] = D[188][j];}\nD[189] = \"�����������������������������������������������������������������폗폙폚폛폜폝폞폟폠폢폤폥폦폧폨폩폪폫폮폯폱폲폳폵폶폷������폸폹폺폻폾퐀퐂퐃퐄퐅퐆퐇퐉퐊퐋퐌퐍퐎퐏퐐퐑퐒퐓퐔퐕퐖������퐗퐘퐙퐚퐛퐜퐞퐟퐠퐡퐢퐣퐤퐥퐦퐧퐨퐩퐪퐫퐬퐭퐮퐯퐰퐱퐲퐳퐴퐵퐶퐷숯숱숲숴쉈쉐쉑쉔쉘쉠쉥쉬쉭쉰쉴쉼쉽쉿슁슈슉슐슘슛슝스슥슨슬슭슴습슷승시식신싣실싫심십싯싱싶싸싹싻싼쌀쌈쌉쌌쌍쌓쌔쌕쌘쌜쌤쌥쌨쌩썅써썩썬썰썲썸썹썼썽쎄쎈쎌쏀쏘쏙쏜쏟쏠쏢쏨쏩쏭쏴쏵쏸쐈쐐쐤쐬쐰�\".split(\"\");\nfor(j = 0; j != D[189].length; ++j) if(D[189][j].charCodeAt(0) !== 0xFFFD) { e[D[189][j]] = 48384 + j; d[48384 + j] = D[189][j];}\nD[190] = \"�����������������������������������������������������������������퐸퐹퐺퐻퐼퐽퐾퐿푁푂푃푅푆푇푈푉푊푋푌푍푎푏푐푑푒푓������푔푕푖푗푘푙푚푛푝푞푟푡푢푣푥푦푧푨푩푪푫푬푮푰푱푲������푳푴푵푶푷푺푻푽푾풁풃풄풅풆풇풊풌풎풏풐풑풒풓풕풖풗풘풙풚풛풜풝쐴쐼쐽쑈쑤쑥쑨쑬쑴쑵쑹쒀쒔쒜쒸쒼쓩쓰쓱쓴쓸쓺쓿씀씁씌씐씔씜씨씩씬씰씸씹씻씽아악안앉않알앍앎앓암압앗았앙앝앞애액앤앨앰앱앳앴앵야약얀얄얇얌얍얏양얕얗얘얜얠얩어억언얹얻얼얽얾엄업없엇었엉엊엌엎�\".split(\"\");\nfor(j = 0; j != D[190].length; ++j) if(D[190][j].charCodeAt(0) !== 0xFFFD) { e[D[190][j]] = 48640 + j; d[48640 + j] = D[190][j];}\nD[191] = \"�����������������������������������������������������������������풞풟풠풡풢풣풤풥풦풧풨풪풫풬풭풮풯풰풱풲풳풴풵풶풷풸������풹풺풻풼풽풾풿퓀퓁퓂퓃퓄퓅퓆퓇퓈퓉퓊퓋퓍퓎퓏퓑퓒퓓퓕������퓖퓗퓘퓙퓚퓛퓝퓞퓠퓡퓢퓣퓤퓥퓦퓧퓩퓪퓫퓭퓮퓯퓱퓲퓳퓴퓵퓶퓷퓹퓺퓼에엑엔엘엠엡엣엥여역엮연열엶엷염엽엾엿였영옅옆옇예옌옐옘옙옛옜오옥온올옭옮옰옳옴옵옷옹옻와왁완왈왐왑왓왔왕왜왝왠왬왯왱외왹왼욀욈욉욋욍요욕욘욜욤욥욧용우욱운울욹욺움웁웃웅워웍원월웜웝웠웡웨�\".split(\"\");\nfor(j = 0; j != D[191].length; ++j) if(D[191][j].charCodeAt(0) !== 0xFFFD) { e[D[191][j]] = 48896 + j; d[48896 + j] = D[191][j];}\nD[192] = \"�����������������������������������������������������������������퓾퓿픀픁픂픃픅픆픇픉픊픋픍픎픏픐픑픒픓픖픘픙픚픛픜픝������픞픟픠픡픢픣픤픥픦픧픨픩픪픫픬픭픮픯픰픱픲픳픴픵픶픷������픸픹픺픻픾픿핁핂핃핅핆핇핈핉핊핋핎핐핒핓핔핕핖핗핚핛핝핞핟핡핢핣웩웬웰웸웹웽위윅윈윌윔윕윗윙유육윤율윰윱윳융윷으윽은을읊음읍읏응읒읓읔읕읖읗의읜읠읨읫이익인일읽읾잃임입잇있잉잊잎자작잔잖잗잘잚잠잡잣잤장잦재잭잰잴잼잽잿쟀쟁쟈쟉쟌쟎쟐쟘쟝쟤쟨쟬저적전절젊�\".split(\"\");\nfor(j = 0; j != D[192].length; ++j) if(D[192][j].charCodeAt(0) !== 0xFFFD) { e[D[192][j]] = 49152 + j; d[49152 + j] = D[192][j];}\nD[193] = \"�����������������������������������������������������������������핤핦핧핪핬핮핯핰핱핲핳핶핷핹핺핻핽핾핿햀햁햂햃햆햊햋������햌햍햎햏햑햒햓햔햕햖햗햘햙햚햛햜햝햞햟햠햡햢햣햤햦햧������햨햩햪햫햬햭햮햯햰햱햲햳햴햵햶햷햸햹햺햻햼햽햾햿헀헁헂헃헄헅헆헇점접젓정젖제젝젠젤젬젭젯젱져젼졀졈졉졌졍졔조족존졸졺좀좁좃종좆좇좋좌좍좔좝좟좡좨좼좽죄죈죌죔죕죗죙죠죡죤죵주죽준줄줅줆줌줍줏중줘줬줴쥐쥑쥔쥘쥠쥡쥣쥬쥰쥴쥼즈즉즌즐즘즙즛증지직진짇질짊짐집짓�\".split(\"\");\nfor(j = 0; j != D[193].length; ++j) if(D[193][j].charCodeAt(0) !== 0xFFFD) { e[D[193][j]] = 49408 + j; d[49408 + j] = D[193][j];}\nD[194] = \"�����������������������������������������������������������������헊헋헍헎헏헑헓헔헕헖헗헚헜헞헟헠헡헢헣헦헧헩헪헫헭헮������헯헰헱헲헳헶헸헺헻헼헽헾헿혂혃혅혆혇혉혊혋혌혍혎혏혒������혖혗혘혙혚혛혝혞혟혡혢혣혥혦혧혨혩혪혫혬혮혯혰혱혲혳혴혵혶혷혺혻징짖짙짚짜짝짠짢짤짧짬짭짯짰짱째짹짼쨀쨈쨉쨋쨌쨍쨔쨘쨩쩌쩍쩐쩔쩜쩝쩟쩠쩡쩨쩽쪄쪘쪼쪽쫀쫄쫌쫍쫏쫑쫓쫘쫙쫠쫬쫴쬈쬐쬔쬘쬠쬡쭁쭈쭉쭌쭐쭘쭙쭝쭤쭸쭹쮜쮸쯔쯤쯧쯩찌찍찐찔찜찝찡찢찧차착찬찮찰참찹찻�\".split(\"\");\nfor(j = 0; j != D[194].length; ++j) if(D[194][j].charCodeAt(0) !== 0xFFFD) { e[D[194][j]] = 49664 + j; d[49664 + j] = D[194][j];}\nD[195] = \"�����������������������������������������������������������������혽혾혿홁홂홃홄홆홇홊홌홎홏홐홒홓홖홗홙홚홛홝홞홟홠홡������홢홣홤홥홦홨홪홫홬홭홮홯홲홳홵홶홷홸홹홺홻홼홽홾홿횀������횁횂횄횆횇횈횉횊횋횎횏횑횒횓횕횖횗횘횙횚횛횜횞횠횢횣횤횥횦횧횩횪찼창찾채책챈챌챔챕챗챘챙챠챤챦챨챰챵처척천철첨첩첫첬청체첵첸첼쳄쳅쳇쳉쳐쳔쳤쳬쳰촁초촉촌촐촘촙촛총촤촨촬촹최쵠쵤쵬쵭쵯쵱쵸춈추축춘출춤춥춧충춰췄췌췐취췬췰췸췹췻췽츄츈츌츔츙츠측츤츨츰츱츳층�\".split(\"\");\nfor(j = 0; j != D[195].length; ++j) if(D[195][j].charCodeAt(0) !== 0xFFFD) { e[D[195][j]] = 49920 + j; d[49920 + j] = D[195][j];}\nD[196] = \"�����������������������������������������������������������������횫횭횮횯횱횲횳횴횵횶횷횸횺횼횽횾횿훀훁훂훃훆훇훉훊훋������훍훎훏훐훒훓훕훖훘훚훛훜훝훞훟훡훢훣훥훦훧훩훪훫훬훭������훮훯훱훲훳훴훶훷훸훹훺훻훾훿휁휂휃휅휆휇휈휉휊휋휌휍휎휏휐휒휓휔치칙친칟칠칡침칩칫칭카칵칸칼캄캅캇캉캐캑캔캘캠캡캣캤캥캬캭컁커컥컨컫컬컴컵컷컸컹케켁켄켈켐켑켓켕켜켠켤켬켭켯켰켱켸코콕콘콜콤콥콧콩콰콱콴콸쾀쾅쾌쾡쾨쾰쿄쿠쿡쿤쿨쿰쿱쿳쿵쿼퀀퀄퀑퀘퀭퀴퀵퀸퀼�\".split(\"\");\nfor(j = 0; j != D[196].length; ++j) if(D[196][j].charCodeAt(0) !== 0xFFFD) { e[D[196][j]] = 50176 + j; d[50176 + j] = D[196][j];}\nD[197] = \"�����������������������������������������������������������������휕휖휗휚휛휝휞휟휡휢휣휤휥휦휧휪휬휮휯휰휱휲휳휶휷휹������휺휻휽휾휿흀흁흂흃흅흆흈흊흋흌흍흎흏흒흓흕흚흛흜흝흞������흟흢흤흦흧흨흪흫흭흮흯흱흲흳흵흶흷흸흹흺흻흾흿힀힂힃힄힅힆힇힊힋큄큅큇큉큐큔큘큠크큭큰클큼큽킁키킥킨킬킴킵킷킹타탁탄탈탉탐탑탓탔탕태택탠탤탬탭탯탰탱탸턍터턱턴털턺텀텁텃텄텅테텍텐텔템텝텟텡텨텬텼톄톈토톡톤톨톰톱톳통톺톼퇀퇘퇴퇸툇툉툐투툭툰툴툼툽툿퉁퉈퉜�\".split(\"\");\nfor(j = 0; j != D[197].length; ++j) if(D[197][j].charCodeAt(0) !== 0xFFFD) { e[D[197][j]] = 50432 + j; d[50432 + j] = D[197][j];}\nD[198] = \"�����������������������������������������������������������������힍힎힏힑힒힓힔힕힖힗힚힜힞힟힠힡힢힣������������������������������������������������������������������������������퉤튀튁튄튈튐튑튕튜튠튤튬튱트특튼튿틀틂틈틉틋틔틘틜틤틥티틱틴틸팀팁팃팅파팍팎판팔팖팜팝팟팠팡팥패팩팬팰팸팹팻팼팽퍄퍅퍼퍽펀펄펌펍펏펐펑페펙펜펠펨펩펫펭펴편펼폄폅폈평폐폘폡폣포폭폰폴폼폽폿퐁�\".split(\"\");\nfor(j = 0; j != D[198].length; ++j) if(D[198][j].charCodeAt(0) !== 0xFFFD) { e[D[198][j]] = 50688 + j; d[50688 + j] = D[198][j];}\nD[199] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������퐈퐝푀푄표푠푤푭푯푸푹푼푿풀풂품풉풋풍풔풩퓌퓐퓔퓜퓟퓨퓬퓰퓸퓻퓽프픈플픔픕픗피픽핀필핌핍핏핑하학한할핥함합핫항해핵핸핼햄햅햇했행햐향허헉헌헐헒험헙헛헝헤헥헨헬헴헵헷헹혀혁현혈혐협혓혔형혜혠�\".split(\"\");\nfor(j = 0; j != D[199].length; ++j) if(D[199][j].charCodeAt(0) !== 0xFFFD) { e[D[199][j]] = 50944 + j; d[50944 + j] = D[199][j];}\nD[200] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������혤혭호혹혼홀홅홈홉홋홍홑화확환활홧황홰홱홴횃횅회획횐횔횝횟횡효횬횰횹횻후훅훈훌훑훔훗훙훠훤훨훰훵훼훽휀휄휑휘휙휜휠휨휩휫휭휴휵휸휼흄흇흉흐흑흔흖흗흘흙흠흡흣흥흩희흰흴흼흽힁히힉힌힐힘힙힛힝�\".split(\"\");\nfor(j = 0; j != D[200].length; ++j) if(D[200][j].charCodeAt(0) !== 0xFFFD) { e[D[200][j]] = 51200 + j; d[51200 + j] = D[200][j];}\nD[202] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������伽佳假價加可呵哥嘉嫁家暇架枷柯歌珂痂稼苛茄街袈訶賈跏軻迦駕刻却各恪慤殼珏脚覺角閣侃刊墾奸姦干幹懇揀杆柬桿澗癎看磵稈竿簡肝艮艱諫間乫喝曷渴碣竭葛褐蝎鞨勘坎堪嵌感憾戡敢柑橄減甘疳監瞰紺邯鑑鑒龕�\".split(\"\");\nfor(j = 0; j != D[202].length; ++j) if(D[202][j].charCodeAt(0) !== 0xFFFD) { e[D[202][j]] = 51712 + j; d[51712 + j] = D[202][j];}\nD[203] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������匣岬甲胛鉀閘剛堈姜岡崗康强彊慷江畺疆糠絳綱羌腔舡薑襁講鋼降鱇介价個凱塏愷愾慨改槪漑疥皆盖箇芥蓋豈鎧開喀客坑更粳羹醵倨去居巨拒据據擧渠炬祛距踞車遽鉅鋸乾件健巾建愆楗腱虔蹇鍵騫乞傑杰桀儉劍劒檢�\".split(\"\");\nfor(j = 0; j != D[203].length; ++j) if(D[203][j].charCodeAt(0) !== 0xFFFD) { e[D[203][j]] = 51968 + j; d[51968 + j] = D[203][j];}\nD[204] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������瞼鈐黔劫怯迲偈憩揭擊格檄激膈覡隔堅牽犬甄絹繭肩見譴遣鵑抉決潔結缺訣兼慊箝謙鉗鎌京俓倞傾儆勁勍卿坰境庚徑慶憬擎敬景暻更梗涇炅烱璟璥瓊痙硬磬竟競絅經耕耿脛莖警輕逕鏡頃頸驚鯨係啓堺契季屆悸戒桂械�\".split(\"\");\nfor(j = 0; j != D[204].length; ++j) if(D[204][j].charCodeAt(0) !== 0xFFFD) { e[D[204][j]] = 52224 + j; d[52224 + j] = D[204][j];}\nD[205] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������棨溪界癸磎稽系繫繼計誡谿階鷄古叩告呱固姑孤尻庫拷攷故敲暠枯槁沽痼皐睾稿羔考股膏苦苽菰藁蠱袴誥賈辜錮雇顧高鼓哭斛曲梏穀谷鵠困坤崑昆梱棍滾琨袞鯤汨滑骨供公共功孔工恐恭拱控攻珙空蚣貢鞏串寡戈果瓜�\".split(\"\");\nfor(j = 0; j != D[205].length; ++j) if(D[205][j].charCodeAt(0) !== 0xFFFD) { e[D[205][j]] = 52480 + j; d[52480 + j] = D[205][j];}\nD[206] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������科菓誇課跨過鍋顆廓槨藿郭串冠官寬慣棺款灌琯瓘管罐菅觀貫關館刮恝括适侊光匡壙廣曠洸炚狂珖筐胱鑛卦掛罫乖傀塊壞怪愧拐槐魁宏紘肱轟交僑咬喬嬌嶠巧攪敎校橋狡皎矯絞翹膠蕎蛟較轎郊餃驕鮫丘久九仇俱具勾�\".split(\"\");\nfor(j = 0; j != D[206].length; ++j) if(D[206][j].charCodeAt(0) !== 0xFFFD) { e[D[206][j]] = 52736 + j; d[52736 + j] = D[206][j];}\nD[207] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������區口句咎嘔坵垢寇嶇廐懼拘救枸柩構歐毆毬求溝灸狗玖球瞿矩究絿耉臼舅舊苟衢謳購軀逑邱鉤銶駒驅鳩鷗龜國局菊鞠鞫麴君窘群裙軍郡堀屈掘窟宮弓穹窮芎躬倦券勸卷圈拳捲權淃眷厥獗蕨蹶闕机櫃潰詭軌饋句晷歸貴�\".split(\"\");\nfor(j = 0; j != D[207].length; ++j) if(D[207][j].charCodeAt(0) !== 0xFFFD) { e[D[207][j]] = 52992 + j; d[52992 + j] = D[207][j];}\nD[208] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������鬼龜叫圭奎揆槻珪硅窺竅糾葵規赳逵閨勻均畇筠菌鈞龜橘克剋劇戟棘極隙僅劤勤懃斤根槿瑾筋芹菫覲謹近饉契今妗擒昑檎琴禁禽芩衾衿襟金錦伋及急扱汲級給亘兢矜肯企伎其冀嗜器圻基埼夔奇妓寄岐崎己幾忌技旗旣�\".split(\"\");\nfor(j = 0; j != D[208].length; ++j) if(D[208][j].charCodeAt(0) !== 0xFFFD) { e[D[208][j]] = 53248 + j; d[53248 + j] = D[208][j];}\nD[209] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������朞期杞棋棄機欺氣汽沂淇玘琦琪璂璣畸畿碁磯祁祇祈祺箕紀綺羈耆耭肌記譏豈起錡錤飢饑騎騏驥麒緊佶吉拮桔金喫儺喇奈娜懦懶拏拿癩羅蘿螺裸邏那樂洛烙珞落諾酪駱亂卵暖欄煖爛蘭難鸞捏捺南嵐枏楠湳濫男藍襤拉�\".split(\"\");\nfor(j = 0; j != D[209].length; ++j) if(D[209][j].charCodeAt(0) !== 0xFFFD) { e[D[209][j]] = 53504 + j; d[53504 + j] = D[209][j];}\nD[210] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������納臘蠟衲囊娘廊朗浪狼郎乃來內奈柰耐冷女年撚秊念恬拈捻寧寗努勞奴弩怒擄櫓爐瑙盧老蘆虜路露駑魯鷺碌祿綠菉錄鹿論壟弄濃籠聾膿農惱牢磊腦賂雷尿壘屢樓淚漏累縷陋嫩訥杻紐勒肋凜凌稜綾能菱陵尼泥匿溺多茶�\".split(\"\");\nfor(j = 0; j != D[210].length; ++j) if(D[210][j].charCodeAt(0) !== 0xFFFD) { e[D[210][j]] = 53760 + j; d[53760 + j] = D[210][j];}\nD[211] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������丹亶但單團壇彖斷旦檀段湍短端簞緞蛋袒鄲鍛撻澾獺疸達啖坍憺擔曇淡湛潭澹痰聃膽蕁覃談譚錟沓畓答踏遝唐堂塘幢戇撞棠當糖螳黨代垈坮大對岱帶待戴擡玳臺袋貸隊黛宅德悳倒刀到圖堵塗導屠島嶋度徒悼挑掉搗桃�\".split(\"\");\nfor(j = 0; j != D[211].length; ++j) if(D[211][j].charCodeAt(0) !== 0xFFFD) { e[D[211][j]] = 54016 + j; d[54016 + j] = D[211][j];}\nD[212] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������棹櫂淘渡滔濤燾盜睹禱稻萄覩賭跳蹈逃途道都鍍陶韜毒瀆牘犢獨督禿篤纛讀墩惇敦旽暾沌焞燉豚頓乭突仝冬凍動同憧東桐棟洞潼疼瞳童胴董銅兜斗杜枓痘竇荳讀豆逗頭屯臀芚遁遯鈍得嶝橙燈登等藤謄鄧騰喇懶拏癩羅�\".split(\"\");\nfor(j = 0; j != D[212].length; ++j) if(D[212][j].charCodeAt(0) !== 0xFFFD) { e[D[212][j]] = 54272 + j; d[54272 + j] = D[212][j];}\nD[213] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������蘿螺裸邏樂洛烙珞絡落諾酪駱丹亂卵欄欒瀾爛蘭鸞剌辣嵐擥攬欖濫籃纜藍襤覽拉臘蠟廊朗浪狼琅瑯螂郞來崍徠萊冷掠略亮倆兩凉梁樑粮粱糧良諒輛量侶儷勵呂廬慮戾旅櫚濾礪藜蠣閭驢驪麗黎力曆歷瀝礫轢靂憐戀攣漣�\".split(\"\");\nfor(j = 0; j != D[213].length; ++j) if(D[213][j].charCodeAt(0) !== 0xFFFD) { e[D[213][j]] = 54528 + j; d[54528 + j] = D[213][j];}\nD[214] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������煉璉練聯蓮輦連鍊冽列劣洌烈裂廉斂殮濂簾獵令伶囹寧岺嶺怜玲笭羚翎聆逞鈴零靈領齡例澧禮醴隷勞怒撈擄櫓潞瀘爐盧老蘆虜路輅露魯鷺鹵碌祿綠菉錄鹿麓論壟弄朧瀧瓏籠聾儡瀨牢磊賂賚賴雷了僚寮廖料燎療瞭聊蓼�\".split(\"\");\nfor(j = 0; j != D[214].length; ++j) if(D[214][j].charCodeAt(0) !== 0xFFFD) { e[D[214][j]] = 54784 + j; d[54784 + j] = D[214][j];}\nD[215] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������遼鬧龍壘婁屢樓淚漏瘻累縷蔞褸鏤陋劉旒柳榴流溜瀏琉瑠留瘤硫謬類六戮陸侖倫崙淪綸輪律慄栗率隆勒肋凜凌楞稜綾菱陵俚利厘吏唎履悧李梨浬犁狸理璃異痢籬罹羸莉裏裡里釐離鯉吝潾燐璘藺躪隣鱗麟林淋琳臨霖砬�\".split(\"\");\nfor(j = 0; j != D[215].length; ++j) if(D[215][j].charCodeAt(0) !== 0xFFFD) { e[D[215][j]] = 55040 + j; d[55040 + j] = D[215][j];}\nD[216] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������立笠粒摩瑪痲碼磨馬魔麻寞幕漠膜莫邈万卍娩巒彎慢挽晩曼滿漫灣瞞萬蔓蠻輓饅鰻唜抹末沫茉襪靺亡妄忘忙望網罔芒茫莽輞邙埋妹媒寐昧枚梅每煤罵買賣邁魅脈貊陌驀麥孟氓猛盲盟萌冪覓免冕勉棉沔眄眠綿緬面麵滅�\".split(\"\");\nfor(j = 0; j != D[216].length; ++j) if(D[216][j].charCodeAt(0) !== 0xFFFD) { e[D[216][j]] = 55296 + j; d[55296 + j] = D[216][j];}\nD[217] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������蔑冥名命明暝椧溟皿瞑茗蓂螟酩銘鳴袂侮冒募姆帽慕摸摹暮某模母毛牟牡瑁眸矛耗芼茅謀謨貌木沐牧目睦穆鶩歿沒夢朦蒙卯墓妙廟描昴杳渺猫竗苗錨務巫憮懋戊拇撫无楙武毋無珷畝繆舞茂蕪誣貿霧鵡墨默們刎吻問文�\".split(\"\");\nfor(j = 0; j != D[217].length; ++j) if(D[217][j].charCodeAt(0) !== 0xFFFD) { e[D[217][j]] = 55552 + j; d[55552 + j] = D[217][j];}\nD[218] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������汶紊紋聞蚊門雯勿沕物味媚尾嵋彌微未梶楣渼湄眉米美薇謎迷靡黴岷悶愍憫敏旻旼民泯玟珉緡閔密蜜謐剝博拍搏撲朴樸泊珀璞箔粕縛膊舶薄迫雹駁伴半反叛拌搬攀斑槃泮潘班畔瘢盤盼磐磻礬絆般蟠返頒飯勃拔撥渤潑�\".split(\"\");\nfor(j = 0; j != D[218].length; ++j) if(D[218][j].charCodeAt(0) !== 0xFFFD) { e[D[218][j]] = 55808 + j; d[55808 + j] = D[218][j];}\nD[219] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������發跋醱鉢髮魃倣傍坊妨尨幇彷房放方旁昉枋榜滂磅紡肪膀舫芳蒡蚌訪謗邦防龐倍俳北培徘拜排杯湃焙盃背胚裴裵褙賠輩配陪伯佰帛柏栢白百魄幡樊煩燔番磻繁蕃藩飜伐筏罰閥凡帆梵氾汎泛犯範范法琺僻劈壁擘檗璧癖�\".split(\"\");\nfor(j = 0; j != D[219].length; ++j) if(D[219][j].charCodeAt(0) !== 0xFFFD) { e[D[219][j]] = 56064 + j; d[56064 + j] = D[219][j];}\nD[220] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������碧蘗闢霹便卞弁變辨辯邊別瞥鱉鼈丙倂兵屛幷昞昺柄棅炳甁病秉竝輧餠騈保堡報寶普步洑湺潽珤甫菩補褓譜輔伏僕匐卜宓復服福腹茯蔔複覆輹輻馥鰒本乶俸奉封峯峰捧棒烽熢琫縫蓬蜂逢鋒鳳不付俯傅剖副否咐埠夫婦�\".split(\"\");\nfor(j = 0; j != D[220].length; ++j) if(D[220][j].charCodeAt(0) !== 0xFFFD) { e[D[220][j]] = 56320 + j; d[56320 + j] = D[220][j];}\nD[221] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������孚孵富府復扶敷斧浮溥父符簿缶腐腑膚艀芙莩訃負賦賻赴趺部釜阜附駙鳧北分吩噴墳奔奮忿憤扮昐汾焚盆粉糞紛芬賁雰不佛弗彿拂崩朋棚硼繃鵬丕備匕匪卑妃婢庇悲憊扉批斐枇榧比毖毗毘沸泌琵痺砒碑秕秘粃緋翡肥�\".split(\"\");\nfor(j = 0; j != D[221].length; ++j) if(D[221][j].charCodeAt(0) !== 0xFFFD) { e[D[221][j]] = 56576 + j; d[56576 + j] = D[221][j];}\nD[222] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������脾臂菲蜚裨誹譬費鄙非飛鼻嚬嬪彬斌檳殯浜濱瀕牝玭貧賓頻憑氷聘騁乍事些仕伺似使俟僿史司唆嗣四士奢娑寫寺射巳師徙思捨斜斯柶査梭死沙泗渣瀉獅砂社祀祠私篩紗絲肆舍莎蓑蛇裟詐詞謝賜赦辭邪飼駟麝削數朔索�\".split(\"\");\nfor(j = 0; j != D[222].length; ++j) if(D[222][j].charCodeAt(0) !== 0xFFFD) { e[D[222][j]] = 56832 + j; d[56832 + j] = D[222][j];}\nD[223] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������傘刪山散汕珊産疝算蒜酸霰乷撒殺煞薩三參杉森渗芟蔘衫揷澁鈒颯上傷像償商喪嘗孀尙峠常床庠廂想桑橡湘爽牀狀相祥箱翔裳觴詳象賞霜塞璽賽嗇塞穡索色牲生甥省笙墅壻嶼序庶徐恕抒捿敍暑曙書栖棲犀瑞筮絮緖署�\".split(\"\");\nfor(j = 0; j != D[223].length; ++j) if(D[223][j].charCodeAt(0) !== 0xFFFD) { e[D[223][j]] = 57088 + j; d[57088 + j] = D[223][j];}\nD[224] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������胥舒薯西誓逝鋤黍鼠夕奭席惜昔晳析汐淅潟石碩蓆釋錫仙僊先善嬋宣扇敾旋渲煽琁瑄璇璿癬禪線繕羨腺膳船蘚蟬詵跣選銑鐥饍鮮卨屑楔泄洩渫舌薛褻設說雪齧剡暹殲纖蟾贍閃陝攝涉燮葉城姓宬性惺成星晟猩珹盛省筬�\".split(\"\");\nfor(j = 0; j != D[224].length; ++j) if(D[224][j].charCodeAt(0) !== 0xFFFD) { e[D[224][j]] = 57344 + j; d[57344 + j] = D[224][j];}\nD[225] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������聖聲腥誠醒世勢歲洗稅笹細說貰召嘯塑宵小少巢所掃搔昭梳沼消溯瀟炤燒甦疏疎瘙笑篠簫素紹蔬蕭蘇訴逍遡邵銷韶騷俗屬束涑粟續謖贖速孫巽損蓀遜飡率宋悚松淞訟誦送頌刷殺灑碎鎖衰釗修受嗽囚垂壽嫂守岫峀帥愁�\".split(\"\");\nfor(j = 0; j != D[225].length; ++j) if(D[225][j].charCodeAt(0) !== 0xFFFD) { e[D[225][j]] = 57600 + j; d[57600 + j] = D[225][j];}\nD[226] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������戍手授搜收數樹殊水洙漱燧狩獸琇璲瘦睡秀穗竪粹綏綬繡羞脩茱蒐蓚藪袖誰讐輸遂邃酬銖銹隋隧隨雖需須首髓鬚叔塾夙孰宿淑潚熟琡璹肅菽巡徇循恂旬栒楯橓殉洵淳珣盾瞬筍純脣舜荀蓴蕣詢諄醇錞順馴戌術述鉥崇崧�\".split(\"\");\nfor(j = 0; j != D[226].length; ++j) if(D[226][j].charCodeAt(0) !== 0xFFFD) { e[D[226][j]] = 57856 + j; d[57856 + j] = D[226][j];}\nD[227] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������嵩瑟膝蝨濕拾習褶襲丞乘僧勝升承昇繩蠅陞侍匙嘶始媤尸屎屍市弑恃施是時枾柴猜矢示翅蒔蓍視試詩諡豕豺埴寔式息拭植殖湜熄篒蝕識軾食飾伸侁信呻娠宸愼新晨燼申神紳腎臣莘薪藎蜃訊身辛辰迅失室實悉審尋心沁�\".split(\"\");\nfor(j = 0; j != D[227].length; ++j) if(D[227][j].charCodeAt(0) !== 0xFFFD) { e[D[227][j]] = 58112 + j; d[58112 + j] = D[227][j];}\nD[228] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������沈深瀋甚芯諶什十拾雙氏亞俄兒啞娥峨我牙芽莪蛾衙訝阿雅餓鴉鵝堊岳嶽幄惡愕握樂渥鄂鍔顎鰐齷安岸按晏案眼雁鞍顔鮟斡謁軋閼唵岩巖庵暗癌菴闇壓押狎鴨仰央怏昻殃秧鴦厓哀埃崖愛曖涯碍艾隘靄厄扼掖液縊腋額�\".split(\"\");\nfor(j = 0; j != D[228].length; ++j) if(D[228][j].charCodeAt(0) !== 0xFFFD) { e[D[228][j]] = 58368 + j; d[58368 + j] = D[228][j];}\nD[229] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������櫻罌鶯鸚也倻冶夜惹揶椰爺耶若野弱掠略約若葯蒻藥躍亮佯兩凉壤孃恙揚攘敭暘梁楊樣洋瀁煬痒瘍禳穰糧羊良襄諒讓釀陽量養圄御於漁瘀禦語馭魚齬億憶抑檍臆偃堰彦焉言諺孼蘖俺儼嚴奄掩淹嶪業円予余勵呂女如廬�\".split(\"\");\nfor(j = 0; j != D[229].length; ++j) if(D[229][j].charCodeAt(0) !== 0xFFFD) { e[D[229][j]] = 58624 + j; d[58624 + j] = D[229][j];}\nD[230] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������旅歟汝濾璵礖礪與艅茹輿轝閭餘驪麗黎亦力域役易曆歷疫繹譯轢逆驛嚥堧姸娟宴年延憐戀捐挻撚椽沇沿涎涓淵演漣烟然煙煉燃燕璉硏硯秊筵緣練縯聯衍軟輦蓮連鉛鍊鳶列劣咽悅涅烈熱裂說閱厭廉念捻染殮炎焰琰艶苒�\".split(\"\");\nfor(j = 0; j != D[230].length; ++j) if(D[230][j].charCodeAt(0) !== 0xFFFD) { e[D[230][j]] = 58880 + j; d[58880 + j] = D[230][j];}\nD[231] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������簾閻髥鹽曄獵燁葉令囹塋寧嶺嶸影怜映暎楹榮永泳渶潁濚瀛瀯煐營獰玲瑛瑩瓔盈穎纓羚聆英詠迎鈴鍈零霙靈領乂倪例刈叡曳汭濊猊睿穢芮藝蘂禮裔詣譽豫醴銳隸霓預五伍俉傲午吾吳嗚塢墺奧娛寤悟惡懊敖旿晤梧汚澳�\".split(\"\");\nfor(j = 0; j != D[231].length; ++j) if(D[231][j].charCodeAt(0) !== 0xFFFD) { e[D[231][j]] = 59136 + j; d[59136 + j] = D[231][j];}\nD[232] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������烏熬獒筽蜈誤鰲鼇屋沃獄玉鈺溫瑥瘟穩縕蘊兀壅擁瓮甕癰翁邕雍饔渦瓦窩窪臥蛙蝸訛婉完宛梡椀浣玩琓琬碗緩翫脘腕莞豌阮頑曰往旺枉汪王倭娃歪矮外嵬巍猥畏了僚僥凹堯夭妖姚寥寮尿嶢拗搖撓擾料曜樂橈燎燿瑤療�\".split(\"\");\nfor(j = 0; j != D[232].length; ++j) if(D[232][j].charCodeAt(0) !== 0xFFFD) { e[D[232][j]] = 59392 + j; d[59392 + j] = D[232][j];}\nD[233] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������窈窯繇繞耀腰蓼蟯要謠遙遼邀饒慾欲浴縟褥辱俑傭冗勇埇墉容庸慂榕涌湧溶熔瑢用甬聳茸蓉踊鎔鏞龍于佑偶優又友右宇寓尤愚憂旴牛玗瑀盂祐禑禹紆羽芋藕虞迂遇郵釪隅雨雩勖彧旭昱栯煜稶郁頊云暈橒殞澐熉耘芸蕓�\".split(\"\");\nfor(j = 0; j != D[233].length; ++j) if(D[233][j].charCodeAt(0) !== 0xFFFD) { e[D[233][j]] = 59648 + j; d[59648 + j] = D[233][j];}\nD[234] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������運隕雲韻蔚鬱亐熊雄元原員圓園垣媛嫄寃怨愿援沅洹湲源爰猿瑗苑袁轅遠阮院願鴛月越鉞位偉僞危圍委威尉慰暐渭爲瑋緯胃萎葦蔿蝟衛褘謂違韋魏乳侑儒兪劉唯喩孺宥幼幽庾悠惟愈愉揄攸有杻柔柚柳楡楢油洧流游溜�\".split(\"\");\nfor(j = 0; j != D[234].length; ++j) if(D[234][j].charCodeAt(0) !== 0xFFFD) { e[D[234][j]] = 59904 + j; d[59904 + j] = D[234][j];}\nD[235] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������濡猶猷琉瑜由留癒硫紐維臾萸裕誘諛諭踰蹂遊逾遺酉釉鍮類六堉戮毓肉育陸倫允奫尹崙淪潤玧胤贇輪鈗閏律慄栗率聿戎瀜絨融隆垠恩慇殷誾銀隱乙吟淫蔭陰音飮揖泣邑凝應膺鷹依倚儀宜意懿擬椅毅疑矣義艤薏蟻衣誼�\".split(\"\");\nfor(j = 0; j != D[235].length; ++j) if(D[235][j].charCodeAt(0) !== 0xFFFD) { e[D[235][j]] = 60160 + j; d[60160 + j] = D[235][j];}\nD[236] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������議醫二以伊利吏夷姨履已弛彛怡易李梨泥爾珥理異痍痢移罹而耳肄苡荑裏裡貽貳邇里離飴餌匿溺瀷益翊翌翼謚人仁刃印吝咽因姻寅引忍湮燐璘絪茵藺蚓認隣靭靷鱗麟一佚佾壹日溢逸鎰馹任壬妊姙恁林淋稔臨荏賃入卄�\".split(\"\");\nfor(j = 0; j != D[236].length; ++j) if(D[236][j].charCodeAt(0) !== 0xFFFD) { e[D[236][j]] = 60416 + j; d[60416 + j] = D[236][j];}\nD[237] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������立笠粒仍剩孕芿仔刺咨姉姿子字孜恣慈滋炙煮玆瓷疵磁紫者自茨蔗藉諮資雌作勺嚼斫昨灼炸爵綽芍酌雀鵲孱棧殘潺盞岑暫潛箴簪蠶雜丈仗匠場墻壯奬將帳庄張掌暲杖樟檣欌漿牆狀獐璋章粧腸臟臧莊葬蔣薔藏裝贓醬長�\".split(\"\");\nfor(j = 0; j != D[237].length; ++j) if(D[237][j].charCodeAt(0) !== 0xFFFD) { e[D[237][j]] = 60672 + j; d[60672 + j] = D[237][j];}\nD[238] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������障再哉在宰才材栽梓渽滓災縡裁財載齋齎爭箏諍錚佇低儲咀姐底抵杵楮樗沮渚狙猪疽箸紵苧菹著藷詛貯躇這邸雎齟勣吊嫡寂摘敵滴狄炙的積笛籍績翟荻謫賊赤跡蹟迪迹適鏑佃佺傳全典前剪塡塼奠專展廛悛戰栓殿氈澱�\".split(\"\");\nfor(j = 0; j != D[238].length; ++j) if(D[238][j].charCodeAt(0) !== 0xFFFD) { e[D[238][j]] = 60928 + j; d[60928 + j] = D[238][j];}\nD[239] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������煎琠田甸畑癲筌箋箭篆纏詮輾轉鈿銓錢鐫電顚顫餞切截折浙癤竊節絶占岾店漸点粘霑鮎點接摺蝶丁井亭停偵呈姃定幀庭廷征情挺政整旌晶晸柾楨檉正汀淀淨渟湞瀞炡玎珽町睛碇禎程穽精綎艇訂諪貞鄭酊釘鉦鋌錠霆靖�\".split(\"\");\nfor(j = 0; j != D[239].length; ++j) if(D[239][j].charCodeAt(0) !== 0xFFFD) { e[D[239][j]] = 61184 + j; d[61184 + j] = D[239][j];}\nD[240] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������靜頂鼎制劑啼堤帝弟悌提梯濟祭第臍薺製諸蹄醍除際霽題齊俎兆凋助嘲弔彫措操早晁曺曹朝條棗槽漕潮照燥爪璪眺祖祚租稠窕粗糟組繰肇藻蚤詔調趙躁造遭釣阻雕鳥族簇足鏃存尊卒拙猝倧宗從悰慫棕淙琮種終綜縱腫�\".split(\"\");\nfor(j = 0; j != D[240].length; ++j) if(D[240][j].charCodeAt(0) !== 0xFFFD) { e[D[240][j]] = 61440 + j; d[61440 + j] = D[240][j];}\nD[241] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������踪踵鍾鐘佐坐左座挫罪主住侏做姝胄呪周嗾奏宙州廚晝朱柱株注洲湊澍炷珠疇籌紂紬綢舟蛛註誅走躊輳週酎酒鑄駐竹粥俊儁准埈寯峻晙樽浚準濬焌畯竣蠢逡遵雋駿茁中仲衆重卽櫛楫汁葺增憎曾拯烝甑症繒蒸證贈之只�\".split(\"\");\nfor(j = 0; j != D[241].length; ++j) if(D[241][j].charCodeAt(0) !== 0xFFFD) { e[D[241][j]] = 61696 + j; d[61696 + j] = D[241][j];}\nD[242] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������咫地址志持指摯支旨智枝枳止池沚漬知砥祉祗紙肢脂至芝芷蜘誌識贄趾遲直稙稷織職唇嗔塵振搢晉晋桭榛殄津溱珍瑨璡畛疹盡眞瞋秦縉縝臻蔯袗診賑軫辰進鎭陣陳震侄叱姪嫉帙桎瓆疾秩窒膣蛭質跌迭斟朕什執潗緝輯�\".split(\"\");\nfor(j = 0; j != D[242].length; ++j) if(D[242][j].charCodeAt(0) !== 0xFFFD) { e[D[242][j]] = 61952 + j; d[61952 + j] = D[242][j];}\nD[243] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������鏶集徵懲澄且侘借叉嗟嵯差次此磋箚茶蹉車遮捉搾着窄錯鑿齪撰澯燦璨瓚竄簒纂粲纘讚贊鑽餐饌刹察擦札紮僭參塹慘慙懺斬站讒讖倉倡創唱娼廠彰愴敞昌昶暢槍滄漲猖瘡窓脹艙菖蒼債埰寀寨彩採砦綵菜蔡采釵冊柵策�\".split(\"\");\nfor(j = 0; j != D[243].length; ++j) if(D[243][j].charCodeAt(0) !== 0xFFFD) { e[D[243][j]] = 62208 + j; d[62208 + j] = D[243][j];}\nD[244] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������責凄妻悽處倜刺剔尺慽戚拓擲斥滌瘠脊蹠陟隻仟千喘天川擅泉淺玔穿舛薦賤踐遷釧闡阡韆凸哲喆徹撤澈綴輟轍鐵僉尖沾添甛瞻簽籤詹諂堞妾帖捷牒疊睫諜貼輒廳晴淸聽菁請靑鯖切剃替涕滯締諦逮遞體初剿哨憔抄招梢�\".split(\"\");\nfor(j = 0; j != D[244].length; ++j) if(D[244][j].charCodeAt(0) !== 0xFFFD) { e[D[244][j]] = 62464 + j; d[62464 + j] = D[244][j];}\nD[245] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������椒楚樵炒焦硝礁礎秒稍肖艸苕草蕉貂超酢醋醮促囑燭矗蜀觸寸忖村邨叢塚寵悤憁摠總聰蔥銃撮催崔最墜抽推椎楸樞湫皺秋芻萩諏趨追鄒酋醜錐錘鎚雛騶鰍丑畜祝竺筑築縮蓄蹙蹴軸逐春椿瑃出朮黜充忠沖蟲衝衷悴膵萃�\".split(\"\");\nfor(j = 0; j != D[245].length; ++j) if(D[245][j].charCodeAt(0) !== 0xFFFD) { e[D[245][j]] = 62720 + j; d[62720 + j] = D[245][j];}\nD[246] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������贅取吹嘴娶就炊翠聚脆臭趣醉驟鷲側仄厠惻測層侈値嗤峙幟恥梔治淄熾痔痴癡稚穉緇緻置致蚩輜雉馳齒則勅飭親七柒漆侵寢枕沈浸琛砧針鍼蟄秤稱快他咤唾墮妥惰打拖朶楕舵陀馱駝倬卓啄坼度托拓擢晫柝濁濯琢琸託�\".split(\"\");\nfor(j = 0; j != D[246].length; ++j) if(D[246][j].charCodeAt(0) !== 0xFFFD) { e[D[246][j]] = 62976 + j; d[62976 + j] = D[246][j];}\nD[247] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������鐸呑嘆坦彈憚歎灘炭綻誕奪脫探眈耽貪塔搭榻宕帑湯糖蕩兌台太怠態殆汰泰笞胎苔跆邰颱宅擇澤撑攄兎吐土討慟桶洞痛筒統通堆槌腿褪退頹偸套妬投透鬪慝特闖坡婆巴把播擺杷波派爬琶破罷芭跛頗判坂板版瓣販辦鈑�\".split(\"\");\nfor(j = 0; j != D[247].length; ++j) if(D[247][j].charCodeAt(0) !== 0xFFFD) { e[D[247][j]] = 63232 + j; d[63232 + j] = D[247][j];}\nD[248] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������阪八叭捌佩唄悖敗沛浿牌狽稗覇貝彭澎烹膨愎便偏扁片篇編翩遍鞭騙貶坪平枰萍評吠嬖幣廢弊斃肺蔽閉陛佈包匍匏咆哺圃布怖抛抱捕暴泡浦疱砲胞脯苞葡蒲袍褒逋鋪飽鮑幅暴曝瀑爆輻俵剽彪慓杓標漂瓢票表豹飇飄驃�\".split(\"\");\nfor(j = 0; j != D[248].length; ++j) if(D[248][j].charCodeAt(0) !== 0xFFFD) { e[D[248][j]] = 63488 + j; d[63488 + j] = D[248][j];}\nD[249] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������品稟楓諷豊風馮彼披疲皮被避陂匹弼必泌珌畢疋筆苾馝乏逼下何厦夏廈昰河瑕荷蝦賀遐霞鰕壑學虐謔鶴寒恨悍旱汗漢澣瀚罕翰閑閒限韓割轄函含咸啣喊檻涵緘艦銜陷鹹合哈盒蛤閤闔陜亢伉姮嫦巷恒抗杭桁沆港缸肛航�\".split(\"\");\nfor(j = 0; j != D[249].length; ++j) if(D[249][j].charCodeAt(0) !== 0xFFFD) { e[D[249][j]] = 63744 + j; d[63744 + j] = D[249][j];}\nD[250] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������行降項亥偕咳垓奚孩害懈楷海瀣蟹解該諧邂駭骸劾核倖幸杏荇行享向嚮珦鄕響餉饗香噓墟虛許憲櫶獻軒歇險驗奕爀赫革俔峴弦懸晛泫炫玄玹現眩睍絃絢縣舷衒見賢鉉顯孑穴血頁嫌俠協夾峽挾浹狹脅脇莢鋏頰亨兄刑型�\".split(\"\");\nfor(j = 0; j != D[250].length; ++j) if(D[250][j].charCodeAt(0) !== 0xFFFD) { e[D[250][j]] = 64000 + j; d[64000 + j] = D[250][j];}\nD[251] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������形泂滎瀅灐炯熒珩瑩荊螢衡逈邢鎣馨兮彗惠慧暳蕙蹊醯鞋乎互呼壕壺好岵弧戶扈昊晧毫浩淏湖滸澔濠濩灝狐琥瑚瓠皓祜糊縞胡芦葫蒿虎號蝴護豪鎬頀顥惑或酷婚昏混渾琿魂忽惚笏哄弘汞泓洪烘紅虹訌鴻化和嬅樺火畵�\".split(\"\");\nfor(j = 0; j != D[251].length; ++j) if(D[251][j].charCodeAt(0) !== 0xFFFD) { e[D[251][j]] = 64256 + j; d[64256 + j] = D[251][j];}\nD[252] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������禍禾花華話譁貨靴廓擴攫確碻穫丸喚奐宦幻患換歡晥桓渙煥環紈還驩鰥活滑猾豁闊凰幌徨恍惶愰慌晃晄榥況湟滉潢煌璜皇篁簧荒蝗遑隍黃匯回廻徊恢悔懷晦會檜淮澮灰獪繪膾茴蛔誨賄劃獲宖橫鐄哮嚆孝效斅曉梟涍淆�\".split(\"\");\nfor(j = 0; j != D[252].length; ++j) if(D[252][j].charCodeAt(0) !== 0xFFFD) { e[D[252][j]] = 64512 + j; d[64512 + j] = D[252][j];}\nD[253] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������爻肴酵驍侯候厚后吼喉嗅帿後朽煦珝逅勛勳塤壎焄熏燻薰訓暈薨喧暄煊萱卉喙毁彙徽揮暉煇諱輝麾休携烋畦虧恤譎鷸兇凶匈洶胸黑昕欣炘痕吃屹紇訖欠欽歆吸恰洽翕興僖凞喜噫囍姬嬉希憙憘戱晞曦熙熹熺犧禧稀羲詰�\".split(\"\");\nfor(j = 0; j != D[253].length; ++j) if(D[253][j].charCodeAt(0) !== 0xFFFD) { e[D[253][j]] = 64768 + j; d[64768 + j] = D[253][j];}\nreturn {\"enc\": e, \"dec\": d }; })();\ncptable[950] = (function(){ var d = [], e = {}, D = [], j;\nD[0] = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~��������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[0].length; ++j) if(D[0][j].charCodeAt(0) !== 0xFFFD) { e[D[0][j]] = 0 + j; d[0 + j] = D[0][j];}\nD[161] = \"���������������������������������������������������������������� ,、。.‧;:?!︰…‥﹐﹑﹒·﹔﹕﹖﹗|–︱—︳╴︴﹏()︵︶{}︷︸〔〕︹︺【】︻︼《》︽︾〈〉︿﹀「」﹁﹂『』﹃﹄﹙﹚����������������������������������﹛﹜﹝﹞‘’“”〝〞‵′#&*※§〃○●△▲◎☆★◇◆□■▽▼㊣℅¯ ̄_ˍ﹉﹊﹍﹎﹋﹌﹟﹠﹡+-×÷±√<>=≦≧≠∞≒≡﹢﹣﹤﹥﹦~∩∪⊥∠∟⊿㏒㏑∫∮∵∴♀♂⊕⊙↑↓←→↖↗↙↘∥∣/�\".split(\"\");\nfor(j = 0; j != D[161].length; ++j) if(D[161][j].charCodeAt(0) !== 0xFFFD) { e[D[161][j]] = 41216 + j; d[41216 + j] = D[161][j];}\nD[162] = \"����������������������������������������������������������������\∕﹨$¥〒¢£%@℃℉﹩﹪﹫㏕㎜㎝㎞㏎㎡㎎㎏㏄°兙兛兞兝兡兣嗧瓩糎▁▂▃▄▅▆▇█▏▎▍▌▋▊▉┼┴┬┤├▔─│▕┌┐└┘╭����������������������������������╮╰╯═╞╪╡◢◣◥◤╱╲╳0123456789ⅠⅡⅢⅣⅤⅥⅦⅧⅨⅩ〡〢〣〤〥〦〧〨〩十卄卅ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuv�\".split(\"\");\nfor(j = 0; j != D[162].length; ++j) if(D[162][j].charCodeAt(0) !== 0xFFFD) { e[D[162][j]] = 41472 + j; d[41472 + j] = D[162][j];}\nD[163] = \"����������������������������������������������������������������wxyzΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡΣΤΥΦΧΨΩαβγδεζηθικλμνξοπρστυφχψωㄅㄆㄇㄈㄉㄊㄋㄌㄍㄎㄏ����������������������������������ㄐㄑㄒㄓㄔㄕㄖㄗㄘㄙㄚㄛㄜㄝㄞㄟㄠㄡㄢㄣㄤㄥㄦㄧㄨㄩ˙ˉˊˇˋ���������������������������������€������������������������������\".split(\"\");\nfor(j = 0; j != D[163].length; ++j) if(D[163][j].charCodeAt(0) !== 0xFFFD) { e[D[163][j]] = 41728 + j; d[41728 + j] = D[163][j];}\nD[164] = \"����������������������������������������������������������������一乙丁七乃九了二人儿入八几刀刁力匕十卜又三下丈上丫丸凡久么也乞于亡兀刃勺千叉口土士夕大女子孑孓寸小尢尸山川工己已巳巾干廾弋弓才����������������������������������丑丐不中丰丹之尹予云井互五亢仁什仃仆仇仍今介仄元允內六兮公冗凶分切刈勻勾勿化匹午升卅卞厄友及反壬天夫太夭孔少尤尺屯巴幻廿弔引心戈戶手扎支文斗斤方日曰月木欠止歹毋比毛氏水火爪父爻片牙牛犬王丙�\".split(\"\");\nfor(j = 0; j != D[164].length; ++j) if(D[164][j].charCodeAt(0) !== 0xFFFD) { e[D[164][j]] = 41984 + j; d[41984 + j] = D[164][j];}\nD[165] = \"����������������������������������������������������������������世丕且丘主乍乏乎以付仔仕他仗代令仙仞充兄冉冊冬凹出凸刊加功包匆北匝仟半卉卡占卯卮去可古右召叮叩叨叼司叵叫另只史叱台句叭叻四囚外����������������������������������央失奴奶孕它尼巨巧左市布平幼弁弘弗必戊打扔扒扑斥旦朮本未末札正母民氐永汁汀氾犯玄玉瓜瓦甘生用甩田由甲申疋白皮皿目矛矢石示禾穴立丞丟乒乓乩亙交亦亥仿伉伙伊伕伍伐休伏仲件任仰仳份企伋光兇兆先全�\".split(\"\");\nfor(j = 0; j != D[165].length; ++j) if(D[165][j].charCodeAt(0) !== 0xFFFD) { e[D[165][j]] = 42240 + j; d[42240 + j] = D[165][j];}\nD[166] = \"����������������������������������������������������������������共再冰列刑划刎刖劣匈匡匠印危吉吏同吊吐吁吋各向名合吃后吆吒因回囝圳地在圭圬圯圩夙多夷夸妄奸妃好她如妁字存宇守宅安寺尖屹州帆并年����������������������������������式弛忙忖戎戌戍成扣扛托收早旨旬旭曲曳有朽朴朱朵次此死氖汝汗汙江池汐汕污汛汍汎灰牟牝百竹米糸缶羊羽老考而耒耳聿肉肋肌臣自至臼舌舛舟艮色艾虫血行衣西阡串亨位住佇佗佞伴佛何估佐佑伽伺伸佃佔似但佣�\".split(\"\");\nfor(j = 0; j != D[166].length; ++j) if(D[166][j].charCodeAt(0) !== 0xFFFD) { e[D[166][j]] = 42496 + j; d[42496 + j] = D[166][j];}\nD[167] = \"����������������������������������������������������������������作你伯低伶余佝佈佚兌克免兵冶冷別判利刪刨劫助努劬匣即卵吝吭吞吾否呎吧呆呃吳呈呂君吩告吹吻吸吮吵吶吠吼呀吱含吟听囪困囤囫坊坑址坍����������������������������������均坎圾坐坏圻壯夾妝妒妨妞妣妙妖妍妤妓妊妥孝孜孚孛完宋宏尬局屁尿尾岐岑岔岌巫希序庇床廷弄弟彤形彷役忘忌志忍忱快忸忪戒我抄抗抖技扶抉扭把扼找批扳抒扯折扮投抓抑抆改攻攸旱更束李杏材村杜杖杞杉杆杠�\".split(\"\");\nfor(j = 0; j != D[167].length; ++j) if(D[167][j].charCodeAt(0) !== 0xFFFD) { e[D[167][j]] = 42752 + j; d[42752 + j] = D[167][j];}\nD[168] = \"����������������������������������������������������������������杓杗步每求汞沙沁沈沉沅沛汪決沐汰沌汨沖沒汽沃汲汾汴沆汶沍沔沘沂灶灼災灸牢牡牠狄狂玖甬甫男甸皂盯矣私秀禿究系罕肖肓肝肘肛肚育良芒����������������������������������芋芍見角言谷豆豕貝赤走足身車辛辰迂迆迅迄巡邑邢邪邦那酉釆里防阮阱阪阬並乖乳事些亞享京佯依侍佳使佬供例來侃佰併侈佩佻侖佾侏侑佺兔兒兕兩具其典冽函刻券刷刺到刮制剁劾劻卒協卓卑卦卷卸卹取叔受味呵�\".split(\"\");\nfor(j = 0; j != D[168].length; ++j) if(D[168][j].charCodeAt(0) !== 0xFFFD) { e[D[168][j]] = 43008 + j; d[43008 + j] = D[168][j];}\nD[169] = \"����������������������������������������������������������������咖呸咕咀呻呷咄咒咆呼咐呱呶和咚呢周咋命咎固垃坷坪坩坡坦坤坼夜奉奇奈奄奔妾妻委妹妮姑姆姐姍始姓姊妯妳姒姅孟孤季宗定官宜宙宛尚屈居����������������������������������屆岷岡岸岩岫岱岳帘帚帖帕帛帑幸庚店府底庖延弦弧弩往征彿彼忝忠忽念忿怏怔怯怵怖怪怕怡性怩怫怛或戕房戾所承拉拌拄抿拂抹拒招披拓拔拋拈抨抽押拐拙拇拍抵拚抱拘拖拗拆抬拎放斧於旺昔易昌昆昂明昀昏昕昊�\".split(\"\");\nfor(j = 0; j != D[169].length; ++j) if(D[169][j].charCodeAt(0) !== 0xFFFD) { e[D[169][j]] = 43264 + j; d[43264 + j] = D[169][j];}\nD[170] = \"����������������������������������������������������������������昇服朋杭枋枕東果杳杷枇枝林杯杰板枉松析杵枚枓杼杪杲欣武歧歿氓氛泣注泳沱泌泥河沽沾沼波沫法泓沸泄油況沮泗泅泱沿治泡泛泊沬泯泜泖泠����������������������������������炕炎炒炊炙爬爭爸版牧物狀狎狙狗狐玩玨玟玫玥甽疝疙疚的盂盲直知矽社祀祁秉秈空穹竺糾罔羌羋者肺肥肢肱股肫肩肴肪肯臥臾舍芳芝芙芭芽芟芹花芬芥芯芸芣芰芾芷虎虱初表軋迎返近邵邸邱邶采金長門阜陀阿阻附�\".split(\"\");\nfor(j = 0; j != D[170].length; ++j) if(D[170][j].charCodeAt(0) !== 0xFFFD) { e[D[170][j]] = 43520 + j; d[43520 + j] = D[170][j];}\nD[171] = \"����������������������������������������������������������������陂隹雨青非亟亭亮信侵侯便俠俑俏保促侶俘俟俊俗侮俐俄係俚俎俞侷兗冒冑冠剎剃削前剌剋則勇勉勃勁匍南卻厚叛咬哀咨哎哉咸咦咳哇哂咽咪品����������������������������������哄哈咯咫咱咻咩咧咿囿垂型垠垣垢城垮垓奕契奏奎奐姜姘姿姣姨娃姥姪姚姦威姻孩宣宦室客宥封屎屏屍屋峙峒巷帝帥帟幽庠度建弈弭彥很待徊律徇後徉怒思怠急怎怨恍恰恨恢恆恃恬恫恪恤扁拜挖按拼拭持拮拽指拱拷�\".split(\"\");\nfor(j = 0; j != D[171].length; ++j) if(D[171][j].charCodeAt(0) !== 0xFFFD) { e[D[171][j]] = 43776 + j; d[43776 + j] = D[171][j];}\nD[172] = \"����������������������������������������������������������������拯括拾拴挑挂政故斫施既春昭映昧是星昨昱昤曷柿染柱柔某柬架枯柵柩柯柄柑枴柚查枸柏柞柳枰柙柢柝柒歪殃殆段毒毗氟泉洋洲洪流津洌洱洞洗����������������������������������活洽派洶洛泵洹洧洸洩洮洵洎洫炫為炳炬炯炭炸炮炤爰牲牯牴狩狠狡玷珊玻玲珍珀玳甚甭畏界畎畋疫疤疥疢疣癸皆皇皈盈盆盃盅省盹相眉看盾盼眇矜砂研砌砍祆祉祈祇禹禺科秒秋穿突竿竽籽紂紅紀紉紇約紆缸美羿耄�\".split(\"\");\nfor(j = 0; j != D[172].length; ++j) if(D[172][j].charCodeAt(0) !== 0xFFFD) { e[D[172][j]] = 44032 + j; d[44032 + j] = D[172][j];}\nD[173] = \"����������������������������������������������������������������耐耍耑耶胖胥胚胃胄背胡胛胎胞胤胝致舢苧范茅苣苛苦茄若茂茉苒苗英茁苜苔苑苞苓苟苯茆虐虹虻虺衍衫要觔計訂訃貞負赴赳趴軍軌述迦迢迪迥����������������������������������迭迫迤迨郊郎郁郃酋酊重閂限陋陌降面革韋韭音頁風飛食首香乘亳倌倍倣俯倦倥俸倩倖倆值借倚倒們俺倀倔倨俱倡個候倘俳修倭倪俾倫倉兼冤冥冢凍凌准凋剖剜剔剛剝匪卿原厝叟哨唐唁唷哼哥哲唆哺唔哩哭員唉哮哪�\".split(\"\");\nfor(j = 0; j != D[173].length; ++j) if(D[173][j].charCodeAt(0) !== 0xFFFD) { e[D[173][j]] = 44288 + j; d[44288 + j] = D[173][j];}\nD[174] = \"����������������������������������������������������������������哦唧唇哽唏圃圄埂埔埋埃堉夏套奘奚娑娘娜娟娛娓姬娠娣娩娥娌娉孫屘宰害家宴宮宵容宸射屑展屐峭峽峻峪峨峰島崁峴差席師庫庭座弱徒徑徐恙����������������������������������恣恥恐恕恭恩息悄悟悚悍悔悌悅悖扇拳挈拿捎挾振捕捂捆捏捉挺捐挽挪挫挨捍捌效敉料旁旅時晉晏晃晒晌晅晁書朔朕朗校核案框桓根桂桔栩梳栗桌桑栽柴桐桀格桃株桅栓栘桁殊殉殷氣氧氨氦氤泰浪涕消涇浦浸海浙涓�\".split(\"\");\nfor(j = 0; j != D[174].length; ++j) if(D[174][j].charCodeAt(0) !== 0xFFFD) { e[D[174][j]] = 44544 + j; d[44544 + j] = D[174][j];}\nD[175] = \"����������������������������������������������������������������浬涉浮浚浴浩涌涊浹涅浥涔烊烘烤烙烈烏爹特狼狹狽狸狷玆班琉珮珠珪珞畔畝畜畚留疾病症疲疳疽疼疹痂疸皋皰益盍盎眩真眠眨矩砰砧砸砝破砷����������������������������������砥砭砠砟砲祕祐祠祟祖神祝祗祚秤秣秧租秦秩秘窄窈站笆笑粉紡紗紋紊素索純紐紕級紜納紙紛缺罟羔翅翁耆耘耕耙耗耽耿胱脂胰脅胭胴脆胸胳脈能脊胼胯臭臬舀舐航舫舨般芻茫荒荔荊茸荐草茵茴荏茲茹茶茗荀茱茨荃�\".split(\"\");\nfor(j = 0; j != D[175].length; ++j) if(D[175][j].charCodeAt(0) !== 0xFFFD) { e[D[175][j]] = 44800 + j; d[44800 + j] = D[175][j];}\nD[176] = \"����������������������������������������������������������������虔蚊蚪蚓蚤蚩蚌蚣蚜衰衷袁袂衽衹記訐討訌訕訊託訓訖訏訑豈豺豹財貢起躬軒軔軏辱送逆迷退迺迴逃追逅迸邕郡郝郢酒配酌釘針釗釜釙閃院陣陡����������������������������������陛陝除陘陞隻飢馬骨高鬥鬲鬼乾偺偽停假偃偌做偉健偶偎偕偵側偷偏倏偯偭兜冕凰剪副勒務勘動匐匏匙匿區匾參曼商啪啦啄啞啡啃啊唱啖問啕唯啤唸售啜唬啣唳啁啗圈國圉域堅堊堆埠埤基堂堵執培夠奢娶婁婉婦婪婀�\".split(\"\");\nfor(j = 0; j != D[176].length; ++j) if(D[176][j].charCodeAt(0) !== 0xFFFD) { e[D[176][j]] = 45056 + j; d[45056 + j] = D[176][j];}\nD[177] = \"����������������������������������������������������������������娼婢婚婆婊孰寇寅寄寂宿密尉專將屠屜屝崇崆崎崛崖崢崑崩崔崙崤崧崗巢常帶帳帷康庸庶庵庾張強彗彬彩彫得徙從徘御徠徜恿患悉悠您惋悴惦悽����������������������������������情悻悵惜悼惘惕惆惟悸惚惇戚戛扈掠控捲掖探接捷捧掘措捱掩掉掃掛捫推掄授掙採掬排掏掀捻捩捨捺敝敖救教敗啟敏敘敕敔斜斛斬族旋旌旎晝晚晤晨晦晞曹勗望梁梯梢梓梵桿桶梱梧梗械梃棄梭梆梅梔條梨梟梡梂欲殺�\".split(\"\");\nfor(j = 0; j != D[177].length; ++j) if(D[177][j].charCodeAt(0) !== 0xFFFD) { e[D[177][j]] = 45312 + j; d[45312 + j] = D[177][j];}\nD[178] = \"����������������������������������������������������������������毫毬氫涎涼淳淙液淡淌淤添淺清淇淋涯淑涮淞淹涸混淵淅淒渚涵淚淫淘淪深淮淨淆淄涪淬涿淦烹焉焊烽烯爽牽犁猜猛猖猓猙率琅琊球理現琍瓠瓶����������������������������������瓷甜產略畦畢異疏痔痕疵痊痍皎盔盒盛眷眾眼眶眸眺硫硃硎祥票祭移窒窕笠笨笛第符笙笞笮粒粗粕絆絃統紮紹紼絀細紳組累終紲紱缽羞羚翌翎習耜聊聆脯脖脣脫脩脰脤舂舵舷舶船莎莞莘荸莢莖莽莫莒莊莓莉莠荷荻荼�\".split(\"\");\nfor(j = 0; j != D[178].length; ++j) if(D[178][j].charCodeAt(0) !== 0xFFFD) { e[D[178][j]] = 45568 + j; d[45568 + j] = D[178][j];}\nD[179] = \"����������������������������������������������������������������莆莧處彪蛇蛀蚶蛄蚵蛆蛋蚱蚯蛉術袞袈被袒袖袍袋覓規訪訝訣訥許設訟訛訢豉豚販責貫貨貪貧赧赦趾趺軛軟這逍通逗連速逝逐逕逞造透逢逖逛途����������������������������������部郭都酗野釵釦釣釧釭釩閉陪陵陳陸陰陴陶陷陬雀雪雩章竟頂頃魚鳥鹵鹿麥麻傢傍傅備傑傀傖傘傚最凱割剴創剩勞勝勛博厥啻喀喧啼喊喝喘喂喜喪喔喇喋喃喳單喟唾喲喚喻喬喱啾喉喫喙圍堯堪場堤堰報堡堝堠壹壺奠�\".split(\"\");\nfor(j = 0; j != D[179].length; ++j) if(D[179][j].charCodeAt(0) !== 0xFFFD) { e[D[179][j]] = 45824 + j; d[45824 + j] = D[179][j];}\nD[180] = \"����������������������������������������������������������������婷媚婿媒媛媧孳孱寒富寓寐尊尋就嵌嵐崴嵇巽幅帽幀幃幾廊廁廂廄弼彭復循徨惑惡悲悶惠愜愣惺愕惰惻惴慨惱愎惶愉愀愒戟扉掣掌描揀揩揉揆揍����������������������������������插揣提握揖揭揮捶援揪換摒揚揹敞敦敢散斑斐斯普晰晴晶景暑智晾晷曾替期朝棺棕棠棘棗椅棟棵森棧棹棒棲棣棋棍植椒椎棉棚楮棻款欺欽殘殖殼毯氮氯氬港游湔渡渲湧湊渠渥渣減湛湘渤湖湮渭渦湯渴湍渺測湃渝渾滋�\".split(\"\");\nfor(j = 0; j != D[180].length; ++j) if(D[180][j].charCodeAt(0) !== 0xFFFD) { e[D[180][j]] = 46080 + j; d[46080 + j] = D[180][j];}\nD[181] = \"����������������������������������������������������������������溉渙湎湣湄湲湩湟焙焚焦焰無然煮焜牌犄犀猶猥猴猩琺琪琳琢琥琵琶琴琯琛琦琨甥甦畫番痢痛痣痙痘痞痠登發皖皓皴盜睏短硝硬硯稍稈程稅稀窘����������������������������������窗窖童竣等策筆筐筒答筍筋筏筑粟粥絞結絨絕紫絮絲絡給絢絰絳善翔翕耋聒肅腕腔腋腑腎脹腆脾腌腓腴舒舜菩萃菸萍菠菅萋菁華菱菴著萊菰萌菌菽菲菊萸萎萄菜萇菔菟虛蛟蛙蛭蛔蛛蛤蛐蛞街裁裂袱覃視註詠評詞証詁�\".split(\"\");\nfor(j = 0; j != D[181].length; ++j) if(D[181][j].charCodeAt(0) !== 0xFFFD) { e[D[181][j]] = 46336 + j; d[46336 + j] = D[181][j];}\nD[182] = \"����������������������������������������������������������������詔詛詐詆訴診訶詖象貂貯貼貳貽賁費賀貴買貶貿貸越超趁跎距跋跚跑跌跛跆軻軸軼辜逮逵週逸進逶鄂郵鄉郾酣酥量鈔鈕鈣鈉鈞鈍鈐鈇鈑閔閏開閑����������������������������������間閒閎隊階隋陽隅隆隍陲隄雁雅雄集雇雯雲韌項順須飧飪飯飩飲飭馮馭黃黍黑亂傭債傲傳僅傾催傷傻傯僇剿剷剽募勦勤勢勣匯嗟嗨嗓嗦嗎嗜嗇嗑嗣嗤嗯嗚嗡嗅嗆嗥嗉園圓塞塑塘塗塚塔填塌塭塊塢塒塋奧嫁嫉嫌媾媽媼�\".split(\"\");\nfor(j = 0; j != D[182].length; ++j) if(D[182][j].charCodeAt(0) !== 0xFFFD) { e[D[182][j]] = 46592 + j; d[46592 + j] = D[182][j];}\nD[183] = \"����������������������������������������������������������������媳嫂媲嵩嵯幌幹廉廈弒彙徬微愚意慈感想愛惹愁愈慎慌慄慍愾愴愧愍愆愷戡戢搓搾搞搪搭搽搬搏搜搔損搶搖搗搆敬斟新暗暉暇暈暖暄暘暍會榔業����������������������������������楚楷楠楔極椰概楊楨楫楞楓楹榆楝楣楛歇歲毀殿毓毽溢溯滓溶滂源溝滇滅溥溘溼溺溫滑準溜滄滔溪溧溴煎煙煩煤煉照煜煬煦煌煥煞煆煨煖爺牒猷獅猿猾瑯瑚瑕瑟瑞瑁琿瑙瑛瑜當畸瘀痰瘁痲痱痺痿痴痳盞盟睛睫睦睞督�\".split(\"\");\nfor(j = 0; j != D[183].length; ++j) if(D[183][j].charCodeAt(0) !== 0xFFFD) { e[D[183][j]] = 46848 + j; d[46848 + j] = D[183][j];}\nD[184] = \"����������������������������������������������������������������睹睪睬睜睥睨睢矮碎碰碗碘碌碉硼碑碓硿祺祿禁萬禽稜稚稠稔稟稞窟窠筷節筠筮筧粱粳粵經絹綑綁綏絛置罩罪署義羨群聖聘肆肄腱腰腸腥腮腳腫����������������������������������腹腺腦舅艇蒂葷落萱葵葦葫葉葬葛萼萵葡董葩葭葆虞虜號蛹蜓蜈蜇蜀蛾蛻蜂蜃蜆蜊衙裟裔裙補裘裝裡裊裕裒覜解詫該詳試詩詰誇詼詣誠話誅詭詢詮詬詹詻訾詨豢貊貉賊資賈賄貲賃賂賅跡跟跨路跳跺跪跤跦躲較載軾輊�\".split(\"\");\nfor(j = 0; j != D[184].length; ++j) if(D[184][j].charCodeAt(0) !== 0xFFFD) { e[D[184][j]] = 47104 + j; d[47104 + j] = D[184][j];}\nD[185] = \"����������������������������������������������������������������辟農運遊道遂達逼違遐遇遏過遍遑逾遁鄒鄗酬酪酩釉鈷鉗鈸鈽鉀鈾鉛鉋鉤鉑鈴鉉鉍鉅鈹鈿鉚閘隘隔隕雍雋雉雊雷電雹零靖靴靶預頑頓頊頒頌飼飴����������������������������������飽飾馳馱馴髡鳩麂鼎鼓鼠僧僮僥僖僭僚僕像僑僱僎僩兢凳劃劂匱厭嗾嘀嘛嘗嗽嘔嘆嘉嘍嘎嗷嘖嘟嘈嘐嗶團圖塵塾境墓墊塹墅塽壽夥夢夤奪奩嫡嫦嫩嫗嫖嫘嫣孵寞寧寡寥實寨寢寤察對屢嶄嶇幛幣幕幗幔廓廖弊彆彰徹慇�\".split(\"\");\nfor(j = 0; j != D[185].length; ++j) if(D[185][j].charCodeAt(0) !== 0xFFFD) { e[D[185][j]] = 47360 + j; d[47360 + j] = D[185][j];}\nD[186] = \"����������������������������������������������������������������愿態慷慢慣慟慚慘慵截撇摘摔撤摸摟摺摑摧搴摭摻敲斡旗旖暢暨暝榜榨榕槁榮槓構榛榷榻榫榴槐槍榭槌榦槃榣歉歌氳漳演滾漓滴漩漾漠漬漏漂漢����������������������������������滿滯漆漱漸漲漣漕漫漯澈漪滬漁滲滌滷熔熙煽熊熄熒爾犒犖獄獐瑤瑣瑪瑰瑭甄疑瘧瘍瘋瘉瘓盡監瞄睽睿睡磁碟碧碳碩碣禎福禍種稱窪窩竭端管箕箋筵算箝箔箏箸箇箄粹粽精綻綰綜綽綾綠緊綴網綱綺綢綿綵綸維緒緇綬�\".split(\"\");\nfor(j = 0; j != D[186].length; ++j) if(D[186][j].charCodeAt(0) !== 0xFFFD) { e[D[186][j]] = 47616 + j; d[47616 + j] = D[186][j];}\nD[187] = \"����������������������������������������������������������������罰翠翡翟聞聚肇腐膀膏膈膊腿膂臧臺與舔舞艋蓉蒿蓆蓄蒙蒞蒲蒜蓋蒸蓀蓓蒐蒼蓑蓊蜿蜜蜻蜢蜥蜴蜘蝕蜷蜩裳褂裴裹裸製裨褚裯誦誌語誣認誡誓誤����������������������������������說誥誨誘誑誚誧豪貍貌賓賑賒赫趙趕跼輔輒輕輓辣遠遘遜遣遙遞遢遝遛鄙鄘鄞酵酸酷酴鉸銀銅銘銖鉻銓銜銨鉼銑閡閨閩閣閥閤隙障際雌雒需靼鞅韶頗領颯颱餃餅餌餉駁骯骰髦魁魂鳴鳶鳳麼鼻齊億儀僻僵價儂儈儉儅凜�\".split(\"\");\nfor(j = 0; j != D[187].length; ++j) if(D[187][j].charCodeAt(0) !== 0xFFFD) { e[D[187][j]] = 47872 + j; d[47872 + j] = D[187][j];}\nD[188] = \"����������������������������������������������������������������劇劈劉劍劊勰厲嘮嘻嘹嘲嘿嘴嘩噓噎噗噴嘶嘯嘰墀墟增墳墜墮墩墦奭嬉嫻嬋嫵嬌嬈寮寬審寫層履嶝嶔幢幟幡廢廚廟廝廣廠彈影德徵慶慧慮慝慕憂����������������������������������慼慰慫慾憧憐憫憎憬憚憤憔憮戮摩摯摹撞撲撈撐撰撥撓撕撩撒撮播撫撚撬撙撢撳敵敷數暮暫暴暱樣樟槨樁樞標槽模樓樊槳樂樅槭樑歐歎殤毅毆漿潼澄潑潦潔澆潭潛潸潮澎潺潰潤澗潘滕潯潠潟熟熬熱熨牖犛獎獗瑩璋璃�\".split(\"\");\nfor(j = 0; j != D[188].length; ++j) if(D[188][j].charCodeAt(0) !== 0xFFFD) { e[D[188][j]] = 48128 + j; d[48128 + j] = D[188][j];}\nD[189] = \"����������������������������������������������������������������瑾璀畿瘠瘩瘟瘤瘦瘡瘢皚皺盤瞎瞇瞌瞑瞋磋磅確磊碾磕碼磐稿稼穀稽稷稻窯窮箭箱範箴篆篇篁箠篌糊締練緯緻緘緬緝編緣線緞緩綞緙緲緹罵罷羯����������������������������������翩耦膛膜膝膠膚膘蔗蔽蔚蓮蔬蔭蔓蔑蔣蔡蔔蓬蔥蓿蔆螂蝴蝶蝠蝦蝸蝨蝙蝗蝌蝓衛衝褐複褒褓褕褊誼諒談諄誕請諸課諉諂調誰論諍誶誹諛豌豎豬賠賞賦賤賬賭賢賣賜質賡赭趟趣踫踐踝踢踏踩踟踡踞躺輝輛輟輩輦輪輜輞�\".split(\"\");\nfor(j = 0; j != D[189].length; ++j) if(D[189][j].charCodeAt(0) !== 0xFFFD) { e[D[189][j]] = 48384 + j; d[48384 + j] = D[189][j];}\nD[190] = \"����������������������������������������������������������������輥適遮遨遭遷鄰鄭鄧鄱醇醉醋醃鋅銻銷鋪銬鋤鋁銳銼鋒鋇鋰銲閭閱霄霆震霉靠鞍鞋鞏頡頫頜颳養餓餒餘駝駐駟駛駑駕駒駙骷髮髯鬧魅魄魷魯鴆鴉����������������������������������鴃麩麾黎墨齒儒儘儔儐儕冀冪凝劑劓勳噙噫噹噩噤噸噪器噥噱噯噬噢噶壁墾壇壅奮嬝嬴學寰導彊憲憑憩憊懍憶憾懊懈戰擅擁擋撻撼據擄擇擂操撿擒擔撾整曆曉暹曄曇暸樽樸樺橙橫橘樹橄橢橡橋橇樵機橈歙歷氅濂澱澡�\".split(\"\");\nfor(j = 0; j != D[190].length; ++j) if(D[190][j].charCodeAt(0) !== 0xFFFD) { e[D[190][j]] = 48640 + j; d[48640 + j] = D[190][j];}\nD[191] = \"����������������������������������������������������������������濃澤濁澧澳激澹澶澦澠澴熾燉燐燒燈燕熹燎燙燜燃燄獨璜璣璘璟璞瓢甌甍瘴瘸瘺盧盥瞠瞞瞟瞥磨磚磬磧禦積穎穆穌穋窺篙簑築篤篛篡篩篦糕糖縊����������������������������������縑縈縛縣縞縝縉縐罹羲翰翱翮耨膳膩膨臻興艘艙蕊蕙蕈蕨蕩蕃蕉蕭蕪蕞螃螟螞螢融衡褪褲褥褫褡親覦諦諺諫諱謀諜諧諮諾謁謂諷諭諳諶諼豫豭貓賴蹄踱踴蹂踹踵輻輯輸輳辨辦遵遴選遲遼遺鄴醒錠錶鋸錳錯錢鋼錫錄錚�\".split(\"\");\nfor(j = 0; j != D[191].length; ++j) if(D[191][j].charCodeAt(0) !== 0xFFFD) { e[D[191][j]] = 48896 + j; d[48896 + j] = D[191][j];}\nD[192] = \"����������������������������������������������������������������錐錦錡錕錮錙閻隧隨險雕霎霑霖霍霓霏靛靜靦鞘頰頸頻頷頭頹頤餐館餞餛餡餚駭駢駱骸骼髻髭鬨鮑鴕鴣鴦鴨鴒鴛默黔龍龜優償儡儲勵嚎嚀嚐嚅嚇����������������������������������嚏壕壓壑壎嬰嬪嬤孺尷屨嶼嶺嶽嶸幫彌徽應懂懇懦懋戲戴擎擊擘擠擰擦擬擱擢擭斂斃曙曖檀檔檄檢檜櫛檣橾檗檐檠歜殮毚氈濘濱濟濠濛濤濫濯澀濬濡濩濕濮濰燧營燮燦燥燭燬燴燠爵牆獰獲璩環璦璨癆療癌盪瞳瞪瞰瞬�\".split(\"\");\nfor(j = 0; j != D[192].length; ++j) if(D[192][j].charCodeAt(0) !== 0xFFFD) { e[D[192][j]] = 49152 + j; d[49152 + j] = D[192][j];}\nD[193] = \"����������������������������������������������������������������瞧瞭矯磷磺磴磯礁禧禪穗窿簇簍篾篷簌篠糠糜糞糢糟糙糝縮績繆縷縲繃縫總縱繅繁縴縹繈縵縿縯罄翳翼聱聲聰聯聳臆臃膺臂臀膿膽臉膾臨舉艱薪����������������������������������薄蕾薜薑薔薯薛薇薨薊虧蟀蟑螳蟒蟆螫螻螺蟈蟋褻褶襄褸褽覬謎謗謙講謊謠謝謄謐豁谿豳賺賽購賸賻趨蹉蹋蹈蹊轄輾轂轅輿避遽還邁邂邀鄹醣醞醜鍍鎂錨鍵鍊鍥鍋錘鍾鍬鍛鍰鍚鍔闊闋闌闈闆隱隸雖霜霞鞠韓顆颶餵騁�\".split(\"\");\nfor(j = 0; j != D[193].length; ++j) if(D[193][j].charCodeAt(0) !== 0xFFFD) { e[D[193][j]] = 49408 + j; d[49408 + j] = D[193][j];}\nD[194] = \"����������������������������������������������������������������駿鮮鮫鮪鮭鴻鴿麋黏點黜黝黛鼾齋叢嚕嚮壙壘嬸彝懣戳擴擲擾攆擺擻擷斷曜朦檳檬櫃檻檸櫂檮檯歟歸殯瀉瀋濾瀆濺瀑瀏燻燼燾燸獷獵璧璿甕癖癘����������������������������������癒瞽瞿瞻瞼礎禮穡穢穠竄竅簫簧簪簞簣簡糧織繕繞繚繡繒繙罈翹翻職聶臍臏舊藏薩藍藐藉薰薺薹薦蟯蟬蟲蟠覆覲觴謨謹謬謫豐贅蹙蹣蹦蹤蹟蹕軀轉轍邇邃邈醫醬釐鎔鎊鎖鎢鎳鎮鎬鎰鎘鎚鎗闔闖闐闕離雜雙雛雞霤鞣鞦�\".split(\"\");\nfor(j = 0; j != D[194].length; ++j) if(D[194][j].charCodeAt(0) !== 0xFFFD) { e[D[194][j]] = 49664 + j; d[49664 + j] = D[194][j];}\nD[195] = \"����������������������������������������������������������������鞭韹額顏題顎顓颺餾餿餽餮馥騎髁鬃鬆魏魎魍鯊鯉鯽鯈鯀鵑鵝鵠黠鼕鼬儳嚥壞壟壢寵龐廬懲懷懶懵攀攏曠曝櫥櫝櫚櫓瀛瀟瀨瀚瀝瀕瀘爆爍牘犢獸����������������������������������獺璽瓊瓣疇疆癟癡矇礙禱穫穩簾簿簸簽簷籀繫繭繹繩繪羅繳羶羹羸臘藩藝藪藕藤藥藷蟻蠅蠍蟹蟾襠襟襖襞譁譜識證譚譎譏譆譙贈贊蹼蹲躇蹶蹬蹺蹴轔轎辭邊邋醱醮鏡鏑鏟鏃鏈鏜鏝鏖鏢鏍鏘鏤鏗鏨關隴難霪霧靡韜韻類�\".split(\"\");\nfor(j = 0; j != D[195].length; ++j) if(D[195][j].charCodeAt(0) !== 0xFFFD) { e[D[195][j]] = 49920 + j; d[49920 + j] = D[195][j];}\nD[196] = \"����������������������������������������������������������������願顛颼饅饉騖騙鬍鯨鯧鯖鯛鶉鵡鵲鵪鵬麒麗麓麴勸嚨嚷嚶嚴嚼壤孀孃孽寶巉懸懺攘攔攙曦朧櫬瀾瀰瀲爐獻瓏癢癥礦礪礬礫竇競籌籃籍糯糰辮繽繼����������������������������������纂罌耀臚艦藻藹蘑藺蘆蘋蘇蘊蠔蠕襤覺觸議譬警譯譟譫贏贍躉躁躅躂醴釋鐘鐃鏽闡霰飄饒饑馨騫騰騷騵鰓鰍鹹麵黨鼯齟齣齡儷儸囁囀囂夔屬巍懼懾攝攜斕曩櫻欄櫺殲灌爛犧瓖瓔癩矓籐纏續羼蘗蘭蘚蠣蠢蠡蠟襪襬覽譴�\".split(\"\");\nfor(j = 0; j != D[196].length; ++j) if(D[196][j].charCodeAt(0) !== 0xFFFD) { e[D[196][j]] = 50176 + j; d[50176 + j] = D[196][j];}\nD[197] = \"����������������������������������������������������������������護譽贓躊躍躋轟辯醺鐮鐳鐵鐺鐸鐲鐫闢霸霹露響顧顥饗驅驃驀騾髏魔魑鰭鰥鶯鶴鷂鶸麝黯鼙齜齦齧儼儻囈囊囉孿巔巒彎懿攤權歡灑灘玀瓤疊癮癬����������������������������������禳籠籟聾聽臟襲襯觼讀贖贗躑躓轡酈鑄鑑鑒霽霾韃韁顫饕驕驍髒鬚鱉鰱鰾鰻鷓鷗鼴齬齪龔囌巖戀攣攫攪曬欐瓚竊籤籣籥纓纖纔臢蘸蘿蠱變邐邏鑣鑠鑤靨顯饜驚驛驗髓體髑鱔鱗鱖鷥麟黴囑壩攬灞癱癲矗罐羈蠶蠹衢讓讒�\".split(\"\");\nfor(j = 0; j != D[197].length; ++j) if(D[197][j].charCodeAt(0) !== 0xFFFD) { e[D[197][j]] = 50432 + j; d[50432 + j] = D[197][j];}\nD[198] = \"����������������������������������������������������������������讖艷贛釀鑪靂靈靄韆顰驟鬢魘鱟鷹鷺鹼鹽鼇齷齲廳欖灣籬籮蠻觀躡釁鑲鑰顱饞髖鬣黌灤矚讚鑷韉驢驥纜讜躪釅鑽鑾鑼鱷鱸黷豔鑿鸚爨驪鬱鸛鸞籲���������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[198].length; ++j) if(D[198][j].charCodeAt(0) !== 0xFFFD) { e[D[198][j]] = 50688 + j; d[50688 + j] = D[198][j];}\nD[201] = \"����������������������������������������������������������������乂乜凵匚厂万丌乇亍囗兀屮彳丏冇与丮亓仂仉仈冘勼卬厹圠夃夬尐巿旡殳毌气爿丱丼仨仜仩仡仝仚刌匜卌圢圣夗夯宁宄尒尻屴屳帄庀庂忉戉扐氕����������������������������������氶汃氿氻犮犰玊禸肊阞伎优伬仵伔仱伀价伈伝伂伅伢伓伄仴伒冱刓刉刐劦匢匟卍厊吇囡囟圮圪圴夼妀奼妅奻奾奷奿孖尕尥屼屺屻屾巟幵庄异弚彴忕忔忏扜扞扤扡扦扢扙扠扚扥旯旮朾朹朸朻机朿朼朳氘汆汒汜汏汊汔汋�\".split(\"\");\nfor(j = 0; j != D[201].length; ++j) if(D[201][j].charCodeAt(0) !== 0xFFFD) { e[D[201][j]] = 51456 + j; d[51456 + j] = D[201][j];}\nD[202] = \"����������������������������������������������������������������汌灱牞犴犵玎甪癿穵网艸艼芀艽艿虍襾邙邗邘邛邔阢阤阠阣佖伻佢佉体佤伾佧佒佟佁佘伭伳伿佡冏冹刜刞刡劭劮匉卣卲厎厏吰吷吪呔呅吙吜吥吘����������������������������������吽呏呁吨吤呇囮囧囥坁坅坌坉坋坒夆奀妦妘妠妗妎妢妐妏妧妡宎宒尨尪岍岏岈岋岉岒岊岆岓岕巠帊帎庋庉庌庈庍弅弝彸彶忒忑忐忭忨忮忳忡忤忣忺忯忷忻怀忴戺抃抌抎抏抔抇扱扻扺扰抁抈扷扽扲扴攷旰旴旳旲旵杅杇�\".split(\"\");\nfor(j = 0; j != D[202].length; ++j) if(D[202][j].charCodeAt(0) !== 0xFFFD) { e[D[202][j]] = 51712 + j; d[51712 + j] = D[202][j];}\nD[203] = \"����������������������������������������������������������������杙杕杌杈杝杍杚杋毐氙氚汸汧汫沄沋沏汱汯汩沚汭沇沕沜汦汳汥汻沎灴灺牣犿犽狃狆狁犺狅玕玗玓玔玒町甹疔疕皁礽耴肕肙肐肒肜芐芏芅芎芑芓����������������������������������芊芃芄豸迉辿邟邡邥邞邧邠阰阨阯阭丳侘佼侅佽侀侇佶佴侉侄佷佌侗佪侚佹侁佸侐侜侔侞侒侂侕佫佮冞冼冾刵刲刳剆刱劼匊匋匼厒厔咇呿咁咑咂咈呫呺呾呥呬呴呦咍呯呡呠咘呣呧呤囷囹坯坲坭坫坱坰坶垀坵坻坳坴坢�\".split(\"\");\nfor(j = 0; j != D[203].length; ++j) if(D[203][j].charCodeAt(0) !== 0xFFFD) { e[D[203][j]] = 51968 + j; d[51968 + j] = D[203][j];}\nD[204] = \"����������������������������������������������������������������坨坽夌奅妵妺姏姎妲姌姁妶妼姃姖妱妽姀姈妴姇孢孥宓宕屄屇岮岤岠岵岯岨岬岟岣岭岢岪岧岝岥岶岰岦帗帔帙弨弢弣弤彔徂彾彽忞忥怭怦怙怲怋����������������������������������怴怊怗怳怚怞怬怢怍怐怮怓怑怌怉怜戔戽抭抴拑抾抪抶拊抮抳抯抻抩抰抸攽斨斻昉旼昄昒昈旻昃昋昍昅旽昑昐曶朊枅杬枎枒杶杻枘枆构杴枍枌杺枟枑枙枃杽极杸杹枔欥殀歾毞氝沓泬泫泮泙沶泔沭泧沷泐泂沺泃泆泭泲�\".split(\"\");\nfor(j = 0; j != D[204].length; ++j) if(D[204][j].charCodeAt(0) !== 0xFFFD) { e[D[204][j]] = 52224 + j; d[52224 + j] = D[204][j];}\nD[205] = \"����������������������������������������������������������������泒泝沴沊沝沀泞泀洰泍泇沰泹泏泩泑炔炘炅炓炆炄炑炖炂炚炃牪狖狋狘狉狜狒狔狚狌狑玤玡玭玦玢玠玬玝瓝瓨甿畀甾疌疘皯盳盱盰盵矸矼矹矻矺����������������������������������矷祂礿秅穸穻竻籵糽耵肏肮肣肸肵肭舠芠苀芫芚芘芛芵芧芮芼芞芺芴芨芡芩苂芤苃芶芢虰虯虭虮豖迒迋迓迍迖迕迗邲邴邯邳邰阹阽阼阺陃俍俅俓侲俉俋俁俔俜俙侻侳俛俇俖侺俀侹俬剄剉勀勂匽卼厗厖厙厘咺咡咭咥哏�\".split(\"\");\nfor(j = 0; j != D[205].length; ++j) if(D[205][j].charCodeAt(0) !== 0xFFFD) { e[D[205][j]] = 52480 + j; d[52480 + j] = D[205][j];}\nD[206] = \"����������������������������������������������������������������哃茍咷咮哖咶哅哆咠呰咼咢咾呲哞咰垵垞垟垤垌垗垝垛垔垘垏垙垥垚垕壴复奓姡姞姮娀姱姝姺姽姼姶姤姲姷姛姩姳姵姠姾姴姭宨屌峐峘峌峗峋峛����������������������������������峞峚峉峇峊峖峓峔峏峈峆峎峟峸巹帡帢帣帠帤庰庤庢庛庣庥弇弮彖徆怷怹恔恲恞恅恓恇恉恛恌恀恂恟怤恄恘恦恮扂扃拏挍挋拵挎挃拫拹挏挌拸拶挀挓挔拺挕拻拰敁敃斪斿昶昡昲昵昜昦昢昳昫昺昝昴昹昮朏朐柁柲柈枺�\".split(\"\");\nfor(j = 0; j != D[206].length; ++j) if(D[206][j].charCodeAt(0) !== 0xFFFD) { e[D[206][j]] = 52736 + j; d[52736 + j] = D[206][j];}\nD[207] = \"����������������������������������������������������������������柜枻柸柘柀枷柅柫柤柟枵柍枳柷柶柮柣柂枹柎柧柰枲柼柆柭柌枮柦柛柺柉柊柃柪柋欨殂殄殶毖毘毠氠氡洨洴洭洟洼洿洒洊泚洳洄洙洺洚洑洀洝浂����������������������������������洁洘洷洃洏浀洇洠洬洈洢洉洐炷炟炾炱炰炡炴炵炩牁牉牊牬牰牳牮狊狤狨狫狟狪狦狣玅珌珂珈珅玹玶玵玴珫玿珇玾珃珆玸珋瓬瓮甮畇畈疧疪癹盄眈眃眄眅眊盷盻盺矧矨砆砑砒砅砐砏砎砉砃砓祊祌祋祅祄秕种秏秖秎窀�\".split(\"\");\nfor(j = 0; j != D[207].length; ++j) if(D[207][j].charCodeAt(0) !== 0xFFFD) { e[D[207][j]] = 52992 + j; d[52992 + j] = D[207][j];}\nD[208] = \"����������������������������������������������������������������穾竑笀笁籺籸籹籿粀粁紃紈紁罘羑羍羾耇耎耏耔耷胘胇胠胑胈胂胐胅胣胙胜胊胕胉胏胗胦胍臿舡芔苙苾苹茇苨茀苕茺苫苖苴苬苡苲苵茌苻苶苰苪����������������������������������苤苠苺苳苭虷虴虼虳衁衎衧衪衩觓訄訇赲迣迡迮迠郱邽邿郕郅邾郇郋郈釔釓陔陏陑陓陊陎倞倅倇倓倢倰倛俵俴倳倷倬俶俷倗倜倠倧倵倯倱倎党冔冓凊凄凅凈凎剡剚剒剞剟剕剢勍匎厞唦哢唗唒哧哳哤唚哿唄唈哫唑唅哱�\".split(\"\");\nfor(j = 0; j != D[208].length; ++j) if(D[208][j].charCodeAt(0) !== 0xFFFD) { e[D[208][j]] = 53248 + j; d[53248 + j] = D[208][j];}\nD[209] = \"����������������������������������������������������������������唊哻哷哸哠唎唃唋圁圂埌堲埕埒垺埆垽垼垸垶垿埇埐垹埁夎奊娙娖娭娮娕娏娗娊娞娳孬宧宭宬尃屖屔峬峿峮峱峷崀峹帩帨庨庮庪庬弳弰彧恝恚恧����������������������������������恁悢悈悀悒悁悝悃悕悛悗悇悜悎戙扆拲挐捖挬捄捅挶捃揤挹捋捊挼挩捁挴捘捔捙挭捇挳捚捑挸捗捀捈敊敆旆旃旄旂晊晟晇晑朒朓栟栚桉栲栳栻桋桏栖栱栜栵栫栭栯桎桄栴栝栒栔栦栨栮桍栺栥栠欬欯欭欱欴歭肂殈毦毤�\".split(\"\");\nfor(j = 0; j != D[209].length; ++j) if(D[209][j].charCodeAt(0) !== 0xFFFD) { e[D[209][j]] = 53504 + j; d[53504 + j] = D[209][j];}\nD[210] = \"����������������������������������������������������������������毨毣毢毧氥浺浣浤浶洍浡涒浘浢浭浯涑涍淯浿涆浞浧浠涗浰浼浟涂涘洯浨涋浾涀涄洖涃浻浽浵涐烜烓烑烝烋缹烢烗烒烞烠烔烍烅烆烇烚烎烡牂牸����������������������������������牷牶猀狺狴狾狶狳狻猁珓珙珥珖玼珧珣珩珜珒珛珔珝珚珗珘珨瓞瓟瓴瓵甡畛畟疰痁疻痄痀疿疶疺皊盉眝眛眐眓眒眣眑眕眙眚眢眧砣砬砢砵砯砨砮砫砡砩砳砪砱祔祛祏祜祓祒祑秫秬秠秮秭秪秜秞秝窆窉窅窋窌窊窇竘笐�\".split(\"\");\nfor(j = 0; j != D[210].length; ++j) if(D[210][j].charCodeAt(0) !== 0xFFFD) { e[D[210][j]] = 53760 + j; d[53760 + j] = D[210][j];}\nD[211] = \"����������������������������������������������������������������笄笓笅笏笈笊笎笉笒粄粑粊粌粈粍粅紞紝紑紎紘紖紓紟紒紏紌罜罡罞罠罝罛羖羒翃翂翀耖耾耹胺胲胹胵脁胻脀舁舯舥茳茭荄茙荑茥荖茿荁茦茜茢����������������������������������荂荎茛茪茈茼荍茖茤茠茷茯茩荇荅荌荓茞茬荋茧荈虓虒蚢蚨蚖蚍蚑蚞蚇蚗蚆蚋蚚蚅蚥蚙蚡蚧蚕蚘蚎蚝蚐蚔衃衄衭衵衶衲袀衱衿衯袃衾衴衼訒豇豗豻貤貣赶赸趵趷趶軑軓迾迵适迿迻逄迼迶郖郠郙郚郣郟郥郘郛郗郜郤酐�\".split(\"\");\nfor(j = 0; j != D[211].length; ++j) if(D[211][j].charCodeAt(0) !== 0xFFFD) { e[D[211][j]] = 54016 + j; d[54016 + j] = D[211][j];}\nD[212] = \"����������������������������������������������������������������酎酏釕釢釚陜陟隼飣髟鬯乿偰偪偡偞偠偓偋偝偲偈偍偁偛偊偢倕偅偟偩偫偣偤偆偀偮偳偗偑凐剫剭剬剮勖勓匭厜啵啶唼啍啐唴唪啑啢唶唵唰啒啅����������������������������������唌唲啥啎唹啈唭唻啀啋圊圇埻堔埢埶埜埴堀埭埽堈埸堋埳埏堇埮埣埲埥埬埡堎埼堐埧堁堌埱埩埰堍堄奜婠婘婕婧婞娸娵婭婐婟婥婬婓婤婗婃婝婒婄婛婈媎娾婍娹婌婰婩婇婑婖婂婜孲孮寁寀屙崞崋崝崚崠崌崨崍崦崥崏�\".split(\"\");\nfor(j = 0; j != D[212].length; ++j) if(D[212][j].charCodeAt(0) !== 0xFFFD) { e[D[212][j]] = 54272 + j; d[54272 + j] = D[212][j];}\nD[213] = \"����������������������������������������������������������������崰崒崣崟崮帾帴庱庴庹庲庳弶弸徛徖徟悊悐悆悾悰悺惓惔惏惤惙惝惈悱惛悷惊悿惃惍惀挲捥掊掂捽掽掞掭掝掗掫掎捯掇掐据掯捵掜捭掮捼掤挻掟����������������������������������捸掅掁掑掍捰敓旍晥晡晛晙晜晢朘桹梇梐梜桭桮梮梫楖桯梣梬梩桵桴梲梏桷梒桼桫桲梪梀桱桾梛梖梋梠梉梤桸桻梑梌梊桽欶欳欷欸殑殏殍殎殌氪淀涫涴涳湴涬淩淢涷淶淔渀淈淠淟淖涾淥淜淝淛淴淊涽淭淰涺淕淂淏淉�\".split(\"\");\nfor(j = 0; j != D[213].length; ++j) if(D[213][j].charCodeAt(0) !== 0xFFFD) { e[D[213][j]] = 54528 + j; d[54528 + j] = D[213][j];}\nD[214] = \"����������������������������������������������������������������淐淲淓淽淗淍淣涻烺焍烷焗烴焌烰焄烳焐烼烿焆焓焀烸烶焋焂焎牾牻牼牿猝猗猇猑猘猊猈狿猏猞玈珶珸珵琄琁珽琇琀珺珼珿琌琋珴琈畤畣痎痒痏����������������������������������痋痌痑痐皏皉盓眹眯眭眱眲眴眳眽眥眻眵硈硒硉硍硊硌砦硅硐祤祧祩祪祣祫祡离秺秸秶秷窏窔窐笵筇笴笥笰笢笤笳笘笪笝笱笫笭笯笲笸笚笣粔粘粖粣紵紽紸紶紺絅紬紩絁絇紾紿絊紻紨罣羕羜羝羛翊翋翍翐翑翇翏翉耟�\".split(\"\");\nfor(j = 0; j != D[214].length; ++j) if(D[214][j].charCodeAt(0) !== 0xFFFD) { e[D[214][j]] = 54784 + j; d[54784 + j] = D[214][j];}\nD[215] = \"����������������������������������������������������������������耞耛聇聃聈脘脥脙脛脭脟脬脞脡脕脧脝脢舑舸舳舺舴舲艴莐莣莨莍荺荳莤荴莏莁莕莙荵莔莩荽莃莌莝莛莪莋荾莥莯莈莗莰荿莦莇莮荶莚虙虖蚿蚷����������������������������������蛂蛁蛅蚺蚰蛈蚹蚳蚸蛌蚴蚻蚼蛃蚽蚾衒袉袕袨袢袪袚袑袡袟袘袧袙袛袗袤袬袌袓袎覂觖觙觕訰訧訬訞谹谻豜豝豽貥赽赻赹趼跂趹趿跁軘軞軝軜軗軠軡逤逋逑逜逌逡郯郪郰郴郲郳郔郫郬郩酖酘酚酓酕釬釴釱釳釸釤釹釪�\".split(\"\");\nfor(j = 0; j != D[215].length; ++j) if(D[215][j].charCodeAt(0) !== 0xFFFD) { e[D[215][j]] = 55040 + j; d[55040 + j] = D[215][j];}\nD[216] = \"����������������������������������������������������������������釫釷釨釮镺閆閈陼陭陫陱陯隿靪頄飥馗傛傕傔傞傋傣傃傌傎傝偨傜傒傂傇兟凔匒匑厤厧喑喨喥喭啷噅喢喓喈喏喵喁喣喒喤啽喌喦啿喕喡喎圌堩堷����������������������������������堙堞堧堣堨埵塈堥堜堛堳堿堶堮堹堸堭堬堻奡媯媔媟婺媢媞婸媦婼媥媬媕媮娷媄媊媗媃媋媩婻婽媌媜媏媓媝寪寍寋寔寑寊寎尌尰崷嵃嵫嵁嵋崿崵嵑嵎嵕崳崺嵒崽崱嵙嵂崹嵉崸崼崲崶嵀嵅幄幁彘徦徥徫惉悹惌惢惎惄愔�\".split(\"\");\nfor(j = 0; j != D[216].length; ++j) if(D[216][j].charCodeAt(0) !== 0xFFFD) { e[D[216][j]] = 55296 + j; d[55296 + j] = D[216][j];}\nD[217] = \"����������������������������������������������������������������惲愊愖愅惵愓惸惼惾惁愃愘愝愐惿愄愋扊掔掱掰揎揥揨揯揃撝揳揊揠揶揕揲揵摡揟掾揝揜揄揘揓揂揇揌揋揈揰揗揙攲敧敪敤敜敨敥斌斝斞斮旐旒����������������������������������晼晬晻暀晱晹晪晲朁椌棓椄棜椪棬棪棱椏棖棷棫棤棶椓椐棳棡椇棌椈楰梴椑棯棆椔棸棐棽棼棨椋椊椗棎棈棝棞棦棴棑椆棔棩椕椥棇欹欻欿欼殔殗殙殕殽毰毲毳氰淼湆湇渟湉溈渼渽湅湢渫渿湁湝湳渜渳湋湀湑渻渃渮湞�\".split(\"\");\nfor(j = 0; j != D[217].length; ++j) if(D[217][j].charCodeAt(0) !== 0xFFFD) { e[D[217][j]] = 55552 + j; d[55552 + j] = D[217][j];}\nD[218] = \"����������������������������������������������������������������湨湜湡渱渨湠湱湫渹渢渰湓湥渧湸湤湷湕湹湒湦渵渶湚焠焞焯烻焮焱焣焥焢焲焟焨焺焛牋牚犈犉犆犅犋猒猋猰猢猱猳猧猲猭猦猣猵猌琮琬琰琫琖����������������������������������琚琡琭琱琤琣琝琩琠琲瓻甯畯畬痧痚痡痦痝痟痤痗皕皒盚睆睇睄睍睅睊睎睋睌矞矬硠硤硥硜硭硱硪确硰硩硨硞硢祴祳祲祰稂稊稃稌稄窙竦竤筊笻筄筈筌筎筀筘筅粢粞粨粡絘絯絣絓絖絧絪絏絭絜絫絒絔絩絑絟絎缾缿罥�\".split(\"\");\nfor(j = 0; j != D[218].length; ++j) if(D[218][j].charCodeAt(0) !== 0xFFFD) { e[D[218][j]] = 55808 + j; d[55808 + j] = D[218][j];}\nD[219] = \"����������������������������������������������������������������罦羢羠羡翗聑聏聐胾胔腃腊腒腏腇脽腍脺臦臮臷臸臹舄舼舽舿艵茻菏菹萣菀菨萒菧菤菼菶萐菆菈菫菣莿萁菝菥菘菿菡菋菎菖菵菉萉萏菞萑萆菂菳����������������������������������菕菺菇菑菪萓菃菬菮菄菻菗菢萛菛菾蛘蛢蛦蛓蛣蛚蛪蛝蛫蛜蛬蛩蛗蛨蛑衈衖衕袺裗袹袸裀袾袶袼袷袽袲褁裉覕覘覗觝觚觛詎詍訹詙詀詗詘詄詅詒詈詑詊詌詏豟貁貀貺貾貰貹貵趄趀趉跘跓跍跇跖跜跏跕跙跈跗跅軯軷軺�\".split(\"\");\nfor(j = 0; j != D[219].length; ++j) if(D[219][j].charCodeAt(0) !== 0xFFFD) { e[D[219][j]] = 56064 + j; d[56064 + j] = D[219][j];}\nD[220] = \"����������������������������������������������������������������軹軦軮軥軵軧軨軶軫軱軬軴軩逭逴逯鄆鄬鄄郿郼鄈郹郻鄁鄀鄇鄅鄃酡酤酟酢酠鈁鈊鈥鈃鈚鈦鈏鈌鈀鈒釿釽鈆鈄鈧鈂鈜鈤鈙鈗鈅鈖镻閍閌閐隇陾隈����������������������������������隉隃隀雂雈雃雱雰靬靰靮頇颩飫鳦黹亃亄亶傽傿僆傮僄僊傴僈僂傰僁傺傱僋僉傶傸凗剺剸剻剼嗃嗛嗌嗐嗋嗊嗝嗀嗔嗄嗩喿嗒喍嗏嗕嗢嗖嗈嗲嗍嗙嗂圔塓塨塤塏塍塉塯塕塎塝塙塥塛堽塣塱壼嫇嫄嫋媺媸媱媵媰媿嫈媻嫆�\".split(\"\");\nfor(j = 0; j != D[220].length; ++j) if(D[220][j].charCodeAt(0) !== 0xFFFD) { e[D[220][j]] = 56320 + j; d[56320 + j] = D[220][j];}\nD[221] = \"����������������������������������������������������������������媷嫀嫊媴媶嫍媹媐寖寘寙尟尳嵱嵣嵊嵥嵲嵬嵞嵨嵧嵢巰幏幎幊幍幋廅廌廆廋廇彀徯徭惷慉慊愫慅愶愲愮慆愯慏愩慀戠酨戣戥戤揅揱揫搐搒搉搠搤����������������������������������搳摃搟搕搘搹搷搢搣搌搦搰搨摁搵搯搊搚摀搥搧搋揧搛搮搡搎敯斒旓暆暌暕暐暋暊暙暔晸朠楦楟椸楎楢楱椿楅楪椹楂楗楙楺楈楉椵楬椳椽楥棰楸椴楩楀楯楄楶楘楁楴楌椻楋椷楜楏楑椲楒椯楻椼歆歅歃歂歈歁殛嗀毻毼�\".split(\"\");\nfor(j = 0; j != D[221].length; ++j) if(D[221][j].charCodeAt(0) !== 0xFFFD) { e[D[221][j]] = 56576 + j; d[56576 + j] = D[221][j];}\nD[222] = \"����������������������������������������������������������������毹毷毸溛滖滈溏滀溟溓溔溠溱溹滆滒溽滁溞滉溷溰滍溦滏溲溾滃滜滘溙溒溎溍溤溡溿溳滐滊溗溮溣煇煔煒煣煠煁煝煢煲煸煪煡煂煘煃煋煰煟煐煓����������������������������������煄煍煚牏犍犌犑犐犎猼獂猻猺獀獊獉瑄瑊瑋瑒瑑瑗瑀瑏瑐瑎瑂瑆瑍瑔瓡瓿瓾瓽甝畹畷榃痯瘏瘃痷痾痼痹痸瘐痻痶痭痵痽皙皵盝睕睟睠睒睖睚睩睧睔睙睭矠碇碚碔碏碄碕碅碆碡碃硹碙碀碖硻祼禂祽祹稑稘稙稒稗稕稢稓�\".split(\"\");\nfor(j = 0; j != D[222].length; ++j) if(D[222][j].charCodeAt(0) !== 0xFFFD) { e[D[222][j]] = 56832 + j; d[56832 + j] = D[222][j];}\nD[223] = \"����������������������������������������������������������������稛稐窣窢窞竫筦筤筭筴筩筲筥筳筱筰筡筸筶筣粲粴粯綈綆綀綍絿綅絺綎絻綃絼綌綔綄絽綒罭罫罧罨罬羦羥羧翛翜耡腤腠腷腜腩腛腢腲朡腞腶腧腯����������������������������������腄腡舝艉艄艀艂艅蓱萿葖葶葹蒏蒍葥葑葀蒆葧萰葍葽葚葙葴葳葝蔇葞萷萺萴葺葃葸萲葅萩菙葋萯葂萭葟葰萹葎葌葒葯蓅蒎萻葇萶萳葨葾葄萫葠葔葮葐蜋蜄蛷蜌蛺蛖蛵蝍蛸蜎蜉蜁蛶蜍蜅裖裋裍裎裞裛裚裌裐覅覛觟觥觤�\".split(\"\");\nfor(j = 0; j != D[223].length; ++j) if(D[223][j].charCodeAt(0) !== 0xFFFD) { e[D[223][j]] = 57088 + j; d[57088 + j] = D[223][j];}\nD[224] = \"����������������������������������������������������������������觡觠觢觜触詶誆詿詡訿詷誂誄詵誃誁詴詺谼豋豊豥豤豦貆貄貅賌赨赩趑趌趎趏趍趓趔趐趒跰跠跬跱跮跐跩跣跢跧跲跫跴輆軿輁輀輅輇輈輂輋遒逿����������������������������������遄遉逽鄐鄍鄏鄑鄖鄔鄋鄎酮酯鉈鉒鈰鈺鉦鈳鉥鉞銃鈮鉊鉆鉭鉬鉏鉠鉧鉯鈶鉡鉰鈱鉔鉣鉐鉲鉎鉓鉌鉖鈲閟閜閞閛隒隓隑隗雎雺雽雸雵靳靷靸靲頏頍頎颬飶飹馯馲馰馵骭骫魛鳪鳭鳧麀黽僦僔僗僨僳僛僪僝僤僓僬僰僯僣僠�\".split(\"\");\nfor(j = 0; j != D[224].length; ++j) if(D[224][j].charCodeAt(0) !== 0xFFFD) { e[D[224][j]] = 57344 + j; d[57344 + j] = D[224][j];}\nD[225] = \"����������������������������������������������������������������凘劀劁勩勫匰厬嘧嘕嘌嘒嗼嘏嘜嘁嘓嘂嗺嘝嘄嗿嗹墉塼墐墘墆墁塿塴墋塺墇墑墎塶墂墈塻墔墏壾奫嫜嫮嫥嫕嫪嫚嫭嫫嫳嫢嫠嫛嫬嫞嫝嫙嫨嫟孷寠����������������������������������寣屣嶂嶀嵽嶆嵺嶁嵷嶊嶉嶈嵾嵼嶍嵹嵿幘幙幓廘廑廗廎廜廕廙廒廔彄彃彯徶愬愨慁慞慱慳慒慓慲慬憀慴慔慺慛慥愻慪慡慖戩戧戫搫摍摛摝摴摶摲摳摽摵摦撦摎撂摞摜摋摓摠摐摿搿摬摫摙摥摷敳斠暡暠暟朅朄朢榱榶槉�\".split(\"\");\nfor(j = 0; j != D[225].length; ++j) if(D[225][j].charCodeAt(0) !== 0xFFFD) { e[D[225][j]] = 57600 + j; d[57600 + j] = D[225][j];}\nD[226] = \"����������������������������������������������������������������榠槎榖榰榬榼榑榙榎榧榍榩榾榯榿槄榽榤槔榹槊榚槏榳榓榪榡榞槙榗榐槂榵榥槆歊歍歋殞殟殠毃毄毾滎滵滱漃漥滸漷滻漮漉潎漙漚漧漘漻漒滭漊����������������������������������漶潳滹滮漭潀漰漼漵滫漇漎潃漅滽滶漹漜滼漺漟漍漞漈漡熇熐熉熀熅熂熏煻熆熁熗牄牓犗犕犓獃獍獑獌瑢瑳瑱瑵瑲瑧瑮甀甂甃畽疐瘖瘈瘌瘕瘑瘊瘔皸瞁睼瞅瞂睮瞀睯睾瞃碲碪碴碭碨硾碫碞碥碠碬碢碤禘禊禋禖禕禔禓�\".split(\"\");\nfor(j = 0; j != D[226].length; ++j) if(D[226][j].charCodeAt(0) !== 0xFFFD) { e[D[226][j]] = 57856 + j; d[57856 + j] = D[226][j];}\nD[227] = \"����������������������������������������������������������������禗禈禒禐稫穊稰稯稨稦窨窫窬竮箈箜箊箑箐箖箍箌箛箎箅箘劄箙箤箂粻粿粼粺綧綷緂綣綪緁緀緅綝緎緄緆緋緌綯綹綖綼綟綦綮綩綡緉罳翢翣翥翞����������������������������������耤聝聜膉膆膃膇膍膌膋舕蒗蒤蒡蒟蒺蓎蓂蒬蒮蒫蒹蒴蓁蓍蒪蒚蒱蓐蒝蒧蒻蒢蒔蓇蓌蒛蒩蒯蒨蓖蒘蒶蓏蒠蓗蓔蓒蓛蒰蒑虡蜳蜣蜨蝫蝀蜮蜞蜡蜙蜛蝃蜬蝁蜾蝆蜠蜲蜪蜭蜼蜒蜺蜱蜵蝂蜦蜧蜸蜤蜚蜰蜑裷裧裱裲裺裾裮裼裶裻�\".split(\"\");\nfor(j = 0; j != D[227].length; ++j) if(D[227][j].charCodeAt(0) !== 0xFFFD) { e[D[227][j]] = 58112 + j; d[58112 + j] = D[227][j];}\nD[228] = \"����������������������������������������������������������������裰裬裫覝覡覟覞觩觫觨誫誙誋誒誏誖谽豨豩賕賏賗趖踉踂跿踍跽踊踃踇踆踅跾踀踄輐輑輎輍鄣鄜鄠鄢鄟鄝鄚鄤鄡鄛酺酲酹酳銥銤鉶銛鉺銠銔銪銍����������������������������������銦銚銫鉹銗鉿銣鋮銎銂銕銢鉽銈銡銊銆銌銙銧鉾銇銩銝銋鈭隞隡雿靘靽靺靾鞃鞀鞂靻鞄鞁靿韎韍頖颭颮餂餀餇馝馜駃馹馻馺駂馽駇骱髣髧鬾鬿魠魡魟鳱鳲鳵麧僿儃儰僸儆儇僶僾儋儌僽儊劋劌勱勯噈噂噌嘵噁噊噉噆噘�\".split(\"\");\nfor(j = 0; j != D[228].length; ++j) if(D[228][j].charCodeAt(0) !== 0xFFFD) { e[D[228][j]] = 58368 + j; d[58368 + j] = D[228][j];}\nD[229] = \"����������������������������������������������������������������噚噀嘳嘽嘬嘾嘸嘪嘺圚墫墝墱墠墣墯墬墥墡壿嫿嫴嫽嫷嫶嬃嫸嬂嫹嬁嬇嬅嬏屧嶙嶗嶟嶒嶢嶓嶕嶠嶜嶡嶚嶞幩幝幠幜緳廛廞廡彉徲憋憃慹憱憰憢憉����������������������������������憛憓憯憭憟憒憪憡憍慦憳戭摮摰撖撠撅撗撜撏撋撊撌撣撟摨撱撘敶敺敹敻斲斳暵暰暩暲暷暪暯樀樆樗槥槸樕槱槤樠槿槬槢樛樝槾樧槲槮樔槷槧橀樈槦槻樍槼槫樉樄樘樥樏槶樦樇槴樖歑殥殣殢殦氁氀毿氂潁漦潾澇濆澒�\".split(\"\");\nfor(j = 0; j != D[229].length; ++j) if(D[229][j].charCodeAt(0) !== 0xFFFD) { e[D[229][j]] = 58624 + j; d[58624 + j] = D[229][j];}\nD[230] = \"����������������������������������������������������������������澍澉澌潢潏澅潚澖潶潬澂潕潲潒潐潗澔澓潝漀潡潫潽潧澐潓澋潩潿澕潣潷潪潻熲熯熛熰熠熚熩熵熝熥熞熤熡熪熜熧熳犘犚獘獒獞獟獠獝獛獡獚獙����������������������������������獢璇璉璊璆璁瑽璅璈瑼瑹甈甇畾瘥瘞瘙瘝瘜瘣瘚瘨瘛皜皝皞皛瞍瞏瞉瞈磍碻磏磌磑磎磔磈磃磄磉禚禡禠禜禢禛歶稹窲窴窳箷篋箾箬篎箯箹篊箵糅糈糌糋緷緛緪緧緗緡縃緺緦緶緱緰緮緟罶羬羰羭翭翫翪翬翦翨聤聧膣膟�\".split(\"\");\nfor(j = 0; j != D[230].length; ++j) if(D[230][j].charCodeAt(0) !== 0xFFFD) { e[D[230][j]] = 58880 + j; d[58880 + j] = D[230][j];}\nD[231] = \"����������������������������������������������������������������膞膕膢膙膗舖艏艓艒艐艎艑蔤蔻蔏蔀蔩蔎蔉蔍蔟蔊蔧蔜蓻蔫蓺蔈蔌蓴蔪蓲蔕蓷蓫蓳蓼蔒蓪蓩蔖蓾蔨蔝蔮蔂蓽蔞蓶蔱蔦蓧蓨蓰蓯蓹蔘蔠蔰蔋蔙蔯虢����������������������������������蝖蝣蝤蝷蟡蝳蝘蝔蝛蝒蝡蝚蝑蝞蝭蝪蝐蝎蝟蝝蝯蝬蝺蝮蝜蝥蝏蝻蝵蝢蝧蝩衚褅褌褔褋褗褘褙褆褖褑褎褉覢覤覣觭觰觬諏諆誸諓諑諔諕誻諗誾諀諅諘諃誺誽諙谾豍貏賥賟賙賨賚賝賧趠趜趡趛踠踣踥踤踮踕踛踖踑踙踦踧�\".split(\"\");\nfor(j = 0; j != D[231].length; ++j) if(D[231][j].charCodeAt(0) !== 0xFFFD) { e[D[231][j]] = 59136 + j; d[59136 + j] = D[231][j];}\nD[232] = \"����������������������������������������������������������������踔踒踘踓踜踗踚輬輤輘輚輠輣輖輗遳遰遯遧遫鄯鄫鄩鄪鄲鄦鄮醅醆醊醁醂醄醀鋐鋃鋄鋀鋙銶鋏鋱鋟鋘鋩鋗鋝鋌鋯鋂鋨鋊鋈鋎鋦鋍鋕鋉鋠鋞鋧鋑鋓����������������������������������銵鋡鋆銴镼閬閫閮閰隤隢雓霅霈霂靚鞊鞎鞈韐韏頞頝頦頩頨頠頛頧颲餈飺餑餔餖餗餕駜駍駏駓駔駎駉駖駘駋駗駌骳髬髫髳髲髱魆魃魧魴魱魦魶魵魰魨魤魬鳼鳺鳽鳿鳷鴇鴀鳹鳻鴈鴅鴄麃黓鼏鼐儜儓儗儚儑凞匴叡噰噠噮�\".split(\"\");\nfor(j = 0; j != D[232].length; ++j) if(D[232][j].charCodeAt(0) !== 0xFFFD) { e[D[232][j]] = 59392 + j; d[59392 + j] = D[232][j];}\nD[233] = \"����������������������������������������������������������������噳噦噣噭噲噞噷圜圛壈墽壉墿墺壂墼壆嬗嬙嬛嬡嬔嬓嬐嬖嬨嬚嬠嬞寯嶬嶱嶩嶧嶵嶰嶮嶪嶨嶲嶭嶯嶴幧幨幦幯廩廧廦廨廥彋徼憝憨憖懅憴懆懁懌憺����������������������������������憿憸憌擗擖擐擏擉撽撉擃擛擳擙攳敿敼斢曈暾曀曊曋曏暽暻暺曌朣樴橦橉橧樲橨樾橝橭橶橛橑樨橚樻樿橁橪橤橐橏橔橯橩橠樼橞橖橕橍橎橆歕歔歖殧殪殫毈毇氄氃氆澭濋澣濇澼濎濈潞濄澽澞濊澨瀄澥澮澺澬澪濏澿澸�\".split(\"\");\nfor(j = 0; j != D[233].length; ++j) if(D[233][j].charCodeAt(0) !== 0xFFFD) { e[D[233][j]] = 59648 + j; d[59648 + j] = D[233][j];}\nD[234] = \"����������������������������������������������������������������澢濉澫濍澯澲澰燅燂熿熸燖燀燁燋燔燊燇燏熽燘熼燆燚燛犝犞獩獦獧獬獥獫獪瑿璚璠璔璒璕璡甋疀瘯瘭瘱瘽瘳瘼瘵瘲瘰皻盦瞚瞝瞡瞜瞛瞢瞣瞕瞙����������������������������������瞗磝磩磥磪磞磣磛磡磢磭磟磠禤穄穈穇窶窸窵窱窷篞篣篧篝篕篥篚篨篹篔篪篢篜篫篘篟糒糔糗糐糑縒縡縗縌縟縠縓縎縜縕縚縢縋縏縖縍縔縥縤罃罻罼罺羱翯耪耩聬膱膦膮膹膵膫膰膬膴膲膷膧臲艕艖艗蕖蕅蕫蕍蕓蕡蕘�\".split(\"\");\nfor(j = 0; j != D[234].length; ++j) if(D[234][j].charCodeAt(0) !== 0xFFFD) { e[D[234][j]] = 59904 + j; d[59904 + j] = D[234][j];}\nD[235] = \"����������������������������������������������������������������蕀蕆蕤蕁蕢蕄蕑蕇蕣蔾蕛蕱蕎蕮蕵蕕蕧蕠薌蕦蕝蕔蕥蕬虣虥虤螛螏螗螓螒螈螁螖螘蝹螇螣螅螐螑螝螄螔螜螚螉褞褦褰褭褮褧褱褢褩褣褯褬褟觱諠����������������������������������諢諲諴諵諝謔諤諟諰諈諞諡諨諿諯諻貑貒貐賵賮賱賰賳赬赮趥趧踳踾踸蹀蹅踶踼踽蹁踰踿躽輶輮輵輲輹輷輴遶遹遻邆郺鄳鄵鄶醓醐醑醍醏錧錞錈錟錆錏鍺錸錼錛錣錒錁鍆錭錎錍鋋錝鋺錥錓鋹鋷錴錂錤鋿錩錹錵錪錔錌�\".split(\"\");\nfor(j = 0; j != D[235].length; ++j) if(D[235][j].charCodeAt(0) !== 0xFFFD) { e[D[235][j]] = 60160 + j; d[60160 + j] = D[235][j];}\nD[236] = \"����������������������������������������������������������������錋鋾錉錀鋻錖閼闍閾閹閺閶閿閵閽隩雔霋霒霐鞙鞗鞔韰韸頵頯頲餤餟餧餩馞駮駬駥駤駰駣駪駩駧骹骿骴骻髶髺髹髷鬳鮀鮅鮇魼魾魻鮂鮓鮒鮐魺鮕����������������������������������魽鮈鴥鴗鴠鴞鴔鴩鴝鴘鴢鴐鴙鴟麈麆麇麮麭黕黖黺鼒鼽儦儥儢儤儠儩勴嚓嚌嚍嚆嚄嚃噾嚂噿嚁壖壔壏壒嬭嬥嬲嬣嬬嬧嬦嬯嬮孻寱寲嶷幬幪徾徻懃憵憼懧懠懥懤懨懞擯擩擣擫擤擨斁斀斶旚曒檍檖檁檥檉檟檛檡檞檇檓檎�\".split(\"\");\nfor(j = 0; j != D[236].length; ++j) if(D[236][j].charCodeAt(0) !== 0xFFFD) { e[D[236][j]] = 60416 + j; d[60416 + j] = D[236][j];}\nD[237] = \"����������������������������������������������������������������檕檃檨檤檑橿檦檚檅檌檒歛殭氉濌澩濴濔濣濜濭濧濦濞濲濝濢濨燡燱燨燲燤燰燢獳獮獯璗璲璫璐璪璭璱璥璯甐甑甒甏疄癃癈癉癇皤盩瞵瞫瞲瞷瞶����������������������������������瞴瞱瞨矰磳磽礂磻磼磲礅磹磾礄禫禨穜穛穖穘穔穚窾竀竁簅簏篲簀篿篻簎篴簋篳簂簉簃簁篸篽簆篰篱簐簊糨縭縼繂縳顈縸縪繉繀繇縩繌縰縻縶繄縺罅罿罾罽翴翲耬膻臄臌臊臅臇膼臩艛艚艜薃薀薏薧薕薠薋薣蕻薤薚薞�\".split(\"\");\nfor(j = 0; j != D[237].length; ++j) if(D[237][j].charCodeAt(0) !== 0xFFFD) { e[D[237][j]] = 60672 + j; d[60672 + j] = D[237][j];}\nD[238] = \"����������������������������������������������������������������蕷蕼薉薡蕺蕸蕗薎薖薆薍薙薝薁薢薂薈薅蕹蕶薘薐薟虨螾螪螭蟅螰螬螹螵螼螮蟉蟃蟂蟌螷螯蟄蟊螴螶螿螸螽蟞螲褵褳褼褾襁襒褷襂覭覯覮觲觳謞����������������������������������謘謖謑謅謋謢謏謒謕謇謍謈謆謜謓謚豏豰豲豱豯貕貔賹赯蹎蹍蹓蹐蹌蹇轃轀邅遾鄸醚醢醛醙醟醡醝醠鎡鎃鎯鍤鍖鍇鍼鍘鍜鍶鍉鍐鍑鍠鍭鎏鍌鍪鍹鍗鍕鍒鍏鍱鍷鍻鍡鍞鍣鍧鎀鍎鍙闇闀闉闃闅閷隮隰隬霠霟霘霝霙鞚鞡鞜�\".split(\"\");\nfor(j = 0; j != D[238].length; ++j) if(D[238][j].charCodeAt(0) !== 0xFFFD) { e[D[238][j]] = 60928 + j; d[60928 + j] = D[238][j];}\nD[239] = \"����������������������������������������������������������������鞞鞝韕韔韱顁顄顊顉顅顃餥餫餬餪餳餲餯餭餱餰馘馣馡騂駺駴駷駹駸駶駻駽駾駼騃骾髾髽鬁髼魈鮚鮨鮞鮛鮦鮡鮥鮤鮆鮢鮠鮯鴳鵁鵧鴶鴮鴯鴱鴸鴰����������������������������������鵅鵂鵃鴾鴷鵀鴽翵鴭麊麉麍麰黈黚黻黿鼤鼣鼢齔龠儱儭儮嚘嚜嚗嚚嚝嚙奰嬼屩屪巀幭幮懘懟懭懮懱懪懰懫懖懩擿攄擽擸攁攃擼斔旛曚曛曘櫅檹檽櫡櫆檺檶檷櫇檴檭歞毉氋瀇瀌瀍瀁瀅瀔瀎濿瀀濻瀦濼濷瀊爁燿燹爃燽獶�\".split(\"\");\nfor(j = 0; j != D[239].length; ++j) if(D[239][j].charCodeAt(0) !== 0xFFFD) { e[D[239][j]] = 61184 + j; d[61184 + j] = D[239][j];}\nD[240] = \"����������������������������������������������������������������璸瓀璵瓁璾璶璻瓂甔甓癜癤癙癐癓癗癚皦皽盬矂瞺磿礌礓礔礉礐礒礑禭禬穟簜簩簙簠簟簭簝簦簨簢簥簰繜繐繖繣繘繢繟繑繠繗繓羵羳翷翸聵臑臒����������������������������������臐艟艞薴藆藀藃藂薳薵薽藇藄薿藋藎藈藅薱薶藒蘤薸薷薾虩蟧蟦蟢蟛蟫蟪蟥蟟蟳蟤蟔蟜蟓蟭蟘蟣螤蟗蟙蠁蟴蟨蟝襓襋襏襌襆襐襑襉謪謧謣謳謰謵譇謯謼謾謱謥謷謦謶謮謤謻謽謺豂豵貙貘貗賾贄贂贀蹜蹢蹠蹗蹖蹞蹥蹧�\".split(\"\");\nfor(j = 0; j != D[240].length; ++j) if(D[240][j].charCodeAt(0) !== 0xFFFD) { e[D[240][j]] = 61440 + j; d[61440 + j] = D[240][j];}\nD[241] = \"����������������������������������������������������������������蹛蹚蹡蹝蹩蹔轆轇轈轋鄨鄺鄻鄾醨醥醧醯醪鎵鎌鎒鎷鎛鎝鎉鎧鎎鎪鎞鎦鎕鎈鎙鎟鎍鎱鎑鎲鎤鎨鎴鎣鎥闒闓闑隳雗雚巂雟雘雝霣霢霥鞬鞮鞨鞫鞤鞪����������������������������������鞢鞥韗韙韖韘韺顐顑顒颸饁餼餺騏騋騉騍騄騑騊騅騇騆髀髜鬈鬄鬅鬩鬵魊魌魋鯇鯆鯃鮿鯁鮵鮸鯓鮶鯄鮹鮽鵜鵓鵏鵊鵛鵋鵙鵖鵌鵗鵒鵔鵟鵘鵚麎麌黟鼁鼀鼖鼥鼫鼪鼩鼨齌齕儴儵劖勷厴嚫嚭嚦嚧嚪嚬壚壝壛夒嬽嬾嬿巃幰�\".split(\"\");\nfor(j = 0; j != D[241].length; ++j) if(D[241][j].charCodeAt(0) !== 0xFFFD) { e[D[241][j]] = 61696 + j; d[61696 + j] = D[241][j];}\nD[242] = \"����������������������������������������������������������������徿懻攇攐攍攉攌攎斄旞旝曞櫧櫠櫌櫑櫙櫋櫟櫜櫐櫫櫏櫍櫞歠殰氌瀙瀧瀠瀖瀫瀡瀢瀣瀩瀗瀤瀜瀪爌爊爇爂爅犥犦犤犣犡瓋瓅璷瓃甖癠矉矊矄矱礝礛����������������������������������礡礜礗礞禰穧穨簳簼簹簬簻糬糪繶繵繸繰繷繯繺繲繴繨罋罊羃羆羷翽翾聸臗臕艤艡艣藫藱藭藙藡藨藚藗藬藲藸藘藟藣藜藑藰藦藯藞藢蠀蟺蠃蟶蟷蠉蠌蠋蠆蟼蠈蟿蠊蠂襢襚襛襗襡襜襘襝襙覈覷覶觶譐譈譊譀譓譖譔譋譕�\".split(\"\");\nfor(j = 0; j != D[242].length; ++j) if(D[242][j].charCodeAt(0) !== 0xFFFD) { e[D[242][j]] = 61952 + j; d[61952 + j] = D[242][j];}\nD[243] = \"����������������������������������������������������������������譑譂譒譗豃豷豶貚贆贇贉趬趪趭趫蹭蹸蹳蹪蹯蹻軂轒轑轏轐轓辴酀鄿醰醭鏞鏇鏏鏂鏚鏐鏹鏬鏌鏙鎩鏦鏊鏔鏮鏣鏕鏄鏎鏀鏒鏧镽闚闛雡霩霫霬霨霦����������������������������������鞳鞷鞶韝韞韟顜顙顝顗颿颽颻颾饈饇饃馦馧騚騕騥騝騤騛騢騠騧騣騞騜騔髂鬋鬊鬎鬌鬷鯪鯫鯠鯞鯤鯦鯢鯰鯔鯗鯬鯜鯙鯥鯕鯡鯚鵷鶁鶊鶄鶈鵱鶀鵸鶆鶋鶌鵽鵫鵴鵵鵰鵩鶅鵳鵻鶂鵯鵹鵿鶇鵨麔麑黀黼鼭齀齁齍齖齗齘匷嚲�\".split(\"\");\nfor(j = 0; j != D[243].length; ++j) if(D[243][j].charCodeAt(0) !== 0xFFFD) { e[D[243][j]] = 62208 + j; d[62208 + j] = D[243][j];}\nD[244] = \"����������������������������������������������������������������嚵嚳壣孅巆巇廮廯忀忁懹攗攖攕攓旟曨曣曤櫳櫰櫪櫨櫹櫱櫮櫯瀼瀵瀯瀷瀴瀱灂瀸瀿瀺瀹灀瀻瀳灁爓爔犨獽獼璺皫皪皾盭矌矎矏矍矲礥礣礧礨礤礩����������������������������������禲穮穬穭竷籉籈籊籇籅糮繻繾纁纀羺翿聹臛臙舋艨艩蘢藿蘁藾蘛蘀藶蘄蘉蘅蘌藽蠙蠐蠑蠗蠓蠖襣襦覹觷譠譪譝譨譣譥譧譭趮躆躈躄轙轖轗轕轘轚邍酃酁醷醵醲醳鐋鐓鏻鐠鐏鐔鏾鐕鐐鐨鐙鐍鏵鐀鏷鐇鐎鐖鐒鏺鐉鏸鐊鏿�\".split(\"\");\nfor(j = 0; j != D[244].length; ++j) if(D[244][j].charCodeAt(0) !== 0xFFFD) { e[D[244][j]] = 62464 + j; d[62464 + j] = D[244][j];}\nD[245] = \"����������������������������������������������������������������鏼鐌鏶鐑鐆闞闠闟霮霯鞹鞻韽韾顠顢顣顟飁飂饐饎饙饌饋饓騲騴騱騬騪騶騩騮騸騭髇髊髆鬐鬒鬑鰋鰈鯷鰅鰒鯸鱀鰇鰎鰆鰗鰔鰉鶟鶙鶤鶝鶒鶘鶐鶛����������������������������������鶠鶔鶜鶪鶗鶡鶚鶢鶨鶞鶣鶿鶩鶖鶦鶧麙麛麚黥黤黧黦鼰鼮齛齠齞齝齙龑儺儹劘劗囃嚽嚾孈孇巋巏廱懽攛欂櫼欃櫸欀灃灄灊灈灉灅灆爝爚爙獾甗癪矐礭礱礯籔籓糲纊纇纈纋纆纍罍羻耰臝蘘蘪蘦蘟蘣蘜蘙蘧蘮蘡蘠蘩蘞蘥�\".split(\"\");\nfor(j = 0; j != D[245].length; ++j) if(D[245][j].charCodeAt(0) !== 0xFFFD) { e[D[245][j]] = 62720 + j; d[62720 + j] = D[245][j];}\nD[246] = \"����������������������������������������������������������������蠩蠝蠛蠠蠤蠜蠫衊襭襩襮襫觺譹譸譅譺譻贐贔趯躎躌轞轛轝酆酄酅醹鐿鐻鐶鐩鐽鐼鐰鐹鐪鐷鐬鑀鐱闥闤闣霵霺鞿韡顤飉飆飀饘饖騹騽驆驄驂驁騺����������������������������������騿髍鬕鬗鬘鬖鬺魒鰫鰝鰜鰬鰣鰨鰩鰤鰡鶷鶶鶼鷁鷇鷊鷏鶾鷅鷃鶻鶵鷎鶹鶺鶬鷈鶱鶭鷌鶳鷍鶲鹺麜黫黮黭鼛鼘鼚鼱齎齥齤龒亹囆囅囋奱孋孌巕巑廲攡攠攦攢欋欈欉氍灕灖灗灒爞爟犩獿瓘瓕瓙瓗癭皭礵禴穰穱籗籜籙籛籚�\".split(\"\");\nfor(j = 0; j != D[246].length; ++j) if(D[246][j].charCodeAt(0) !== 0xFFFD) { e[D[246][j]] = 62976 + j; d[62976 + j] = D[246][j];}\nD[247] = \"����������������������������������������������������������������糴糱纑罏羇臞艫蘴蘵蘳蘬蘲蘶蠬蠨蠦蠪蠥襱覿覾觻譾讄讂讆讅譿贕躕躔躚躒躐躖躗轠轢酇鑌鑐鑊鑋鑏鑇鑅鑈鑉鑆霿韣顪顩飋饔饛驎驓驔驌驏驈驊����������������������������������驉驒驐髐鬙鬫鬻魖魕鱆鱈鰿鱄鰹鰳鱁鰼鰷鰴鰲鰽鰶鷛鷒鷞鷚鷋鷐鷜鷑鷟鷩鷙鷘鷖鷵鷕鷝麶黰鼵鼳鼲齂齫龕龢儽劙壨壧奲孍巘蠯彏戁戃戄攩攥斖曫欑欒欏毊灛灚爢玂玁玃癰矔籧籦纕艬蘺虀蘹蘼蘱蘻蘾蠰蠲蠮蠳襶襴襳觾�\".split(\"\");\nfor(j = 0; j != D[247].length; ++j) if(D[247][j].charCodeAt(0) !== 0xFFFD) { e[D[247][j]] = 63232 + j; d[63232 + j] = D[247][j];}\nD[248] = \"����������������������������������������������������������������讌讎讋讈豅贙躘轤轣醼鑢鑕鑝鑗鑞韄韅頀驖驙鬞鬟鬠鱒鱘鱐鱊鱍鱋鱕鱙鱌鱎鷻鷷鷯鷣鷫鷸鷤鷶鷡鷮鷦鷲鷰鷢鷬鷴鷳鷨鷭黂黐黲黳鼆鼜鼸鼷鼶齃齏����������������������������������齱齰齮齯囓囍孎屭攭曭曮欓灟灡灝灠爣瓛瓥矕礸禷禶籪纗羉艭虃蠸蠷蠵衋讔讕躞躟躠躝醾醽釂鑫鑨鑩雥靆靃靇韇韥驞髕魙鱣鱧鱦鱢鱞鱠鸂鷾鸇鸃鸆鸅鸀鸁鸉鷿鷽鸄麠鼞齆齴齵齶囔攮斸欘欙欗欚灢爦犪矘矙礹籩籫糶纚�\".split(\"\");\nfor(j = 0; j != D[248].length; ++j) if(D[248][j].charCodeAt(0) !== 0xFFFD) { e[D[248][j]] = 63488 + j; d[63488 + j] = D[248][j];}\nD[249] = \"����������������������������������������������������������������纘纛纙臠臡虆虇虈襹襺襼襻觿讘讙躥躤躣鑮鑭鑯鑱鑳靉顲饟鱨鱮鱭鸋鸍鸐鸏鸒鸑麡黵鼉齇齸齻齺齹圞灦籯蠼趲躦釃鑴鑸鑶鑵驠鱴鱳鱱鱵鸔鸓黶鼊����������������������������������龤灨灥糷虪蠾蠽蠿讞貜躩軉靋顳顴飌饡馫驤驦驧鬤鸕鸗齈戇欞爧虌躨钂钀钁驩驨鬮鸙爩虋讟钃鱹麷癵驫鱺鸝灩灪麤齾齉龘碁銹裏墻恒粧嫺╔╦╗╠╬╣╚╩╝╒╤╕╞╪╡╘╧╛╓╥╖╟╫╢╙╨╜║═╭╮╰╯▓�\".split(\"\");\nfor(j = 0; j != D[249].length; ++j) if(D[249][j].charCodeAt(0) !== 0xFFFD) { e[D[249][j]] = 63744 + j; d[63744 + j] = D[249][j];}\nreturn {\"enc\": e, \"dec\": d }; })();\ncptable[1250] = (function(){ var d = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~€�‚�„…†‡�‰Š‹ŚŤŽŹ�‘’“”•–—�™š›śťžź ˇ˘Ł¤Ą¦§¨©Ş«¬­®Ż°±˛ł´µ¶·¸ąş»Ľ˝ľżŔÁÂĂÄĹĆÇČÉĘËĚÍÎĎĐŃŇÓÔŐÖ×ŘŮÚŰÜÝŢßŕáâăäĺćçčéęëěíîďđńňóôőö÷řůúűüýţ˙\", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\ncptable[1251] = (function(){ var d = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~ЂЃ‚ѓ„…†‡€‰Љ‹ЊЌЋЏђ‘’“”•–—�™љ›њќћџ ЎўЈ¤Ґ¦§Ё©Є«¬­®Ї°±Ііґµ¶·ё№є»јЅѕїАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюя\", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\ncptable[1252] = (function(){ var d = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~€�‚ƒ„…†‡ˆ‰Š‹Œ�Ž��‘’“”•–—˜™š›œ�žŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ\", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\ncptable[1253] = (function(){ var d = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~€�‚ƒ„…†‡�‰�‹�����‘’“”•–—�™�›���� ΅Ά£¤¥¦§¨©�«¬­®―°±²³΄µ¶·ΈΉΊ»Ό½ΎΏΐΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡ�ΣΤΥΦΧΨΩΪΫάέήίΰαβγδεζηθικλμνξοπρςστυφχψωϊϋόύώ�\", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\ncptable[1254] = (function(){ var d = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~€�‚ƒ„…†‡ˆ‰Š‹Œ����‘’“”•–—˜™š›œ��Ÿ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏĞÑÒÓÔÕÖ×ØÙÚÛÜİŞßàáâãäåæçèéêëìíîïğñòóôõö÷øùúûüışÿ\", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\ncptable[1255] = (function(){ var d = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~€�‚ƒ„…†‡ˆ‰�‹�����‘’“”•–—˜™�›���� ¡¢£₪¥¦§¨©×«¬­®¯°±²³´µ¶·¸¹÷»¼½¾¿ְֱֲֳִֵֶַָֹ�ֻּֽ־ֿ׀ׁׂ׃װױײ׳״�������אבגדהוזחטיךכלםמןנסעףפץצקרשת��‎‏�\", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\ncptable[1256] = (function(){ var d = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~€پ‚ƒ„…†‡ˆ‰ٹ‹Œچژڈگ‘’“”•–—ک™ڑ›œ‌‍ں ،¢£¤¥¦§¨©ھ«¬­®¯°±²³´µ¶·¸¹؛»¼½¾؟ہءآأؤإئابةتثجحخدذرزسشصض×طظعغـفقكàلâمنهوçèéêëىيîïًٌٍَôُِ÷ّùْûü‎‏ے\", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\ncptable[1257] = (function(){ var d = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~€�‚�„…†‡�‰�‹�¨ˇ¸�‘’“”•–—�™�›�¯˛� �¢£¤�¦§Ø©Ŗ«¬­®Æ°±²³´µ¶·ø¹ŗ»¼½¾æĄĮĀĆÄÅĘĒČÉŹĖĢĶĪĻŠŃŅÓŌÕÖ×ŲŁŚŪÜŻŽßąįāćäåęēčéźėģķīļšńņóōõö÷ųłśūüżž˙\", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\ncptable[1258] = (function(){ var d = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~€�‚ƒ„…†‡ˆ‰�‹Œ����‘’“”•–—˜™�›œ��Ÿ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂĂÄÅÆÇÈÉÊË̀ÍÎÏĐÑ̉ÓÔƠÖ×ØÙÚÛÜỮßàáâăäåæçèéêë́íîïđṇ̃óôơö÷øùúûüư₫ÿ\", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\ncptable[10000] = (function(){ var d = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûü†°¢£§•¶ß®©™´¨≠ÆØ∞±≤≥¥µ∂∑∏π∫ªºΩæø¿¡¬√ƒ≈∆«»… ÀÃÕŒœ–—“”‘’÷◊ÿŸ⁄¤‹›fifl‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔ�ÒÚÛÙıˆ˜¯˘˙˚¸˝˛ˇ\", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\ncptable[10006] = (function(){ var d = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~Ĺ²É³ÖÜ΅àâä΄¨çéèê룙î‰ôö¦­ùûü†ΓΔΘΛΞΠß®©ΣΪ§≠°·Α±≤≥¥ΒΕΖΗΙΚΜΦΫΨΩάΝ¬ΟΡ≈Τ«»… ΥΧΆΈœ–―“”‘’÷ΉΊΌΎέήίόΏύαβψδεφγηιξκλμνοπώρστθωςχυζϊϋΐΰ�\", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\ncptable[10007] = (function(){ var d = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ†°¢£§•¶І®©™Ђђ≠Ѓѓ∞±≤≥іµ∂ЈЄєЇїЉљЊњјЅ¬√ƒ≈∆«»… ЋћЌќѕ–—“”‘’÷„ЎўЏџ№Ёёяабвгдежзийклмнопрстуфхцчшщъыьэю¤\", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\ncptable[10008] = (function(){ var d = [], e = {}, D = [], j;\nD[0] = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~€���������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[0].length; ++j) if(D[0][j].charCodeAt(0) !== 0xFFFD) { e[D[0][j]] = 0 + j; d[0 + j] = D[0][j];}\nD[161] = \"����������������������������������������������������������������������������������������������������������������������������������������������������������������� 、。・ˉˇ¨〃々―~�…‘’“”〔〕〈〉《》「」『』〖〗【】±×÷∶∧∨∑∏∪∩∈∷√⊥∥∠⌒⊙∫∮≡≌≈∽∝≠≮≯≤≥∞∵∴♂♀°′″℃$¤¢£‰§№☆★○●◎◇◆□■△▲※→←↑↓〓�\".split(\"\");\nfor(j = 0; j != D[161].length; ++j) if(D[161][j].charCodeAt(0) !== 0xFFFD) { e[D[161][j]] = 41216 + j; d[41216 + j] = D[161][j];}\nD[162] = \"���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������⒈⒉⒊⒋⒌⒍⒎⒏⒐⒑⒒⒓⒔⒕⒖⒗⒘⒙⒚⒛⑴⑵⑶⑷⑸⑹⑺⑻⑼⑽⑾⑿⒀⒁⒂⒃⒄⒅⒆⒇①②③④⑤⑥⑦⑧⑨⑩��㈠㈡㈢㈣㈤㈥㈦㈧㈨㈩��ⅠⅡⅢⅣⅤⅥⅦⅧⅨⅩⅪⅫ���\".split(\"\");\nfor(j = 0; j != D[162].length; ++j) if(D[162][j].charCodeAt(0) !== 0xFFFD) { e[D[162][j]] = 41472 + j; d[41472 + j] = D[162][j];}\nD[163] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������!"#¥%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|} ̄�\".split(\"\");\nfor(j = 0; j != D[163].length; ++j) if(D[163][j].charCodeAt(0) !== 0xFFFD) { e[D[163][j]] = 41728 + j; d[41728 + j] = D[163][j];}\nD[164] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������ぁあぃいぅうぇえぉおかがきぎくぐけげこごさざしじすずせぜそぞただちぢっつづてでとどなにぬねのはばぱひびぴふぶぷへべぺほぼぽまみむめもゃやゅゆょよらりるれろゎわゐゑをん������������\".split(\"\");\nfor(j = 0; j != D[164].length; ++j) if(D[164][j].charCodeAt(0) !== 0xFFFD) { e[D[164][j]] = 41984 + j; d[41984 + j] = D[164][j];}\nD[165] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������ァアィイゥウェエォオカガキギクグケゲコゴサザシジスズセゼソゾタダチヂッツヅテデトドナニヌネノハバパヒビピフブプヘベペホボポマミムメモャヤュユョヨラリルレロヮワヰヱヲンヴヵヶ���������\".split(\"\");\nfor(j = 0; j != D[165].length; ++j) if(D[165][j].charCodeAt(0) !== 0xFFFD) { e[D[165][j]] = 42240 + j; d[42240 + j] = D[165][j];}\nD[166] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������ΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡΣΤΥΦΧΨΩ��������αβγδεζηθικλμνξοπρστυφχψω���������������������������������������\".split(\"\");\nfor(j = 0; j != D[166].length; ++j) if(D[166][j].charCodeAt(0) !== 0xFFFD) { e[D[166][j]] = 42496 + j; d[42496 + j] = D[166][j];}\nD[167] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ���������������абвгдеёжзийклмнопрстуфхцчшщъыьэюя��������������\".split(\"\");\nfor(j = 0; j != D[167].length; ++j) if(D[167][j].charCodeAt(0) !== 0xFFFD) { e[D[167][j]] = 42752 + j; d[42752 + j] = D[167][j];}\nD[168] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������āáǎàēéěèīíǐìōóǒòūúǔùǖǘǚǜüê����������ㄅㄆㄇㄈㄉㄊㄋㄌㄍㄎㄏㄐㄑㄒㄓㄔㄕㄖㄗㄘㄙㄚㄛㄜㄝㄞㄟㄠㄡㄢㄣㄤㄥㄦㄧㄨㄩ����������������������\".split(\"\");\nfor(j = 0; j != D[168].length; ++j) if(D[168][j].charCodeAt(0) !== 0xFFFD) { e[D[168][j]] = 43008 + j; d[43008 + j] = D[168][j];}\nD[169] = \"��������������������������������������������������������������������������������������������������������������������������������������������������������������������─━│┃┄┅┆┇┈┉┊┋┌┍┎┏┐┑┒┓└┕┖┗┘┙┚┛├┝┞┟┠┡┢┣┤┥┦┧┨┩┪┫┬┭┮┯┰┱┲┳┴┵┶┷┸┹┺┻┼┽┾┿╀╁╂╃╄╅╆╇╈╉╊╋����������������\".split(\"\");\nfor(j = 0; j != D[169].length; ++j) if(D[169][j].charCodeAt(0) !== 0xFFFD) { e[D[169][j]] = 43264 + j; d[43264 + j] = D[169][j];}\nD[176] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������啊阿埃挨哎唉哀皑癌蔼矮艾碍爱隘鞍氨安俺按暗岸胺案肮昂盎凹敖熬翱袄傲奥懊澳芭捌扒叭吧笆八疤巴拔跋靶把耙坝霸罢爸白柏百摆佰败拜稗斑班搬扳般颁板版扮拌伴瓣半办绊邦帮梆榜膀绑棒磅蚌镑傍谤苞胞包褒剥�\".split(\"\");\nfor(j = 0; j != D[176].length; ++j) if(D[176][j].charCodeAt(0) !== 0xFFFD) { e[D[176][j]] = 45056 + j; d[45056 + j] = D[176][j];}\nD[177] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������薄雹保堡饱宝抱报暴豹鲍爆杯碑悲卑北辈背贝钡倍狈备惫焙被奔苯本笨崩绷甭泵蹦迸逼鼻比鄙笔彼碧蓖蔽毕毙毖币庇痹闭敝弊必辟壁臂避陛鞭边编贬扁便变卞辨辩辫遍标彪膘表鳖憋别瘪彬斌濒滨宾摈兵冰柄丙秉饼炳�\".split(\"\");\nfor(j = 0; j != D[177].length; ++j) if(D[177][j].charCodeAt(0) !== 0xFFFD) { e[D[177][j]] = 45312 + j; d[45312 + j] = D[177][j];}\nD[178] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������病并玻菠播拨钵波博勃搏铂箔伯帛舶脖膊渤泊驳捕卜哺补埠不布步簿部怖擦猜裁材才财睬踩采彩菜蔡餐参蚕残惭惨灿苍舱仓沧藏操糙槽曹草厕策侧册测层蹭插叉茬茶查碴搽察岔差诧拆柴豺搀掺蝉馋谗缠铲产阐颤昌猖�\".split(\"\");\nfor(j = 0; j != D[178].length; ++j) if(D[178][j].charCodeAt(0) !== 0xFFFD) { e[D[178][j]] = 45568 + j; d[45568 + j] = D[178][j];}\nD[179] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������场尝常长偿肠厂敞畅唱倡超抄钞朝嘲潮巢吵炒车扯撤掣彻澈郴臣辰尘晨忱沉陈趁衬撑称城橙成呈乘程惩澄诚承逞骋秤吃痴持匙池迟弛驰耻齿侈尺赤翅斥炽充冲虫崇宠抽酬畴踌稠愁筹仇绸瞅丑臭初出橱厨躇锄雏滁除楚�\".split(\"\");\nfor(j = 0; j != D[179].length; ++j) if(D[179][j].charCodeAt(0) !== 0xFFFD) { e[D[179][j]] = 45824 + j; d[45824 + j] = D[179][j];}\nD[180] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������础储矗搐触处揣川穿椽传船喘串疮窗幢床闯创吹炊捶锤垂春椿醇唇淳纯蠢戳绰疵茨磁雌辞慈瓷词此刺赐次聪葱囱匆从丛凑粗醋簇促蹿篡窜摧崔催脆瘁粹淬翠村存寸磋撮搓措挫错搭达答瘩打大呆歹傣戴带殆代贷袋待逮�\".split(\"\");\nfor(j = 0; j != D[180].length; ++j) if(D[180][j].charCodeAt(0) !== 0xFFFD) { e[D[180][j]] = 46080 + j; d[46080 + j] = D[180][j];}\nD[181] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������怠耽担丹单郸掸胆旦氮但惮淡诞弹蛋当挡党荡档刀捣蹈倒岛祷导到稻悼道盗德得的蹬灯登等瞪凳邓堤低滴迪敌笛狄涤翟嫡抵底地蒂第帝弟递缔颠掂滇碘点典靛垫电佃甸店惦奠淀殿碉叼雕凋刁掉吊钓调跌爹碟蝶迭谍叠�\".split(\"\");\nfor(j = 0; j != D[181].length; ++j) if(D[181][j].charCodeAt(0) !== 0xFFFD) { e[D[181][j]] = 46336 + j; d[46336 + j] = D[181][j];}\nD[182] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������丁盯叮钉顶鼎锭定订丢东冬董懂动栋侗恫冻洞兜抖斗陡豆逗痘都督毒犊独读堵睹赌杜镀肚度渡妒端短锻段断缎堆兑队对墩吨蹲敦顿囤钝盾遁掇哆多夺垛躲朵跺舵剁惰堕蛾峨鹅俄额讹娥恶厄扼遏鄂饿恩而儿耳尔饵洱二�\".split(\"\");\nfor(j = 0; j != D[182].length; ++j) if(D[182][j].charCodeAt(0) !== 0xFFFD) { e[D[182][j]] = 46592 + j; d[46592 + j] = D[182][j];}\nD[183] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������贰发罚筏伐乏阀法珐藩帆番翻樊矾钒繁凡烦反返范贩犯饭泛坊芳方肪房防妨仿访纺放菲非啡飞肥匪诽吠肺废沸费芬酚吩氛分纷坟焚汾粉奋份忿愤粪丰封枫蜂峰锋风疯烽逢冯缝讽奉凤佛否夫敷肤孵扶拂辐幅氟符伏俘服�\".split(\"\");\nfor(j = 0; j != D[183].length; ++j) if(D[183][j].charCodeAt(0) !== 0xFFFD) { e[D[183][j]] = 46848 + j; d[46848 + j] = D[183][j];}\nD[184] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������浮涪福袱弗甫抚辅俯釜斧脯腑府腐赴副覆赋复傅付阜父腹负富讣附妇缚咐噶嘎该改概钙盖溉干甘杆柑竿肝赶感秆敢赣冈刚钢缸肛纲岗港杠篙皋高膏羔糕搞镐稿告哥歌搁戈鸽胳疙割革葛格蛤阁隔铬个各给根跟耕更庚羹�\".split(\"\");\nfor(j = 0; j != D[184].length; ++j) if(D[184][j].charCodeAt(0) !== 0xFFFD) { e[D[184][j]] = 47104 + j; d[47104 + j] = D[184][j];}\nD[185] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������埂耿梗工攻功恭龚供躬公宫弓巩汞拱贡共钩勾沟苟狗垢构购够辜菇咕箍估沽孤姑鼓古蛊骨谷股故顾固雇刮瓜剐寡挂褂乖拐怪棺关官冠观管馆罐惯灌贯光广逛瑰规圭硅归龟闺轨鬼诡癸桂柜跪贵刽辊滚棍锅郭国果裹过哈�\".split(\"\");\nfor(j = 0; j != D[185].length; ++j) if(D[185][j].charCodeAt(0) !== 0xFFFD) { e[D[185][j]] = 47360 + j; d[47360 + j] = D[185][j];}\nD[186] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������骸孩海氦亥害骇酣憨邯韩含涵寒函喊罕翰撼捍旱憾悍焊汗汉夯杭航壕嚎豪毫郝好耗号浩呵喝荷菏核禾和何合盒貉阂河涸赫褐鹤贺嘿黑痕很狠恨哼亨横衡恒轰哄烘虹鸿洪宏弘红喉侯猴吼厚候后呼乎忽瑚壶葫胡蝴狐糊湖�\".split(\"\");\nfor(j = 0; j != D[186].length; ++j) if(D[186][j].charCodeAt(0) !== 0xFFFD) { e[D[186][j]] = 47616 + j; d[47616 + j] = D[186][j];}\nD[187] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������弧虎唬护互沪户花哗华猾滑画划化话槐徊怀淮坏欢环桓还缓换患唤痪豢焕涣宦幻荒慌黄磺蝗簧皇凰惶煌晃幌恍谎灰挥辉徽恢蛔回毁悔慧卉惠晦贿秽会烩汇讳诲绘荤昏婚魂浑混豁活伙火获或惑霍货祸击圾基机畸稽积箕�\".split(\"\");\nfor(j = 0; j != D[187].length; ++j) if(D[187][j].charCodeAt(0) !== 0xFFFD) { e[D[187][j]] = 47872 + j; d[47872 + j] = D[187][j];}\nD[188] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������肌饥迹激讥鸡姬绩缉吉极棘辑籍集及急疾汲即嫉级挤几脊己蓟技冀季伎祭剂悸济寄寂计记既忌际妓继纪嘉枷夹佳家加荚颊贾甲钾假稼价架驾嫁歼监坚尖笺间煎兼肩艰奸缄茧检柬碱硷拣捡简俭剪减荐槛鉴践贱见键箭件�\".split(\"\");\nfor(j = 0; j != D[188].length; ++j) if(D[188][j].charCodeAt(0) !== 0xFFFD) { e[D[188][j]] = 48128 + j; d[48128 + j] = D[188][j];}\nD[189] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������健舰剑饯渐溅涧建僵姜将浆江疆蒋桨奖讲匠酱降蕉椒礁焦胶交郊浇骄娇嚼搅铰矫侥脚狡角饺缴绞剿教酵轿较叫窖揭接皆秸街阶截劫节桔杰捷睫竭洁结解姐戒藉芥界借介疥诫届巾筋斤金今津襟紧锦仅谨进靳晋禁近烬浸�\".split(\"\");\nfor(j = 0; j != D[189].length; ++j) if(D[189][j].charCodeAt(0) !== 0xFFFD) { e[D[189][j]] = 48384 + j; d[48384 + j] = D[189][j];}\nD[190] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������尽劲荆兢茎睛晶鲸京惊精粳经井警景颈静境敬镜径痉靖竟竞净炯窘揪究纠玖韭久灸九酒厩救旧臼舅咎就疚鞠拘狙疽居驹菊局咀矩举沮聚拒据巨具距踞锯俱句惧炬剧捐鹃娟倦眷卷绢撅攫抉掘倔爵觉决诀绝均菌钧军君峻�\".split(\"\");\nfor(j = 0; j != D[190].length; ++j) if(D[190][j].charCodeAt(0) !== 0xFFFD) { e[D[190][j]] = 48640 + j; d[48640 + j] = D[190][j];}\nD[191] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������俊竣浚郡骏喀咖卡咯开揩楷凯慨刊堪勘坎砍看康慷糠扛抗亢炕考拷烤靠坷苛柯棵磕颗科壳咳可渴克刻客课肯啃垦恳坑吭空恐孔控抠口扣寇枯哭窟苦酷库裤夸垮挎跨胯块筷侩快宽款匡筐狂框矿眶旷况亏盔岿窥葵奎魁傀�\".split(\"\");\nfor(j = 0; j != D[191].length; ++j) if(D[191][j].charCodeAt(0) !== 0xFFFD) { e[D[191][j]] = 48896 + j; d[48896 + j] = D[191][j];}\nD[192] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������馈愧溃坤昆捆困括扩廓阔垃拉喇蜡腊辣啦莱来赖蓝婪栏拦篮阑兰澜谰揽览懒缆烂滥琅榔狼廊郎朗浪捞劳牢老佬姥酪烙涝勒乐雷镭蕾磊累儡垒擂肋类泪棱楞冷厘梨犁黎篱狸离漓理李里鲤礼莉荔吏栗丽厉励砾历利傈例俐�\".split(\"\");\nfor(j = 0; j != D[192].length; ++j) if(D[192][j].charCodeAt(0) !== 0xFFFD) { e[D[192][j]] = 49152 + j; d[49152 + j] = D[192][j];}\nD[193] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������痢立粒沥隶力璃哩俩联莲连镰廉怜涟帘敛脸链恋炼练粮凉梁粱良两辆量晾亮谅撩聊僚疗燎寥辽潦了撂镣廖料列裂烈劣猎琳林磷霖临邻鳞淋凛赁吝拎玲菱零龄铃伶羚凌灵陵岭领另令溜琉榴硫馏留刘瘤流柳六龙聋咙笼窿�\".split(\"\");\nfor(j = 0; j != D[193].length; ++j) if(D[193][j].charCodeAt(0) !== 0xFFFD) { e[D[193][j]] = 49408 + j; d[49408 + j] = D[193][j];}\nD[194] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������隆垄拢陇楼娄搂篓漏陋芦卢颅庐炉掳卤虏鲁麓碌露路赂鹿潞禄录陆戮驴吕铝侣旅履屡缕虑氯律率滤绿峦挛孪滦卵乱掠略抡轮伦仑沦纶论萝螺罗逻锣箩骡裸落洛骆络妈麻玛码蚂马骂嘛吗埋买麦卖迈脉瞒馒蛮满蔓曼慢漫�\".split(\"\");\nfor(j = 0; j != D[194].length; ++j) if(D[194][j].charCodeAt(0) !== 0xFFFD) { e[D[194][j]] = 49664 + j; d[49664 + j] = D[194][j];}\nD[195] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������谩芒茫盲氓忙莽猫茅锚毛矛铆卯茂冒帽貌贸么玫枚梅酶霉煤没眉媒镁每美昧寐妹媚门闷们萌蒙檬盟锰猛梦孟眯醚靡糜迷谜弥米秘觅泌蜜密幂棉眠绵冕免勉娩缅面苗描瞄藐秒渺庙妙蔑灭民抿皿敏悯闽明螟鸣铭名命谬摸�\".split(\"\");\nfor(j = 0; j != D[195].length; ++j) if(D[195][j].charCodeAt(0) !== 0xFFFD) { e[D[195][j]] = 49920 + j; d[49920 + j] = D[195][j];}\nD[196] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������摹蘑模膜磨摩魔抹末莫墨默沫漠寞陌谋牟某拇牡亩姆母墓暮幕募慕木目睦牧穆拿哪呐钠那娜纳氖乃奶耐奈南男难囊挠脑恼闹淖呢馁内嫩能妮霓倪泥尼拟你匿腻逆溺蔫拈年碾撵捻念娘酿鸟尿捏聂孽啮镊镍涅您柠狞凝宁�\".split(\"\");\nfor(j = 0; j != D[196].length; ++j) if(D[196][j].charCodeAt(0) !== 0xFFFD) { e[D[196][j]] = 50176 + j; d[50176 + j] = D[196][j];}\nD[197] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������拧泞牛扭钮纽脓浓农弄奴努怒女暖虐疟挪懦糯诺哦欧鸥殴藕呕偶沤啪趴爬帕怕琶拍排牌徘湃派攀潘盘磐盼畔判叛乓庞旁耪胖抛咆刨炮袍跑泡呸胚培裴赔陪配佩沛喷盆砰抨烹澎彭蓬棚硼篷膨朋鹏捧碰坯砒霹批披劈琵毗�\".split(\"\");\nfor(j = 0; j != D[197].length; ++j) if(D[197][j].charCodeAt(0) !== 0xFFFD) { e[D[197][j]] = 50432 + j; d[50432 + j] = D[197][j];}\nD[198] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������啤脾疲皮匹痞僻屁譬篇偏片骗飘漂瓢票撇瞥拼频贫品聘乒坪苹萍平凭瓶评屏坡泼颇婆破魄迫粕剖扑铺仆莆葡菩蒲埔朴圃普浦谱曝瀑期欺栖戚妻七凄漆柒沏其棋奇歧畦崎脐齐旗祈祁骑起岂乞企启契砌器气迄弃汽泣讫掐�\".split(\"\");\nfor(j = 0; j != D[198].length; ++j) if(D[198][j].charCodeAt(0) !== 0xFFFD) { e[D[198][j]] = 50688 + j; d[50688 + j] = D[198][j];}\nD[199] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������恰洽牵扦钎铅千迁签仟谦乾黔钱钳前潜遣浅谴堑嵌欠歉枪呛腔羌墙蔷强抢橇锹敲悄桥瞧乔侨巧鞘撬翘峭俏窍切茄且怯窃钦侵亲秦琴勤芹擒禽寝沁青轻氢倾卿清擎晴氰情顷请庆琼穷秋丘邱球求囚酋泅趋区蛆曲躯屈驱渠�\".split(\"\");\nfor(j = 0; j != D[199].length; ++j) if(D[199][j].charCodeAt(0) !== 0xFFFD) { e[D[199][j]] = 50944 + j; d[50944 + j] = D[199][j];}\nD[200] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������取娶龋趣去圈颧权醛泉全痊拳犬券劝缺炔瘸却鹊榷确雀裙群然燃冉染瓤壤攘嚷让饶扰绕惹热壬仁人忍韧任认刃妊纫扔仍日戎茸蓉荣融熔溶容绒冗揉柔肉茹蠕儒孺如辱乳汝入褥软阮蕊瑞锐闰润若弱撒洒萨腮鳃塞赛三叁�\".split(\"\");\nfor(j = 0; j != D[200].length; ++j) if(D[200][j].charCodeAt(0) !== 0xFFFD) { e[D[200][j]] = 51200 + j; d[51200 + j] = D[200][j];}\nD[201] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������伞散桑嗓丧搔骚扫嫂瑟色涩森僧莎砂杀刹沙纱傻啥煞筛晒珊苫杉山删煽衫闪陕擅赡膳善汕扇缮墒伤商赏晌上尚裳梢捎稍烧芍勺韶少哨邵绍奢赊蛇舌舍赦摄射慑涉社设砷申呻伸身深娠绅神沈审婶甚肾慎渗声生甥牲升绳�\".split(\"\");\nfor(j = 0; j != D[201].length; ++j) if(D[201][j].charCodeAt(0) !== 0xFFFD) { e[D[201][j]] = 51456 + j; d[51456 + j] = D[201][j];}\nD[202] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������省盛剩胜圣师失狮施湿诗尸虱十石拾时什食蚀实识史矢使屎驶始式示士世柿事拭誓逝势是嗜噬适仕侍释饰氏市恃室视试收手首守寿授售受瘦兽蔬枢梳殊抒输叔舒淑疏书赎孰熟薯暑曙署蜀黍鼠属术述树束戍竖墅庶数漱�\".split(\"\");\nfor(j = 0; j != D[202].length; ++j) if(D[202][j].charCodeAt(0) !== 0xFFFD) { e[D[202][j]] = 51712 + j; d[51712 + j] = D[202][j];}\nD[203] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������恕刷耍摔衰甩帅栓拴霜双爽谁水睡税吮瞬顺舜说硕朔烁斯撕嘶思私司丝死肆寺嗣四伺似饲巳松耸怂颂送宋讼诵搜艘擞嗽苏酥俗素速粟僳塑溯宿诉肃酸蒜算虽隋随绥髓碎岁穗遂隧祟孙损笋蓑梭唆缩琐索锁所塌他它她塔�\".split(\"\");\nfor(j = 0; j != D[203].length; ++j) if(D[203][j].charCodeAt(0) !== 0xFFFD) { e[D[203][j]] = 51968 + j; d[51968 + j] = D[203][j];}\nD[204] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������獭挞蹋踏胎苔抬台泰酞太态汰坍摊贪瘫滩坛檀痰潭谭谈坦毯袒碳探叹炭汤塘搪堂棠膛唐糖倘躺淌趟烫掏涛滔绦萄桃逃淘陶讨套特藤腾疼誊梯剔踢锑提题蹄啼体替嚏惕涕剃屉天添填田甜恬舔腆挑条迢眺跳贴铁帖厅听烃�\".split(\"\");\nfor(j = 0; j != D[204].length; ++j) if(D[204][j].charCodeAt(0) !== 0xFFFD) { e[D[204][j]] = 52224 + j; d[52224 + j] = D[204][j];}\nD[205] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������汀廷停亭庭挺艇通桐酮瞳同铜彤童桶捅筒统痛偷投头透凸秃突图徒途涂屠土吐兔湍团推颓腿蜕褪退吞屯臀拖托脱鸵陀驮驼椭妥拓唾挖哇蛙洼娃瓦袜歪外豌弯湾玩顽丸烷完碗挽晚皖惋宛婉万腕汪王亡枉网往旺望忘妄威�\".split(\"\");\nfor(j = 0; j != D[205].length; ++j) if(D[205][j].charCodeAt(0) !== 0xFFFD) { e[D[205][j]] = 52480 + j; d[52480 + j] = D[205][j];}\nD[206] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������巍微危韦违桅围唯惟为潍维苇萎委伟伪尾纬未蔚味畏胃喂魏位渭谓尉慰卫瘟温蚊文闻纹吻稳紊问嗡翁瓮挝蜗涡窝我斡卧握沃巫呜钨乌污诬屋无芜梧吾吴毋武五捂午舞伍侮坞戊雾晤物勿务悟误昔熙析西硒矽晰嘻吸锡牺�\".split(\"\");\nfor(j = 0; j != D[206].length; ++j) if(D[206][j].charCodeAt(0) !== 0xFFFD) { e[D[206][j]] = 52736 + j; d[52736 + j] = D[206][j];}\nD[207] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������稀息希悉膝夕惜熄烯溪汐犀檄袭席习媳喜铣洗系隙戏细瞎虾匣霞辖暇峡侠狭下厦夏吓掀锨先仙鲜纤咸贤衔舷闲涎弦嫌显险现献县腺馅羡宪陷限线相厢镶香箱襄湘乡翔祥详想响享项巷橡像向象萧硝霄削哮嚣销消宵淆晓�\".split(\"\");\nfor(j = 0; j != D[207].length; ++j) if(D[207][j].charCodeAt(0) !== 0xFFFD) { e[D[207][j]] = 52992 + j; d[52992 + j] = D[207][j];}\nD[208] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������小孝校肖啸笑效楔些歇蝎鞋协挟携邪斜胁谐写械卸蟹懈泄泻谢屑薪芯锌欣辛新忻心信衅星腥猩惺兴刑型形邢行醒幸杏性姓兄凶胸匈汹雄熊休修羞朽嗅锈秀袖绣墟戌需虚嘘须徐许蓄酗叙旭序畜恤絮婿绪续轩喧宣悬旋玄�\".split(\"\");\nfor(j = 0; j != D[208].length; ++j) if(D[208][j].charCodeAt(0) !== 0xFFFD) { e[D[208][j]] = 53248 + j; d[53248 + j] = D[208][j];}\nD[209] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������选癣眩绚靴薛学穴雪血勋熏循旬询寻驯巡殉汛训讯逊迅压押鸦鸭呀丫芽牙蚜崖衙涯雅哑亚讶焉咽阉烟淹盐严研蜒岩延言颜阎炎沿奄掩眼衍演艳堰燕厌砚雁唁彦焰宴谚验殃央鸯秧杨扬佯疡羊洋阳氧仰痒养样漾邀腰妖瑶�\".split(\"\");\nfor(j = 0; j != D[209].length; ++j) if(D[209][j].charCodeAt(0) !== 0xFFFD) { e[D[209][j]] = 53504 + j; d[53504 + j] = D[209][j];}\nD[210] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������摇尧遥窑谣姚咬舀药要耀椰噎耶爷野冶也页掖业叶曳腋夜液一壹医揖铱依伊衣颐夷遗移仪胰疑沂宜姨彝椅蚁倚已乙矣以艺抑易邑屹亿役臆逸肄疫亦裔意毅忆义益溢诣议谊译异翼翌绎茵荫因殷音阴姻吟银淫寅饮尹引隐�\".split(\"\");\nfor(j = 0; j != D[210].length; ++j) if(D[210][j].charCodeAt(0) !== 0xFFFD) { e[D[210][j]] = 53760 + j; d[53760 + j] = D[210][j];}\nD[211] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������印英樱婴鹰应缨莹萤营荧蝇迎赢盈影颖硬映哟拥佣臃痈庸雍踊蛹咏泳涌永恿勇用幽优悠忧尤由邮铀犹油游酉有友右佑釉诱又幼迂淤于盂榆虞愚舆余俞逾鱼愉渝渔隅予娱雨与屿禹宇语羽玉域芋郁吁遇喻峪御愈欲狱育誉�\".split(\"\");\nfor(j = 0; j != D[211].length; ++j) if(D[211][j].charCodeAt(0) !== 0xFFFD) { e[D[211][j]] = 54016 + j; d[54016 + j] = D[211][j];}\nD[212] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������浴寓裕预豫驭鸳渊冤元垣袁原援辕园员圆猿源缘远苑愿怨院曰约越跃钥岳粤月悦阅耘云郧匀陨允运蕴酝晕韵孕匝砸杂栽哉灾宰载再在咱攒暂赞赃脏葬遭糟凿藻枣早澡蚤躁噪造皂灶燥责择则泽贼怎增憎曾赠扎喳渣札轧�\".split(\"\");\nfor(j = 0; j != D[212].length; ++j) if(D[212][j].charCodeAt(0) !== 0xFFFD) { e[D[212][j]] = 54272 + j; d[54272 + j] = D[212][j];}\nD[213] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������铡闸眨栅榨咋乍炸诈摘斋宅窄债寨瞻毡詹粘沾盏斩辗崭展蘸栈占战站湛绽樟章彰漳张掌涨杖丈帐账仗胀瘴障招昭找沼赵照罩兆肇召遮折哲蛰辙者锗蔗这浙珍斟真甄砧臻贞针侦枕疹诊震振镇阵蒸挣睁征狰争怔整拯正政�\".split(\"\");\nfor(j = 0; j != D[213].length; ++j) if(D[213][j].charCodeAt(0) !== 0xFFFD) { e[D[213][j]] = 54528 + j; d[54528 + j] = D[213][j];}\nD[214] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������帧症郑证芝枝支吱蜘知肢脂汁之织职直植殖执值侄址指止趾只旨纸志挚掷至致置帜峙制智秩稚质炙痔滞治窒中盅忠钟衷终种肿重仲众舟周州洲诌粥轴肘帚咒皱宙昼骤珠株蛛朱猪诸诛逐竹烛煮拄瞩嘱主著柱助蛀贮铸筑�\".split(\"\");\nfor(j = 0; j != D[214].length; ++j) if(D[214][j].charCodeAt(0) !== 0xFFFD) { e[D[214][j]] = 54784 + j; d[54784 + j] = D[214][j];}\nD[215] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������住注祝驻抓爪拽专砖转撰赚篆桩庄装妆撞壮状椎锥追赘坠缀谆准捉拙卓桌琢茁酌啄着灼浊兹咨资姿滋淄孜紫仔籽滓子自渍字鬃棕踪宗综总纵邹走奏揍租足卒族祖诅阻组钻纂嘴醉最罪尊遵昨左佐柞做作坐座������\".split(\"\");\nfor(j = 0; j != D[215].length; ++j) if(D[215][j].charCodeAt(0) !== 0xFFFD) { e[D[215][j]] = 55040 + j; d[55040 + j] = D[215][j];}\nD[216] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������亍丌兀丐廿卅丕亘丞鬲孬噩丨禺丿匕乇夭爻卮氐囟胤馗毓睾鼗丶亟鼐乜乩亓芈孛啬嘏仄厍厝厣厥厮靥赝匚叵匦匮匾赜卦卣刂刈刎刭刳刿剀剌剞剡剜蒯剽劂劁劐劓冂罔亻仃仉仂仨仡仫仞伛仳伢佤仵伥伧伉伫佞佧攸佚佝�\".split(\"\");\nfor(j = 0; j != D[216].length; ++j) if(D[216][j].charCodeAt(0) !== 0xFFFD) { e[D[216][j]] = 55296 + j; d[55296 + j] = D[216][j];}\nD[217] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������佟佗伲伽佶佴侑侉侃侏佾佻侪佼侬侔俦俨俪俅俚俣俜俑俟俸倩偌俳倬倏倮倭俾倜倌倥倨偾偃偕偈偎偬偻傥傧傩傺僖儆僭僬僦僮儇儋仝氽佘佥俎龠汆籴兮巽黉馘冁夔勹匍訇匐凫夙兕亠兖亳衮袤亵脔裒禀嬴蠃羸冫冱冽冼�\".split(\"\");\nfor(j = 0; j != D[217].length; ++j) if(D[217][j].charCodeAt(0) !== 0xFFFD) { e[D[217][j]] = 55552 + j; d[55552 + j] = D[217][j];}\nD[218] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������凇冖冢冥讠讦讧讪讴讵讷诂诃诋诏诎诒诓诔诖诘诙诜诟诠诤诨诩诮诰诳诶诹诼诿谀谂谄谇谌谏谑谒谔谕谖谙谛谘谝谟谠谡谥谧谪谫谮谯谲谳谵谶卩卺阝阢阡阱阪阽阼陂陉陔陟陧陬陲陴隈隍隗隰邗邛邝邙邬邡邴邳邶邺�\".split(\"\");\nfor(j = 0; j != D[218].length; ++j) if(D[218][j].charCodeAt(0) !== 0xFFFD) { e[D[218][j]] = 55808 + j; d[55808 + j] = D[218][j];}\nD[219] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������邸邰郏郅邾郐郄郇郓郦郢郜郗郛郫郯郾鄄鄢鄞鄣鄱鄯鄹酃酆刍奂劢劬劭劾哿勐勖勰叟燮矍廴凵凼鬯厶弁畚巯坌垩垡塾墼壅壑圩圬圪圳圹圮圯坜圻坂坩垅坫垆坼坻坨坭坶坳垭垤垌垲埏垧垴垓垠埕埘埚埙埒垸埴埯埸埤埝�\".split(\"\");\nfor(j = 0; j != D[219].length; ++j) if(D[219][j].charCodeAt(0) !== 0xFFFD) { e[D[219][j]] = 56064 + j; d[56064 + j] = D[219][j];}\nD[220] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������堋堍埽埭堀堞堙塄堠塥塬墁墉墚墀馨鼙懿艹艽艿芏芊芨芄芎芑芗芙芫芸芾芰苈苊苣芘芷芮苋苌苁芩芴芡芪芟苄苎芤苡茉苷苤茏茇苜苴苒苘茌苻苓茑茚茆茔茕苠苕茜荑荛荜茈莒茼茴茱莛荞茯荏荇荃荟荀茗荠茭茺茳荦荥�\".split(\"\");\nfor(j = 0; j != D[220].length; ++j) if(D[220][j].charCodeAt(0) !== 0xFFFD) { e[D[220][j]] = 56320 + j; d[56320 + j] = D[220][j];}\nD[221] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������荨茛荩荬荪荭荮莰荸莳莴莠莪莓莜莅荼莶莩荽莸荻莘莞莨莺莼菁萁菥菘堇萘萋菝菽菖萜萸萑萆菔菟萏萃菸菹菪菅菀萦菰菡葜葑葚葙葳蒇蒈葺蒉葸萼葆葩葶蒌蒎萱葭蓁蓍蓐蓦蒽蓓蓊蒿蒺蓠蒡蒹蒴蒗蓥蓣蔌甍蔸蓰蔹蔟蔺�\".split(\"\");\nfor(j = 0; j != D[221].length; ++j) if(D[221][j].charCodeAt(0) !== 0xFFFD) { e[D[221][j]] = 56576 + j; d[56576 + j] = D[221][j];}\nD[222] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������蕖蔻蓿蓼蕙蕈蕨蕤蕞蕺瞢蕃蕲蕻薤薨薇薏蕹薮薜薅薹薷薰藓藁藜藿蘧蘅蘩蘖蘼廾弈夼奁耷奕奚奘匏尢尥尬尴扌扪抟抻拊拚拗拮挢拶挹捋捃掭揶捱捺掎掴捭掬掊捩掮掼揲揸揠揿揄揞揎摒揆掾摅摁搋搛搠搌搦搡摞撄摭撖�\".split(\"\");\nfor(j = 0; j != D[222].length; ++j) if(D[222][j].charCodeAt(0) !== 0xFFFD) { e[D[222][j]] = 56832 + j; d[56832 + j] = D[222][j];}\nD[223] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������摺撷撸撙撺擀擐擗擤擢攉攥攮弋忒甙弑卟叱叽叩叨叻吒吖吆呋呒呓呔呖呃吡呗呙吣吲咂咔呷呱呤咚咛咄呶呦咝哐咭哂咴哒咧咦哓哔呲咣哕咻咿哌哙哚哜咩咪咤哝哏哞唛哧唠哽唔哳唢唣唏唑唧唪啧喏喵啉啭啁啕唿啐唼�\".split(\"\");\nfor(j = 0; j != D[223].length; ++j) if(D[223][j].charCodeAt(0) !== 0xFFFD) { e[D[223][j]] = 57088 + j; d[57088 + j] = D[223][j];}\nD[224] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������唷啖啵啶啷唳唰啜喋嗒喃喱喹喈喁喟啾嗖喑啻嗟喽喾喔喙嗪嗷嗉嘟嗑嗫嗬嗔嗦嗝嗄嗯嗥嗲嗳嗌嗍嗨嗵嗤辔嘞嘈嘌嘁嘤嘣嗾嘀嘧嘭噘嘹噗嘬噍噢噙噜噌噔嚆噤噱噫噻噼嚅嚓嚯囔囗囝囡囵囫囹囿圄圊圉圜帏帙帔帑帱帻帼�\".split(\"\");\nfor(j = 0; j != D[224].length; ++j) if(D[224][j].charCodeAt(0) !== 0xFFFD) { e[D[224][j]] = 57344 + j; d[57344 + j] = D[224][j];}\nD[225] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������帷幄幔幛幞幡岌屺岍岐岖岈岘岙岑岚岜岵岢岽岬岫岱岣峁岷峄峒峤峋峥崂崃崧崦崮崤崞崆崛嵘崾崴崽嵬嵛嵯嵝嵫嵋嵊嵩嵴嶂嶙嶝豳嶷巅彳彷徂徇徉後徕徙徜徨徭徵徼衢彡犭犰犴犷犸狃狁狎狍狒狨狯狩狲狴狷猁狳猃狺�\".split(\"\");\nfor(j = 0; j != D[225].length; ++j) if(D[225][j].charCodeAt(0) !== 0xFFFD) { e[D[225][j]] = 57600 + j; d[57600 + j] = D[225][j];}\nD[226] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������狻猗猓猡猊猞猝猕猢猹猥猬猸猱獐獍獗獠獬獯獾舛夥飧夤夂饣饧饨饩饪饫饬饴饷饽馀馄馇馊馍馐馑馓馔馕庀庑庋庖庥庠庹庵庾庳赓廒廑廛廨廪膺忄忉忖忏怃忮怄忡忤忾怅怆忪忭忸怙怵怦怛怏怍怩怫怊怿怡恸恹恻恺恂�\".split(\"\");\nfor(j = 0; j != D[226].length; ++j) if(D[226][j].charCodeAt(0) !== 0xFFFD) { e[D[226][j]] = 57856 + j; d[57856 + j] = D[226][j];}\nD[227] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������恪恽悖悚悭悝悃悒悌悛惬悻悱惝惘惆惚悴愠愦愕愣惴愀愎愫慊慵憬憔憧憷懔懵忝隳闩闫闱闳闵闶闼闾阃阄阆阈阊阋阌阍阏阒阕阖阗阙阚丬爿戕氵汔汜汊沣沅沐沔沌汨汩汴汶沆沩泐泔沭泷泸泱泗沲泠泖泺泫泮沱泓泯泾�\".split(\"\");\nfor(j = 0; j != D[227].length; ++j) if(D[227][j].charCodeAt(0) !== 0xFFFD) { e[D[227][j]] = 58112 + j; d[58112 + j] = D[227][j];}\nD[228] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������洹洧洌浃浈洇洄洙洎洫浍洮洵洚浏浒浔洳涑浯涞涠浞涓涔浜浠浼浣渚淇淅淞渎涿淠渑淦淝淙渖涫渌涮渫湮湎湫溲湟溆湓湔渲渥湄滟溱溘滠漭滢溥溧溽溻溷滗溴滏溏滂溟潢潆潇漤漕滹漯漶潋潴漪漉漩澉澍澌潸潲潼潺濑�\".split(\"\");\nfor(j = 0; j != D[228].length; ++j) if(D[228][j].charCodeAt(0) !== 0xFFFD) { e[D[228][j]] = 58368 + j; d[58368 + j] = D[228][j];}\nD[229] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������濉澧澹澶濂濡濮濞濠濯瀚瀣瀛瀹瀵灏灞宀宄宕宓宥宸甯骞搴寤寮褰寰蹇謇辶迓迕迥迮迤迩迦迳迨逅逄逋逦逑逍逖逡逵逶逭逯遄遑遒遐遨遘遢遛暹遴遽邂邈邃邋彐彗彖彘尻咫屐屙孱屣屦羼弪弩弭艴弼鬻屮妁妃妍妩妪妣�\".split(\"\");\nfor(j = 0; j != D[229].length; ++j) if(D[229][j].charCodeAt(0) !== 0xFFFD) { e[D[229][j]] = 58624 + j; d[58624 + j] = D[229][j];}\nD[230] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������妗姊妫妞妤姒妲妯姗妾娅娆姝娈姣姘姹娌娉娲娴娑娣娓婀婧婊婕娼婢婵胬媪媛婷婺媾嫫媲嫒嫔媸嫠嫣嫱嫖嫦嫘嫜嬉嬗嬖嬲嬷孀尕尜孚孥孳孑孓孢驵驷驸驺驿驽骀骁骅骈骊骐骒骓骖骘骛骜骝骟骠骢骣骥骧纟纡纣纥纨纩�\".split(\"\");\nfor(j = 0; j != D[230].length; ++j) if(D[230][j].charCodeAt(0) !== 0xFFFD) { e[D[230][j]] = 58880 + j; d[58880 + j] = D[230][j];}\nD[231] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������纭纰纾绀绁绂绉绋绌绐绔绗绛绠绡绨绫绮绯绱绲缍绶绺绻绾缁缂缃缇缈缋缌缏缑缒缗缙缜缛缟缡缢缣缤缥缦缧缪缫缬缭缯缰缱缲缳缵幺畿巛甾邕玎玑玮玢玟珏珂珑玷玳珀珉珈珥珙顼琊珩珧珞玺珲琏琪瑛琦琥琨琰琮琬�\".split(\"\");\nfor(j = 0; j != D[231].length; ++j) if(D[231][j].charCodeAt(0) !== 0xFFFD) { e[D[231][j]] = 59136 + j; d[59136 + j] = D[231][j];}\nD[232] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������琛琚瑁瑜瑗瑕瑙瑷瑭瑾璜璎璀璁璇璋璞璨璩璐璧瓒璺韪韫韬杌杓杞杈杩枥枇杪杳枘枧杵枨枞枭枋杷杼柰栉柘栊柩枰栌柙枵柚枳柝栀柃枸柢栎柁柽栲栳桠桡桎桢桄桤梃栝桕桦桁桧桀栾桊桉栩梵梏桴桷梓桫棂楮棼椟椠棹�\".split(\"\");\nfor(j = 0; j != D[232].length; ++j) if(D[232][j].charCodeAt(0) !== 0xFFFD) { e[D[232][j]] = 59392 + j; d[59392 + j] = D[232][j];}\nD[233] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������椤棰椋椁楗棣椐楱椹楠楂楝榄楫榀榘楸椴槌榇榈槎榉楦楣楹榛榧榻榫榭槔榱槁槊槟榕槠榍槿樯槭樗樘橥槲橄樾檠橐橛樵檎橹樽樨橘橼檑檐檩檗檫猷獒殁殂殇殄殒殓殍殚殛殡殪轫轭轱轲轳轵轶轸轷轹轺轼轾辁辂辄辇辋�\".split(\"\");\nfor(j = 0; j != D[233].length; ++j) if(D[233][j].charCodeAt(0) !== 0xFFFD) { e[D[233][j]] = 59648 + j; d[59648 + j] = D[233][j];}\nD[234] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������辍辎辏辘辚軎戋戗戛戟戢戡戥戤戬臧瓯瓴瓿甏甑甓攴旮旯旰昊昙杲昃昕昀炅曷昝昴昱昶昵耆晟晔晁晏晖晡晗晷暄暌暧暝暾曛曜曦曩贲贳贶贻贽赀赅赆赈赉赇赍赕赙觇觊觋觌觎觏觐觑牮犟牝牦牯牾牿犄犋犍犏犒挈挲掰�\".split(\"\");\nfor(j = 0; j != D[234].length; ++j) if(D[234][j].charCodeAt(0) !== 0xFFFD) { e[D[234][j]] = 59904 + j; d[59904 + j] = D[234][j];}\nD[235] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������搿擘耄毪毳毽毵毹氅氇氆氍氕氘氙氚氡氩氤氪氲攵敕敫牍牒牖爰虢刖肟肜肓肼朊肽肱肫肭肴肷胧胨胩胪胛胂胄胙胍胗朐胝胫胱胴胭脍脎胲胼朕脒豚脶脞脬脘脲腈腌腓腴腙腚腱腠腩腼腽腭腧塍媵膈膂膑滕膣膪臌朦臊膻�\".split(\"\");\nfor(j = 0; j != D[235].length; ++j) if(D[235][j].charCodeAt(0) !== 0xFFFD) { e[D[235][j]] = 60160 + j; d[60160 + j] = D[235][j];}\nD[236] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������臁膦欤欷欹歃歆歙飑飒飓飕飙飚殳彀毂觳斐齑斓於旆旄旃旌旎旒旖炀炜炖炝炻烀炷炫炱烨烊焐焓焖焯焱煳煜煨煅煲煊煸煺熘熳熵熨熠燠燔燧燹爝爨灬焘煦熹戾戽扃扈扉礻祀祆祉祛祜祓祚祢祗祠祯祧祺禅禊禚禧禳忑忐�\".split(\"\");\nfor(j = 0; j != D[236].length; ++j) if(D[236][j].charCodeAt(0) !== 0xFFFD) { e[D[236][j]] = 60416 + j; d[60416 + j] = D[236][j];}\nD[237] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������怼恝恚恧恁恙恣悫愆愍慝憩憝懋懑戆肀聿沓泶淼矶矸砀砉砗砘砑斫砭砜砝砹砺砻砟砼砥砬砣砩硎硭硖硗砦硐硇硌硪碛碓碚碇碜碡碣碲碹碥磔磙磉磬磲礅磴礓礤礞礴龛黹黻黼盱眄眍盹眇眈眚眢眙眭眦眵眸睐睑睇睃睚睨�\".split(\"\");\nfor(j = 0; j != D[237].length; ++j) if(D[237][j].charCodeAt(0) !== 0xFFFD) { e[D[237][j]] = 60672 + j; d[60672 + j] = D[237][j];}\nD[238] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������睢睥睿瞍睽瞀瞌瞑瞟瞠瞰瞵瞽町畀畎畋畈畛畲畹疃罘罡罟詈罨罴罱罹羁罾盍盥蠲钅钆钇钋钊钌钍钏钐钔钗钕钚钛钜钣钤钫钪钭钬钯钰钲钴钶钷钸钹钺钼钽钿铄铈铉铊铋铌铍铎铐铑铒铕铖铗铙铘铛铞铟铠铢铤铥铧铨铪�\".split(\"\");\nfor(j = 0; j != D[238].length; ++j) if(D[238][j].charCodeAt(0) !== 0xFFFD) { e[D[238][j]] = 60928 + j; d[60928 + j] = D[238][j];}\nD[239] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������铩铫铮铯铳铴铵铷铹铼铽铿锃锂锆锇锉锊锍锎锏锒锓锔锕锖锘锛锝锞锟锢锪锫锩锬锱锲锴锶锷锸锼锾锿镂锵镄镅镆镉镌镎镏镒镓镔镖镗镘镙镛镞镟镝镡镢镤镥镦镧镨镩镪镫镬镯镱镲镳锺矧矬雉秕秭秣秫稆嵇稃稂稞稔�\".split(\"\");\nfor(j = 0; j != D[239].length; ++j) if(D[239][j].charCodeAt(0) !== 0xFFFD) { e[D[239][j]] = 61184 + j; d[61184 + j] = D[239][j];}\nD[240] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������稹稷穑黏馥穰皈皎皓皙皤瓞瓠甬鸠鸢鸨鸩鸪鸫鸬鸲鸱鸶鸸鸷鸹鸺鸾鹁鹂鹄鹆鹇鹈鹉鹋鹌鹎鹑鹕鹗鹚鹛鹜鹞鹣鹦鹧鹨鹩鹪鹫鹬鹱鹭鹳疒疔疖疠疝疬疣疳疴疸痄疱疰痃痂痖痍痣痨痦痤痫痧瘃痱痼痿瘐瘀瘅瘌瘗瘊瘥瘘瘕瘙�\".split(\"\");\nfor(j = 0; j != D[240].length; ++j) if(D[240][j].charCodeAt(0) !== 0xFFFD) { e[D[240][j]] = 61440 + j; d[61440 + j] = D[240][j];}\nD[241] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������瘛瘼瘢瘠癀瘭瘰瘿瘵癃瘾瘳癍癞癔癜癖癫癯翊竦穸穹窀窆窈窕窦窠窬窨窭窳衤衩衲衽衿袂袢裆袷袼裉裢裎裣裥裱褚裼裨裾裰褡褙褓褛褊褴褫褶襁襦襻疋胥皲皴矜耒耔耖耜耠耢耥耦耧耩耨耱耋耵聃聆聍聒聩聱覃顸颀颃�\".split(\"\");\nfor(j = 0; j != D[241].length; ++j) if(D[241][j].charCodeAt(0) !== 0xFFFD) { e[D[241][j]] = 61696 + j; d[61696 + j] = D[241][j];}\nD[242] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������颉颌颍颏颔颚颛颞颟颡颢颥颦虍虔虬虮虿虺虼虻蚨蚍蚋蚬蚝蚧蚣蚪蚓蚩蚶蛄蚵蛎蚰蚺蚱蚯蛉蛏蚴蛩蛱蛲蛭蛳蛐蜓蛞蛴蛟蛘蛑蜃蜇蛸蜈蜊蜍蜉蜣蜻蜞蜥蜮蜚蜾蝈蜴蜱蜩蜷蜿螂蜢蝽蝾蝻蝠蝰蝌蝮螋蝓蝣蝼蝤蝙蝥螓螯螨蟒�\".split(\"\");\nfor(j = 0; j != D[242].length; ++j) if(D[242][j].charCodeAt(0) !== 0xFFFD) { e[D[242][j]] = 61952 + j; d[61952 + j] = D[242][j];}\nD[243] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������蟆螈螅螭螗螃螫蟥螬螵螳蟋蟓螽蟑蟀蟊蟛蟪蟠蟮蠖蠓蟾蠊蠛蠡蠹蠼缶罂罄罅舐竺竽笈笃笄笕笊笫笏筇笸笪笙笮笱笠笥笤笳笾笞筘筚筅筵筌筝筠筮筻筢筲筱箐箦箧箸箬箝箨箅箪箜箢箫箴篑篁篌篝篚篥篦篪簌篾篼簏簖簋�\".split(\"\");\nfor(j = 0; j != D[243].length; ++j) if(D[243][j].charCodeAt(0) !== 0xFFFD) { e[D[243][j]] = 62208 + j; d[62208 + j] = D[243][j];}\nD[244] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������簟簪簦簸籁籀臾舁舂舄臬衄舡舢舣舭舯舨舫舸舻舳舴舾艄艉艋艏艚艟艨衾袅袈裘裟襞羝羟羧羯羰羲籼敉粑粝粜粞粢粲粼粽糁糇糌糍糈糅糗糨艮暨羿翎翕翥翡翦翩翮翳糸絷綦綮繇纛麸麴赳趄趔趑趱赧赭豇豉酊酐酎酏酤�\".split(\"\");\nfor(j = 0; j != D[244].length; ++j) if(D[244][j].charCodeAt(0) !== 0xFFFD) { e[D[244][j]] = 62464 + j; d[62464 + j] = D[244][j];}\nD[245] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������酢酡酰酩酯酽酾酲酴酹醌醅醐醍醑醢醣醪醭醮醯醵醴醺豕鹾趸跫踅蹙蹩趵趿趼趺跄跖跗跚跞跎跏跛跆跬跷跸跣跹跻跤踉跽踔踝踟踬踮踣踯踺蹀踹踵踽踱蹉蹁蹂蹑蹒蹊蹰蹶蹼蹯蹴躅躏躔躐躜躞豸貂貊貅貘貔斛觖觞觚觜�\".split(\"\");\nfor(j = 0; j != D[245].length; ++j) if(D[245][j].charCodeAt(0) !== 0xFFFD) { e[D[245][j]] = 62720 + j; d[62720 + j] = D[245][j];}\nD[246] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������觥觫觯訾謦靓雩雳雯霆霁霈霏霎霪霭霰霾龀龃龅龆龇龈龉龊龌黾鼋鼍隹隼隽雎雒瞿雠銎銮鋈錾鍪鏊鎏鐾鑫鱿鲂鲅鲆鲇鲈稣鲋鲎鲐鲑鲒鲔鲕鲚鲛鲞鲟鲠鲡鲢鲣鲥鲦鲧鲨鲩鲫鲭鲮鲰鲱鲲鲳鲴鲵鲶鲷鲺鲻鲼鲽鳄鳅鳆鳇鳊鳋�\".split(\"\");\nfor(j = 0; j != D[246].length; ++j) if(D[246][j].charCodeAt(0) !== 0xFFFD) { e[D[246][j]] = 62976 + j; d[62976 + j] = D[246][j];}\nD[247] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������鳌鳍鳎鳏鳐鳓鳔鳕鳗鳘鳙鳜鳝鳟鳢靼鞅鞑鞒鞔鞯鞫鞣鞲鞴骱骰骷鹘骶骺骼髁髀髅髂髋髌髑魅魃魇魉魈魍魑飨餍餮饕饔髟髡髦髯髫髻髭髹鬈鬏鬓鬟鬣麽麾縻麂麇麈麋麒鏖麝麟黛黜黝黠黟黢黩黧黥黪黯鼢鼬鼯鼹鼷鼽鼾齄�\".split(\"\");\nfor(j = 0; j != D[247].length; ++j) if(D[247][j].charCodeAt(0) !== 0xFFFD) { e[D[247][j]] = 63232 + j; d[63232 + j] = D[247][j];}\nreturn {\"enc\": e, \"dec\": d }; })();\ncptable[10029] = (function(){ var d = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~ÄĀāÉĄÖÜáąČäčĆć鏟ĎíďĒēĖóėôöõúĚěü†°Ę£§•¶ß®©™ę¨≠ģĮįĪ≤≥īĶ∂∑łĻļĽľĹĺŅņѬ√ńŇ∆«»… ňŐÕőŌ–—“”‘’÷◊ōŔŕŘ‹›řŖŗŠ‚„šŚśÁŤťÍŽžŪÓÔūŮÚůŰűŲųÝýķŻŁżĢˇ\", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\ncptable[10079] = (function(){ var d = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûüÝ°¢£§•¶ß®©™´¨≠ÆØ∞±≤≥¥µ∂∑∏π∫ªºΩæø¿¡¬√ƒ≈∆«»… ÀÃÕŒœ–—“”‘’÷◊ÿŸ⁄¤ÐðÞþý·‚„‰ÂÊÁËÈÍÎÏÌÓÔ�ÒÚÛÙıˆ˜¯˘˙˚¸˝˛ˇ\", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\ncptable[10081] = (function(){ var d = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûü†°¢£§•¶ß®©™´¨≠ÆØ∞±≤≥¥µ∂∑∏π∫ªºΩæø¿¡¬√ƒ≈∆«»… ÀÃÕŒœ–—“”‘’÷◊ÿŸĞğİıŞş‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔ�ÒÚÛÙ�ˆ˜¯˘˙˚¸˝˛ˇ\", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\n// eslint-disable-next-line no-undef\nif (typeof module !== 'undefined' && module.exports && typeof DO_NOT_EXPORT_CODEPAGE === 'undefined') module.exports = cptable;\n/* cputils.js (C) 2013-present SheetJS -- http://sheetjs.com */\n/* vim: set ft=javascript: */\n/*jshint newcap: false */\n(function(root, factory) {\n /*jshint ignore:start */\n /*eslint-disable */\n \"use strict\";\n if(typeof cptable === \"undefined\") {\n if(typeof require !== \"undefined\"){\n var cpt = cptable;\n if (typeof module !== 'undefined' && module.exports && typeof DO_NOT_EXPORT_CODEPAGE === 'undefined') module.exports = factory(cpt);\n else root.cptable = factory(cpt);\n } else throw new Error(\"cptable not found\");\n } else cptable = factory(cptable);\n /*eslint-enable */\n /*jshint ignore:end */\n}(this, function(cpt){\n \"use strict\";\n /*global module, Buffer */\n var magic = {\n \"1200\":\"utf16le\",\n \"1201\":\"utf16be\",\n \"12000\":\"utf32le\",\n \"12001\":\"utf32be\",\n \"16969\":\"utf64le\",\n \"20127\":\"ascii\",\n \"65000\":\"utf7\",\n \"65001\":\"utf8\"\n };\n\n var sbcs_cache = [874,1250,1251,1252,1253,1254,1255,1256,10000];\n var dbcs_cache = [932,936,949,950];\n var magic_cache = [65001];\n var magic_decode = {};\n var magic_encode = {};\n var cpdcache = {};\n var cpecache = {};\n\n var sfcc = function sfcc(x) { return String.fromCharCode(x); };\n var cca = function cca(x) { return x.charCodeAt(0); };\n\n var has_buf = (typeof Buffer !== 'undefined');\n var Buffer_from = function(){};\n if(has_buf) {\n var nbfs = !Buffer.from;\n if(!nbfs) try { Buffer.from(\"foo\", \"utf8\"); } catch(e) { nbfs = true; }\n Buffer_from = nbfs ? function(buf, enc) { return (enc) ? new Buffer(buf, enc) : new Buffer(buf); } : Buffer.from.bind(Buffer);\n // $FlowIgnore\n if(!Buffer.allocUnsafe) Buffer.allocUnsafe = function(n) { return new Buffer(n); };\n\n var mdl = 1024, mdb = Buffer.allocUnsafe(mdl);\n var make_EE = function make_EE(E){\n var EE = Buffer.allocUnsafe(65536);\n for(var i = 0; i < 65536;++i) EE[i] = 0;\n var keys = Object.keys(E), len = keys.length;\n for(var ee = 0, e = keys[ee]; ee < len; ++ee) {\n if(!(e = keys[ee])) continue;\n EE[e.charCodeAt(0)] = E[e];\n }\n return EE;\n };\n var sbcs_encode = function make_sbcs_encode(cp) {\n var EE = make_EE(cpt[cp].enc);\n return function sbcs_e(data, ofmt) {\n var len = data.length;\n var out, i=0, j=0, D=0, w=0;\n if(typeof data === 'string') {\n out = Buffer.allocUnsafe(len);\n for(i = 0; i < len; ++i) out[i] = EE[data.charCodeAt(i)];\n } else if(Buffer.isBuffer(data)) {\n out = Buffer.allocUnsafe(2*len);\n j = 0;\n for(i = 0; i < len; ++i) {\n D = data[i];\n if(D < 128) out[j++] = EE[D];\n else if(D < 224) { out[j++] = EE[((D&31)<<6)+(data[i+1]&63)]; ++i; }\n else if(D < 240) { out[j++] = EE[((D&15)<<12)+((data[i+1]&63)<<6)+(data[i+2]&63)]; i+=2; }\n else {\n w = ((D&7)<<18)+((data[i+1]&63)<<12)+((data[i+2]&63)<<6)+(data[i+3]&63); i+=3;\n if(w < 65536) out[j++] = EE[w];\n else { w -= 65536; out[j++] = EE[0xD800 + ((w>>10)&1023)]; out[j++] = EE[0xDC00 + (w&1023)]; }\n }\n }\n out = out.slice(0,j);\n } else {\n out = Buffer.allocUnsafe(len);\n for(i = 0; i < len; ++i) out[i] = EE[data[i].charCodeAt(0)];\n }\n if(!ofmt || ofmt === 'buf') return out;\n if(ofmt !== 'arr') return out.toString('binary');\n return [].slice.call(out);\n };\n };\n var sbcs_decode = function make_sbcs_decode(cp) {\n var D = cpt[cp].dec;\n var DD = Buffer.allocUnsafe(131072), d=0, c=\"\";\n for(d=0;d>8;\n }\n return function sbcs_d(data) {\n var len = data.length, i=0, j=0;\n if(2 * len > mdl) { mdl = 2 * len; mdb = Buffer.allocUnsafe(mdl); }\n if(Buffer.isBuffer(data)) {\n for(i = 0; i < len; i++) {\n j = 2*data[i];\n mdb[2*i] = DD[j]; mdb[2*i+1] = DD[j+1];\n }\n } else if(typeof data === \"string\") {\n for(i = 0; i < len; i++) {\n j = 2*data.charCodeAt(i);\n mdb[2*i] = DD[j]; mdb[2*i+1] = DD[j+1];\n }\n } else {\n for(i = 0; i < len; i++) {\n j = 2*data[i];\n mdb[2*i] = DD[j]; mdb[2*i+1] = DD[j+1];\n }\n }\n return mdb.slice(0, 2 * len).toString('ucs2');\n };\n };\n var dbcs_encode = function make_dbcs_encode(cp) {\n var E = cpt[cp].enc;\n var EE = Buffer.allocUnsafe(131072);\n for(var i = 0; i < 131072; ++i) EE[i] = 0;\n var keys = Object.keys(E);\n for(var ee = 0, e = keys[ee]; ee < keys.length; ++ee) {\n if(!(e = keys[ee])) continue;\n var f = e.charCodeAt(0);\n EE[2*f] = E[e] & 255; EE[2*f+1] = E[e]>>8;\n }\n return function dbcs_e(data, ofmt) {\n var len = data.length, out = Buffer.allocUnsafe(2*len), i=0, j=0, jj=0, k=0, D=0;\n if(typeof data === 'string') {\n for(i = k = 0; i < len; ++i) {\n j = data.charCodeAt(i)*2;\n out[k++] = EE[j+1] || EE[j]; if(EE[j+1] > 0) out[k++] = EE[j];\n }\n out = out.slice(0,k);\n } else if(Buffer.isBuffer(data)) {\n for(i = k = 0; i < len; ++i) {\n D = data[i];\n if(D < 128) j = D;\n else if(D < 224) { j = ((D&31)<<6)+(data[i+1]&63); ++i; }\n else if(D < 240) { j = ((D&15)<<12)+((data[i+1]&63)<<6)+(data[i+2]&63); i+=2; }\n else { j = ((D&7)<<18)+((data[i+1]&63)<<12)+((data[i+2]&63)<<6)+(data[i+3]&63); i+=3; }\n if(j<65536) { j*=2; out[k++] = EE[j+1] || EE[j]; if(EE[j+1] > 0) out[k++] = EE[j]; }\n else { jj = j-65536;\n j=2*(0xD800 + ((jj>>10)&1023)); out[k++] = EE[j+1] || EE[j]; if(EE[j+1] > 0) out[k++] = EE[j];\n j=2*(0xDC00 + (jj&1023)); out[k++] = EE[j+1] || EE[j]; if(EE[j+1] > 0) out[k++] = EE[j];\n }\n }\n out = out.slice(0,k);\n } else {\n for(i = k = 0; i < len; i++) {\n j = data[i].charCodeAt(0)*2;\n out[k++] = EE[j+1] || EE[j]; if(EE[j+1] > 0) out[k++] = EE[j];\n }\n }\n if(!ofmt || ofmt === 'buf') return out;\n if(ofmt !== 'arr') return out.toString('binary');\n return [].slice.call(out);\n };\n };\n var dbcs_decode = function make_dbcs_decode(cp) {\n var D = cpt[cp].dec;\n var DD = Buffer.allocUnsafe(131072), d=0, c, w=0, j=0, i=0;\n for(i = 0; i < 65536; ++i) { DD[2*i] = 0xFF; DD[2*i+1] = 0xFD;}\n for(d = 0; d < D.length; ++d) {\n if(!(c=D[d])) continue;\n w = c.charCodeAt(0);\n j = 2*d;\n DD[j] = w&255; DD[j+1] = w>>8;\n }\n return function dbcs_d(data) {\n var len = data.length, out = Buffer.allocUnsafe(2*len), i=0, j=0, k=0;\n if(Buffer.isBuffer(data)) {\n for(i = 0; i < len; i++) {\n j = 2*data[i];\n if(DD[j]===0xFF && DD[j+1]===0xFD) { j=2*((data[i]<<8)+data[i+1]); ++i; }\n out[k++] = DD[j]; out[k++] = DD[j+1];\n }\n } else if(typeof data === \"string\") {\n for(i = 0; i < len; i++) {\n j = 2*data.charCodeAt(i);\n if(DD[j]===0xFF && DD[j+1]===0xFD) { j=2*((data.charCodeAt(i)<<8)+data.charCodeAt(i+1)); ++i; }\n out[k++] = DD[j]; out[k++] = DD[j+1];\n }\n } else {\n for(i = 0; i < len; i++) {\n j = 2*data[i];\n if(DD[j]===0xFF && DD[j+1]===0xFD) { j=2*((data[i]<<8)+data[i+1]); ++i; }\n out[k++] = DD[j]; out[k++] = DD[j+1];\n }\n }\n return out.slice(0,k).toString('ucs2');\n };\n };\n magic_decode[65001] = function utf8_d(data) {\n if(typeof data === \"string\") return utf8_d(data.split(\"\").map(cca));\n var len = data.length, w = 0, ww = 0;\n if(4 * len > mdl) { mdl = 4 * len; mdb = Buffer.allocUnsafe(mdl); }\n var i = 0;\n if(len >= 3 && data[0] == 0xEF) if(data[1] == 0xBB && data[2] == 0xBF) i = 3;\n for(var j = 1, k = 0, D = 0; i < len; i+=j) {\n j = 1; D = data[i];\n if(D < 128) w = D;\n else if(D < 224) { w=(D&31)*64+(data[i+1]&63); j=2; }\n else if(D < 240) { w=((D&15)<<12)+(data[i+1]&63)*64+(data[i+2]&63); j=3; }\n else { w=(D&7)*262144+((data[i+1]&63)<<12)+(data[i+2]&63)*64+(data[i+3]&63); j=4; }\n if(w < 65536) { mdb[k++] = w&255; mdb[k++] = w>>8; }\n else {\n w -= 65536; ww = 0xD800 + ((w>>10)&1023); w = 0xDC00 + (w&1023);\n mdb[k++] = ww&255; mdb[k++] = ww>>>8; mdb[k++] = w&255; mdb[k++] = (w>>>8)&255;\n }\n }\n return mdb.slice(0,k).toString('ucs2');\n };\n magic_encode[65001] = function utf8_e(data, ofmt) {\n if(has_buf && Buffer.isBuffer(data)) {\n if(!ofmt || ofmt === 'buf') return data;\n if(ofmt !== 'arr') return data.toString('binary');\n return [].slice.call(data);\n }\n var len = data.length, w = 0, ww = 0, j = 0;\n var direct = typeof data === \"string\";\n if(4 * len > mdl) { mdl = 4 * len; mdb = Buffer.allocUnsafe(mdl); }\n for(var i = 0; i < len; ++i) {\n w = direct ? data.charCodeAt(i) : data[i].charCodeAt(0);\n if(w <= 0x007F) mdb[j++] = w;\n else if(w <= 0x07FF) {\n mdb[j++] = 192 + (w >> 6);\n mdb[j++] = 128 + (w&63);\n } else if(w >= 0xD800 && w <= 0xDFFF) {\n w -= 0xD800; ++i;\n ww = (direct ? data.charCodeAt(i) : data[i].charCodeAt(0)) - 0xDC00 + (w << 10);\n mdb[j++] = 240 + ((ww>>>18) & 0x07);\n mdb[j++] = 144 + ((ww>>>12) & 0x3F);\n mdb[j++] = 128 + ((ww>>>6) & 0x3F);\n mdb[j++] = 128 + (ww & 0x3F);\n } else {\n mdb[j++] = 224 + (w >> 12);\n mdb[j++] = 128 + ((w >> 6)&63);\n mdb[j++] = 128 + (w&63);\n }\n }\n if(!ofmt || ofmt === 'buf') return mdb.slice(0,j);\n if(ofmt !== 'arr') return mdb.slice(0,j).toString('binary');\n return [].slice.call(mdb, 0, j);\n };\n }\n\n var encache = function encache() {\n if(has_buf) {\n if(cpdcache[sbcs_cache[0]]) return;\n var i=0, s=0;\n for(i = 0; i < sbcs_cache.length; ++i) {\n s = sbcs_cache[i];\n if(cpt[s]) {\n cpdcache[s] = sbcs_decode(s);\n cpecache[s] = sbcs_encode(s);\n }\n }\n for(i = 0; i < dbcs_cache.length; ++i) {\n s = dbcs_cache[i];\n if(cpt[s]) {\n cpdcache[s] = dbcs_decode(s);\n cpecache[s] = dbcs_encode(s);\n }\n }\n for(i = 0; i < magic_cache.length; ++i) {\n s = magic_cache[i];\n if(magic_decode[s]) cpdcache[s] = magic_decode[s];\n if(magic_encode[s]) cpecache[s] = magic_encode[s];\n }\n }\n };\n var null_enc = function(data, ofmt) { void ofmt; return \"\"; };\n var cp_decache = function cp_decache(cp) { delete cpdcache[cp]; delete cpecache[cp]; };\n var decache = function decache() {\n if(has_buf) {\n if(!cpdcache[sbcs_cache[0]]) return;\n sbcs_cache.forEach(cp_decache);\n dbcs_cache.forEach(cp_decache);\n magic_cache.forEach(cp_decache);\n }\n last_enc = null_enc; last_cp = 0;\n };\n var cache = {\n encache: encache,\n decache: decache,\n sbcs: sbcs_cache,\n dbcs: dbcs_cache\n };\n\n encache();\n\n var BM = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\";\n var SetD = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'(),-./:?\";\n var last_enc = null_enc, last_cp = 0;\n var encode = function encode(cp, data, ofmt) {\n if(cp === last_cp && last_enc) { return last_enc(data, ofmt); }\n if(cpecache[cp]) { last_enc = cpecache[last_cp=cp]; return last_enc(data, ofmt); }\n if(has_buf && Buffer.isBuffer(data)) data = data.toString('utf8');\n var len = data.length;\n var out = has_buf ? Buffer.allocUnsafe(4*len) : [], w=0, i=0, j = 0, ww=0;\n var C = cpt[cp], E, M = \"\";\n var isstr = typeof data === 'string';\n if(C && (E=C.enc)) for(i = 0; i < len; ++i, ++j) {\n w = E[isstr? data.charAt(i) : data[i]];\n if(w > 255) {\n out[j] = w>>8;\n out[++j] = w&255;\n } else out[j] = w&255;\n }\n else if((M=magic[cp])) switch(M) {\n case \"utf8\":\n if(has_buf && isstr) { out = Buffer_from(data, M); j = out.length; break; }\n for(i = 0; i < len; ++i, ++j) {\n w = isstr ? data.charCodeAt(i) : data[i].charCodeAt(0);\n if(w <= 0x007F) out[j] = w;\n else if(w <= 0x07FF) {\n out[j] = 192 + (w >> 6);\n out[++j] = 128 + (w&63);\n } else if(w >= 0xD800 && w <= 0xDFFF) {\n w -= 0xD800;\n ww = (isstr ? data.charCodeAt(++i) : data[++i].charCodeAt(0)) - 0xDC00 + (w << 10);\n out[j] = 240 + ((ww>>>18) & 0x07);\n out[++j] = 144 + ((ww>>>12) & 0x3F);\n out[++j] = 128 + ((ww>>>6) & 0x3F);\n out[++j] = 128 + (ww & 0x3F);\n } else {\n out[j] = 224 + (w >> 12);\n out[++j] = 128 + ((w >> 6)&63);\n out[++j] = 128 + (w&63);\n }\n }\n break;\n case \"ascii\":\n if(has_buf && typeof data === \"string\") { out = Buffer_from(data, M); j = out.length; break; }\n for(i = 0; i < len; ++i, ++j) {\n w = isstr ? data.charCodeAt(i) : data[i].charCodeAt(0);\n if(w <= 0x007F) out[j] = w;\n else throw new Error(\"bad ascii \" + w);\n }\n break;\n case \"utf16le\":\n if(has_buf && typeof data === \"string\") { out = Buffer_from(data, M); j = out.length; break; }\n for(i = 0; i < len; ++i) {\n w = isstr ? data.charCodeAt(i) : data[i].charCodeAt(0);\n out[j++] = w&255;\n out[j++] = w>>8;\n }\n break;\n case \"utf16be\":\n for(i = 0; i < len; ++i) {\n w = isstr ? data.charCodeAt(i) : data[i].charCodeAt(0);\n out[j++] = w>>8;\n out[j++] = w&255;\n }\n break;\n case \"utf32le\":\n for(i = 0; i < len; ++i) {\n w = isstr ? data.charCodeAt(i) : data[i].charCodeAt(0);\n if(w >= 0xD800 && w <= 0xDFFF) w = 0x10000 + ((w - 0xD800) << 10) + (data[++i].charCodeAt(0) - 0xDC00);\n out[j++] = w&255; w >>= 8;\n out[j++] = w&255; w >>= 8;\n out[j++] = w&255; w >>= 8;\n out[j++] = w&255;\n }\n break;\n case \"utf32be\":\n for(i = 0; i < len; ++i) {\n w = isstr ? data.charCodeAt(i) : data[i].charCodeAt(0);\n if(w >= 0xD800 && w <= 0xDFFF) w = 0x10000 + ((w - 0xD800) << 10) + (data[++i].charCodeAt(0) - 0xDC00);\n out[j+3] = w&255; w >>= 8;\n out[j+2] = w&255; w >>= 8;\n out[j+1] = w&255; w >>= 8;\n out[j] = w&255;\n j+=4;\n }\n break;\n case \"utf7\":\n for(i = 0; i < len; i++) {\n var c = isstr ? data.charAt(i) : data[i].charAt(0);\n if(c === \"+\") { out[j++] = 0x2b; out[j++] = 0x2d; continue; }\n if(SetD.indexOf(c) > -1) { out[j++] = c.charCodeAt(0); continue; }\n var tt = encode(1201, c);\n out[j++] = 0x2b;\n out[j++] = BM.charCodeAt(tt[0]>>2);\n out[j++] = BM.charCodeAt(((tt[0]&0x03)<<4) + ((tt[1]||0)>>4));\n out[j++] = BM.charCodeAt(((tt[1]&0x0F)<<2) + ((tt[2]||0)>>6));\n out[j++] = 0x2d;\n }\n break;\n default: throw new Error(\"Unsupported magic: \" + cp + \" \" + magic[cp]);\n }\n else throw new Error(\"Unrecognized CP: \" + cp);\n out = out.slice(0,j);\n if(!has_buf) return (ofmt == 'str') ? (out).map(sfcc).join(\"\") : out;\n if(!ofmt || ofmt === 'buf') return out;\n if(ofmt !== 'arr') return out.toString('binary');\n return [].slice.call(out);\n };\n var decode = function decode(cp, data) {\n var F; if((F=cpdcache[cp])) return F(data);\n if(typeof data === \"string\") return decode(cp, data.split(\"\").map(cca));\n var len = data.length, out = new Array(len), s=\"\", w=0, i=0, j=1, k=0, ww=0;\n var C = cpt[cp], D, M=\"\";\n if(C && (D=C.dec)) {\n for(i = 0; i < len; i+=j) {\n j = 2;\n s = D[(data[i]<<8)+ data[i+1]];\n if(!s) {\n j = 1;\n s = D[data[i]];\n }\n if(!s) throw new Error('Unrecognized code: ' + data[i] + ' ' + data[i+j-1] + ' ' + i + ' ' + j + ' ' + D[data[i]]);\n out[k++] = s;\n }\n }\n else if((M=magic[cp])) switch(M) {\n case \"utf8\":\n if(len >= 3 && data[0] == 0xEF) if(data[1] == 0xBB && data[2] == 0xBF) i = 3;\n for(; i < len; i+=j) {\n j = 1;\n if(data[i] < 128) w = data[i];\n else if(data[i] < 224) { w=(data[i]&31)*64+(data[i+1]&63); j=2; }\n else if(data[i] < 240) { w=((data[i]&15)<<12)+(data[i+1]&63)*64+(data[i+2]&63); j=3; }\n else { w=(data[i]&7)*262144+((data[i+1]&63)<<12)+(data[i+2]&63)*64+(data[i+3]&63); j=4; }\n if(w < 65536) { out[k++] = String.fromCharCode(w); }\n else {\n w -= 65536; ww = 0xD800 + ((w>>10)&1023); w = 0xDC00 + (w&1023);\n out[k++] = String.fromCharCode(ww); out[k++] = String.fromCharCode(w);\n }\n }\n break;\n case \"ascii\":\n if(has_buf && Buffer.isBuffer(data)) return data.toString(M);\n for(i = 0; i < len; i++) out[i] = String.fromCharCode(data[i]);\n k = len; break;\n case \"utf16le\":\n if(len >= 2 && data[0] == 0xFF) if(data[1] == 0xFE) i = 2;\n if(has_buf && Buffer.isBuffer(data)) return data.toString(M);\n j = 2;\n for(; i+1 < len; i+=j) {\n out[k++] = String.fromCharCode((data[i+1]<<8) + data[i]);\n }\n break;\n case \"utf16be\":\n if(len >= 2 && data[0] == 0xFE) if(data[1] == 0xFF) i = 2;\n j = 2;\n for(; i+1 < len; i+=j) {\n out[k++] = String.fromCharCode((data[i]<<8) + data[i+1]);\n }\n break;\n case \"utf32le\":\n if(len >= 4 && data[0] == 0xFF) if(data[1] == 0xFE && data[2] === 0 && data[3] === 0) i = 4;\n j = 4;\n for(; i < len; i+=j) {\n w = (data[i+3]<<24) + (data[i+2]<<16) + (data[i+1]<<8) + (data[i]);\n if(w > 0xFFFF) {\n w -= 0x10000;\n out[k++] = String.fromCharCode(0xD800 + ((w >> 10) & 0x3FF));\n out[k++] = String.fromCharCode(0xDC00 + (w & 0x3FF));\n }\n else out[k++] = String.fromCharCode(w);\n }\n break;\n case \"utf32be\":\n if(len >= 4 && data[3] == 0xFF) if(data[2] == 0xFE && data[1] === 0 && data[0] === 0) i = 4;\n j = 4;\n for(; i < len; i+=j) {\n w = (data[i]<<24) + (data[i+1]<<16) + (data[i+2]<<8) + (data[i+3]);\n if(w > 0xFFFF) {\n w -= 0x10000;\n out[k++] = String.fromCharCode(0xD800 + ((w >> 10) & 0x3FF));\n out[k++] = String.fromCharCode(0xDC00 + (w & 0x3FF));\n }\n else out[k++] = String.fromCharCode(w);\n }\n break;\n case \"utf7\":\n if(len >= 4 && data[0] == 0x2B && data[1] == 0x2F && data[2] == 0x76) {\n if(len >= 5 && data[3] == 0x38 && data[4] == 0x2D) i = 5;\n else if(data[3] == 0x38 || data[3] == 0x39 || data[3] == 0x2B || data[3] == 0x2F) i = 4;\n }\n for(; i < len; i+=j) {\n if(data[i] !== 0x2b) { j=1; out[k++] = String.fromCharCode(data[i]); continue; }\n j=1;\n if(data[i+1] === 0x2d) { j = 2; out[k++] = \"+\"; continue; }\n // eslint-disable-next-line no-useless-escape\n while(String.fromCharCode(data[i+j]).match(/[A-Za-z0-9+\\/]/)) j++;\n var dash = 0;\n if(data[i+j] === 0x2d) { ++j; dash=1; }\n var tt = [];\n var o64 = \"\";\n var c1=0, c2=0, c3=0;\n var e1=0, e2=0, e3=0, e4=0;\n for(var l = 1; l < j - dash;) {\n e1 = BM.indexOf(String.fromCharCode(data[i+l++]));\n e2 = BM.indexOf(String.fromCharCode(data[i+l++]));\n c1 = e1 << 2 | e2 >> 4;\n tt.push(c1);\n e3 = BM.indexOf(String.fromCharCode(data[i+l++]));\n if(e3 === -1) break;\n c2 = (e2 & 15) << 4 | e3 >> 2;\n tt.push(c2);\n e4 = BM.indexOf(String.fromCharCode(data[i+l++]));\n if(e4 === -1) break;\n c3 = (e3 & 3) << 6 | e4;\n if(e4 < 64) tt.push(c3);\n }\n o64 = decode(1201, tt);\n for(l = 0; l < o64.length; ++l) out[k++] = o64.charAt(l);\n }\n break;\n default: throw new Error(\"Unsupported magic: \" + cp + \" \" + magic[cp]);\n }\n else throw new Error(\"Unrecognized CP: \" + cp);\n return out.slice(0,k).join(\"\");\n };\n var hascp = function hascp(cp) { return !!(cpt[cp] || magic[cp]); };\n cpt.utils = { decode: decode, encode: encode, hascp: hascp, magic: magic, cache:cache };\n return cpt;\n}));\n","'use strict';\nvar bind = require('../internals/function-bind-context');\nvar call = require('../internals/function-call');\nvar anObject = require('../internals/an-object');\nvar tryToString = require('../internals/try-to-string');\nvar isArrayIteratorMethod = require('../internals/is-array-iterator-method');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\nvar getIterator = require('../internals/get-iterator');\nvar getIteratorMethod = require('../internals/get-iterator-method');\nvar iteratorClose = require('../internals/iterator-close');\n\nvar $TypeError = TypeError;\n\nvar Result = function (stopped, result) {\n this.stopped = stopped;\n this.result = result;\n};\n\nvar ResultPrototype = Result.prototype;\n\nmodule.exports = function (iterable, unboundFunction, options) {\n var that = options && options.that;\n var AS_ENTRIES = !!(options && options.AS_ENTRIES);\n var IS_RECORD = !!(options && options.IS_RECORD);\n var IS_ITERATOR = !!(options && options.IS_ITERATOR);\n var INTERRUPTED = !!(options && options.INTERRUPTED);\n var fn = bind(unboundFunction, that);\n var iterator, iterFn, index, length, result, next, step;\n\n var stop = function (condition) {\n if (iterator) iteratorClose(iterator, 'normal', condition);\n return new Result(true, condition);\n };\n\n var callFn = function (value) {\n if (AS_ENTRIES) {\n anObject(value);\n return INTERRUPTED ? fn(value[0], value[1], stop) : fn(value[0], value[1]);\n } return INTERRUPTED ? fn(value, stop) : fn(value);\n };\n\n if (IS_RECORD) {\n iterator = iterable.iterator;\n } else if (IS_ITERATOR) {\n iterator = iterable;\n } else {\n iterFn = getIteratorMethod(iterable);\n if (!iterFn) throw new $TypeError(tryToString(iterable) + ' is not iterable');\n // optimisation for array iterators\n if (isArrayIteratorMethod(iterFn)) {\n for (index = 0, length = lengthOfArrayLike(iterable); length > index; index++) {\n result = callFn(iterable[index]);\n if (result && isPrototypeOf(ResultPrototype, result)) return result;\n } return new Result(false);\n }\n iterator = getIterator(iterable, iterFn);\n }\n\n next = IS_RECORD ? iterable.next : iterator.next;\n while (!(step = call(next, iterator)).done) {\n try {\n result = callFn(step.value);\n } catch (error) {\n iteratorClose(iterator, 'throw', error);\n }\n if (typeof result == 'object' && result && isPrototypeOf(ResultPrototype, result)) return result;\n } return new Result(false);\n};\n","module.exports =\n/******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId]) {\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\ti: moduleId,\n/******/ \t\t\tl: false,\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.l = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// define getter function for harmony exports\n/******/ \t__webpack_require__.d = function(exports, name, getter) {\n/******/ \t\tif(!__webpack_require__.o(exports, name)) {\n/******/ \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n/******/ \t\t}\n/******/ \t};\n/******/\n/******/ \t// define __esModule on exports\n/******/ \t__webpack_require__.r = function(exports) {\n/******/ \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n/******/ \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n/******/ \t\t}\n/******/ \t\tObject.defineProperty(exports, '__esModule', { value: true });\n/******/ \t};\n/******/\n/******/ \t// create a fake namespace object\n/******/ \t// mode & 1: value is a module id, require it\n/******/ \t// mode & 2: merge all properties of value into the ns\n/******/ \t// mode & 4: return value when already ns object\n/******/ \t// mode & 8|1: behave like require\n/******/ \t__webpack_require__.t = function(value, mode) {\n/******/ \t\tif(mode & 1) value = __webpack_require__(value);\n/******/ \t\tif(mode & 8) return value;\n/******/ \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n/******/ \t\tvar ns = Object.create(null);\n/******/ \t\t__webpack_require__.r(ns);\n/******/ \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n/******/ \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n/******/ \t\treturn ns;\n/******/ \t};\n/******/\n/******/ \t// getDefaultExport function for compatibility with non-harmony modules\n/******/ \t__webpack_require__.n = function(module) {\n/******/ \t\tvar getter = module && module.__esModule ?\n/******/ \t\t\tfunction getDefault() { return module['default']; } :\n/******/ \t\t\tfunction getModuleExports() { return module; };\n/******/ \t\t__webpack_require__.d(getter, 'a', getter);\n/******/ \t\treturn getter;\n/******/ \t};\n/******/\n/******/ \t// Object.prototype.hasOwnProperty.call\n/******/ \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n/******/\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(__webpack_require__.s = \"fb15\");\n/******/ })\n/************************************************************************/\n/******/ ({\n\n/***/ \"21a6\":\n/***/ (function(module, exports, __webpack_require__) {\n\n/* WEBPACK VAR INJECTION */(function(global) {var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function(a,b){if(true)!(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_FACTORY__ = (b),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));else {}})(this,function(){\"use strict\";function b(a,b){return\"undefined\"==typeof b?b={autoBom:!1}:\"object\"!=typeof b&&(console.warn(\"Deprecated: Expected third argument to be a object\"),b={autoBom:!b}),b.autoBom&&/^\\s*(?:text\\/\\S*|application\\/xml|\\S*\\/\\S*\\+xml)\\s*;.*charset\\s*=\\s*utf-8/i.test(a.type)?new Blob([\"\\uFEFF\",a],{type:a.type}):a}function c(a,b,c){var d=new XMLHttpRequest;d.open(\"GET\",a),d.responseType=\"blob\",d.onload=function(){g(d.response,b,c)},d.onerror=function(){console.error(\"could not download file\")},d.send()}function d(a){var b=new XMLHttpRequest;b.open(\"HEAD\",a,!1);try{b.send()}catch(a){}return 200<=b.status&&299>=b.status}function e(a){try{a.dispatchEvent(new MouseEvent(\"click\"))}catch(c){var b=document.createEvent(\"MouseEvents\");b.initMouseEvent(\"click\",!0,!0,window,0,0,0,80,20,!1,!1,!1,!1,0,null),a.dispatchEvent(b)}}var f=\"object\"==typeof window&&window.window===window?window:\"object\"==typeof self&&self.self===self?self:\"object\"==typeof global&&global.global===global?global:void 0,a=f.navigator&&/Macintosh/.test(navigator.userAgent)&&/AppleWebKit/.test(navigator.userAgent)&&!/Safari/.test(navigator.userAgent),g=f.saveAs||(\"object\"!=typeof window||window!==f?function(){}:\"download\"in HTMLAnchorElement.prototype&&!a?function(b,g,h){var i=f.URL||f.webkitURL,j=document.createElement(\"a\");g=g||b.name||\"download\",j.download=g,j.rel=\"noopener\",\"string\"==typeof b?(j.href=b,j.origin===location.origin?e(j):d(j.href)?c(b,g,h):e(j,j.target=\"_blank\")):(j.href=i.createObjectURL(b),setTimeout(function(){i.revokeObjectURL(j.href)},4E4),setTimeout(function(){e(j)},0))}:\"msSaveOrOpenBlob\"in navigator?function(f,g,h){if(g=g||f.name||\"download\",\"string\"!=typeof f)navigator.msSaveOrOpenBlob(b(f,h),g);else if(d(f))c(f,g,h);else{var i=document.createElement(\"a\");i.href=f,i.target=\"_blank\",setTimeout(function(){e(i)})}}:function(b,d,e,g){if(g=g||open(\"\",\"_blank\"),g&&(g.document.title=g.document.body.innerText=\"downloading...\"),\"string\"==typeof b)return c(b,d,e);var h=\"application/octet-stream\"===b.type,i=/constructor/i.test(f.HTMLElement)||f.safari,j=/CriOS\\/[\\d]+/.test(navigator.userAgent);if((j||h&&i||a)&&\"undefined\"!=typeof FileReader){var k=new FileReader;k.onloadend=function(){var a=k.result;a=j?a:a.replace(/^data:[^;]*;/,\"data:attachment/file;\"),g?g.location.href=a:location=a,g=null},k.readAsDataURL(b)}else{var l=f.URL||f.webkitURL,m=l.createObjectURL(b);g?g.location=m:location.href=m,g=null,setTimeout(function(){l.revokeObjectURL(m)},4E4)}});f.saveAs=g.saveAs=g, true&&(module.exports=g)});\n\n//# sourceMappingURL=FileSaver.min.js.map\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(\"c8ba\")))\n\n/***/ }),\n\n/***/ \"27b5\":\n/***/ (function(module, exports, __webpack_require__) {\n\n/* WEBPACK VAR INJECTION */(function(global, module) {/**\n * lodash (Custom Build) \n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors \n * Released under MIT license \n * Based on Underscore.js 1.8.3 \n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/** Used as the `TypeError` message for \"Functions\" methods. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used to compose bitmasks for comparison styles. */\nvar UNORDERED_COMPARE_FLAG = 1,\n PARTIAL_COMPARE_FLAG = 2;\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0,\n MAX_SAFE_INTEGER = 9007199254740991;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n objectTag = '[object Object]',\n promiseTag = '[object Promise]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/** Used to match property names within property paths. */\nvar reIsDeepProp = /\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,\n reIsPlainProp = /^\\w*$/,\n reLeadingDot = /^\\./,\n rePropName = /[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g;\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to match backslashes in property paths. */\nvar reEscapeChar = /\\\\(\\\\)?/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/** Used to identify `toStringTag` values of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\ntypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\ntypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\ntypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\ntypedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] =\ntypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\ntypedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\ntypedArrayTags[errorTag] = typedArrayTags[funcTag] =\ntypedArrayTags[mapTag] = typedArrayTags[numberTag] =\ntypedArrayTags[objectTag] = typedArrayTags[regexpTag] =\ntypedArrayTags[setTag] = typedArrayTags[stringTag] =\ntypedArrayTags[weakMapTag] = false;\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/** Detect free variable `exports`. */\nvar freeExports = true && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Detect free variable `process` from Node.js. */\nvar freeProcess = moduleExports && freeGlobal.process;\n\n/** Used to access faster Node.js helpers. */\nvar nodeUtil = (function() {\n try {\n return freeProcess && freeProcess.binding('util');\n } catch (e) {}\n}());\n\n/* Node.js helper references. */\nvar nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n/**\n * A specialized version of `_.some` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\nfunction arraySome(array, predicate) {\n var index = -1,\n length = array ? array.length : 0;\n\n while (++index < length) {\n if (predicate(array[index], index, array)) {\n return true;\n }\n }\n return false;\n}\n\n/**\n * The base implementation of `_.property` without support for deep paths.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\nfunction baseProperty(key) {\n return function(object) {\n return object == null ? undefined : object[key];\n };\n}\n\n/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n}\n\n/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n return function(value) {\n return func(value);\n };\n}\n\n/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\n/**\n * Checks if `value` is a host object in IE < 9.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a host object, else `false`.\n */\nfunction isHostObject(value) {\n // Many host objects are `Object` objects that can coerce to strings\n // despite having improperly defined `toString` methods.\n var result = false;\n if (value != null && typeof value.toString != 'function') {\n try {\n result = !!(value + '');\n } catch (e) {}\n }\n return result;\n}\n\n/**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\nfunction mapToArray(map) {\n var index = -1,\n result = Array(map.size);\n\n map.forEach(function(value, key) {\n result[++index] = [key, value];\n });\n return result;\n}\n\n/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\n/**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\nfunction setToArray(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = value;\n });\n return result;\n}\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype,\n funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/** Built-in value references. */\nvar Symbol = root.Symbol,\n Uint8Array = root.Uint8Array,\n propertyIsEnumerable = objectProto.propertyIsEnumerable,\n splice = arrayProto.splice;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeKeys = overArg(Object.keys, Object);\n\n/* Built-in method references that are verified to be native. */\nvar DataView = getNative(root, 'DataView'),\n Map = getNative(root, 'Map'),\n Promise = getNative(root, 'Promise'),\n Set = getNative(root, 'Set'),\n WeakMap = getNative(root, 'WeakMap'),\n nativeCreate = getNative(Object, 'create');\n\n/** Used to detect maps, sets, and weakmaps. */\nvar dataViewCtorString = toSource(DataView),\n mapCtorString = toSource(Map),\n promiseCtorString = toSource(Promise),\n setCtorString = toSource(Set),\n weakMapCtorString = toSource(WeakMap);\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined,\n symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n var index = -1,\n length = entries ? entries.length : 0;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n}\n\n/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n return this.has(key) && delete this.__data__[key];\n}\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? data[key] !== undefined : hasOwnProperty.call(data, key);\n}\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n var data = this.__data__;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n var index = -1,\n length = entries ? entries.length : 0;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n this.__data__ = [];\n}\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n return true;\n}\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n}\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n}\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n var index = -1,\n length = entries ? entries.length : 0;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n}\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n return getMapData(this, key)['delete'](key);\n}\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n return getMapData(this, key).get(key);\n}\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n return getMapData(this, key).has(key);\n}\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n getMapData(this, key).set(key, value);\n return this;\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\n/**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\nfunction SetCache(values) {\n var index = -1,\n length = values ? values.length : 0;\n\n this.__data__ = new MapCache;\n while (++index < length) {\n this.add(values[index]);\n }\n}\n\n/**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\nfunction setCacheAdd(value) {\n this.__data__.set(value, HASH_UNDEFINED);\n return this;\n}\n\n/**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {number} Returns `true` if `value` is found, else `false`.\n */\nfunction setCacheHas(value) {\n return this.__data__.has(value);\n}\n\n// Add methods to `SetCache`.\nSetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\nSetCache.prototype.has = setCacheHas;\n\n/**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Stack(entries) {\n this.__data__ = new ListCache(entries);\n}\n\n/**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\nfunction stackClear() {\n this.__data__ = new ListCache;\n}\n\n/**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction stackDelete(key) {\n return this.__data__['delete'](key);\n}\n\n/**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction stackGet(key) {\n return this.__data__.get(key);\n}\n\n/**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction stackHas(key) {\n return this.__data__.has(key);\n}\n\n/**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\nfunction stackSet(key, value) {\n var cache = this.__data__;\n if (cache instanceof ListCache) {\n var pairs = cache.__data__;\n if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n pairs.push([key, value]);\n return this;\n }\n cache = this.__data__ = new MapCache(pairs);\n }\n cache.set(key, value);\n return this;\n}\n\n// Add methods to `Stack`.\nStack.prototype.clear = stackClear;\nStack.prototype['delete'] = stackDelete;\nStack.prototype.get = stackGet;\nStack.prototype.has = stackHas;\nStack.prototype.set = stackSet;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n // Safari 8.1 makes `arguments.callee` enumerable in strict mode.\n // Safari 9 makes `arguments.length` enumerable in strict mode.\n var result = (isArray(value) || isArguments(value))\n ? baseTimes(value.length, String)\n : [];\n\n var length = result.length,\n skipIndexes = !!length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (key == 'length' || isIndex(key, length)))) {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\n\n/**\n * The base implementation of `baseForOwn` which iterates over `object`\n * properties returned by `keysFunc` and invokes `iteratee` for each property.\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\nvar baseFor = createBaseFor();\n\n/**\n * The base implementation of `_.forOwn` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Object} Returns `object`.\n */\nfunction baseForOwn(object, iteratee) {\n return object && baseFor(object, iteratee, keys);\n}\n\n/**\n * The base implementation of `_.get` without support for default values.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @returns {*} Returns the resolved value.\n */\nfunction baseGet(object, path) {\n path = isKey(path, object) ? [path] : castPath(path);\n\n var index = 0,\n length = path.length;\n\n while (object != null && index < length) {\n object = object[toKey(path[index++])];\n }\n return (index && index == length) ? object : undefined;\n}\n\n/**\n * The base implementation of `getTag`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n return objectToString.call(value);\n}\n\n/**\n * The base implementation of `_.hasIn` without support for deep paths.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {Array|string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n */\nfunction baseHasIn(object, key) {\n return object != null && key in Object(object);\n}\n\n/**\n * The base implementation of `_.isEqual` which supports partial comparisons\n * and tracks traversed objects.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {boolean} [bitmask] The bitmask of comparison flags.\n * The bitmask may be composed of the following flags:\n * 1 - Unordered comparison\n * 2 - Partial comparison\n * @param {Object} [stack] Tracks traversed `value` and `other` objects.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n */\nfunction baseIsEqual(value, other, customizer, bitmask, stack) {\n if (value === other) {\n return true;\n }\n if (value == null || other == null || (!isObject(value) && !isObjectLike(other))) {\n return value !== value && other !== other;\n }\n return baseIsEqualDeep(value, other, baseIsEqual, customizer, bitmask, stack);\n}\n\n/**\n * A specialized version of `baseIsEqual` for arrays and objects which performs\n * deep comparisons and tracks traversed objects enabling objects with circular\n * references to be compared.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {number} [bitmask] The bitmask of comparison flags. See `baseIsEqual`\n * for more details.\n * @param {Object} [stack] Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction baseIsEqualDeep(object, other, equalFunc, customizer, bitmask, stack) {\n var objIsArr = isArray(object),\n othIsArr = isArray(other),\n objTag = arrayTag,\n othTag = arrayTag;\n\n if (!objIsArr) {\n objTag = getTag(object);\n objTag = objTag == argsTag ? objectTag : objTag;\n }\n if (!othIsArr) {\n othTag = getTag(other);\n othTag = othTag == argsTag ? objectTag : othTag;\n }\n var objIsObj = objTag == objectTag && !isHostObject(object),\n othIsObj = othTag == objectTag && !isHostObject(other),\n isSameTag = objTag == othTag;\n\n if (isSameTag && !objIsObj) {\n stack || (stack = new Stack);\n return (objIsArr || isTypedArray(object))\n ? equalArrays(object, other, equalFunc, customizer, bitmask, stack)\n : equalByTag(object, other, objTag, equalFunc, customizer, bitmask, stack);\n }\n if (!(bitmask & PARTIAL_COMPARE_FLAG)) {\n var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),\n othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');\n\n if (objIsWrapped || othIsWrapped) {\n var objUnwrapped = objIsWrapped ? object.value() : object,\n othUnwrapped = othIsWrapped ? other.value() : other;\n\n stack || (stack = new Stack);\n return equalFunc(objUnwrapped, othUnwrapped, customizer, bitmask, stack);\n }\n }\n if (!isSameTag) {\n return false;\n }\n stack || (stack = new Stack);\n return equalObjects(object, other, equalFunc, customizer, bitmask, stack);\n}\n\n/**\n * The base implementation of `_.isMatch` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @param {Array} matchData The property names, values, and compare flags to match.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n */\nfunction baseIsMatch(object, source, matchData, customizer) {\n var index = matchData.length,\n length = index,\n noCustomizer = !customizer;\n\n if (object == null) {\n return !length;\n }\n object = Object(object);\n while (index--) {\n var data = matchData[index];\n if ((noCustomizer && data[2])\n ? data[1] !== object[data[0]]\n : !(data[0] in object)\n ) {\n return false;\n }\n }\n while (++index < length) {\n data = matchData[index];\n var key = data[0],\n objValue = object[key],\n srcValue = data[1];\n\n if (noCustomizer && data[2]) {\n if (objValue === undefined && !(key in object)) {\n return false;\n }\n } else {\n var stack = new Stack;\n if (customizer) {\n var result = customizer(objValue, srcValue, key, object, source, stack);\n }\n if (!(result === undefined\n ? baseIsEqual(srcValue, objValue, customizer, UNORDERED_COMPARE_FLAG | PARTIAL_COMPARE_FLAG, stack)\n : result\n )) {\n return false;\n }\n }\n }\n return true;\n}\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\nfunction baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = (isFunction(value) || isHostObject(value)) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n}\n\n/**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\nfunction baseIsTypedArray(value) {\n return isObjectLike(value) &&\n isLength(value.length) && !!typedArrayTags[objectToString.call(value)];\n}\n\n/**\n * The base implementation of `_.iteratee`.\n *\n * @private\n * @param {*} [value=_.identity] The value to convert to an iteratee.\n * @returns {Function} Returns the iteratee.\n */\nfunction baseIteratee(value) {\n // Don't store the `typeof` result in a variable to avoid a JIT bug in Safari 9.\n // See https://bugs.webkit.org/show_bug.cgi?id=156034 for more details.\n if (typeof value == 'function') {\n return value;\n }\n if (value == null) {\n return identity;\n }\n if (typeof value == 'object') {\n return isArray(value)\n ? baseMatchesProperty(value[0], value[1])\n : baseMatches(value);\n }\n return property(value);\n}\n\n/**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeys(object) {\n if (!isPrototype(object)) {\n return nativeKeys(object);\n }\n var result = [];\n for (var key in Object(object)) {\n if (hasOwnProperty.call(object, key) && key != 'constructor') {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * The base implementation of `_.matches` which doesn't clone `source`.\n *\n * @private\n * @param {Object} source The object of property values to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction baseMatches(source) {\n var matchData = getMatchData(source);\n if (matchData.length == 1 && matchData[0][2]) {\n return matchesStrictComparable(matchData[0][0], matchData[0][1]);\n }\n return function(object) {\n return object === source || baseIsMatch(object, source, matchData);\n };\n}\n\n/**\n * The base implementation of `_.matchesProperty` which doesn't clone `srcValue`.\n *\n * @private\n * @param {string} path The path of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction baseMatchesProperty(path, srcValue) {\n if (isKey(path) && isStrictComparable(srcValue)) {\n return matchesStrictComparable(toKey(path), srcValue);\n }\n return function(object) {\n var objValue = get(object, path);\n return (objValue === undefined && objValue === srcValue)\n ? hasIn(object, path)\n : baseIsEqual(srcValue, objValue, undefined, UNORDERED_COMPARE_FLAG | PARTIAL_COMPARE_FLAG);\n };\n}\n\n/**\n * A specialized version of `baseProperty` which supports deep paths.\n *\n * @private\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\nfunction basePropertyDeep(path) {\n return function(object) {\n return baseGet(object, path);\n };\n}\n\n/**\n * The base implementation of `_.toString` which doesn't convert nullish\n * values to empty strings.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n */\nfunction baseToString(value) {\n // Exit early for strings to avoid a performance hit in some environments.\n if (typeof value == 'string') {\n return value;\n }\n if (isSymbol(value)) {\n return symbolToString ? symbolToString.call(value) : '';\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\n/**\n * Casts `value` to a path array if it's not one.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {Array} Returns the cast property path array.\n */\nfunction castPath(value) {\n return isArray(value) ? value : stringToPath(value);\n}\n\n/**\n * Creates a base function for methods like `_.forIn` and `_.forOwn`.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\nfunction createBaseFor(fromRight) {\n return function(object, iteratee, keysFunc) {\n var index = -1,\n iterable = Object(object),\n props = keysFunc(object),\n length = props.length;\n\n while (length--) {\n var key = props[fromRight ? length : ++index];\n if (iteratee(iterable[key], key, iterable) === false) {\n break;\n }\n }\n return object;\n };\n}\n\n/**\n * A specialized version of `baseIsEqualDeep` for arrays with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Array} array The array to compare.\n * @param {Array} other The other array to compare.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Function} customizer The function to customize comparisons.\n * @param {number} bitmask The bitmask of comparison flags. See `baseIsEqual`\n * for more details.\n * @param {Object} stack Tracks traversed `array` and `other` objects.\n * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.\n */\nfunction equalArrays(array, other, equalFunc, customizer, bitmask, stack) {\n var isPartial = bitmask & PARTIAL_COMPARE_FLAG,\n arrLength = array.length,\n othLength = other.length;\n\n if (arrLength != othLength && !(isPartial && othLength > arrLength)) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(array);\n if (stacked && stack.get(other)) {\n return stacked == other;\n }\n var index = -1,\n result = true,\n seen = (bitmask & UNORDERED_COMPARE_FLAG) ? new SetCache : undefined;\n\n stack.set(array, other);\n stack.set(other, array);\n\n // Ignore non-index properties.\n while (++index < arrLength) {\n var arrValue = array[index],\n othValue = other[index];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, arrValue, index, other, array, stack)\n : customizer(arrValue, othValue, index, array, other, stack);\n }\n if (compared !== undefined) {\n if (compared) {\n continue;\n }\n result = false;\n break;\n }\n // Recursively compare arrays (susceptible to call stack limits).\n if (seen) {\n if (!arraySome(other, function(othValue, othIndex) {\n if (!seen.has(othIndex) &&\n (arrValue === othValue || equalFunc(arrValue, othValue, customizer, bitmask, stack))) {\n return seen.add(othIndex);\n }\n })) {\n result = false;\n break;\n }\n } else if (!(\n arrValue === othValue ||\n equalFunc(arrValue, othValue, customizer, bitmask, stack)\n )) {\n result = false;\n break;\n }\n }\n stack['delete'](array);\n stack['delete'](other);\n return result;\n}\n\n/**\n * A specialized version of `baseIsEqualDeep` for comparing objects of\n * the same `toStringTag`.\n *\n * **Note:** This function only supports comparing values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {string} tag The `toStringTag` of the objects to compare.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Function} customizer The function to customize comparisons.\n * @param {number} bitmask The bitmask of comparison flags. See `baseIsEqual`\n * for more details.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalByTag(object, other, tag, equalFunc, customizer, bitmask, stack) {\n switch (tag) {\n case dataViewTag:\n if ((object.byteLength != other.byteLength) ||\n (object.byteOffset != other.byteOffset)) {\n return false;\n }\n object = object.buffer;\n other = other.buffer;\n\n case arrayBufferTag:\n if ((object.byteLength != other.byteLength) ||\n !equalFunc(new Uint8Array(object), new Uint8Array(other))) {\n return false;\n }\n return true;\n\n case boolTag:\n case dateTag:\n case numberTag:\n // Coerce booleans to `1` or `0` and dates to milliseconds.\n // Invalid dates are coerced to `NaN`.\n return eq(+object, +other);\n\n case errorTag:\n return object.name == other.name && object.message == other.message;\n\n case regexpTag:\n case stringTag:\n // Coerce regexes to strings and treat strings, primitives and objects,\n // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring\n // for more details.\n return object == (other + '');\n\n case mapTag:\n var convert = mapToArray;\n\n case setTag:\n var isPartial = bitmask & PARTIAL_COMPARE_FLAG;\n convert || (convert = setToArray);\n\n if (object.size != other.size && !isPartial) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked) {\n return stacked == other;\n }\n bitmask |= UNORDERED_COMPARE_FLAG;\n\n // Recursively compare objects (susceptible to call stack limits).\n stack.set(object, other);\n var result = equalArrays(convert(object), convert(other), equalFunc, customizer, bitmask, stack);\n stack['delete'](object);\n return result;\n\n case symbolTag:\n if (symbolValueOf) {\n return symbolValueOf.call(object) == symbolValueOf.call(other);\n }\n }\n return false;\n}\n\n/**\n * A specialized version of `baseIsEqualDeep` for objects with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Function} customizer The function to customize comparisons.\n * @param {number} bitmask The bitmask of comparison flags. See `baseIsEqual`\n * for more details.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalObjects(object, other, equalFunc, customizer, bitmask, stack) {\n var isPartial = bitmask & PARTIAL_COMPARE_FLAG,\n objProps = keys(object),\n objLength = objProps.length,\n othProps = keys(other),\n othLength = othProps.length;\n\n if (objLength != othLength && !isPartial) {\n return false;\n }\n var index = objLength;\n while (index--) {\n var key = objProps[index];\n if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {\n return false;\n }\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked && stack.get(other)) {\n return stacked == other;\n }\n var result = true;\n stack.set(object, other);\n stack.set(other, object);\n\n var skipCtor = isPartial;\n while (++index < objLength) {\n key = objProps[index];\n var objValue = object[key],\n othValue = other[key];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, objValue, key, other, object, stack)\n : customizer(objValue, othValue, key, object, other, stack);\n }\n // Recursively compare objects (susceptible to call stack limits).\n if (!(compared === undefined\n ? (objValue === othValue || equalFunc(objValue, othValue, customizer, bitmask, stack))\n : compared\n )) {\n result = false;\n break;\n }\n skipCtor || (skipCtor = key == 'constructor');\n }\n if (result && !skipCtor) {\n var objCtor = object.constructor,\n othCtor = other.constructor;\n\n // Non `Object` object instances with different constructors are not equal.\n if (objCtor != othCtor &&\n ('constructor' in object && 'constructor' in other) &&\n !(typeof objCtor == 'function' && objCtor instanceof objCtor &&\n typeof othCtor == 'function' && othCtor instanceof othCtor)) {\n result = false;\n }\n }\n stack['delete'](object);\n stack['delete'](other);\n return result;\n}\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n}\n\n/**\n * Gets the property names, values, and compare flags of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the match data of `object`.\n */\nfunction getMatchData(object) {\n var result = keys(object),\n length = result.length;\n\n while (length--) {\n var key = result[length],\n value = object[key];\n\n result[length] = [key, value, isStrictComparable(value)];\n }\n return result;\n}\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n}\n\n/**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nvar getTag = baseGetTag;\n\n// Fallback for data views, maps, sets, and weak maps in IE 11,\n// for data views in Edge < 14, and promises in Node.js.\nif ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n (Map && getTag(new Map) != mapTag) ||\n (Promise && getTag(Promise.resolve()) != promiseTag) ||\n (Set && getTag(new Set) != setTag) ||\n (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n getTag = function(value) {\n var result = objectToString.call(value),\n Ctor = result == objectTag ? value.constructor : undefined,\n ctorString = Ctor ? toSource(Ctor) : undefined;\n\n if (ctorString) {\n switch (ctorString) {\n case dataViewCtorString: return dataViewTag;\n case mapCtorString: return mapTag;\n case promiseCtorString: return promiseTag;\n case setCtorString: return setTag;\n case weakMapCtorString: return weakMapTag;\n }\n }\n return result;\n };\n}\n\n/**\n * Checks if `path` exists on `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @param {Function} hasFunc The function to check properties.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n */\nfunction hasPath(object, path, hasFunc) {\n path = isKey(path, object) ? [path] : castPath(path);\n\n var result,\n index = -1,\n length = path.length;\n\n while (++index < length) {\n var key = toKey(path[index]);\n if (!(result = object != null && hasFunc(object, key))) {\n break;\n }\n object = object[key];\n }\n if (result) {\n return result;\n }\n var length = object ? object.length : 0;\n return !!length && isLength(length) && isIndex(key, length) &&\n (isArray(object) || isArguments(object));\n}\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n length = length == null ? MAX_SAFE_INTEGER : length;\n return !!length &&\n (typeof value == 'number' || reIsUint.test(value)) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\n/**\n * Checks if `value` is a property name and not a property path.\n *\n * @private\n * @param {*} value The value to check.\n * @param {Object} [object] The object to query keys on.\n * @returns {boolean} Returns `true` if `value` is a property name, else `false`.\n */\nfunction isKey(value, object) {\n if (isArray(value)) {\n return false;\n }\n var type = typeof value;\n if (type == 'number' || type == 'symbol' || type == 'boolean' ||\n value == null || isSymbol(value)) {\n return true;\n }\n return reIsPlainProp.test(value) || !reIsDeepProp.test(value) ||\n (object != null && value in Object(object));\n}\n\n/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n}\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n}\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n}\n\n/**\n * Checks if `value` is suitable for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` if suitable for strict\n * equality comparisons, else `false`.\n */\nfunction isStrictComparable(value) {\n return value === value && !isObject(value);\n}\n\n/**\n * A specialized version of `matchesProperty` for source values suitable\n * for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction matchesStrictComparable(key, srcValue) {\n return function(object) {\n if (object == null) {\n return false;\n }\n return object[key] === srcValue &&\n (srcValue !== undefined || (key in Object(object)));\n };\n}\n\n/**\n * Converts `string` to a property path array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the property path array.\n */\nvar stringToPath = memoize(function(string) {\n string = toString(string);\n\n var result = [];\n if (reLeadingDot.test(string)) {\n result.push('');\n }\n string.replace(rePropName, function(match, number, quote, string) {\n result.push(quote ? string.replace(reEscapeChar, '$1') : (number || match));\n });\n return result;\n});\n\n/**\n * Converts `value` to a string key if it's not a string or symbol.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {string|symbol} Returns the key.\n */\nfunction toKey(value) {\n if (typeof value == 'string' || isSymbol(value)) {\n return value;\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to process.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\n/**\n * Creates a function that memoizes the result of `func`. If `resolver` is\n * provided, it determines the cache key for storing the result based on the\n * arguments provided to the memoized function. By default, the first argument\n * provided to the memoized function is used as the map cache key. The `func`\n * is invoked with the `this` binding of the memoized function.\n *\n * **Note:** The cache is exposed as the `cache` property on the memoized\n * function. Its creation may be customized by replacing the `_.memoize.Cache`\n * constructor with one whose instances implement the\n * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)\n * method interface of `delete`, `get`, `has`, and `set`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to have its output memoized.\n * @param {Function} [resolver] The function to resolve the cache key.\n * @returns {Function} Returns the new memoized function.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n * var other = { 'c': 3, 'd': 4 };\n *\n * var values = _.memoize(_.values);\n * values(object);\n * // => [1, 2]\n *\n * values(other);\n * // => [3, 4]\n *\n * object.a = 2;\n * values(object);\n * // => [1, 2]\n *\n * // Modify the result cache.\n * values.cache.set(object, ['a', 'b']);\n * values(object);\n * // => ['a', 'b']\n *\n * // Replace `_.memoize.Cache`.\n * _.memoize.Cache = WeakMap;\n */\nfunction memoize(func, resolver) {\n if (typeof func != 'function' || (resolver && typeof resolver != 'function')) {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n var memoized = function() {\n var args = arguments,\n key = resolver ? resolver.apply(this, args) : args[0],\n cache = memoized.cache;\n\n if (cache.has(key)) {\n return cache.get(key);\n }\n var result = func.apply(this, args);\n memoized.cache = cache.set(key, result);\n return result;\n };\n memoized.cache = new (memoize.Cache || MapCache);\n return memoized;\n}\n\n// Assign cache to `_.memoize`.\nmemoize.Cache = MapCache;\n\n/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nfunction isArguments(value) {\n // Safari 8.1 makes `arguments.callee` enumerable in strict mode.\n return isArrayLikeObject(value) && hasOwnProperty.call(value, 'callee') &&\n (!propertyIsEnumerable.call(value, 'callee') || objectToString.call(value) == argsTag);\n}\n\n/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n\n/**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object,\n * else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\nfunction isArrayLikeObject(value) {\n return isObjectLike(value) && isArrayLike(value);\n}\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 8-9 which returns 'object' for typed array and other constructors.\n var tag = isObject(value) ? objectToString.call(value) : '';\n return tag == funcTag || tag == genTag;\n}\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return !!value && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return !!value && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && objectToString.call(value) == symbolTag);\n}\n\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\nvar isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\n/**\n * Converts `value` to a string. An empty string is returned for `null`\n * and `undefined` values. The sign of `-0` is preserved.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n * @example\n *\n * _.toString(null);\n * // => ''\n *\n * _.toString(-0);\n * // => '-0'\n *\n * _.toString([1, 2, 3]);\n * // => '1,2,3'\n */\nfunction toString(value) {\n return value == null ? '' : baseToString(value);\n}\n\n/**\n * Gets the value at `path` of `object`. If the resolved value is\n * `undefined`, the `defaultValue` is returned in its place.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.get(object, 'a[0].b.c');\n * // => 3\n *\n * _.get(object, ['a', '0', 'b', 'c']);\n * // => 3\n *\n * _.get(object, 'a.b.c', 'default');\n * // => 'default'\n */\nfunction get(object, path, defaultValue) {\n var result = object == null ? undefined : baseGet(object, path);\n return result === undefined ? defaultValue : result;\n}\n\n/**\n * Checks if `path` is a direct or inherited property of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n * @example\n *\n * var object = _.create({ 'a': _.create({ 'b': 2 }) });\n *\n * _.hasIn(object, 'a');\n * // => true\n *\n * _.hasIn(object, 'a.b');\n * // => true\n *\n * _.hasIn(object, ['a', 'b']);\n * // => true\n *\n * _.hasIn(object, 'b');\n * // => false\n */\nfunction hasIn(object, path) {\n return object != null && hasPath(object, path, baseHasIn);\n}\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nfunction keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n}\n\n/**\n * The opposite of `_.mapValues`; this method creates an object with the\n * same values as `object` and keys generated by running each own enumerable\n * string keyed property of `object` thru `iteratee`. The iteratee is invoked\n * with three arguments: (value, key, object).\n *\n * @static\n * @memberOf _\n * @since 3.8.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns the new mapped object.\n * @see _.mapValues\n * @example\n *\n * _.mapKeys({ 'a': 1, 'b': 2 }, function(value, key) {\n * return key + value;\n * });\n * // => { 'a1': 1, 'b2': 2 }\n */\nfunction mapKeys(object, iteratee) {\n var result = {};\n iteratee = baseIteratee(iteratee, 3);\n\n baseForOwn(object, function(value, key, object) {\n result[iteratee(value, key, object)] = value;\n });\n return result;\n}\n\n/**\n * This method returns the first argument it receives.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {*} value Any value.\n * @returns {*} Returns `value`.\n * @example\n *\n * var object = { 'a': 1 };\n *\n * console.log(_.identity(object) === object);\n * // => true\n */\nfunction identity(value) {\n return value;\n}\n\n/**\n * Creates a function that returns the value at `path` of a given object.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n * @example\n *\n * var objects = [\n * { 'a': { 'b': 2 } },\n * { 'a': { 'b': 1 } }\n * ];\n *\n * _.map(objects, _.property('a.b'));\n * // => [2, 1]\n *\n * _.map(_.sortBy(objects, _.property(['a', 'b'])), 'a.b');\n * // => [1, 2]\n */\nfunction property(path) {\n return isKey(path) ? baseProperty(toKey(path)) : basePropertyDeep(path);\n}\n\nmodule.exports = mapKeys;\n\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(\"c8ba\"), __webpack_require__(\"62e4\")(module)))\n\n/***/ }),\n\n/***/ \"369b\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/* @license\nPapa Parse\nv5.3.0\nhttps://github.com/mholt/PapaParse\nLicense: MIT\n*/\n!function(e,t){ true?!(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_FACTORY__ = (t),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)):undefined}(this,function s(){\"use strict\";var f=\"undefined\"!=typeof self?self:\"undefined\"!=typeof window?window:void 0!==f?f:{};var n=!f.document&&!!f.postMessage,o=n&&/blob:/i.test((f.location||{}).protocol),a={},h=0,b={parse:function(e,t){var i=(t=t||{}).dynamicTyping||!1;U(i)&&(t.dynamicTypingFunction=i,i={});if(t.dynamicTyping=i,t.transform=!!U(t.transform)&&t.transform,t.worker&&b.WORKERS_SUPPORTED){var r=function(){if(!b.WORKERS_SUPPORTED)return!1;var e=(i=f.URL||f.webkitURL||null,r=s.toString(),b.BLOB_URL||(b.BLOB_URL=i.createObjectURL(new Blob([\"(\",r,\")();\"],{type:\"text/javascript\"})))),t=new f.Worker(e);var i,r;return t.onmessage=m,t.id=h++,a[t.id]=t}();return r.userStep=t.step,r.userChunk=t.chunk,r.userComplete=t.complete,r.userError=t.error,t.step=U(t.step),t.chunk=U(t.chunk),t.complete=U(t.complete),t.error=U(t.error),delete t.worker,void r.postMessage({input:e,config:t,workerId:r.id})}var n=null;b.NODE_STREAM_INPUT,\"string\"==typeof e?n=t.download?new l(t):new p(t):!0===e.readable&&U(e.read)&&U(e.on)?n=new g(t):(f.File&&e instanceof File||e instanceof Object)&&(n=new c(t));return n.stream(e)},unparse:function(e,t){var n=!1,m=!0,_=\",\",v=\"\\r\\n\",s='\"',a=s+s,i=!1,r=null,o=!1;!function(){if(\"object\"!=typeof t)return;\"string\"!=typeof t.delimiter||b.BAD_DELIMITERS.filter(function(e){return-1!==t.delimiter.indexOf(e)}).length||(_=t.delimiter);(\"boolean\"==typeof t.quotes||\"function\"==typeof t.quotes||Array.isArray(t.quotes))&&(n=t.quotes);\"boolean\"!=typeof t.skipEmptyLines&&\"string\"!=typeof t.skipEmptyLines||(i=t.skipEmptyLines);\"string\"==typeof t.newline&&(v=t.newline);\"string\"==typeof t.quoteChar&&(s=t.quoteChar);\"boolean\"==typeof t.header&&(m=t.header);if(Array.isArray(t.columns)){if(0===t.columns.length)throw new Error(\"Option columns is empty\");r=t.columns}void 0!==t.escapeChar&&(a=t.escapeChar+s);\"boolean\"==typeof t.escapeFormulae&&(o=t.escapeFormulae)}();var h=new RegExp(q(s),\"g\");\"string\"==typeof e&&(e=JSON.parse(e));if(Array.isArray(e)){if(!e.length||Array.isArray(e[0]))return f(null,e,i);if(\"object\"==typeof e[0])return f(r||u(e[0]),e,i)}else if(\"object\"==typeof e)return\"string\"==typeof e.data&&(e.data=JSON.parse(e.data)),Array.isArray(e.data)&&(e.fields||(e.fields=e.meta&&e.meta.fields),e.fields||(e.fields=Array.isArray(e.data[0])?e.fields:u(e.data[0])),Array.isArray(e.data[0])||\"object\"==typeof e.data[0]||(e.data=[e.data])),f(e.fields||[],e.data||[],i);throw new Error(\"Unable to serialize unrecognized input\");function u(e){if(\"object\"!=typeof e)return[];var t=[];for(var i in e)t.push(i);return t}function f(e,t,i){var r=\"\";\"string\"==typeof e&&(e=JSON.parse(e)),\"string\"==typeof t&&(t=JSON.parse(t));var n=Array.isArray(e)&&0=this._config.preview;if(o)f.postMessage({results:n,workerId:b.WORKER_ID,finished:a});else if(U(this._config.chunk)&&!t){if(this._config.chunk(n,this._handle),this._handle.paused()||this._handle.aborted())return void(this._halted=!0);n=void 0,this._completeResults=void 0}return this._config.step||this._config.chunk||(this._completeResults.data=this._completeResults.data.concat(n.data),this._completeResults.errors=this._completeResults.errors.concat(n.errors),this._completeResults.meta=n.meta),this._completed||!a||!U(this._config.complete)||n&&n.meta.aborted||(this._config.complete(this._completeResults,this._input),this._completed=!0),a||n&&n.meta.paused||this._nextChunk(),n}this._halted=!0},this._sendError=function(e){U(this._config.error)?this._config.error(e):o&&this._config.error&&f.postMessage({workerId:b.WORKER_ID,error:e,finished:!1})}}function l(e){var r;(e=e||{}).chunkSize||(e.chunkSize=b.RemoteChunkSize),u.call(this,e),this._nextChunk=n?function(){this._readChunk(),this._chunkLoaded()}:function(){this._readChunk()},this.stream=function(e){this._input=e,this._nextChunk()},this._readChunk=function(){if(this._finished)this._chunkLoaded();else{if(r=new XMLHttpRequest,this._config.withCredentials&&(r.withCredentials=this._config.withCredentials),n||(r.onload=y(this._chunkLoaded,this),r.onerror=y(this._chunkError,this)),r.open(this._config.downloadRequestBody?\"POST\":\"GET\",this._input,!n),this._config.downloadRequestHeaders){var e=this._config.downloadRequestHeaders;for(var t in e)r.setRequestHeader(t,e[t])}if(this._config.chunkSize){var i=this._start+this._config.chunkSize-1;r.setRequestHeader(\"Range\",\"bytes=\"+this._start+\"-\"+i)}try{r.send(this._config.downloadRequestBody)}catch(e){this._chunkError(e.message)}n&&0===r.status&&this._chunkError()}},this._chunkLoaded=function(){4===r.readyState&&(r.status<200||400<=r.status?this._chunkError():(this._start+=this._config.chunkSize?this._config.chunkSize:r.responseText.length,this._finished=!this._config.chunkSize||this._start>=function(e){var t=e.getResponseHeader(\"Content-Range\");if(null===t)return-1;return parseInt(t.substring(t.lastIndexOf(\"/\")+1))}(r),this.parseChunk(r.responseText)))},this._chunkError=function(e){var t=r.statusText||e;this._sendError(new Error(t))}}function c(e){var r,n;(e=e||{}).chunkSize||(e.chunkSize=b.LocalChunkSize),u.call(this,e);var s=\"undefined\"!=typeof FileReader;this.stream=function(e){this._input=e,n=e.slice||e.webkitSlice||e.mozSlice,s?((r=new FileReader).onload=y(this._chunkLoaded,this),r.onerror=y(this._chunkError,this)):r=new FileReaderSync,this._nextChunk()},this._nextChunk=function(){this._finished||this._config.preview&&!(this._rowCount=this._input.size,this.parseChunk(e.target.result)},this._chunkError=function(){this._sendError(r.error)}}function p(e){var i;u.call(this,e=e||{}),this.stream=function(e){return i=e,this._nextChunk()},this._nextChunk=function(){if(!this._finished){var e,t=this._config.chunkSize;return t?(e=i.substring(0,t),i=i.substring(t)):(e=i,i=\"\"),this._finished=!i,this.parseChunk(e)}}}function g(e){u.call(this,e=e||{});var t=[],i=!0,r=!1;this.pause=function(){u.prototype.pause.apply(this,arguments),this._input.pause()},this.resume=function(){u.prototype.resume.apply(this,arguments),this._input.resume()},this.stream=function(e){this._input=e,this._input.on(\"data\",this._streamData),this._input.on(\"end\",this._streamEnd),this._input.on(\"error\",this._streamError)},this._checkIsFinished=function(){r&&1===t.length&&(this._finished=!0)},this._nextChunk=function(){this._checkIsFinished(),t.length?this.parseChunk(t.shift()):i=!0},this._streamData=y(function(e){try{t.push(\"string\"==typeof e?e:e.toString(this._config.encoding)),i&&(i=!1,this._checkIsFinished(),this.parseChunk(t.shift()))}catch(e){this._streamError(e)}},this),this._streamError=y(function(e){this._streamCleanUp(),this._sendError(e)},this),this._streamEnd=y(function(){this._streamCleanUp(),r=!0,this._streamData(\"\")},this),this._streamCleanUp=y(function(){this._input.removeListener(\"data\",this._streamData),this._input.removeListener(\"end\",this._streamEnd),this._input.removeListener(\"error\",this._streamError)},this)}function i(_){var a,o,h,r=Math.pow(2,53),n=-r,s=/^\\s*-?(\\d+\\.?|\\.\\d+|\\d+\\.\\d+)(e[-+]?\\d+)?\\s*$/,u=/(\\d{4}-[01]\\d-[0-3]\\dT[0-2]\\d:[0-5]\\d:[0-5]\\d\\.\\d+([+-][0-2]\\d:[0-5]\\d|Z))|(\\d{4}-[01]\\d-[0-3]\\dT[0-2]\\d:[0-5]\\d:[0-5]\\d([+-][0-2]\\d:[0-5]\\d|Z))|(\\d{4}-[01]\\d-[0-3]\\dT[0-2]\\d:[0-5]\\d([+-][0-2]\\d:[0-5]\\d|Z))/,t=this,i=0,f=0,d=!1,e=!1,l=[],c={data:[],errors:[],meta:{}};if(U(_.step)){var p=_.step;_.step=function(e){if(c=e,m())g();else{if(g(),0===c.data.length)return;i+=e.data.length,_.preview&&i>_.preview?o.abort():(c.data=c.data[0],p(c,t))}}}function v(e){return\"greedy\"===_.skipEmptyLines?\"\"===e.join(\"\").trim():1===e.length&&0===e[0].length}function g(){if(c&&h&&(k(\"Delimiter\",\"UndetectableDelimiter\",\"Unable to auto-detect delimiting character; defaulted to '\"+b.DefaultDelimiter+\"'\"),h=!1),_.skipEmptyLines)for(var e=0;e=l.length?\"__parsed_extra\":l[i]),_.transform&&(s=_.transform(s,n)),s=y(n,s),\"__parsed_extra\"===n?(r[n]=r[n]||[],r[n].push(s)):r[n]=s}return _.header&&(i>l.length?k(\"FieldMismatch\",\"TooManyFields\",\"Too many fields: expected \"+l.length+\" fields but parsed \"+i,f+t):i=r.length/2?\"\\r\\n\":\"\\r\"}(e,r)),h=!1,_.delimiter)U(_.delimiter)&&(_.delimiter=_.delimiter(e),c.meta.delimiter=_.delimiter);else{var n=function(e,t,i,r,n){var s,a,o,h;n=n||[\",\",\"\\t\",\"|\",\";\",b.RECORD_SEP,b.UNIT_SEP];for(var u=0;u=L)return R(!0)}else for(_=M,M++;;){if(-1===(_=a.indexOf(O,_+1)))return i||u.push({type:\"Quotes\",code:\"MissingQuotes\",message:\"Quoted field unterminated\",row:h.length,index:M}),E();if(_===r-1)return E(a.substring(M,_).replace(m,O));if(O!==z||a[_+1]!==z){if(O===z||0===_||a[_-1]!==z){-1!==p&&p<_+1&&(p=a.indexOf(D,_+1)),-1!==g&&g<_+1&&(g=a.indexOf(I,_+1));var y=w(-1===g?p:Math.min(p,g));if(a[_+1+y]===D){f.push(a.substring(M,_).replace(m,O)),a[M=_+1+y+e]!==O&&(_=a.indexOf(O,M)),p=a.indexOf(D,M),g=a.indexOf(I,M);break}var k=w(g);if(a.substring(_+1+k,_+1+k+n)===I){if(f.push(a.substring(M,_).replace(m,O)),C(_+1+k+n),p=a.indexOf(D,M),_=a.indexOf(O,M),o&&(S(),j))return R();if(L&&h.length>=L)return R(!0);break}u.push({type:\"Quotes\",code:\"InvalidQuotes\",message:\"Trailing quote on quoted field is malformed\",row:h.length,index:M}),_++}}else _++}return E();function b(e){h.push(e),d=M}function w(e){var t=0;if(-1!==e){var i=a.substring(_+1,e);i&&\"\"===i.trim()&&(t=i.length)}return t}function E(e){return i||(void 0===e&&(e=a.substring(M)),f.push(e),M=r,b(f),o&&S()),R()}function C(e){M=e,b(f),f=[],g=a.indexOf(I,M)}function R(e){return{data:h,errors:u,meta:{delimiter:D,linebreak:I,aborted:j,truncated:!!e,cursor:d+(t||0)}}}function S(){A(R()),h=[],u=[]}function x(e,t,i){var r={nextDelim:void 0,quoteSearch:void 0},n=a.indexOf(O,t+1);if(t([\\\\d\\\\D]*?)<\\\\/script>[\\\\d\\\\D]*', 'i');\n inlineScriptSource = pageSource.replace(inlineScriptSourceRegExp, '$1').trim();\n }\n \n for (var i = 0; i < scripts.length; i++) {\n // If ready state is interactive, return the script tag\n if (scripts[i].readyState === 'interactive') {\n return scripts[i];\n }\n \n // If src matches, return the script tag\n if (scripts[i].src === scriptLocation) {\n return scripts[i];\n }\n \n // If inline source matches, return the script tag\n if (\n scriptLocation === currentLocation &&\n scripts[i].innerHTML &&\n scripts[i].innerHTML.trim() === inlineScriptSource\n ) {\n return scripts[i];\n }\n }\n \n // If no match, return null\n return null;\n }\n };\n\n return getCurrentScript\n}));\n\n\n/***/ }),\n\n/***/ \"88bc\":\n/***/ (function(module, exports, __webpack_require__) {\n\n/* WEBPACK VAR INJECTION */(function(global) {/**\n * lodash (Custom Build) \n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors \n * Released under MIT license \n * Based on Underscore.js 1.8.3 \n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0,\n MAX_SAFE_INTEGER = 9007199254740991;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n symbolTag = '[object Symbol]';\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/**\n * A faster alternative to `Function#apply`, this function invokes `func`\n * with the `this` binding of `thisArg` and the arguments of `args`.\n *\n * @private\n * @param {Function} func The function to invoke.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} args The arguments to invoke `func` with.\n * @returns {*} Returns the result of `func`.\n */\nfunction apply(func, thisArg, args) {\n switch (args.length) {\n case 0: return func.call(thisArg);\n case 1: return func.call(thisArg, args[0]);\n case 2: return func.call(thisArg, args[0], args[1]);\n case 3: return func.call(thisArg, args[0], args[1], args[2]);\n }\n return func.apply(thisArg, args);\n}\n\n/**\n * A specialized version of `_.map` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction arrayMap(array, iteratee) {\n var index = -1,\n length = array ? array.length : 0,\n result = Array(length);\n\n while (++index < length) {\n result[index] = iteratee(array[index], index, array);\n }\n return result;\n}\n\n/**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\nfunction arrayPush(array, values) {\n var index = -1,\n length = values.length,\n offset = array.length;\n\n while (++index < length) {\n array[offset + index] = values[index];\n }\n return array;\n}\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar Symbol = root.Symbol,\n propertyIsEnumerable = objectProto.propertyIsEnumerable,\n spreadableSymbol = Symbol ? Symbol.isConcatSpreadable : undefined;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max;\n\n/**\n * The base implementation of `_.flatten` with support for restricting flattening.\n *\n * @private\n * @param {Array} array The array to flatten.\n * @param {number} depth The maximum recursion depth.\n * @param {boolean} [predicate=isFlattenable] The function invoked per iteration.\n * @param {boolean} [isStrict] Restrict to values that pass `predicate` checks.\n * @param {Array} [result=[]] The initial result value.\n * @returns {Array} Returns the new flattened array.\n */\nfunction baseFlatten(array, depth, predicate, isStrict, result) {\n var index = -1,\n length = array.length;\n\n predicate || (predicate = isFlattenable);\n result || (result = []);\n\n while (++index < length) {\n var value = array[index];\n if (depth > 0 && predicate(value)) {\n if (depth > 1) {\n // Recursively flatten arrays (susceptible to call stack limits).\n baseFlatten(value, depth - 1, predicate, isStrict, result);\n } else {\n arrayPush(result, value);\n }\n } else if (!isStrict) {\n result[result.length] = value;\n }\n }\n return result;\n}\n\n/**\n * The base implementation of `_.pick` without support for individual\n * property identifiers.\n *\n * @private\n * @param {Object} object The source object.\n * @param {string[]} props The property identifiers to pick.\n * @returns {Object} Returns the new object.\n */\nfunction basePick(object, props) {\n object = Object(object);\n return basePickBy(object, props, function(value, key) {\n return key in object;\n });\n}\n\n/**\n * The base implementation of `_.pickBy` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The source object.\n * @param {string[]} props The property identifiers to pick from.\n * @param {Function} predicate The function invoked per property.\n * @returns {Object} Returns the new object.\n */\nfunction basePickBy(object, props, predicate) {\n var index = -1,\n length = props.length,\n result = {};\n\n while (++index < length) {\n var key = props[index],\n value = object[key];\n\n if (predicate(value, key)) {\n result[key] = value;\n }\n }\n return result;\n}\n\n/**\n * The base implementation of `_.rest` which doesn't validate or coerce arguments.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n */\nfunction baseRest(func, start) {\n start = nativeMax(start === undefined ? (func.length - 1) : start, 0);\n return function() {\n var args = arguments,\n index = -1,\n length = nativeMax(args.length - start, 0),\n array = Array(length);\n\n while (++index < length) {\n array[index] = args[start + index];\n }\n index = -1;\n var otherArgs = Array(start + 1);\n while (++index < start) {\n otherArgs[index] = args[index];\n }\n otherArgs[start] = array;\n return apply(func, this, otherArgs);\n };\n}\n\n/**\n * Checks if `value` is a flattenable `arguments` object or array.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is flattenable, else `false`.\n */\nfunction isFlattenable(value) {\n return isArray(value) || isArguments(value) ||\n !!(spreadableSymbol && value && value[spreadableSymbol]);\n}\n\n/**\n * Converts `value` to a string key if it's not a string or symbol.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {string|symbol} Returns the key.\n */\nfunction toKey(value) {\n if (typeof value == 'string' || isSymbol(value)) {\n return value;\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nfunction isArguments(value) {\n // Safari 8.1 makes `arguments.callee` enumerable in strict mode.\n return isArrayLikeObject(value) && hasOwnProperty.call(value, 'callee') &&\n (!propertyIsEnumerable.call(value, 'callee') || objectToString.call(value) == argsTag);\n}\n\n/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n\n/**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object,\n * else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\nfunction isArrayLikeObject(value) {\n return isObjectLike(value) && isArrayLike(value);\n}\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 8-9 which returns 'object' for typed array and other constructors.\n var tag = isObject(value) ? objectToString.call(value) : '';\n return tag == funcTag || tag == genTag;\n}\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return !!value && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return !!value && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && objectToString.call(value) == symbolTag);\n}\n\n/**\n * Creates an object composed of the picked `object` properties.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The source object.\n * @param {...(string|string[])} [props] The property identifiers to pick.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.pick(object, ['a', 'c']);\n * // => { 'a': 1, 'c': 3 }\n */\nvar pick = baseRest(function(object, props) {\n return object == null ? {} : basePick(object, arrayMap(baseFlatten(props, 1), toKey));\n});\n\nmodule.exports = pick;\n\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(\"c8ba\")))\n\n/***/ }),\n\n/***/ \"ab17\":\n/***/ (function(module, exports, __webpack_require__) {\n\n/* WEBPACK VAR INJECTION */(function(global, module) {/**\n * lodash (Custom Build) \n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors \n * Released under MIT license \n * Based on Underscore.js 1.8.3 \n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/** Used as the `TypeError` message for \"Functions\" methods. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used to compose bitmasks for comparison styles. */\nvar UNORDERED_COMPARE_FLAG = 1,\n PARTIAL_COMPARE_FLAG = 2;\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0,\n MAX_SAFE_INTEGER = 9007199254740991;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n objectTag = '[object Object]',\n promiseTag = '[object Promise]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/** Used to match property names within property paths. */\nvar reIsDeepProp = /\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,\n reIsPlainProp = /^\\w*$/,\n reLeadingDot = /^\\./,\n rePropName = /[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g;\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to match backslashes in property paths. */\nvar reEscapeChar = /\\\\(\\\\)?/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/** Used to identify `toStringTag` values of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\ntypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\ntypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\ntypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\ntypedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] =\ntypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\ntypedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\ntypedArrayTags[errorTag] = typedArrayTags[funcTag] =\ntypedArrayTags[mapTag] = typedArrayTags[numberTag] =\ntypedArrayTags[objectTag] = typedArrayTags[regexpTag] =\ntypedArrayTags[setTag] = typedArrayTags[stringTag] =\ntypedArrayTags[weakMapTag] = false;\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/** Detect free variable `exports`. */\nvar freeExports = true && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Detect free variable `process` from Node.js. */\nvar freeProcess = moduleExports && freeGlobal.process;\n\n/** Used to access faster Node.js helpers. */\nvar nodeUtil = (function() {\n try {\n return freeProcess && freeProcess.binding('util');\n } catch (e) {}\n}());\n\n/* Node.js helper references. */\nvar nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n/**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\nfunction arrayPush(array, values) {\n var index = -1,\n length = values.length,\n offset = array.length;\n\n while (++index < length) {\n array[offset + index] = values[index];\n }\n return array;\n}\n\n/**\n * A specialized version of `_.some` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\nfunction arraySome(array, predicate) {\n var index = -1,\n length = array ? array.length : 0;\n\n while (++index < length) {\n if (predicate(array[index], index, array)) {\n return true;\n }\n }\n return false;\n}\n\n/**\n * The base implementation of `_.property` without support for deep paths.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\nfunction baseProperty(key) {\n return function(object) {\n return object == null ? undefined : object[key];\n };\n}\n\n/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n}\n\n/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n return function(value) {\n return func(value);\n };\n}\n\n/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\n/**\n * Checks if `value` is a host object in IE < 9.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a host object, else `false`.\n */\nfunction isHostObject(value) {\n // Many host objects are `Object` objects that can coerce to strings\n // despite having improperly defined `toString` methods.\n var result = false;\n if (value != null && typeof value.toString != 'function') {\n try {\n result = !!(value + '');\n } catch (e) {}\n }\n return result;\n}\n\n/**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\nfunction mapToArray(map) {\n var index = -1,\n result = Array(map.size);\n\n map.forEach(function(value, key) {\n result[++index] = [key, value];\n });\n return result;\n}\n\n/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\n/**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\nfunction setToArray(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = value;\n });\n return result;\n}\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype,\n funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/** Built-in value references. */\nvar Symbol = root.Symbol,\n Uint8Array = root.Uint8Array,\n getPrototype = overArg(Object.getPrototypeOf, Object),\n propertyIsEnumerable = objectProto.propertyIsEnumerable,\n splice = arrayProto.splice;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols,\n nativeKeys = overArg(Object.keys, Object);\n\n/* Built-in method references that are verified to be native. */\nvar DataView = getNative(root, 'DataView'),\n Map = getNative(root, 'Map'),\n Promise = getNative(root, 'Promise'),\n Set = getNative(root, 'Set'),\n WeakMap = getNative(root, 'WeakMap'),\n nativeCreate = getNative(Object, 'create');\n\n/** Used to detect maps, sets, and weakmaps. */\nvar dataViewCtorString = toSource(DataView),\n mapCtorString = toSource(Map),\n promiseCtorString = toSource(Promise),\n setCtorString = toSource(Set),\n weakMapCtorString = toSource(WeakMap);\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined,\n symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n var index = -1,\n length = entries ? entries.length : 0;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n}\n\n/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n return this.has(key) && delete this.__data__[key];\n}\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? data[key] !== undefined : hasOwnProperty.call(data, key);\n}\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n var data = this.__data__;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n var index = -1,\n length = entries ? entries.length : 0;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n this.__data__ = [];\n}\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n return true;\n}\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n}\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n}\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n var index = -1,\n length = entries ? entries.length : 0;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n}\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n return getMapData(this, key)['delete'](key);\n}\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n return getMapData(this, key).get(key);\n}\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n return getMapData(this, key).has(key);\n}\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n getMapData(this, key).set(key, value);\n return this;\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\n/**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\nfunction SetCache(values) {\n var index = -1,\n length = values ? values.length : 0;\n\n this.__data__ = new MapCache;\n while (++index < length) {\n this.add(values[index]);\n }\n}\n\n/**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\nfunction setCacheAdd(value) {\n this.__data__.set(value, HASH_UNDEFINED);\n return this;\n}\n\n/**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {number} Returns `true` if `value` is found, else `false`.\n */\nfunction setCacheHas(value) {\n return this.__data__.has(value);\n}\n\n// Add methods to `SetCache`.\nSetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\nSetCache.prototype.has = setCacheHas;\n\n/**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Stack(entries) {\n this.__data__ = new ListCache(entries);\n}\n\n/**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\nfunction stackClear() {\n this.__data__ = new ListCache;\n}\n\n/**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction stackDelete(key) {\n return this.__data__['delete'](key);\n}\n\n/**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction stackGet(key) {\n return this.__data__.get(key);\n}\n\n/**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction stackHas(key) {\n return this.__data__.has(key);\n}\n\n/**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\nfunction stackSet(key, value) {\n var cache = this.__data__;\n if (cache instanceof ListCache) {\n var pairs = cache.__data__;\n if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n pairs.push([key, value]);\n return this;\n }\n cache = this.__data__ = new MapCache(pairs);\n }\n cache.set(key, value);\n return this;\n}\n\n// Add methods to `Stack`.\nStack.prototype.clear = stackClear;\nStack.prototype['delete'] = stackDelete;\nStack.prototype.get = stackGet;\nStack.prototype.has = stackHas;\nStack.prototype.set = stackSet;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n // Safari 8.1 makes `arguments.callee` enumerable in strict mode.\n // Safari 9 makes `arguments.length` enumerable in strict mode.\n var result = (isArray(value) || isArguments(value))\n ? baseTimes(value.length, String)\n : [];\n\n var length = result.length,\n skipIndexes = !!length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (key == 'length' || isIndex(key, length)))) {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\n\n/**\n * The base implementation of `_.get` without support for default values.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @returns {*} Returns the resolved value.\n */\nfunction baseGet(object, path) {\n path = isKey(path, object) ? [path] : castPath(path);\n\n var index = 0,\n length = path.length;\n\n while (object != null && index < length) {\n object = object[toKey(path[index++])];\n }\n return (index && index == length) ? object : undefined;\n}\n\n/**\n * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @param {Function} symbolsFunc The function to get the symbols of `object`.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction baseGetAllKeys(object, keysFunc, symbolsFunc) {\n var result = keysFunc(object);\n return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n}\n\n/**\n * The base implementation of `getTag`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n return objectToString.call(value);\n}\n\n/**\n * The base implementation of `_.hasIn` without support for deep paths.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {Array|string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n */\nfunction baseHasIn(object, key) {\n return object != null && key in Object(object);\n}\n\n/**\n * The base implementation of `_.isEqual` which supports partial comparisons\n * and tracks traversed objects.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {boolean} [bitmask] The bitmask of comparison flags.\n * The bitmask may be composed of the following flags:\n * 1 - Unordered comparison\n * 2 - Partial comparison\n * @param {Object} [stack] Tracks traversed `value` and `other` objects.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n */\nfunction baseIsEqual(value, other, customizer, bitmask, stack) {\n if (value === other) {\n return true;\n }\n if (value == null || other == null || (!isObject(value) && !isObjectLike(other))) {\n return value !== value && other !== other;\n }\n return baseIsEqualDeep(value, other, baseIsEqual, customizer, bitmask, stack);\n}\n\n/**\n * A specialized version of `baseIsEqual` for arrays and objects which performs\n * deep comparisons and tracks traversed objects enabling objects with circular\n * references to be compared.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {number} [bitmask] The bitmask of comparison flags. See `baseIsEqual`\n * for more details.\n * @param {Object} [stack] Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction baseIsEqualDeep(object, other, equalFunc, customizer, bitmask, stack) {\n var objIsArr = isArray(object),\n othIsArr = isArray(other),\n objTag = arrayTag,\n othTag = arrayTag;\n\n if (!objIsArr) {\n objTag = getTag(object);\n objTag = objTag == argsTag ? objectTag : objTag;\n }\n if (!othIsArr) {\n othTag = getTag(other);\n othTag = othTag == argsTag ? objectTag : othTag;\n }\n var objIsObj = objTag == objectTag && !isHostObject(object),\n othIsObj = othTag == objectTag && !isHostObject(other),\n isSameTag = objTag == othTag;\n\n if (isSameTag && !objIsObj) {\n stack || (stack = new Stack);\n return (objIsArr || isTypedArray(object))\n ? equalArrays(object, other, equalFunc, customizer, bitmask, stack)\n : equalByTag(object, other, objTag, equalFunc, customizer, bitmask, stack);\n }\n if (!(bitmask & PARTIAL_COMPARE_FLAG)) {\n var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),\n othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');\n\n if (objIsWrapped || othIsWrapped) {\n var objUnwrapped = objIsWrapped ? object.value() : object,\n othUnwrapped = othIsWrapped ? other.value() : other;\n\n stack || (stack = new Stack);\n return equalFunc(objUnwrapped, othUnwrapped, customizer, bitmask, stack);\n }\n }\n if (!isSameTag) {\n return false;\n }\n stack || (stack = new Stack);\n return equalObjects(object, other, equalFunc, customizer, bitmask, stack);\n}\n\n/**\n * The base implementation of `_.isMatch` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @param {Array} matchData The property names, values, and compare flags to match.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n */\nfunction baseIsMatch(object, source, matchData, customizer) {\n var index = matchData.length,\n length = index,\n noCustomizer = !customizer;\n\n if (object == null) {\n return !length;\n }\n object = Object(object);\n while (index--) {\n var data = matchData[index];\n if ((noCustomizer && data[2])\n ? data[1] !== object[data[0]]\n : !(data[0] in object)\n ) {\n return false;\n }\n }\n while (++index < length) {\n data = matchData[index];\n var key = data[0],\n objValue = object[key],\n srcValue = data[1];\n\n if (noCustomizer && data[2]) {\n if (objValue === undefined && !(key in object)) {\n return false;\n }\n } else {\n var stack = new Stack;\n if (customizer) {\n var result = customizer(objValue, srcValue, key, object, source, stack);\n }\n if (!(result === undefined\n ? baseIsEqual(srcValue, objValue, customizer, UNORDERED_COMPARE_FLAG | PARTIAL_COMPARE_FLAG, stack)\n : result\n )) {\n return false;\n }\n }\n }\n return true;\n}\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\nfunction baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = (isFunction(value) || isHostObject(value)) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n}\n\n/**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\nfunction baseIsTypedArray(value) {\n return isObjectLike(value) &&\n isLength(value.length) && !!typedArrayTags[objectToString.call(value)];\n}\n\n/**\n * The base implementation of `_.iteratee`.\n *\n * @private\n * @param {*} [value=_.identity] The value to convert to an iteratee.\n * @returns {Function} Returns the iteratee.\n */\nfunction baseIteratee(value) {\n // Don't store the `typeof` result in a variable to avoid a JIT bug in Safari 9.\n // See https://bugs.webkit.org/show_bug.cgi?id=156034 for more details.\n if (typeof value == 'function') {\n return value;\n }\n if (value == null) {\n return identity;\n }\n if (typeof value == 'object') {\n return isArray(value)\n ? baseMatchesProperty(value[0], value[1])\n : baseMatches(value);\n }\n return property(value);\n}\n\n/**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeys(object) {\n if (!isPrototype(object)) {\n return nativeKeys(object);\n }\n var result = [];\n for (var key in Object(object)) {\n if (hasOwnProperty.call(object, key) && key != 'constructor') {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * The base implementation of `_.keysIn` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeysIn(object) {\n if (!isObject(object)) {\n return nativeKeysIn(object);\n }\n var isProto = isPrototype(object),\n result = [];\n\n for (var key in object) {\n if (!(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * The base implementation of `_.matches` which doesn't clone `source`.\n *\n * @private\n * @param {Object} source The object of property values to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction baseMatches(source) {\n var matchData = getMatchData(source);\n if (matchData.length == 1 && matchData[0][2]) {\n return matchesStrictComparable(matchData[0][0], matchData[0][1]);\n }\n return function(object) {\n return object === source || baseIsMatch(object, source, matchData);\n };\n}\n\n/**\n * The base implementation of `_.matchesProperty` which doesn't clone `srcValue`.\n *\n * @private\n * @param {string} path The path of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction baseMatchesProperty(path, srcValue) {\n if (isKey(path) && isStrictComparable(srcValue)) {\n return matchesStrictComparable(toKey(path), srcValue);\n }\n return function(object) {\n var objValue = get(object, path);\n return (objValue === undefined && objValue === srcValue)\n ? hasIn(object, path)\n : baseIsEqual(srcValue, objValue, undefined, UNORDERED_COMPARE_FLAG | PARTIAL_COMPARE_FLAG);\n };\n}\n\n/**\n * The base implementation of `_.pickBy` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The source object.\n * @param {string[]} props The property identifiers to pick from.\n * @param {Function} predicate The function invoked per property.\n * @returns {Object} Returns the new object.\n */\nfunction basePickBy(object, props, predicate) {\n var index = -1,\n length = props.length,\n result = {};\n\n while (++index < length) {\n var key = props[index],\n value = object[key];\n\n if (predicate(value, key)) {\n result[key] = value;\n }\n }\n return result;\n}\n\n/**\n * A specialized version of `baseProperty` which supports deep paths.\n *\n * @private\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\nfunction basePropertyDeep(path) {\n return function(object) {\n return baseGet(object, path);\n };\n}\n\n/**\n * The base implementation of `_.toString` which doesn't convert nullish\n * values to empty strings.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n */\nfunction baseToString(value) {\n // Exit early for strings to avoid a performance hit in some environments.\n if (typeof value == 'string') {\n return value;\n }\n if (isSymbol(value)) {\n return symbolToString ? symbolToString.call(value) : '';\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\n/**\n * Casts `value` to a path array if it's not one.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {Array} Returns the cast property path array.\n */\nfunction castPath(value) {\n return isArray(value) ? value : stringToPath(value);\n}\n\n/**\n * A specialized version of `baseIsEqualDeep` for arrays with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Array} array The array to compare.\n * @param {Array} other The other array to compare.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Function} customizer The function to customize comparisons.\n * @param {number} bitmask The bitmask of comparison flags. See `baseIsEqual`\n * for more details.\n * @param {Object} stack Tracks traversed `array` and `other` objects.\n * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.\n */\nfunction equalArrays(array, other, equalFunc, customizer, bitmask, stack) {\n var isPartial = bitmask & PARTIAL_COMPARE_FLAG,\n arrLength = array.length,\n othLength = other.length;\n\n if (arrLength != othLength && !(isPartial && othLength > arrLength)) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(array);\n if (stacked && stack.get(other)) {\n return stacked == other;\n }\n var index = -1,\n result = true,\n seen = (bitmask & UNORDERED_COMPARE_FLAG) ? new SetCache : undefined;\n\n stack.set(array, other);\n stack.set(other, array);\n\n // Ignore non-index properties.\n while (++index < arrLength) {\n var arrValue = array[index],\n othValue = other[index];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, arrValue, index, other, array, stack)\n : customizer(arrValue, othValue, index, array, other, stack);\n }\n if (compared !== undefined) {\n if (compared) {\n continue;\n }\n result = false;\n break;\n }\n // Recursively compare arrays (susceptible to call stack limits).\n if (seen) {\n if (!arraySome(other, function(othValue, othIndex) {\n if (!seen.has(othIndex) &&\n (arrValue === othValue || equalFunc(arrValue, othValue, customizer, bitmask, stack))) {\n return seen.add(othIndex);\n }\n })) {\n result = false;\n break;\n }\n } else if (!(\n arrValue === othValue ||\n equalFunc(arrValue, othValue, customizer, bitmask, stack)\n )) {\n result = false;\n break;\n }\n }\n stack['delete'](array);\n stack['delete'](other);\n return result;\n}\n\n/**\n * A specialized version of `baseIsEqualDeep` for comparing objects of\n * the same `toStringTag`.\n *\n * **Note:** This function only supports comparing values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {string} tag The `toStringTag` of the objects to compare.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Function} customizer The function to customize comparisons.\n * @param {number} bitmask The bitmask of comparison flags. See `baseIsEqual`\n * for more details.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalByTag(object, other, tag, equalFunc, customizer, bitmask, stack) {\n switch (tag) {\n case dataViewTag:\n if ((object.byteLength != other.byteLength) ||\n (object.byteOffset != other.byteOffset)) {\n return false;\n }\n object = object.buffer;\n other = other.buffer;\n\n case arrayBufferTag:\n if ((object.byteLength != other.byteLength) ||\n !equalFunc(new Uint8Array(object), new Uint8Array(other))) {\n return false;\n }\n return true;\n\n case boolTag:\n case dateTag:\n case numberTag:\n // Coerce booleans to `1` or `0` and dates to milliseconds.\n // Invalid dates are coerced to `NaN`.\n return eq(+object, +other);\n\n case errorTag:\n return object.name == other.name && object.message == other.message;\n\n case regexpTag:\n case stringTag:\n // Coerce regexes to strings and treat strings, primitives and objects,\n // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring\n // for more details.\n return object == (other + '');\n\n case mapTag:\n var convert = mapToArray;\n\n case setTag:\n var isPartial = bitmask & PARTIAL_COMPARE_FLAG;\n convert || (convert = setToArray);\n\n if (object.size != other.size && !isPartial) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked) {\n return stacked == other;\n }\n bitmask |= UNORDERED_COMPARE_FLAG;\n\n // Recursively compare objects (susceptible to call stack limits).\n stack.set(object, other);\n var result = equalArrays(convert(object), convert(other), equalFunc, customizer, bitmask, stack);\n stack['delete'](object);\n return result;\n\n case symbolTag:\n if (symbolValueOf) {\n return symbolValueOf.call(object) == symbolValueOf.call(other);\n }\n }\n return false;\n}\n\n/**\n * A specialized version of `baseIsEqualDeep` for objects with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Function} customizer The function to customize comparisons.\n * @param {number} bitmask The bitmask of comparison flags. See `baseIsEqual`\n * for more details.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalObjects(object, other, equalFunc, customizer, bitmask, stack) {\n var isPartial = bitmask & PARTIAL_COMPARE_FLAG,\n objProps = keys(object),\n objLength = objProps.length,\n othProps = keys(other),\n othLength = othProps.length;\n\n if (objLength != othLength && !isPartial) {\n return false;\n }\n var index = objLength;\n while (index--) {\n var key = objProps[index];\n if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {\n return false;\n }\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked && stack.get(other)) {\n return stacked == other;\n }\n var result = true;\n stack.set(object, other);\n stack.set(other, object);\n\n var skipCtor = isPartial;\n while (++index < objLength) {\n key = objProps[index];\n var objValue = object[key],\n othValue = other[key];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, objValue, key, other, object, stack)\n : customizer(objValue, othValue, key, object, other, stack);\n }\n // Recursively compare objects (susceptible to call stack limits).\n if (!(compared === undefined\n ? (objValue === othValue || equalFunc(objValue, othValue, customizer, bitmask, stack))\n : compared\n )) {\n result = false;\n break;\n }\n skipCtor || (skipCtor = key == 'constructor');\n }\n if (result && !skipCtor) {\n var objCtor = object.constructor,\n othCtor = other.constructor;\n\n // Non `Object` object instances with different constructors are not equal.\n if (objCtor != othCtor &&\n ('constructor' in object && 'constructor' in other) &&\n !(typeof objCtor == 'function' && objCtor instanceof objCtor &&\n typeof othCtor == 'function' && othCtor instanceof othCtor)) {\n result = false;\n }\n }\n stack['delete'](object);\n stack['delete'](other);\n return result;\n}\n\n/**\n * Creates an array of own and inherited enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeysIn(object) {\n return baseGetAllKeys(object, keysIn, getSymbolsIn);\n}\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n}\n\n/**\n * Gets the property names, values, and compare flags of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the match data of `object`.\n */\nfunction getMatchData(object) {\n var result = keys(object),\n length = result.length;\n\n while (length--) {\n var key = result[length],\n value = object[key];\n\n result[length] = [key, value, isStrictComparable(value)];\n }\n return result;\n}\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n}\n\n/**\n * Creates an array of the own enumerable symbol properties of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbols = nativeGetSymbols ? overArg(nativeGetSymbols, Object) : stubArray;\n\n/**\n * Creates an array of the own and inherited enumerable symbol properties\n * of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbolsIn = !nativeGetSymbols ? stubArray : function(object) {\n var result = [];\n while (object) {\n arrayPush(result, getSymbols(object));\n object = getPrototype(object);\n }\n return result;\n};\n\n/**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nvar getTag = baseGetTag;\n\n// Fallback for data views, maps, sets, and weak maps in IE 11,\n// for data views in Edge < 14, and promises in Node.js.\nif ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n (Map && getTag(new Map) != mapTag) ||\n (Promise && getTag(Promise.resolve()) != promiseTag) ||\n (Set && getTag(new Set) != setTag) ||\n (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n getTag = function(value) {\n var result = objectToString.call(value),\n Ctor = result == objectTag ? value.constructor : undefined,\n ctorString = Ctor ? toSource(Ctor) : undefined;\n\n if (ctorString) {\n switch (ctorString) {\n case dataViewCtorString: return dataViewTag;\n case mapCtorString: return mapTag;\n case promiseCtorString: return promiseTag;\n case setCtorString: return setTag;\n case weakMapCtorString: return weakMapTag;\n }\n }\n return result;\n };\n}\n\n/**\n * Checks if `path` exists on `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @param {Function} hasFunc The function to check properties.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n */\nfunction hasPath(object, path, hasFunc) {\n path = isKey(path, object) ? [path] : castPath(path);\n\n var result,\n index = -1,\n length = path.length;\n\n while (++index < length) {\n var key = toKey(path[index]);\n if (!(result = object != null && hasFunc(object, key))) {\n break;\n }\n object = object[key];\n }\n if (result) {\n return result;\n }\n var length = object ? object.length : 0;\n return !!length && isLength(length) && isIndex(key, length) &&\n (isArray(object) || isArguments(object));\n}\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n length = length == null ? MAX_SAFE_INTEGER : length;\n return !!length &&\n (typeof value == 'number' || reIsUint.test(value)) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\n/**\n * Checks if `value` is a property name and not a property path.\n *\n * @private\n * @param {*} value The value to check.\n * @param {Object} [object] The object to query keys on.\n * @returns {boolean} Returns `true` if `value` is a property name, else `false`.\n */\nfunction isKey(value, object) {\n if (isArray(value)) {\n return false;\n }\n var type = typeof value;\n if (type == 'number' || type == 'symbol' || type == 'boolean' ||\n value == null || isSymbol(value)) {\n return true;\n }\n return reIsPlainProp.test(value) || !reIsDeepProp.test(value) ||\n (object != null && value in Object(object));\n}\n\n/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n}\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n}\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n}\n\n/**\n * Checks if `value` is suitable for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` if suitable for strict\n * equality comparisons, else `false`.\n */\nfunction isStrictComparable(value) {\n return value === value && !isObject(value);\n}\n\n/**\n * A specialized version of `matchesProperty` for source values suitable\n * for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction matchesStrictComparable(key, srcValue) {\n return function(object) {\n if (object == null) {\n return false;\n }\n return object[key] === srcValue &&\n (srcValue !== undefined || (key in Object(object)));\n };\n}\n\n/**\n * This function is like\n * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * except that it includes inherited enumerable properties.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction nativeKeysIn(object) {\n var result = [];\n if (object != null) {\n for (var key in Object(object)) {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * Converts `string` to a property path array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the property path array.\n */\nvar stringToPath = memoize(function(string) {\n string = toString(string);\n\n var result = [];\n if (reLeadingDot.test(string)) {\n result.push('');\n }\n string.replace(rePropName, function(match, number, quote, string) {\n result.push(quote ? string.replace(reEscapeChar, '$1') : (number || match));\n });\n return result;\n});\n\n/**\n * Converts `value` to a string key if it's not a string or symbol.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {string|symbol} Returns the key.\n */\nfunction toKey(value) {\n if (typeof value == 'string' || isSymbol(value)) {\n return value;\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to process.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\n/**\n * Creates a function that memoizes the result of `func`. If `resolver` is\n * provided, it determines the cache key for storing the result based on the\n * arguments provided to the memoized function. By default, the first argument\n * provided to the memoized function is used as the map cache key. The `func`\n * is invoked with the `this` binding of the memoized function.\n *\n * **Note:** The cache is exposed as the `cache` property on the memoized\n * function. Its creation may be customized by replacing the `_.memoize.Cache`\n * constructor with one whose instances implement the\n * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)\n * method interface of `delete`, `get`, `has`, and `set`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to have its output memoized.\n * @param {Function} [resolver] The function to resolve the cache key.\n * @returns {Function} Returns the new memoized function.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n * var other = { 'c': 3, 'd': 4 };\n *\n * var values = _.memoize(_.values);\n * values(object);\n * // => [1, 2]\n *\n * values(other);\n * // => [3, 4]\n *\n * object.a = 2;\n * values(object);\n * // => [1, 2]\n *\n * // Modify the result cache.\n * values.cache.set(object, ['a', 'b']);\n * values(object);\n * // => ['a', 'b']\n *\n * // Replace `_.memoize.Cache`.\n * _.memoize.Cache = WeakMap;\n */\nfunction memoize(func, resolver) {\n if (typeof func != 'function' || (resolver && typeof resolver != 'function')) {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n var memoized = function() {\n var args = arguments,\n key = resolver ? resolver.apply(this, args) : args[0],\n cache = memoized.cache;\n\n if (cache.has(key)) {\n return cache.get(key);\n }\n var result = func.apply(this, args);\n memoized.cache = cache.set(key, result);\n return result;\n };\n memoized.cache = new (memoize.Cache || MapCache);\n return memoized;\n}\n\n// Assign cache to `_.memoize`.\nmemoize.Cache = MapCache;\n\n/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nfunction isArguments(value) {\n // Safari 8.1 makes `arguments.callee` enumerable in strict mode.\n return isArrayLikeObject(value) && hasOwnProperty.call(value, 'callee') &&\n (!propertyIsEnumerable.call(value, 'callee') || objectToString.call(value) == argsTag);\n}\n\n/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n\n/**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object,\n * else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\nfunction isArrayLikeObject(value) {\n return isObjectLike(value) && isArrayLike(value);\n}\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 8-9 which returns 'object' for typed array and other constructors.\n var tag = isObject(value) ? objectToString.call(value) : '';\n return tag == funcTag || tag == genTag;\n}\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return !!value && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return !!value && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && objectToString.call(value) == symbolTag);\n}\n\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\nvar isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\n/**\n * Converts `value` to a string. An empty string is returned for `null`\n * and `undefined` values. The sign of `-0` is preserved.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n * @example\n *\n * _.toString(null);\n * // => ''\n *\n * _.toString(-0);\n * // => '-0'\n *\n * _.toString([1, 2, 3]);\n * // => '1,2,3'\n */\nfunction toString(value) {\n return value == null ? '' : baseToString(value);\n}\n\n/**\n * Gets the value at `path` of `object`. If the resolved value is\n * `undefined`, the `defaultValue` is returned in its place.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.get(object, 'a[0].b.c');\n * // => 3\n *\n * _.get(object, ['a', '0', 'b', 'c']);\n * // => 3\n *\n * _.get(object, 'a.b.c', 'default');\n * // => 'default'\n */\nfunction get(object, path, defaultValue) {\n var result = object == null ? undefined : baseGet(object, path);\n return result === undefined ? defaultValue : result;\n}\n\n/**\n * Checks if `path` is a direct or inherited property of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n * @example\n *\n * var object = _.create({ 'a': _.create({ 'b': 2 }) });\n *\n * _.hasIn(object, 'a');\n * // => true\n *\n * _.hasIn(object, 'a.b');\n * // => true\n *\n * _.hasIn(object, ['a', 'b']);\n * // => true\n *\n * _.hasIn(object, 'b');\n * // => false\n */\nfunction hasIn(object, path) {\n return object != null && hasPath(object, path, baseHasIn);\n}\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nfunction keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n}\n\n/**\n * Creates an array of the own and inherited enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keysIn(new Foo);\n * // => ['a', 'b', 'c'] (iteration order is not guaranteed)\n */\nfunction keysIn(object) {\n return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object);\n}\n\n/**\n * Creates an object composed of the `object` properties `predicate` returns\n * truthy for. The predicate is invoked with two arguments: (value, key).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The source object.\n * @param {Function} [predicate=_.identity] The function invoked per property.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.pickBy(object, _.isNumber);\n * // => { 'a': 1, 'c': 3 }\n */\nfunction pickBy(object, predicate) {\n return object == null ? {} : basePickBy(object, getAllKeysIn(object), baseIteratee(predicate));\n}\n\n/**\n * This method returns the first argument it receives.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {*} value Any value.\n * @returns {*} Returns `value`.\n * @example\n *\n * var object = { 'a': 1 };\n *\n * console.log(_.identity(object) === object);\n * // => true\n */\nfunction identity(value) {\n return value;\n}\n\n/**\n * Creates a function that returns the value at `path` of a given object.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n * @example\n *\n * var objects = [\n * { 'a': { 'b': 2 } },\n * { 'a': { 'b': 1 } }\n * ];\n *\n * _.map(objects, _.property('a.b'));\n * // => [2, 1]\n *\n * _.map(_.sortBy(objects, _.property(['a', 'b'])), 'a.b');\n * // => [1, 2]\n */\nfunction property(path) {\n return isKey(path) ? baseProperty(toKey(path)) : basePropertyDeep(path);\n}\n\n/**\n * This method returns a new empty array.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {Array} Returns the new empty array.\n * @example\n *\n * var arrays = _.times(2, _.stubArray);\n *\n * console.log(arrays);\n * // => [[], []]\n *\n * console.log(arrays[0] === arrays[1]);\n * // => false\n */\nfunction stubArray() {\n return [];\n}\n\nmodule.exports = pickBy;\n\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(\"c8ba\"), __webpack_require__(\"62e4\")(module)))\n\n/***/ }),\n\n/***/ \"c8ba\":\n/***/ (function(module, exports) {\n\nvar g;\n\n// This works in non-strict mode\ng = (function() {\n\treturn this;\n})();\n\ntry {\n\t// This works if eval is allowed (see CSP)\n\tg = g || new Function(\"return this\")();\n} catch (e) {\n\t// This works if the window reference is available\n\tif (typeof window === \"object\") g = window;\n}\n\n// g can still be undefined, but nothing to do about it...\n// We return undefined, instead of nothing here, so it's\n// easier to handle this case. if(!global) { ...}\n\nmodule.exports = g;\n\n\n/***/ }),\n\n/***/ \"c9b4\":\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var _node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_JsonCSV_vue_vue_type_style_index_0_id_38979de7_scoped_true_lang_css___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(\"44bc\");\n/* harmony import */ var _node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_JsonCSV_vue_vue_type_style_index_0_id_38979de7_scoped_true_lang_css___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_JsonCSV_vue_vue_type_style_index_0_id_38979de7_scoped_true_lang_css___WEBPACK_IMPORTED_MODULE_0__);\n/* unused harmony reexport * */\n\n\n/***/ }),\n\n/***/ \"fb15\":\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n// ESM COMPAT FLAG\n__webpack_require__.r(__webpack_exports__);\n\n// EXPORTS\n__webpack_require__.d(__webpack_exports__, \"isType\", function() { return /* reexport */ isType; });\n\n// CONCATENATED MODULE: ./node_modules/@vue/cli-service/lib/commands/build/setPublicPath.js\n// This file is imported into lib/wc client bundles.\n\nif (typeof window !== 'undefined') {\n var currentScript = window.document.currentScript\n if (true) {\n var getCurrentScript = __webpack_require__(\"8875\")\n currentScript = getCurrentScript()\n\n // for backward compatibility, because previously we directly included the polyfill\n if (!('currentScript' in document)) {\n Object.defineProperty(document, 'currentScript', { get: getCurrentScript })\n }\n }\n\n var src = currentScript && currentScript.src.match(/(.+\\/)[^/]+\\.js(\\?.*)?$/)\n if (src) {\n __webpack_require__.p = src[1] // eslint-disable-line\n }\n}\n\n// Indicate to webpack that this file can be concatenated\n/* harmony default export */ var setPublicPath = (null);\n\n// CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"e6e63186-vue-loader-template\"}!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/JsonCSV.vue?vue&type=template&id=38979de7&scoped=true&\nvar render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{attrs:{\"id\":_vm.idName},on:{\"click\":_vm.generate}},[_vm._t(\"default\",[_vm._v(\"Download \"+_vm._s(_vm.name))])],2)}\nvar staticRenderFns = []\n\n\n// CONCATENATED MODULE: ./src/JsonCSV.vue?vue&type=template&id=38979de7&scoped=true&\n\n// EXTERNAL MODULE: ./node_modules/lodash.mapkeys/index.js\nvar lodash_mapkeys = __webpack_require__(\"27b5\");\nvar lodash_mapkeys_default = /*#__PURE__*/__webpack_require__.n(lodash_mapkeys);\n\n// EXTERNAL MODULE: ./node_modules/lodash.pickby/index.js\nvar lodash_pickby = __webpack_require__(\"ab17\");\nvar lodash_pickby_default = /*#__PURE__*/__webpack_require__.n(lodash_pickby);\n\n// EXTERNAL MODULE: ./node_modules/lodash.pick/index.js\nvar lodash_pick = __webpack_require__(\"88bc\");\nvar lodash_pick_default = /*#__PURE__*/__webpack_require__.n(lodash_pick);\n\n// EXTERNAL MODULE: ./node_modules/file-saver/dist/FileSaver.min.js\nvar FileSaver_min = __webpack_require__(\"21a6\");\n\n// EXTERNAL MODULE: ./node_modules/papaparse/papaparse.min.js\nvar papaparse_min = __webpack_require__(\"369b\");\n\n// CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/JsonCSV.vue?vue&type=script&lang=js&\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\n//\n//\n//\n//\n//\n//\n\n\n\n\n\nvar isType = function isType(value, type) {\n return _typeof(value) === type;\n};\n/* harmony default export */ var JsonCSVvue_type_script_lang_js_ = ({\n name: \"JsonCSV\",\n props: {\n /**\n * Json to download\n */\n data: {\n type: Array,\n required: true\n },\n\n /**\n * fields inside the Json Object that you want to export\n * if no given, all the properties in the Json are exported\n * Can either be an array or a function\n */\n fields: {\n required: false\n },\n\n /**\n * filename to export, default: data.csv\n */\n name: {\n type: String,\n default: \"data.csv\"\n },\n\n /**\n * Delimiter for the CSV file\n */\n delimiter: {\n type: String,\n default: \",\",\n required: false\n },\n\n /**\n * Should the module add SEP={delimiter}\n *\n * Useful for opening file with Excel\n */\n separatorExcel: {\n type: Boolean,\n default: false\n },\n\n /**\n * What will be the encoding of the file\n */\n encoding: {\n type: String,\n default: \"utf-8\"\n },\n\n /**\n * Advanced options for Papaparse that is used to export to CSV\n */\n advancedOptions: {\n type: Object,\n default: function _default() {}\n },\n\n /**\n * Labels for columns\n *\n * Object or function\n */\n labels: {\n required: false\n },\n\n /**\n * Used only for testing purposes\n */\n testing: {\n required: false,\n default: false\n }\n },\n computed: {\n // unique identifier\n idName: function idName() {\n var now = new Date().getTime();\n return \"export_\" + now;\n },\n exportableData: function exportableData() {\n var filteredData = this.cleaningData();\n\n if (!filteredData.length) {\n return null;\n }\n\n return filteredData;\n }\n },\n methods: {\n labelsFunctionGenerator: function labelsFunctionGenerator() {\n var _this = this;\n\n if (!isType(this.labels, \"undefined\") && !isType(this.labels, \"function\") && !isType(this.labels, \"object\")) {\n throw new Error(\"Labels needs to be a function(value,key) or object.\");\n }\n\n if (isType(this.labels, \"function\")) {\n return function (item) {\n var _mapKeys = lodash_mapkeys_default()(item, _this.labels);\n\n return _mapKeys;\n };\n }\n\n if (isType(this.labels, \"object\")) {\n return function (item) {\n return lodash_mapkeys_default()(item, function (item, key) {\n return _this.labels[key] || key;\n });\n };\n }\n\n return function (item) {\n return item;\n };\n },\n fieldsFunctionGenerator: function fieldsFunctionGenerator() {\n var _this2 = this;\n\n if (!isType(this.fields, \"undefined\") && !isType(this.fields, \"function\") && !isType(this.fields, \"object\") && !Array.isArray(this.fields)) {\n throw new Error(\"Fields needs to be a function(value,key) or array.\");\n }\n\n if (isType(this.fields, \"function\") || isType(this.fields, \"object\") && !Array.isArray(this.fields)) {\n return function (item) {\n return lodash_pickby_default()(item, _this2.fields);\n };\n }\n\n if (Array.isArray(this.fields)) {\n return function (item) {\n return lodash_pick_default()(item, _this2.fields);\n };\n }\n\n return function (item) {\n return item;\n };\n },\n cleaningData: function cleaningData() {\n if (isType(this.fields, \"undefined\") && isType(this.labels, \"undefined\")) {\n return this.data;\n }\n\n var labels = this.labelsFunctionGenerator();\n var fields = this.fieldsFunctionGenerator();\n return this.data.map(function (item) {\n return labels(fields(item));\n });\n },\n generate: function generate() {\n this.$emit(\"export-started\");\n var dataExport = this.exportableData;\n\n if (!dataExport) {\n console.error(\"No data to export\");\n return;\n }\n\n var csv = Object(papaparse_min[\"unparse\"])(dataExport, Object.assign({\n delimiter: this.delimiter,\n encoding: this.encoding\n }, this.advancedOptions));\n\n if (this.separatorExcel) {\n csv = \"SEP=\" + this.delimiter + \"\\r\\n\" + csv;\n } //Add BOM when UTF-8\n\n\n if (this.encoding === \"utf-8\") {\n csv = \"\\uFEFF\" + csv;\n }\n\n this.$emit(\"export-finished\");\n\n if (!this.testing) {\n var blob = new Blob([csv], {\n type: \"application/csvcharset=\" + this.encoding\n });\n Object(FileSaver_min[\"saveAs\"])(blob, this.name);\n }\n }\n }\n});\n// CONCATENATED MODULE: ./src/JsonCSV.vue?vue&type=script&lang=js&\n /* harmony default export */ var src_JsonCSVvue_type_script_lang_js_ = (JsonCSVvue_type_script_lang_js_); \n// EXTERNAL MODULE: ./src/JsonCSV.vue?vue&type=style&index=0&id=38979de7&scoped=true&lang=css&\nvar JsonCSVvue_type_style_index_0_id_38979de7_scoped_true_lang_css_ = __webpack_require__(\"c9b4\");\n\n// CONCATENATED MODULE: ./node_modules/vue-loader/lib/runtime/componentNormalizer.js\n/* globals __VUE_SSR_CONTEXT__ */\n\n// IMPORTANT: Do NOT use ES2015 features in this file (except for modules).\n// This module is a runtime utility for cleaner component module output and will\n// be included in the final webpack user bundle.\n\nfunction normalizeComponent (\n scriptExports,\n render,\n staticRenderFns,\n functionalTemplate,\n injectStyles,\n scopeId,\n moduleIdentifier, /* server only */\n shadowMode /* vue-cli only */\n) {\n // Vue.extend constructor export interop\n var options = typeof scriptExports === 'function'\n ? scriptExports.options\n : scriptExports\n\n // render functions\n if (render) {\n options.render = render\n options.staticRenderFns = staticRenderFns\n options._compiled = true\n }\n\n // functional template\n if (functionalTemplate) {\n options.functional = true\n }\n\n // scopedId\n if (scopeId) {\n options._scopeId = 'data-v-' + scopeId\n }\n\n var hook\n if (moduleIdentifier) { // server build\n hook = function (context) {\n // 2.3 injection\n context =\n context || // cached call\n (this.$vnode && this.$vnode.ssrContext) || // stateful\n (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) // functional\n // 2.2 with runInNewContext: true\n if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {\n context = __VUE_SSR_CONTEXT__\n }\n // inject component styles\n if (injectStyles) {\n injectStyles.call(this, context)\n }\n // register component module identifier for async chunk inferrence\n if (context && context._registeredComponents) {\n context._registeredComponents.add(moduleIdentifier)\n }\n }\n // used by ssr in case component is cached and beforeCreate\n // never gets called\n options._ssrRegister = hook\n } else if (injectStyles) {\n hook = shadowMode\n ? function () {\n injectStyles.call(\n this,\n (options.functional ? this.parent : this).$root.$options.shadowRoot\n )\n }\n : injectStyles\n }\n\n if (hook) {\n if (options.functional) {\n // for template-only hot-reload because in that case the render fn doesn't\n // go through the normalizer\n options._injectStyles = hook\n // register for functional component in vue file\n var originalRender = options.render\n options.render = function renderWithStyleInjection (h, context) {\n hook.call(context)\n return originalRender(h, context)\n }\n } else {\n // inject component registration as beforeCreate hook\n var existing = options.beforeCreate\n options.beforeCreate = existing\n ? [].concat(existing, hook)\n : [hook]\n }\n }\n\n return {\n exports: scriptExports,\n options: options\n }\n}\n\n// CONCATENATED MODULE: ./src/JsonCSV.vue\n\n\n\n\n\n\n/* normalize component */\n\nvar component = normalizeComponent(\n src_JsonCSVvue_type_script_lang_js_,\n render,\n staticRenderFns,\n false,\n null,\n \"38979de7\",\n null\n \n)\n\n/* harmony default export */ var JsonCSV = (component.exports);\n// CONCATENATED MODULE: ./node_modules/@vue/cli-service/lib/commands/build/entry-lib.js\n\n\n/* harmony default export */ var entry_lib = __webpack_exports__[\"default\"] = (JsonCSV);\n\n\n\n/***/ })\n\n/******/ })[\"default\"];\n//# sourceMappingURL=vue-json-csv.common.js.map","'use strict';\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\n\nvar max = Math.max;\nvar min = Math.min;\n\n// Helper for a popular repeating case of the spec:\n// Let integer be ? ToInteger(index).\n// If integer < 0, let result be max((length + integer), 0); else let result be min(integer, length).\nmodule.exports = function (index, length) {\n var integer = toIntegerOrInfinity(index);\n return integer < 0 ? max(integer + length, 0) : min(integer, length);\n};\n","'use strict';\nvar globalThis = require('../internals/global-this');\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar defineBuiltIn = require('../internals/define-built-in');\nvar defineGlobalProperty = require('../internals/define-global-property');\nvar copyConstructorProperties = require('../internals/copy-constructor-properties');\nvar isForced = require('../internals/is-forced');\n\n/*\n options.target - name of the target object\n options.global - target is the global object\n options.stat - export as static methods of target\n options.proto - export as prototype methods of target\n options.real - real prototype method for the `pure` version\n options.forced - export even if the native feature is available\n options.bind - bind methods to the target, required for the `pure` version\n options.wrap - wrap constructors to preventing global pollution, required for the `pure` version\n options.unsafe - use the simple assignment of property instead of delete + defineProperty\n options.sham - add a flag to not completely full polyfills\n options.enumerable - export as enumerable property\n options.dontCallGetSet - prevent calling a getter on target\n options.name - the .name of the function if it does not match the key\n*/\nmodule.exports = function (options, source) {\n var TARGET = options.target;\n var GLOBAL = options.global;\n var STATIC = options.stat;\n var FORCED, target, key, targetProperty, sourceProperty, descriptor;\n if (GLOBAL) {\n target = globalThis;\n } else if (STATIC) {\n target = globalThis[TARGET] || defineGlobalProperty(TARGET, {});\n } else {\n target = globalThis[TARGET] && globalThis[TARGET].prototype;\n }\n if (target) for (key in source) {\n sourceProperty = source[key];\n if (options.dontCallGetSet) {\n descriptor = getOwnPropertyDescriptor(target, key);\n targetProperty = descriptor && descriptor.value;\n } else targetProperty = target[key];\n FORCED = isForced(GLOBAL ? key : TARGET + (STATIC ? '.' : '#') + key, options.forced);\n // contained in target\n if (!FORCED && targetProperty !== undefined) {\n if (typeof sourceProperty == typeof targetProperty) continue;\n copyConstructorProperties(sourceProperty, targetProperty);\n }\n // add a flag to not completely full polyfills\n if (options.sham || (targetProperty && targetProperty.sham)) {\n createNonEnumerableProperty(sourceProperty, 'sham', true);\n }\n defineBuiltIn(target, key, sourceProperty, options);\n }\n};\n","'use strict';\nvar internalObjectKeys = require('../internals/object-keys-internal');\nvar enumBugKeys = require('../internals/enum-bug-keys');\n\nvar hiddenKeys = enumBugKeys.concat('length', 'prototype');\n\n// `Object.getOwnPropertyNames` method\n// https://tc39.es/ecma262/#sec-object.getownpropertynames\n// eslint-disable-next-line es/no-object-getownpropertynames -- safe\nexports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {\n return internalObjectKeys(O, hiddenKeys);\n};\n","'use strict';\n\nvar utils = require('./utils');\nvar normalizeHeaderName = require('./helpers/normalizeHeaderName');\nvar enhanceError = require('./core/enhanceError');\n\nvar DEFAULT_CONTENT_TYPE = {\n 'Content-Type': 'application/x-www-form-urlencoded'\n};\n\nfunction setContentTypeIfUnset(headers, value) {\n if (!utils.isUndefined(headers) && utils.isUndefined(headers['Content-Type'])) {\n headers['Content-Type'] = value;\n }\n}\n\nfunction getDefaultAdapter() {\n var adapter;\n if (typeof XMLHttpRequest !== 'undefined') {\n // For browsers use XHR adapter\n adapter = require('./adapters/xhr');\n } else if (typeof process !== 'undefined' && Object.prototype.toString.call(process) === '[object process]') {\n // For node use HTTP adapter\n adapter = require('./adapters/http');\n }\n return adapter;\n}\n\nfunction stringifySafely(rawValue, parser, encoder) {\n if (utils.isString(rawValue)) {\n try {\n (parser || JSON.parse)(rawValue);\n return utils.trim(rawValue);\n } catch (e) {\n if (e.name !== 'SyntaxError') {\n throw e;\n }\n }\n }\n\n return (encoder || JSON.stringify)(rawValue);\n}\n\nvar defaults = {\n\n transitional: {\n silentJSONParsing: true,\n forcedJSONParsing: true,\n clarifyTimeoutError: false\n },\n\n adapter: getDefaultAdapter(),\n\n transformRequest: [function transformRequest(data, headers) {\n normalizeHeaderName(headers, 'Accept');\n normalizeHeaderName(headers, 'Content-Type');\n\n if (utils.isFormData(data) ||\n utils.isArrayBuffer(data) ||\n utils.isBuffer(data) ||\n utils.isStream(data) ||\n utils.isFile(data) ||\n utils.isBlob(data)\n ) {\n return data;\n }\n if (utils.isArrayBufferView(data)) {\n return data.buffer;\n }\n if (utils.isURLSearchParams(data)) {\n setContentTypeIfUnset(headers, 'application/x-www-form-urlencoded;charset=utf-8');\n return data.toString();\n }\n if (utils.isObject(data) || (headers && headers['Content-Type'] === 'application/json')) {\n setContentTypeIfUnset(headers, 'application/json');\n return stringifySafely(data);\n }\n return data;\n }],\n\n transformResponse: [function transformResponse(data) {\n var transitional = this.transitional || defaults.transitional;\n var silentJSONParsing = transitional && transitional.silentJSONParsing;\n var forcedJSONParsing = transitional && transitional.forcedJSONParsing;\n var strictJSONParsing = !silentJSONParsing && this.responseType === 'json';\n\n if (strictJSONParsing || (forcedJSONParsing && utils.isString(data) && data.length)) {\n try {\n return JSON.parse(data);\n } catch (e) {\n if (strictJSONParsing) {\n if (e.name === 'SyntaxError') {\n throw enhanceError(e, this, 'E_JSON_PARSE');\n }\n throw e;\n }\n }\n }\n\n return data;\n }],\n\n /**\n * A timeout in milliseconds to abort a request. If set to 0 (default) a\n * timeout is not created.\n */\n timeout: 0,\n\n xsrfCookieName: 'XSRF-TOKEN',\n xsrfHeaderName: 'X-XSRF-TOKEN',\n\n maxContentLength: -1,\n maxBodyLength: -1,\n\n validateStatus: function validateStatus(status) {\n return status >= 200 && status < 300;\n },\n\n headers: {\n common: {\n 'Accept': 'application/json, text/plain, */*'\n }\n }\n};\n\nutils.forEach(['delete', 'get', 'head'], function forEachMethodNoData(method) {\n defaults.headers[method] = {};\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n defaults.headers[method] = utils.merge(DEFAULT_CONTENT_TYPE);\n});\n\nmodule.exports = defaults;\n","\nexport const globalConfig = {}\nexport let globalConfigIsFrozen = false\n\nexport function freezeGlobalConfig () {\n globalConfigIsFrozen = true\n}\n","'use strict';\nvar $ = require('../internals/export');\nvar $transfer = require('../internals/array-buffer-transfer');\n\n// `ArrayBuffer.prototype.transfer` method\n// https://tc39.es/proposal-arraybuffer-transfer/#sec-arraybuffer.prototype.transfer\nif ($transfer) $({ target: 'ArrayBuffer', proto: true }, {\n transfer: function transfer() {\n return $transfer(this, arguments.length ? arguments[0] : undefined, true);\n }\n});\n","import { h, defineComponent, ref, computed, watch, onBeforeUnmount, nextTick, Transition, getCurrentInstance } from 'vue'\n\nimport useHistory from '../../composables/private/use-history.js'\nimport useTimeout from '../../composables/private/use-timeout.js'\nimport useTick from '../../composables/private/use-tick.js'\nimport useModelToggle, { useModelToggleProps, useModelToggleEmits } from '../../composables/private/use-model-toggle.js'\nimport { useTransitionProps } from '../../composables/private/use-transition.js'\nimport usePortal from '../../composables/private/use-portal.js'\nimport usePreventScroll from '../../composables/private/use-prevent-scroll.js'\n\nimport { childHasFocus } from '../../utils/dom.js'\nimport { hSlot } from '../../utils/private/render.js'\nimport { addEscapeKey, removeEscapeKey } from '../../utils/private/escape-key.js'\nimport { addFocusout, removeFocusout } from '../../utils/private/focusout.js'\nimport { addFocusFn } from '../../utils/private/focus-manager.js'\n\nlet maximizedModals = 0\n\nconst positionClass = {\n standard: 'fixed-full flex-center',\n top: 'fixed-top justify-center',\n bottom: 'fixed-bottom justify-center',\n right: 'fixed-right items-center',\n left: 'fixed-left items-center'\n}\n\nconst transitions = {\n standard: [ 'scale', 'scale' ],\n top: [ 'slide-down', 'slide-up' ],\n bottom: [ 'slide-up', 'slide-down' ],\n right: [ 'slide-left', 'slide-right' ],\n left: [ 'slide-right', 'slide-left' ]\n}\n\nexport default defineComponent({\n name: 'QDialog',\n\n inheritAttrs: false,\n\n props: {\n ...useModelToggleProps,\n ...useTransitionProps,\n\n transitionShow: String,\n transitionHide: String,\n\n persistent: Boolean,\n autoClose: Boolean,\n\n noEscDismiss: Boolean,\n noBackdropDismiss: Boolean,\n noRouteDismiss: Boolean,\n noRefocus: Boolean,\n noFocus: Boolean,\n\n seamless: Boolean,\n\n maximized: Boolean,\n fullWidth: Boolean,\n fullHeight: Boolean,\n\n square: Boolean,\n\n position: {\n type: String,\n default: 'standard',\n validator: val => val === 'standard'\n || [ 'top', 'bottom', 'left', 'right' ].includes(val)\n }\n },\n\n emits: [\n ...useModelToggleEmits,\n 'shake', 'click', 'escape-key'\n ],\n\n setup (props, { slots, emit, attrs }) {\n const vm = getCurrentInstance()\n\n const innerRef = ref(null)\n const showing = ref(false)\n const transitionState = ref(false)\n const animating = ref(false)\n\n let shakeTimeout, refocusTarget = null, isMaximized, avoidAutoClose\n\n const hideOnRouteChange = computed(() =>\n props.persistent !== true\n && props.noRouteDismiss !== true\n && props.seamless !== true\n )\n\n const { preventBodyScroll } = usePreventScroll()\n const { registerTimeout, removeTimeout } = useTimeout()\n const { registerTick, removeTick, prepareTick } = useTick()\n\n const { showPortal, hidePortal, portalIsActive, renderPortal } = usePortal(\n vm, innerRef, renderPortalContent, /* pls do check if on a global dialog */ true\n )\n\n const { hide } = useModelToggle({\n showing,\n hideOnRouteChange,\n handleShow,\n handleHide,\n processOnMount: true\n })\n\n const { addToHistory, removeFromHistory } = useHistory(showing, hide, hideOnRouteChange)\n\n const classes = computed(() =>\n 'q-dialog__inner flex no-pointer-events'\n + ` q-dialog__inner--${ props.maximized === true ? 'maximized' : 'minimized' }`\n + ` q-dialog__inner--${ props.position } ${ positionClass[ props.position ] }`\n + (animating.value === true ? ' q-dialog__inner--animating' : '')\n + (props.fullWidth === true ? ' q-dialog__inner--fullwidth' : '')\n + (props.fullHeight === true ? ' q-dialog__inner--fullheight' : '')\n + (props.square === true ? ' q-dialog__inner--square' : '')\n )\n\n const transitionShow = computed(() =>\n 'q-transition--'\n + (props.transitionShow === void 0 ? transitions[ props.position ][ 0 ] : props.transitionShow)\n )\n\n const transitionHide = computed(() =>\n 'q-transition--'\n + (props.transitionHide === void 0 ? transitions[ props.position ][ 1 ] : props.transitionHide)\n )\n\n const transition = computed(() => (\n transitionState.value === true\n ? transitionHide.value\n : transitionShow.value\n ))\n\n const useBackdrop = computed(() => showing.value === true && props.seamless !== true)\n\n const onEvents = computed(() => (\n props.autoClose === true\n ? { onClick: onAutoClose }\n : {}\n ))\n\n const rootClasses = computed(() => [\n 'q-dialog fullscreen no-pointer-events '\n + `q-dialog--${ useBackdrop.value === true ? 'modal' : 'seamless' }`,\n attrs.class\n ])\n\n watch(showing, val => {\n nextTick(() => {\n transitionState.value = val\n })\n })\n\n watch(() => props.maximized, state => {\n showing.value === true && updateMaximized(state)\n })\n\n watch(useBackdrop, val => {\n preventBodyScroll(val)\n\n if (val === true) {\n addFocusout(onFocusChange)\n addEscapeKey(onEscapeKey)\n }\n else {\n removeFocusout(onFocusChange)\n removeEscapeKey(onEscapeKey)\n }\n })\n\n function handleShow (evt) {\n removeTimeout()\n removeTick()\n addToHistory()\n\n refocusTarget = props.noRefocus === false && document.activeElement !== null\n ? document.activeElement\n : null\n\n updateMaximized(props.maximized)\n showPortal()\n animating.value = true\n\n if (props.noFocus !== true) {\n document.activeElement !== null && document.activeElement.blur()\n registerTick(focus)\n prepareTick()\n }\n\n registerTimeout(() => {\n if (vm.proxy.$q.platform.is.ios === true) {\n if (props.seamless !== true && document.activeElement) {\n const\n { top, bottom } = document.activeElement.getBoundingClientRect(),\n { innerHeight } = window,\n height = window.visualViewport !== void 0\n ? window.visualViewport.height\n : innerHeight\n\n if (top > 0 && bottom > height / 2) {\n document.scrollingElement.scrollTop = Math.min(\n document.scrollingElement.scrollHeight - height,\n bottom >= innerHeight\n ? Infinity\n : Math.ceil(document.scrollingElement.scrollTop + bottom - height / 2)\n )\n }\n\n document.activeElement.scrollIntoView()\n }\n\n // required in order to avoid the \"double-tap needed\" issue\n avoidAutoClose = true\n innerRef.value.click()\n avoidAutoClose = false\n }\n\n showPortal(true) // done showing portal\n animating.value = false\n emit('show', evt)\n }, props.transitionDuration)\n }\n\n function handleHide (evt) {\n removeTimeout()\n removeTick()\n removeFromHistory()\n cleanup(true)\n animating.value = true\n\n if (refocusTarget !== null) {\n refocusTarget.focus()\n }\n\n registerTimeout(() => {\n hidePortal()\n animating.value = false\n emit('hide', evt)\n }, props.transitionDuration)\n }\n\n function focus () {\n addFocusFn(() => {\n let node = innerRef.value\n\n if (node === null || node.contains(document.activeElement) === true) {\n return\n }\n\n node = node.querySelector('[autofocus], [data-autofocus]') || node\n node.focus()\n })\n }\n\n function shake () {\n focus()\n emit('shake')\n\n const node = innerRef.value\n\n if (node !== null) {\n node.classList.remove('q-animate--scale')\n node.classList.add('q-animate--scale')\n clearTimeout(shakeTimeout)\n shakeTimeout = setTimeout(() => {\n if (innerRef.value !== null) {\n node.classList.remove('q-animate--scale')\n // some platforms (like desktop Chrome)\n // require calling focus() again\n focus()\n }\n }, 170)\n }\n }\n\n function onEscapeKey () {\n if (props.seamless !== true) {\n if (props.persistent === true || props.noEscDismiss === true) {\n props.maximized !== true && shake()\n }\n else {\n emit('escape-key')\n hide()\n }\n }\n }\n\n function cleanup (hiding) {\n clearTimeout(shakeTimeout)\n\n if (hiding === true || showing.value === true) {\n updateMaximized(false)\n\n if (props.seamless !== true) {\n preventBodyScroll(false)\n removeFocusout(onFocusChange)\n removeEscapeKey(onEscapeKey)\n }\n }\n }\n\n function updateMaximized (active) {\n if (active === true) {\n if (isMaximized !== true) {\n maximizedModals < 1 && document.body.classList.add('q-body--dialog')\n maximizedModals++\n\n isMaximized = true\n }\n }\n else if (isMaximized === true) {\n if (maximizedModals < 2) {\n document.body.classList.remove('q-body--dialog')\n }\n\n maximizedModals--\n isMaximized = false\n }\n }\n\n function onAutoClose (e) {\n if (avoidAutoClose !== true) {\n hide(e)\n emit('click', e)\n }\n }\n\n function onBackdropClick (e) {\n if (props.persistent !== true && props.noBackdropDismiss !== true) {\n hide(e)\n }\n else {\n shake()\n }\n }\n\n function onFocusChange (evt) {\n // the focus is not in a vue child component\n if (\n showing.value === true\n && portalIsActive.value === true\n && childHasFocus(innerRef.value, evt.target) !== true\n ) {\n focus()\n }\n }\n\n Object.assign(vm.proxy, {\n // expose public methods\n focus, shake,\n\n // private but needed by QSelect\n __updateRefocusTarget (target) {\n refocusTarget = target || null\n }\n })\n\n onBeforeUnmount(() => {\n cleanup()\n })\n\n function renderPortalContent () {\n return h('div', {\n ...attrs,\n class: rootClasses.value\n }, [\n h(Transition, {\n name: 'q-transition--fade',\n appear: true\n }, () => (\n useBackdrop.value === true\n ? h('div', {\n class: 'q-dialog__backdrop fixed-full',\n 'aria-hidden': 'true',\n onMousedown: onBackdropClick\n })\n : null\n )),\n\n h(\n Transition,\n { name: transition.value, appear: true },\n () => (\n showing.value === true\n ? h('div', {\n ref: innerRef,\n class: classes.value,\n tabindex: -1,\n ...onEvents.value\n }, hSlot(slots.default))\n : null\n )\n )\n ])\n }\n\n return renderPortal\n }\n})\n","export default {\n xs: 30,\n sm: 35,\n md: 40,\n lg: 50,\n xl: 60\n}\n","import e from \"@firebase/app\";\n\nimport { K as r, T as t, U as a, C as s, M as o, L as i, W as n, G as p, H as m, Z as c, e as f, t as u, s as b, i as l, o as g, c as h, j as d, E as v } from \"./prebuilt-2d830653-6eee25bb.js\";\n\nimport { Component as w } from \"@firebase/component\";\n\nimport \"tslib\";\n\nimport \"@firebase/util\";\n\nimport \"@firebase/logger\";\n\nimport \"@firebase/webchannel-wrapper\";\n\nvar C = {\n Firestore: r,\n GeoPoint: s,\n Timestamp: o,\n Blob: i,\n Transaction: n,\n WriteBatch: p,\n DocumentReference: m,\n DocumentSnapshot: c,\n Query: f,\n QueryDocumentSnapshot: u,\n QuerySnapshot: b,\n CollectionReference: l,\n FieldPath: g,\n FieldValue: h,\n setLogLevel: d,\n CACHE_SIZE_UNLIMITED: v\n};\n\n/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * Registers the main Firestore build with the components framework.\n * Persistence can be enabled via `firebase.firestore().enablePersistence()`.\n */\nfunction I(e) {\n !\n /**\n * Configures Firestore as part of the Firebase SDK by calling registerService.\n *\n * @param firebase - The FirebaseNamespace to register Firestore with\n * @param firestoreFactory - A factory function that returns a new Firestore\n * instance.\n */\n function(e, r) {\n e.INTERNAL.registerComponent(new w(\"firestore\", (function(e) {\n var t = e.getProvider(\"app\").getImmediate();\n return r(t, e.getProvider(\"auth-internal\"));\n }), \"PUBLIC\" /* PUBLIC */).setServiceProps(Object.assign({}, C)));\n }(e, (function(e, s) {\n return new r(e, new t(e, s), new a);\n })), e.registerVersion(\"@firebase/firestore\", \"2.4.1\");\n}\n\nI(e);\n\nexport { I as registerFirestore };\n//# sourceMappingURL=index.js.map\n","import { u as e, a as r, K as o } from \"./prebuilt-2d830653-6eee25bb.js\";\n\nimport \"tslib\";\n\nimport \"@firebase/util\";\n\nimport \"@firebase/logger\";\n\nimport \"@firebase/webchannel-wrapper\";\n\n/**\n * @license\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * Prototype patches bundle loading to Firestore.\n */ function t(o) {\n o.prototype.loadBundle = e, o.prototype.namedQuery = r;\n}\n\nt(o);\n\nexport { t as registerBundle };\n//# sourceMappingURL=bundle.js.map\n","import firebase from '@firebase/app';\nimport { __extends, __awaiter, __generator } from 'tslib';\nimport { Component } from '@firebase/component';\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * Standard error codes for different ways a request can fail, as defined by:\r\n * https://github.com/googleapis/googleapis/blob/master/google/rpc/code.proto\r\n *\r\n * This map is used primarily to convert from a backend error code string to\r\n * a client SDK error code string, and make sure it's in the supported set.\r\n */\r\nvar errorCodeMap = {\r\n OK: 'ok',\r\n CANCELLED: 'cancelled',\r\n UNKNOWN: 'unknown',\r\n INVALID_ARGUMENT: 'invalid-argument',\r\n DEADLINE_EXCEEDED: 'deadline-exceeded',\r\n NOT_FOUND: 'not-found',\r\n ALREADY_EXISTS: 'already-exists',\r\n PERMISSION_DENIED: 'permission-denied',\r\n UNAUTHENTICATED: 'unauthenticated',\r\n RESOURCE_EXHAUSTED: 'resource-exhausted',\r\n FAILED_PRECONDITION: 'failed-precondition',\r\n ABORTED: 'aborted',\r\n OUT_OF_RANGE: 'out-of-range',\r\n UNIMPLEMENTED: 'unimplemented',\r\n INTERNAL: 'internal',\r\n UNAVAILABLE: 'unavailable',\r\n DATA_LOSS: 'data-loss'\r\n};\r\n/**\r\n * An explicit error that can be thrown from a handler to send an error to the\r\n * client that called the function.\r\n */\r\nvar HttpsErrorImpl = /** @class */ (function (_super) {\r\n __extends(HttpsErrorImpl, _super);\r\n function HttpsErrorImpl(code, message, details) {\r\n var _this = _super.call(this, message) || this;\r\n // This is a workaround for a bug in TypeScript when extending Error:\r\n // tslint:disable-next-line\r\n // https://github.com/Microsoft/TypeScript-wiki/blob/master/Breaking-Changes.md#extending-built-ins-like-error-array-and-map-may-no-longer-work\r\n Object.setPrototypeOf(_this, HttpsErrorImpl.prototype);\r\n _this.code = code;\r\n _this.details = details;\r\n return _this;\r\n }\r\n return HttpsErrorImpl;\r\n}(Error));\r\n/**\r\n * Takes an HTTP status code and returns the corresponding ErrorCode.\r\n * This is the standard HTTP status code -> error mapping defined in:\r\n * https://github.com/googleapis/googleapis/blob/master/google/rpc/code.proto\r\n *\r\n * @param status An HTTP status code.\r\n * @return The corresponding ErrorCode, or ErrorCode.UNKNOWN if none.\r\n */\r\nfunction codeForHTTPStatus(status) {\r\n // Make sure any successful status is OK.\r\n if (status >= 200 && status < 300) {\r\n return 'ok';\r\n }\r\n switch (status) {\r\n case 0:\r\n // This can happen if the server returns 500.\r\n return 'internal';\r\n case 400:\r\n return 'invalid-argument';\r\n case 401:\r\n return 'unauthenticated';\r\n case 403:\r\n return 'permission-denied';\r\n case 404:\r\n return 'not-found';\r\n case 409:\r\n return 'aborted';\r\n case 429:\r\n return 'resource-exhausted';\r\n case 499:\r\n return 'cancelled';\r\n case 500:\r\n return 'internal';\r\n case 501:\r\n return 'unimplemented';\r\n case 503:\r\n return 'unavailable';\r\n case 504:\r\n return 'deadline-exceeded';\r\n }\r\n return 'unknown';\r\n}\r\n/**\r\n * Takes an HTTP response and returns the corresponding Error, if any.\r\n */\r\nfunction _errorForResponse(status, bodyJSON, serializer) {\r\n var code = codeForHTTPStatus(status);\r\n // Start with reasonable defaults from the status code.\r\n var description = code;\r\n var details = undefined;\r\n // Then look through the body for explicit details.\r\n try {\r\n var errorJSON = bodyJSON && bodyJSON.error;\r\n if (errorJSON) {\r\n var status_1 = errorJSON.status;\r\n if (typeof status_1 === 'string') {\r\n if (!errorCodeMap[status_1]) {\r\n // They must've included an unknown error code in the body.\r\n return new HttpsErrorImpl('internal', 'internal');\r\n }\r\n code = errorCodeMap[status_1];\r\n // TODO(klimt): Add better default descriptions for error enums.\r\n // The default description needs to be updated for the new code.\r\n description = status_1;\r\n }\r\n var message = errorJSON.message;\r\n if (typeof message === 'string') {\r\n description = message;\r\n }\r\n details = errorJSON.details;\r\n if (details !== undefined) {\r\n details = serializer.decode(details);\r\n }\r\n }\r\n }\r\n catch (e) {\r\n // If we couldn't parse explicit error data, that's fine.\r\n }\r\n if (code === 'ok') {\r\n // Technically, there's an edge case where a developer could explicitly\r\n // return an error code of OK, and we will treat it as success, but that\r\n // seems reasonable.\r\n return null;\r\n }\r\n return new HttpsErrorImpl(code, description, details);\r\n}\n\n/**\r\n * Helper class to get metadata that should be included with a function call.\r\n */\r\nvar ContextProvider = /** @class */ (function () {\r\n function ContextProvider(authProvider, messagingProvider) {\r\n var _this = this;\r\n this.auth = null;\r\n this.messaging = null;\r\n this.auth = authProvider.getImmediate({ optional: true });\r\n this.messaging = messagingProvider.getImmediate({\r\n optional: true\r\n });\r\n if (!this.auth) {\r\n authProvider.get().then(function (auth) { return (_this.auth = auth); }, function () {\r\n /* get() never rejects */\r\n });\r\n }\r\n if (!this.messaging) {\r\n messagingProvider.get().then(function (messaging) { return (_this.messaging = messaging); }, function () {\r\n /* get() never rejects */\r\n });\r\n }\r\n }\r\n ContextProvider.prototype.getAuthToken = function () {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var token;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n if (!this.auth) {\r\n return [2 /*return*/, undefined];\r\n }\r\n _a.label = 1;\r\n case 1:\r\n _a.trys.push([1, 3, , 4]);\r\n return [4 /*yield*/, this.auth.getToken()];\r\n case 2:\r\n token = _a.sent();\r\n if (!token) {\r\n return [2 /*return*/, undefined];\r\n }\r\n return [2 /*return*/, token.accessToken];\r\n case 3:\r\n _a.sent();\r\n // If there's any error when trying to get the auth token, leave it off.\r\n return [2 /*return*/, undefined];\r\n case 4: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n ContextProvider.prototype.getInstanceIdToken = function () {\r\n return __awaiter(this, void 0, void 0, function () {\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n if (!this.messaging ||\r\n !('Notification' in self) ||\r\n Notification.permission !== 'granted') {\r\n return [2 /*return*/, undefined];\r\n }\r\n _a.label = 1;\r\n case 1:\r\n _a.trys.push([1, 3, , 4]);\r\n return [4 /*yield*/, this.messaging.getToken()];\r\n case 2: return [2 /*return*/, _a.sent()];\r\n case 3:\r\n _a.sent();\r\n // We don't warn on this, because it usually means messaging isn't set up.\r\n // console.warn('Failed to retrieve instance id token.', e);\r\n // If there's any error when trying to get the token, leave it off.\r\n return [2 /*return*/, undefined];\r\n case 4: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n ContextProvider.prototype.getContext = function () {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var authToken, instanceIdToken;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0: return [4 /*yield*/, this.getAuthToken()];\r\n case 1:\r\n authToken = _a.sent();\r\n return [4 /*yield*/, this.getInstanceIdToken()];\r\n case 2:\r\n instanceIdToken = _a.sent();\r\n return [2 /*return*/, { authToken: authToken, instanceIdToken: instanceIdToken }];\r\n }\r\n });\r\n });\r\n };\r\n return ContextProvider;\r\n}());\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nvar LONG_TYPE = 'type.googleapis.com/google.protobuf.Int64Value';\r\nvar UNSIGNED_LONG_TYPE = 'type.googleapis.com/google.protobuf.UInt64Value';\r\nfunction mapValues(\r\n// { [k: string]: unknown } is no longer a wildcard assignment target after typescript 3.5\r\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\r\no, f) {\r\n var result = {};\r\n for (var key in o) {\r\n if (o.hasOwnProperty(key)) {\r\n result[key] = f(o[key]);\r\n }\r\n }\r\n return result;\r\n}\r\nvar Serializer = /** @class */ (function () {\r\n function Serializer() {\r\n }\r\n // Takes data and encodes it in a JSON-friendly way, such that types such as\r\n // Date are preserved.\r\n Serializer.prototype.encode = function (data) {\r\n var _this = this;\r\n if (data == null) {\r\n return null;\r\n }\r\n if (data instanceof Number) {\r\n data = data.valueOf();\r\n }\r\n if (typeof data === 'number' && isFinite(data)) {\r\n // Any number in JS is safe to put directly in JSON and parse as a double\r\n // without any loss of precision.\r\n return data;\r\n }\r\n if (data === true || data === false) {\r\n return data;\r\n }\r\n if (Object.prototype.toString.call(data) === '[object String]') {\r\n return data;\r\n }\r\n if (data instanceof Date) {\r\n return data.toISOString();\r\n }\r\n if (Array.isArray(data)) {\r\n return data.map(function (x) { return _this.encode(x); });\r\n }\r\n if (typeof data === 'function' || typeof data === 'object') {\r\n return mapValues(data, function (x) { return _this.encode(x); });\r\n }\r\n // If we got this far, the data is not encodable.\r\n throw new Error('Data cannot be encoded in JSON: ' + data);\r\n };\r\n // Takes data that's been encoded in a JSON-friendly form and returns a form\r\n // with richer datatypes, such as Dates, etc.\r\n Serializer.prototype.decode = function (json) {\r\n var _this = this;\r\n if (json == null) {\r\n return json;\r\n }\r\n if (json['@type']) {\r\n switch (json['@type']) {\r\n case LONG_TYPE:\r\n // Fall through and handle this the same as unsigned.\r\n case UNSIGNED_LONG_TYPE: {\r\n // Technically, this could work return a valid number for malformed\r\n // data if there was a number followed by garbage. But it's just not\r\n // worth all the extra code to detect that case.\r\n var value = Number(json['value']);\r\n if (isNaN(value)) {\r\n throw new Error('Data cannot be decoded from JSON: ' + json);\r\n }\r\n return value;\r\n }\r\n default: {\r\n throw new Error('Data cannot be decoded from JSON: ' + json);\r\n }\r\n }\r\n }\r\n if (Array.isArray(json)) {\r\n return json.map(function (x) { return _this.decode(x); });\r\n }\r\n if (typeof json === 'function' || typeof json === 'object') {\r\n return mapValues(json, function (x) { return _this.decode(x); });\r\n }\r\n // Anything else is safe to return.\r\n return json;\r\n };\r\n return Serializer;\r\n}());\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * Returns a Promise that will be rejected after the given duration.\r\n * The error will be of type HttpsErrorImpl.\r\n *\r\n * @param millis Number of milliseconds to wait before rejecting.\r\n */\r\nfunction failAfter(millis) {\r\n var timer;\r\n var promise = new Promise(function (_, reject) {\r\n timer = setTimeout(function () {\r\n reject(new HttpsErrorImpl('deadline-exceeded', 'deadline-exceeded'));\r\n }, millis);\r\n });\r\n return {\r\n timer: timer,\r\n promise: promise\r\n };\r\n}\r\n/**\r\n * The main class for the Firebase Functions SDK.\r\n */\r\nvar Service = /** @class */ (function () {\r\n /**\r\n * Creates a new Functions service for the given app and (optional) region or custom domain.\r\n * @param app_ The FirebaseApp to use.\r\n * @param regionOrCustomDomain_ one of:\r\n * a) A region to call functions from, such as us-central1\r\n * b) A custom domain to use as a functions prefix, such as https://mydomain.com\r\n */\r\n function Service(app_, authProvider, messagingProvider, appCheckProvider, regionOrCustomDomain_, fetchImpl) {\r\n var _this = this;\r\n if (regionOrCustomDomain_ === void 0) { regionOrCustomDomain_ = 'us-central1'; }\r\n this.app_ = app_;\r\n this.appCheckProvider = appCheckProvider;\r\n this.fetchImpl = fetchImpl;\r\n this.serializer = new Serializer();\r\n this.emulatorOrigin = null;\r\n this.INTERNAL = {\r\n delete: function () {\r\n return Promise.resolve(_this.deleteService());\r\n }\r\n };\r\n this.contextProvider = new ContextProvider(authProvider, messagingProvider);\r\n // Cancels all ongoing requests when resolved.\r\n this.cancelAllRequests = new Promise(function (resolve) {\r\n _this.deleteService = function () {\r\n return resolve();\r\n };\r\n });\r\n // Resolve the region or custom domain overload by attempting to parse it.\r\n try {\r\n var url = new URL(regionOrCustomDomain_);\r\n this.customDomain = url.origin;\r\n this.region = 'us-central1';\r\n }\r\n catch (e) {\r\n this.customDomain = null;\r\n this.region = regionOrCustomDomain_;\r\n }\r\n }\r\n Object.defineProperty(Service.prototype, \"app\", {\r\n get: function () {\r\n return this.app_;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n /**\r\n * Returns the URL for a callable with the given name.\r\n * @param name The name of the callable.\r\n */\r\n Service.prototype._url = function (name) {\r\n var projectId = this.app_.options.projectId;\r\n if (this.emulatorOrigin !== null) {\r\n var origin_1 = this.emulatorOrigin;\r\n return origin_1 + \"/\" + projectId + \"/\" + this.region + \"/\" + name;\r\n }\r\n if (this.customDomain !== null) {\r\n return this.customDomain + \"/\" + name;\r\n }\r\n return \"https://\" + this.region + \"-\" + projectId + \".cloudfunctions.net/\" + name;\r\n };\r\n /**\r\n * Modify this instance to communicate with the Cloud Functions emulator.\r\n *\r\n * Note: this must be called before this instance has been used to do any operations.\r\n *\r\n * @param host The emulator host (ex: localhost)\r\n * @param port The emulator port (ex: 5001)\r\n */\r\n Service.prototype.useEmulator = function (host, port) {\r\n this.emulatorOrigin = \"http://\" + host + \":\" + port;\r\n };\r\n /**\r\n * Changes this instance to point to a Cloud Functions emulator running\r\n * locally. See https://firebase.google.com/docs/functions/local-emulator\r\n *\r\n * @deprecated Prefer the useEmulator(host, port) method.\r\n * @param origin The origin of the local emulator, such as\r\n * \"http://localhost:5005\".\r\n */\r\n Service.prototype.useFunctionsEmulator = function (origin) {\r\n this.emulatorOrigin = origin;\r\n };\r\n /**\r\n * Returns a reference to the callable https trigger with the given name.\r\n * @param name The name of the trigger.\r\n */\r\n Service.prototype.httpsCallable = function (name, options) {\r\n var _this = this;\r\n return function (data) {\r\n return _this.call(name, data, options || {});\r\n };\r\n };\r\n /**\r\n * Does an HTTP POST and returns the completed response.\r\n * @param url The url to post to.\r\n * @param body The JSON body of the post.\r\n * @param headers The HTTP headers to include in the request.\r\n * @return A Promise that will succeed when the request finishes.\r\n */\r\n Service.prototype.postJSON = function (url, body, headers) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var appCheckToken, response, json;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n headers['Content-Type'] = 'application/json';\r\n return [4 /*yield*/, this.getAppCheckToken()];\r\n case 1:\r\n appCheckToken = _a.sent();\r\n if (appCheckToken !== null) {\r\n headers['X-Firebase-AppCheck'] = appCheckToken;\r\n }\r\n _a.label = 2;\r\n case 2:\r\n _a.trys.push([2, 4, , 5]);\r\n return [4 /*yield*/, this.fetchImpl(url, {\r\n method: 'POST',\r\n body: JSON.stringify(body),\r\n headers: headers\r\n })];\r\n case 3:\r\n response = _a.sent();\r\n return [3 /*break*/, 5];\r\n case 4:\r\n _a.sent();\r\n // This could be an unhandled error on the backend, or it could be a\r\n // network error. There's no way to know, since an unhandled error on the\r\n // backend will fail to set the proper CORS header, and thus will be\r\n // treated as a network error by fetch.\r\n return [2 /*return*/, {\r\n status: 0,\r\n json: null\r\n }];\r\n case 5:\r\n json = null;\r\n _a.label = 6;\r\n case 6:\r\n _a.trys.push([6, 8, , 9]);\r\n return [4 /*yield*/, response.json()];\r\n case 7:\r\n json = _a.sent();\r\n return [3 /*break*/, 9];\r\n case 8:\r\n _a.sent();\r\n return [3 /*break*/, 9];\r\n case 9: return [2 /*return*/, {\r\n status: response.status,\r\n json: json\r\n }];\r\n }\r\n });\r\n });\r\n };\r\n Service.prototype.getAppCheckToken = function () {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var appCheck, result;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n appCheck = this.appCheckProvider.getImmediate({ optional: true });\r\n if (!appCheck) return [3 /*break*/, 2];\r\n return [4 /*yield*/, appCheck.getToken()];\r\n case 1:\r\n result = _a.sent();\r\n // If getToken() fails, it will still return a dummy token that also has\r\n // an error field containing the error message. We will send any token\r\n // provided here and show an error if/when it is rejected by the functions\r\n // endpoint.\r\n return [2 /*return*/, result.token];\r\n case 2: return [2 /*return*/, null];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Calls a callable function asynchronously and returns the result.\r\n * @param name The name of the callable trigger.\r\n * @param data The data to pass as params to the function.s\r\n */\r\n Service.prototype.call = function (name, data, options) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var url, body, headers, context, timeout, _a, timer, failAfterPromise, response, error, responseData, decodedData;\r\n return __generator(this, function (_b) {\r\n switch (_b.label) {\r\n case 0:\r\n url = this._url(name);\r\n // Encode any special types, such as dates, in the input data.\r\n data = this.serializer.encode(data);\r\n body = { data: data };\r\n headers = {};\r\n return [4 /*yield*/, this.contextProvider.getContext()];\r\n case 1:\r\n context = _b.sent();\r\n if (context.authToken) {\r\n headers['Authorization'] = 'Bearer ' + context.authToken;\r\n }\r\n if (context.instanceIdToken) {\r\n headers['Firebase-Instance-ID-Token'] = context.instanceIdToken;\r\n }\r\n timeout = options.timeout || 70000;\r\n _a = failAfter(timeout), timer = _a.timer, failAfterPromise = _a.promise;\r\n return [4 /*yield*/, Promise.race([\r\n clearTimeoutWrapper(timer, this.postJSON(url, body, headers)),\r\n failAfterPromise,\r\n clearTimeoutWrapper(timer, this.cancelAllRequests)\r\n ])];\r\n case 2:\r\n response = _b.sent();\r\n // If service was deleted, interrupted response throws an error.\r\n if (!response) {\r\n throw new HttpsErrorImpl('cancelled', 'Firebase Functions instance was deleted.');\r\n }\r\n error = _errorForResponse(response.status, response.json, this.serializer);\r\n if (error) {\r\n throw error;\r\n }\r\n if (!response.json) {\r\n throw new HttpsErrorImpl('internal', 'Response is not valid JSON object.');\r\n }\r\n responseData = response.json.data;\r\n // TODO(klimt): For right now, allow \"result\" instead of \"data\", for\r\n // backwards compatibility.\r\n if (typeof responseData === 'undefined') {\r\n responseData = response.json.result;\r\n }\r\n if (typeof responseData === 'undefined') {\r\n // Consider the response malformed.\r\n throw new HttpsErrorImpl('internal', 'Response is missing data field.');\r\n }\r\n decodedData = this.serializer.decode(responseData);\r\n return [2 /*return*/, { data: decodedData }];\r\n }\r\n });\r\n });\r\n };\r\n return Service;\r\n}());\r\nfunction clearTimeoutWrapper(timer, promise) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var result;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0: return [4 /*yield*/, promise];\r\n case 1:\r\n result = _a.sent();\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n clearTimeout(timer);\r\n return [2 /*return*/, result];\r\n }\r\n });\r\n });\r\n}\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * Type constant for Firebase Functions.\r\n */\r\nvar FUNCTIONS_TYPE = 'functions';\r\nfunction registerFunctions(instance, fetchImpl) {\r\n var namespaceExports = {\r\n // no-inline\r\n Functions: Service\r\n };\r\n function factory(container, _a) {\r\n var regionOrCustomDomain = _a.instanceIdentifier;\r\n // Dependencies\r\n var app = container.getProvider('app').getImmediate();\r\n var authProvider = container.getProvider('auth-internal');\r\n var appCheckProvider = container.getProvider('app-check-internal');\r\n var messagingProvider = container.getProvider('messaging');\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n return new Service(app, authProvider, messagingProvider, appCheckProvider, regionOrCustomDomain, fetchImpl);\r\n }\r\n instance.INTERNAL.registerComponent(new Component(FUNCTIONS_TYPE, factory, \"PUBLIC\" /* PUBLIC */)\r\n .setServiceProps(namespaceExports)\r\n .setMultipleInstances(true));\r\n}\n\nvar name = \"@firebase/functions\";\nvar version = \"0.6.16\";\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nregisterFunctions(firebase, fetch.bind(self));\r\nfirebase.registerVersion(name, version);\n//# sourceMappingURL=index.esm.js.map\n","import firebase from '@firebase/app';\nimport { Component } from '@firebase/component';\nimport { __awaiter, __generator, __spreadArray, __read, __values, __assign } from 'tslib';\nimport { ErrorFactory, FirebaseError } from '@firebase/util';\nimport { openDb } from 'idb';\n\nvar name = \"@firebase/installations\";\nvar version = \"0.4.32\";\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nvar PENDING_TIMEOUT_MS = 10000;\r\nvar PACKAGE_VERSION = \"w:\" + version;\r\nvar INTERNAL_AUTH_VERSION = 'FIS_v2';\r\nvar INSTALLATIONS_API_URL = 'https://firebaseinstallations.googleapis.com/v1';\r\nvar TOKEN_EXPIRATION_BUFFER = 60 * 60 * 1000; // One hour\r\nvar SERVICE = 'installations';\r\nvar SERVICE_NAME = 'Installations';\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nvar _a;\r\nvar ERROR_DESCRIPTION_MAP = (_a = {},\r\n _a[\"missing-app-config-values\" /* MISSING_APP_CONFIG_VALUES */] = 'Missing App configuration value: \"{$valueName}\"',\r\n _a[\"not-registered\" /* NOT_REGISTERED */] = 'Firebase Installation is not registered.',\r\n _a[\"installation-not-found\" /* INSTALLATION_NOT_FOUND */] = 'Firebase Installation not found.',\r\n _a[\"request-failed\" /* REQUEST_FAILED */] = '{$requestName} request failed with error \"{$serverCode} {$serverStatus}: {$serverMessage}\"',\r\n _a[\"app-offline\" /* APP_OFFLINE */] = 'Could not process request. Application offline.',\r\n _a[\"delete-pending-registration\" /* DELETE_PENDING_REGISTRATION */] = \"Can't delete installation while there is a pending registration request.\",\r\n _a);\r\nvar ERROR_FACTORY = new ErrorFactory(SERVICE, SERVICE_NAME, ERROR_DESCRIPTION_MAP);\r\n/** Returns true if error is a FirebaseError that is based on an error from the server. */\r\nfunction isServerError(error) {\r\n return (error instanceof FirebaseError &&\r\n error.code.includes(\"request-failed\" /* REQUEST_FAILED */));\r\n}\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nfunction getInstallationsEndpoint(_a) {\r\n var projectId = _a.projectId;\r\n return INSTALLATIONS_API_URL + \"/projects/\" + projectId + \"/installations\";\r\n}\r\nfunction extractAuthTokenInfoFromResponse(response) {\r\n return {\r\n token: response.token,\r\n requestStatus: 2 /* COMPLETED */,\r\n expiresIn: getExpiresInFromResponseExpiresIn(response.expiresIn),\r\n creationTime: Date.now()\r\n };\r\n}\r\nfunction getErrorFromResponse(requestName, response) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var responseJson, errorData;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0: return [4 /*yield*/, response.json()];\r\n case 1:\r\n responseJson = _a.sent();\r\n errorData = responseJson.error;\r\n return [2 /*return*/, ERROR_FACTORY.create(\"request-failed\" /* REQUEST_FAILED */, {\r\n requestName: requestName,\r\n serverCode: errorData.code,\r\n serverMessage: errorData.message,\r\n serverStatus: errorData.status\r\n })];\r\n }\r\n });\r\n });\r\n}\r\nfunction getHeaders(_a) {\r\n var apiKey = _a.apiKey;\r\n return new Headers({\r\n 'Content-Type': 'application/json',\r\n Accept: 'application/json',\r\n 'x-goog-api-key': apiKey\r\n });\r\n}\r\nfunction getHeadersWithAuth(appConfig, _a) {\r\n var refreshToken = _a.refreshToken;\r\n var headers = getHeaders(appConfig);\r\n headers.append('Authorization', getAuthorizationHeader(refreshToken));\r\n return headers;\r\n}\r\n/**\r\n * Calls the passed in fetch wrapper and returns the response.\r\n * If the returned response has a status of 5xx, re-runs the function once and\r\n * returns the response.\r\n */\r\nfunction retryIfServerError(fn) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var result;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0: return [4 /*yield*/, fn()];\r\n case 1:\r\n result = _a.sent();\r\n if (result.status >= 500 && result.status < 600) {\r\n // Internal Server Error. Retry request.\r\n return [2 /*return*/, fn()];\r\n }\r\n return [2 /*return*/, result];\r\n }\r\n });\r\n });\r\n}\r\nfunction getExpiresInFromResponseExpiresIn(responseExpiresIn) {\r\n // This works because the server will never respond with fractions of a second.\r\n return Number(responseExpiresIn.replace('s', '000'));\r\n}\r\nfunction getAuthorizationHeader(refreshToken) {\r\n return INTERNAL_AUTH_VERSION + \" \" + refreshToken;\r\n}\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nfunction createInstallationRequest(appConfig, _a) {\r\n var fid = _a.fid;\r\n return __awaiter(this, void 0, void 0, function () {\r\n var endpoint, headers, body, request, response, responseValue, registeredInstallationEntry;\r\n return __generator(this, function (_b) {\r\n switch (_b.label) {\r\n case 0:\r\n endpoint = getInstallationsEndpoint(appConfig);\r\n headers = getHeaders(appConfig);\r\n body = {\r\n fid: fid,\r\n authVersion: INTERNAL_AUTH_VERSION,\r\n appId: appConfig.appId,\r\n sdkVersion: PACKAGE_VERSION\r\n };\r\n request = {\r\n method: 'POST',\r\n headers: headers,\r\n body: JSON.stringify(body)\r\n };\r\n return [4 /*yield*/, retryIfServerError(function () { return fetch(endpoint, request); })];\r\n case 1:\r\n response = _b.sent();\r\n if (!response.ok) return [3 /*break*/, 3];\r\n return [4 /*yield*/, response.json()];\r\n case 2:\r\n responseValue = _b.sent();\r\n registeredInstallationEntry = {\r\n fid: responseValue.fid || fid,\r\n registrationStatus: 2 /* COMPLETED */,\r\n refreshToken: responseValue.refreshToken,\r\n authToken: extractAuthTokenInfoFromResponse(responseValue.authToken)\r\n };\r\n return [2 /*return*/, registeredInstallationEntry];\r\n case 3: return [4 /*yield*/, getErrorFromResponse('Create Installation', response)];\r\n case 4: throw _b.sent();\r\n }\r\n });\r\n });\r\n}\n\n/**\r\n * @license\r\n * Copyright 2020 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/** Returns a promise that resolves after given time passes. */\r\nfunction sleep(ms) {\r\n return new Promise(function (resolve) {\r\n setTimeout(resolve, ms);\r\n });\r\n}\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nfunction bufferToBase64UrlSafe(array) {\r\n var b64 = btoa(String.fromCharCode.apply(String, __spreadArray([], __read(array))));\r\n return b64.replace(/\\+/g, '-').replace(/\\//g, '_');\r\n}\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nvar VALID_FID_PATTERN = /^[cdef][\\w-]{21}$/;\r\nvar INVALID_FID = '';\r\n/**\r\n * Generates a new FID using random values from Web Crypto API.\r\n * Returns an empty string if FID generation fails for any reason.\r\n */\r\nfunction generateFid() {\r\n try {\r\n // A valid FID has exactly 22 base64 characters, which is 132 bits, or 16.5\r\n // bytes. our implementation generates a 17 byte array instead.\r\n var fidByteArray = new Uint8Array(17);\r\n var crypto_1 = self.crypto || self.msCrypto;\r\n crypto_1.getRandomValues(fidByteArray);\r\n // Replace the first 4 random bits with the constant FID header of 0b0111.\r\n fidByteArray[0] = 112 + (fidByteArray[0] % 16);\r\n var fid = encode(fidByteArray);\r\n return VALID_FID_PATTERN.test(fid) ? fid : INVALID_FID;\r\n }\r\n catch (_a) {\r\n // FID generation errored\r\n return INVALID_FID;\r\n }\r\n}\r\n/** Converts a FID Uint8Array to a base64 string representation. */\r\nfunction encode(fidByteArray) {\r\n var b64String = bufferToBase64UrlSafe(fidByteArray);\r\n // Remove the 23rd character that was added because of the extra 4 bits at the\r\n // end of our 17 byte array, and the '=' padding.\r\n return b64String.substr(0, 22);\r\n}\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/** Returns a string key that can be used to identify the app. */\r\nfunction getKey(appConfig) {\r\n return appConfig.appName + \"!\" + appConfig.appId;\r\n}\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nvar fidChangeCallbacks = new Map();\r\n/**\r\n * Calls the onIdChange callbacks with the new FID value, and broadcasts the\r\n * change to other tabs.\r\n */\r\nfunction fidChanged(appConfig, fid) {\r\n var key = getKey(appConfig);\r\n callFidChangeCallbacks(key, fid);\r\n broadcastFidChange(key, fid);\r\n}\r\nfunction addCallback(appConfig, callback) {\r\n // Open the broadcast channel if it's not already open,\r\n // to be able to listen to change events from other tabs.\r\n getBroadcastChannel();\r\n var key = getKey(appConfig);\r\n var callbackSet = fidChangeCallbacks.get(key);\r\n if (!callbackSet) {\r\n callbackSet = new Set();\r\n fidChangeCallbacks.set(key, callbackSet);\r\n }\r\n callbackSet.add(callback);\r\n}\r\nfunction removeCallback(appConfig, callback) {\r\n var key = getKey(appConfig);\r\n var callbackSet = fidChangeCallbacks.get(key);\r\n if (!callbackSet) {\r\n return;\r\n }\r\n callbackSet.delete(callback);\r\n if (callbackSet.size === 0) {\r\n fidChangeCallbacks.delete(key);\r\n }\r\n // Close broadcast channel if there are no more callbacks.\r\n closeBroadcastChannel();\r\n}\r\nfunction callFidChangeCallbacks(key, fid) {\r\n var e_1, _a;\r\n var callbacks = fidChangeCallbacks.get(key);\r\n if (!callbacks) {\r\n return;\r\n }\r\n try {\r\n for (var callbacks_1 = __values(callbacks), callbacks_1_1 = callbacks_1.next(); !callbacks_1_1.done; callbacks_1_1 = callbacks_1.next()) {\r\n var callback = callbacks_1_1.value;\r\n callback(fid);\r\n }\r\n }\r\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\r\n finally {\r\n try {\r\n if (callbacks_1_1 && !callbacks_1_1.done && (_a = callbacks_1.return)) _a.call(callbacks_1);\r\n }\r\n finally { if (e_1) throw e_1.error; }\r\n }\r\n}\r\nfunction broadcastFidChange(key, fid) {\r\n var channel = getBroadcastChannel();\r\n if (channel) {\r\n channel.postMessage({ key: key, fid: fid });\r\n }\r\n closeBroadcastChannel();\r\n}\r\nvar broadcastChannel = null;\r\n/** Opens and returns a BroadcastChannel if it is supported by the browser. */\r\nfunction getBroadcastChannel() {\r\n if (!broadcastChannel && 'BroadcastChannel' in self) {\r\n broadcastChannel = new BroadcastChannel('[Firebase] FID Change');\r\n broadcastChannel.onmessage = function (e) {\r\n callFidChangeCallbacks(e.data.key, e.data.fid);\r\n };\r\n }\r\n return broadcastChannel;\r\n}\r\nfunction closeBroadcastChannel() {\r\n if (fidChangeCallbacks.size === 0 && broadcastChannel) {\r\n broadcastChannel.close();\r\n broadcastChannel = null;\r\n }\r\n}\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nvar DATABASE_NAME = 'firebase-installations-database';\r\nvar DATABASE_VERSION = 1;\r\nvar OBJECT_STORE_NAME = 'firebase-installations-store';\r\nvar dbPromise = null;\r\nfunction getDbPromise() {\r\n if (!dbPromise) {\r\n dbPromise = openDb(DATABASE_NAME, DATABASE_VERSION, function (upgradeDB) {\r\n // We don't use 'break' in this switch statement, the fall-through\r\n // behavior is what we want, because if there are multiple versions between\r\n // the old version and the current version, we want ALL the migrations\r\n // that correspond to those versions to run, not only the last one.\r\n // eslint-disable-next-line default-case\r\n switch (upgradeDB.oldVersion) {\r\n case 0:\r\n upgradeDB.createObjectStore(OBJECT_STORE_NAME);\r\n }\r\n });\r\n }\r\n return dbPromise;\r\n}\r\n/** Assigns or overwrites the record for the given key with the given value. */\r\nfunction set(appConfig, value) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var key, db, tx, objectStore, oldValue;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n key = getKey(appConfig);\r\n return [4 /*yield*/, getDbPromise()];\r\n case 1:\r\n db = _a.sent();\r\n tx = db.transaction(OBJECT_STORE_NAME, 'readwrite');\r\n objectStore = tx.objectStore(OBJECT_STORE_NAME);\r\n return [4 /*yield*/, objectStore.get(key)];\r\n case 2:\r\n oldValue = _a.sent();\r\n return [4 /*yield*/, objectStore.put(value, key)];\r\n case 3:\r\n _a.sent();\r\n return [4 /*yield*/, tx.complete];\r\n case 4:\r\n _a.sent();\r\n if (!oldValue || oldValue.fid !== value.fid) {\r\n fidChanged(appConfig, value.fid);\r\n }\r\n return [2 /*return*/, value];\r\n }\r\n });\r\n });\r\n}\r\n/** Removes record(s) from the objectStore that match the given key. */\r\nfunction remove(appConfig) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var key, db, tx;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n key = getKey(appConfig);\r\n return [4 /*yield*/, getDbPromise()];\r\n case 1:\r\n db = _a.sent();\r\n tx = db.transaction(OBJECT_STORE_NAME, 'readwrite');\r\n return [4 /*yield*/, tx.objectStore(OBJECT_STORE_NAME).delete(key)];\r\n case 2:\r\n _a.sent();\r\n return [4 /*yield*/, tx.complete];\r\n case 3:\r\n _a.sent();\r\n return [2 /*return*/];\r\n }\r\n });\r\n });\r\n}\r\n/**\r\n * Atomically updates a record with the result of updateFn, which gets\r\n * called with the current value. If newValue is undefined, the record is\r\n * deleted instead.\r\n * @return Updated value\r\n */\r\nfunction update(appConfig, updateFn) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var key, db, tx, store, oldValue, newValue;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n key = getKey(appConfig);\r\n return [4 /*yield*/, getDbPromise()];\r\n case 1:\r\n db = _a.sent();\r\n tx = db.transaction(OBJECT_STORE_NAME, 'readwrite');\r\n store = tx.objectStore(OBJECT_STORE_NAME);\r\n return [4 /*yield*/, store.get(key)];\r\n case 2:\r\n oldValue = _a.sent();\r\n newValue = updateFn(oldValue);\r\n if (!(newValue === undefined)) return [3 /*break*/, 4];\r\n return [4 /*yield*/, store.delete(key)];\r\n case 3:\r\n _a.sent();\r\n return [3 /*break*/, 6];\r\n case 4: return [4 /*yield*/, store.put(newValue, key)];\r\n case 5:\r\n _a.sent();\r\n _a.label = 6;\r\n case 6: return [4 /*yield*/, tx.complete];\r\n case 7:\r\n _a.sent();\r\n if (newValue && (!oldValue || oldValue.fid !== newValue.fid)) {\r\n fidChanged(appConfig, newValue.fid);\r\n }\r\n return [2 /*return*/, newValue];\r\n }\r\n });\r\n });\r\n}\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * Updates and returns the InstallationEntry from the database.\r\n * Also triggers a registration request if it is necessary and possible.\r\n */\r\nfunction getInstallationEntry(appConfig) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var registrationPromise, installationEntry;\r\n var _a;\r\n return __generator(this, function (_b) {\r\n switch (_b.label) {\r\n case 0: return [4 /*yield*/, update(appConfig, function (oldEntry) {\r\n var installationEntry = updateOrCreateInstallationEntry(oldEntry);\r\n var entryWithPromise = triggerRegistrationIfNecessary(appConfig, installationEntry);\r\n registrationPromise = entryWithPromise.registrationPromise;\r\n return entryWithPromise.installationEntry;\r\n })];\r\n case 1:\r\n installationEntry = _b.sent();\r\n if (!(installationEntry.fid === INVALID_FID)) return [3 /*break*/, 3];\r\n _a = {};\r\n return [4 /*yield*/, registrationPromise];\r\n case 2: \r\n // FID generation failed. Waiting for the FID from the server.\r\n return [2 /*return*/, (_a.installationEntry = _b.sent(), _a)];\r\n case 3: return [2 /*return*/, {\r\n installationEntry: installationEntry,\r\n registrationPromise: registrationPromise\r\n }];\r\n }\r\n });\r\n });\r\n}\r\n/**\r\n * Creates a new Installation Entry if one does not exist.\r\n * Also clears timed out pending requests.\r\n */\r\nfunction updateOrCreateInstallationEntry(oldEntry) {\r\n var entry = oldEntry || {\r\n fid: generateFid(),\r\n registrationStatus: 0 /* NOT_STARTED */\r\n };\r\n return clearTimedOutRequest(entry);\r\n}\r\n/**\r\n * If the Firebase Installation is not registered yet, this will trigger the\r\n * registration and return an InProgressInstallationEntry.\r\n *\r\n * If registrationPromise does not exist, the installationEntry is guaranteed\r\n * to be registered.\r\n */\r\nfunction triggerRegistrationIfNecessary(appConfig, installationEntry) {\r\n if (installationEntry.registrationStatus === 0 /* NOT_STARTED */) {\r\n if (!navigator.onLine) {\r\n // Registration required but app is offline.\r\n var registrationPromiseWithError = Promise.reject(ERROR_FACTORY.create(\"app-offline\" /* APP_OFFLINE */));\r\n return {\r\n installationEntry: installationEntry,\r\n registrationPromise: registrationPromiseWithError\r\n };\r\n }\r\n // Try registering. Change status to IN_PROGRESS.\r\n var inProgressEntry = {\r\n fid: installationEntry.fid,\r\n registrationStatus: 1 /* IN_PROGRESS */,\r\n registrationTime: Date.now()\r\n };\r\n var registrationPromise = registerInstallation(appConfig, inProgressEntry);\r\n return { installationEntry: inProgressEntry, registrationPromise: registrationPromise };\r\n }\r\n else if (installationEntry.registrationStatus === 1 /* IN_PROGRESS */) {\r\n return {\r\n installationEntry: installationEntry,\r\n registrationPromise: waitUntilFidRegistration(appConfig)\r\n };\r\n }\r\n else {\r\n return { installationEntry: installationEntry };\r\n }\r\n}\r\n/** This will be executed only once for each new Firebase Installation. */\r\nfunction registerInstallation(appConfig, installationEntry) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var registeredInstallationEntry, e_1;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n _a.trys.push([0, 2, , 7]);\r\n return [4 /*yield*/, createInstallationRequest(appConfig, installationEntry)];\r\n case 1:\r\n registeredInstallationEntry = _a.sent();\r\n return [2 /*return*/, set(appConfig, registeredInstallationEntry)];\r\n case 2:\r\n e_1 = _a.sent();\r\n if (!(isServerError(e_1) && e_1.customData.serverCode === 409)) return [3 /*break*/, 4];\r\n // Server returned a \"FID can not be used\" error.\r\n // Generate a new ID next time.\r\n return [4 /*yield*/, remove(appConfig)];\r\n case 3:\r\n // Server returned a \"FID can not be used\" error.\r\n // Generate a new ID next time.\r\n _a.sent();\r\n return [3 /*break*/, 6];\r\n case 4: \r\n // Registration failed. Set FID as not registered.\r\n return [4 /*yield*/, set(appConfig, {\r\n fid: installationEntry.fid,\r\n registrationStatus: 0 /* NOT_STARTED */\r\n })];\r\n case 5:\r\n // Registration failed. Set FID as not registered.\r\n _a.sent();\r\n _a.label = 6;\r\n case 6: throw e_1;\r\n case 7: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n}\r\n/** Call if FID registration is pending in another request. */\r\nfunction waitUntilFidRegistration(appConfig) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var entry, _a, installationEntry, registrationPromise;\r\n return __generator(this, function (_b) {\r\n switch (_b.label) {\r\n case 0: return [4 /*yield*/, updateInstallationRequest(appConfig)];\r\n case 1:\r\n entry = _b.sent();\r\n _b.label = 2;\r\n case 2:\r\n if (!(entry.registrationStatus === 1 /* IN_PROGRESS */)) return [3 /*break*/, 5];\r\n // createInstallation request still in progress.\r\n return [4 /*yield*/, sleep(100)];\r\n case 3:\r\n // createInstallation request still in progress.\r\n _b.sent();\r\n return [4 /*yield*/, updateInstallationRequest(appConfig)];\r\n case 4:\r\n entry = _b.sent();\r\n return [3 /*break*/, 2];\r\n case 5:\r\n if (!(entry.registrationStatus === 0 /* NOT_STARTED */)) return [3 /*break*/, 7];\r\n return [4 /*yield*/, getInstallationEntry(appConfig)];\r\n case 6:\r\n _a = _b.sent(), installationEntry = _a.installationEntry, registrationPromise = _a.registrationPromise;\r\n if (registrationPromise) {\r\n return [2 /*return*/, registrationPromise];\r\n }\r\n else {\r\n // if there is no registrationPromise, entry is registered.\r\n return [2 /*return*/, installationEntry];\r\n }\r\n case 7: return [2 /*return*/, entry];\r\n }\r\n });\r\n });\r\n}\r\n/**\r\n * Called only if there is a CreateInstallation request in progress.\r\n *\r\n * Updates the InstallationEntry in the DB based on the status of the\r\n * CreateInstallation request.\r\n *\r\n * Returns the updated InstallationEntry.\r\n */\r\nfunction updateInstallationRequest(appConfig) {\r\n return update(appConfig, function (oldEntry) {\r\n if (!oldEntry) {\r\n throw ERROR_FACTORY.create(\"installation-not-found\" /* INSTALLATION_NOT_FOUND */);\r\n }\r\n return clearTimedOutRequest(oldEntry);\r\n });\r\n}\r\nfunction clearTimedOutRequest(entry) {\r\n if (hasInstallationRequestTimedOut(entry)) {\r\n return {\r\n fid: entry.fid,\r\n registrationStatus: 0 /* NOT_STARTED */\r\n };\r\n }\r\n return entry;\r\n}\r\nfunction hasInstallationRequestTimedOut(installationEntry) {\r\n return (installationEntry.registrationStatus === 1 /* IN_PROGRESS */ &&\r\n installationEntry.registrationTime + PENDING_TIMEOUT_MS < Date.now());\r\n}\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nfunction generateAuthTokenRequest(_a, installationEntry) {\r\n var appConfig = _a.appConfig, platformLoggerProvider = _a.platformLoggerProvider;\r\n return __awaiter(this, void 0, void 0, function () {\r\n var endpoint, headers, platformLogger, body, request, response, responseValue, completedAuthToken;\r\n return __generator(this, function (_b) {\r\n switch (_b.label) {\r\n case 0:\r\n endpoint = getGenerateAuthTokenEndpoint(appConfig, installationEntry);\r\n headers = getHeadersWithAuth(appConfig, installationEntry);\r\n platformLogger = platformLoggerProvider.getImmediate({\r\n optional: true\r\n });\r\n if (platformLogger) {\r\n headers.append('x-firebase-client', platformLogger.getPlatformInfoString());\r\n }\r\n body = {\r\n installation: {\r\n sdkVersion: PACKAGE_VERSION\r\n }\r\n };\r\n request = {\r\n method: 'POST',\r\n headers: headers,\r\n body: JSON.stringify(body)\r\n };\r\n return [4 /*yield*/, retryIfServerError(function () { return fetch(endpoint, request); })];\r\n case 1:\r\n response = _b.sent();\r\n if (!response.ok) return [3 /*break*/, 3];\r\n return [4 /*yield*/, response.json()];\r\n case 2:\r\n responseValue = _b.sent();\r\n completedAuthToken = extractAuthTokenInfoFromResponse(responseValue);\r\n return [2 /*return*/, completedAuthToken];\r\n case 3: return [4 /*yield*/, getErrorFromResponse('Generate Auth Token', response)];\r\n case 4: throw _b.sent();\r\n }\r\n });\r\n });\r\n}\r\nfunction getGenerateAuthTokenEndpoint(appConfig, _a) {\r\n var fid = _a.fid;\r\n return getInstallationsEndpoint(appConfig) + \"/\" + fid + \"/authTokens:generate\";\r\n}\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * Returns a valid authentication token for the installation. Generates a new\r\n * token if one doesn't exist, is expired or about to expire.\r\n *\r\n * Should only be called if the Firebase Installation is registered.\r\n */\r\nfunction refreshAuthToken(dependencies, forceRefresh) {\r\n if (forceRefresh === void 0) { forceRefresh = false; }\r\n return __awaiter(this, void 0, void 0, function () {\r\n var tokenPromise, entry, authToken, _a;\r\n return __generator(this, function (_b) {\r\n switch (_b.label) {\r\n case 0: return [4 /*yield*/, update(dependencies.appConfig, function (oldEntry) {\r\n if (!isEntryRegistered(oldEntry)) {\r\n throw ERROR_FACTORY.create(\"not-registered\" /* NOT_REGISTERED */);\r\n }\r\n var oldAuthToken = oldEntry.authToken;\r\n if (!forceRefresh && isAuthTokenValid(oldAuthToken)) {\r\n // There is a valid token in the DB.\r\n return oldEntry;\r\n }\r\n else if (oldAuthToken.requestStatus === 1 /* IN_PROGRESS */) {\r\n // There already is a token request in progress.\r\n tokenPromise = waitUntilAuthTokenRequest(dependencies, forceRefresh);\r\n return oldEntry;\r\n }\r\n else {\r\n // No token or token expired.\r\n if (!navigator.onLine) {\r\n throw ERROR_FACTORY.create(\"app-offline\" /* APP_OFFLINE */);\r\n }\r\n var inProgressEntry = makeAuthTokenRequestInProgressEntry(oldEntry);\r\n tokenPromise = fetchAuthTokenFromServer(dependencies, inProgressEntry);\r\n return inProgressEntry;\r\n }\r\n })];\r\n case 1:\r\n entry = _b.sent();\r\n if (!tokenPromise) return [3 /*break*/, 3];\r\n return [4 /*yield*/, tokenPromise];\r\n case 2:\r\n _a = _b.sent();\r\n return [3 /*break*/, 4];\r\n case 3:\r\n _a = entry.authToken;\r\n _b.label = 4;\r\n case 4:\r\n authToken = _a;\r\n return [2 /*return*/, authToken];\r\n }\r\n });\r\n });\r\n}\r\n/**\r\n * Call only if FID is registered and Auth Token request is in progress.\r\n *\r\n * Waits until the current pending request finishes. If the request times out,\r\n * tries once in this thread as well.\r\n */\r\nfunction waitUntilAuthTokenRequest(dependencies, forceRefresh) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var entry, authToken;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0: return [4 /*yield*/, updateAuthTokenRequest(dependencies.appConfig)];\r\n case 1:\r\n entry = _a.sent();\r\n _a.label = 2;\r\n case 2:\r\n if (!(entry.authToken.requestStatus === 1 /* IN_PROGRESS */)) return [3 /*break*/, 5];\r\n // generateAuthToken still in progress.\r\n return [4 /*yield*/, sleep(100)];\r\n case 3:\r\n // generateAuthToken still in progress.\r\n _a.sent();\r\n return [4 /*yield*/, updateAuthTokenRequest(dependencies.appConfig)];\r\n case 4:\r\n entry = _a.sent();\r\n return [3 /*break*/, 2];\r\n case 5:\r\n authToken = entry.authToken;\r\n if (authToken.requestStatus === 0 /* NOT_STARTED */) {\r\n // The request timed out or failed in a different call. Try again.\r\n return [2 /*return*/, refreshAuthToken(dependencies, forceRefresh)];\r\n }\r\n else {\r\n return [2 /*return*/, authToken];\r\n }\r\n }\r\n });\r\n });\r\n}\r\n/**\r\n * Called only if there is a GenerateAuthToken request in progress.\r\n *\r\n * Updates the InstallationEntry in the DB based on the status of the\r\n * GenerateAuthToken request.\r\n *\r\n * Returns the updated InstallationEntry.\r\n */\r\nfunction updateAuthTokenRequest(appConfig) {\r\n return update(appConfig, function (oldEntry) {\r\n if (!isEntryRegistered(oldEntry)) {\r\n throw ERROR_FACTORY.create(\"not-registered\" /* NOT_REGISTERED */);\r\n }\r\n var oldAuthToken = oldEntry.authToken;\r\n if (hasAuthTokenRequestTimedOut(oldAuthToken)) {\r\n return __assign(__assign({}, oldEntry), { authToken: { requestStatus: 0 /* NOT_STARTED */ } });\r\n }\r\n return oldEntry;\r\n });\r\n}\r\nfunction fetchAuthTokenFromServer(dependencies, installationEntry) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var authToken, updatedInstallationEntry, e_1, updatedInstallationEntry;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n _a.trys.push([0, 3, , 8]);\r\n return [4 /*yield*/, generateAuthTokenRequest(dependencies, installationEntry)];\r\n case 1:\r\n authToken = _a.sent();\r\n updatedInstallationEntry = __assign(__assign({}, installationEntry), { authToken: authToken });\r\n return [4 /*yield*/, set(dependencies.appConfig, updatedInstallationEntry)];\r\n case 2:\r\n _a.sent();\r\n return [2 /*return*/, authToken];\r\n case 3:\r\n e_1 = _a.sent();\r\n if (!(isServerError(e_1) &&\r\n (e_1.customData.serverCode === 401 || e_1.customData.serverCode === 404))) return [3 /*break*/, 5];\r\n // Server returned a \"FID not found\" or a \"Invalid authentication\" error.\r\n // Generate a new ID next time.\r\n return [4 /*yield*/, remove(dependencies.appConfig)];\r\n case 4:\r\n // Server returned a \"FID not found\" or a \"Invalid authentication\" error.\r\n // Generate a new ID next time.\r\n _a.sent();\r\n return [3 /*break*/, 7];\r\n case 5:\r\n updatedInstallationEntry = __assign(__assign({}, installationEntry), { authToken: { requestStatus: 0 /* NOT_STARTED */ } });\r\n return [4 /*yield*/, set(dependencies.appConfig, updatedInstallationEntry)];\r\n case 6:\r\n _a.sent();\r\n _a.label = 7;\r\n case 7: throw e_1;\r\n case 8: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n}\r\nfunction isEntryRegistered(installationEntry) {\r\n return (installationEntry !== undefined &&\r\n installationEntry.registrationStatus === 2 /* COMPLETED */);\r\n}\r\nfunction isAuthTokenValid(authToken) {\r\n return (authToken.requestStatus === 2 /* COMPLETED */ &&\r\n !isAuthTokenExpired(authToken));\r\n}\r\nfunction isAuthTokenExpired(authToken) {\r\n var now = Date.now();\r\n return (now < authToken.creationTime ||\r\n authToken.creationTime + authToken.expiresIn < now + TOKEN_EXPIRATION_BUFFER);\r\n}\r\n/** Returns an updated InstallationEntry with an InProgressAuthToken. */\r\nfunction makeAuthTokenRequestInProgressEntry(oldEntry) {\r\n var inProgressAuthToken = {\r\n requestStatus: 1 /* IN_PROGRESS */,\r\n requestTime: Date.now()\r\n };\r\n return __assign(__assign({}, oldEntry), { authToken: inProgressAuthToken });\r\n}\r\nfunction hasAuthTokenRequestTimedOut(authToken) {\r\n return (authToken.requestStatus === 1 /* IN_PROGRESS */ &&\r\n authToken.requestTime + PENDING_TIMEOUT_MS < Date.now());\r\n}\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nfunction getId(dependencies) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var _a, installationEntry, registrationPromise;\r\n return __generator(this, function (_b) {\r\n switch (_b.label) {\r\n case 0: return [4 /*yield*/, getInstallationEntry(dependencies.appConfig)];\r\n case 1:\r\n _a = _b.sent(), installationEntry = _a.installationEntry, registrationPromise = _a.registrationPromise;\r\n if (registrationPromise) {\r\n registrationPromise.catch(console.error);\r\n }\r\n else {\r\n // If the installation is already registered, update the authentication\r\n // token if needed.\r\n refreshAuthToken(dependencies).catch(console.error);\r\n }\r\n return [2 /*return*/, installationEntry.fid];\r\n }\r\n });\r\n });\r\n}\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nfunction getToken(dependencies, forceRefresh) {\r\n if (forceRefresh === void 0) { forceRefresh = false; }\r\n return __awaiter(this, void 0, void 0, function () {\r\n var authToken;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0: return [4 /*yield*/, completeInstallationRegistration(dependencies.appConfig)];\r\n case 1:\r\n _a.sent();\r\n return [4 /*yield*/, refreshAuthToken(dependencies, forceRefresh)];\r\n case 2:\r\n authToken = _a.sent();\r\n return [2 /*return*/, authToken.token];\r\n }\r\n });\r\n });\r\n}\r\nfunction completeInstallationRegistration(appConfig) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var registrationPromise;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0: return [4 /*yield*/, getInstallationEntry(appConfig)];\r\n case 1:\r\n registrationPromise = (_a.sent()).registrationPromise;\r\n if (!registrationPromise) return [3 /*break*/, 3];\r\n // A createInstallation request is in progress. Wait until it finishes.\r\n return [4 /*yield*/, registrationPromise];\r\n case 2:\r\n // A createInstallation request is in progress. Wait until it finishes.\r\n _a.sent();\r\n _a.label = 3;\r\n case 3: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n}\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nfunction deleteInstallationRequest(appConfig, installationEntry) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var endpoint, headers, request, response;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n endpoint = getDeleteEndpoint(appConfig, installationEntry);\r\n headers = getHeadersWithAuth(appConfig, installationEntry);\r\n request = {\r\n method: 'DELETE',\r\n headers: headers\r\n };\r\n return [4 /*yield*/, retryIfServerError(function () { return fetch(endpoint, request); })];\r\n case 1:\r\n response = _a.sent();\r\n if (!!response.ok) return [3 /*break*/, 3];\r\n return [4 /*yield*/, getErrorFromResponse('Delete Installation', response)];\r\n case 2: throw _a.sent();\r\n case 3: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n}\r\nfunction getDeleteEndpoint(appConfig, _a) {\r\n var fid = _a.fid;\r\n return getInstallationsEndpoint(appConfig) + \"/\" + fid;\r\n}\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nfunction deleteInstallation(dependencies) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var appConfig, entry;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n appConfig = dependencies.appConfig;\r\n return [4 /*yield*/, update(appConfig, function (oldEntry) {\r\n if (oldEntry && oldEntry.registrationStatus === 0 /* NOT_STARTED */) {\r\n // Delete the unregistered entry without sending a deleteInstallation request.\r\n return undefined;\r\n }\r\n return oldEntry;\r\n })];\r\n case 1:\r\n entry = _a.sent();\r\n if (!entry) return [3 /*break*/, 6];\r\n if (!(entry.registrationStatus === 1 /* IN_PROGRESS */)) return [3 /*break*/, 2];\r\n // Can't delete while trying to register.\r\n throw ERROR_FACTORY.create(\"delete-pending-registration\" /* DELETE_PENDING_REGISTRATION */);\r\n case 2:\r\n if (!(entry.registrationStatus === 2 /* COMPLETED */)) return [3 /*break*/, 6];\r\n if (!!navigator.onLine) return [3 /*break*/, 3];\r\n throw ERROR_FACTORY.create(\"app-offline\" /* APP_OFFLINE */);\r\n case 3: return [4 /*yield*/, deleteInstallationRequest(appConfig, entry)];\r\n case 4:\r\n _a.sent();\r\n return [4 /*yield*/, remove(appConfig)];\r\n case 5:\r\n _a.sent();\r\n _a.label = 6;\r\n case 6: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n}\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * Sets a new callback that will get called when Installation ID changes.\r\n * Returns an unsubscribe function that will remove the callback when called.\r\n */\r\nfunction onIdChange(_a, callback) {\r\n var appConfig = _a.appConfig;\r\n addCallback(appConfig, callback);\r\n return function () {\r\n removeCallback(appConfig, callback);\r\n };\r\n}\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nfunction extractAppConfig(app) {\r\n var e_1, _a;\r\n if (!app || !app.options) {\r\n throw getMissingValueError('App Configuration');\r\n }\r\n if (!app.name) {\r\n throw getMissingValueError('App Name');\r\n }\r\n // Required app config keys\r\n var configKeys = [\r\n 'projectId',\r\n 'apiKey',\r\n 'appId'\r\n ];\r\n try {\r\n for (var configKeys_1 = __values(configKeys), configKeys_1_1 = configKeys_1.next(); !configKeys_1_1.done; configKeys_1_1 = configKeys_1.next()) {\r\n var keyName = configKeys_1_1.value;\r\n if (!app.options[keyName]) {\r\n throw getMissingValueError(keyName);\r\n }\r\n }\r\n }\r\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\r\n finally {\r\n try {\r\n if (configKeys_1_1 && !configKeys_1_1.done && (_a = configKeys_1.return)) _a.call(configKeys_1);\r\n }\r\n finally { if (e_1) throw e_1.error; }\r\n }\r\n return {\r\n appName: app.name,\r\n projectId: app.options.projectId,\r\n apiKey: app.options.apiKey,\r\n appId: app.options.appId\r\n };\r\n}\r\nfunction getMissingValueError(valueName) {\r\n return ERROR_FACTORY.create(\"missing-app-config-values\" /* MISSING_APP_CONFIG_VALUES */, {\r\n valueName: valueName\r\n });\r\n}\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nfunction registerInstallations(instance) {\r\n var installationsName = 'installations';\r\n instance.INTERNAL.registerComponent(new Component(installationsName, function (container) {\r\n var app = container.getProvider('app').getImmediate();\r\n // Throws if app isn't configured properly.\r\n var appConfig = extractAppConfig(app);\r\n var platformLoggerProvider = container.getProvider('platform-logger');\r\n var dependencies = {\r\n appConfig: appConfig,\r\n platformLoggerProvider: platformLoggerProvider\r\n };\r\n var installations = {\r\n app: app,\r\n getId: function () { return getId(dependencies); },\r\n getToken: function (forceRefresh) {\r\n return getToken(dependencies, forceRefresh);\r\n },\r\n delete: function () { return deleteInstallation(dependencies); },\r\n onIdChange: function (callback) {\r\n return onIdChange(dependencies, callback);\r\n }\r\n };\r\n return installations;\r\n }, \"PUBLIC\" /* PUBLIC */));\r\n instance.registerVersion(name, version);\r\n}\r\nregisterInstallations(firebase);\n\nexport { registerInstallations };\n//# sourceMappingURL=index.esm.js.map\n","import '@firebase/installations';\nimport { Component } from '@firebase/component';\nimport { ErrorFactory } from '@firebase/util';\nimport { __spreadArray, __read, __awaiter, __generator, __assign, __values } from 'tslib';\nimport { deleteDb, openDb } from 'idb';\nimport firebase from '@firebase/app';\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nvar _a;\r\nvar ERROR_MAP = (_a = {},\r\n _a[\"missing-app-config-values\" /* MISSING_APP_CONFIG_VALUES */] = 'Missing App configuration value: \"{$valueName}\"',\r\n _a[\"only-available-in-window\" /* AVAILABLE_IN_WINDOW */] = 'This method is available in a Window context.',\r\n _a[\"only-available-in-sw\" /* AVAILABLE_IN_SW */] = 'This method is available in a service worker context.',\r\n _a[\"permission-default\" /* PERMISSION_DEFAULT */] = 'The notification permission was not granted and dismissed instead.',\r\n _a[\"permission-blocked\" /* PERMISSION_BLOCKED */] = 'The notification permission was not granted and blocked instead.',\r\n _a[\"unsupported-browser\" /* UNSUPPORTED_BROWSER */] = \"This browser doesn't support the API's required to use the firebase SDK.\",\r\n _a[\"failed-service-worker-registration\" /* FAILED_DEFAULT_REGISTRATION */] = 'We are unable to register the default service worker. {$browserErrorMessage}',\r\n _a[\"token-subscribe-failed\" /* TOKEN_SUBSCRIBE_FAILED */] = 'A problem occurred while subscribing the user to FCM: {$errorInfo}',\r\n _a[\"token-subscribe-no-token\" /* TOKEN_SUBSCRIBE_NO_TOKEN */] = 'FCM returned no token when subscribing the user to push.',\r\n _a[\"token-unsubscribe-failed\" /* TOKEN_UNSUBSCRIBE_FAILED */] = 'A problem occurred while unsubscribing the ' +\r\n 'user from FCM: {$errorInfo}',\r\n _a[\"token-update-failed\" /* TOKEN_UPDATE_FAILED */] = 'A problem occurred while updating the user from FCM: {$errorInfo}',\r\n _a[\"token-update-no-token\" /* TOKEN_UPDATE_NO_TOKEN */] = 'FCM returned no token when updating the user to push.',\r\n _a[\"use-sw-after-get-token\" /* USE_SW_AFTER_GET_TOKEN */] = 'The useServiceWorker() method may only be called once and must be ' +\r\n 'called before calling getToken() to ensure your service worker is used.',\r\n _a[\"invalid-sw-registration\" /* INVALID_SW_REGISTRATION */] = 'The input to useServiceWorker() must be a ServiceWorkerRegistration.',\r\n _a[\"invalid-bg-handler\" /* INVALID_BG_HANDLER */] = 'The input to setBackgroundMessageHandler() must be a function.',\r\n _a[\"invalid-vapid-key\" /* INVALID_VAPID_KEY */] = 'The public VAPID key must be a string.',\r\n _a[\"use-vapid-key-after-get-token\" /* USE_VAPID_KEY_AFTER_GET_TOKEN */] = 'The usePublicVapidKey() method may only be called once and must be ' +\r\n 'called before calling getToken() to ensure your VAPID key is used.',\r\n _a);\r\nvar ERROR_FACTORY = new ErrorFactory('messaging', 'Messaging', ERROR_MAP);\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nvar DEFAULT_SW_PATH = '/firebase-messaging-sw.js';\r\nvar DEFAULT_SW_SCOPE = '/firebase-cloud-messaging-push-scope';\r\nvar DEFAULT_VAPID_KEY = 'BDOU99-h67HcA6JeFXHbSNMu7e2yNNu3RzoMj8TM4W88jITfq7ZmPvIM1Iv-4_l2LxQcYwhqby2xGpWwzjfAnG4';\r\nvar ENDPOINT = 'https://fcmregistrations.googleapis.com/v1';\r\n// Key of FCM Payload in Notification's data field.\r\nvar FCM_MSG = 'FCM_MSG';\r\nvar TAG = 'FirebaseMessaging: ';\r\n// Set to '1' if Analytics is enabled for the campaign\r\nvar CONSOLE_CAMPAIGN_ANALYTICS_ENABLED = 'google.c.a.e';\r\nvar CONSOLE_CAMPAIGN_ID = 'google.c.a.c_id';\r\nvar CONSOLE_CAMPAIGN_TIME = 'google.c.a.ts';\r\nvar CONSOLE_CAMPAIGN_NAME = 'google.c.a.c_l';\r\n// Due to the fact that onBackgroundMessage can't be awaited (to support rxjs), a silent push\r\n// warning might be shown by the browser if the callback fails to completes by the end of onPush.\r\n// Experiments were ran to determine the majority onBackground message clock time. This brief\r\n// blocking time would allow majority of the onBackgroundMessage callback to finish.\r\nvar BACKGROUND_HANDLE_EXECUTION_TIME_LIMIT_MS = 1000;\r\n// Preparation time for client to initialize and set up the message handler.\r\nvar FOREGROUND_HANDLE_PREPARATION_TIME_MS = 3000;\n\n/**\r\n * @license\r\n * Copyright 2018 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\"); you may not use this file except\r\n * in compliance with the License. You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software distributed under the License\r\n * is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express\r\n * or implied. See the License for the specific language governing permissions and limitations under\r\n * the License.\r\n */\r\nvar MessageType;\r\n(function (MessageType) {\r\n MessageType[\"PUSH_RECEIVED\"] = \"push-received\";\r\n MessageType[\"NOTIFICATION_CLICKED\"] = \"notification-clicked\";\r\n})(MessageType || (MessageType = {}));\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nfunction arrayToBase64(array) {\r\n var uint8Array = new Uint8Array(array);\r\n var base64String = btoa(String.fromCharCode.apply(String, __spreadArray([], __read(uint8Array))));\r\n return base64String.replace(/=/g, '').replace(/\\+/g, '-').replace(/\\//g, '_');\r\n}\r\nfunction base64ToArray(base64String) {\r\n var padding = '='.repeat((4 - (base64String.length % 4)) % 4);\r\n var base64 = (base64String + padding)\r\n .replace(/\\-/g, '+')\r\n .replace(/_/g, '/');\r\n var rawData = atob(base64);\r\n var outputArray = new Uint8Array(rawData.length);\r\n for (var i = 0; i < rawData.length; ++i) {\r\n outputArray[i] = rawData.charCodeAt(i);\r\n }\r\n return outputArray;\r\n}\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nvar OLD_DB_NAME = 'fcm_token_details_db';\r\n/**\r\n * The last DB version of 'fcm_token_details_db' was 4. This is one higher, so that the upgrade\r\n * callback is called for all versions of the old DB.\r\n */\r\nvar OLD_DB_VERSION = 5;\r\nvar OLD_OBJECT_STORE_NAME = 'fcm_token_object_Store';\r\nfunction migrateOldDatabase(senderId) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var databases, dbNames, tokenDetails, db;\r\n var _this = this;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n if (!('databases' in indexedDB)) return [3 /*break*/, 2];\r\n return [4 /*yield*/, indexedDB.databases()];\r\n case 1:\r\n databases = _a.sent();\r\n dbNames = databases.map(function (db) { return db.name; });\r\n if (!dbNames.includes(OLD_DB_NAME)) {\r\n // old DB didn't exist, no need to open.\r\n return [2 /*return*/, null];\r\n }\r\n _a.label = 2;\r\n case 2:\r\n tokenDetails = null;\r\n return [4 /*yield*/, openDb(OLD_DB_NAME, OLD_DB_VERSION, function (db) { return __awaiter(_this, void 0, void 0, function () {\r\n var objectStore, value, oldDetails, oldDetails, oldDetails;\r\n var _a;\r\n return __generator(this, function (_b) {\r\n switch (_b.label) {\r\n case 0:\r\n if (db.oldVersion < 2) {\r\n // Database too old, skip migration.\r\n return [2 /*return*/];\r\n }\r\n if (!db.objectStoreNames.contains(OLD_OBJECT_STORE_NAME)) {\r\n // Database did not exist. Nothing to do.\r\n return [2 /*return*/];\r\n }\r\n objectStore = db.transaction.objectStore(OLD_OBJECT_STORE_NAME);\r\n return [4 /*yield*/, objectStore.index('fcmSenderId').get(senderId)];\r\n case 1:\r\n value = _b.sent();\r\n return [4 /*yield*/, objectStore.clear()];\r\n case 2:\r\n _b.sent();\r\n if (!value) {\r\n // No entry in the database, nothing to migrate.\r\n return [2 /*return*/];\r\n }\r\n if (db.oldVersion === 2) {\r\n oldDetails = value;\r\n if (!oldDetails.auth || !oldDetails.p256dh || !oldDetails.endpoint) {\r\n return [2 /*return*/];\r\n }\r\n tokenDetails = {\r\n token: oldDetails.fcmToken,\r\n createTime: (_a = oldDetails.createTime) !== null && _a !== void 0 ? _a : Date.now(),\r\n subscriptionOptions: {\r\n auth: oldDetails.auth,\r\n p256dh: oldDetails.p256dh,\r\n endpoint: oldDetails.endpoint,\r\n swScope: oldDetails.swScope,\r\n vapidKey: typeof oldDetails.vapidKey === 'string'\r\n ? oldDetails.vapidKey\r\n : arrayToBase64(oldDetails.vapidKey)\r\n }\r\n };\r\n }\r\n else if (db.oldVersion === 3) {\r\n oldDetails = value;\r\n tokenDetails = {\r\n token: oldDetails.fcmToken,\r\n createTime: oldDetails.createTime,\r\n subscriptionOptions: {\r\n auth: arrayToBase64(oldDetails.auth),\r\n p256dh: arrayToBase64(oldDetails.p256dh),\r\n endpoint: oldDetails.endpoint,\r\n swScope: oldDetails.swScope,\r\n vapidKey: arrayToBase64(oldDetails.vapidKey)\r\n }\r\n };\r\n }\r\n else if (db.oldVersion === 4) {\r\n oldDetails = value;\r\n tokenDetails = {\r\n token: oldDetails.fcmToken,\r\n createTime: oldDetails.createTime,\r\n subscriptionOptions: {\r\n auth: arrayToBase64(oldDetails.auth),\r\n p256dh: arrayToBase64(oldDetails.p256dh),\r\n endpoint: oldDetails.endpoint,\r\n swScope: oldDetails.swScope,\r\n vapidKey: arrayToBase64(oldDetails.vapidKey)\r\n }\r\n };\r\n }\r\n return [2 /*return*/];\r\n }\r\n });\r\n }); })];\r\n case 3:\r\n db = _a.sent();\r\n db.close();\r\n // Delete all old databases.\r\n return [4 /*yield*/, deleteDb(OLD_DB_NAME)];\r\n case 4:\r\n // Delete all old databases.\r\n _a.sent();\r\n return [4 /*yield*/, deleteDb('fcm_vapid_details_db')];\r\n case 5:\r\n _a.sent();\r\n return [4 /*yield*/, deleteDb('undefined')];\r\n case 6:\r\n _a.sent();\r\n return [2 /*return*/, checkTokenDetails(tokenDetails) ? tokenDetails : null];\r\n }\r\n });\r\n });\r\n}\r\nfunction checkTokenDetails(tokenDetails) {\r\n if (!tokenDetails || !tokenDetails.subscriptionOptions) {\r\n return false;\r\n }\r\n var subscriptionOptions = tokenDetails.subscriptionOptions;\r\n return (typeof tokenDetails.createTime === 'number' &&\r\n tokenDetails.createTime > 0 &&\r\n typeof tokenDetails.token === 'string' &&\r\n tokenDetails.token.length > 0 &&\r\n typeof subscriptionOptions.auth === 'string' &&\r\n subscriptionOptions.auth.length > 0 &&\r\n typeof subscriptionOptions.p256dh === 'string' &&\r\n subscriptionOptions.p256dh.length > 0 &&\r\n typeof subscriptionOptions.endpoint === 'string' &&\r\n subscriptionOptions.endpoint.length > 0 &&\r\n typeof subscriptionOptions.swScope === 'string' &&\r\n subscriptionOptions.swScope.length > 0 &&\r\n typeof subscriptionOptions.vapidKey === 'string' &&\r\n subscriptionOptions.vapidKey.length > 0);\r\n}\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n// Exported for tests.\r\nvar DATABASE_NAME = 'firebase-messaging-database';\r\nvar DATABASE_VERSION = 1;\r\nvar OBJECT_STORE_NAME = 'firebase-messaging-store';\r\nvar dbPromise = null;\r\nfunction getDbPromise() {\r\n if (!dbPromise) {\r\n dbPromise = openDb(DATABASE_NAME, DATABASE_VERSION, function (upgradeDb) {\r\n // We don't use 'break' in this switch statement, the fall-through behavior is what we want,\r\n // because if there are multiple versions between the old version and the current version, we\r\n // want ALL the migrations that correspond to those versions to run, not only the last one.\r\n // eslint-disable-next-line default-case\r\n switch (upgradeDb.oldVersion) {\r\n case 0:\r\n upgradeDb.createObjectStore(OBJECT_STORE_NAME);\r\n }\r\n });\r\n }\r\n return dbPromise;\r\n}\r\n/** Gets record(s) from the objectStore that match the given key. */\r\nfunction dbGet(firebaseDependencies) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var key, db, tokenDetails, oldTokenDetails;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n key = getKey(firebaseDependencies);\r\n return [4 /*yield*/, getDbPromise()];\r\n case 1:\r\n db = _a.sent();\r\n return [4 /*yield*/, db\r\n .transaction(OBJECT_STORE_NAME)\r\n .objectStore(OBJECT_STORE_NAME)\r\n .get(key)];\r\n case 2:\r\n tokenDetails = _a.sent();\r\n if (!tokenDetails) return [3 /*break*/, 3];\r\n return [2 /*return*/, tokenDetails];\r\n case 3: return [4 /*yield*/, migrateOldDatabase(firebaseDependencies.appConfig.senderId)];\r\n case 4:\r\n oldTokenDetails = _a.sent();\r\n if (!oldTokenDetails) return [3 /*break*/, 6];\r\n return [4 /*yield*/, dbSet(firebaseDependencies, oldTokenDetails)];\r\n case 5:\r\n _a.sent();\r\n return [2 /*return*/, oldTokenDetails];\r\n case 6: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n}\r\n/** Assigns or overwrites the record for the given key with the given value. */\r\nfunction dbSet(firebaseDependencies, tokenDetails) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var key, db, tx;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n key = getKey(firebaseDependencies);\r\n return [4 /*yield*/, getDbPromise()];\r\n case 1:\r\n db = _a.sent();\r\n tx = db.transaction(OBJECT_STORE_NAME, 'readwrite');\r\n return [4 /*yield*/, tx.objectStore(OBJECT_STORE_NAME).put(tokenDetails, key)];\r\n case 2:\r\n _a.sent();\r\n return [4 /*yield*/, tx.complete];\r\n case 3:\r\n _a.sent();\r\n return [2 /*return*/, tokenDetails];\r\n }\r\n });\r\n });\r\n}\r\n/** Removes record(s) from the objectStore that match the given key. */\r\nfunction dbRemove(firebaseDependencies) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var key, db, tx;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n key = getKey(firebaseDependencies);\r\n return [4 /*yield*/, getDbPromise()];\r\n case 1:\r\n db = _a.sent();\r\n tx = db.transaction(OBJECT_STORE_NAME, 'readwrite');\r\n return [4 /*yield*/, tx.objectStore(OBJECT_STORE_NAME).delete(key)];\r\n case 2:\r\n _a.sent();\r\n return [4 /*yield*/, tx.complete];\r\n case 3:\r\n _a.sent();\r\n return [2 /*return*/];\r\n }\r\n });\r\n });\r\n}\r\nfunction getKey(_a) {\r\n var appConfig = _a.appConfig;\r\n return appConfig.appId;\r\n}\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nfunction requestGetToken(firebaseDependencies, subscriptionOptions) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var headers, body, subscribeOptions, responseData, response, err_1, message;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0: return [4 /*yield*/, getHeaders(firebaseDependencies)];\r\n case 1:\r\n headers = _a.sent();\r\n body = getBody(subscriptionOptions);\r\n subscribeOptions = {\r\n method: 'POST',\r\n headers: headers,\r\n body: JSON.stringify(body)\r\n };\r\n _a.label = 2;\r\n case 2:\r\n _a.trys.push([2, 5, , 6]);\r\n return [4 /*yield*/, fetch(getEndpoint(firebaseDependencies.appConfig), subscribeOptions)];\r\n case 3:\r\n response = _a.sent();\r\n return [4 /*yield*/, response.json()];\r\n case 4:\r\n responseData = _a.sent();\r\n return [3 /*break*/, 6];\r\n case 5:\r\n err_1 = _a.sent();\r\n throw ERROR_FACTORY.create(\"token-subscribe-failed\" /* TOKEN_SUBSCRIBE_FAILED */, {\r\n errorInfo: err_1\r\n });\r\n case 6:\r\n if (responseData.error) {\r\n message = responseData.error.message;\r\n throw ERROR_FACTORY.create(\"token-subscribe-failed\" /* TOKEN_SUBSCRIBE_FAILED */, {\r\n errorInfo: message\r\n });\r\n }\r\n if (!responseData.token) {\r\n throw ERROR_FACTORY.create(\"token-subscribe-no-token\" /* TOKEN_SUBSCRIBE_NO_TOKEN */);\r\n }\r\n return [2 /*return*/, responseData.token];\r\n }\r\n });\r\n });\r\n}\r\nfunction requestUpdateToken(firebaseDependencies, tokenDetails) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var headers, body, updateOptions, responseData, response, err_2, message;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0: return [4 /*yield*/, getHeaders(firebaseDependencies)];\r\n case 1:\r\n headers = _a.sent();\r\n body = getBody(tokenDetails.subscriptionOptions);\r\n updateOptions = {\r\n method: 'PATCH',\r\n headers: headers,\r\n body: JSON.stringify(body)\r\n };\r\n _a.label = 2;\r\n case 2:\r\n _a.trys.push([2, 5, , 6]);\r\n return [4 /*yield*/, fetch(getEndpoint(firebaseDependencies.appConfig) + \"/\" + tokenDetails.token, updateOptions)];\r\n case 3:\r\n response = _a.sent();\r\n return [4 /*yield*/, response.json()];\r\n case 4:\r\n responseData = _a.sent();\r\n return [3 /*break*/, 6];\r\n case 5:\r\n err_2 = _a.sent();\r\n throw ERROR_FACTORY.create(\"token-update-failed\" /* TOKEN_UPDATE_FAILED */, {\r\n errorInfo: err_2\r\n });\r\n case 6:\r\n if (responseData.error) {\r\n message = responseData.error.message;\r\n throw ERROR_FACTORY.create(\"token-update-failed\" /* TOKEN_UPDATE_FAILED */, {\r\n errorInfo: message\r\n });\r\n }\r\n if (!responseData.token) {\r\n throw ERROR_FACTORY.create(\"token-update-no-token\" /* TOKEN_UPDATE_NO_TOKEN */);\r\n }\r\n return [2 /*return*/, responseData.token];\r\n }\r\n });\r\n });\r\n}\r\nfunction requestDeleteToken(firebaseDependencies, token) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var headers, unsubscribeOptions, response, responseData, message, err_3;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0: return [4 /*yield*/, getHeaders(firebaseDependencies)];\r\n case 1:\r\n headers = _a.sent();\r\n unsubscribeOptions = {\r\n method: 'DELETE',\r\n headers: headers\r\n };\r\n _a.label = 2;\r\n case 2:\r\n _a.trys.push([2, 5, , 6]);\r\n return [4 /*yield*/, fetch(getEndpoint(firebaseDependencies.appConfig) + \"/\" + token, unsubscribeOptions)];\r\n case 3:\r\n response = _a.sent();\r\n return [4 /*yield*/, response.json()];\r\n case 4:\r\n responseData = _a.sent();\r\n if (responseData.error) {\r\n message = responseData.error.message;\r\n throw ERROR_FACTORY.create(\"token-unsubscribe-failed\" /* TOKEN_UNSUBSCRIBE_FAILED */, {\r\n errorInfo: message\r\n });\r\n }\r\n return [3 /*break*/, 6];\r\n case 5:\r\n err_3 = _a.sent();\r\n throw ERROR_FACTORY.create(\"token-unsubscribe-failed\" /* TOKEN_UNSUBSCRIBE_FAILED */, {\r\n errorInfo: err_3\r\n });\r\n case 6: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n}\r\nfunction getEndpoint(_a) {\r\n var projectId = _a.projectId;\r\n return ENDPOINT + \"/projects/\" + projectId + \"/registrations\";\r\n}\r\nfunction getHeaders(_a) {\r\n var appConfig = _a.appConfig, installations = _a.installations;\r\n return __awaiter(this, void 0, void 0, function () {\r\n var authToken;\r\n return __generator(this, function (_b) {\r\n switch (_b.label) {\r\n case 0: return [4 /*yield*/, installations.getToken()];\r\n case 1:\r\n authToken = _b.sent();\r\n return [2 /*return*/, new Headers({\r\n 'Content-Type': 'application/json',\r\n Accept: 'application/json',\r\n 'x-goog-api-key': appConfig.apiKey,\r\n 'x-goog-firebase-installations-auth': \"FIS \" + authToken\r\n })];\r\n }\r\n });\r\n });\r\n}\r\nfunction getBody(_a) {\r\n var p256dh = _a.p256dh, auth = _a.auth, endpoint = _a.endpoint, vapidKey = _a.vapidKey;\r\n var body = {\r\n web: {\r\n endpoint: endpoint,\r\n auth: auth,\r\n p256dh: p256dh\r\n }\r\n };\r\n if (vapidKey !== DEFAULT_VAPID_KEY) {\r\n body.web.applicationPubKey = vapidKey;\r\n }\r\n return body;\r\n}\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/** UpdateRegistration will be called once every week. */\r\nvar TOKEN_EXPIRATION_MS = 7 * 24 * 60 * 60 * 1000; // 7 days\r\nfunction getToken(firebaseDependencies, swRegistration, vapidKey) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var pushSubscription, tokenDetails, subscriptionOptions, e_1;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n if (Notification.permission !== 'granted') {\r\n throw ERROR_FACTORY.create(\"permission-blocked\" /* PERMISSION_BLOCKED */);\r\n }\r\n return [4 /*yield*/, getPushSubscription(swRegistration, vapidKey)];\r\n case 1:\r\n pushSubscription = _a.sent();\r\n return [4 /*yield*/, dbGet(firebaseDependencies)];\r\n case 2:\r\n tokenDetails = _a.sent();\r\n subscriptionOptions = {\r\n vapidKey: vapidKey,\r\n swScope: swRegistration.scope,\r\n endpoint: pushSubscription.endpoint,\r\n auth: arrayToBase64(pushSubscription.getKey('auth')),\r\n p256dh: arrayToBase64(pushSubscription.getKey('p256dh'))\r\n };\r\n if (!!tokenDetails) return [3 /*break*/, 3];\r\n // No token, get a new one.\r\n return [2 /*return*/, getNewToken(firebaseDependencies, subscriptionOptions)];\r\n case 3:\r\n if (!!isTokenValid(tokenDetails.subscriptionOptions, subscriptionOptions)) return [3 /*break*/, 8];\r\n _a.label = 4;\r\n case 4:\r\n _a.trys.push([4, 6, , 7]);\r\n return [4 /*yield*/, requestDeleteToken(firebaseDependencies, tokenDetails.token)];\r\n case 5:\r\n _a.sent();\r\n return [3 /*break*/, 7];\r\n case 6:\r\n e_1 = _a.sent();\r\n // Suppress errors because of #2364\r\n console.warn(e_1);\r\n return [3 /*break*/, 7];\r\n case 7: return [2 /*return*/, getNewToken(firebaseDependencies, subscriptionOptions)];\r\n case 8:\r\n if (Date.now() >= tokenDetails.createTime + TOKEN_EXPIRATION_MS) {\r\n // Weekly token refresh\r\n return [2 /*return*/, updateToken({\r\n token: tokenDetails.token,\r\n createTime: Date.now(),\r\n subscriptionOptions: subscriptionOptions\r\n }, firebaseDependencies, swRegistration)];\r\n }\r\n else {\r\n // Valid token, nothing to do.\r\n return [2 /*return*/, tokenDetails.token];\r\n }\r\n case 9: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n}\r\n/**\r\n * This method deletes the token from the database, unsubscribes the token from FCM, and unregisters\r\n * the push subscription if it exists.\r\n */\r\nfunction deleteToken(firebaseDependencies, swRegistration) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var tokenDetails, pushSubscription;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0: return [4 /*yield*/, dbGet(firebaseDependencies)];\r\n case 1:\r\n tokenDetails = _a.sent();\r\n if (!tokenDetails) return [3 /*break*/, 4];\r\n return [4 /*yield*/, requestDeleteToken(firebaseDependencies, tokenDetails.token)];\r\n case 2:\r\n _a.sent();\r\n return [4 /*yield*/, dbRemove(firebaseDependencies)];\r\n case 3:\r\n _a.sent();\r\n _a.label = 4;\r\n case 4: return [4 /*yield*/, swRegistration.pushManager.getSubscription()];\r\n case 5:\r\n pushSubscription = _a.sent();\r\n if (pushSubscription) {\r\n return [2 /*return*/, pushSubscription.unsubscribe()];\r\n }\r\n // If there's no SW, consider it a success.\r\n return [2 /*return*/, true];\r\n }\r\n });\r\n });\r\n}\r\nfunction updateToken(tokenDetails, firebaseDependencies, swRegistration) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var updatedToken, updatedTokenDetails, e_2;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n _a.trys.push([0, 3, , 5]);\r\n return [4 /*yield*/, requestUpdateToken(firebaseDependencies, tokenDetails)];\r\n case 1:\r\n updatedToken = _a.sent();\r\n updatedTokenDetails = __assign(__assign({}, tokenDetails), { token: updatedToken, createTime: Date.now() });\r\n return [4 /*yield*/, dbSet(firebaseDependencies, updatedTokenDetails)];\r\n case 2:\r\n _a.sent();\r\n return [2 /*return*/, updatedToken];\r\n case 3:\r\n e_2 = _a.sent();\r\n return [4 /*yield*/, deleteToken(firebaseDependencies, swRegistration)];\r\n case 4:\r\n _a.sent();\r\n throw e_2;\r\n case 5: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n}\r\nfunction getNewToken(firebaseDependencies, subscriptionOptions) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var token, tokenDetails;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0: return [4 /*yield*/, requestGetToken(firebaseDependencies, subscriptionOptions)];\r\n case 1:\r\n token = _a.sent();\r\n tokenDetails = {\r\n token: token,\r\n createTime: Date.now(),\r\n subscriptionOptions: subscriptionOptions\r\n };\r\n return [4 /*yield*/, dbSet(firebaseDependencies, tokenDetails)];\r\n case 2:\r\n _a.sent();\r\n return [2 /*return*/, tokenDetails.token];\r\n }\r\n });\r\n });\r\n}\r\n/**\r\n * Gets a PushSubscription for the current user.\r\n */\r\nfunction getPushSubscription(swRegistration, vapidKey) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var subscription;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0: return [4 /*yield*/, swRegistration.pushManager.getSubscription()];\r\n case 1:\r\n subscription = _a.sent();\r\n if (subscription) {\r\n return [2 /*return*/, subscription];\r\n }\r\n return [2 /*return*/, swRegistration.pushManager.subscribe({\r\n userVisibleOnly: true,\r\n // Chrome <= 75 doesn't support base64-encoded VAPID key. For backward compatibility, VAPID key\r\n // submitted to pushManager#subscribe must be of type Uint8Array.\r\n applicationServerKey: base64ToArray(vapidKey)\r\n })];\r\n }\r\n });\r\n });\r\n}\r\n/**\r\n * Checks if the saved tokenDetails object matches the configuration provided.\r\n */\r\nfunction isTokenValid(dbOptions, currentOptions) {\r\n var isVapidKeyEqual = currentOptions.vapidKey === dbOptions.vapidKey;\r\n var isEndpointEqual = currentOptions.endpoint === dbOptions.endpoint;\r\n var isAuthEqual = currentOptions.auth === dbOptions.auth;\r\n var isP256dhEqual = currentOptions.p256dh === dbOptions.p256dh;\r\n return isVapidKeyEqual && isEndpointEqual && isAuthEqual && isP256dhEqual;\r\n}\n\n/**\r\n * @license\r\n * Copyright 2020 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nfunction externalizePayload(internalPayload) {\r\n var payload = {\r\n from: internalPayload.from,\r\n // eslint-disable-next-line camelcase\r\n collapseKey: internalPayload.collapse_key,\r\n // eslint-disable-next-line camelcase\r\n messageId: internalPayload.fcm_message_id\r\n };\r\n propagateNotificationPayload(payload, internalPayload);\r\n propagateDataPayload(payload, internalPayload);\r\n propagateFcmOptions(payload, internalPayload);\r\n return payload;\r\n}\r\nfunction propagateNotificationPayload(payload, messagePayloadInternal) {\r\n if (!messagePayloadInternal.notification) {\r\n return;\r\n }\r\n payload.notification = {};\r\n var title = messagePayloadInternal.notification.title;\r\n if (!!title) {\r\n payload.notification.title = title;\r\n }\r\n var body = messagePayloadInternal.notification.body;\r\n if (!!body) {\r\n payload.notification.body = body;\r\n }\r\n var image = messagePayloadInternal.notification.image;\r\n if (!!image) {\r\n payload.notification.image = image;\r\n }\r\n}\r\nfunction propagateDataPayload(payload, messagePayloadInternal) {\r\n if (!messagePayloadInternal.data) {\r\n return;\r\n }\r\n payload.data = messagePayloadInternal.data;\r\n}\r\nfunction propagateFcmOptions(payload, messagePayloadInternal) {\r\n if (!messagePayloadInternal.fcmOptions) {\r\n return;\r\n }\r\n payload.fcmOptions = {};\r\n var link = messagePayloadInternal.fcmOptions.link;\r\n if (!!link) {\r\n payload.fcmOptions.link = link;\r\n }\r\n // eslint-disable-next-line camelcase\r\n var analyticsLabel = messagePayloadInternal.fcmOptions.analytics_label;\r\n if (!!analyticsLabel) {\r\n payload.fcmOptions.analyticsLabel = analyticsLabel;\r\n }\r\n}\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nfunction isConsoleMessage(data) {\r\n // This message has a campaign ID, meaning it was sent using the Firebase Console.\r\n return typeof data === 'object' && !!data && CONSOLE_CAMPAIGN_ID in data;\r\n}\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/** Returns a promise that resolves after given time passes. */\r\nfunction sleep(ms) {\r\n return new Promise(function (resolve) {\r\n setTimeout(resolve, ms);\r\n });\r\n}\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nvar SwController = /** @class */ (function () {\r\n function SwController(firebaseDependencies) {\r\n var _this = this;\r\n this.firebaseDependencies = firebaseDependencies;\r\n // A boolean flag to determine wether an app is using onBackgroundMessage or\r\n // setBackgroundMessageHandler. onBackgroundMessage will receive a MessagePayload regardless of if\r\n // a notification is displayed. Whereas, setBackgroundMessageHandler will swallow the\r\n // MessagePayload if a NotificationPayload is included.\r\n this.isOnBackgroundMessageUsed = null;\r\n this.vapidKey = null;\r\n this.bgMessageHandler = null;\r\n self.addEventListener('push', function (e) {\r\n e.waitUntil(_this.onPush(e));\r\n });\r\n self.addEventListener('pushsubscriptionchange', function (e) {\r\n e.waitUntil(_this.onSubChange(e));\r\n });\r\n self.addEventListener('notificationclick', function (e) {\r\n e.waitUntil(_this.onNotificationClick(e));\r\n });\r\n }\r\n Object.defineProperty(SwController.prototype, \"app\", {\r\n get: function () {\r\n return this.firebaseDependencies.app;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n /**\r\n * @deprecated. Use onBackgroundMessage(nextOrObserver: NextFn | Observer):\r\n * Unsubscribe instead.\r\n *\r\n * Calling setBackgroundMessageHandler will opt in to some specific behaviors.\r\n *\r\n * 1.) If a notification doesn't need to be shown due to a window already being visible, then push\r\n * messages will be sent to the page. 2.) If a notification needs to be shown, and the message\r\n * contains no notification data this method will be called and the promise it returns will be\r\n * passed to event.waitUntil. If you do not set this callback then all push messages will let and\r\n * the developer can handle them in a their own 'push' event callback\r\n *\r\n * @param callback The callback to be called when a push message is received and a notification\r\n * must be shown. The callback will be given the data from the push message.\r\n */\r\n SwController.prototype.setBackgroundMessageHandler = function (callback) {\r\n this.isOnBackgroundMessageUsed = false;\r\n if (!callback || typeof callback !== 'function') {\r\n throw ERROR_FACTORY.create(\"invalid-bg-handler\" /* INVALID_BG_HANDLER */);\r\n }\r\n this.bgMessageHandler = callback;\r\n };\r\n SwController.prototype.onBackgroundMessage = function (nextOrObserver) {\r\n var _this = this;\r\n this.isOnBackgroundMessageUsed = true;\r\n this.bgMessageHandler = nextOrObserver;\r\n return function () {\r\n _this.bgMessageHandler = null;\r\n };\r\n };\r\n // TODO: Remove getToken from SW Controller. Calling this from an old SW can cause all kinds of\r\n // trouble.\r\n SwController.prototype.getToken = function () {\r\n var _a, _b;\r\n return __awaiter(this, void 0, void 0, function () {\r\n var tokenDetails;\r\n return __generator(this, function (_c) {\r\n switch (_c.label) {\r\n case 0:\r\n if (!!this.vapidKey) return [3 /*break*/, 2];\r\n return [4 /*yield*/, dbGet(this.firebaseDependencies)];\r\n case 1:\r\n tokenDetails = _c.sent();\r\n this.vapidKey =\r\n (_b = (_a = tokenDetails === null || tokenDetails === void 0 ? void 0 : tokenDetails.subscriptionOptions) === null || _a === void 0 ? void 0 : _a.vapidKey) !== null && _b !== void 0 ? _b : DEFAULT_VAPID_KEY;\r\n _c.label = 2;\r\n case 2: return [2 /*return*/, getToken(this.firebaseDependencies, self.registration, this.vapidKey)];\r\n }\r\n });\r\n });\r\n };\r\n // TODO: Remove deleteToken from SW Controller. Calling this from an old SW can cause all kinds of\r\n // trouble.\r\n SwController.prototype.deleteToken = function () {\r\n return deleteToken(this.firebaseDependencies, self.registration);\r\n };\r\n SwController.prototype.requestPermission = function () {\r\n throw ERROR_FACTORY.create(\"only-available-in-window\" /* AVAILABLE_IN_WINDOW */);\r\n };\r\n // TODO: Remove this together with getToken from SW Controller.\r\n SwController.prototype.usePublicVapidKey = function (vapidKey) {\r\n if (this.vapidKey !== null) {\r\n throw ERROR_FACTORY.create(\"use-vapid-key-after-get-token\" /* USE_VAPID_KEY_AFTER_GET_TOKEN */);\r\n }\r\n if (typeof vapidKey !== 'string' || vapidKey.length === 0) {\r\n throw ERROR_FACTORY.create(\"invalid-vapid-key\" /* INVALID_VAPID_KEY */);\r\n }\r\n this.vapidKey = vapidKey;\r\n };\r\n SwController.prototype.useServiceWorker = function () {\r\n throw ERROR_FACTORY.create(\"only-available-in-window\" /* AVAILABLE_IN_WINDOW */);\r\n };\r\n SwController.prototype.onMessage = function () {\r\n throw ERROR_FACTORY.create(\"only-available-in-window\" /* AVAILABLE_IN_WINDOW */);\r\n };\r\n SwController.prototype.onTokenRefresh = function () {\r\n throw ERROR_FACTORY.create(\"only-available-in-window\" /* AVAILABLE_IN_WINDOW */);\r\n };\r\n /**\r\n * A handler for push events that shows notifications based on the content of the payload.\r\n *\r\n * The payload must be a JSON-encoded Object with a `notification` key. The value of the\r\n * `notification` property will be used as the NotificationOptions object passed to\r\n * showNotification. Additionally, the `title` property of the notification object will be used as\r\n * the title.\r\n *\r\n * If there is no notification data in the payload then no notification will be shown.\r\n */\r\n SwController.prototype.onPush = function (event) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var internalPayload, clientList, isNotificationShown, payload;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n internalPayload = getMessagePayloadInternal(event);\r\n if (!internalPayload) {\r\n console.debug(TAG +\r\n 'failed to get parsed MessagePayload from the PushEvent. Skip handling the push.');\r\n return [2 /*return*/];\r\n }\r\n return [4 /*yield*/, getClientList()];\r\n case 1:\r\n clientList = _a.sent();\r\n if (hasVisibleClients(clientList)) {\r\n return [2 /*return*/, sendMessagePayloadInternalToWindows(clientList, internalPayload)];\r\n }\r\n isNotificationShown = false;\r\n if (!!!internalPayload.notification) return [3 /*break*/, 3];\r\n return [4 /*yield*/, showNotification(wrapInternalPayload(internalPayload))];\r\n case 2:\r\n _a.sent();\r\n isNotificationShown = true;\r\n _a.label = 3;\r\n case 3:\r\n // MessagePayload is only passed to `onBackgroundMessage`. Skip passing MessagePayload for\r\n // the legacy `setBackgroundMessageHandler` to preserve the SDK behaviors.\r\n if (isNotificationShown === true &&\r\n this.isOnBackgroundMessageUsed === false) {\r\n return [2 /*return*/];\r\n }\r\n if (!!this.bgMessageHandler) {\r\n payload = externalizePayload(internalPayload);\r\n if (typeof this.bgMessageHandler === 'function') {\r\n this.bgMessageHandler(payload);\r\n }\r\n else {\r\n this.bgMessageHandler.next(payload);\r\n }\r\n }\r\n // wait briefly to allow onBackgroundMessage to complete\r\n return [4 /*yield*/, sleep(BACKGROUND_HANDLE_EXECUTION_TIME_LIMIT_MS)];\r\n case 4:\r\n // wait briefly to allow onBackgroundMessage to complete\r\n _a.sent();\r\n return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n SwController.prototype.onSubChange = function (event) {\r\n var _a, _b;\r\n return __awaiter(this, void 0, void 0, function () {\r\n var newSubscription, tokenDetails;\r\n return __generator(this, function (_c) {\r\n switch (_c.label) {\r\n case 0:\r\n newSubscription = event.newSubscription;\r\n if (!!newSubscription) return [3 /*break*/, 2];\r\n // Subscription revoked, delete token\r\n return [4 /*yield*/, deleteToken(this.firebaseDependencies, self.registration)];\r\n case 1:\r\n // Subscription revoked, delete token\r\n _c.sent();\r\n return [2 /*return*/];\r\n case 2: return [4 /*yield*/, dbGet(this.firebaseDependencies)];\r\n case 3:\r\n tokenDetails = _c.sent();\r\n return [4 /*yield*/, deleteToken(this.firebaseDependencies, self.registration)];\r\n case 4:\r\n _c.sent();\r\n return [4 /*yield*/, getToken(this.firebaseDependencies, self.registration, (_b = (_a = tokenDetails === null || tokenDetails === void 0 ? void 0 : tokenDetails.subscriptionOptions) === null || _a === void 0 ? void 0 : _a.vapidKey) !== null && _b !== void 0 ? _b : DEFAULT_VAPID_KEY)];\r\n case 5:\r\n _c.sent();\r\n return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n SwController.prototype.onNotificationClick = function (event) {\r\n var _a, _b;\r\n return __awaiter(this, void 0, void 0, function () {\r\n var internalPayload, link, url, originUrl, client;\r\n return __generator(this, function (_c) {\r\n switch (_c.label) {\r\n case 0:\r\n internalPayload = (_b = (_a = event.notification) === null || _a === void 0 ? void 0 : _a.data) === null || _b === void 0 ? void 0 : _b[FCM_MSG];\r\n if (!internalPayload) {\r\n return [2 /*return*/];\r\n }\r\n else if (event.action) {\r\n // User clicked on an action button. This will allow developers to act on action button clicks\r\n // by using a custom onNotificationClick listener that they define.\r\n return [2 /*return*/];\r\n }\r\n // Prevent other listeners from receiving the event\r\n event.stopImmediatePropagation();\r\n event.notification.close();\r\n link = getLink(internalPayload);\r\n if (!link) {\r\n return [2 /*return*/];\r\n }\r\n url = new URL(link, self.location.href);\r\n originUrl = new URL(self.location.origin);\r\n if (url.host !== originUrl.host) {\r\n return [2 /*return*/];\r\n }\r\n return [4 /*yield*/, getWindowClient(url)];\r\n case 1:\r\n client = _c.sent();\r\n if (!!client) return [3 /*break*/, 4];\r\n return [4 /*yield*/, self.clients.openWindow(link)];\r\n case 2:\r\n client = _c.sent();\r\n // Wait three seconds for the client to initialize and set up the message handler so that it\r\n // can receive the message.\r\n return [4 /*yield*/, sleep(FOREGROUND_HANDLE_PREPARATION_TIME_MS)];\r\n case 3:\r\n // Wait three seconds for the client to initialize and set up the message handler so that it\r\n // can receive the message.\r\n _c.sent();\r\n return [3 /*break*/, 6];\r\n case 4: return [4 /*yield*/, client.focus()];\r\n case 5:\r\n client = _c.sent();\r\n _c.label = 6;\r\n case 6:\r\n if (!client) {\r\n // Window Client will not be returned if it's for a third party origin.\r\n return [2 /*return*/];\r\n }\r\n internalPayload.messageType = MessageType.NOTIFICATION_CLICKED;\r\n internalPayload.isFirebaseMessaging = true;\r\n return [2 /*return*/, client.postMessage(internalPayload)];\r\n }\r\n });\r\n });\r\n };\r\n return SwController;\r\n}());\r\nfunction wrapInternalPayload(internalPayload) {\r\n var _a;\r\n var wrappedInternalPayload = __assign({}, internalPayload.notification);\r\n // Put the message payload under FCM_MSG name so we can identify the notification as being an FCM\r\n // notification vs a notification from somewhere else (i.e. normal web push or developer generated\r\n // notification).\r\n wrappedInternalPayload.data = (_a = {},\r\n _a[FCM_MSG] = internalPayload,\r\n _a);\r\n return wrappedInternalPayload;\r\n}\r\nfunction getMessagePayloadInternal(_a) {\r\n var data = _a.data;\r\n if (!data) {\r\n return null;\r\n }\r\n try {\r\n return data.json();\r\n }\r\n catch (err) {\r\n // Not JSON so not an FCM message.\r\n return null;\r\n }\r\n}\r\n/**\r\n * @param url The URL to look for when focusing a client.\r\n * @return Returns an existing window client or a newly opened WindowClient.\r\n */\r\nfunction getWindowClient(url) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var clientList, clientList_1, clientList_1_1, client, clientUrl;\r\n var e_1, _a;\r\n return __generator(this, function (_b) {\r\n switch (_b.label) {\r\n case 0: return [4 /*yield*/, getClientList()];\r\n case 1:\r\n clientList = _b.sent();\r\n try {\r\n for (clientList_1 = __values(clientList), clientList_1_1 = clientList_1.next(); !clientList_1_1.done; clientList_1_1 = clientList_1.next()) {\r\n client = clientList_1_1.value;\r\n clientUrl = new URL(client.url, self.location.href);\r\n if (url.host === clientUrl.host) {\r\n return [2 /*return*/, client];\r\n }\r\n }\r\n }\r\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\r\n finally {\r\n try {\r\n if (clientList_1_1 && !clientList_1_1.done && (_a = clientList_1.return)) _a.call(clientList_1);\r\n }\r\n finally { if (e_1) throw e_1.error; }\r\n }\r\n return [2 /*return*/, null];\r\n }\r\n });\r\n });\r\n}\r\n/**\r\n * @returns If there is currently a visible WindowClient, this method will resolve to true,\r\n * otherwise false.\r\n */\r\nfunction hasVisibleClients(clientList) {\r\n return clientList.some(function (client) {\r\n return client.visibilityState === 'visible' &&\r\n // Ignore chrome-extension clients as that matches the background pages of extensions, which\r\n // are always considered visible for some reason.\r\n !client.url.startsWith('chrome-extension://');\r\n });\r\n}\r\nfunction sendMessagePayloadInternalToWindows(clientList, internalPayload) {\r\n var e_2, _a;\r\n internalPayload.isFirebaseMessaging = true;\r\n internalPayload.messageType = MessageType.PUSH_RECEIVED;\r\n try {\r\n for (var clientList_2 = __values(clientList), clientList_2_1 = clientList_2.next(); !clientList_2_1.done; clientList_2_1 = clientList_2.next()) {\r\n var client = clientList_2_1.value;\r\n client.postMessage(internalPayload);\r\n }\r\n }\r\n catch (e_2_1) { e_2 = { error: e_2_1 }; }\r\n finally {\r\n try {\r\n if (clientList_2_1 && !clientList_2_1.done && (_a = clientList_2.return)) _a.call(clientList_2);\r\n }\r\n finally { if (e_2) throw e_2.error; }\r\n }\r\n}\r\nfunction getClientList() {\r\n return self.clients.matchAll({\r\n type: 'window',\r\n includeUncontrolled: true\r\n // TS doesn't know that \"type: 'window'\" means it'll return WindowClient[]\r\n });\r\n}\r\nfunction showNotification(notificationPayloadInternal) {\r\n var _a;\r\n // Note: Firefox does not support the maxActions property.\r\n // https://developer.mozilla.org/en-US/docs/Web/API/notification/maxActions\r\n var actions = notificationPayloadInternal.actions;\r\n var maxActions = Notification.maxActions;\r\n if (actions && maxActions && actions.length > maxActions) {\r\n console.warn(\"This browser only supports \" + maxActions + \" actions. The remaining actions will not be displayed.\");\r\n }\r\n return self.registration.showNotification(\r\n /* title= */ (_a = notificationPayloadInternal.title) !== null && _a !== void 0 ? _a : '', notificationPayloadInternal);\r\n}\r\nfunction getLink(payload) {\r\n var _a, _b, _c;\r\n // eslint-disable-next-line camelcase\r\n var link = (_b = (_a = payload.fcmOptions) === null || _a === void 0 ? void 0 : _a.link) !== null && _b !== void 0 ? _b : (_c = payload.notification) === null || _c === void 0 ? void 0 : _c.click_action;\r\n if (link) {\r\n return link;\r\n }\r\n if (isConsoleMessage(payload.data)) {\r\n // Notification created in the Firebase Console. Redirect to origin.\r\n return self.location.origin;\r\n }\r\n else {\r\n return null;\r\n }\r\n}\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nvar WindowController = /** @class */ (function () {\r\n function WindowController(firebaseDependencies) {\r\n var _this = this;\r\n this.firebaseDependencies = firebaseDependencies;\r\n this.vapidKey = null;\r\n this.onMessageCallback = null;\r\n navigator.serviceWorker.addEventListener('message', function (e) {\r\n return _this.messageEventListener(e);\r\n });\r\n }\r\n Object.defineProperty(WindowController.prototype, \"app\", {\r\n get: function () {\r\n return this.firebaseDependencies.app;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n WindowController.prototype.messageEventListener = function (event) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var internalPayload, dataPayload;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n internalPayload = event.data;\r\n if (!internalPayload.isFirebaseMessaging) {\r\n return [2 /*return*/];\r\n }\r\n // onMessageCallback is either a function or observer/subscriber.\r\n // TODO: in the modularization release, have onMessage handle type MessagePayload as supposed to\r\n // the legacy payload where some fields are in snake cases.\r\n if (this.onMessageCallback &&\r\n internalPayload.messageType === MessageType.PUSH_RECEIVED) {\r\n if (typeof this.onMessageCallback === 'function') {\r\n this.onMessageCallback(stripInternalFields(Object.assign({}, internalPayload)));\r\n }\r\n else {\r\n this.onMessageCallback.next(Object.assign({}, internalPayload));\r\n }\r\n }\r\n dataPayload = internalPayload.data;\r\n if (!(isConsoleMessage(dataPayload) &&\r\n dataPayload[CONSOLE_CAMPAIGN_ANALYTICS_ENABLED] === '1')) return [3 /*break*/, 2];\r\n return [4 /*yield*/, this.logEvent(internalPayload.messageType, dataPayload)];\r\n case 1:\r\n _a.sent();\r\n _a.label = 2;\r\n case 2: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n WindowController.prototype.getVapidKey = function () {\r\n return this.vapidKey;\r\n };\r\n WindowController.prototype.getSwReg = function () {\r\n return this.swRegistration;\r\n };\r\n WindowController.prototype.getToken = function (options) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n if (!(Notification.permission === 'default')) return [3 /*break*/, 2];\r\n return [4 /*yield*/, Notification.requestPermission()];\r\n case 1:\r\n _a.sent();\r\n _a.label = 2;\r\n case 2:\r\n if (Notification.permission !== 'granted') {\r\n throw ERROR_FACTORY.create(\"permission-blocked\" /* PERMISSION_BLOCKED */);\r\n }\r\n return [4 /*yield*/, this.updateVapidKey(options === null || options === void 0 ? void 0 : options.vapidKey)];\r\n case 3:\r\n _a.sent();\r\n return [4 /*yield*/, this.updateSwReg(options === null || options === void 0 ? void 0 : options.serviceWorkerRegistration)];\r\n case 4:\r\n _a.sent();\r\n return [2 /*return*/, getToken(this.firebaseDependencies, this.swRegistration, this.vapidKey)];\r\n }\r\n });\r\n });\r\n };\r\n WindowController.prototype.updateVapidKey = function (vapidKey) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n return __generator(this, function (_a) {\r\n if (!!vapidKey) {\r\n this.vapidKey = vapidKey;\r\n }\r\n else if (!this.vapidKey) {\r\n this.vapidKey = DEFAULT_VAPID_KEY;\r\n }\r\n return [2 /*return*/];\r\n });\r\n });\r\n };\r\n WindowController.prototype.updateSwReg = function (swRegistration) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n if (!(!swRegistration && !this.swRegistration)) return [3 /*break*/, 2];\r\n return [4 /*yield*/, this.registerDefaultSw()];\r\n case 1:\r\n _a.sent();\r\n _a.label = 2;\r\n case 2:\r\n if (!swRegistration && !!this.swRegistration) {\r\n return [2 /*return*/];\r\n }\r\n if (!(swRegistration instanceof ServiceWorkerRegistration)) {\r\n throw ERROR_FACTORY.create(\"invalid-sw-registration\" /* INVALID_SW_REGISTRATION */);\r\n }\r\n this.swRegistration = swRegistration;\r\n return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n WindowController.prototype.registerDefaultSw = function () {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var _a, e_1;\r\n return __generator(this, function (_b) {\r\n switch (_b.label) {\r\n case 0:\r\n _b.trys.push([0, 2, , 3]);\r\n _a = this;\r\n return [4 /*yield*/, navigator.serviceWorker.register(DEFAULT_SW_PATH, {\r\n scope: DEFAULT_SW_SCOPE\r\n })];\r\n case 1:\r\n _a.swRegistration = _b.sent();\r\n // The timing when browser updates sw when sw has an update is unreliable by my experiment. It\r\n // leads to version conflict when the SDK upgrades to a newer version in the main page, but sw\r\n // is stuck with the old version. For example,\r\n // https://github.com/firebase/firebase-js-sdk/issues/2590 The following line reliably updates\r\n // sw if there was an update.\r\n this.swRegistration.update().catch(function () {\r\n /* it is non blocking and we don't care if it failed */\r\n });\r\n return [3 /*break*/, 3];\r\n case 2:\r\n e_1 = _b.sent();\r\n throw ERROR_FACTORY.create(\"failed-service-worker-registration\" /* FAILED_DEFAULT_REGISTRATION */, {\r\n browserErrorMessage: e_1.message\r\n });\r\n case 3: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n WindowController.prototype.deleteToken = function () {\r\n return __awaiter(this, void 0, void 0, function () {\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n if (!!this.swRegistration) return [3 /*break*/, 2];\r\n return [4 /*yield*/, this.registerDefaultSw()];\r\n case 1:\r\n _a.sent();\r\n _a.label = 2;\r\n case 2: return [2 /*return*/, deleteToken(this.firebaseDependencies, this.swRegistration)];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Request permission if it is not currently granted.\r\n *\r\n * @return Resolves if the permission was granted, rejects otherwise.\r\n *\r\n * @deprecated Use Notification.requestPermission() instead.\r\n * https://developer.mozilla.org/en-US/docs/Web/API/Notification/requestPermission\r\n */\r\n WindowController.prototype.requestPermission = function () {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var permissionResult;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n if (Notification.permission === 'granted') {\r\n return [2 /*return*/];\r\n }\r\n return [4 /*yield*/, Notification.requestPermission()];\r\n case 1:\r\n permissionResult = _a.sent();\r\n if (permissionResult === 'granted') {\r\n return [2 /*return*/];\r\n }\r\n else if (permissionResult === 'denied') {\r\n throw ERROR_FACTORY.create(\"permission-blocked\" /* PERMISSION_BLOCKED */);\r\n }\r\n else {\r\n throw ERROR_FACTORY.create(\"permission-default\" /* PERMISSION_DEFAULT */);\r\n }\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * @deprecated. Use getToken(options?: {vapidKey?: string; serviceWorkerRegistration?:\r\n * ServiceWorkerRegistration;}): Promise instead.\r\n */\r\n WindowController.prototype.usePublicVapidKey = function (vapidKey) {\r\n if (this.vapidKey !== null) {\r\n throw ERROR_FACTORY.create(\"use-vapid-key-after-get-token\" /* USE_VAPID_KEY_AFTER_GET_TOKEN */);\r\n }\r\n if (typeof vapidKey !== 'string' || vapidKey.length === 0) {\r\n throw ERROR_FACTORY.create(\"invalid-vapid-key\" /* INVALID_VAPID_KEY */);\r\n }\r\n this.vapidKey = vapidKey;\r\n };\r\n /**\r\n * @deprecated. Use getToken(options?: {vapidKey?: string; serviceWorkerRegistration?:\r\n * ServiceWorkerRegistration;}): Promise instead.\r\n */\r\n WindowController.prototype.useServiceWorker = function (swRegistration) {\r\n if (!(swRegistration instanceof ServiceWorkerRegistration)) {\r\n throw ERROR_FACTORY.create(\"invalid-sw-registration\" /* INVALID_SW_REGISTRATION */);\r\n }\r\n if (this.swRegistration) {\r\n throw ERROR_FACTORY.create(\"use-sw-after-get-token\" /* USE_SW_AFTER_GET_TOKEN */);\r\n }\r\n this.swRegistration = swRegistration;\r\n };\r\n /**\r\n * @param nextOrObserver An observer object or a function triggered on message.\r\n *\r\n * @return The unsubscribe function for the observer.\r\n */\r\n WindowController.prototype.onMessage = function (nextOrObserver) {\r\n var _this = this;\r\n this.onMessageCallback = nextOrObserver;\r\n return function () {\r\n _this.onMessageCallback = null;\r\n };\r\n };\r\n WindowController.prototype.setBackgroundMessageHandler = function () {\r\n throw ERROR_FACTORY.create(\"only-available-in-sw\" /* AVAILABLE_IN_SW */);\r\n };\r\n WindowController.prototype.onBackgroundMessage = function () {\r\n throw ERROR_FACTORY.create(\"only-available-in-sw\" /* AVAILABLE_IN_SW */);\r\n };\r\n /**\r\n * @deprecated No-op. It was initially designed with token rotation requests from server in mind.\r\n * However, the plan to implement such feature was abandoned.\r\n */\r\n WindowController.prototype.onTokenRefresh = function () {\r\n return function () { };\r\n };\r\n WindowController.prototype.logEvent = function (messageType, data) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var eventType, analytics;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n eventType = getEventType(messageType);\r\n return [4 /*yield*/, this.firebaseDependencies.analyticsProvider.get()];\r\n case 1:\r\n analytics = _a.sent();\r\n analytics.logEvent(eventType, {\r\n /* eslint-disable camelcase */\r\n message_id: data[CONSOLE_CAMPAIGN_ID],\r\n message_name: data[CONSOLE_CAMPAIGN_NAME],\r\n message_time: data[CONSOLE_CAMPAIGN_TIME],\r\n message_device_time: Math.floor(Date.now() / 1000)\r\n /* eslint-enable camelcase */\r\n });\r\n return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n return WindowController;\r\n}());\r\nfunction getEventType(messageType) {\r\n switch (messageType) {\r\n case MessageType.NOTIFICATION_CLICKED:\r\n return 'notification_open';\r\n case MessageType.PUSH_RECEIVED:\r\n return 'notification_foreground';\r\n default:\r\n throw new Error();\r\n }\r\n}\r\nfunction stripInternalFields(internalPayload) {\r\n delete internalPayload.messageType;\r\n delete internalPayload.isFirebaseMessaging;\r\n return internalPayload;\r\n}\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nfunction extractAppConfig(app) {\r\n var e_1, _a;\r\n if (!app || !app.options) {\r\n throw getMissingValueError('App Configuration Object');\r\n }\r\n if (!app.name) {\r\n throw getMissingValueError('App Name');\r\n }\r\n // Required app config keys\r\n var configKeys = [\r\n 'projectId',\r\n 'apiKey',\r\n 'appId',\r\n 'messagingSenderId'\r\n ];\r\n var options = app.options;\r\n try {\r\n for (var configKeys_1 = __values(configKeys), configKeys_1_1 = configKeys_1.next(); !configKeys_1_1.done; configKeys_1_1 = configKeys_1.next()) {\r\n var keyName = configKeys_1_1.value;\r\n if (!options[keyName]) {\r\n throw getMissingValueError(keyName);\r\n }\r\n }\r\n }\r\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\r\n finally {\r\n try {\r\n if (configKeys_1_1 && !configKeys_1_1.done && (_a = configKeys_1.return)) _a.call(configKeys_1);\r\n }\r\n finally { if (e_1) throw e_1.error; }\r\n }\r\n return {\r\n appName: app.name,\r\n projectId: options.projectId,\r\n apiKey: options.apiKey,\r\n appId: options.appId,\r\n senderId: options.messagingSenderId\r\n };\r\n}\r\nfunction getMissingValueError(valueName) {\r\n return ERROR_FACTORY.create(\"missing-app-config-values\" /* MISSING_APP_CONFIG_VALUES */, {\r\n valueName: valueName\r\n });\r\n}\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nvar MESSAGING_NAME = 'messaging';\r\nfunction factoryMethod(container) {\r\n // Dependencies.\r\n var app = container.getProvider('app').getImmediate();\r\n var appConfig = extractAppConfig(app);\r\n var installations = container.getProvider('installations').getImmediate();\r\n var analyticsProvider = container.getProvider('analytics-internal');\r\n var firebaseDependencies = {\r\n app: app,\r\n appConfig: appConfig,\r\n installations: installations,\r\n analyticsProvider: analyticsProvider\r\n };\r\n if (!isSupported()) {\r\n throw ERROR_FACTORY.create(\"unsupported-browser\" /* UNSUPPORTED_BROWSER */);\r\n }\r\n if (self && 'ServiceWorkerGlobalScope' in self) {\r\n // Running in ServiceWorker context\r\n return new SwController(firebaseDependencies);\r\n }\r\n else {\r\n // Assume we are in the window context.\r\n return new WindowController(firebaseDependencies);\r\n }\r\n}\r\nvar NAMESPACE_EXPORTS = {\r\n isSupported: isSupported\r\n};\r\nfirebase.INTERNAL.registerComponent(new Component(MESSAGING_NAME, factoryMethod, \"PUBLIC\" /* PUBLIC */).setServiceProps(NAMESPACE_EXPORTS));\r\nfunction isSupported() {\r\n if (self && 'ServiceWorkerGlobalScope' in self) {\r\n // Running in ServiceWorker context\r\n return isSWControllerSupported();\r\n }\r\n else {\r\n // Assume we are in the window context.\r\n return isWindowControllerSupported();\r\n }\r\n}\r\n/**\r\n * Checks to see if the required APIs exist.\r\n */\r\nfunction isWindowControllerSupported() {\r\n return ('indexedDB' in window &&\r\n indexedDB !== null &&\r\n navigator.cookieEnabled &&\r\n 'serviceWorker' in navigator &&\r\n 'PushManager' in window &&\r\n 'Notification' in window &&\r\n 'fetch' in window &&\r\n ServiceWorkerRegistration.prototype.hasOwnProperty('showNotification') &&\r\n PushSubscription.prototype.hasOwnProperty('getKey'));\r\n}\r\n/**\r\n * Checks to see if the required APIs exist within SW Context.\r\n */\r\nfunction isSWControllerSupported() {\r\n return ('indexedDB' in self &&\r\n indexedDB !== null &&\r\n 'PushManager' in self &&\r\n 'Notification' in self &&\r\n ServiceWorkerRegistration.prototype.hasOwnProperty('showNotification') &&\r\n PushSubscription.prototype.hasOwnProperty('getKey'));\r\n}\n//# sourceMappingURL=index.esm.js.map\n","import firebase from '@firebase/app';\nimport { __extends, __spreadArray, __awaiter, __generator, __assign } from 'tslib';\nimport { FirebaseError, createMockUserToken, getModularInstance } from '@firebase/util';\nimport { Component } from '@firebase/component';\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * @fileoverview Constants used in the Firebase Storage library.\r\n */\r\n/**\r\n * Domain name for firebase storage.\r\n */\r\nvar DEFAULT_HOST = 'firebasestorage.googleapis.com';\r\n/**\r\n * The key in Firebase config json for the storage bucket.\r\n */\r\nvar CONFIG_STORAGE_BUCKET_KEY = 'storageBucket';\r\n/**\r\n * 2 minutes\r\n *\r\n * The timeout for all operations except upload.\r\n */\r\nvar DEFAULT_MAX_OPERATION_RETRY_TIME = 2 * 60 * 1000;\r\n/**\r\n * 10 minutes\r\n *\r\n * The timeout for upload.\r\n */\r\nvar DEFAULT_MAX_UPLOAD_RETRY_TIME = 10 * 60 * 1000;\n\n/**\r\n * An error returned by the Firebase Storage SDK.\r\n * @public\r\n */\r\nvar FirebaseStorageError = /** @class */ (function (_super) {\r\n __extends(FirebaseStorageError, _super);\r\n /**\r\n * @param code - A StorageErrorCode string to be prefixed with 'storage/' and\r\n * added to the end of the message.\r\n * @param message - Error message.\r\n */\r\n function FirebaseStorageError(code, message) {\r\n var _this = _super.call(this, prependCode(code), \"Firebase Storage: \" + message + \" (\" + prependCode(code) + \")\") || this;\r\n /**\r\n * Stores custom error data unque to FirebaseStorageError.\r\n */\r\n _this.customData = { serverResponse: null };\r\n _this._baseMessage = _this.message;\r\n // Without this, `instanceof FirebaseStorageError`, in tests for example,\r\n // returns false.\r\n Object.setPrototypeOf(_this, FirebaseStorageError.prototype);\r\n return _this;\r\n }\r\n /**\r\n * Compares a StorageErrorCode against this error's code, filtering out the prefix.\r\n */\r\n FirebaseStorageError.prototype._codeEquals = function (code) {\r\n return prependCode(code) === this.code;\r\n };\r\n Object.defineProperty(FirebaseStorageError.prototype, \"serverResponse\", {\r\n /**\r\n * Optional response message that was added by the server.\r\n */\r\n get: function () {\r\n return this.customData.serverResponse;\r\n },\r\n set: function (serverResponse) {\r\n this.customData.serverResponse = serverResponse;\r\n if (this.customData.serverResponse) {\r\n this.message = this._baseMessage + \"\\n\" + this.customData.serverResponse;\r\n }\r\n else {\r\n this.message = this._baseMessage;\r\n }\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n return FirebaseStorageError;\r\n}(FirebaseError));\r\nfunction prependCode(code) {\r\n return 'storage/' + code;\r\n}\r\nfunction unknown() {\r\n var message = 'An unknown error occurred, please check the error payload for ' +\r\n 'server response.';\r\n return new FirebaseStorageError(\"unknown\" /* UNKNOWN */, message);\r\n}\r\nfunction objectNotFound(path) {\r\n return new FirebaseStorageError(\"object-not-found\" /* OBJECT_NOT_FOUND */, \"Object '\" + path + \"' does not exist.\");\r\n}\r\nfunction quotaExceeded(bucket) {\r\n return new FirebaseStorageError(\"quota-exceeded\" /* QUOTA_EXCEEDED */, \"Quota for bucket '\" +\r\n bucket +\r\n \"' exceeded, please view quota on \" +\r\n 'https://firebase.google.com/pricing/.');\r\n}\r\nfunction unauthenticated() {\r\n var message = 'User is not authenticated, please authenticate using Firebase ' +\r\n 'Authentication and try again.';\r\n return new FirebaseStorageError(\"unauthenticated\" /* UNAUTHENTICATED */, message);\r\n}\r\nfunction unauthorizedApp() {\r\n return new FirebaseStorageError(\"unauthorized-app\" /* UNAUTHORIZED_APP */, 'This app does not have permission to access Firebase Storage on this project.');\r\n}\r\nfunction unauthorized(path) {\r\n return new FirebaseStorageError(\"unauthorized\" /* UNAUTHORIZED */, \"User does not have permission to access '\" + path + \"'.\");\r\n}\r\nfunction retryLimitExceeded() {\r\n return new FirebaseStorageError(\"retry-limit-exceeded\" /* RETRY_LIMIT_EXCEEDED */, 'Max retry time for operation exceeded, please try again.');\r\n}\r\nfunction canceled() {\r\n return new FirebaseStorageError(\"canceled\" /* CANCELED */, 'User canceled the upload/download.');\r\n}\r\nfunction invalidUrl(url) {\r\n return new FirebaseStorageError(\"invalid-url\" /* INVALID_URL */, \"Invalid URL '\" + url + \"'.\");\r\n}\r\nfunction invalidDefaultBucket(bucket) {\r\n return new FirebaseStorageError(\"invalid-default-bucket\" /* INVALID_DEFAULT_BUCKET */, \"Invalid default bucket '\" + bucket + \"'.\");\r\n}\r\nfunction noDefaultBucket() {\r\n return new FirebaseStorageError(\"no-default-bucket\" /* NO_DEFAULT_BUCKET */, 'No default bucket ' +\r\n \"found. Did you set the '\" +\r\n CONFIG_STORAGE_BUCKET_KEY +\r\n \"' property when initializing the app?\");\r\n}\r\nfunction cannotSliceBlob() {\r\n return new FirebaseStorageError(\"cannot-slice-blob\" /* CANNOT_SLICE_BLOB */, 'Cannot slice blob for upload. Please retry the upload.');\r\n}\r\nfunction serverFileWrongSize() {\r\n return new FirebaseStorageError(\"server-file-wrong-size\" /* SERVER_FILE_WRONG_SIZE */, 'Server recorded incorrect upload file size, please retry the upload.');\r\n}\r\nfunction noDownloadURL() {\r\n return new FirebaseStorageError(\"no-download-url\" /* NO_DOWNLOAD_URL */, 'The given file does not have any download URLs.');\r\n}\r\nfunction invalidArgument(message) {\r\n return new FirebaseStorageError(\"invalid-argument\" /* INVALID_ARGUMENT */, message);\r\n}\r\nfunction appDeleted() {\r\n return new FirebaseStorageError(\"app-deleted\" /* APP_DELETED */, 'The Firebase app was deleted.');\r\n}\r\n/**\r\n * @param name - The name of the operation that was invalid.\r\n */\r\nfunction invalidRootOperation(name) {\r\n return new FirebaseStorageError(\"invalid-root-operation\" /* INVALID_ROOT_OPERATION */, \"The operation '\" +\r\n name +\r\n \"' cannot be performed on a root reference, create a non-root \" +\r\n \"reference using child, such as .child('file.png').\");\r\n}\r\n/**\r\n * @param format - The format that was not valid.\r\n * @param message - A message describing the format violation.\r\n */\r\nfunction invalidFormat(format, message) {\r\n return new FirebaseStorageError(\"invalid-format\" /* INVALID_FORMAT */, \"String does not match format '\" + format + \"': \" + message);\r\n}\r\n/**\r\n * @param message - A message describing the internal error.\r\n */\r\nfunction internalError(message) {\r\n throw new FirebaseStorageError(\"internal-error\" /* INTERNAL_ERROR */, 'Internal error: ' + message);\r\n}\n\n/**\r\n * @license\r\n * Copyright 2021 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/** Converts a Base64 encoded string to a binary string. */\r\nfunction decodeBase64(encoded) {\r\n return atob(encoded);\r\n}\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * An enumeration of the possible string formats for upload.\r\n * @public\r\n */\r\nvar StringFormat = {\r\n /**\r\n * Indicates the string should be interpreted \"raw\", that is, as normal text.\r\n * The string will be interpreted as UTF-16, then uploaded as a UTF-8 byte\r\n * sequence.\r\n * Example: The string 'Hello! \\\\ud83d\\\\ude0a' becomes the byte sequence\r\n * 48 65 6c 6c 6f 21 20 f0 9f 98 8a\r\n */\r\n RAW: 'raw',\r\n /**\r\n * Indicates the string should be interpreted as base64-encoded data.\r\n * Padding characters (trailing '='s) are optional.\r\n * Example: The string 'rWmO++E6t7/rlw==' becomes the byte sequence\r\n * ad 69 8e fb e1 3a b7 bf eb 97\r\n */\r\n BASE64: 'base64',\r\n /**\r\n * Indicates the string should be interpreted as base64url-encoded data.\r\n * Padding characters (trailing '='s) are optional.\r\n * Example: The string 'rWmO--E6t7_rlw==' becomes the byte sequence\r\n * ad 69 8e fb e1 3a b7 bf eb 97\r\n */\r\n BASE64URL: 'base64url',\r\n /**\r\n * Indicates the string is a data URL, such as one obtained from\r\n * canvas.toDataURL().\r\n * Example: the string 'data:application/octet-stream;base64,aaaa'\r\n * becomes the byte sequence\r\n * 69 a6 9a\r\n * (the content-type \"application/octet-stream\" is also applied, but can\r\n * be overridden in the metadata object).\r\n */\r\n DATA_URL: 'data_url'\r\n};\r\nvar StringData = /** @class */ (function () {\r\n function StringData(data, contentType) {\r\n this.data = data;\r\n this.contentType = contentType || null;\r\n }\r\n return StringData;\r\n}());\r\nfunction dataFromString(format, stringData) {\r\n switch (format) {\r\n case StringFormat.RAW:\r\n return new StringData(utf8Bytes_(stringData));\r\n case StringFormat.BASE64:\r\n case StringFormat.BASE64URL:\r\n return new StringData(base64Bytes_(format, stringData));\r\n case StringFormat.DATA_URL:\r\n return new StringData(dataURLBytes_(stringData), dataURLContentType_(stringData));\r\n // do nothing\r\n }\r\n // assert(false);\r\n throw unknown();\r\n}\r\nfunction utf8Bytes_(value) {\r\n var b = [];\r\n for (var i = 0; i < value.length; i++) {\r\n var c = value.charCodeAt(i);\r\n if (c <= 127) {\r\n b.push(c);\r\n }\r\n else {\r\n if (c <= 2047) {\r\n b.push(192 | (c >> 6), 128 | (c & 63));\r\n }\r\n else {\r\n if ((c & 64512) === 55296) {\r\n // The start of a surrogate pair.\r\n var valid = i < value.length - 1 && (value.charCodeAt(i + 1) & 64512) === 56320;\r\n if (!valid) {\r\n // The second surrogate wasn't there.\r\n b.push(239, 191, 189);\r\n }\r\n else {\r\n var hi = c;\r\n var lo = value.charCodeAt(++i);\r\n c = 65536 | ((hi & 1023) << 10) | (lo & 1023);\r\n b.push(240 | (c >> 18), 128 | ((c >> 12) & 63), 128 | ((c >> 6) & 63), 128 | (c & 63));\r\n }\r\n }\r\n else {\r\n if ((c & 64512) === 56320) {\r\n // Invalid low surrogate.\r\n b.push(239, 191, 189);\r\n }\r\n else {\r\n b.push(224 | (c >> 12), 128 | ((c >> 6) & 63), 128 | (c & 63));\r\n }\r\n }\r\n }\r\n }\r\n }\r\n return new Uint8Array(b);\r\n}\r\nfunction percentEncodedBytes_(value) {\r\n var decoded;\r\n try {\r\n decoded = decodeURIComponent(value);\r\n }\r\n catch (e) {\r\n throw invalidFormat(StringFormat.DATA_URL, 'Malformed data URL.');\r\n }\r\n return utf8Bytes_(decoded);\r\n}\r\nfunction base64Bytes_(format, value) {\r\n switch (format) {\r\n case StringFormat.BASE64: {\r\n var hasMinus = value.indexOf('-') !== -1;\r\n var hasUnder = value.indexOf('_') !== -1;\r\n if (hasMinus || hasUnder) {\r\n var invalidChar = hasMinus ? '-' : '_';\r\n throw invalidFormat(format, \"Invalid character '\" +\r\n invalidChar +\r\n \"' found: is it base64url encoded?\");\r\n }\r\n break;\r\n }\r\n case StringFormat.BASE64URL: {\r\n var hasPlus = value.indexOf('+') !== -1;\r\n var hasSlash = value.indexOf('/') !== -1;\r\n if (hasPlus || hasSlash) {\r\n var invalidChar = hasPlus ? '+' : '/';\r\n throw invalidFormat(format, \"Invalid character '\" + invalidChar + \"' found: is it base64 encoded?\");\r\n }\r\n value = value.replace(/-/g, '+').replace(/_/g, '/');\r\n break;\r\n }\r\n // do nothing\r\n }\r\n var bytes;\r\n try {\r\n bytes = decodeBase64(value);\r\n }\r\n catch (e) {\r\n throw invalidFormat(format, 'Invalid character found');\r\n }\r\n var array = new Uint8Array(bytes.length);\r\n for (var i = 0; i < bytes.length; i++) {\r\n array[i] = bytes.charCodeAt(i);\r\n }\r\n return array;\r\n}\r\nvar DataURLParts = /** @class */ (function () {\r\n function DataURLParts(dataURL) {\r\n this.base64 = false;\r\n this.contentType = null;\r\n var matches = dataURL.match(/^data:([^,]+)?,/);\r\n if (matches === null) {\r\n throw invalidFormat(StringFormat.DATA_URL, \"Must be formatted 'data:[][;base64],\");\r\n }\r\n var middle = matches[1] || null;\r\n if (middle != null) {\r\n this.base64 = endsWith(middle, ';base64');\r\n this.contentType = this.base64\r\n ? middle.substring(0, middle.length - ';base64'.length)\r\n : middle;\r\n }\r\n this.rest = dataURL.substring(dataURL.indexOf(',') + 1);\r\n }\r\n return DataURLParts;\r\n}());\r\nfunction dataURLBytes_(dataUrl) {\r\n var parts = new DataURLParts(dataUrl);\r\n if (parts.base64) {\r\n return base64Bytes_(StringFormat.BASE64, parts.rest);\r\n }\r\n else {\r\n return percentEncodedBytes_(parts.rest);\r\n }\r\n}\r\nfunction dataURLContentType_(dataUrl) {\r\n var parts = new DataURLParts(dataUrl);\r\n return parts.contentType;\r\n}\r\nfunction endsWith(s, end) {\r\n var longEnough = s.length >= end.length;\r\n if (!longEnough) {\r\n return false;\r\n }\r\n return s.substring(s.length - end.length) === end;\r\n}\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * An event that is triggered on a task.\r\n */\r\nvar TaskEvent = {\r\n /**\r\n * For this event,\r\n *
    \r\n *
  • The `next` function is triggered on progress updates and when the\r\n * task is paused/resumed with an `UploadTaskSnapshot` as the first\r\n * argument.
  • \r\n *
  • The `error` function is triggered if the upload is canceled or fails\r\n * for another reason.
  • \r\n *
  • The `complete` function is triggered if the upload completes\r\n * successfully.
  • \r\n *
\r\n */\r\n STATE_CHANGED: 'state_changed'\r\n};\r\n/**\r\n * Represents the current state of a running upload.\r\n */\r\nvar TaskState = {\r\n /** The task is currently transferring data. */\r\n RUNNING: 'running',\r\n /** The task was paused by the user. */\r\n PAUSED: 'paused',\r\n /** The task completed successfully. */\r\n SUCCESS: 'success',\r\n /** The task was canceled. */\r\n CANCELED: 'canceled',\r\n /** The task failed with an error. */\r\n ERROR: 'error'\r\n};\r\nfunction taskStateFromInternalTaskState(state) {\r\n switch (state) {\r\n case \"running\" /* RUNNING */:\r\n case \"pausing\" /* PAUSING */:\r\n case \"canceling\" /* CANCELING */:\r\n return TaskState.RUNNING;\r\n case \"paused\" /* PAUSED */:\r\n return TaskState.PAUSED;\r\n case \"success\" /* SUCCESS */:\r\n return TaskState.SUCCESS;\r\n case \"canceled\" /* CANCELED */:\r\n return TaskState.CANCELED;\r\n case \"error\" /* ERROR */:\r\n return TaskState.ERROR;\r\n default:\r\n // TODO(andysoto): assert(false);\r\n return TaskState.ERROR;\r\n }\r\n}\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * Error codes for requests made by the the XhrIo wrapper.\r\n */\r\nvar ErrorCode;\r\n(function (ErrorCode) {\r\n ErrorCode[ErrorCode[\"NO_ERROR\"] = 0] = \"NO_ERROR\";\r\n ErrorCode[ErrorCode[\"NETWORK_ERROR\"] = 1] = \"NETWORK_ERROR\";\r\n ErrorCode[ErrorCode[\"ABORT\"] = 2] = \"ABORT\";\r\n})(ErrorCode || (ErrorCode = {}));\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * Network layer for browsers. We use this instead of goog.net.XhrIo because\r\n * goog.net.XhrIo is hyuuuuge and doesn't work in React Native on Android.\r\n */\r\nvar XhrConnection = /** @class */ (function () {\r\n function XhrConnection() {\r\n var _this = this;\r\n this.sent_ = false;\r\n this.xhr_ = new XMLHttpRequest();\r\n this.errorCode_ = ErrorCode.NO_ERROR;\r\n this.sendPromise_ = new Promise(function (resolve) {\r\n _this.xhr_.addEventListener('abort', function () {\r\n _this.errorCode_ = ErrorCode.ABORT;\r\n resolve();\r\n });\r\n _this.xhr_.addEventListener('error', function () {\r\n _this.errorCode_ = ErrorCode.NETWORK_ERROR;\r\n resolve();\r\n });\r\n _this.xhr_.addEventListener('load', function () {\r\n resolve();\r\n });\r\n });\r\n }\r\n /**\r\n * @override\r\n */\r\n XhrConnection.prototype.send = function (url, method, body, headers) {\r\n if (this.sent_) {\r\n throw internalError('cannot .send() more than once');\r\n }\r\n this.sent_ = true;\r\n this.xhr_.open(method, url, true);\r\n if (headers !== undefined) {\r\n for (var key in headers) {\r\n if (headers.hasOwnProperty(key)) {\r\n this.xhr_.setRequestHeader(key, headers[key].toString());\r\n }\r\n }\r\n }\r\n if (body !== undefined) {\r\n this.xhr_.send(body);\r\n }\r\n else {\r\n this.xhr_.send();\r\n }\r\n return this.sendPromise_;\r\n };\r\n /**\r\n * @override\r\n */\r\n XhrConnection.prototype.getErrorCode = function () {\r\n if (!this.sent_) {\r\n throw internalError('cannot .getErrorCode() before sending');\r\n }\r\n return this.errorCode_;\r\n };\r\n /**\r\n * @override\r\n */\r\n XhrConnection.prototype.getStatus = function () {\r\n if (!this.sent_) {\r\n throw internalError('cannot .getStatus() before sending');\r\n }\r\n try {\r\n return this.xhr_.status;\r\n }\r\n catch (e) {\r\n return -1;\r\n }\r\n };\r\n /**\r\n * @override\r\n */\r\n XhrConnection.prototype.getResponseText = function () {\r\n if (!this.sent_) {\r\n throw internalError('cannot .getResponseText() before sending');\r\n }\r\n return this.xhr_.responseText;\r\n };\r\n /**\r\n * Aborts the request.\r\n * @override\r\n */\r\n XhrConnection.prototype.abort = function () {\r\n this.xhr_.abort();\r\n };\r\n /**\r\n * @override\r\n */\r\n XhrConnection.prototype.getResponseHeader = function (header) {\r\n return this.xhr_.getResponseHeader(header);\r\n };\r\n /**\r\n * @override\r\n */\r\n XhrConnection.prototype.addUploadProgressListener = function (listener) {\r\n if (this.xhr_.upload != null) {\r\n this.xhr_.upload.addEventListener('progress', listener);\r\n }\r\n };\r\n /**\r\n * @override\r\n */\r\n XhrConnection.prototype.removeUploadProgressListener = function (listener) {\r\n if (this.xhr_.upload != null) {\r\n this.xhr_.upload.removeEventListener('progress', listener);\r\n }\r\n };\r\n return XhrConnection;\r\n}());\r\nfunction newConnection() {\r\n return new XhrConnection();\r\n}\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * Factory-like class for creating XhrIo instances.\r\n */\r\nvar ConnectionPool = /** @class */ (function () {\r\n function ConnectionPool() {\r\n }\r\n ConnectionPool.prototype.createConnection = function () {\r\n return newConnection();\r\n };\r\n return ConnectionPool;\r\n}());\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * Firebase Storage location data.\r\n *\r\n * @internal\r\n */\r\nvar Location = /** @class */ (function () {\r\n function Location(bucket, path) {\r\n this.bucket = bucket;\r\n this.path_ = path;\r\n }\r\n Object.defineProperty(Location.prototype, \"path\", {\r\n get: function () {\r\n return this.path_;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(Location.prototype, \"isRoot\", {\r\n get: function () {\r\n return this.path.length === 0;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Location.prototype.fullServerUrl = function () {\r\n var encode = encodeURIComponent;\r\n return '/b/' + encode(this.bucket) + '/o/' + encode(this.path);\r\n };\r\n Location.prototype.bucketOnlyServerUrl = function () {\r\n var encode = encodeURIComponent;\r\n return '/b/' + encode(this.bucket) + '/o';\r\n };\r\n Location.makeFromBucketSpec = function (bucketString, host) {\r\n var bucketLocation;\r\n try {\r\n bucketLocation = Location.makeFromUrl(bucketString, host);\r\n }\r\n catch (e) {\r\n // Not valid URL, use as-is. This lets you put bare bucket names in\r\n // config.\r\n return new Location(bucketString, '');\r\n }\r\n if (bucketLocation.path === '') {\r\n return bucketLocation;\r\n }\r\n else {\r\n throw invalidDefaultBucket(bucketString);\r\n }\r\n };\r\n Location.makeFromUrl = function (url, host) {\r\n var location = null;\r\n var bucketDomain = '([A-Za-z0-9.\\\\-_]+)';\r\n function gsModify(loc) {\r\n if (loc.path.charAt(loc.path.length - 1) === '/') {\r\n loc.path_ = loc.path_.slice(0, -1);\r\n }\r\n }\r\n var gsPath = '(/(.*))?$';\r\n var gsRegex = new RegExp('^gs://' + bucketDomain + gsPath, 'i');\r\n var gsIndices = { bucket: 1, path: 3 };\r\n function httpModify(loc) {\r\n loc.path_ = decodeURIComponent(loc.path);\r\n }\r\n var version = 'v[A-Za-z0-9_]+';\r\n var firebaseStorageHost = host.replace(/[.]/g, '\\\\.');\r\n var firebaseStoragePath = '(/([^?#]*).*)?$';\r\n var firebaseStorageRegExp = new RegExp(\"^https?://\" + firebaseStorageHost + \"/\" + version + \"/b/\" + bucketDomain + \"/o\" + firebaseStoragePath, 'i');\r\n var firebaseStorageIndices = { bucket: 1, path: 3 };\r\n var cloudStorageHost = host === DEFAULT_HOST\r\n ? '(?:storage.googleapis.com|storage.cloud.google.com)'\r\n : host;\r\n var cloudStoragePath = '([^?#]*)';\r\n var cloudStorageRegExp = new RegExp(\"^https?://\" + cloudStorageHost + \"/\" + bucketDomain + \"/\" + cloudStoragePath, 'i');\r\n var cloudStorageIndices = { bucket: 1, path: 2 };\r\n var groups = [\r\n { regex: gsRegex, indices: gsIndices, postModify: gsModify },\r\n {\r\n regex: firebaseStorageRegExp,\r\n indices: firebaseStorageIndices,\r\n postModify: httpModify\r\n },\r\n {\r\n regex: cloudStorageRegExp,\r\n indices: cloudStorageIndices,\r\n postModify: httpModify\r\n }\r\n ];\r\n for (var i = 0; i < groups.length; i++) {\r\n var group = groups[i];\r\n var captures = group.regex.exec(url);\r\n if (captures) {\r\n var bucketValue = captures[group.indices.bucket];\r\n var pathValue = captures[group.indices.path];\r\n if (!pathValue) {\r\n pathValue = '';\r\n }\r\n location = new Location(bucketValue, pathValue);\r\n group.postModify(location);\r\n break;\r\n }\r\n }\r\n if (location == null) {\r\n throw invalidUrl(url);\r\n }\r\n return location;\r\n };\r\n return Location;\r\n}());\n\n/**\r\n * A request whose promise always fails.\r\n */\r\nvar FailRequest = /** @class */ (function () {\r\n function FailRequest(error) {\r\n this.promise_ = Promise.reject(error);\r\n }\r\n /** @inheritDoc */\r\n FailRequest.prototype.getPromise = function () {\r\n return this.promise_;\r\n };\r\n /** @inheritDoc */\r\n FailRequest.prototype.cancel = function (_appDelete) {\r\n };\r\n return FailRequest;\r\n}());\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * @param f May be invoked\r\n * before the function returns.\r\n * @param callback Get all the arguments passed to the function\r\n * passed to f, including the initial boolean.\r\n */\r\nfunction start(f, \r\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\r\ncallback, timeout) {\r\n // TODO(andysoto): make this code cleaner (probably refactor into an actual\r\n // type instead of a bunch of functions with state shared in the closure)\r\n var waitSeconds = 1;\r\n // Would type this as \"number\" but that doesn't work for Node so ¯\\_(ツ)_/¯\r\n // TODO: find a way to exclude Node type definition for storage because storage only works in browser\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n var timeoutId = null;\r\n var hitTimeout = false;\r\n var cancelState = 0;\r\n function canceled() {\r\n return cancelState === 2;\r\n }\r\n var triggeredCallback = false;\r\n function triggerCallback() {\r\n var args = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n args[_i] = arguments[_i];\r\n }\r\n if (!triggeredCallback) {\r\n triggeredCallback = true;\r\n callback.apply(null, args);\r\n }\r\n }\r\n function callWithDelay(millis) {\r\n timeoutId = setTimeout(function () {\r\n timeoutId = null;\r\n f(handler, canceled());\r\n }, millis);\r\n }\r\n function handler(success) {\r\n var args = [];\r\n for (var _i = 1; _i < arguments.length; _i++) {\r\n args[_i - 1] = arguments[_i];\r\n }\r\n if (triggeredCallback) {\r\n return;\r\n }\r\n if (success) {\r\n triggerCallback.call.apply(triggerCallback, __spreadArray([null, success], args));\r\n return;\r\n }\r\n var mustStop = canceled() || hitTimeout;\r\n if (mustStop) {\r\n triggerCallback.call.apply(triggerCallback, __spreadArray([null, success], args));\r\n return;\r\n }\r\n if (waitSeconds < 64) {\r\n /* TODO(andysoto): don't back off so quickly if we know we're offline. */\r\n waitSeconds *= 2;\r\n }\r\n var waitMillis;\r\n if (cancelState === 1) {\r\n cancelState = 2;\r\n waitMillis = 0;\r\n }\r\n else {\r\n waitMillis = (waitSeconds + Math.random()) * 1000;\r\n }\r\n callWithDelay(waitMillis);\r\n }\r\n var stopped = false;\r\n function stop(wasTimeout) {\r\n if (stopped) {\r\n return;\r\n }\r\n stopped = true;\r\n if (triggeredCallback) {\r\n return;\r\n }\r\n if (timeoutId !== null) {\r\n if (!wasTimeout) {\r\n cancelState = 2;\r\n }\r\n clearTimeout(timeoutId);\r\n callWithDelay(0);\r\n }\r\n else {\r\n if (!wasTimeout) {\r\n cancelState = 1;\r\n }\r\n }\r\n }\r\n callWithDelay(0);\r\n setTimeout(function () {\r\n hitTimeout = true;\r\n stop(true);\r\n }, timeout);\r\n return stop;\r\n}\r\n/**\r\n * Stops the retry loop from repeating.\r\n * If the function is currently \"in between\" retries, it is invoked immediately\r\n * with the second parameter as \"true\". Otherwise, it will be invoked once more\r\n * after the current invocation finishes iff the current invocation would have\r\n * triggered another retry.\r\n */\r\nfunction stop(id) {\r\n id(false);\r\n}\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nfunction isJustDef(p) {\r\n return p !== void 0;\r\n}\r\n// eslint-disable-next-line @typescript-eslint/ban-types\r\nfunction isFunction(p) {\r\n return typeof p === 'function';\r\n}\r\nfunction isNonArrayObject(p) {\r\n return typeof p === 'object' && !Array.isArray(p);\r\n}\r\nfunction isString(p) {\r\n return typeof p === 'string' || p instanceof String;\r\n}\r\nfunction isNativeBlob(p) {\r\n return isNativeBlobDefined() && p instanceof Blob;\r\n}\r\nfunction isNativeBlobDefined() {\r\n return typeof Blob !== 'undefined';\r\n}\r\nfunction validateNumber(argument, minValue, maxValue, value) {\r\n if (value < minValue) {\r\n throw invalidArgument(\"Invalid value for '\" + argument + \"'. Expected \" + minValue + \" or greater.\");\r\n }\r\n if (value > maxValue) {\r\n throw invalidArgument(\"Invalid value for '\" + argument + \"'. Expected \" + maxValue + \" or less.\");\r\n }\r\n}\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nfunction makeUrl(urlPart, host) {\r\n var protocolMatch = host.match(/^(\\w+):\\/\\/.+/);\r\n var protocol = protocolMatch === null || protocolMatch === void 0 ? void 0 : protocolMatch[1];\r\n var origin = host;\r\n if (protocol == null) {\r\n origin = \"https://\" + host;\r\n }\r\n return origin + \"/v0\" + urlPart;\r\n}\r\nfunction makeQueryString(params) {\r\n var encode = encodeURIComponent;\r\n var queryPart = '?';\r\n for (var key in params) {\r\n if (params.hasOwnProperty(key)) {\r\n var nextPart = encode(key) + '=' + encode(params[key]);\r\n queryPart = queryPart + nextPart + '&';\r\n }\r\n }\r\n // Chop off the extra '&' or '?' on the end\r\n queryPart = queryPart.slice(0, -1);\r\n return queryPart;\r\n}\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nvar NetworkRequest = /** @class */ (function () {\r\n function NetworkRequest(url, method, headers, body, successCodes, additionalRetryCodes, callback, errorCallback, timeout, progressCallback, pool) {\r\n var _this = this;\r\n this.pendingConnection_ = null;\r\n this.backoffId_ = null;\r\n this.canceled_ = false;\r\n this.appDelete_ = false;\r\n this.url_ = url;\r\n this.method_ = method;\r\n this.headers_ = headers;\r\n this.body_ = body;\r\n this.successCodes_ = successCodes.slice();\r\n this.additionalRetryCodes_ = additionalRetryCodes.slice();\r\n this.callback_ = callback;\r\n this.errorCallback_ = errorCallback;\r\n this.progressCallback_ = progressCallback;\r\n this.timeout_ = timeout;\r\n this.pool_ = pool;\r\n this.promise_ = new Promise(function (resolve, reject) {\r\n _this.resolve_ = resolve;\r\n _this.reject_ = reject;\r\n _this.start_();\r\n });\r\n }\r\n /**\r\n * Actually starts the retry loop.\r\n */\r\n NetworkRequest.prototype.start_ = function () {\r\n var self = this;\r\n function doTheRequest(backoffCallback, canceled) {\r\n if (canceled) {\r\n backoffCallback(false, new RequestEndStatus(false, null, true));\r\n return;\r\n }\r\n var connection = self.pool_.createConnection();\r\n self.pendingConnection_ = connection;\r\n function progressListener(progressEvent) {\r\n var loaded = progressEvent.loaded;\r\n var total = progressEvent.lengthComputable ? progressEvent.total : -1;\r\n if (self.progressCallback_ !== null) {\r\n self.progressCallback_(loaded, total);\r\n }\r\n }\r\n if (self.progressCallback_ !== null) {\r\n connection.addUploadProgressListener(progressListener);\r\n }\r\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\r\n connection\r\n .send(self.url_, self.method_, self.body_, self.headers_)\r\n .then(function () {\r\n if (self.progressCallback_ !== null) {\r\n connection.removeUploadProgressListener(progressListener);\r\n }\r\n self.pendingConnection_ = null;\r\n var hitServer = connection.getErrorCode() === ErrorCode.NO_ERROR;\r\n var status = connection.getStatus();\r\n if (!hitServer || self.isRetryStatusCode_(status)) {\r\n var wasCanceled = connection.getErrorCode() === ErrorCode.ABORT;\r\n backoffCallback(false, new RequestEndStatus(false, null, wasCanceled));\r\n return;\r\n }\r\n var successCode = self.successCodes_.indexOf(status) !== -1;\r\n backoffCallback(true, new RequestEndStatus(successCode, connection));\r\n });\r\n }\r\n /**\r\n * @param requestWentThrough - True if the request eventually went\r\n * through, false if it hit the retry limit or was canceled.\r\n */\r\n function backoffDone(requestWentThrough, status) {\r\n var resolve = self.resolve_;\r\n var reject = self.reject_;\r\n var connection = status.connection;\r\n if (status.wasSuccessCode) {\r\n try {\r\n var result = self.callback_(connection, connection.getResponseText());\r\n if (isJustDef(result)) {\r\n resolve(result);\r\n }\r\n else {\r\n resolve();\r\n }\r\n }\r\n catch (e) {\r\n reject(e);\r\n }\r\n }\r\n else {\r\n if (connection !== null) {\r\n var err = unknown();\r\n err.serverResponse = connection.getResponseText();\r\n if (self.errorCallback_) {\r\n reject(self.errorCallback_(connection, err));\r\n }\r\n else {\r\n reject(err);\r\n }\r\n }\r\n else {\r\n if (status.canceled) {\r\n var err = self.appDelete_ ? appDeleted() : canceled();\r\n reject(err);\r\n }\r\n else {\r\n var err = retryLimitExceeded();\r\n reject(err);\r\n }\r\n }\r\n }\r\n }\r\n if (this.canceled_) {\r\n backoffDone(false, new RequestEndStatus(false, null, true));\r\n }\r\n else {\r\n this.backoffId_ = start(doTheRequest, backoffDone, this.timeout_);\r\n }\r\n };\r\n /** @inheritDoc */\r\n NetworkRequest.prototype.getPromise = function () {\r\n return this.promise_;\r\n };\r\n /** @inheritDoc */\r\n NetworkRequest.prototype.cancel = function (appDelete) {\r\n this.canceled_ = true;\r\n this.appDelete_ = appDelete || false;\r\n if (this.backoffId_ !== null) {\r\n stop(this.backoffId_);\r\n }\r\n if (this.pendingConnection_ !== null) {\r\n this.pendingConnection_.abort();\r\n }\r\n };\r\n NetworkRequest.prototype.isRetryStatusCode_ = function (status) {\r\n // The codes for which to retry came from this page:\r\n // https://cloud.google.com/storage/docs/exponential-backoff\r\n var isFiveHundredCode = status >= 500 && status < 600;\r\n var extraRetryCodes = [\r\n // Request Timeout: web server didn't receive full request in time.\r\n 408,\r\n // Too Many Requests: you're getting rate-limited, basically.\r\n 429\r\n ];\r\n var isExtraRetryCode = extraRetryCodes.indexOf(status) !== -1;\r\n var isRequestSpecificRetryCode = this.additionalRetryCodes_.indexOf(status) !== -1;\r\n return isFiveHundredCode || isExtraRetryCode || isRequestSpecificRetryCode;\r\n };\r\n return NetworkRequest;\r\n}());\r\n/**\r\n * A collection of information about the result of a network request.\r\n * @param opt_canceled - Defaults to false.\r\n */\r\nvar RequestEndStatus = /** @class */ (function () {\r\n function RequestEndStatus(wasSuccessCode, connection, canceled) {\r\n this.wasSuccessCode = wasSuccessCode;\r\n this.connection = connection;\r\n this.canceled = !!canceled;\r\n }\r\n return RequestEndStatus;\r\n}());\r\nfunction addAuthHeader_(headers, authToken) {\r\n if (authToken !== null && authToken.length > 0) {\r\n headers['Authorization'] = 'Firebase ' + authToken;\r\n }\r\n}\r\nfunction addVersionHeader_(headers, firebaseVersion) {\r\n headers['X-Firebase-Storage-Version'] =\r\n 'webjs/' + (firebaseVersion !== null && firebaseVersion !== void 0 ? firebaseVersion : 'AppManager');\r\n}\r\nfunction addGmpidHeader_(headers, appId) {\r\n if (appId) {\r\n headers['X-Firebase-GMPID'] = appId;\r\n }\r\n}\r\nfunction addAppCheckHeader_(headers, appCheckToken) {\r\n if (appCheckToken !== null) {\r\n headers['X-Firebase-AppCheck'] = appCheckToken;\r\n }\r\n}\r\nfunction makeRequest(requestInfo, appId, authToken, appCheckToken, pool, firebaseVersion) {\r\n var queryPart = makeQueryString(requestInfo.urlParams);\r\n var url = requestInfo.url + queryPart;\r\n var headers = Object.assign({}, requestInfo.headers);\r\n addGmpidHeader_(headers, appId);\r\n addAuthHeader_(headers, authToken);\r\n addVersionHeader_(headers, firebaseVersion);\r\n addAppCheckHeader_(headers, appCheckToken);\r\n return new NetworkRequest(url, requestInfo.method, headers, requestInfo.body, requestInfo.successCodes, requestInfo.additionalRetryCodes, requestInfo.handler, requestInfo.errorHandler, requestInfo.timeout, requestInfo.progressCallback, pool);\r\n}\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nfunction getBlobBuilder() {\r\n if (typeof BlobBuilder !== 'undefined') {\r\n return BlobBuilder;\r\n }\r\n else if (typeof WebKitBlobBuilder !== 'undefined') {\r\n return WebKitBlobBuilder;\r\n }\r\n else {\r\n return undefined;\r\n }\r\n}\r\n/**\r\n * Concatenates one or more values together and converts them to a Blob.\r\n *\r\n * @param args The values that will make up the resulting blob.\r\n * @return The blob.\r\n */\r\nfunction getBlob() {\r\n var args = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n args[_i] = arguments[_i];\r\n }\r\n var BlobBuilder = getBlobBuilder();\r\n if (BlobBuilder !== undefined) {\r\n var bb = new BlobBuilder();\r\n for (var i = 0; i < args.length; i++) {\r\n bb.append(args[i]);\r\n }\r\n return bb.getBlob();\r\n }\r\n else {\r\n if (isNativeBlobDefined()) {\r\n return new Blob(args);\r\n }\r\n else {\r\n throw new FirebaseStorageError(\"unsupported-environment\" /* UNSUPPORTED_ENVIRONMENT */, \"This browser doesn't seem to support creating Blobs\");\r\n }\r\n }\r\n}\r\n/**\r\n * Slices the blob. The returned blob contains data from the start byte\r\n * (inclusive) till the end byte (exclusive). Negative indices cannot be used.\r\n *\r\n * @param blob The blob to be sliced.\r\n * @param start Index of the starting byte.\r\n * @param end Index of the ending byte.\r\n * @return The blob slice or null if not supported.\r\n */\r\nfunction sliceBlob(blob, start, end) {\r\n if (blob.webkitSlice) {\r\n return blob.webkitSlice(start, end);\r\n }\r\n else if (blob.mozSlice) {\r\n return blob.mozSlice(start, end);\r\n }\r\n else if (blob.slice) {\r\n return blob.slice(start, end);\r\n }\r\n return null;\r\n}\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * @param opt_elideCopy - If true, doesn't copy mutable input data\r\n * (e.g. Uint8Arrays). Pass true only if you know the objects will not be\r\n * modified after this blob's construction.\r\n *\r\n * @internal\r\n */\r\nvar FbsBlob = /** @class */ (function () {\r\n function FbsBlob(data, elideCopy) {\r\n var size = 0;\r\n var blobType = '';\r\n if (isNativeBlob(data)) {\r\n this.data_ = data;\r\n size = data.size;\r\n blobType = data.type;\r\n }\r\n else if (data instanceof ArrayBuffer) {\r\n if (elideCopy) {\r\n this.data_ = new Uint8Array(data);\r\n }\r\n else {\r\n this.data_ = new Uint8Array(data.byteLength);\r\n this.data_.set(new Uint8Array(data));\r\n }\r\n size = this.data_.length;\r\n }\r\n else if (data instanceof Uint8Array) {\r\n if (elideCopy) {\r\n this.data_ = data;\r\n }\r\n else {\r\n this.data_ = new Uint8Array(data.length);\r\n this.data_.set(data);\r\n }\r\n size = data.length;\r\n }\r\n this.size_ = size;\r\n this.type_ = blobType;\r\n }\r\n FbsBlob.prototype.size = function () {\r\n return this.size_;\r\n };\r\n FbsBlob.prototype.type = function () {\r\n return this.type_;\r\n };\r\n FbsBlob.prototype.slice = function (startByte, endByte) {\r\n if (isNativeBlob(this.data_)) {\r\n var realBlob = this.data_;\r\n var sliced = sliceBlob(realBlob, startByte, endByte);\r\n if (sliced === null) {\r\n return null;\r\n }\r\n return new FbsBlob(sliced);\r\n }\r\n else {\r\n var slice = new Uint8Array(this.data_.buffer, startByte, endByte - startByte);\r\n return new FbsBlob(slice, true);\r\n }\r\n };\r\n FbsBlob.getBlob = function () {\r\n var args = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n args[_i] = arguments[_i];\r\n }\r\n if (isNativeBlobDefined()) {\r\n var blobby = args.map(function (val) {\r\n if (val instanceof FbsBlob) {\r\n return val.data_;\r\n }\r\n else {\r\n return val;\r\n }\r\n });\r\n return new FbsBlob(getBlob.apply(null, blobby));\r\n }\r\n else {\r\n var uint8Arrays = args.map(function (val) {\r\n if (isString(val)) {\r\n return dataFromString(StringFormat.RAW, val).data;\r\n }\r\n else {\r\n // Blobs don't exist, so this has to be a Uint8Array.\r\n return val.data_;\r\n }\r\n });\r\n var finalLength_1 = 0;\r\n uint8Arrays.forEach(function (array) {\r\n finalLength_1 += array.byteLength;\r\n });\r\n var merged_1 = new Uint8Array(finalLength_1);\r\n var index_1 = 0;\r\n uint8Arrays.forEach(function (array) {\r\n for (var i = 0; i < array.length; i++) {\r\n merged_1[index_1++] = array[i];\r\n }\r\n });\r\n return new FbsBlob(merged_1, true);\r\n }\r\n };\r\n FbsBlob.prototype.uploadData = function () {\r\n return this.data_;\r\n };\r\n return FbsBlob;\r\n}());\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * Returns the Object resulting from parsing the given JSON, or null if the\r\n * given string does not represent a JSON object.\r\n */\r\nfunction jsonObjectOrNull(s) {\r\n var obj;\r\n try {\r\n obj = JSON.parse(s);\r\n }\r\n catch (e) {\r\n return null;\r\n }\r\n if (isNonArrayObject(obj)) {\r\n return obj;\r\n }\r\n else {\r\n return null;\r\n }\r\n}\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * @fileoverview Contains helper methods for manipulating paths.\r\n */\r\n/**\r\n * @return Null if the path is already at the root.\r\n */\r\nfunction parent(path) {\r\n if (path.length === 0) {\r\n return null;\r\n }\r\n var index = path.lastIndexOf('/');\r\n if (index === -1) {\r\n return '';\r\n }\r\n var newPath = path.slice(0, index);\r\n return newPath;\r\n}\r\nfunction child(path, childPath) {\r\n var canonicalChildPath = childPath\r\n .split('/')\r\n .filter(function (component) { return component.length > 0; })\r\n .join('/');\r\n if (path.length === 0) {\r\n return canonicalChildPath;\r\n }\r\n else {\r\n return path + '/' + canonicalChildPath;\r\n }\r\n}\r\n/**\r\n * Returns the last component of a path.\r\n * '/foo/bar' -> 'bar'\r\n * '/foo/bar/baz/' -> 'baz/'\r\n * '/a' -> 'a'\r\n */\r\nfunction lastComponent(path) {\r\n var index = path.lastIndexOf('/', path.length - 2);\r\n if (index === -1) {\r\n return path;\r\n }\r\n else {\r\n return path.slice(index + 1);\r\n }\r\n}\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nfunction noXform_(metadata, value) {\r\n return value;\r\n}\r\nvar Mapping = /** @class */ (function () {\r\n function Mapping(server, local, writable, xform) {\r\n this.server = server;\r\n this.local = local || server;\r\n this.writable = !!writable;\r\n this.xform = xform || noXform_;\r\n }\r\n return Mapping;\r\n}());\r\nvar mappings_ = null;\r\nfunction xformPath(fullPath) {\r\n if (!isString(fullPath) || fullPath.length < 2) {\r\n return fullPath;\r\n }\r\n else {\r\n return lastComponent(fullPath);\r\n }\r\n}\r\nfunction getMappings() {\r\n if (mappings_) {\r\n return mappings_;\r\n }\r\n var mappings = [];\r\n mappings.push(new Mapping('bucket'));\r\n mappings.push(new Mapping('generation'));\r\n mappings.push(new Mapping('metageneration'));\r\n mappings.push(new Mapping('name', 'fullPath', true));\r\n function mappingsXformPath(_metadata, fullPath) {\r\n return xformPath(fullPath);\r\n }\r\n var nameMapping = new Mapping('name');\r\n nameMapping.xform = mappingsXformPath;\r\n mappings.push(nameMapping);\r\n /**\r\n * Coerces the second param to a number, if it is defined.\r\n */\r\n function xformSize(_metadata, size) {\r\n if (size !== undefined) {\r\n return Number(size);\r\n }\r\n else {\r\n return size;\r\n }\r\n }\r\n var sizeMapping = new Mapping('size');\r\n sizeMapping.xform = xformSize;\r\n mappings.push(sizeMapping);\r\n mappings.push(new Mapping('timeCreated'));\r\n mappings.push(new Mapping('updated'));\r\n mappings.push(new Mapping('md5Hash', null, true));\r\n mappings.push(new Mapping('cacheControl', null, true));\r\n mappings.push(new Mapping('contentDisposition', null, true));\r\n mappings.push(new Mapping('contentEncoding', null, true));\r\n mappings.push(new Mapping('contentLanguage', null, true));\r\n mappings.push(new Mapping('contentType', null, true));\r\n mappings.push(new Mapping('metadata', 'customMetadata', true));\r\n mappings_ = mappings;\r\n return mappings_;\r\n}\r\nfunction addRef(metadata, service) {\r\n function generateRef() {\r\n var bucket = metadata['bucket'];\r\n var path = metadata['fullPath'];\r\n var loc = new Location(bucket, path);\r\n return service._makeStorageReference(loc);\r\n }\r\n Object.defineProperty(metadata, 'ref', { get: generateRef });\r\n}\r\nfunction fromResource(service, resource, mappings) {\r\n var metadata = {};\r\n metadata['type'] = 'file';\r\n var len = mappings.length;\r\n for (var i = 0; i < len; i++) {\r\n var mapping = mappings[i];\r\n metadata[mapping.local] = mapping.xform(metadata, resource[mapping.server]);\r\n }\r\n addRef(metadata, service);\r\n return metadata;\r\n}\r\nfunction fromResourceString(service, resourceString, mappings) {\r\n var obj = jsonObjectOrNull(resourceString);\r\n if (obj === null) {\r\n return null;\r\n }\r\n var resource = obj;\r\n return fromResource(service, resource, mappings);\r\n}\r\nfunction downloadUrlFromResourceString(metadata, resourceString, host) {\r\n var obj = jsonObjectOrNull(resourceString);\r\n if (obj === null) {\r\n return null;\r\n }\r\n if (!isString(obj['downloadTokens'])) {\r\n // This can happen if objects are uploaded through GCS and retrieved\r\n // through list, so we don't want to throw an Error.\r\n return null;\r\n }\r\n var tokens = obj['downloadTokens'];\r\n if (tokens.length === 0) {\r\n return null;\r\n }\r\n var encode = encodeURIComponent;\r\n var tokensList = tokens.split(',');\r\n var urls = tokensList.map(function (token) {\r\n var bucket = metadata['bucket'];\r\n var path = metadata['fullPath'];\r\n var urlPart = '/b/' + encode(bucket) + '/o/' + encode(path);\r\n var base = makeUrl(urlPart, host);\r\n var queryString = makeQueryString({\r\n alt: 'media',\r\n token: token\r\n });\r\n return base + queryString;\r\n });\r\n return urls[0];\r\n}\r\nfunction toResourceString(metadata, mappings) {\r\n var resource = {};\r\n var len = mappings.length;\r\n for (var i = 0; i < len; i++) {\r\n var mapping = mappings[i];\r\n if (mapping.writable) {\r\n resource[mapping.server] = metadata[mapping.local];\r\n }\r\n }\r\n return JSON.stringify(resource);\r\n}\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nvar PREFIXES_KEY = 'prefixes';\r\nvar ITEMS_KEY = 'items';\r\nfunction fromBackendResponse(service, bucket, resource) {\r\n var listResult = {\r\n prefixes: [],\r\n items: [],\r\n nextPageToken: resource['nextPageToken']\r\n };\r\n if (resource[PREFIXES_KEY]) {\r\n for (var _i = 0, _a = resource[PREFIXES_KEY]; _i < _a.length; _i++) {\r\n var path = _a[_i];\r\n var pathWithoutTrailingSlash = path.replace(/\\/$/, '');\r\n var reference = service._makeStorageReference(new Location(bucket, pathWithoutTrailingSlash));\r\n listResult.prefixes.push(reference);\r\n }\r\n }\r\n if (resource[ITEMS_KEY]) {\r\n for (var _b = 0, _c = resource[ITEMS_KEY]; _b < _c.length; _b++) {\r\n var item = _c[_b];\r\n var reference = service._makeStorageReference(new Location(bucket, item['name']));\r\n listResult.items.push(reference);\r\n }\r\n }\r\n return listResult;\r\n}\r\nfunction fromResponseString(service, bucket, resourceString) {\r\n var obj = jsonObjectOrNull(resourceString);\r\n if (obj === null) {\r\n return null;\r\n }\r\n var resource = obj;\r\n return fromBackendResponse(service, bucket, resource);\r\n}\n\nvar RequestInfo = /** @class */ (function () {\r\n function RequestInfo(url, method, \r\n /**\r\n * Returns the value with which to resolve the request's promise. Only called\r\n * if the request is successful. Throw from this function to reject the\r\n * returned Request's promise with the thrown error.\r\n * Note: The XhrIo passed to this function may be reused after this callback\r\n * returns. Do not keep a reference to it in any way.\r\n */\r\n handler, timeout) {\r\n this.url = url;\r\n this.method = method;\r\n this.handler = handler;\r\n this.timeout = timeout;\r\n this.urlParams = {};\r\n this.headers = {};\r\n this.body = null;\r\n this.errorHandler = null;\r\n /**\r\n * Called with the current number of bytes uploaded and total size (-1 if not\r\n * computable) of the request body (i.e. used to report upload progress).\r\n */\r\n this.progressCallback = null;\r\n this.successCodes = [200];\r\n this.additionalRetryCodes = [];\r\n }\r\n return RequestInfo;\r\n}());\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * Throws the UNKNOWN FirebaseStorageError if cndn is false.\r\n */\r\nfunction handlerCheck(cndn) {\r\n if (!cndn) {\r\n throw unknown();\r\n }\r\n}\r\nfunction metadataHandler(service, mappings) {\r\n function handler(xhr, text) {\r\n var metadata = fromResourceString(service, text, mappings);\r\n handlerCheck(metadata !== null);\r\n return metadata;\r\n }\r\n return handler;\r\n}\r\nfunction listHandler(service, bucket) {\r\n function handler(xhr, text) {\r\n var listResult = fromResponseString(service, bucket, text);\r\n handlerCheck(listResult !== null);\r\n return listResult;\r\n }\r\n return handler;\r\n}\r\nfunction downloadUrlHandler(service, mappings) {\r\n function handler(xhr, text) {\r\n var metadata = fromResourceString(service, text, mappings);\r\n handlerCheck(metadata !== null);\r\n return downloadUrlFromResourceString(metadata, text, service.host);\r\n }\r\n return handler;\r\n}\r\nfunction sharedErrorHandler(location) {\r\n function errorHandler(xhr, err) {\r\n var newErr;\r\n if (xhr.getStatus() === 401) {\r\n if (\r\n // This exact message string is the only consistent part of the\r\n // server's error response that identifies it as an App Check error.\r\n xhr.getResponseText().includes('Firebase App Check token is invalid')) {\r\n newErr = unauthorizedApp();\r\n }\r\n else {\r\n newErr = unauthenticated();\r\n }\r\n }\r\n else {\r\n if (xhr.getStatus() === 402) {\r\n newErr = quotaExceeded(location.bucket);\r\n }\r\n else {\r\n if (xhr.getStatus() === 403) {\r\n newErr = unauthorized(location.path);\r\n }\r\n else {\r\n newErr = err;\r\n }\r\n }\r\n }\r\n newErr.serverResponse = err.serverResponse;\r\n return newErr;\r\n }\r\n return errorHandler;\r\n}\r\nfunction objectErrorHandler(location) {\r\n var shared = sharedErrorHandler(location);\r\n function errorHandler(xhr, err) {\r\n var newErr = shared(xhr, err);\r\n if (xhr.getStatus() === 404) {\r\n newErr = objectNotFound(location.path);\r\n }\r\n newErr.serverResponse = err.serverResponse;\r\n return newErr;\r\n }\r\n return errorHandler;\r\n}\r\nfunction getMetadata$2(service, location, mappings) {\r\n var urlPart = location.fullServerUrl();\r\n var url = makeUrl(urlPart, service.host);\r\n var method = 'GET';\r\n var timeout = service.maxOperationRetryTime;\r\n var requestInfo = new RequestInfo(url, method, metadataHandler(service, mappings), timeout);\r\n requestInfo.errorHandler = objectErrorHandler(location);\r\n return requestInfo;\r\n}\r\nfunction list$2(service, location, delimiter, pageToken, maxResults) {\r\n var urlParams = {};\r\n if (location.isRoot) {\r\n urlParams['prefix'] = '';\r\n }\r\n else {\r\n urlParams['prefix'] = location.path + '/';\r\n }\r\n if (delimiter && delimiter.length > 0) {\r\n urlParams['delimiter'] = delimiter;\r\n }\r\n if (pageToken) {\r\n urlParams['pageToken'] = pageToken;\r\n }\r\n if (maxResults) {\r\n urlParams['maxResults'] = maxResults;\r\n }\r\n var urlPart = location.bucketOnlyServerUrl();\r\n var url = makeUrl(urlPart, service.host);\r\n var method = 'GET';\r\n var timeout = service.maxOperationRetryTime;\r\n var requestInfo = new RequestInfo(url, method, listHandler(service, location.bucket), timeout);\r\n requestInfo.urlParams = urlParams;\r\n requestInfo.errorHandler = sharedErrorHandler(location);\r\n return requestInfo;\r\n}\r\nfunction getDownloadUrl(service, location, mappings) {\r\n var urlPart = location.fullServerUrl();\r\n var url = makeUrl(urlPart, service.host);\r\n var method = 'GET';\r\n var timeout = service.maxOperationRetryTime;\r\n var requestInfo = new RequestInfo(url, method, downloadUrlHandler(service, mappings), timeout);\r\n requestInfo.errorHandler = objectErrorHandler(location);\r\n return requestInfo;\r\n}\r\nfunction updateMetadata$2(service, location, metadata, mappings) {\r\n var urlPart = location.fullServerUrl();\r\n var url = makeUrl(urlPart, service.host);\r\n var method = 'PATCH';\r\n var body = toResourceString(metadata, mappings);\r\n var headers = { 'Content-Type': 'application/json; charset=utf-8' };\r\n var timeout = service.maxOperationRetryTime;\r\n var requestInfo = new RequestInfo(url, method, metadataHandler(service, mappings), timeout);\r\n requestInfo.headers = headers;\r\n requestInfo.body = body;\r\n requestInfo.errorHandler = objectErrorHandler(location);\r\n return requestInfo;\r\n}\r\nfunction deleteObject$2(service, location) {\r\n var urlPart = location.fullServerUrl();\r\n var url = makeUrl(urlPart, service.host);\r\n var method = 'DELETE';\r\n var timeout = service.maxOperationRetryTime;\r\n function handler(_xhr, _text) { }\r\n var requestInfo = new RequestInfo(url, method, handler, timeout);\r\n requestInfo.successCodes = [200, 204];\r\n requestInfo.errorHandler = objectErrorHandler(location);\r\n return requestInfo;\r\n}\r\nfunction determineContentType_(metadata, blob) {\r\n return ((metadata && metadata['contentType']) ||\r\n (blob && blob.type()) ||\r\n 'application/octet-stream');\r\n}\r\nfunction metadataForUpload_(location, blob, metadata) {\r\n var metadataClone = Object.assign({}, metadata);\r\n metadataClone['fullPath'] = location.path;\r\n metadataClone['size'] = blob.size();\r\n if (!metadataClone['contentType']) {\r\n metadataClone['contentType'] = determineContentType_(null, blob);\r\n }\r\n return metadataClone;\r\n}\r\n/**\r\n * Prepare RequestInfo for uploads as Content-Type: multipart.\r\n */\r\nfunction multipartUpload(service, location, mappings, blob, metadata) {\r\n var urlPart = location.bucketOnlyServerUrl();\r\n var headers = {\r\n 'X-Goog-Upload-Protocol': 'multipart'\r\n };\r\n function genBoundary() {\r\n var str = '';\r\n for (var i = 0; i < 2; i++) {\r\n str = str + Math.random().toString().slice(2);\r\n }\r\n return str;\r\n }\r\n var boundary = genBoundary();\r\n headers['Content-Type'] = 'multipart/related; boundary=' + boundary;\r\n var metadata_ = metadataForUpload_(location, blob, metadata);\r\n var metadataString = toResourceString(metadata_, mappings);\r\n var preBlobPart = '--' +\r\n boundary +\r\n '\\r\\n' +\r\n 'Content-Type: application/json; charset=utf-8\\r\\n\\r\\n' +\r\n metadataString +\r\n '\\r\\n--' +\r\n boundary +\r\n '\\r\\n' +\r\n 'Content-Type: ' +\r\n metadata_['contentType'] +\r\n '\\r\\n\\r\\n';\r\n var postBlobPart = '\\r\\n--' + boundary + '--';\r\n var body = FbsBlob.getBlob(preBlobPart, blob, postBlobPart);\r\n if (body === null) {\r\n throw cannotSliceBlob();\r\n }\r\n var urlParams = { name: metadata_['fullPath'] };\r\n var url = makeUrl(urlPart, service.host);\r\n var method = 'POST';\r\n var timeout = service.maxUploadRetryTime;\r\n var requestInfo = new RequestInfo(url, method, metadataHandler(service, mappings), timeout);\r\n requestInfo.urlParams = urlParams;\r\n requestInfo.headers = headers;\r\n requestInfo.body = body.uploadData();\r\n requestInfo.errorHandler = sharedErrorHandler(location);\r\n return requestInfo;\r\n}\r\n/**\r\n * @param current The number of bytes that have been uploaded so far.\r\n * @param total The total number of bytes in the upload.\r\n * @param opt_finalized True if the server has finished the upload.\r\n * @param opt_metadata The upload metadata, should\r\n * only be passed if opt_finalized is true.\r\n */\r\nvar ResumableUploadStatus = /** @class */ (function () {\r\n function ResumableUploadStatus(current, total, finalized, metadata) {\r\n this.current = current;\r\n this.total = total;\r\n this.finalized = !!finalized;\r\n this.metadata = metadata || null;\r\n }\r\n return ResumableUploadStatus;\r\n}());\r\nfunction checkResumeHeader_(xhr, allowed) {\r\n var status = null;\r\n try {\r\n status = xhr.getResponseHeader('X-Goog-Upload-Status');\r\n }\r\n catch (e) {\r\n handlerCheck(false);\r\n }\r\n var allowedStatus = allowed || ['active'];\r\n handlerCheck(!!status && allowedStatus.indexOf(status) !== -1);\r\n return status;\r\n}\r\nfunction createResumableUpload(service, location, mappings, blob, metadata) {\r\n var urlPart = location.bucketOnlyServerUrl();\r\n var metadataForUpload = metadataForUpload_(location, blob, metadata);\r\n var urlParams = { name: metadataForUpload['fullPath'] };\r\n var url = makeUrl(urlPart, service.host);\r\n var method = 'POST';\r\n var headers = {\r\n 'X-Goog-Upload-Protocol': 'resumable',\r\n 'X-Goog-Upload-Command': 'start',\r\n 'X-Goog-Upload-Header-Content-Length': \"\" + blob.size(),\r\n 'X-Goog-Upload-Header-Content-Type': metadataForUpload['contentType'],\r\n 'Content-Type': 'application/json; charset=utf-8'\r\n };\r\n var body = toResourceString(metadataForUpload, mappings);\r\n var timeout = service.maxUploadRetryTime;\r\n function handler(xhr) {\r\n checkResumeHeader_(xhr);\r\n var url;\r\n try {\r\n url = xhr.getResponseHeader('X-Goog-Upload-URL');\r\n }\r\n catch (e) {\r\n handlerCheck(false);\r\n }\r\n handlerCheck(isString(url));\r\n return url;\r\n }\r\n var requestInfo = new RequestInfo(url, method, handler, timeout);\r\n requestInfo.urlParams = urlParams;\r\n requestInfo.headers = headers;\r\n requestInfo.body = body;\r\n requestInfo.errorHandler = sharedErrorHandler(location);\r\n return requestInfo;\r\n}\r\n/**\r\n * @param url From a call to fbs.requests.createResumableUpload.\r\n */\r\nfunction getResumableUploadStatus(service, location, url, blob) {\r\n var headers = { 'X-Goog-Upload-Command': 'query' };\r\n function handler(xhr) {\r\n var status = checkResumeHeader_(xhr, ['active', 'final']);\r\n var sizeString = null;\r\n try {\r\n sizeString = xhr.getResponseHeader('X-Goog-Upload-Size-Received');\r\n }\r\n catch (e) {\r\n handlerCheck(false);\r\n }\r\n if (!sizeString) {\r\n // null or empty string\r\n handlerCheck(false);\r\n }\r\n var size = Number(sizeString);\r\n handlerCheck(!isNaN(size));\r\n return new ResumableUploadStatus(size, blob.size(), status === 'final');\r\n }\r\n var method = 'POST';\r\n var timeout = service.maxUploadRetryTime;\r\n var requestInfo = new RequestInfo(url, method, handler, timeout);\r\n requestInfo.headers = headers;\r\n requestInfo.errorHandler = sharedErrorHandler(location);\r\n return requestInfo;\r\n}\r\n/**\r\n * Any uploads via the resumable upload API must transfer a number of bytes\r\n * that is a multiple of this number.\r\n */\r\nvar RESUMABLE_UPLOAD_CHUNK_SIZE = 256 * 1024;\r\n/**\r\n * @param url From a call to fbs.requests.createResumableUpload.\r\n * @param chunkSize Number of bytes to upload.\r\n * @param status The previous status.\r\n * If not passed or null, we start from the beginning.\r\n * @throws fbs.Error If the upload is already complete, the passed in status\r\n * has a final size inconsistent with the blob, or the blob cannot be sliced\r\n * for upload.\r\n */\r\nfunction continueResumableUpload(location, service, url, blob, chunkSize, mappings, status, progressCallback) {\r\n // TODO(andysoto): standardize on internal asserts\r\n // assert(!(opt_status && opt_status.finalized));\r\n var status_ = new ResumableUploadStatus(0, 0);\r\n if (status) {\r\n status_.current = status.current;\r\n status_.total = status.total;\r\n }\r\n else {\r\n status_.current = 0;\r\n status_.total = blob.size();\r\n }\r\n if (blob.size() !== status_.total) {\r\n throw serverFileWrongSize();\r\n }\r\n var bytesLeft = status_.total - status_.current;\r\n var bytesToUpload = bytesLeft;\r\n if (chunkSize > 0) {\r\n bytesToUpload = Math.min(bytesToUpload, chunkSize);\r\n }\r\n var startByte = status_.current;\r\n var endByte = startByte + bytesToUpload;\r\n var uploadCommand = bytesToUpload === bytesLeft ? 'upload, finalize' : 'upload';\r\n var headers = {\r\n 'X-Goog-Upload-Command': uploadCommand,\r\n 'X-Goog-Upload-Offset': \"\" + status_.current\r\n };\r\n var body = blob.slice(startByte, endByte);\r\n if (body === null) {\r\n throw cannotSliceBlob();\r\n }\r\n function handler(xhr, text) {\r\n // TODO(andysoto): Verify the MD5 of each uploaded range:\r\n // the 'x-range-md5' header comes back with status code 308 responses.\r\n // We'll only be able to bail out though, because you can't re-upload a\r\n // range that you previously uploaded.\r\n var uploadStatus = checkResumeHeader_(xhr, ['active', 'final']);\r\n var newCurrent = status_.current + bytesToUpload;\r\n var size = blob.size();\r\n var metadata;\r\n if (uploadStatus === 'final') {\r\n metadata = metadataHandler(service, mappings)(xhr, text);\r\n }\r\n else {\r\n metadata = null;\r\n }\r\n return new ResumableUploadStatus(newCurrent, size, uploadStatus === 'final', metadata);\r\n }\r\n var method = 'POST';\r\n var timeout = service.maxUploadRetryTime;\r\n var requestInfo = new RequestInfo(url, method, handler, timeout);\r\n requestInfo.headers = headers;\r\n requestInfo.body = body.uploadData();\r\n requestInfo.progressCallback = progressCallback || null;\r\n requestInfo.errorHandler = sharedErrorHandler(location);\r\n return requestInfo;\r\n}\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nvar Observer = /** @class */ (function () {\r\n function Observer(nextOrObserver, error, complete) {\r\n var asFunctions = isFunction(nextOrObserver) || error != null || complete != null;\r\n if (asFunctions) {\r\n this.next = nextOrObserver;\r\n this.error = error;\r\n this.complete = complete;\r\n }\r\n else {\r\n var observer = nextOrObserver;\r\n this.next = observer.next;\r\n this.error = observer.error;\r\n this.complete = observer.complete;\r\n }\r\n }\r\n return Observer;\r\n}());\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * Returns a function that invokes f with its arguments asynchronously as a\r\n * microtask, i.e. as soon as possible after the current script returns back\r\n * into browser code.\r\n */\r\n// eslint-disable-next-line @typescript-eslint/ban-types\r\nfunction async(f) {\r\n return function () {\r\n var argsToForward = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n argsToForward[_i] = arguments[_i];\r\n }\r\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\r\n Promise.resolve().then(function () { return f.apply(void 0, argsToForward); });\r\n };\r\n}\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * Represents a blob being uploaded. Can be used to pause/resume/cancel the\r\n * upload and manage callbacks for various events.\r\n * @internal\r\n */\r\nvar UploadTask = /** @class */ (function () {\r\n /**\r\n * @param ref - The firebaseStorage.Reference object this task came\r\n * from, untyped to avoid cyclic dependencies.\r\n * @param blob - The blob to upload.\r\n */\r\n function UploadTask(ref, blob, metadata) {\r\n var _this = this;\r\n if (metadata === void 0) { metadata = null; }\r\n /**\r\n * Number of bytes transferred so far.\r\n */\r\n this._transferred = 0;\r\n this._needToFetchStatus = false;\r\n this._needToFetchMetadata = false;\r\n this._observers = [];\r\n this._error = undefined;\r\n this._uploadUrl = undefined;\r\n this._request = undefined;\r\n this._chunkMultiplier = 1;\r\n this._resolve = undefined;\r\n this._reject = undefined;\r\n this._ref = ref;\r\n this._blob = blob;\r\n this._metadata = metadata;\r\n this._mappings = getMappings();\r\n this._resumable = this._shouldDoResumable(this._blob);\r\n this._state = \"running\" /* RUNNING */;\r\n this._errorHandler = function (error) {\r\n _this._request = undefined;\r\n _this._chunkMultiplier = 1;\r\n if (error._codeEquals(\"canceled\" /* CANCELED */)) {\r\n _this._needToFetchStatus = true;\r\n _this.completeTransitions_();\r\n }\r\n else {\r\n _this._error = error;\r\n _this._transition(\"error\" /* ERROR */);\r\n }\r\n };\r\n this._metadataErrorHandler = function (error) {\r\n _this._request = undefined;\r\n if (error._codeEquals(\"canceled\" /* CANCELED */)) {\r\n _this.completeTransitions_();\r\n }\r\n else {\r\n _this._error = error;\r\n _this._transition(\"error\" /* ERROR */);\r\n }\r\n };\r\n this._promise = new Promise(function (resolve, reject) {\r\n _this._resolve = resolve;\r\n _this._reject = reject;\r\n _this._start();\r\n });\r\n // Prevent uncaught rejections on the internal promise from bubbling out\r\n // to the top level with a dummy handler.\r\n this._promise.then(null, function () { });\r\n }\r\n UploadTask.prototype._makeProgressCallback = function () {\r\n var _this = this;\r\n var sizeBefore = this._transferred;\r\n return function (loaded) { return _this._updateProgress(sizeBefore + loaded); };\r\n };\r\n UploadTask.prototype._shouldDoResumable = function (blob) {\r\n return blob.size() > 256 * 1024;\r\n };\r\n UploadTask.prototype._start = function () {\r\n if (this._state !== \"running\" /* RUNNING */) {\r\n // This can happen if someone pauses us in a resume callback, for example.\r\n return;\r\n }\r\n if (this._request !== undefined) {\r\n return;\r\n }\r\n if (this._resumable) {\r\n if (this._uploadUrl === undefined) {\r\n this._createResumable();\r\n }\r\n else {\r\n if (this._needToFetchStatus) {\r\n this._fetchStatus();\r\n }\r\n else {\r\n if (this._needToFetchMetadata) {\r\n // Happens if we miss the metadata on upload completion.\r\n this._fetchMetadata();\r\n }\r\n else {\r\n this._continueUpload();\r\n }\r\n }\r\n }\r\n }\r\n else {\r\n this._oneShotUpload();\r\n }\r\n };\r\n UploadTask.prototype._resolveToken = function (callback) {\r\n var _this = this;\r\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\r\n Promise.all([\r\n this._ref.storage._getAuthToken(),\r\n this._ref.storage._getAppCheckToken()\r\n ]).then(function (_a) {\r\n var authToken = _a[0], appCheckToken = _a[1];\r\n switch (_this._state) {\r\n case \"running\" /* RUNNING */:\r\n callback(authToken, appCheckToken);\r\n break;\r\n case \"canceling\" /* CANCELING */:\r\n _this._transition(\"canceled\" /* CANCELED */);\r\n break;\r\n case \"pausing\" /* PAUSING */:\r\n _this._transition(\"paused\" /* PAUSED */);\r\n break;\r\n }\r\n });\r\n };\r\n // TODO(andysoto): assert false\r\n UploadTask.prototype._createResumable = function () {\r\n var _this = this;\r\n this._resolveToken(function (authToken, appCheckToken) {\r\n var requestInfo = createResumableUpload(_this._ref.storage, _this._ref._location, _this._mappings, _this._blob, _this._metadata);\r\n var createRequest = _this._ref.storage._makeRequest(requestInfo, authToken, appCheckToken);\r\n _this._request = createRequest;\r\n createRequest.getPromise().then(function (url) {\r\n _this._request = undefined;\r\n _this._uploadUrl = url;\r\n _this._needToFetchStatus = false;\r\n _this.completeTransitions_();\r\n }, _this._errorHandler);\r\n });\r\n };\r\n UploadTask.prototype._fetchStatus = function () {\r\n var _this = this;\r\n // TODO(andysoto): assert(this.uploadUrl_ !== null);\r\n var url = this._uploadUrl;\r\n this._resolveToken(function (authToken, appCheckToken) {\r\n var requestInfo = getResumableUploadStatus(_this._ref.storage, _this._ref._location, url, _this._blob);\r\n var statusRequest = _this._ref.storage._makeRequest(requestInfo, authToken, appCheckToken);\r\n _this._request = statusRequest;\r\n statusRequest.getPromise().then(function (status) {\r\n status = status;\r\n _this._request = undefined;\r\n _this._updateProgress(status.current);\r\n _this._needToFetchStatus = false;\r\n if (status.finalized) {\r\n _this._needToFetchMetadata = true;\r\n }\r\n _this.completeTransitions_();\r\n }, _this._errorHandler);\r\n });\r\n };\r\n UploadTask.prototype._continueUpload = function () {\r\n var _this = this;\r\n var chunkSize = RESUMABLE_UPLOAD_CHUNK_SIZE * this._chunkMultiplier;\r\n var status = new ResumableUploadStatus(this._transferred, this._blob.size());\r\n // TODO(andysoto): assert(this.uploadUrl_ !== null);\r\n var url = this._uploadUrl;\r\n this._resolveToken(function (authToken, appCheckToken) {\r\n var requestInfo;\r\n try {\r\n requestInfo = continueResumableUpload(_this._ref._location, _this._ref.storage, url, _this._blob, chunkSize, _this._mappings, status, _this._makeProgressCallback());\r\n }\r\n catch (e) {\r\n _this._error = e;\r\n _this._transition(\"error\" /* ERROR */);\r\n return;\r\n }\r\n var uploadRequest = _this._ref.storage._makeRequest(requestInfo, authToken, appCheckToken);\r\n _this._request = uploadRequest;\r\n uploadRequest.getPromise().then(function (newStatus) {\r\n _this._increaseMultiplier();\r\n _this._request = undefined;\r\n _this._updateProgress(newStatus.current);\r\n if (newStatus.finalized) {\r\n _this._metadata = newStatus.metadata;\r\n _this._transition(\"success\" /* SUCCESS */);\r\n }\r\n else {\r\n _this.completeTransitions_();\r\n }\r\n }, _this._errorHandler);\r\n });\r\n };\r\n UploadTask.prototype._increaseMultiplier = function () {\r\n var currentSize = RESUMABLE_UPLOAD_CHUNK_SIZE * this._chunkMultiplier;\r\n // Max chunk size is 32M.\r\n if (currentSize < 32 * 1024 * 1024) {\r\n this._chunkMultiplier *= 2;\r\n }\r\n };\r\n UploadTask.prototype._fetchMetadata = function () {\r\n var _this = this;\r\n this._resolveToken(function (authToken, appCheckToken) {\r\n var requestInfo = getMetadata$2(_this._ref.storage, _this._ref._location, _this._mappings);\r\n var metadataRequest = _this._ref.storage._makeRequest(requestInfo, authToken, appCheckToken);\r\n _this._request = metadataRequest;\r\n metadataRequest.getPromise().then(function (metadata) {\r\n _this._request = undefined;\r\n _this._metadata = metadata;\r\n _this._transition(\"success\" /* SUCCESS */);\r\n }, _this._metadataErrorHandler);\r\n });\r\n };\r\n UploadTask.prototype._oneShotUpload = function () {\r\n var _this = this;\r\n this._resolveToken(function (authToken, appCheckToken) {\r\n var requestInfo = multipartUpload(_this._ref.storage, _this._ref._location, _this._mappings, _this._blob, _this._metadata);\r\n var multipartRequest = _this._ref.storage._makeRequest(requestInfo, authToken, appCheckToken);\r\n _this._request = multipartRequest;\r\n multipartRequest.getPromise().then(function (metadata) {\r\n _this._request = undefined;\r\n _this._metadata = metadata;\r\n _this._updateProgress(_this._blob.size());\r\n _this._transition(\"success\" /* SUCCESS */);\r\n }, _this._errorHandler);\r\n });\r\n };\r\n UploadTask.prototype._updateProgress = function (transferred) {\r\n var old = this._transferred;\r\n this._transferred = transferred;\r\n // A progress update can make the \"transferred\" value smaller (e.g. a\r\n // partial upload not completed by server, after which the \"transferred\"\r\n // value may reset to the value at the beginning of the request).\r\n if (this._transferred !== old) {\r\n this._notifyObservers();\r\n }\r\n };\r\n UploadTask.prototype._transition = function (state) {\r\n if (this._state === state) {\r\n return;\r\n }\r\n switch (state) {\r\n case \"canceling\" /* CANCELING */:\r\n // TODO(andysoto):\r\n // assert(this.state_ === InternalTaskState.RUNNING ||\r\n // this.state_ === InternalTaskState.PAUSING);\r\n this._state = state;\r\n if (this._request !== undefined) {\r\n this._request.cancel();\r\n }\r\n break;\r\n case \"pausing\" /* PAUSING */:\r\n // TODO(andysoto):\r\n // assert(this.state_ === InternalTaskState.RUNNING);\r\n this._state = state;\r\n if (this._request !== undefined) {\r\n this._request.cancel();\r\n }\r\n break;\r\n case \"running\" /* RUNNING */:\r\n // TODO(andysoto):\r\n // assert(this.state_ === InternalTaskState.PAUSED ||\r\n // this.state_ === InternalTaskState.PAUSING);\r\n var wasPaused = this._state === \"paused\" /* PAUSED */;\r\n this._state = state;\r\n if (wasPaused) {\r\n this._notifyObservers();\r\n this._start();\r\n }\r\n break;\r\n case \"paused\" /* PAUSED */:\r\n // TODO(andysoto):\r\n // assert(this.state_ === InternalTaskState.PAUSING);\r\n this._state = state;\r\n this._notifyObservers();\r\n break;\r\n case \"canceled\" /* CANCELED */:\r\n // TODO(andysoto):\r\n // assert(this.state_ === InternalTaskState.PAUSED ||\r\n // this.state_ === InternalTaskState.CANCELING);\r\n this._error = canceled();\r\n this._state = state;\r\n this._notifyObservers();\r\n break;\r\n case \"error\" /* ERROR */:\r\n // TODO(andysoto):\r\n // assert(this.state_ === InternalTaskState.RUNNING ||\r\n // this.state_ === InternalTaskState.PAUSING ||\r\n // this.state_ === InternalTaskState.CANCELING);\r\n this._state = state;\r\n this._notifyObservers();\r\n break;\r\n case \"success\" /* SUCCESS */:\r\n // TODO(andysoto):\r\n // assert(this.state_ === InternalTaskState.RUNNING ||\r\n // this.state_ === InternalTaskState.PAUSING ||\r\n // this.state_ === InternalTaskState.CANCELING);\r\n this._state = state;\r\n this._notifyObservers();\r\n break;\r\n }\r\n };\r\n UploadTask.prototype.completeTransitions_ = function () {\r\n switch (this._state) {\r\n case \"pausing\" /* PAUSING */:\r\n this._transition(\"paused\" /* PAUSED */);\r\n break;\r\n case \"canceling\" /* CANCELING */:\r\n this._transition(\"canceled\" /* CANCELED */);\r\n break;\r\n case \"running\" /* RUNNING */:\r\n this._start();\r\n break;\r\n }\r\n };\r\n Object.defineProperty(UploadTask.prototype, \"snapshot\", {\r\n /**\r\n * A snapshot of the current task state.\r\n */\r\n get: function () {\r\n var externalState = taskStateFromInternalTaskState(this._state);\r\n return {\r\n bytesTransferred: this._transferred,\r\n totalBytes: this._blob.size(),\r\n state: externalState,\r\n metadata: this._metadata,\r\n task: this,\r\n ref: this._ref\r\n };\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n /**\r\n * Adds a callback for an event.\r\n * @param type - The type of event to listen for.\r\n * @param nextOrObserver -\r\n * The `next` function, which gets called for each item in\r\n * the event stream, or an observer object with some or all of these three\r\n * properties (`next`, `error`, `complete`).\r\n * @param error - A function that gets called with a `FirebaseStorageError`\r\n * if the event stream ends due to an error.\r\n * @param completed - A function that gets called if the\r\n * event stream ends normally.\r\n * @returns\r\n * If only the event argument is passed, returns a function you can use to\r\n * add callbacks (see the examples above). If more than just the event\r\n * argument is passed, returns a function you can call to unregister the\r\n * callbacks.\r\n */\r\n UploadTask.prototype.on = function (type, nextOrObserver, error, completed) {\r\n var _this = this;\r\n var observer = new Observer(nextOrObserver, error, completed);\r\n this._addObserver(observer);\r\n return function () {\r\n _this._removeObserver(observer);\r\n };\r\n };\r\n /**\r\n * This object behaves like a Promise, and resolves with its snapshot data\r\n * when the upload completes.\r\n * @param onFulfilled - The fulfillment callback. Promise chaining works as normal.\r\n * @param onRejected - The rejection callback.\r\n */\r\n UploadTask.prototype.then = function (onFulfilled, onRejected) {\r\n // These casts are needed so that TypeScript can infer the types of the\r\n // resulting Promise.\r\n return this._promise.then(onFulfilled, onRejected);\r\n };\r\n /**\r\n * Equivalent to calling `then(null, onRejected)`.\r\n */\r\n UploadTask.prototype.catch = function (onRejected) {\r\n return this.then(null, onRejected);\r\n };\r\n /**\r\n * Adds the given observer.\r\n */\r\n UploadTask.prototype._addObserver = function (observer) {\r\n this._observers.push(observer);\r\n this._notifyObserver(observer);\r\n };\r\n /**\r\n * Removes the given observer.\r\n */\r\n UploadTask.prototype._removeObserver = function (observer) {\r\n var i = this._observers.indexOf(observer);\r\n if (i !== -1) {\r\n this._observers.splice(i, 1);\r\n }\r\n };\r\n UploadTask.prototype._notifyObservers = function () {\r\n var _this = this;\r\n this._finishPromise();\r\n var observers = this._observers.slice();\r\n observers.forEach(function (observer) {\r\n _this._notifyObserver(observer);\r\n });\r\n };\r\n UploadTask.prototype._finishPromise = function () {\r\n if (this._resolve !== undefined) {\r\n var triggered = true;\r\n switch (taskStateFromInternalTaskState(this._state)) {\r\n case TaskState.SUCCESS:\r\n async(this._resolve.bind(null, this.snapshot))();\r\n break;\r\n case TaskState.CANCELED:\r\n case TaskState.ERROR:\r\n var toCall = this._reject;\r\n async(toCall.bind(null, this._error))();\r\n break;\r\n default:\r\n triggered = false;\r\n break;\r\n }\r\n if (triggered) {\r\n this._resolve = undefined;\r\n this._reject = undefined;\r\n }\r\n }\r\n };\r\n UploadTask.prototype._notifyObserver = function (observer) {\r\n var externalState = taskStateFromInternalTaskState(this._state);\r\n switch (externalState) {\r\n case TaskState.RUNNING:\r\n case TaskState.PAUSED:\r\n if (observer.next) {\r\n async(observer.next.bind(observer, this.snapshot))();\r\n }\r\n break;\r\n case TaskState.SUCCESS:\r\n if (observer.complete) {\r\n async(observer.complete.bind(observer))();\r\n }\r\n break;\r\n case TaskState.CANCELED:\r\n case TaskState.ERROR:\r\n if (observer.error) {\r\n async(observer.error.bind(observer, this._error))();\r\n }\r\n break;\r\n default:\r\n // TODO(andysoto): assert(false);\r\n if (observer.error) {\r\n async(observer.error.bind(observer, this._error))();\r\n }\r\n }\r\n };\r\n /**\r\n * Resumes a paused task. Has no effect on a currently running or failed task.\r\n * @returns True if the operation took effect, false if ignored.\r\n */\r\n UploadTask.prototype.resume = function () {\r\n var valid = this._state === \"paused\" /* PAUSED */ ||\r\n this._state === \"pausing\" /* PAUSING */;\r\n if (valid) {\r\n this._transition(\"running\" /* RUNNING */);\r\n }\r\n return valid;\r\n };\r\n /**\r\n * Pauses a currently running task. Has no effect on a paused or failed task.\r\n * @returns True if the operation took effect, false if ignored.\r\n */\r\n UploadTask.prototype.pause = function () {\r\n var valid = this._state === \"running\" /* RUNNING */;\r\n if (valid) {\r\n this._transition(\"pausing\" /* PAUSING */);\r\n }\r\n return valid;\r\n };\r\n /**\r\n * Cancels a currently running or paused task. Has no effect on a complete or\r\n * failed task.\r\n * @returns True if the operation took effect, false if ignored.\r\n */\r\n UploadTask.prototype.cancel = function () {\r\n var valid = this._state === \"running\" /* RUNNING */ ||\r\n this._state === \"pausing\" /* PAUSING */;\r\n if (valid) {\r\n this._transition(\"canceling\" /* CANCELING */);\r\n }\r\n return valid;\r\n };\r\n return UploadTask;\r\n}());\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * Provides methods to interact with a bucket in the Firebase Storage service.\r\n * @internal\r\n * @param _location - An fbs.location, or the URL at\r\n * which to base this object, in one of the following forms:\r\n * gs:///\r\n * http[s]://firebasestorage.googleapis.com/\r\n * /b//o/\r\n * Any query or fragment strings will be ignored in the http[s]\r\n * format. If no value is passed, the storage object will use a URL based on\r\n * the project ID of the base firebase.App instance.\r\n */\r\nvar Reference = /** @class */ (function () {\r\n function Reference(_service, location) {\r\n this._service = _service;\r\n if (location instanceof Location) {\r\n this._location = location;\r\n }\r\n else {\r\n this._location = Location.makeFromUrl(location, _service.host);\r\n }\r\n }\r\n /**\r\n * Returns the URL for the bucket and path this object references,\r\n * in the form gs:///\r\n * @override\r\n */\r\n Reference.prototype.toString = function () {\r\n return 'gs://' + this._location.bucket + '/' + this._location.path;\r\n };\r\n Reference.prototype._newRef = function (service, location) {\r\n return new Reference(service, location);\r\n };\r\n Object.defineProperty(Reference.prototype, \"root\", {\r\n /**\r\n * A reference to the root of this object's bucket.\r\n */\r\n get: function () {\r\n var location = new Location(this._location.bucket, '');\r\n return this._newRef(this._service, location);\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(Reference.prototype, \"bucket\", {\r\n /**\r\n * The name of the bucket containing this reference's object.\r\n */\r\n get: function () {\r\n return this._location.bucket;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(Reference.prototype, \"fullPath\", {\r\n /**\r\n * The full path of this object.\r\n */\r\n get: function () {\r\n return this._location.path;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(Reference.prototype, \"name\", {\r\n /**\r\n * The short name of this object, which is the last component of the full path.\r\n * For example, if fullPath is 'full/path/image.png', name is 'image.png'.\r\n */\r\n get: function () {\r\n return lastComponent(this._location.path);\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(Reference.prototype, \"storage\", {\r\n /**\r\n * The `StorageService` instance this `StorageReference` is associated with.\r\n */\r\n get: function () {\r\n return this._service;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(Reference.prototype, \"parent\", {\r\n /**\r\n * A `StorageReference` pointing to the parent location of this `StorageReference`, or null if\r\n * this reference is the root.\r\n */\r\n get: function () {\r\n var newPath = parent(this._location.path);\r\n if (newPath === null) {\r\n return null;\r\n }\r\n var location = new Location(this._location.bucket, newPath);\r\n return new Reference(this._service, location);\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n /**\r\n * Utility function to throw an error in methods that do not accept a root reference.\r\n */\r\n Reference.prototype._throwIfRoot = function (name) {\r\n if (this._location.path === '') {\r\n throw invalidRootOperation(name);\r\n }\r\n };\r\n return Reference;\r\n}());\r\n/**\r\n * Uploads data to this object's location.\r\n * The upload can be paused and resumed, and exposes progress updates.\r\n * @public\r\n * @param ref - StorageReference where data should be uploaded.\r\n * @param data - The data to upload.\r\n * @param metadata - Metadata for the newly uploaded data.\r\n * @returns An UploadTask\r\n */\r\nfunction uploadBytesResumable$1(ref, data, metadata) {\r\n ref._throwIfRoot('uploadBytesResumable');\r\n return new UploadTask(ref, new FbsBlob(data), metadata);\r\n}\r\n/**\r\n * List all items (files) and prefixes (folders) under this storage reference.\r\n *\r\n * This is a helper method for calling list() repeatedly until there are\r\n * no more results. The default pagination size is 1000.\r\n *\r\n * Note: The results may not be consistent if objects are changed while this\r\n * operation is running.\r\n *\r\n * Warning: listAll may potentially consume too many resources if there are\r\n * too many results.\r\n * @public\r\n * @param ref - StorageReference to get list from.\r\n *\r\n * @returns A Promise that resolves with all the items and prefixes under\r\n * the current storage reference. `prefixes` contains references to\r\n * sub-directories and `items` contains references to objects in this\r\n * folder. `nextPageToken` is never returned.\r\n */\r\nfunction listAll$1(ref) {\r\n var accumulator = {\r\n prefixes: [],\r\n items: []\r\n };\r\n return listAllHelper(ref, accumulator).then(function () { return accumulator; });\r\n}\r\n/**\r\n * Separated from listAll because async functions can't use \"arguments\".\r\n * @param ref\r\n * @param accumulator\r\n * @param pageToken\r\n */\r\nfunction listAllHelper(ref, accumulator, pageToken) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var opt, nextPage;\r\n var _a, _b;\r\n return __generator(this, function (_c) {\r\n switch (_c.label) {\r\n case 0:\r\n opt = {\r\n // maxResults is 1000 by default.\r\n pageToken: pageToken\r\n };\r\n return [4 /*yield*/, list$1(ref, opt)];\r\n case 1:\r\n nextPage = _c.sent();\r\n (_a = accumulator.prefixes).push.apply(_a, nextPage.prefixes);\r\n (_b = accumulator.items).push.apply(_b, nextPage.items);\r\n if (!(nextPage.nextPageToken != null)) return [3 /*break*/, 3];\r\n return [4 /*yield*/, listAllHelper(ref, accumulator, nextPage.nextPageToken)];\r\n case 2:\r\n _c.sent();\r\n _c.label = 3;\r\n case 3: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n}\r\n/**\r\n * List items (files) and prefixes (folders) under this storage reference.\r\n *\r\n * List API is only available for Firebase Rules Version 2.\r\n *\r\n * GCS is a key-blob store. Firebase Storage imposes the semantic of '/'\r\n * delimited folder structure.\r\n * Refer to GCS's List API if you want to learn more.\r\n *\r\n * To adhere to Firebase Rules's Semantics, Firebase Storage does not\r\n * support objects whose paths end with \"/\" or contain two consecutive\r\n * \"/\"s. Firebase Storage List API will filter these unsupported objects.\r\n * list() may fail if there are too many unsupported objects in the bucket.\r\n * @public\r\n *\r\n * @param ref - StorageReference to get list from.\r\n * @param options - See ListOptions for details.\r\n * @returns A Promise that resolves with the items and prefixes.\r\n * `prefixes` contains references to sub-folders and `items`\r\n * contains references to objects in this folder. `nextPageToken`\r\n * can be used to get the rest of the results.\r\n */\r\nfunction list$1(ref, options) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var op, requestInfo;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n if (options != null) {\r\n if (typeof options.maxResults === 'number') {\r\n validateNumber('options.maxResults', \r\n /* minValue= */ 1, \r\n /* maxValue= */ 1000, options.maxResults);\r\n }\r\n }\r\n op = options || {};\r\n requestInfo = list$2(ref.storage, ref._location, \r\n /*delimiter= */ '/', op.pageToken, op.maxResults);\r\n return [4 /*yield*/, ref.storage.makeRequestWithTokens(requestInfo)];\r\n case 1: return [2 /*return*/, (_a.sent()).getPromise()];\r\n }\r\n });\r\n });\r\n}\r\n/**\r\n * A `Promise` that resolves with the metadata for this object. If this\r\n * object doesn't exist or metadata cannot be retreived, the promise is\r\n * rejected.\r\n * @public\r\n * @param ref - StorageReference to get metadata from.\r\n */\r\nfunction getMetadata$1(ref) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var requestInfo;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n ref._throwIfRoot('getMetadata');\r\n requestInfo = getMetadata$2(ref.storage, ref._location, getMappings());\r\n return [4 /*yield*/, ref.storage.makeRequestWithTokens(requestInfo)];\r\n case 1: return [2 /*return*/, (_a.sent()).getPromise()];\r\n }\r\n });\r\n });\r\n}\r\n/**\r\n * Updates the metadata for this object.\r\n * @public\r\n * @param ref - StorageReference to update metadata for.\r\n * @param metadata - The new metadata for the object.\r\n * Only values that have been explicitly set will be changed. Explicitly\r\n * setting a value to null will remove the metadata.\r\n * @returns A `Promise` that resolves\r\n * with the new metadata for this object.\r\n * See `firebaseStorage.Reference.prototype.getMetadata`\r\n */\r\nfunction updateMetadata$1(ref, metadata) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var requestInfo;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n ref._throwIfRoot('updateMetadata');\r\n requestInfo = updateMetadata$2(ref.storage, ref._location, metadata, getMappings());\r\n return [4 /*yield*/, ref.storage.makeRequestWithTokens(requestInfo)];\r\n case 1: return [2 /*return*/, (_a.sent()).getPromise()];\r\n }\r\n });\r\n });\r\n}\r\n/**\r\n * Returns the download URL for the given Reference.\r\n * @public\r\n * @returns A `Promise` that resolves with the download\r\n * URL for this object.\r\n */\r\nfunction getDownloadURL$1(ref) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var requestInfo;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n ref._throwIfRoot('getDownloadURL');\r\n requestInfo = getDownloadUrl(ref.storage, ref._location, getMappings());\r\n return [4 /*yield*/, ref.storage.makeRequestWithTokens(requestInfo)];\r\n case 1: return [2 /*return*/, (_a.sent())\r\n .getPromise()\r\n .then(function (url) {\r\n if (url === null) {\r\n throw noDownloadURL();\r\n }\r\n return url;\r\n })];\r\n }\r\n });\r\n });\r\n}\r\n/**\r\n * Deletes the object at this location.\r\n * @public\r\n * @param ref - StorageReference for object to delete.\r\n * @returns A `Promise` that resolves if the deletion succeeds.\r\n */\r\nfunction deleteObject$1(ref) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var requestInfo;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n ref._throwIfRoot('deleteObject');\r\n requestInfo = deleteObject$2(ref.storage, ref._location);\r\n return [4 /*yield*/, ref.storage.makeRequestWithTokens(requestInfo)];\r\n case 1: return [2 /*return*/, (_a.sent()).getPromise()];\r\n }\r\n });\r\n });\r\n}\r\n/**\r\n * Returns reference for object obtained by appending `childPath` to `ref`.\r\n *\r\n * @param ref - StorageReference to get child of.\r\n * @param childPath - Child path from provided ref.\r\n * @returns A reference to the object obtained by\r\n * appending childPath, removing any duplicate, beginning, or trailing\r\n * slashes.\r\n *\r\n */\r\nfunction _getChild$1(ref, childPath) {\r\n var newPath = child(ref._location.path, childPath);\r\n var location = new Location(ref._location.bucket, newPath);\r\n return new Reference(ref.storage, location);\r\n}\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nfunction isUrl(path) {\r\n return /^[A-Za-z]+:\\/\\//.test(path);\r\n}\r\n/**\r\n * Returns a firebaseStorage.Reference for the given url.\r\n */\r\nfunction refFromURL(service, url) {\r\n return new Reference(service, url);\r\n}\r\n/**\r\n * Returns a firebaseStorage.Reference for the given path in the default\r\n * bucket.\r\n */\r\nfunction refFromPath(ref, path) {\r\n if (ref instanceof FirebaseStorageImpl) {\r\n var service = ref;\r\n if (service._bucket == null) {\r\n throw noDefaultBucket();\r\n }\r\n var reference = new Reference(service, service._bucket);\r\n if (path != null) {\r\n return refFromPath(reference, path);\r\n }\r\n else {\r\n return reference;\r\n }\r\n }\r\n else {\r\n // ref is a Reference\r\n if (path !== undefined) {\r\n return _getChild$1(ref, path);\r\n }\r\n else {\r\n return ref;\r\n }\r\n }\r\n}\r\nfunction ref$1(serviceOrRef, pathOrUrl) {\r\n if (pathOrUrl && isUrl(pathOrUrl)) {\r\n if (serviceOrRef instanceof FirebaseStorageImpl) {\r\n return refFromURL(serviceOrRef, pathOrUrl);\r\n }\r\n else {\r\n throw invalidArgument('To use ref(service, url), the first argument must be a Storage instance.');\r\n }\r\n }\r\n else {\r\n return refFromPath(serviceOrRef, pathOrUrl);\r\n }\r\n}\r\nfunction extractBucket(host, config) {\r\n var bucketString = config === null || config === void 0 ? void 0 : config[CONFIG_STORAGE_BUCKET_KEY];\r\n if (bucketString == null) {\r\n return null;\r\n }\r\n return Location.makeFromBucketSpec(bucketString, host);\r\n}\r\nfunction connectStorageEmulator$1(storage, host, port, options) {\r\n if (options === void 0) { options = {}; }\r\n storage.host = \"http://\" + host + \":\" + port;\r\n var mockUserToken = options.mockUserToken;\r\n if (mockUserToken) {\r\n storage._overrideAuthToken =\r\n typeof mockUserToken === 'string'\r\n ? mockUserToken\r\n : createMockUserToken(mockUserToken, storage.app.options.projectId);\r\n }\r\n}\r\n/**\r\n * A service that provides Firebase Storage Reference instances.\r\n * @public\r\n * @param opt_url - gs:// url to a custom Storage Bucket\r\n */\r\nvar FirebaseStorageImpl = /** @class */ (function () {\r\n function FirebaseStorageImpl(\r\n /**\r\n * FirebaseApp associated with this StorageService instance.\r\n */\r\n app, _authProvider, \r\n /**\r\n * @internal\r\n */\r\n _appCheckProvider, \r\n /**\r\n * @internal\r\n */\r\n _pool, _url, _firebaseVersion) {\r\n this.app = app;\r\n this._authProvider = _authProvider;\r\n this._appCheckProvider = _appCheckProvider;\r\n this._pool = _pool;\r\n this._url = _url;\r\n this._firebaseVersion = _firebaseVersion;\r\n this._bucket = null;\r\n /**\r\n * This string can be in the formats:\r\n * - host\r\n * - host:port\r\n * - protocol://host:port\r\n */\r\n this._host = DEFAULT_HOST;\r\n this._appId = null;\r\n this._deleted = false;\r\n this._maxOperationRetryTime = DEFAULT_MAX_OPERATION_RETRY_TIME;\r\n this._maxUploadRetryTime = DEFAULT_MAX_UPLOAD_RETRY_TIME;\r\n this._requests = new Set();\r\n if (_url != null) {\r\n this._bucket = Location.makeFromBucketSpec(_url, this._host);\r\n }\r\n else {\r\n this._bucket = extractBucket(this._host, this.app.options);\r\n }\r\n }\r\n Object.defineProperty(FirebaseStorageImpl.prototype, \"host\", {\r\n get: function () {\r\n return this._host;\r\n },\r\n /**\r\n * Set host string for this service.\r\n * @param host - host string in the form of host, host:port,\r\n * or protocol://host:port\r\n */\r\n set: function (host) {\r\n this._host = host;\r\n if (this._url != null) {\r\n this._bucket = Location.makeFromBucketSpec(this._url, host);\r\n }\r\n else {\r\n this._bucket = extractBucket(host, this.app.options);\r\n }\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(FirebaseStorageImpl.prototype, \"maxUploadRetryTime\", {\r\n /**\r\n * The maximum time to retry uploads in milliseconds.\r\n */\r\n get: function () {\r\n return this._maxUploadRetryTime;\r\n },\r\n set: function (time) {\r\n validateNumber('time', \r\n /* minValue=*/ 0, \r\n /* maxValue= */ Number.POSITIVE_INFINITY, time);\r\n this._maxUploadRetryTime = time;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(FirebaseStorageImpl.prototype, \"maxOperationRetryTime\", {\r\n /**\r\n * The maximum time to retry operations other than uploads or downloads in\r\n * milliseconds.\r\n */\r\n get: function () {\r\n return this._maxOperationRetryTime;\r\n },\r\n set: function (time) {\r\n validateNumber('time', \r\n /* minValue=*/ 0, \r\n /* maxValue= */ Number.POSITIVE_INFINITY, time);\r\n this._maxOperationRetryTime = time;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n FirebaseStorageImpl.prototype._getAuthToken = function () {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var auth, tokenData;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n if (this._overrideAuthToken) {\r\n return [2 /*return*/, this._overrideAuthToken];\r\n }\r\n auth = this._authProvider.getImmediate({ optional: true });\r\n if (!auth) return [3 /*break*/, 2];\r\n return [4 /*yield*/, auth.getToken()];\r\n case 1:\r\n tokenData = _a.sent();\r\n if (tokenData !== null) {\r\n return [2 /*return*/, tokenData.accessToken];\r\n }\r\n _a.label = 2;\r\n case 2: return [2 /*return*/, null];\r\n }\r\n });\r\n });\r\n };\r\n FirebaseStorageImpl.prototype._getAppCheckToken = function () {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var appCheck, result;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n appCheck = this._appCheckProvider.getImmediate({ optional: true });\r\n if (!appCheck) return [3 /*break*/, 2];\r\n return [4 /*yield*/, appCheck.getToken()];\r\n case 1:\r\n result = _a.sent();\r\n // TODO: What do we want to do if there is an error getting the token?\r\n // Context: appCheck.getToken() will never throw even if an error happened. In the error case, a dummy token will be\r\n // returned along with an error field describing the error. In general, we shouldn't care about the error condition and just use\r\n // the token (actual or dummy) to send requests.\r\n return [2 /*return*/, result.token];\r\n case 2: return [2 /*return*/, null];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Stop running requests and prevent more from being created.\r\n */\r\n FirebaseStorageImpl.prototype._delete = function () {\r\n if (!this._deleted) {\r\n this._deleted = true;\r\n this._requests.forEach(function (request) { return request.cancel(); });\r\n this._requests.clear();\r\n }\r\n return Promise.resolve();\r\n };\r\n /**\r\n * Returns a new firebaseStorage.Reference object referencing this StorageService\r\n * at the given Location.\r\n */\r\n FirebaseStorageImpl.prototype._makeStorageReference = function (loc) {\r\n return new Reference(this, loc);\r\n };\r\n /**\r\n * @param requestInfo - HTTP RequestInfo object\r\n * @param authToken - Firebase auth token\r\n */\r\n FirebaseStorageImpl.prototype._makeRequest = function (requestInfo, authToken, appCheckToken) {\r\n var _this = this;\r\n if (!this._deleted) {\r\n var request_1 = makeRequest(requestInfo, this._appId, authToken, appCheckToken, this._pool, this._firebaseVersion);\r\n this._requests.add(request_1);\r\n // Request removes itself from set when complete.\r\n request_1.getPromise().then(function () { return _this._requests.delete(request_1); }, function () { return _this._requests.delete(request_1); });\r\n return request_1;\r\n }\r\n else {\r\n return new FailRequest(appDeleted());\r\n }\r\n };\r\n FirebaseStorageImpl.prototype.makeRequestWithTokens = function (requestInfo) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var _a, authToken, appCheckToken;\r\n return __generator(this, function (_b) {\r\n switch (_b.label) {\r\n case 0: return [4 /*yield*/, Promise.all([\r\n this._getAuthToken(),\r\n this._getAppCheckToken()\r\n ])];\r\n case 1:\r\n _a = _b.sent(), authToken = _a[0], appCheckToken = _a[1];\r\n return [2 /*return*/, this._makeRequest(requestInfo, authToken, appCheckToken)];\r\n }\r\n });\r\n });\r\n };\r\n return FirebaseStorageImpl;\r\n}());\n\n/**\r\n * @license\r\n * Copyright 2020 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * Uploads data to this object's location.\r\n * The upload can be paused and resumed, and exposes progress updates.\r\n * @public\r\n * @param ref - StorageReference where data should be uploaded.\r\n * @param data - The data to upload.\r\n * @param metadata - Metadata for the data to upload.\r\n * @returns An UploadTask\r\n */\r\nfunction uploadBytesResumable(ref, data, metadata) {\r\n ref = getModularInstance(ref);\r\n return uploadBytesResumable$1(ref, data, metadata);\r\n}\r\n/**\r\n * A `Promise` that resolves with the metadata for this object. If this\r\n * object doesn't exist or metadata cannot be retreived, the promise is\r\n * rejected.\r\n * @public\r\n * @param ref - {@link StorageReference} to get metadata from.\r\n */\r\nfunction getMetadata(ref) {\r\n ref = getModularInstance(ref);\r\n return getMetadata$1(ref);\r\n}\r\n/**\r\n * Updates the metadata for this object.\r\n * @public\r\n * @param ref - {@link StorageReference} to update metadata for.\r\n * @param metadata - The new metadata for the object.\r\n * Only values that have been explicitly set will be changed. Explicitly\r\n * setting a value to null will remove the metadata.\r\n * @returns A `Promise` that resolves with the new metadata for this object.\r\n */\r\nfunction updateMetadata(ref, metadata) {\r\n ref = getModularInstance(ref);\r\n return updateMetadata$1(ref, metadata);\r\n}\r\n/**\r\n * List items (files) and prefixes (folders) under this storage reference.\r\n *\r\n * List API is only available for Firebase Rules Version 2.\r\n *\r\n * GCS is a key-blob store. Firebase Storage imposes the semantic of '/'\r\n * delimited folder structure.\r\n * Refer to GCS's List API if you want to learn more.\r\n *\r\n * To adhere to Firebase Rules's Semantics, Firebase Storage does not\r\n * support objects whose paths end with \"/\" or contain two consecutive\r\n * \"/\"s. Firebase Storage List API will filter these unsupported objects.\r\n * list() may fail if there are too many unsupported objects in the bucket.\r\n * @public\r\n *\r\n * @param ref - {@link StorageReference} to get list from.\r\n * @param options - See {@link ListOptions} for details.\r\n * @returns A `Promise` that resolves with the items and prefixes.\r\n * `prefixes` contains references to sub-folders and `items`\r\n * contains references to objects in this folder. `nextPageToken`\r\n * can be used to get the rest of the results.\r\n */\r\nfunction list(ref, options) {\r\n ref = getModularInstance(ref);\r\n return list$1(ref, options);\r\n}\r\n/**\r\n * List all items (files) and prefixes (folders) under this storage reference.\r\n *\r\n * This is a helper method for calling list() repeatedly until there are\r\n * no more results. The default pagination size is 1000.\r\n *\r\n * Note: The results may not be consistent if objects are changed while this\r\n * operation is running.\r\n *\r\n * Warning: `listAll` may potentially consume too many resources if there are\r\n * too many results.\r\n * @public\r\n * @param ref - {@link StorageReference} to get list from.\r\n *\r\n * @returns A `Promise` that resolves with all the items and prefixes under\r\n * the current storage reference. `prefixes` contains references to\r\n * sub-directories and `items` contains references to objects in this\r\n * folder. `nextPageToken` is never returned.\r\n */\r\nfunction listAll(ref) {\r\n ref = getModularInstance(ref);\r\n return listAll$1(ref);\r\n}\r\n/**\r\n * Returns the download URL for the given {@link StorageReference}.\r\n * @public\r\n * @param ref - {@link StorageReference} to get the download URL for.\r\n * @returns A `Promise` that resolves with the download\r\n * URL for this object.\r\n */\r\nfunction getDownloadURL(ref) {\r\n ref = getModularInstance(ref);\r\n return getDownloadURL$1(ref);\r\n}\r\n/**\r\n * Deletes the object at this location.\r\n * @public\r\n * @param ref - {@link StorageReference} for object to delete.\r\n * @returns A `Promise` that resolves if the deletion succeeds.\r\n */\r\nfunction deleteObject(ref) {\r\n ref = getModularInstance(ref);\r\n return deleteObject$1(ref);\r\n}\r\nfunction ref(serviceOrRef, pathOrUrl) {\r\n serviceOrRef = getModularInstance(serviceOrRef);\r\n return ref$1(serviceOrRef, pathOrUrl);\r\n}\r\n/**\r\n * @internal\r\n */\r\nfunction _getChild(ref, childPath) {\r\n return _getChild$1(ref, childPath);\r\n}\r\n/**\r\n * Modify this {@link FirebaseStorage} instance to communicate with the Cloud Storage emulator.\r\n *\r\n * @param storage - The {@link FirebaseStorage} instance\r\n * @param host - The emulator host (ex: localhost)\r\n * @param port - The emulator port (ex: 5001)\r\n * @param options.mockUserToken - the mock auth token to use for unit testing Security Rules.\r\n * @public\r\n */\r\nfunction connectStorageEmulator(storage, host, port, options) {\r\n if (options === void 0) { options = {}; }\r\n connectStorageEmulator$1(storage, host, port, options);\r\n}\n\n/**\r\n * @license\r\n * Copyright 2020 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nvar UploadTaskSnapshotCompat = /** @class */ (function () {\r\n function UploadTaskSnapshotCompat(_delegate, task, ref) {\r\n this._delegate = _delegate;\r\n this.task = task;\r\n this.ref = ref;\r\n }\r\n Object.defineProperty(UploadTaskSnapshotCompat.prototype, \"bytesTransferred\", {\r\n get: function () {\r\n return this._delegate.bytesTransferred;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(UploadTaskSnapshotCompat.prototype, \"metadata\", {\r\n get: function () {\r\n return this._delegate.metadata;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(UploadTaskSnapshotCompat.prototype, \"state\", {\r\n get: function () {\r\n return this._delegate.state;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(UploadTaskSnapshotCompat.prototype, \"totalBytes\", {\r\n get: function () {\r\n return this._delegate.totalBytes;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n return UploadTaskSnapshotCompat;\r\n}());\n\n/**\r\n * @license\r\n * Copyright 2020 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nvar UploadTaskCompat = /** @class */ (function () {\r\n function UploadTaskCompat(_delegate, _ref) {\r\n this._delegate = _delegate;\r\n this._ref = _ref;\r\n this.cancel = this._delegate.cancel.bind(this._delegate);\r\n this.catch = this._delegate.catch.bind(this._delegate);\r\n this.pause = this._delegate.pause.bind(this._delegate);\r\n this.resume = this._delegate.resume.bind(this._delegate);\r\n }\r\n Object.defineProperty(UploadTaskCompat.prototype, \"snapshot\", {\r\n get: function () {\r\n return new UploadTaskSnapshotCompat(this._delegate.snapshot, this, this._ref);\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n UploadTaskCompat.prototype.then = function (onFulfilled, onRejected) {\r\n var _this = this;\r\n return this._delegate.then(function (snapshot) {\r\n if (onFulfilled) {\r\n return onFulfilled(new UploadTaskSnapshotCompat(snapshot, _this, _this._ref));\r\n }\r\n }, onRejected);\r\n };\r\n UploadTaskCompat.prototype.on = function (type, nextOrObserver, error, completed) {\r\n var _this = this;\r\n var wrappedNextOrObserver = undefined;\r\n if (!!nextOrObserver) {\r\n if (typeof nextOrObserver === 'function') {\r\n wrappedNextOrObserver = function (taskSnapshot) {\r\n return nextOrObserver(new UploadTaskSnapshotCompat(taskSnapshot, _this, _this._ref));\r\n };\r\n }\r\n else {\r\n wrappedNextOrObserver = {\r\n next: !!nextOrObserver.next\r\n ? function (taskSnapshot) {\r\n return nextOrObserver.next(new UploadTaskSnapshotCompat(taskSnapshot, _this, _this._ref));\r\n }\r\n : undefined,\r\n complete: nextOrObserver.complete || undefined,\r\n error: nextOrObserver.error || undefined\r\n };\r\n }\r\n }\r\n return this._delegate.on(type, wrappedNextOrObserver, error || undefined, completed || undefined);\r\n };\r\n return UploadTaskCompat;\r\n}());\n\nvar ListResultCompat = /** @class */ (function () {\r\n function ListResultCompat(_delegate, _service) {\r\n this._delegate = _delegate;\r\n this._service = _service;\r\n }\r\n Object.defineProperty(ListResultCompat.prototype, \"prefixes\", {\r\n get: function () {\r\n var _this = this;\r\n return this._delegate.prefixes.map(function (ref) { return new ReferenceCompat(ref, _this._service); });\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(ListResultCompat.prototype, \"items\", {\r\n get: function () {\r\n var _this = this;\r\n return this._delegate.items.map(function (ref) { return new ReferenceCompat(ref, _this._service); });\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(ListResultCompat.prototype, \"nextPageToken\", {\r\n get: function () {\r\n return this._delegate.nextPageToken || null;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n return ListResultCompat;\r\n}());\n\n/**\r\n * @license\r\n * Copyright 2020 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nvar ReferenceCompat = /** @class */ (function () {\r\n function ReferenceCompat(_delegate, storage) {\r\n this._delegate = _delegate;\r\n this.storage = storage;\r\n }\r\n Object.defineProperty(ReferenceCompat.prototype, \"name\", {\r\n get: function () {\r\n return this._delegate.name;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(ReferenceCompat.prototype, \"bucket\", {\r\n get: function () {\r\n return this._delegate.bucket;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(ReferenceCompat.prototype, \"fullPath\", {\r\n get: function () {\r\n return this._delegate.fullPath;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n ReferenceCompat.prototype.toString = function () {\r\n return this._delegate.toString();\r\n };\r\n /**\r\n * @returns A reference to the object obtained by\r\n * appending childPath, removing any duplicate, beginning, or trailing\r\n * slashes.\r\n */\r\n ReferenceCompat.prototype.child = function (childPath) {\r\n var reference = _getChild(this._delegate, childPath);\r\n return new ReferenceCompat(reference, this.storage);\r\n };\r\n Object.defineProperty(ReferenceCompat.prototype, \"root\", {\r\n get: function () {\r\n return new ReferenceCompat(this._delegate.root, this.storage);\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(ReferenceCompat.prototype, \"parent\", {\r\n /**\r\n * @returns A reference to the parent of the\r\n * current object, or null if the current object is the root.\r\n */\r\n get: function () {\r\n var reference = this._delegate.parent;\r\n if (reference == null) {\r\n return null;\r\n }\r\n return new ReferenceCompat(reference, this.storage);\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n /**\r\n * Uploads a blob to this object's location.\r\n * @param data - The blob to upload.\r\n * @returns An UploadTask that lets you control and\r\n * observe the upload.\r\n */\r\n ReferenceCompat.prototype.put = function (data, metadata) {\r\n this._throwIfRoot('put');\r\n return new UploadTaskCompat(uploadBytesResumable(this._delegate, data, metadata), this);\r\n };\r\n /**\r\n * Uploads a string to this object's location.\r\n * @param value - The string to upload.\r\n * @param format - The format of the string to upload.\r\n * @returns An UploadTask that lets you control and\r\n * observe the upload.\r\n */\r\n ReferenceCompat.prototype.putString = function (value, format, metadata) {\r\n if (format === void 0) { format = StringFormat.RAW; }\r\n this._throwIfRoot('putString');\r\n var data = dataFromString(format, value);\r\n var metadataClone = __assign({}, metadata);\r\n if (metadataClone['contentType'] == null && data.contentType != null) {\r\n metadataClone['contentType'] = data.contentType;\r\n }\r\n return new UploadTaskCompat(new UploadTask(this._delegate, new FbsBlob(data.data, true), metadataClone), this);\r\n };\r\n /**\r\n * List all items (files) and prefixes (folders) under this storage reference.\r\n *\r\n * This is a helper method for calling list() repeatedly until there are\r\n * no more results. The default pagination size is 1000.\r\n *\r\n * Note: The results may not be consistent if objects are changed while this\r\n * operation is running.\r\n *\r\n * Warning: listAll may potentially consume too many resources if there are\r\n * too many results.\r\n *\r\n * @returns A Promise that resolves with all the items and prefixes under\r\n * the current storage reference. `prefixes` contains references to\r\n * sub-directories and `items` contains references to objects in this\r\n * folder. `nextPageToken` is never returned.\r\n */\r\n ReferenceCompat.prototype.listAll = function () {\r\n var _this = this;\r\n return listAll(this._delegate).then(function (r) { return new ListResultCompat(r, _this.storage); });\r\n };\r\n /**\r\n * List items (files) and prefixes (folders) under this storage reference.\r\n *\r\n * List API is only available for Firebase Rules Version 2.\r\n *\r\n * GCS is a key-blob store. Firebase Storage imposes the semantic of '/'\r\n * delimited folder structure. Refer to GCS's List API if you want to learn more.\r\n *\r\n * To adhere to Firebase Rules's Semantics, Firebase Storage does not\r\n * support objects whose paths end with \"/\" or contain two consecutive\r\n * \"/\"s. Firebase Storage List API will filter these unsupported objects.\r\n * list() may fail if there are too many unsupported objects in the bucket.\r\n *\r\n * @param options - See ListOptions for details.\r\n * @returns A Promise that resolves with the items and prefixes.\r\n * `prefixes` contains references to sub-folders and `items`\r\n * contains references to objects in this folder. `nextPageToken`\r\n * can be used to get the rest of the results.\r\n */\r\n ReferenceCompat.prototype.list = function (options) {\r\n var _this = this;\r\n return list(this._delegate, options || undefined).then(function (r) { return new ListResultCompat(r, _this.storage); });\r\n };\r\n /**\r\n * A `Promise` that resolves with the metadata for this object. If this\r\n * object doesn't exist or metadata cannot be retreived, the promise is\r\n * rejected.\r\n */\r\n ReferenceCompat.prototype.getMetadata = function () {\r\n return getMetadata(this._delegate);\r\n };\r\n /**\r\n * Updates the metadata for this object.\r\n * @param metadata - The new metadata for the object.\r\n * Only values that have been explicitly set will be changed. Explicitly\r\n * setting a value to null will remove the metadata.\r\n * @returns A `Promise` that resolves\r\n * with the new metadata for this object.\r\n * @see firebaseStorage.Reference.prototype.getMetadata\r\n */\r\n ReferenceCompat.prototype.updateMetadata = function (metadata) {\r\n return updateMetadata(this._delegate, metadata);\r\n };\r\n /**\r\n * @returns A `Promise` that resolves with the download\r\n * URL for this object.\r\n */\r\n ReferenceCompat.prototype.getDownloadURL = function () {\r\n return getDownloadURL(this._delegate);\r\n };\r\n /**\r\n * Deletes the object at this location.\r\n * @returns A `Promise` that resolves if the deletion succeeds.\r\n */\r\n ReferenceCompat.prototype.delete = function () {\r\n this._throwIfRoot('delete');\r\n return deleteObject(this._delegate);\r\n };\r\n ReferenceCompat.prototype._throwIfRoot = function (name) {\r\n if (this._delegate._location.path === '') {\r\n throw invalidRootOperation(name);\r\n }\r\n };\r\n return ReferenceCompat;\r\n}());\n\n/**\r\n * @license\r\n * Copyright 2020 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * A service that provides firebaseStorage.Reference instances.\r\n * @param opt_url gs:// url to a custom Storage Bucket\r\n */\r\nvar StorageServiceCompat = /** @class */ (function () {\r\n function StorageServiceCompat(app, _delegate) {\r\n this.app = app;\r\n this._delegate = _delegate;\r\n }\r\n Object.defineProperty(StorageServiceCompat.prototype, \"maxOperationRetryTime\", {\r\n get: function () {\r\n return this._delegate.maxOperationRetryTime;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(StorageServiceCompat.prototype, \"maxUploadRetryTime\", {\r\n get: function () {\r\n return this._delegate.maxUploadRetryTime;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n /**\r\n * Returns a firebaseStorage.Reference for the given path in the default\r\n * bucket.\r\n */\r\n StorageServiceCompat.prototype.ref = function (path) {\r\n if (isUrl(path)) {\r\n throw invalidArgument('ref() expected a child path but got a URL, use refFromURL instead.');\r\n }\r\n return new ReferenceCompat(ref(this._delegate, path), this);\r\n };\r\n /**\r\n * Returns a firebaseStorage.Reference object for the given absolute URL,\r\n * which must be a gs:// or http[s]:// URL.\r\n */\r\n StorageServiceCompat.prototype.refFromURL = function (url) {\r\n if (!isUrl(url)) {\r\n throw invalidArgument('refFromURL() expected a full URL but got a child path, use ref() instead.');\r\n }\r\n try {\r\n Location.makeFromUrl(url, this._delegate.host);\r\n }\r\n catch (e) {\r\n throw invalidArgument('refFromUrl() expected a valid full URL but got an invalid one.');\r\n }\r\n return new ReferenceCompat(ref(this._delegate, url), this);\r\n };\r\n StorageServiceCompat.prototype.setMaxUploadRetryTime = function (time) {\r\n this._delegate.maxUploadRetryTime = time;\r\n };\r\n StorageServiceCompat.prototype.setMaxOperationRetryTime = function (time) {\r\n this._delegate.maxOperationRetryTime = time;\r\n };\r\n StorageServiceCompat.prototype.useEmulator = function (host, port, options) {\r\n if (options === void 0) { options = {}; }\r\n connectStorageEmulator(this._delegate, host, port, options);\r\n };\r\n return StorageServiceCompat;\r\n}());\n\nvar name = \"@firebase/storage\";\nvar version = \"0.7.1\";\n\n/**\r\n * @license\r\n * Copyright 2020 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * Type constant for Firebase Storage.\r\n */\r\nvar STORAGE_TYPE = 'storage';\r\nfunction factory(container, _a) {\r\n var url = _a.instanceIdentifier;\r\n // Dependencies\r\n // TODO: This should eventually be 'app-compat'\r\n var app = container.getProvider('app').getImmediate();\r\n var authProvider = container.getProvider('auth-internal');\r\n var appCheckProvider = container.getProvider('app-check-internal');\r\n // TODO: get StorageService instance from component framework instead\r\n // of creating a new one.\r\n var storageServiceCompat = new StorageServiceCompat(app, new FirebaseStorageImpl(app, authProvider, appCheckProvider, new ConnectionPool(), url, firebase.SDK_VERSION));\r\n return storageServiceCompat;\r\n}\r\nfunction registerStorage(instance) {\r\n var namespaceExports = {\r\n // no-inline\r\n TaskState: TaskState,\r\n TaskEvent: TaskEvent,\r\n StringFormat: StringFormat,\r\n Storage: FirebaseStorageImpl,\r\n Reference: ReferenceCompat\r\n };\r\n instance.INTERNAL.registerComponent(new Component(STORAGE_TYPE, factory, \"PUBLIC\" /* PUBLIC */)\r\n .setServiceProps(namespaceExports)\r\n .setMultipleInstances(true));\r\n instance.registerVersion(name, version);\r\n}\r\nregisterStorage(firebase);\n\nexport { registerStorage };\n//# sourceMappingURL=index.browser.esm.js.map\n","import firebase from '@firebase/app';\nimport '@firebase/installations';\nimport { __spreadArray, __assign } from 'tslib';\nimport { ErrorFactory, isIndexedDBAvailable, validateIndexedDBOpenable } from '@firebase/util';\nimport { Logger, LogLevel } from '@firebase/logger';\nimport { Component } from '@firebase/component';\n\nvar name = \"@firebase/performance\";\nvar version = \"0.4.18\";\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nvar SDK_VERSION = version;\r\n/** The prefix for start User Timing marks used for creating Traces. */\r\nvar TRACE_START_MARK_PREFIX = 'FB-PERF-TRACE-START';\r\n/** The prefix for stop User Timing marks used for creating Traces. */\r\nvar TRACE_STOP_MARK_PREFIX = 'FB-PERF-TRACE-STOP';\r\n/** The prefix for User Timing measure used for creating Traces. */\r\nvar TRACE_MEASURE_PREFIX = 'FB-PERF-TRACE-MEASURE';\r\n/** The prefix for out of the box page load Trace name. */\r\nvar OOB_TRACE_PAGE_LOAD_PREFIX = '_wt_';\r\nvar FIRST_PAINT_COUNTER_NAME = '_fp';\r\nvar FIRST_CONTENTFUL_PAINT_COUNTER_NAME = '_fcp';\r\nvar FIRST_INPUT_DELAY_COUNTER_NAME = '_fid';\r\nvar CONFIG_LOCAL_STORAGE_KEY = '@firebase/performance/config';\r\nvar CONFIG_EXPIRY_LOCAL_STORAGE_KEY = '@firebase/performance/configexpire';\r\nvar SERVICE = 'performance';\r\nvar SERVICE_NAME = 'Performance';\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nvar _a;\r\nvar ERROR_DESCRIPTION_MAP = (_a = {},\r\n _a[\"trace started\" /* TRACE_STARTED_BEFORE */] = 'Trace {$traceName} was started before.',\r\n _a[\"trace stopped\" /* TRACE_STOPPED_BEFORE */] = 'Trace {$traceName} is not running.',\r\n _a[\"nonpositive trace startTime\" /* NONPOSITIVE_TRACE_START_TIME */] = 'Trace {$traceName} startTime should be positive.',\r\n _a[\"nonpositive trace duration\" /* NONPOSITIVE_TRACE_DURATION */] = 'Trace {$traceName} duration should be positive.',\r\n _a[\"no window\" /* NO_WINDOW */] = 'Window is not available.',\r\n _a[\"no app id\" /* NO_APP_ID */] = 'App id is not available.',\r\n _a[\"no project id\" /* NO_PROJECT_ID */] = 'Project id is not available.',\r\n _a[\"no api key\" /* NO_API_KEY */] = 'Api key is not available.',\r\n _a[\"invalid cc log\" /* INVALID_CC_LOG */] = 'Attempted to queue invalid cc event',\r\n _a[\"FB not default\" /* FB_NOT_DEFAULT */] = 'Performance can only start when Firebase app instance is the default one.',\r\n _a[\"RC response not ok\" /* RC_NOT_OK */] = 'RC response is not ok',\r\n _a[\"invalid attribute name\" /* INVALID_ATTRIBUTE_NAME */] = 'Attribute name {$attributeName} is invalid.',\r\n _a[\"invalid attribute value\" /* INVALID_ATTRIBUTE_VALUE */] = 'Attribute value {$attributeValue} is invalid.',\r\n _a[\"invalid custom metric name\" /* INVALID_CUSTOM_METRIC_NAME */] = 'Custom metric name {$customMetricName} is invalid',\r\n _a[\"invalid String merger input\" /* INVALID_STRING_MERGER_PARAMETER */] = 'Input for String merger is invalid, contact support team to resolve.',\r\n _a);\r\nvar ERROR_FACTORY = new ErrorFactory(SERVICE, SERVICE_NAME, ERROR_DESCRIPTION_MAP);\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nvar consoleLogger = new Logger(SERVICE_NAME);\r\nconsoleLogger.logLevel = LogLevel.INFO;\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nvar apiInstance;\r\nvar windowInstance;\r\n/**\r\n * This class holds a reference to various browser related objects injected by\r\n * set methods.\r\n */\r\nvar Api = /** @class */ (function () {\r\n function Api(window) {\r\n this.window = window;\r\n if (!window) {\r\n throw ERROR_FACTORY.create(\"no window\" /* NO_WINDOW */);\r\n }\r\n this.performance = window.performance;\r\n this.PerformanceObserver = window.PerformanceObserver;\r\n this.windowLocation = window.location;\r\n this.navigator = window.navigator;\r\n this.document = window.document;\r\n if (this.navigator && this.navigator.cookieEnabled) {\r\n // If user blocks cookies on the browser, accessing localStorage will\r\n // throw an exception.\r\n this.localStorage = window.localStorage;\r\n }\r\n if (window.perfMetrics && window.perfMetrics.onFirstInputDelay) {\r\n this.onFirstInputDelay = window.perfMetrics.onFirstInputDelay;\r\n }\r\n }\r\n Api.prototype.getUrl = function () {\r\n // Do not capture the string query part of url.\r\n return this.windowLocation.href.split('?')[0];\r\n };\r\n Api.prototype.mark = function (name) {\r\n if (!this.performance || !this.performance.mark) {\r\n return;\r\n }\r\n this.performance.mark(name);\r\n };\r\n Api.prototype.measure = function (measureName, mark1, mark2) {\r\n if (!this.performance || !this.performance.measure) {\r\n return;\r\n }\r\n this.performance.measure(measureName, mark1, mark2);\r\n };\r\n Api.prototype.getEntriesByType = function (type) {\r\n if (!this.performance || !this.performance.getEntriesByType) {\r\n return [];\r\n }\r\n return this.performance.getEntriesByType(type);\r\n };\r\n Api.prototype.getEntriesByName = function (name) {\r\n if (!this.performance || !this.performance.getEntriesByName) {\r\n return [];\r\n }\r\n return this.performance.getEntriesByName(name);\r\n };\r\n Api.prototype.getTimeOrigin = function () {\r\n // Polyfill the time origin with performance.timing.navigationStart.\r\n return (this.performance &&\r\n (this.performance.timeOrigin || this.performance.timing.navigationStart));\r\n };\r\n Api.prototype.requiredApisAvailable = function () {\r\n if (!fetch ||\r\n !Promise ||\r\n !this.navigator ||\r\n !this.navigator.cookieEnabled) {\r\n consoleLogger.info('Firebase Performance cannot start if browser does not support fetch and Promise or cookie is disabled.');\r\n return false;\r\n }\r\n if (!isIndexedDBAvailable()) {\r\n consoleLogger.info('IndexedDB is not supported by current browswer');\r\n return false;\r\n }\r\n return true;\r\n };\r\n Api.prototype.setupObserver = function (entryType, callback) {\r\n if (!this.PerformanceObserver) {\r\n return;\r\n }\r\n var observer = new this.PerformanceObserver(function (list) {\r\n for (var _i = 0, _a = list.getEntries(); _i < _a.length; _i++) {\r\n var entry = _a[_i];\r\n // `entry` is a PerformanceEntry instance.\r\n callback(entry);\r\n }\r\n });\r\n // Start observing the entry types you care about.\r\n observer.observe({ entryTypes: [entryType] });\r\n };\r\n Api.getInstance = function () {\r\n if (apiInstance === undefined) {\r\n apiInstance = new Api(windowInstance);\r\n }\r\n return apiInstance;\r\n };\r\n return Api;\r\n}());\r\nfunction setupApi(window) {\r\n windowInstance = window;\r\n}\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nfunction mergeStrings(part1, part2) {\r\n var sizeDiff = part1.length - part2.length;\r\n if (sizeDiff < 0 || sizeDiff > 1) {\r\n throw ERROR_FACTORY.create(\"invalid String merger input\" /* INVALID_STRING_MERGER_PARAMETER */);\r\n }\r\n var resultArray = [];\r\n for (var i = 0; i < part1.length; i++) {\r\n resultArray.push(part1.charAt(i));\r\n if (part2.length > i) {\r\n resultArray.push(part2.charAt(i));\r\n }\r\n }\r\n return resultArray.join('');\r\n}\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nvar settingsServiceInstance;\r\nvar SettingsService = /** @class */ (function () {\r\n function SettingsService() {\r\n // The variable which controls logging of automatic traces and HTTP/S network monitoring.\r\n this.instrumentationEnabled = true;\r\n // The variable which controls logging of custom traces.\r\n this.dataCollectionEnabled = true;\r\n // Configuration flags set through remote config.\r\n this.loggingEnabled = false;\r\n // Sampling rate between 0 and 1.\r\n this.tracesSamplingRate = 1;\r\n this.networkRequestsSamplingRate = 1;\r\n // Address of logging service.\r\n this.logEndPointUrl = 'https://firebaselogging.googleapis.com/v0cc/log?format=json_proto';\r\n // Performance event transport endpoint URL which should be compatible with proto3.\r\n // New Address for transport service, not configurable via Remote Config.\r\n this.flTransportEndpointUrl = mergeStrings('hts/frbslgigp.ogepscmv/ieo/eaylg', 'tp:/ieaeogn-agolai.o/1frlglgc/o');\r\n this.transportKey = mergeStrings('AzSC8r6ReiGqFMyfvgow', 'Iayx0u-XT3vksVM-pIV');\r\n // Source type for performance event logs.\r\n this.logSource = 462;\r\n // Flags which control per session logging of traces and network requests.\r\n this.logTraceAfterSampling = false;\r\n this.logNetworkAfterSampling = false;\r\n // TTL of config retrieved from remote config in hours.\r\n this.configTimeToLive = 12;\r\n }\r\n SettingsService.prototype.getAppId = function () {\r\n var appId = this.firebaseAppInstance &&\r\n this.firebaseAppInstance.options &&\r\n this.firebaseAppInstance.options.appId;\r\n if (!appId) {\r\n throw ERROR_FACTORY.create(\"no app id\" /* NO_APP_ID */);\r\n }\r\n return appId;\r\n };\r\n SettingsService.prototype.getProjectId = function () {\r\n var projectId = this.firebaseAppInstance &&\r\n this.firebaseAppInstance.options &&\r\n this.firebaseAppInstance.options.projectId;\r\n if (!projectId) {\r\n throw ERROR_FACTORY.create(\"no project id\" /* NO_PROJECT_ID */);\r\n }\r\n return projectId;\r\n };\r\n SettingsService.prototype.getApiKey = function () {\r\n var apiKey = this.firebaseAppInstance &&\r\n this.firebaseAppInstance.options &&\r\n this.firebaseAppInstance.options.apiKey;\r\n if (!apiKey) {\r\n throw ERROR_FACTORY.create(\"no api key\" /* NO_API_KEY */);\r\n }\r\n return apiKey;\r\n };\r\n SettingsService.prototype.getFlTransportFullUrl = function () {\r\n return this.flTransportEndpointUrl.concat('?key=', this.transportKey);\r\n };\r\n SettingsService.getInstance = function () {\r\n if (settingsServiceInstance === undefined) {\r\n settingsServiceInstance = new SettingsService();\r\n }\r\n return settingsServiceInstance;\r\n };\r\n return SettingsService;\r\n}());\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nvar iid;\r\nfunction getIidPromise() {\r\n var iidPromise = SettingsService.getInstance().installationsService.getId();\r\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\r\n iidPromise.then(function (iidVal) {\r\n iid = iidVal;\r\n });\r\n return iidPromise;\r\n}\r\n// This method should be used after the iid is retrieved by getIidPromise method.\r\nfunction getIid() {\r\n return iid;\r\n}\r\nfunction getAuthTokenPromise() {\r\n var authTokenPromise = SettingsService.getInstance().installationsService.getToken();\r\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\r\n authTokenPromise.then(function (authTokenVal) {\r\n });\r\n return authTokenPromise;\r\n}\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nvar VisibilityState;\r\n(function (VisibilityState) {\r\n VisibilityState[VisibilityState[\"UNKNOWN\"] = 0] = \"UNKNOWN\";\r\n VisibilityState[VisibilityState[\"VISIBLE\"] = 1] = \"VISIBLE\";\r\n VisibilityState[VisibilityState[\"HIDDEN\"] = 2] = \"HIDDEN\";\r\n})(VisibilityState || (VisibilityState = {}));\r\nvar RESERVED_ATTRIBUTE_PREFIXES = ['firebase_', 'google_', 'ga_'];\r\nvar ATTRIBUTE_FORMAT_REGEX = new RegExp('^[a-zA-Z]\\\\w*$');\r\nvar MAX_ATTRIBUTE_NAME_LENGTH = 40;\r\nvar MAX_ATTRIBUTE_VALUE_LENGTH = 100;\r\nfunction getServiceWorkerStatus() {\r\n var navigator = Api.getInstance().navigator;\r\n if ('serviceWorker' in navigator) {\r\n if (navigator.serviceWorker.controller) {\r\n return 2 /* CONTROLLED */;\r\n }\r\n else {\r\n return 3 /* UNCONTROLLED */;\r\n }\r\n }\r\n else {\r\n return 1 /* UNSUPPORTED */;\r\n }\r\n}\r\nfunction getVisibilityState() {\r\n var document = Api.getInstance().document;\r\n var visibilityState = document.visibilityState;\r\n switch (visibilityState) {\r\n case 'visible':\r\n return VisibilityState.VISIBLE;\r\n case 'hidden':\r\n return VisibilityState.HIDDEN;\r\n default:\r\n return VisibilityState.UNKNOWN;\r\n }\r\n}\r\nfunction getEffectiveConnectionType() {\r\n var navigator = Api.getInstance().navigator;\r\n var navigatorConnection = navigator.connection;\r\n var effectiveType = navigatorConnection && navigatorConnection.effectiveType;\r\n switch (effectiveType) {\r\n case 'slow-2g':\r\n return 1 /* CONNECTION_SLOW_2G */;\r\n case '2g':\r\n return 2 /* CONNECTION_2G */;\r\n case '3g':\r\n return 3 /* CONNECTION_3G */;\r\n case '4g':\r\n return 4 /* CONNECTION_4G */;\r\n default:\r\n return 0 /* UNKNOWN */;\r\n }\r\n}\r\nfunction isValidCustomAttributeName(name) {\r\n if (name.length === 0 || name.length > MAX_ATTRIBUTE_NAME_LENGTH) {\r\n return false;\r\n }\r\n var matchesReservedPrefix = RESERVED_ATTRIBUTE_PREFIXES.some(function (prefix) {\r\n return name.startsWith(prefix);\r\n });\r\n return !matchesReservedPrefix && !!name.match(ATTRIBUTE_FORMAT_REGEX);\r\n}\r\nfunction isValidCustomAttributeValue(value) {\r\n return value.length !== 0 && value.length <= MAX_ATTRIBUTE_VALUE_LENGTH;\r\n}\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nvar REMOTE_CONFIG_SDK_VERSION = '0.0.1';\r\n// These values will be used if the remote config object is successfully\r\n// retrieved, but the template does not have these fields.\r\nvar DEFAULT_CONFIGS = {\r\n loggingEnabled: true\r\n};\r\nvar FIS_AUTH_PREFIX = 'FIREBASE_INSTALLATIONS_AUTH';\r\nfunction getConfig(iid) {\r\n var config = getStoredConfig();\r\n if (config) {\r\n processConfig(config);\r\n return Promise.resolve();\r\n }\r\n return getRemoteConfig(iid)\r\n .then(processConfig)\r\n .then(function (config) { return storeConfig(config); }, \r\n /** Do nothing for error, use defaults set in settings service. */\r\n function () { });\r\n}\r\nfunction getStoredConfig() {\r\n var localStorage = Api.getInstance().localStorage;\r\n if (!localStorage) {\r\n return;\r\n }\r\n var expiryString = localStorage.getItem(CONFIG_EXPIRY_LOCAL_STORAGE_KEY);\r\n if (!expiryString || !configValid(expiryString)) {\r\n return;\r\n }\r\n var configStringified = localStorage.getItem(CONFIG_LOCAL_STORAGE_KEY);\r\n if (!configStringified) {\r\n return;\r\n }\r\n try {\r\n var configResponse = JSON.parse(configStringified);\r\n return configResponse;\r\n }\r\n catch (_a) {\r\n return;\r\n }\r\n}\r\nfunction storeConfig(config) {\r\n var localStorage = Api.getInstance().localStorage;\r\n if (!config || !localStorage) {\r\n return;\r\n }\r\n localStorage.setItem(CONFIG_LOCAL_STORAGE_KEY, JSON.stringify(config));\r\n localStorage.setItem(CONFIG_EXPIRY_LOCAL_STORAGE_KEY, String(Date.now() +\r\n SettingsService.getInstance().configTimeToLive * 60 * 60 * 1000));\r\n}\r\nvar COULD_NOT_GET_CONFIG_MSG = 'Could not fetch config, will use default configs';\r\nfunction getRemoteConfig(iid) {\r\n // Perf needs auth token only to retrieve remote config.\r\n return getAuthTokenPromise()\r\n .then(function (authToken) {\r\n var projectId = SettingsService.getInstance().getProjectId();\r\n var configEndPoint = \"https://firebaseremoteconfig.googleapis.com/v1/projects/\" + projectId + \"/namespaces/fireperf:fetch?key=\" + SettingsService.getInstance().getApiKey();\r\n var request = new Request(configEndPoint, {\r\n method: 'POST',\r\n headers: { Authorization: FIS_AUTH_PREFIX + \" \" + authToken },\r\n /* eslint-disable camelcase */\r\n body: JSON.stringify({\r\n app_instance_id: iid,\r\n app_instance_id_token: authToken,\r\n app_id: SettingsService.getInstance().getAppId(),\r\n app_version: SDK_VERSION,\r\n sdk_version: REMOTE_CONFIG_SDK_VERSION\r\n })\r\n /* eslint-enable camelcase */\r\n });\r\n return fetch(request).then(function (response) {\r\n if (response.ok) {\r\n return response.json();\r\n }\r\n // In case response is not ok. This will be caught by catch.\r\n throw ERROR_FACTORY.create(\"RC response not ok\" /* RC_NOT_OK */);\r\n });\r\n })\r\n .catch(function () {\r\n consoleLogger.info(COULD_NOT_GET_CONFIG_MSG);\r\n return undefined;\r\n });\r\n}\r\n/**\r\n * Processes config coming either from calling RC or from local storage.\r\n * This method only runs if call is successful or config in storage\r\n * is valid.\r\n */\r\nfunction processConfig(config) {\r\n if (!config) {\r\n return config;\r\n }\r\n var settingsServiceInstance = SettingsService.getInstance();\r\n var entries = config.entries || {};\r\n if (entries.fpr_enabled !== undefined) {\r\n // TODO: Change the assignment of loggingEnabled once the received type is\r\n // known.\r\n settingsServiceInstance.loggingEnabled =\r\n String(entries.fpr_enabled) === 'true';\r\n }\r\n else {\r\n // Config retrieved successfully, but there is no fpr_enabled in template.\r\n // Use secondary configs value.\r\n settingsServiceInstance.loggingEnabled = DEFAULT_CONFIGS.loggingEnabled;\r\n }\r\n if (entries.fpr_log_source) {\r\n settingsServiceInstance.logSource = Number(entries.fpr_log_source);\r\n }\r\n if (entries.fpr_log_endpoint_url) {\r\n settingsServiceInstance.logEndPointUrl = entries.fpr_log_endpoint_url;\r\n }\r\n // Key from Remote Config has to be non-empty string, otherwsie use local value.\r\n if (entries.fpr_log_transport_key) {\r\n settingsServiceInstance.transportKey = entries.fpr_log_transport_key;\r\n }\r\n if (entries.fpr_vc_network_request_sampling_rate !== undefined) {\r\n settingsServiceInstance.networkRequestsSamplingRate = Number(entries.fpr_vc_network_request_sampling_rate);\r\n }\r\n if (entries.fpr_vc_trace_sampling_rate !== undefined) {\r\n settingsServiceInstance.tracesSamplingRate = Number(entries.fpr_vc_trace_sampling_rate);\r\n }\r\n // Set the per session trace and network logging flags.\r\n settingsServiceInstance.logTraceAfterSampling = shouldLogAfterSampling(settingsServiceInstance.tracesSamplingRate);\r\n settingsServiceInstance.logNetworkAfterSampling = shouldLogAfterSampling(settingsServiceInstance.networkRequestsSamplingRate);\r\n return config;\r\n}\r\nfunction configValid(expiry) {\r\n return Number(expiry) > Date.now();\r\n}\r\nfunction shouldLogAfterSampling(samplingRate) {\r\n return Math.random() <= samplingRate;\r\n}\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nvar initializationStatus = 1 /* notInitialized */;\r\nvar initializationPromise;\r\nfunction getInitializationPromise() {\r\n initializationStatus = 2 /* initializationPending */;\r\n initializationPromise = initializationPromise || initializePerf();\r\n return initializationPromise;\r\n}\r\nfunction isPerfInitialized() {\r\n return initializationStatus === 3 /* initialized */;\r\n}\r\nfunction initializePerf() {\r\n return getDocumentReadyComplete()\r\n .then(function () { return getIidPromise(); })\r\n .then(function (iid) { return getConfig(iid); })\r\n .then(function () { return changeInitializationStatus(); }, function () { return changeInitializationStatus(); });\r\n}\r\n/**\r\n * Returns a promise which resolves whenever the document readystate is complete or\r\n * immediately if it is called after page load complete.\r\n */\r\nfunction getDocumentReadyComplete() {\r\n var document = Api.getInstance().document;\r\n return new Promise(function (resolve) {\r\n if (document && document.readyState !== 'complete') {\r\n var handler_1 = function () {\r\n if (document.readyState === 'complete') {\r\n document.removeEventListener('readystatechange', handler_1);\r\n resolve();\r\n }\r\n };\r\n document.addEventListener('readystatechange', handler_1);\r\n }\r\n else {\r\n resolve();\r\n }\r\n });\r\n}\r\nfunction changeInitializationStatus() {\r\n initializationStatus = 3 /* initialized */;\r\n}\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nvar DEFAULT_SEND_INTERVAL_MS = 10 * 1000;\r\nvar INITIAL_SEND_TIME_DELAY_MS = 5.5 * 1000;\r\n// If end point does not work, the call will be tried for these many times.\r\nvar DEFAULT_REMAINING_TRIES = 3;\r\nvar MAX_EVENT_COUNT_PER_REQUEST = 1000;\r\nvar remainingTries = DEFAULT_REMAINING_TRIES;\r\n/* eslint-enable camelcase */\r\nvar queue = [];\r\nvar isTransportSetup = false;\r\nfunction setupTransportService() {\r\n if (!isTransportSetup) {\r\n processQueue(INITIAL_SEND_TIME_DELAY_MS);\r\n isTransportSetup = true;\r\n }\r\n}\r\nfunction processQueue(timeOffset) {\r\n setTimeout(function () {\r\n // If there is no remainingTries left, stop retrying.\r\n if (remainingTries === 0) {\r\n return;\r\n }\r\n // If there are no events to process, wait for DEFAULT_SEND_INTERVAL_MS and try again.\r\n if (!queue.length) {\r\n return processQueue(DEFAULT_SEND_INTERVAL_MS);\r\n }\r\n dispatchQueueEvents();\r\n }, timeOffset);\r\n}\r\nfunction dispatchQueueEvents() {\r\n // Extract events up to the maximum cap of single logRequest from top of \"official queue\".\r\n // The staged events will be used for current logRequest attempt, remaining events will be kept\r\n // for next attempt.\r\n var staged = queue.splice(0, MAX_EVENT_COUNT_PER_REQUEST);\r\n /* eslint-disable camelcase */\r\n // We will pass the JSON serialized event to the backend.\r\n var log_event = staged.map(function (evt) { return ({\r\n source_extension_json_proto3: evt.message,\r\n event_time_ms: String(evt.eventTime)\r\n }); });\r\n var data = {\r\n request_time_ms: String(Date.now()),\r\n client_info: {\r\n client_type: 1,\r\n js_client_info: {}\r\n },\r\n log_source: SettingsService.getInstance().logSource,\r\n log_event: log_event\r\n };\r\n /* eslint-enable camelcase */\r\n sendEventsToFl(data, staged).catch(function () {\r\n // If the request fails for some reason, add the events that were attempted\r\n // back to the primary queue to retry later.\r\n queue = __spreadArray(__spreadArray([], staged), queue);\r\n remainingTries--;\r\n consoleLogger.info(\"Tries left: \" + remainingTries + \".\");\r\n processQueue(DEFAULT_SEND_INTERVAL_MS);\r\n });\r\n}\r\nfunction sendEventsToFl(data, staged) {\r\n return postToFlEndpoint(data)\r\n .then(function (res) {\r\n if (!res.ok) {\r\n consoleLogger.info('Call to Firebase backend failed.');\r\n }\r\n return res.json();\r\n })\r\n .then(function (res) {\r\n // Find the next call wait time from the response.\r\n var transportWait = Number(res.nextRequestWaitMillis);\r\n var requestOffset = DEFAULT_SEND_INTERVAL_MS;\r\n if (!isNaN(transportWait)) {\r\n requestOffset = Math.max(transportWait, requestOffset);\r\n }\r\n // Delete request if response include RESPONSE_ACTION_UNKNOWN or DELETE_REQUEST action.\r\n // Otherwise, retry request using normal scheduling if response include RETRY_REQUEST_LATER.\r\n var logResponseDetails = res.logResponseDetails;\r\n if (Array.isArray(logResponseDetails) &&\r\n logResponseDetails.length > 0 &&\r\n logResponseDetails[0].responseAction === 'RETRY_REQUEST_LATER') {\r\n queue = __spreadArray(__spreadArray([], staged), queue);\r\n consoleLogger.info(\"Retry transport request later.\");\r\n }\r\n remainingTries = DEFAULT_REMAINING_TRIES;\r\n // Schedule the next process.\r\n processQueue(requestOffset);\r\n });\r\n}\r\nfunction postToFlEndpoint(data) {\r\n var flTransportFullUrl = SettingsService.getInstance().getFlTransportFullUrl();\r\n return fetch(flTransportFullUrl, {\r\n method: 'POST',\r\n body: JSON.stringify(data)\r\n });\r\n}\r\nfunction addToQueue(evt) {\r\n if (!evt.eventTime || !evt.message) {\r\n throw ERROR_FACTORY.create(\"invalid cc log\" /* INVALID_CC_LOG */);\r\n }\r\n // Add the new event to the queue.\r\n queue = __spreadArray(__spreadArray([], queue), [evt]);\r\n}\r\n/** Log handler for cc service to send the performance logs to the server. */\r\nfunction transportHandler(\r\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\r\nserializer) {\r\n return function () {\r\n var args = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n args[_i] = arguments[_i];\r\n }\r\n var message = serializer.apply(void 0, args);\r\n addToQueue({\r\n message: message,\r\n eventTime: Date.now()\r\n });\r\n };\r\n}\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/* eslint-enble camelcase */\r\nvar logger;\r\n// This method is not called before initialization.\r\nfunction sendLog(resource, resourceType) {\r\n if (!logger) {\r\n logger = transportHandler(serializer);\r\n }\r\n logger(resource, resourceType);\r\n}\r\nfunction logTrace(trace) {\r\n var settingsService = SettingsService.getInstance();\r\n // Do not log if trace is auto generated and instrumentation is disabled.\r\n if (!settingsService.instrumentationEnabled && trace.isAuto) {\r\n return;\r\n }\r\n // Do not log if trace is custom and data collection is disabled.\r\n if (!settingsService.dataCollectionEnabled && !trace.isAuto) {\r\n return;\r\n }\r\n // Do not log if required apis are not available.\r\n if (!Api.getInstance().requiredApisAvailable()) {\r\n return;\r\n }\r\n // Only log the page load auto traces if page is visible.\r\n if (trace.isAuto && getVisibilityState() !== VisibilityState.VISIBLE) {\r\n return;\r\n }\r\n if (isPerfInitialized()) {\r\n sendTraceLog(trace);\r\n }\r\n else {\r\n // Custom traces can be used before the initialization but logging\r\n // should wait until after.\r\n getInitializationPromise().then(function () { return sendTraceLog(trace); }, function () { return sendTraceLog(trace); });\r\n }\r\n}\r\nfunction sendTraceLog(trace) {\r\n if (!getIid()) {\r\n return;\r\n }\r\n var settingsService = SettingsService.getInstance();\r\n if (!settingsService.loggingEnabled ||\r\n !settingsService.logTraceAfterSampling) {\r\n return;\r\n }\r\n setTimeout(function () { return sendLog(trace, 1 /* Trace */); }, 0);\r\n}\r\nfunction logNetworkRequest(networkRequest) {\r\n var settingsService = SettingsService.getInstance();\r\n // Do not log network requests if instrumentation is disabled.\r\n if (!settingsService.instrumentationEnabled) {\r\n return;\r\n }\r\n // Do not log the js sdk's call to transport service domain to avoid unnecessary cycle.\r\n // Need to blacklist both old and new endpoints to avoid migration gap.\r\n var networkRequestUrl = networkRequest.url;\r\n // Blacklist old log endpoint and new transport endpoint.\r\n // Because Performance SDK doesn't instrument requests sent from SDK itself.\r\n var logEndpointUrl = settingsService.logEndPointUrl.split('?')[0];\r\n var flEndpointUrl = settingsService.flTransportEndpointUrl.split('?')[0];\r\n if (networkRequestUrl === logEndpointUrl ||\r\n networkRequestUrl === flEndpointUrl) {\r\n return;\r\n }\r\n if (!settingsService.loggingEnabled ||\r\n !settingsService.logNetworkAfterSampling) {\r\n return;\r\n }\r\n setTimeout(function () { return sendLog(networkRequest, 0 /* NetworkRequest */); }, 0);\r\n}\r\nfunction serializer(resource, resourceType) {\r\n if (resourceType === 0 /* NetworkRequest */) {\r\n return serializeNetworkRequest(resource);\r\n }\r\n return serializeTrace(resource);\r\n}\r\nfunction serializeNetworkRequest(networkRequest) {\r\n var networkRequestMetric = {\r\n url: networkRequest.url,\r\n http_method: networkRequest.httpMethod || 0,\r\n http_response_code: 200,\r\n response_payload_bytes: networkRequest.responsePayloadBytes,\r\n client_start_time_us: networkRequest.startTimeUs,\r\n time_to_response_initiated_us: networkRequest.timeToResponseInitiatedUs,\r\n time_to_response_completed_us: networkRequest.timeToResponseCompletedUs\r\n };\r\n var perfMetric = {\r\n application_info: getApplicationInfo(),\r\n network_request_metric: networkRequestMetric\r\n };\r\n return JSON.stringify(perfMetric);\r\n}\r\nfunction serializeTrace(trace) {\r\n var traceMetric = {\r\n name: trace.name,\r\n is_auto: trace.isAuto,\r\n client_start_time_us: trace.startTimeUs,\r\n duration_us: trace.durationUs\r\n };\r\n if (Object.keys(trace.counters).length !== 0) {\r\n traceMetric.counters = trace.counters;\r\n }\r\n var customAttributes = trace.getAttributes();\r\n if (Object.keys(customAttributes).length !== 0) {\r\n traceMetric.custom_attributes = customAttributes;\r\n }\r\n var perfMetric = {\r\n application_info: getApplicationInfo(),\r\n trace_metric: traceMetric\r\n };\r\n return JSON.stringify(perfMetric);\r\n}\r\nfunction getApplicationInfo() {\r\n return {\r\n google_app_id: SettingsService.getInstance().getAppId(),\r\n app_instance_id: getIid(),\r\n web_app_info: {\r\n sdk_version: SDK_VERSION,\r\n page_url: Api.getInstance().getUrl(),\r\n service_worker_status: getServiceWorkerStatus(),\r\n visibility_state: getVisibilityState(),\r\n effective_connection_type: getEffectiveConnectionType()\r\n },\r\n application_process_state: 0\r\n };\r\n}\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nvar MAX_METRIC_NAME_LENGTH = 100;\r\nvar RESERVED_AUTO_PREFIX = '_';\r\nvar oobMetrics = [\r\n FIRST_PAINT_COUNTER_NAME,\r\n FIRST_CONTENTFUL_PAINT_COUNTER_NAME,\r\n FIRST_INPUT_DELAY_COUNTER_NAME\r\n];\r\n/**\r\n * Returns true if the metric is custom and does not start with reserved prefix, or if\r\n * the metric is one of out of the box page load trace metrics.\r\n */\r\nfunction isValidMetricName(name, traceName) {\r\n if (name.length === 0 || name.length > MAX_METRIC_NAME_LENGTH) {\r\n return false;\r\n }\r\n return ((traceName &&\r\n traceName.startsWith(OOB_TRACE_PAGE_LOAD_PREFIX) &&\r\n oobMetrics.indexOf(name) > -1) ||\r\n !name.startsWith(RESERVED_AUTO_PREFIX));\r\n}\r\n/**\r\n * Converts the provided value to an integer value to be used in case of a metric.\r\n * @param providedValue Provided number value of the metric that needs to be converted to an integer.\r\n *\r\n * @returns Converted integer number to be set for the metric.\r\n */\r\nfunction convertMetricValueToInteger(providedValue) {\r\n var valueAsInteger = Math.floor(providedValue);\r\n if (valueAsInteger < providedValue) {\r\n consoleLogger.info(\"Metric value should be an Integer, setting the value as : \" + valueAsInteger + \".\");\r\n }\r\n return valueAsInteger;\r\n}\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nvar Trace = /** @class */ (function () {\r\n /**\r\n * @param name The name of the trace.\r\n * @param isAuto If the trace is auto-instrumented.\r\n * @param traceMeasureName The name of the measure marker in user timing specification. This field\r\n * is only set when the trace is built for logging when the user directly uses the user timing\r\n * api (performance.mark and performance.measure).\r\n */\r\n function Trace(name, isAuto, traceMeasureName) {\r\n if (isAuto === void 0) { isAuto = false; }\r\n this.name = name;\r\n this.isAuto = isAuto;\r\n this.state = 1 /* UNINITIALIZED */;\r\n this.customAttributes = {};\r\n this.counters = {};\r\n this.api = Api.getInstance();\r\n this.randomId = Math.floor(Math.random() * 1000000);\r\n if (!this.isAuto) {\r\n this.traceStartMark = TRACE_START_MARK_PREFIX + \"-\" + this.randomId + \"-\" + this.name;\r\n this.traceStopMark = TRACE_STOP_MARK_PREFIX + \"-\" + this.randomId + \"-\" + this.name;\r\n this.traceMeasure =\r\n traceMeasureName ||\r\n TRACE_MEASURE_PREFIX + \"-\" + this.randomId + \"-\" + this.name;\r\n if (traceMeasureName) {\r\n // For the case of direct user timing traces, no start stop will happen. The measure object\r\n // is already available.\r\n this.calculateTraceMetrics();\r\n }\r\n }\r\n }\r\n /**\r\n * Starts a trace. The measurement of the duration starts at this point.\r\n */\r\n Trace.prototype.start = function () {\r\n if (this.state !== 1 /* UNINITIALIZED */) {\r\n throw ERROR_FACTORY.create(\"trace started\" /* TRACE_STARTED_BEFORE */, {\r\n traceName: this.name\r\n });\r\n }\r\n this.api.mark(this.traceStartMark);\r\n this.state = 2 /* RUNNING */;\r\n };\r\n /**\r\n * Stops the trace. The measurement of the duration of the trace stops at this point and trace\r\n * is logged.\r\n */\r\n Trace.prototype.stop = function () {\r\n if (this.state !== 2 /* RUNNING */) {\r\n throw ERROR_FACTORY.create(\"trace stopped\" /* TRACE_STOPPED_BEFORE */, {\r\n traceName: this.name\r\n });\r\n }\r\n this.state = 3 /* TERMINATED */;\r\n this.api.mark(this.traceStopMark);\r\n this.api.measure(this.traceMeasure, this.traceStartMark, this.traceStopMark);\r\n this.calculateTraceMetrics();\r\n logTrace(this);\r\n };\r\n /**\r\n * Records a trace with predetermined values. If this method is used a trace is created and logged\r\n * directly. No need to use start and stop methods.\r\n * @param startTime Trace start time since epoch in millisec\r\n * @param duration The duraction of the trace in millisec\r\n * @param options An object which can optionally hold maps of custom metrics and custom attributes\r\n */\r\n Trace.prototype.record = function (startTime, duration, options) {\r\n if (startTime <= 0) {\r\n throw ERROR_FACTORY.create(\"nonpositive trace startTime\" /* NONPOSITIVE_TRACE_START_TIME */, {\r\n traceName: this.name\r\n });\r\n }\r\n if (duration <= 0) {\r\n throw ERROR_FACTORY.create(\"nonpositive trace duration\" /* NONPOSITIVE_TRACE_DURATION */, {\r\n traceName: this.name\r\n });\r\n }\r\n this.durationUs = Math.floor(duration * 1000);\r\n this.startTimeUs = Math.floor(startTime * 1000);\r\n if (options && options.attributes) {\r\n this.customAttributes = __assign({}, options.attributes);\r\n }\r\n if (options && options.metrics) {\r\n for (var _i = 0, _a = Object.keys(options.metrics); _i < _a.length; _i++) {\r\n var metric = _a[_i];\r\n if (!isNaN(Number(options.metrics[metric]))) {\r\n this.counters[metric] = Number(Math.floor(options.metrics[metric]));\r\n }\r\n }\r\n }\r\n logTrace(this);\r\n };\r\n /**\r\n * Increments a custom metric by a certain number or 1 if number not specified. Will create a new\r\n * custom metric if one with the given name does not exist. The value will be floored down to an\r\n * integer.\r\n * @param counter Name of the custom metric\r\n * @param numAsInteger Increment by value\r\n */\r\n Trace.prototype.incrementMetric = function (counter, numAsInteger) {\r\n if (numAsInteger === void 0) { numAsInteger = 1; }\r\n if (this.counters[counter] === undefined) {\r\n this.putMetric(counter, numAsInteger);\r\n }\r\n else {\r\n this.putMetric(counter, this.counters[counter] + numAsInteger);\r\n }\r\n };\r\n /**\r\n * Sets a custom metric to a specified value. Will create a new custom metric if one with the\r\n * given name does not exist. The value will be floored down to an integer.\r\n * @param counter Name of the custom metric\r\n * @param numAsInteger Set custom metric to this value\r\n */\r\n Trace.prototype.putMetric = function (counter, numAsInteger) {\r\n if (isValidMetricName(counter, this.name)) {\r\n this.counters[counter] = convertMetricValueToInteger(numAsInteger);\r\n }\r\n else {\r\n throw ERROR_FACTORY.create(\"invalid custom metric name\" /* INVALID_CUSTOM_METRIC_NAME */, {\r\n customMetricName: counter\r\n });\r\n }\r\n };\r\n /**\r\n * Returns the value of the custom metric by that name. If a custom metric with that name does\r\n * not exist will return zero.\r\n * @param counter\r\n */\r\n Trace.prototype.getMetric = function (counter) {\r\n return this.counters[counter] || 0;\r\n };\r\n /**\r\n * Sets a custom attribute of a trace to a certain value.\r\n * @param attr\r\n * @param value\r\n */\r\n Trace.prototype.putAttribute = function (attr, value) {\r\n var isValidName = isValidCustomAttributeName(attr);\r\n var isValidValue = isValidCustomAttributeValue(value);\r\n if (isValidName && isValidValue) {\r\n this.customAttributes[attr] = value;\r\n return;\r\n }\r\n // Throw appropriate error when the attribute name or value is invalid.\r\n if (!isValidName) {\r\n throw ERROR_FACTORY.create(\"invalid attribute name\" /* INVALID_ATTRIBUTE_NAME */, {\r\n attributeName: attr\r\n });\r\n }\r\n if (!isValidValue) {\r\n throw ERROR_FACTORY.create(\"invalid attribute value\" /* INVALID_ATTRIBUTE_VALUE */, {\r\n attributeValue: value\r\n });\r\n }\r\n };\r\n /**\r\n * Retrieves the value a custom attribute of a trace is set to.\r\n * @param attr\r\n */\r\n Trace.prototype.getAttribute = function (attr) {\r\n return this.customAttributes[attr];\r\n };\r\n Trace.prototype.removeAttribute = function (attr) {\r\n if (this.customAttributes[attr] === undefined) {\r\n return;\r\n }\r\n delete this.customAttributes[attr];\r\n };\r\n Trace.prototype.getAttributes = function () {\r\n return __assign({}, this.customAttributes);\r\n };\r\n Trace.prototype.setStartTime = function (startTime) {\r\n this.startTimeUs = startTime;\r\n };\r\n Trace.prototype.setDuration = function (duration) {\r\n this.durationUs = duration;\r\n };\r\n /**\r\n * Calculates and assigns the duration and start time of the trace using the measure performance\r\n * entry.\r\n */\r\n Trace.prototype.calculateTraceMetrics = function () {\r\n var perfMeasureEntries = this.api.getEntriesByName(this.traceMeasure);\r\n var perfMeasureEntry = perfMeasureEntries && perfMeasureEntries[0];\r\n if (perfMeasureEntry) {\r\n this.durationUs = Math.floor(perfMeasureEntry.duration * 1000);\r\n this.startTimeUs = Math.floor((perfMeasureEntry.startTime + this.api.getTimeOrigin()) * 1000);\r\n }\r\n };\r\n /**\r\n * @param navigationTimings A single element array which contains the navigationTIming object of\r\n * the page load\r\n * @param paintTimings A array which contains paintTiming object of the page load\r\n * @param firstInputDelay First input delay in millisec\r\n */\r\n Trace.createOobTrace = function (navigationTimings, paintTimings, firstInputDelay) {\r\n var route = Api.getInstance().getUrl();\r\n if (!route) {\r\n return;\r\n }\r\n var trace = new Trace(OOB_TRACE_PAGE_LOAD_PREFIX + route, true);\r\n var timeOriginUs = Math.floor(Api.getInstance().getTimeOrigin() * 1000);\r\n trace.setStartTime(timeOriginUs);\r\n // navigationTimings includes only one element.\r\n if (navigationTimings && navigationTimings[0]) {\r\n trace.setDuration(Math.floor(navigationTimings[0].duration * 1000));\r\n trace.putMetric('domInteractive', Math.floor(navigationTimings[0].domInteractive * 1000));\r\n trace.putMetric('domContentLoadedEventEnd', Math.floor(navigationTimings[0].domContentLoadedEventEnd * 1000));\r\n trace.putMetric('loadEventEnd', Math.floor(navigationTimings[0].loadEventEnd * 1000));\r\n }\r\n var FIRST_PAINT = 'first-paint';\r\n var FIRST_CONTENTFUL_PAINT = 'first-contentful-paint';\r\n if (paintTimings) {\r\n var firstPaint = paintTimings.find(function (paintObject) { return paintObject.name === FIRST_PAINT; });\r\n if (firstPaint && firstPaint.startTime) {\r\n trace.putMetric(FIRST_PAINT_COUNTER_NAME, Math.floor(firstPaint.startTime * 1000));\r\n }\r\n var firstContentfulPaint = paintTimings.find(function (paintObject) { return paintObject.name === FIRST_CONTENTFUL_PAINT; });\r\n if (firstContentfulPaint && firstContentfulPaint.startTime) {\r\n trace.putMetric(FIRST_CONTENTFUL_PAINT_COUNTER_NAME, Math.floor(firstContentfulPaint.startTime * 1000));\r\n }\r\n if (firstInputDelay) {\r\n trace.putMetric(FIRST_INPUT_DELAY_COUNTER_NAME, Math.floor(firstInputDelay * 1000));\r\n }\r\n }\r\n logTrace(trace);\r\n };\r\n Trace.createUserTimingTrace = function (measureName) {\r\n var trace = new Trace(measureName, false, measureName);\r\n logTrace(trace);\r\n };\r\n return Trace;\r\n}());\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nfunction createNetworkRequestEntry(entry) {\r\n var performanceEntry = entry;\r\n if (!performanceEntry || performanceEntry.responseStart === undefined) {\r\n return;\r\n }\r\n var timeOrigin = Api.getInstance().getTimeOrigin();\r\n var startTimeUs = Math.floor((performanceEntry.startTime + timeOrigin) * 1000);\r\n var timeToResponseInitiatedUs = performanceEntry.responseStart\r\n ? Math.floor((performanceEntry.responseStart - performanceEntry.startTime) * 1000)\r\n : undefined;\r\n var timeToResponseCompletedUs = Math.floor((performanceEntry.responseEnd - performanceEntry.startTime) * 1000);\r\n // Remove the query params from logged network request url.\r\n var url = performanceEntry.name && performanceEntry.name.split('?')[0];\r\n var networkRequest = {\r\n url: url,\r\n responsePayloadBytes: performanceEntry.transferSize,\r\n startTimeUs: startTimeUs,\r\n timeToResponseInitiatedUs: timeToResponseInitiatedUs,\r\n timeToResponseCompletedUs: timeToResponseCompletedUs\r\n };\r\n logNetworkRequest(networkRequest);\r\n}\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nvar FID_WAIT_TIME_MS = 5000;\r\nfunction setupOobResources() {\r\n // Do not initialize unless iid is available.\r\n if (!getIid()) {\r\n return;\r\n }\r\n // The load event might not have fired yet, and that means performance navigation timing\r\n // object has a duration of 0. The setup should run after all current tasks in js queue.\r\n setTimeout(function () { return setupOobTraces(); }, 0);\r\n setTimeout(function () { return setupNetworkRequests(); }, 0);\r\n setTimeout(function () { return setupUserTimingTraces(); }, 0);\r\n}\r\nfunction setupNetworkRequests() {\r\n var api = Api.getInstance();\r\n var resources = api.getEntriesByType('resource');\r\n for (var _i = 0, resources_1 = resources; _i < resources_1.length; _i++) {\r\n var resource = resources_1[_i];\r\n createNetworkRequestEntry(resource);\r\n }\r\n api.setupObserver('resource', createNetworkRequestEntry);\r\n}\r\nfunction setupOobTraces() {\r\n var api = Api.getInstance();\r\n var navigationTimings = api.getEntriesByType('navigation');\r\n var paintTimings = api.getEntriesByType('paint');\r\n // If First Input Desly polyfill is added to the page, report the fid value.\r\n // https://github.com/GoogleChromeLabs/first-input-delay\r\n if (api.onFirstInputDelay) {\r\n // If the fid call back is not called for certain time, continue without it.\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n var timeoutId_1 = setTimeout(function () {\r\n Trace.createOobTrace(navigationTimings, paintTimings);\r\n timeoutId_1 = undefined;\r\n }, FID_WAIT_TIME_MS);\r\n api.onFirstInputDelay(function (fid) {\r\n if (timeoutId_1) {\r\n clearTimeout(timeoutId_1);\r\n Trace.createOobTrace(navigationTimings, paintTimings, fid);\r\n }\r\n });\r\n }\r\n else {\r\n Trace.createOobTrace(navigationTimings, paintTimings);\r\n }\r\n}\r\nfunction setupUserTimingTraces() {\r\n var api = Api.getInstance();\r\n // Run through the measure performance entries collected up to this point.\r\n var measures = api.getEntriesByType('measure');\r\n for (var _i = 0, measures_1 = measures; _i < measures_1.length; _i++) {\r\n var measure = measures_1[_i];\r\n createUserTimingTrace(measure);\r\n }\r\n // Setup an observer to capture the measures from this point on.\r\n api.setupObserver('measure', createUserTimingTrace);\r\n}\r\nfunction createUserTimingTrace(measure) {\r\n var measureName = measure.name;\r\n // Do not create a trace, if the user timing marks and measures are created by the sdk itself.\r\n if (measureName.substring(0, TRACE_MEASURE_PREFIX.length) ===\r\n TRACE_MEASURE_PREFIX) {\r\n return;\r\n }\r\n Trace.createUserTimingTrace(measureName);\r\n}\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nvar PerformanceController = /** @class */ (function () {\r\n function PerformanceController(app) {\r\n this.app = app;\r\n if (Api.getInstance().requiredApisAvailable()) {\r\n validateIndexedDBOpenable()\r\n .then(function (isAvailable) {\r\n if (isAvailable) {\r\n setupTransportService();\r\n getInitializationPromise().then(setupOobResources, setupOobResources);\r\n }\r\n })\r\n .catch(function (error) {\r\n consoleLogger.info(\"Environment doesn't support IndexedDB: \" + error);\r\n });\r\n }\r\n }\r\n PerformanceController.prototype.trace = function (name) {\r\n return new Trace(name);\r\n };\r\n Object.defineProperty(PerformanceController.prototype, \"instrumentationEnabled\", {\r\n get: function () {\r\n return SettingsService.getInstance().instrumentationEnabled;\r\n },\r\n set: function (val) {\r\n SettingsService.getInstance().instrumentationEnabled = val;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(PerformanceController.prototype, \"dataCollectionEnabled\", {\r\n get: function () {\r\n return SettingsService.getInstance().dataCollectionEnabled;\r\n },\r\n set: function (val) {\r\n SettingsService.getInstance().dataCollectionEnabled = val;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n return PerformanceController;\r\n}());\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nvar DEFAULT_ENTRY_NAME = '[DEFAULT]';\r\nfunction registerPerformance(instance) {\r\n var factoryMethod = function (app, installations) {\r\n if (app.name !== DEFAULT_ENTRY_NAME) {\r\n throw ERROR_FACTORY.create(\"FB not default\" /* FB_NOT_DEFAULT */);\r\n }\r\n if (typeof window === 'undefined') {\r\n throw ERROR_FACTORY.create(\"no window\" /* NO_WINDOW */);\r\n }\r\n setupApi(window);\r\n SettingsService.getInstance().firebaseAppInstance = app;\r\n SettingsService.getInstance().installationsService = installations;\r\n return new PerformanceController(app);\r\n };\r\n // Register performance with firebase-app.\r\n instance.INTERNAL.registerComponent(new Component('performance', function (container) {\r\n /* Dependencies */\r\n // getImmediate for FirebaseApp will always succeed\r\n var app = container.getProvider('app').getImmediate();\r\n // The following call will always succeed because perf has `import '@firebase/installations'`\r\n var installations = container\r\n .getProvider('installations')\r\n .getImmediate();\r\n return factoryMethod(app, installations);\r\n }, \"PUBLIC\" /* PUBLIC */));\r\n instance.registerVersion(name, version);\r\n}\r\nregisterPerformance(firebase);\n\nexport { registerPerformance };\n//# sourceMappingURL=index.esm.js.map\n","import { __awaiter, __generator, __assign } from 'tslib';\nimport firebase from '@firebase/app';\nimport '@firebase/installations';\nimport { Logger } from '@firebase/logger';\nimport { ErrorFactory, calculateBackoffMillis, FirebaseError, validateIndexedDBOpenable, isIndexedDBAvailable, isBrowserExtension, areCookiesEnabled } from '@firebase/util';\nimport { Component } from '@firebase/component';\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n// Key to attach FID to in gtag params.\r\nvar GA_FID_KEY = 'firebase_id';\r\nvar ORIGIN_KEY = 'origin';\r\nvar FETCH_TIMEOUT_MILLIS = 60 * 1000;\r\nvar DYNAMIC_CONFIG_URL = 'https://firebase.googleapis.com/v1alpha/projects/-/apps/{app-id}/webConfig';\r\nvar GTAG_URL = 'https://www.googletagmanager.com/gtag/js';\r\nvar GtagCommand;\r\n(function (GtagCommand) {\r\n GtagCommand[\"EVENT\"] = \"event\";\r\n GtagCommand[\"SET\"] = \"set\";\r\n GtagCommand[\"CONFIG\"] = \"config\";\r\n})(GtagCommand || (GtagCommand = {}));\r\n/**\r\n * Officially recommended event names for gtag.js\r\n * Any other string is also allowed.\r\n *\r\n * @public\r\n */\r\nvar EventName;\r\n(function (EventName) {\r\n EventName[\"ADD_SHIPPING_INFO\"] = \"add_shipping_info\";\r\n EventName[\"ADD_PAYMENT_INFO\"] = \"add_payment_info\";\r\n EventName[\"ADD_TO_CART\"] = \"add_to_cart\";\r\n EventName[\"ADD_TO_WISHLIST\"] = \"add_to_wishlist\";\r\n EventName[\"BEGIN_CHECKOUT\"] = \"begin_checkout\";\r\n /**\r\n * @deprecated\r\n * This event name is deprecated and is unsupported in updated\r\n * Enhanced Ecommerce reports.\r\n */\r\n EventName[\"CHECKOUT_PROGRESS\"] = \"checkout_progress\";\r\n EventName[\"EXCEPTION\"] = \"exception\";\r\n EventName[\"GENERATE_LEAD\"] = \"generate_lead\";\r\n EventName[\"LOGIN\"] = \"login\";\r\n EventName[\"PAGE_VIEW\"] = \"page_view\";\r\n EventName[\"PURCHASE\"] = \"purchase\";\r\n EventName[\"REFUND\"] = \"refund\";\r\n EventName[\"REMOVE_FROM_CART\"] = \"remove_from_cart\";\r\n EventName[\"SCREEN_VIEW\"] = \"screen_view\";\r\n EventName[\"SEARCH\"] = \"search\";\r\n EventName[\"SELECT_CONTENT\"] = \"select_content\";\r\n EventName[\"SELECT_ITEM\"] = \"select_item\";\r\n EventName[\"SELECT_PROMOTION\"] = \"select_promotion\";\r\n /** @deprecated */\r\n EventName[\"SET_CHECKOUT_OPTION\"] = \"set_checkout_option\";\r\n EventName[\"SHARE\"] = \"share\";\r\n EventName[\"SIGN_UP\"] = \"sign_up\";\r\n EventName[\"TIMING_COMPLETE\"] = \"timing_complete\";\r\n EventName[\"VIEW_CART\"] = \"view_cart\";\r\n EventName[\"VIEW_ITEM\"] = \"view_item\";\r\n EventName[\"VIEW_ITEM_LIST\"] = \"view_item_list\";\r\n EventName[\"VIEW_PROMOTION\"] = \"view_promotion\";\r\n EventName[\"VIEW_SEARCH_RESULTS\"] = \"view_search_results\";\r\n})(EventName || (EventName = {}));\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * Logs an analytics event through the Firebase SDK.\r\n *\r\n * @param gtagFunction Wrapped gtag function that waits for fid to be set before sending an event\r\n * @param eventName Google Analytics event name, choose from standard list or use a custom string.\r\n * @param eventParams Analytics event parameters.\r\n */\r\nfunction logEvent(gtagFunction, initializationPromise, eventName, eventParams, options) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var measurementId, params;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n if (!(options && options.global)) return [3 /*break*/, 1];\r\n gtagFunction(GtagCommand.EVENT, eventName, eventParams);\r\n return [2 /*return*/];\r\n case 1: return [4 /*yield*/, initializationPromise];\r\n case 2:\r\n measurementId = _a.sent();\r\n params = __assign(__assign({}, eventParams), { 'send_to': measurementId });\r\n gtagFunction(GtagCommand.EVENT, eventName, params);\r\n _a.label = 3;\r\n case 3: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n}\r\n/**\r\n * Set screen_name parameter for this Google Analytics ID.\r\n *\r\n * @param gtagFunction Wrapped gtag function that waits for fid to be set before sending an event\r\n * @param screenName Screen name string to set.\r\n */\r\nfunction setCurrentScreen(gtagFunction, initializationPromise, screenName, options) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var measurementId;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n if (!(options && options.global)) return [3 /*break*/, 1];\r\n gtagFunction(GtagCommand.SET, { 'screen_name': screenName });\r\n return [2 /*return*/, Promise.resolve()];\r\n case 1: return [4 /*yield*/, initializationPromise];\r\n case 2:\r\n measurementId = _a.sent();\r\n gtagFunction(GtagCommand.CONFIG, measurementId, {\r\n update: true,\r\n 'screen_name': screenName\r\n });\r\n _a.label = 3;\r\n case 3: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n}\r\n/**\r\n * Set user_id parameter for this Google Analytics ID.\r\n *\r\n * @param gtagFunction Wrapped gtag function that waits for fid to be set before sending an event\r\n * @param id User ID string to set\r\n */\r\nfunction setUserId(gtagFunction, initializationPromise, id, options) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var measurementId;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n if (!(options && options.global)) return [3 /*break*/, 1];\r\n gtagFunction(GtagCommand.SET, { 'user_id': id });\r\n return [2 /*return*/, Promise.resolve()];\r\n case 1: return [4 /*yield*/, initializationPromise];\r\n case 2:\r\n measurementId = _a.sent();\r\n gtagFunction(GtagCommand.CONFIG, measurementId, {\r\n update: true,\r\n 'user_id': id\r\n });\r\n _a.label = 3;\r\n case 3: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n}\r\n/**\r\n * Set all other user properties other than user_id and screen_name.\r\n *\r\n * @param gtagFunction Wrapped gtag function that waits for fid to be set before sending an event\r\n * @param properties Map of user properties to set\r\n */\r\nfunction setUserProperties(gtagFunction, initializationPromise, properties, options) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var flatProperties, _i, _a, key, measurementId;\r\n return __generator(this, function (_b) {\r\n switch (_b.label) {\r\n case 0:\r\n if (!(options && options.global)) return [3 /*break*/, 1];\r\n flatProperties = {};\r\n for (_i = 0, _a = Object.keys(properties); _i < _a.length; _i++) {\r\n key = _a[_i];\r\n // use dot notation for merge behavior in gtag.js\r\n flatProperties[\"user_properties.\" + key] = properties[key];\r\n }\r\n gtagFunction(GtagCommand.SET, flatProperties);\r\n return [2 /*return*/, Promise.resolve()];\r\n case 1: return [4 /*yield*/, initializationPromise];\r\n case 2:\r\n measurementId = _b.sent();\r\n gtagFunction(GtagCommand.CONFIG, measurementId, {\r\n update: true,\r\n 'user_properties': properties\r\n });\r\n _b.label = 3;\r\n case 3: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n}\r\n/**\r\n * Set whether collection is enabled for this ID.\r\n *\r\n * @param enabled If true, collection is enabled for this ID.\r\n */\r\nfunction setAnalyticsCollectionEnabled(initializationPromise, enabled) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var measurementId;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0: return [4 /*yield*/, initializationPromise];\r\n case 1:\r\n measurementId = _a.sent();\r\n window[\"ga-disable-\" + measurementId] = !enabled;\r\n return [2 /*return*/];\r\n }\r\n });\r\n });\r\n}\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nvar logger = new Logger('@firebase/analytics');\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * Inserts gtag script tag into the page to asynchronously download gtag.\r\n * @param dataLayerName Name of datalayer (most often the default, \"_dataLayer\").\r\n */\r\nfunction insertScriptTag(dataLayerName, measurementId) {\r\n var script = document.createElement('script');\r\n script.src = GTAG_URL + \"?l=\" + dataLayerName + \"&id=\" + measurementId;\r\n script.async = true;\r\n document.head.appendChild(script);\r\n}\r\n/**\r\n * Get reference to, or create, global datalayer.\r\n * @param dataLayerName Name of datalayer (most often the default, \"_dataLayer\").\r\n */\r\nfunction getOrCreateDataLayer(dataLayerName) {\r\n // Check for existing dataLayer and create if needed.\r\n var dataLayer = [];\r\n if (Array.isArray(window[dataLayerName])) {\r\n dataLayer = window[dataLayerName];\r\n }\r\n else {\r\n window[dataLayerName] = dataLayer;\r\n }\r\n return dataLayer;\r\n}\r\n/**\r\n * Wrapped gtag logic when gtag is called with 'config' command.\r\n *\r\n * @param gtagCore Basic gtag function that just appends to dataLayer.\r\n * @param initializationPromisesMap Map of appIds to their initialization promises.\r\n * @param dynamicConfigPromisesList Array of dynamic config fetch promises.\r\n * @param measurementIdToAppId Map of GA measurementIDs to corresponding Firebase appId.\r\n * @param measurementId GA Measurement ID to set config for.\r\n * @param gtagParams Gtag config params to set.\r\n */\r\nfunction gtagOnConfig(gtagCore, initializationPromisesMap, dynamicConfigPromisesList, measurementIdToAppId, measurementId, gtagParams) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var correspondingAppId, dynamicConfigResults, foundConfig, e_1;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n correspondingAppId = measurementIdToAppId[measurementId];\r\n _a.label = 1;\r\n case 1:\r\n _a.trys.push([1, 7, , 8]);\r\n if (!correspondingAppId) return [3 /*break*/, 3];\r\n return [4 /*yield*/, initializationPromisesMap[correspondingAppId]];\r\n case 2:\r\n _a.sent();\r\n return [3 /*break*/, 6];\r\n case 3: return [4 /*yield*/, Promise.all(dynamicConfigPromisesList)];\r\n case 4:\r\n dynamicConfigResults = _a.sent();\r\n foundConfig = dynamicConfigResults.find(function (config) { return config.measurementId === measurementId; });\r\n if (!foundConfig) return [3 /*break*/, 6];\r\n return [4 /*yield*/, initializationPromisesMap[foundConfig.appId]];\r\n case 5:\r\n _a.sent();\r\n _a.label = 6;\r\n case 6: return [3 /*break*/, 8];\r\n case 7:\r\n e_1 = _a.sent();\r\n logger.error(e_1);\r\n return [3 /*break*/, 8];\r\n case 8:\r\n gtagCore(GtagCommand.CONFIG, measurementId, gtagParams);\r\n return [2 /*return*/];\r\n }\r\n });\r\n });\r\n}\r\n/**\r\n * Wrapped gtag logic when gtag is called with 'event' command.\r\n *\r\n * @param gtagCore Basic gtag function that just appends to dataLayer.\r\n * @param initializationPromisesMap Map of appIds to their initialization promises.\r\n * @param dynamicConfigPromisesList Array of dynamic config fetch promises.\r\n * @param measurementId GA Measurement ID to log event to.\r\n * @param gtagParams Params to log with this event.\r\n */\r\nfunction gtagOnEvent(gtagCore, initializationPromisesMap, dynamicConfigPromisesList, measurementId, gtagParams) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var initializationPromisesToWaitFor, gaSendToList, dynamicConfigResults, _loop_1, _i, gaSendToList_1, sendToId, state_1, e_2;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n _a.trys.push([0, 4, , 5]);\r\n initializationPromisesToWaitFor = [];\r\n if (!(gtagParams && gtagParams['send_to'])) return [3 /*break*/, 2];\r\n gaSendToList = gtagParams['send_to'];\r\n // Make it an array if is isn't, so it can be dealt with the same way.\r\n if (!Array.isArray(gaSendToList)) {\r\n gaSendToList = [gaSendToList];\r\n }\r\n return [4 /*yield*/, Promise.all(dynamicConfigPromisesList)];\r\n case 1:\r\n dynamicConfigResults = _a.sent();\r\n _loop_1 = function (sendToId) {\r\n // Any fetched dynamic measurement ID that matches this 'send_to' ID\r\n var foundConfig = dynamicConfigResults.find(function (config) { return config.measurementId === sendToId; });\r\n var initializationPromise = foundConfig && initializationPromisesMap[foundConfig.appId];\r\n if (initializationPromise) {\r\n initializationPromisesToWaitFor.push(initializationPromise);\r\n }\r\n else {\r\n // Found an item in 'send_to' that is not associated\r\n // directly with an FID, possibly a group. Empty this array,\r\n // exit the loop early, and let it get populated below.\r\n initializationPromisesToWaitFor = [];\r\n return \"break\";\r\n }\r\n };\r\n for (_i = 0, gaSendToList_1 = gaSendToList; _i < gaSendToList_1.length; _i++) {\r\n sendToId = gaSendToList_1[_i];\r\n state_1 = _loop_1(sendToId);\r\n if (state_1 === \"break\")\r\n break;\r\n }\r\n _a.label = 2;\r\n case 2:\r\n // This will be unpopulated if there was no 'send_to' field , or\r\n // if not all entries in the 'send_to' field could be mapped to\r\n // a FID. In these cases, wait on all pending initialization promises.\r\n if (initializationPromisesToWaitFor.length === 0) {\r\n initializationPromisesToWaitFor = Object.values(initializationPromisesMap);\r\n }\r\n // Run core gtag function with args after all relevant initialization\r\n // promises have been resolved.\r\n return [4 /*yield*/, Promise.all(initializationPromisesToWaitFor)];\r\n case 3:\r\n // Run core gtag function with args after all relevant initialization\r\n // promises have been resolved.\r\n _a.sent();\r\n // Workaround for http://b/141370449 - third argument cannot be undefined.\r\n gtagCore(GtagCommand.EVENT, measurementId, gtagParams || {});\r\n return [3 /*break*/, 5];\r\n case 4:\r\n e_2 = _a.sent();\r\n logger.error(e_2);\r\n return [3 /*break*/, 5];\r\n case 5: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n}\r\n/**\r\n * Wraps a standard gtag function with extra code to wait for completion of\r\n * relevant initialization promises before sending requests.\r\n *\r\n * @param gtagCore Basic gtag function that just appends to dataLayer.\r\n * @param initializationPromisesMap Map of appIds to their initialization promises.\r\n * @param dynamicConfigPromisesList Array of dynamic config fetch promises.\r\n * @param measurementIdToAppId Map of GA measurementIDs to corresponding Firebase appId.\r\n */\r\nfunction wrapGtag(gtagCore, \r\n/**\r\n * Allows wrapped gtag calls to wait on whichever intialization promises are required,\r\n * depending on the contents of the gtag params' `send_to` field, if any.\r\n */\r\ninitializationPromisesMap, \r\n/**\r\n * Wrapped gtag calls sometimes require all dynamic config fetches to have returned\r\n * before determining what initialization promises (which include FIDs) to wait for.\r\n */\r\ndynamicConfigPromisesList, \r\n/**\r\n * Wrapped gtag config calls can narrow down which initialization promise (with FID)\r\n * to wait for if the measurementId is already fetched, by getting the corresponding appId,\r\n * which is the key for the initialization promises map.\r\n */\r\nmeasurementIdToAppId) {\r\n /**\r\n * Wrapper around gtag that ensures FID is sent with gtag calls.\r\n * @param command Gtag command type.\r\n * @param idOrNameOrParams Measurement ID if command is EVENT/CONFIG, params if command is SET.\r\n * @param gtagParams Params if event is EVENT/CONFIG.\r\n */\r\n function gtagWrapper(command, idOrNameOrParams, gtagParams) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var e_3;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n _a.trys.push([0, 6, , 7]);\r\n if (!(command === GtagCommand.EVENT)) return [3 /*break*/, 2];\r\n // If EVENT, second arg must be measurementId.\r\n return [4 /*yield*/, gtagOnEvent(gtagCore, initializationPromisesMap, dynamicConfigPromisesList, idOrNameOrParams, gtagParams)];\r\n case 1:\r\n // If EVENT, second arg must be measurementId.\r\n _a.sent();\r\n return [3 /*break*/, 5];\r\n case 2:\r\n if (!(command === GtagCommand.CONFIG)) return [3 /*break*/, 4];\r\n // If CONFIG, second arg must be measurementId.\r\n return [4 /*yield*/, gtagOnConfig(gtagCore, initializationPromisesMap, dynamicConfigPromisesList, measurementIdToAppId, idOrNameOrParams, gtagParams)];\r\n case 3:\r\n // If CONFIG, second arg must be measurementId.\r\n _a.sent();\r\n return [3 /*break*/, 5];\r\n case 4:\r\n // If SET, second arg must be params.\r\n gtagCore(GtagCommand.SET, idOrNameOrParams);\r\n _a.label = 5;\r\n case 5: return [3 /*break*/, 7];\r\n case 6:\r\n e_3 = _a.sent();\r\n logger.error(e_3);\r\n return [3 /*break*/, 7];\r\n case 7: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n }\r\n return gtagWrapper;\r\n}\r\n/**\r\n * Creates global gtag function or wraps existing one if found.\r\n * This wrapped function attaches Firebase instance ID (FID) to gtag 'config' and\r\n * 'event' calls that belong to the GAID associated with this Firebase instance.\r\n *\r\n * @param initializationPromisesMap Map of appIds to their initialization promises.\r\n * @param dynamicConfigPromisesList Array of dynamic config fetch promises.\r\n * @param measurementIdToAppId Map of GA measurementIDs to corresponding Firebase appId.\r\n * @param dataLayerName Name of global GA datalayer array.\r\n * @param gtagFunctionName Name of global gtag function (\"gtag\" if not user-specified).\r\n */\r\nfunction wrapOrCreateGtag(initializationPromisesMap, dynamicConfigPromisesList, measurementIdToAppId, dataLayerName, gtagFunctionName) {\r\n // Create a basic core gtag function\r\n var gtagCore = function () {\r\n var _args = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n _args[_i] = arguments[_i];\r\n }\r\n // Must push IArguments object, not an array.\r\n window[dataLayerName].push(arguments);\r\n };\r\n // Replace it with existing one if found\r\n if (window[gtagFunctionName] &&\r\n typeof window[gtagFunctionName] === 'function') {\r\n // @ts-ignore\r\n gtagCore = window[gtagFunctionName];\r\n }\r\n window[gtagFunctionName] = wrapGtag(gtagCore, initializationPromisesMap, dynamicConfigPromisesList, measurementIdToAppId);\r\n return {\r\n gtagCore: gtagCore,\r\n wrappedGtag: window[gtagFunctionName]\r\n };\r\n}\r\n/**\r\n * Returns first script tag in DOM matching our gtag url pattern.\r\n */\r\nfunction findGtagScriptOnPage() {\r\n var scriptTags = window.document.getElementsByTagName('script');\r\n for (var _i = 0, _a = Object.values(scriptTags); _i < _a.length; _i++) {\r\n var tag = _a[_i];\r\n if (tag.src && tag.src.includes(GTAG_URL)) {\r\n return tag;\r\n }\r\n }\r\n return null;\r\n}\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nvar _a;\r\nvar ERRORS = (_a = {},\r\n _a[\"already-exists\" /* ALREADY_EXISTS */] = 'A Firebase Analytics instance with the appId {$id} ' +\r\n ' already exists. ' +\r\n 'Only one Firebase Analytics instance can be created for each appId.',\r\n _a[\"already-initialized\" /* ALREADY_INITIALIZED */] = 'Firebase Analytics has already been initialized.' +\r\n 'settings() must be called before initializing any Analytics instance' +\r\n 'or it will have no effect.',\r\n _a[\"interop-component-reg-failed\" /* INTEROP_COMPONENT_REG_FAILED */] = 'Firebase Analytics Interop Component failed to instantiate: {$reason}',\r\n _a[\"invalid-analytics-context\" /* INVALID_ANALYTICS_CONTEXT */] = 'Firebase Analytics is not supported in this environment. ' +\r\n 'Wrap initialization of analytics in analytics.isSupported() ' +\r\n 'to prevent initialization in unsupported environments. Details: {$errorInfo}',\r\n _a[\"indexeddb-unavailable\" /* INDEXEDDB_UNAVAILABLE */] = 'IndexedDB unavailable or restricted in this environment. ' +\r\n 'Wrap initialization of analytics in analytics.isSupported() ' +\r\n 'to prevent initialization in unsupported environments. Details: {$errorInfo}',\r\n _a[\"fetch-throttle\" /* FETCH_THROTTLE */] = 'The config fetch request timed out while in an exponential backoff state.' +\r\n ' Unix timestamp in milliseconds when fetch request throttling ends: {$throttleEndTimeMillis}.',\r\n _a[\"config-fetch-failed\" /* CONFIG_FETCH_FAILED */] = 'Dynamic config fetch failed: [{$httpStatus}] {$responseMessage}',\r\n _a[\"no-api-key\" /* NO_API_KEY */] = 'The \"apiKey\" field is empty in the local Firebase config. Firebase Analytics requires this field to' +\r\n 'contain a valid API key.',\r\n _a[\"no-app-id\" /* NO_APP_ID */] = 'The \"appId\" field is empty in the local Firebase config. Firebase Analytics requires this field to' +\r\n 'contain a valid app ID.',\r\n _a);\r\nvar ERROR_FACTORY = new ErrorFactory('analytics', 'Analytics', ERRORS);\n\n/**\r\n * @license\r\n * Copyright 2020 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * Backoff factor for 503 errors, which we want to be conservative about\r\n * to avoid overloading servers. Each retry interval will be\r\n * BASE_INTERVAL_MILLIS * LONG_RETRY_FACTOR ^ retryCount, so the second one\r\n * will be ~30 seconds (with fuzzing).\r\n */\r\nvar LONG_RETRY_FACTOR = 30;\r\n/**\r\n * Base wait interval to multiplied by backoffFactor^backoffCount.\r\n */\r\nvar BASE_INTERVAL_MILLIS = 1000;\r\n/**\r\n * Stubbable retry data storage class.\r\n */\r\nvar RetryData = /** @class */ (function () {\r\n function RetryData(throttleMetadata, intervalMillis) {\r\n if (throttleMetadata === void 0) { throttleMetadata = {}; }\r\n if (intervalMillis === void 0) { intervalMillis = BASE_INTERVAL_MILLIS; }\r\n this.throttleMetadata = throttleMetadata;\r\n this.intervalMillis = intervalMillis;\r\n }\r\n RetryData.prototype.getThrottleMetadata = function (appId) {\r\n return this.throttleMetadata[appId];\r\n };\r\n RetryData.prototype.setThrottleMetadata = function (appId, metadata) {\r\n this.throttleMetadata[appId] = metadata;\r\n };\r\n RetryData.prototype.deleteThrottleMetadata = function (appId) {\r\n delete this.throttleMetadata[appId];\r\n };\r\n return RetryData;\r\n}());\r\nvar defaultRetryData = new RetryData();\r\n/**\r\n * Set GET request headers.\r\n * @param apiKey App API key.\r\n */\r\nfunction getHeaders(apiKey) {\r\n return new Headers({\r\n Accept: 'application/json',\r\n 'x-goog-api-key': apiKey\r\n });\r\n}\r\n/**\r\n * Fetches dynamic config from backend.\r\n * @param app Firebase app to fetch config for.\r\n */\r\nfunction fetchDynamicConfig(appFields) {\r\n var _a;\r\n return __awaiter(this, void 0, void 0, function () {\r\n var appId, apiKey, request, appUrl, response, errorMessage, jsonResponse;\r\n return __generator(this, function (_b) {\r\n switch (_b.label) {\r\n case 0:\r\n appId = appFields.appId, apiKey = appFields.apiKey;\r\n request = {\r\n method: 'GET',\r\n headers: getHeaders(apiKey)\r\n };\r\n appUrl = DYNAMIC_CONFIG_URL.replace('{app-id}', appId);\r\n return [4 /*yield*/, fetch(appUrl, request)];\r\n case 1:\r\n response = _b.sent();\r\n if (!(response.status !== 200 && response.status !== 304)) return [3 /*break*/, 6];\r\n errorMessage = '';\r\n _b.label = 2;\r\n case 2:\r\n _b.trys.push([2, 4, , 5]);\r\n return [4 /*yield*/, response.json()];\r\n case 3:\r\n jsonResponse = (_b.sent());\r\n if ((_a = jsonResponse.error) === null || _a === void 0 ? void 0 : _a.message) {\r\n errorMessage = jsonResponse.error.message;\r\n }\r\n return [3 /*break*/, 5];\r\n case 4:\r\n _b.sent();\r\n return [3 /*break*/, 5];\r\n case 5: throw ERROR_FACTORY.create(\"config-fetch-failed\" /* CONFIG_FETCH_FAILED */, {\r\n httpStatus: response.status,\r\n responseMessage: errorMessage\r\n });\r\n case 6: return [2 /*return*/, response.json()];\r\n }\r\n });\r\n });\r\n}\r\n/**\r\n * Fetches dynamic config from backend, retrying if failed.\r\n * @param app Firebase app to fetch config for.\r\n */\r\nfunction fetchDynamicConfigWithRetry(app, \r\n// retryData and timeoutMillis are parameterized to allow passing a different value for testing.\r\nretryData, timeoutMillis) {\r\n if (retryData === void 0) { retryData = defaultRetryData; }\r\n return __awaiter(this, void 0, void 0, function () {\r\n var _a, appId, apiKey, measurementId, throttleMetadata, signal;\r\n var _this = this;\r\n return __generator(this, function (_b) {\r\n _a = app.options, appId = _a.appId, apiKey = _a.apiKey, measurementId = _a.measurementId;\r\n if (!appId) {\r\n throw ERROR_FACTORY.create(\"no-app-id\" /* NO_APP_ID */);\r\n }\r\n if (!apiKey) {\r\n if (measurementId) {\r\n return [2 /*return*/, {\r\n measurementId: measurementId,\r\n appId: appId\r\n }];\r\n }\r\n throw ERROR_FACTORY.create(\"no-api-key\" /* NO_API_KEY */);\r\n }\r\n throttleMetadata = retryData.getThrottleMetadata(appId) || {\r\n backoffCount: 0,\r\n throttleEndTimeMillis: Date.now()\r\n };\r\n signal = new AnalyticsAbortSignal();\r\n setTimeout(function () { return __awaiter(_this, void 0, void 0, function () {\r\n return __generator(this, function (_a) {\r\n // Note a very low delay, eg < 10ms, can elapse before listeners are initialized.\r\n signal.abort();\r\n return [2 /*return*/];\r\n });\r\n }); }, timeoutMillis !== undefined ? timeoutMillis : FETCH_TIMEOUT_MILLIS);\r\n return [2 /*return*/, attemptFetchDynamicConfigWithRetry({ appId: appId, apiKey: apiKey, measurementId: measurementId }, throttleMetadata, signal, retryData)];\r\n });\r\n });\r\n}\r\n/**\r\n * Runs one retry attempt.\r\n * @param appFields Necessary app config fields.\r\n * @param throttleMetadata Ongoing metadata to determine throttling times.\r\n * @param signal Abort signal.\r\n */\r\nfunction attemptFetchDynamicConfigWithRetry(appFields, _a, signal, retryData // for testing\r\n) {\r\n var throttleEndTimeMillis = _a.throttleEndTimeMillis, backoffCount = _a.backoffCount;\r\n if (retryData === void 0) { retryData = defaultRetryData; }\r\n return __awaiter(this, void 0, void 0, function () {\r\n var appId, measurementId, e_1, response, e_2, backoffMillis, throttleMetadata;\r\n return __generator(this, function (_b) {\r\n switch (_b.label) {\r\n case 0:\r\n appId = appFields.appId, measurementId = appFields.measurementId;\r\n _b.label = 1;\r\n case 1:\r\n _b.trys.push([1, 3, , 4]);\r\n return [4 /*yield*/, setAbortableTimeout(signal, throttleEndTimeMillis)];\r\n case 2:\r\n _b.sent();\r\n return [3 /*break*/, 4];\r\n case 3:\r\n e_1 = _b.sent();\r\n if (measurementId) {\r\n logger.warn(\"Timed out fetching this Firebase app's measurement ID from the server.\" +\r\n (\" Falling back to the measurement ID \" + measurementId) +\r\n (\" provided in the \\\"measurementId\\\" field in the local Firebase config. [\" + e_1.message + \"]\"));\r\n return [2 /*return*/, { appId: appId, measurementId: measurementId }];\r\n }\r\n throw e_1;\r\n case 4:\r\n _b.trys.push([4, 6, , 7]);\r\n return [4 /*yield*/, fetchDynamicConfig(appFields)];\r\n case 5:\r\n response = _b.sent();\r\n // Note the SDK only clears throttle state if response is success or non-retriable.\r\n retryData.deleteThrottleMetadata(appId);\r\n return [2 /*return*/, response];\r\n case 6:\r\n e_2 = _b.sent();\r\n if (!isRetriableError(e_2)) {\r\n retryData.deleteThrottleMetadata(appId);\r\n if (measurementId) {\r\n logger.warn(\"Failed to fetch this Firebase app's measurement ID from the server.\" +\r\n (\" Falling back to the measurement ID \" + measurementId) +\r\n (\" provided in the \\\"measurementId\\\" field in the local Firebase config. [\" + e_2.message + \"]\"));\r\n return [2 /*return*/, { appId: appId, measurementId: measurementId }];\r\n }\r\n else {\r\n throw e_2;\r\n }\r\n }\r\n backoffMillis = Number(e_2.customData.httpStatus) === 503\r\n ? calculateBackoffMillis(backoffCount, retryData.intervalMillis, LONG_RETRY_FACTOR)\r\n : calculateBackoffMillis(backoffCount, retryData.intervalMillis);\r\n throttleMetadata = {\r\n throttleEndTimeMillis: Date.now() + backoffMillis,\r\n backoffCount: backoffCount + 1\r\n };\r\n // Persists state.\r\n retryData.setThrottleMetadata(appId, throttleMetadata);\r\n logger.debug(\"Calling attemptFetch again in \" + backoffMillis + \" millis\");\r\n return [2 /*return*/, attemptFetchDynamicConfigWithRetry(appFields, throttleMetadata, signal, retryData)];\r\n case 7: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n}\r\n/**\r\n * Supports waiting on a backoff by:\r\n *\r\n *
    \r\n *
  • Promisifying setTimeout, so we can set a timeout in our Promise chain
  • \r\n *
  • Listening on a signal bus for abort events, just like the Fetch API
  • \r\n *
  • Failing in the same way the Fetch API fails, so timing out a live request and a throttled\r\n * request appear the same.
  • \r\n *
\r\n *\r\n *

Visible for testing.\r\n */\r\nfunction setAbortableTimeout(signal, throttleEndTimeMillis) {\r\n return new Promise(function (resolve, reject) {\r\n // Derives backoff from given end time, normalizing negative numbers to zero.\r\n var backoffMillis = Math.max(throttleEndTimeMillis - Date.now(), 0);\r\n var timeout = setTimeout(resolve, backoffMillis);\r\n // Adds listener, rather than sets onabort, because signal is a shared object.\r\n signal.addEventListener(function () {\r\n clearTimeout(timeout);\r\n // If the request completes before this timeout, the rejection has no effect.\r\n reject(ERROR_FACTORY.create(\"fetch-throttle\" /* FETCH_THROTTLE */, {\r\n throttleEndTimeMillis: throttleEndTimeMillis\r\n }));\r\n });\r\n });\r\n}\r\n/**\r\n * Returns true if the {@link Error} indicates a fetch request may succeed later.\r\n */\r\nfunction isRetriableError(e) {\r\n if (!(e instanceof FirebaseError) || !e.customData) {\r\n return false;\r\n }\r\n // Uses string index defined by ErrorData, which FirebaseError implements.\r\n var httpStatus = Number(e.customData['httpStatus']);\r\n return (httpStatus === 429 ||\r\n httpStatus === 500 ||\r\n httpStatus === 503 ||\r\n httpStatus === 504);\r\n}\r\n/**\r\n * Shims a minimal AbortSignal (copied from Remote Config).\r\n *\r\n *

AbortController's AbortSignal conveniently decouples fetch timeout logic from other aspects\r\n * of networking, such as retries. Firebase doesn't use AbortController enough to justify a\r\n * polyfill recommendation, like we do with the Fetch API, but this minimal shim can easily be\r\n * swapped out if/when we do.\r\n */\r\nvar AnalyticsAbortSignal = /** @class */ (function () {\r\n function AnalyticsAbortSignal() {\r\n this.listeners = [];\r\n }\r\n AnalyticsAbortSignal.prototype.addEventListener = function (listener) {\r\n this.listeners.push(listener);\r\n };\r\n AnalyticsAbortSignal.prototype.abort = function () {\r\n this.listeners.forEach(function (listener) { return listener(); });\r\n };\r\n return AnalyticsAbortSignal;\r\n}());\n\n/**\r\n * @license\r\n * Copyright 2020 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nfunction validateIndexedDB() {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var e_1;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n if (!!isIndexedDBAvailable()) return [3 /*break*/, 1];\r\n logger.warn(ERROR_FACTORY.create(\"indexeddb-unavailable\" /* INDEXEDDB_UNAVAILABLE */, {\r\n errorInfo: 'IndexedDB is not available in this environment.'\r\n }).message);\r\n return [2 /*return*/, false];\r\n case 1:\r\n _a.trys.push([1, 3, , 4]);\r\n return [4 /*yield*/, validateIndexedDBOpenable()];\r\n case 2:\r\n _a.sent();\r\n return [3 /*break*/, 4];\r\n case 3:\r\n e_1 = _a.sent();\r\n logger.warn(ERROR_FACTORY.create(\"indexeddb-unavailable\" /* INDEXEDDB_UNAVAILABLE */, {\r\n errorInfo: e_1\r\n }).message);\r\n return [2 /*return*/, false];\r\n case 4: return [2 /*return*/, true];\r\n }\r\n });\r\n });\r\n}\r\n/**\r\n * Initialize the analytics instance in gtag.js by calling config command with fid.\r\n *\r\n * NOTE: We combine analytics initialization and setting fid together because we want fid to be\r\n * part of the `page_view` event that's sent during the initialization\r\n * @param app Firebase app\r\n * @param gtagCore The gtag function that's not wrapped.\r\n * @param dynamicConfigPromisesList Array of all dynamic config promises.\r\n * @param measurementIdToAppId Maps measurementID to appID.\r\n * @param installations FirebaseInstallations instance.\r\n *\r\n * @returns Measurement ID.\r\n */\r\nfunction initializeIds(app, dynamicConfigPromisesList, measurementIdToAppId, installations, gtagCore, dataLayerName) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var dynamicConfigPromise, fidPromise, _a, dynamicConfig, fid, configProperties;\r\n var _b;\r\n return __generator(this, function (_c) {\r\n switch (_c.label) {\r\n case 0:\r\n dynamicConfigPromise = fetchDynamicConfigWithRetry(app);\r\n // Once fetched, map measurementIds to appId, for ease of lookup in wrapped gtag function.\r\n dynamicConfigPromise\r\n .then(function (config) {\r\n measurementIdToAppId[config.measurementId] = config.appId;\r\n if (app.options.measurementId &&\r\n config.measurementId !== app.options.measurementId) {\r\n logger.warn(\"The measurement ID in the local Firebase config (\" + app.options.measurementId + \")\" +\r\n (\" does not match the measurement ID fetched from the server (\" + config.measurementId + \").\") +\r\n \" To ensure analytics events are always sent to the correct Analytics property,\" +\r\n \" update the\" +\r\n \" measurement ID field in the local config or remove it from the local config.\");\r\n }\r\n })\r\n .catch(function (e) { return logger.error(e); });\r\n // Add to list to track state of all dynamic config promises.\r\n dynamicConfigPromisesList.push(dynamicConfigPromise);\r\n fidPromise = validateIndexedDB().then(function (envIsValid) {\r\n if (envIsValid) {\r\n return installations.getId();\r\n }\r\n else {\r\n return undefined;\r\n }\r\n });\r\n return [4 /*yield*/, Promise.all([\r\n dynamicConfigPromise,\r\n fidPromise\r\n ])];\r\n case 1:\r\n _a = _c.sent(), dynamicConfig = _a[0], fid = _a[1];\r\n // Detect if user has already put the gtag \r\n","import { render } from \"./VueExcelXlsx.vue?vue&type=template&id=79c67b7a\"\nimport script from \"./VueExcelXlsx.vue?vue&type=script&lang=js\"\nexport * from \"./VueExcelXlsx.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"/codebuild/output/src612567107/src/new-merchant-app/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import VueExcelXlsx from \"./VueExcelXlsx.vue\";\r\n\r\nexport default {\r\n install(Vue, options) {\r\n Vue.component(\"vue-excel-xlsx\", VueExcelXlsx);\r\n }\r\n};","export function getDevtoolsGlobalHook() {\n return getTarget().__VUE_DEVTOOLS_GLOBAL_HOOK__;\n}\nexport function getTarget() {\n // @ts-expect-error navigator and windows are not available in all environments\n return (typeof navigator !== 'undefined' && typeof window !== 'undefined')\n ? window\n : typeof globalThis !== 'undefined'\n ? globalThis\n : {};\n}\nexport const isProxyAvailable = typeof Proxy === 'function';\n","export const HOOK_SETUP = 'devtools-plugin:setup';\nexport const HOOK_PLUGIN_SETTINGS_SET = 'plugin:settings:set';\n","let supported;\nlet perf;\nexport function isPerformanceSupported() {\n var _a;\n if (supported !== undefined) {\n return supported;\n }\n if (typeof window !== 'undefined' && window.performance) {\n supported = true;\n perf = window.performance;\n }\n else if (typeof globalThis !== 'undefined' && ((_a = globalThis.perf_hooks) === null || _a === void 0 ? void 0 : _a.performance)) {\n supported = true;\n perf = globalThis.perf_hooks.performance;\n }\n else {\n supported = false;\n }\n return supported;\n}\nexport function now() {\n return isPerformanceSupported() ? perf.now() : Date.now();\n}\n","import { HOOK_PLUGIN_SETTINGS_SET } from './const.js';\nimport { now } from './time.js';\nexport class ApiProxy {\n constructor(plugin, hook) {\n this.target = null;\n this.targetQueue = [];\n this.onQueue = [];\n this.plugin = plugin;\n this.hook = hook;\n const defaultSettings = {};\n if (plugin.settings) {\n for (const id in plugin.settings) {\n const item = plugin.settings[id];\n defaultSettings[id] = item.defaultValue;\n }\n }\n const localSettingsSaveId = `__vue-devtools-plugin-settings__${plugin.id}`;\n let currentSettings = Object.assign({}, defaultSettings);\n try {\n const raw = localStorage.getItem(localSettingsSaveId);\n const data = JSON.parse(raw);\n Object.assign(currentSettings, data);\n }\n catch (e) {\n // noop\n }\n this.fallbacks = {\n getSettings() {\n return currentSettings;\n },\n setSettings(value) {\n try {\n localStorage.setItem(localSettingsSaveId, JSON.stringify(value));\n }\n catch (e) {\n // noop\n }\n currentSettings = value;\n },\n now() {\n return now();\n },\n };\n if (hook) {\n hook.on(HOOK_PLUGIN_SETTINGS_SET, (pluginId, value) => {\n if (pluginId === this.plugin.id) {\n this.fallbacks.setSettings(value);\n }\n });\n }\n this.proxiedOn = new Proxy({}, {\n get: (_target, prop) => {\n if (this.target) {\n return this.target.on[prop];\n }\n else {\n return (...args) => {\n this.onQueue.push({\n method: prop,\n args,\n });\n };\n }\n },\n });\n this.proxiedTarget = new Proxy({}, {\n get: (_target, prop) => {\n if (this.target) {\n return this.target[prop];\n }\n else if (prop === 'on') {\n return this.proxiedOn;\n }\n else if (Object.keys(this.fallbacks).includes(prop)) {\n return (...args) => {\n this.targetQueue.push({\n method: prop,\n args,\n resolve: () => { },\n });\n return this.fallbacks[prop](...args);\n };\n }\n else {\n return (...args) => {\n return new Promise((resolve) => {\n this.targetQueue.push({\n method: prop,\n args,\n resolve,\n });\n });\n };\n }\n },\n });\n }\n async setRealTarget(target) {\n this.target = target;\n for (const item of this.onQueue) {\n this.target.on[item.method](...item.args);\n }\n for (const item of this.targetQueue) {\n item.resolve(await this.target[item.method](...item.args));\n }\n }\n}\n","import { getDevtoolsGlobalHook, getTarget, isProxyAvailable } from './env.js';\nimport { HOOK_SETUP } from './const.js';\nimport { ApiProxy } from './proxy.js';\nexport * from './api/index.js';\nexport * from './plugin.js';\nexport * from './time.js';\nexport function setupDevtoolsPlugin(pluginDescriptor, setupFn) {\n const descriptor = pluginDescriptor;\n const target = getTarget();\n const hook = getDevtoolsGlobalHook();\n const enableProxy = isProxyAvailable && descriptor.enableEarlyProxy;\n if (hook && (target.__VUE_DEVTOOLS_PLUGIN_API_AVAILABLE__ || !enableProxy)) {\n hook.emit(HOOK_SETUP, pluginDescriptor, setupFn);\n }\n else {\n const proxy = enableProxy ? new ApiProxy(descriptor, hook) : null;\n const list = target.__VUE_DEVTOOLS_PLUGINS__ = target.__VUE_DEVTOOLS_PLUGINS__ || [];\n list.push({\n pluginDescriptor: descriptor,\n setupFn,\n proxy,\n });\n if (proxy) {\n setupFn(proxy.proxiedTarget);\n }\n }\n}\n","'use strict';\nmodule.exports = {};\n","'use strict';\nvar fails = require('../internals/fails');\n\nmodule.exports = !fails(function () {\n // eslint-disable-next-line es/no-function-prototype-bind -- safe\n var test = (function () { /* empty */ }).bind();\n // eslint-disable-next-line no-prototype-builtins -- safe\n return typeof test != 'function' || test.hasOwnProperty('prototype');\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar $transfer = require('../internals/array-buffer-transfer');\n\n// `ArrayBuffer.prototype.transferToFixedLength` method\n// https://tc39.es/proposal-arraybuffer-transfer/#sec-arraybuffer.prototype.transfertofixedlength\nif ($transfer) $({ target: 'ArrayBuffer', proto: true }, {\n transferToFixedLength: function transferToFixedLength() {\n return $transfer(this, arguments.length ? arguments[0] : undefined, false);\n }\n});\n","'use strict';\nvar globalThis = require('../internals/global-this');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar uncurryThisAccessor = require('../internals/function-uncurry-this-accessor');\nvar toIndex = require('../internals/to-index');\nvar notDetached = require('../internals/array-buffer-not-detached');\nvar arrayBufferByteLength = require('../internals/array-buffer-byte-length');\nvar detachTransferable = require('../internals/detach-transferable');\nvar PROPER_STRUCTURED_CLONE_TRANSFER = require('../internals/structured-clone-proper-transfer');\n\nvar structuredClone = globalThis.structuredClone;\nvar ArrayBuffer = globalThis.ArrayBuffer;\nvar DataView = globalThis.DataView;\nvar min = Math.min;\nvar ArrayBufferPrototype = ArrayBuffer.prototype;\nvar DataViewPrototype = DataView.prototype;\nvar slice = uncurryThis(ArrayBufferPrototype.slice);\nvar isResizable = uncurryThisAccessor(ArrayBufferPrototype, 'resizable', 'get');\nvar maxByteLength = uncurryThisAccessor(ArrayBufferPrototype, 'maxByteLength', 'get');\nvar getInt8 = uncurryThis(DataViewPrototype.getInt8);\nvar setInt8 = uncurryThis(DataViewPrototype.setInt8);\n\nmodule.exports = (PROPER_STRUCTURED_CLONE_TRANSFER || detachTransferable) && function (arrayBuffer, newLength, preserveResizability) {\n var byteLength = arrayBufferByteLength(arrayBuffer);\n var newByteLength = newLength === undefined ? byteLength : toIndex(newLength);\n var fixedLength = !isResizable || !isResizable(arrayBuffer);\n var newBuffer;\n notDetached(arrayBuffer);\n if (PROPER_STRUCTURED_CLONE_TRANSFER) {\n arrayBuffer = structuredClone(arrayBuffer, { transfer: [arrayBuffer] });\n if (byteLength === newByteLength && (preserveResizability || fixedLength)) return arrayBuffer;\n }\n if (byteLength >= newByteLength && (!preserveResizability || fixedLength)) {\n newBuffer = slice(arrayBuffer, 0, newByteLength);\n } else {\n var options = preserveResizability && !fixedLength && maxByteLength ? { maxByteLength: maxByteLength(arrayBuffer) } : undefined;\n newBuffer = new ArrayBuffer(newByteLength, options);\n var a = new DataView(arrayBuffer);\n var b = new DataView(newBuffer);\n var copyLength = min(newByteLength, byteLength);\n for (var i = 0; i < copyLength; i++) setInt8(b, i, getInt8(a, i));\n }\n if (!PROPER_STRUCTURED_CLONE_TRANSFER) detachTransferable(arrayBuffer);\n return newBuffer;\n};\n","exports.nextTick = function nextTick(fn) {\n var args = Array.prototype.slice.call(arguments);\n args.shift();\n setTimeout(function () {\n fn.apply(null, args);\n }, 0);\n};\n\nexports.platform = exports.arch = \nexports.execPath = exports.title = 'browser';\nexports.pid = 1;\nexports.browser = true;\nexports.env = {};\nexports.argv = [];\n\nexports.binding = function (name) {\n\tthrow new Error('No such module. (Possibly not yet loaded)')\n};\n\n(function () {\n var cwd = '/';\n var path;\n exports.cwd = function () { return cwd };\n exports.chdir = function (dir) {\n if (!path) path = require('path');\n cwd = path.resolve(dir, cwd);\n };\n})();\n\nexports.exit = exports.kill = \nexports.umask = exports.dlopen = \nexports.uptime = exports.memoryUsage = \nexports.uvCounters = function() {};\nexports.features = {};\n","import { h, defineComponent, computed } from 'vue'\n\nimport useAlign, { useAlignProps } from '../../composables/private/use-align.js'\n\nimport { hSlot } from '../../utils/private/render.js'\n\nexport default defineComponent({\n name: 'QCardActions',\n\n props: {\n ...useAlignProps,\n vertical: Boolean\n },\n\n setup (props, { slots }) {\n const alignClass = useAlign(props)\n\n const classes = computed(() =>\n `q-card__actions ${ alignClass.value }`\n + ` q-card__actions--${ props.vertical === true ? 'vert column' : 'horiz row' }`\n )\n\n return () => h('div', { class: classes.value }, hSlot(slots.default))\n }\n})\n","import { h, defineComponent, ref, computed, watch, toRaw, getCurrentInstance } from 'vue'\n\nimport QDialog from '../dialog/QDialog.js'\nimport QBtn from '../btn/QBtn.js'\n\nimport QCard from '../card/QCard.js'\nimport QCardSection from '../card/QCardSection.js'\nimport QCardActions from '../card/QCardActions.js'\nimport QSeparator from '../separator/QSeparator.js'\n\nimport QInput from '../input/QInput.js'\nimport QOptionGroup from '../option-group/QOptionGroup.js'\n\nimport QSpinner from '../spinner/QSpinner.js'\n\nimport useDark, { useDarkProps } from '../../composables/private/use-dark.js'\n\nimport { isKeyCode } from '../../utils/private/key-composition.js'\n\nexport default defineComponent({\n name: 'DialogPlugin',\n\n props: {\n ...useDarkProps,\n\n title: String,\n message: String,\n prompt: Object,\n options: Object,\n progress: [ Boolean, Object ],\n\n html: Boolean,\n\n ok: {\n type: [ String, Object, Boolean ],\n default: true\n },\n cancel: [ String, Object, Boolean ],\n focus: {\n type: String,\n default: 'ok',\n validator: v => [ 'ok', 'cancel', 'none' ].includes(v)\n },\n\n stackButtons: Boolean,\n color: String,\n\n cardClass: [ String, Array, Object ],\n cardStyle: [ String, Array, Object ]\n },\n\n emits: [ 'ok', 'hide' ],\n\n setup (props, { emit }) {\n const { proxy } = getCurrentInstance()\n const { $q } = proxy\n\n const isDark = useDark(props, $q)\n\n const dialogRef = ref(null)\n\n const model = ref(\n props.prompt !== void 0\n ? props.prompt.model\n : (props.options !== void 0 ? props.options.model : void 0)\n )\n\n const classes = computed(() =>\n 'q-dialog-plugin'\n + (isDark.value === true ? ' q-dialog-plugin--dark q-dark' : '')\n + (props.progress !== false ? ' q-dialog-plugin--progress' : '')\n )\n\n const vmColor = computed(() =>\n props.color || (isDark.value === true ? 'amber' : 'primary')\n )\n\n const spinner = computed(() => (\n props.progress === false\n ? null\n : (\n Object(props.progress) === props.progress\n ? {\n component: props.progress.spinner || QSpinner,\n props: { color: props.progress.color || vmColor.value }\n }\n : {\n component: QSpinner,\n props: { color: vmColor.value }\n }\n )\n ))\n\n const hasForm = computed(() =>\n props.prompt !== void 0 || props.options !== void 0\n )\n\n const formProps = computed(() => {\n if (hasForm.value !== true) {\n return {}\n }\n\n const { model, isValid, items, ...formProps } = props.prompt !== void 0\n ? props.prompt\n : props.options\n\n return formProps\n })\n\n const okLabel = computed(() => (\n Object(props.ok) === props.ok\n ? $q.lang.label.ok\n : (\n props.ok === true\n ? $q.lang.label.ok\n : props.ok\n )\n ))\n\n const cancelLabel = computed(() => (\n Object(props.cancel) === props.cancel\n ? $q.lang.label.cancel\n : (\n props.cancel === true\n ? $q.lang.label.cancel\n : props.cancel\n )\n ))\n\n const okDisabled = computed(() => {\n if (props.prompt !== void 0) {\n return props.prompt.isValid !== void 0\n && props.prompt.isValid(model.value) !== true\n }\n if (props.options !== void 0) {\n return props.options.isValid !== void 0\n && props.options.isValid(model.value) !== true\n }\n return false\n })\n\n const okProps = computed(() => ({\n color: vmColor.value,\n label: okLabel.value,\n ripple: false,\n ...(Object(props.ok) === props.ok ? props.ok : { flat: true }),\n disable: okDisabled.value,\n 'data-autofocus': (props.focus === 'ok' && hasForm.value !== true) || void 0,\n onClick: onOk\n }))\n\n const cancelProps = computed(() => ({\n color: vmColor.value,\n label: cancelLabel.value,\n ripple: false,\n ...(Object(props.cancel) === props.cancel ? props.cancel : { flat: true }),\n 'data-autofocus': (props.focus === 'cancel' && hasForm.value !== true) || void 0,\n onClick: onCancel\n }))\n\n watch(() => props.prompt && props.prompt.model, onUpdateModel)\n watch(() => props.options && props.options.model, onUpdateModel)\n\n function show () {\n dialogRef.value.show()\n }\n\n function hide () {\n dialogRef.value.hide()\n }\n\n function onOk () {\n emit('ok', toRaw(model.value))\n hide()\n }\n\n function onCancel () {\n hide()\n }\n\n function onDialogHide () {\n emit('hide')\n }\n\n function onUpdateModel (val) {\n model.value = val\n }\n\n function onInputKeyup (evt) {\n // if ENTER key\n if (\n okDisabled.value !== true\n && props.prompt.type !== 'textarea'\n && isKeyCode(evt, 13) === true\n ) {\n onOk()\n }\n }\n\n function getSection (classes, text) {\n return props.html === true\n ? h(QCardSection, {\n class: classes,\n innerHTML: text\n })\n : h(QCardSection, { class: classes }, () => text)\n }\n\n function getPrompt () {\n return [\n h(QInput, {\n modelValue: model.value,\n ...formProps.value,\n color: vmColor.value,\n dense: true,\n autofocus: true,\n dark: isDark.value,\n 'onUpdate:modelValue': onUpdateModel,\n onKeyup: onInputKeyup\n })\n ]\n }\n\n function getOptions () {\n return [\n h(QOptionGroup, {\n modelValue: model.value,\n ...formProps.value,\n color: vmColor.value,\n options: props.options.items,\n dark: isDark.value,\n 'onUpdate:modelValue': onUpdateModel\n })\n ]\n }\n\n function getButtons () {\n const child = []\n\n props.cancel && child.push(\n h(QBtn, cancelProps.value)\n )\n\n props.ok && child.push(\n h(QBtn, okProps.value)\n )\n\n return h(QCardActions, {\n class: props.stackButtons === true ? 'items-end' : '',\n vertical: props.stackButtons,\n align: 'right'\n }, () => child)\n }\n\n function getCardContent () {\n const child = []\n\n props.title && child.push(\n getSection('q-dialog__title', props.title)\n )\n\n props.progress !== false && child.push(\n h(\n QCardSection,\n { class: 'q-dialog__progress' },\n () => h(spinner.value.component, spinner.value.props)\n )\n )\n\n props.message && child.push(\n getSection('q-dialog__message', props.message)\n )\n\n if (props.prompt !== void 0) {\n child.push(\n h(\n QCardSection,\n { class: 'scroll q-dialog-plugin__form' },\n getPrompt\n )\n )\n }\n else if (props.options !== void 0) {\n child.push(\n h(QSeparator, { dark: isDark.value }),\n h(\n QCardSection,\n { class: 'scroll q-dialog-plugin__form' },\n getOptions\n ),\n h(QSeparator, { dark: isDark.value })\n )\n }\n\n if (props.ok || props.cancel) {\n child.push(getButtons())\n }\n\n return child\n }\n\n function getContent () {\n return [\n h(QCard, {\n class: [\n classes.value,\n props.cardClass\n ],\n style: props.cardStyle,\n dark: isDark.value\n }, getCardContent)\n ]\n }\n\n // expose public methods\n Object.assign(proxy, { show, hide })\n\n return () => h(QDialog, {\n ref: dialogRef,\n onHide: onDialogHide\n }, getContent)\n }\n})\n","import { h, ref, nextTick } from 'vue'\n\nimport { createChildApp } from '../../install-quasar.js'\nimport { createGlobalNode, removeGlobalNode } from './global-nodes.js'\n\nconst ssrAPI = {\n onOk: () => ssrAPI,\n okCancel: () => ssrAPI,\n hide: () => ssrAPI,\n update: () => ssrAPI\n}\n\nexport function merge (target, source) {\n for (const key in source) {\n if (key !== 'spinner' && Object(source[ key ]) === source[ key ]) {\n target[ key ] = Object(target[ key ]) !== target[ key ]\n ? {}\n : { ...target[ key ] }\n\n merge(target[ key ], source[ key ])\n }\n else {\n target[ key ] = source[ key ]\n }\n }\n}\n\nexport default function (DefaultComponent, supportsCustomComponent, parentApp) {\n return pluginProps => {\n if (__QUASAR_SSR_SERVER__) { return ssrAPI }\n\n let DialogComponent, props\n const isCustom = supportsCustomComponent === true\n && pluginProps.component !== void 0\n\n if (isCustom === true) {\n const { component, componentProps } = pluginProps\n\n DialogComponent = (typeof component === 'string')\n ? parentApp.component(component)\n : component\n\n props = componentProps\n }\n else {\n const { class: klass, style, ...otherProps } = pluginProps\n\n DialogComponent = DefaultComponent\n props = otherProps\n klass !== void 0 && (otherProps.cardClass = klass)\n style !== void 0 && (otherProps.cardStyle = style)\n }\n\n const\n okFns = [],\n cancelFns = [],\n API = {\n onOk (fn) {\n okFns.push(fn)\n return API\n },\n onCancel (fn) {\n cancelFns.push(fn)\n return API\n },\n onDismiss (fn) {\n okFns.push(fn)\n cancelFns.push(fn)\n return API\n },\n hide () {\n if (dialogRef.value !== null) {\n dialogRef.value.hide()\n }\n return API\n },\n update (componentProps) {\n if (vm !== null) {\n if (isCustom === true) {\n Object.assign(props, componentProps)\n }\n else {\n const { class: klass, style, ...cfg } = componentProps\n\n klass !== void 0 && (cfg.cardClass = klass)\n style !== void 0 && (cfg.cardStyle = style)\n merge(props, cfg)\n }\n\n vm.$forceUpdate()\n }\n\n return API\n }\n }\n\n const el = createGlobalNode()\n\n let emittedOK = false\n\n const onOk = data => {\n emittedOK = true\n okFns.forEach(fn => { fn(data) })\n }\n\n const onHide = () => {\n app.unmount(el)\n removeGlobalNode(el)\n app = null\n vm = null\n\n if (emittedOK !== true) {\n cancelFns.forEach(fn => { fn() })\n }\n }\n\n const dialogRef = ref(null)\n\n let app = createChildApp({\n name: 'QGlobalDialog',\n setup () {\n return () => h(DialogComponent, {\n ref: dialogRef,\n ...props,\n onOk,\n onHide\n })\n }\n }, parentApp)\n\n let vm = app.mount(el)\n\n function show () {\n if (dialogRef.value.show !== void 0) {\n dialogRef.value.show()\n }\n else if ( // account for \"script setup\" way of declaring component\n vm.$.subTree\n && vm.$.subTree.component\n && vm.$.subTree.component.proxy\n && vm.$.subTree.component.proxy.show\n ) {\n vm.$.subTree.component.proxy.show()\n }\n else {\n console.error('[Quasar] Incorrectly defined Dialog component')\n }\n }\n\n if (dialogRef.value !== null) {\n show()\n }\n else if (typeof DialogComponent.__asyncLoader === 'function') {\n DialogComponent.__asyncLoader().then(() => {\n nextTick(show)\n })\n }\n\n return API\n }\n}\n","import DialogPlugin from '../components/dialog-plugin/DialogPlugin.js'\nimport globalDialog from '../utils/private/global-dialog.js'\n\nexport default {\n install ({ $q, parentApp }) {\n if (this.__installed === true) {\n $q.dialog = globalDialog(DialogPlugin, true, parentApp)\n }\n else {\n this.create = $q.dialog = globalDialog(DialogPlugin, true, parentApp)\n }\n }\n}\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar fails = require('../internals/fails');\nvar classof = require('../internals/classof-raw');\n\nvar $Object = Object;\nvar split = uncurryThis(''.split);\n\n// fallback for non-array-like ES3 and non-enumerable old V8 strings\nmodule.exports = fails(function () {\n // throws an error in rhino, see https://github.com/mozilla/rhino/issues/346\n // eslint-disable-next-line no-prototype-builtins -- safe\n return !$Object('z').propertyIsEnumerable(0);\n}) ? function (it) {\n return classof(it) === 'String' ? split(it, '') : $Object(it);\n} : $Object;\n","'use strict';\nvar classofRaw = require('../internals/classof-raw');\nvar uncurryThis = require('../internals/function-uncurry-this');\n\nmodule.exports = function (fn) {\n // Nashorn bug:\n // https://github.com/zloirock/core-js/issues/1128\n // https://github.com/zloirock/core-js/issues/1130\n if (classofRaw(fn) === 'Function') return uncurryThis(fn);\n};\n","'use strict';\n\nvar createError = require('./createError');\n\n/**\n * Resolve or reject a Promise based on response status.\n *\n * @param {Function} resolve A function that resolves the promise.\n * @param {Function} reject A function that rejects the promise.\n * @param {object} response The response.\n */\nmodule.exports = function settle(resolve, reject, response) {\n var validateStatus = response.config.validateStatus;\n if (!response.status || !validateStatus || validateStatus(response.status)) {\n resolve(response);\n } else {\n reject(createError(\n 'Request failed with status code ' + response.status,\n response.config,\n null,\n response.request,\n response\n ));\n }\n};\n","'use strict';\n// `GetIteratorDirect(obj)` abstract operation\n// https://tc39.es/proposal-iterator-helpers/#sec-getiteratordirect\nmodule.exports = function (obj) {\n return {\n iterator: obj,\n next: obj.next,\n done: false\n };\n};\n","'use strict';\n// `CreateIterResultObject` abstract operation\n// https://tc39.es/ecma262/#sec-createiterresultobject\nmodule.exports = function (value, done) {\n return { value: value, done: done };\n};\n","'use strict';\nvar call = require('../internals/function-call');\nvar isCallable = require('../internals/is-callable');\nvar isObject = require('../internals/is-object');\n\nvar $TypeError = TypeError;\n\n// `OrdinaryToPrimitive` abstract operation\n// https://tc39.es/ecma262/#sec-ordinarytoprimitive\nmodule.exports = function (input, pref) {\n var fn, val;\n if (pref === 'string' && isCallable(fn = input.toString) && !isObject(val = call(fn, input))) return val;\n if (isCallable(fn = input.valueOf) && !isObject(val = call(fn, input))) return val;\n if (pref !== 'string' && isCallable(fn = input.toString) && !isObject(val = call(fn, input))) return val;\n throw new $TypeError(\"Can't convert object to primitive value\");\n};\n","'use strict';\n\nvar utils = require('../utils');\n\n/**\n * Config-specific merge-function which creates a new config-object\n * by merging two configuration objects together.\n *\n * @param {Object} config1\n * @param {Object} config2\n * @returns {Object} New object resulting from merging config2 to config1\n */\nmodule.exports = function mergeConfig(config1, config2) {\n // eslint-disable-next-line no-param-reassign\n config2 = config2 || {};\n var config = {};\n\n function getMergedValue(target, source) {\n if (utils.isPlainObject(target) && utils.isPlainObject(source)) {\n return utils.merge(target, source);\n } else if (utils.isPlainObject(source)) {\n return utils.merge({}, source);\n } else if (utils.isArray(source)) {\n return source.slice();\n }\n return source;\n }\n\n // eslint-disable-next-line consistent-return\n function mergeDeepProperties(prop) {\n if (!utils.isUndefined(config2[prop])) {\n return getMergedValue(config1[prop], config2[prop]);\n } else if (!utils.isUndefined(config1[prop])) {\n return getMergedValue(undefined, config1[prop]);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function valueFromConfig2(prop) {\n if (!utils.isUndefined(config2[prop])) {\n return getMergedValue(undefined, config2[prop]);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function defaultToConfig2(prop) {\n if (!utils.isUndefined(config2[prop])) {\n return getMergedValue(undefined, config2[prop]);\n } else if (!utils.isUndefined(config1[prop])) {\n return getMergedValue(undefined, config1[prop]);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function mergeDirectKeys(prop) {\n if (prop in config2) {\n return getMergedValue(config1[prop], config2[prop]);\n } else if (prop in config1) {\n return getMergedValue(undefined, config1[prop]);\n }\n }\n\n var mergeMap = {\n 'url': valueFromConfig2,\n 'method': valueFromConfig2,\n 'data': valueFromConfig2,\n 'baseURL': defaultToConfig2,\n 'transformRequest': defaultToConfig2,\n 'transformResponse': defaultToConfig2,\n 'paramsSerializer': defaultToConfig2,\n 'timeout': defaultToConfig2,\n 'timeoutMessage': defaultToConfig2,\n 'withCredentials': defaultToConfig2,\n 'adapter': defaultToConfig2,\n 'responseType': defaultToConfig2,\n 'xsrfCookieName': defaultToConfig2,\n 'xsrfHeaderName': defaultToConfig2,\n 'onUploadProgress': defaultToConfig2,\n 'onDownloadProgress': defaultToConfig2,\n 'decompress': defaultToConfig2,\n 'maxContentLength': defaultToConfig2,\n 'maxBodyLength': defaultToConfig2,\n 'transport': defaultToConfig2,\n 'httpAgent': defaultToConfig2,\n 'httpsAgent': defaultToConfig2,\n 'cancelToken': defaultToConfig2,\n 'socketPath': defaultToConfig2,\n 'responseEncoding': defaultToConfig2,\n 'validateStatus': mergeDirectKeys\n };\n\n utils.forEach(Object.keys(config1).concat(Object.keys(config2)), function computeConfigValue(prop) {\n var merge = mergeMap[prop] || mergeDeepProperties;\n var configValue = merge(prop);\n (utils.isUndefined(configValue) && merge !== mergeDirectKeys) || (config[prop] = configValue);\n });\n\n return config;\n};\n","'use strict';\n// eslint-disable-next-line es/no-typed-arrays -- safe\nmodule.exports = typeof ArrayBuffer != 'undefined' && typeof DataView != 'undefined';\n","'use strict';\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\n\n// `Array.prototype.{ indexOf, includes }` methods implementation\nvar createMethod = function (IS_INCLUDES) {\n return function ($this, el, fromIndex) {\n var O = toIndexedObject($this);\n var length = lengthOfArrayLike(O);\n if (length === 0) return !IS_INCLUDES && -1;\n var index = toAbsoluteIndex(fromIndex, length);\n var value;\n // Array#includes uses SameValueZero equality algorithm\n // eslint-disable-next-line no-self-compare -- NaN check\n if (IS_INCLUDES && el !== el) while (length > index) {\n value = O[index++];\n // eslint-disable-next-line no-self-compare -- NaN check\n if (value !== value) return true;\n // Array#indexOf ignores holes, Array#includes - not\n } else for (;length > index; index++) {\n if ((IS_INCLUDES || index in O) && O[index] === el) return IS_INCLUDES || index || 0;\n } return !IS_INCLUDES && -1;\n };\n};\n\nmodule.exports = {\n // `Array.prototype.includes` method\n // https://tc39.es/ecma262/#sec-array.prototype.includes\n includes: createMethod(true),\n // `Array.prototype.indexOf` method\n // https://tc39.es/ecma262/#sec-array.prototype.indexof\n indexOf: createMethod(false)\n};\n","'use strict';\nvar arrayWith = require('../internals/array-with');\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar isBigIntArray = require('../internals/is-big-int-array');\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\nvar toBigInt = require('../internals/to-big-int');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar getTypedArrayConstructor = ArrayBufferViewCore.getTypedArrayConstructor;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\nvar PROPER_ORDER = !!function () {\n try {\n // eslint-disable-next-line no-throw-literal, es/no-typed-arrays, es/no-array-prototype-with -- required for testing\n new Int8Array(1)['with'](2, { valueOf: function () { throw 8; } });\n } catch (error) {\n // some early implementations, like WebKit, does not follow the final semantic\n // https://github.com/tc39/proposal-change-array-by-copy/pull/86\n return error === 8;\n }\n}();\n\n// `%TypedArray%.prototype.with` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.with\nexportTypedArrayMethod('with', { 'with': function (index, value) {\n var O = aTypedArray(this);\n var relativeIndex = toIntegerOrInfinity(index);\n var actualValue = isBigIntArray(O) ? toBigInt(value) : +value;\n return arrayWith(O, getTypedArrayConstructor(O), relativeIndex, actualValue);\n} }['with'], !PROPER_ORDER);\n","'use strict';\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\n\nvar min = Math.min;\n\n// `ToLength` abstract operation\n// https://tc39.es/ecma262/#sec-tolength\nmodule.exports = function (argument) {\n var len = toIntegerOrInfinity(argument);\n return len > 0 ? min(len, 0x1FFFFFFFFFFFFF) : 0; // 2 ** 53 - 1 == 9007199254740991\n};\n","'use strict';\n\nvar utils = require('./../utils');\nvar transformData = require('./transformData');\nvar isCancel = require('../cancel/isCancel');\nvar defaults = require('../defaults');\nvar Cancel = require('../cancel/Cancel');\n\n/**\n * Throws a `Cancel` if cancellation has been requested.\n */\nfunction throwIfCancellationRequested(config) {\n if (config.cancelToken) {\n config.cancelToken.throwIfRequested();\n }\n\n if (config.signal && config.signal.aborted) {\n throw new Cancel('canceled');\n }\n}\n\n/**\n * Dispatch a request to the server using the configured adapter.\n *\n * @param {object} config The config that is to be used for the request\n * @returns {Promise} The Promise to be fulfilled\n */\nmodule.exports = function dispatchRequest(config) {\n throwIfCancellationRequested(config);\n\n // Ensure headers exist\n config.headers = config.headers || {};\n\n // Transform request data\n config.data = transformData.call(\n config,\n config.data,\n config.headers,\n config.transformRequest\n );\n\n // Flatten headers\n config.headers = utils.merge(\n config.headers.common || {},\n config.headers[config.method] || {},\n config.headers\n );\n\n utils.forEach(\n ['delete', 'get', 'head', 'post', 'put', 'patch', 'common'],\n function cleanHeaderConfig(method) {\n delete config.headers[method];\n }\n );\n\n var adapter = config.adapter || defaults.adapter;\n\n return adapter(config).then(function onAdapterResolution(response) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n response.data = transformData.call(\n config,\n response.data,\n response.headers,\n config.transformResponse\n );\n\n return response;\n }, function onAdapterRejection(reason) {\n if (!isCancel(reason)) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n if (reason && reason.response) {\n reason.response.data = transformData.call(\n config,\n reason.response.data,\n reason.response.headers,\n config.transformResponse\n );\n }\n }\n\n return Promise.reject(reason);\n });\n};\n","'use strict';\nvar call = require('../internals/function-call');\n\nmodule.exports = function (record, fn, ITERATOR_INSTEAD_OF_RECORD) {\n var iterator = ITERATOR_INSTEAD_OF_RECORD ? record : record.iterator;\n var next = record.next;\n var step, result;\n while (!(step = call(next, iterator)).done) {\n result = fn(step.value);\n if (result !== undefined) return result;\n }\n};\n","import { getParentVm } from './vm.js'\n\nexport const portalList = []\n\nexport function getPortalVm (el) {\n return portalList.find(vm =>\n vm.__qPortalInnerRef.value !== null\n && vm.__qPortalInnerRef.value.contains(el)\n )\n}\n\nexport function closePortalMenus (vm, evt) {\n do {\n if (vm.$options.name === 'QMenu') {\n vm.hide(evt)\n\n // is this a point of separation?\n if (vm.$props.separateClosePopup === true) {\n return getParentVm(vm)\n }\n }\n else if (vm.__qPortalInnerRef !== void 0) {\n // treat it as point of separation if parent is QPopupProxy\n // (so mobile matches desktop behavior)\n // and hide it too\n const parent = getParentVm(vm)\n\n if (parent !== void 0 && parent.$options.name === 'QPopupProxy') {\n vm.hide(evt)\n return parent\n }\n else {\n return vm\n }\n }\n\n vm = getParentVm(vm)\n } while (vm !== void 0 && vm !== null)\n}\n\nexport function closePortals (vm, evt, depth) {\n while (depth !== 0 && vm !== void 0 && vm !== null) {\n if (vm.__qPortalInnerRef !== void 0) {\n depth--\n\n if (vm.$options.name === 'QMenu') {\n vm = closePortalMenus(vm, evt)\n continue\n }\n\n vm.hide(evt)\n }\n\n vm = getParentVm(vm)\n }\n}\n","/*!\n * vuex v4.1.0\n * (c) 2022 Evan You\n * @license MIT\n */\nimport { inject, effectScope, reactive, watch, computed } from 'vue';\nimport { setupDevtoolsPlugin } from '@vue/devtools-api';\n\nvar storeKey = 'store';\n\nfunction useStore (key) {\n if ( key === void 0 ) key = null;\n\n return inject(key !== null ? key : storeKey)\n}\n\n/**\n * Get the first item that pass the test\n * by second argument function\n *\n * @param {Array} list\n * @param {Function} f\n * @return {*}\n */\nfunction find (list, f) {\n return list.filter(f)[0]\n}\n\n/**\n * Deep copy the given object considering circular structure.\n * This function caches all nested objects and its copies.\n * If it detects circular structure, use cached copy to avoid infinite loop.\n *\n * @param {*} obj\n * @param {Array} cache\n * @return {*}\n */\nfunction deepCopy (obj, cache) {\n if ( cache === void 0 ) cache = [];\n\n // just return if obj is immutable value\n if (obj === null || typeof obj !== 'object') {\n return obj\n }\n\n // if obj is hit, it is in circular structure\n var hit = find(cache, function (c) { return c.original === obj; });\n if (hit) {\n return hit.copy\n }\n\n var copy = Array.isArray(obj) ? [] : {};\n // put the copy into cache at first\n // because we want to refer it in recursive deepCopy\n cache.push({\n original: obj,\n copy: copy\n });\n\n Object.keys(obj).forEach(function (key) {\n copy[key] = deepCopy(obj[key], cache);\n });\n\n return copy\n}\n\n/**\n * forEach for object\n */\nfunction forEachValue (obj, fn) {\n Object.keys(obj).forEach(function (key) { return fn(obj[key], key); });\n}\n\nfunction isObject (obj) {\n return obj !== null && typeof obj === 'object'\n}\n\nfunction isPromise (val) {\n return val && typeof val.then === 'function'\n}\n\nfunction assert (condition, msg) {\n if (!condition) { throw new Error((\"[vuex] \" + msg)) }\n}\n\nfunction partial (fn, arg) {\n return function () {\n return fn(arg)\n }\n}\n\nfunction genericSubscribe (fn, subs, options) {\n if (subs.indexOf(fn) < 0) {\n options && options.prepend\n ? subs.unshift(fn)\n : subs.push(fn);\n }\n return function () {\n var i = subs.indexOf(fn);\n if (i > -1) {\n subs.splice(i, 1);\n }\n }\n}\n\nfunction resetStore (store, hot) {\n store._actions = Object.create(null);\n store._mutations = Object.create(null);\n store._wrappedGetters = Object.create(null);\n store._modulesNamespaceMap = Object.create(null);\n var state = store.state;\n // init all modules\n installModule(store, state, [], store._modules.root, true);\n // reset state\n resetStoreState(store, state, hot);\n}\n\nfunction resetStoreState (store, state, hot) {\n var oldState = store._state;\n var oldScope = store._scope;\n\n // bind store public getters\n store.getters = {};\n // reset local getters cache\n store._makeLocalGettersCache = Object.create(null);\n var wrappedGetters = store._wrappedGetters;\n var computedObj = {};\n var computedCache = {};\n\n // create a new effect scope and create computed object inside it to avoid\n // getters (computed) getting destroyed on component unmount.\n var scope = effectScope(true);\n\n scope.run(function () {\n forEachValue(wrappedGetters, function (fn, key) {\n // use computed to leverage its lazy-caching mechanism\n // direct inline function use will lead to closure preserving oldState.\n // using partial to return function with only arguments preserved in closure environment.\n computedObj[key] = partial(fn, store);\n computedCache[key] = computed(function () { return computedObj[key](); });\n Object.defineProperty(store.getters, key, {\n get: function () { return computedCache[key].value; },\n enumerable: true // for local getters\n });\n });\n });\n\n store._state = reactive({\n data: state\n });\n\n // register the newly created effect scope to the store so that we can\n // dispose the effects when this method runs again in the future.\n store._scope = scope;\n\n // enable strict mode for new state\n if (store.strict) {\n enableStrictMode(store);\n }\n\n if (oldState) {\n if (hot) {\n // dispatch changes in all subscribed watchers\n // to force getter re-evaluation for hot reloading.\n store._withCommit(function () {\n oldState.data = null;\n });\n }\n }\n\n // dispose previously registered effect scope if there is one.\n if (oldScope) {\n oldScope.stop();\n }\n}\n\nfunction installModule (store, rootState, path, module, hot) {\n var isRoot = !path.length;\n var namespace = store._modules.getNamespace(path);\n\n // register in namespace map\n if (module.namespaced) {\n if (store._modulesNamespaceMap[namespace] && true) {\n console.error((\"[vuex] duplicate namespace \" + namespace + \" for the namespaced module \" + (path.join('/'))));\n }\n store._modulesNamespaceMap[namespace] = module;\n }\n\n // set state\n if (!isRoot && !hot) {\n var parentState = getNestedState(rootState, path.slice(0, -1));\n var moduleName = path[path.length - 1];\n store._withCommit(function () {\n {\n if (moduleName in parentState) {\n console.warn(\n (\"[vuex] state field \\\"\" + moduleName + \"\\\" was overridden by a module with the same name at \\\"\" + (path.join('.')) + \"\\\"\")\n );\n }\n }\n parentState[moduleName] = module.state;\n });\n }\n\n var local = module.context = makeLocalContext(store, namespace, path);\n\n module.forEachMutation(function (mutation, key) {\n var namespacedType = namespace + key;\n registerMutation(store, namespacedType, mutation, local);\n });\n\n module.forEachAction(function (action, key) {\n var type = action.root ? key : namespace + key;\n var handler = action.handler || action;\n registerAction(store, type, handler, local);\n });\n\n module.forEachGetter(function (getter, key) {\n var namespacedType = namespace + key;\n registerGetter(store, namespacedType, getter, local);\n });\n\n module.forEachChild(function (child, key) {\n installModule(store, rootState, path.concat(key), child, hot);\n });\n}\n\n/**\n * make localized dispatch, commit, getters and state\n * if there is no namespace, just use root ones\n */\nfunction makeLocalContext (store, namespace, path) {\n var noNamespace = namespace === '';\n\n var local = {\n dispatch: noNamespace ? store.dispatch : function (_type, _payload, _options) {\n var args = unifyObjectStyle(_type, _payload, _options);\n var payload = args.payload;\n var options = args.options;\n var type = args.type;\n\n if (!options || !options.root) {\n type = namespace + type;\n if (!store._actions[type]) {\n console.error((\"[vuex] unknown local action type: \" + (args.type) + \", global type: \" + type));\n return\n }\n }\n\n return store.dispatch(type, payload)\n },\n\n commit: noNamespace ? store.commit : function (_type, _payload, _options) {\n var args = unifyObjectStyle(_type, _payload, _options);\n var payload = args.payload;\n var options = args.options;\n var type = args.type;\n\n if (!options || !options.root) {\n type = namespace + type;\n if (!store._mutations[type]) {\n console.error((\"[vuex] unknown local mutation type: \" + (args.type) + \", global type: \" + type));\n return\n }\n }\n\n store.commit(type, payload, options);\n }\n };\n\n // getters and state object must be gotten lazily\n // because they will be changed by state update\n Object.defineProperties(local, {\n getters: {\n get: noNamespace\n ? function () { return store.getters; }\n : function () { return makeLocalGetters(store, namespace); }\n },\n state: {\n get: function () { return getNestedState(store.state, path); }\n }\n });\n\n return local\n}\n\nfunction makeLocalGetters (store, namespace) {\n if (!store._makeLocalGettersCache[namespace]) {\n var gettersProxy = {};\n var splitPos = namespace.length;\n Object.keys(store.getters).forEach(function (type) {\n // skip if the target getter is not match this namespace\n if (type.slice(0, splitPos) !== namespace) { return }\n\n // extract local getter type\n var localType = type.slice(splitPos);\n\n // Add a port to the getters proxy.\n // Define as getter property because\n // we do not want to evaluate the getters in this time.\n Object.defineProperty(gettersProxy, localType, {\n get: function () { return store.getters[type]; },\n enumerable: true\n });\n });\n store._makeLocalGettersCache[namespace] = gettersProxy;\n }\n\n return store._makeLocalGettersCache[namespace]\n}\n\nfunction registerMutation (store, type, handler, local) {\n var entry = store._mutations[type] || (store._mutations[type] = []);\n entry.push(function wrappedMutationHandler (payload) {\n handler.call(store, local.state, payload);\n });\n}\n\nfunction registerAction (store, type, handler, local) {\n var entry = store._actions[type] || (store._actions[type] = []);\n entry.push(function wrappedActionHandler (payload) {\n var res = handler.call(store, {\n dispatch: local.dispatch,\n commit: local.commit,\n getters: local.getters,\n state: local.state,\n rootGetters: store.getters,\n rootState: store.state\n }, payload);\n if (!isPromise(res)) {\n res = Promise.resolve(res);\n }\n if (store._devtoolHook) {\n return res.catch(function (err) {\n store._devtoolHook.emit('vuex:error', err);\n throw err\n })\n } else {\n return res\n }\n });\n}\n\nfunction registerGetter (store, type, rawGetter, local) {\n if (store._wrappedGetters[type]) {\n {\n console.error((\"[vuex] duplicate getter key: \" + type));\n }\n return\n }\n store._wrappedGetters[type] = function wrappedGetter (store) {\n return rawGetter(\n local.state, // local state\n local.getters, // local getters\n store.state, // root state\n store.getters // root getters\n )\n };\n}\n\nfunction enableStrictMode (store) {\n watch(function () { return store._state.data; }, function () {\n {\n assert(store._committing, \"do not mutate vuex store state outside mutation handlers.\");\n }\n }, { deep: true, flush: 'sync' });\n}\n\nfunction getNestedState (state, path) {\n return path.reduce(function (state, key) { return state[key]; }, state)\n}\n\nfunction unifyObjectStyle (type, payload, options) {\n if (isObject(type) && type.type) {\n options = payload;\n payload = type;\n type = type.type;\n }\n\n {\n assert(typeof type === 'string', (\"expects string as the type, but found \" + (typeof type) + \".\"));\n }\n\n return { type: type, payload: payload, options: options }\n}\n\nvar LABEL_VUEX_BINDINGS = 'vuex bindings';\nvar MUTATIONS_LAYER_ID = 'vuex:mutations';\nvar ACTIONS_LAYER_ID = 'vuex:actions';\nvar INSPECTOR_ID = 'vuex';\n\nvar actionId = 0;\n\nfunction addDevtools (app, store) {\n setupDevtoolsPlugin(\n {\n id: 'org.vuejs.vuex',\n app: app,\n label: 'Vuex',\n homepage: 'https://next.vuex.vuejs.org/',\n logo: 'https://vuejs.org/images/icons/favicon-96x96.png',\n packageName: 'vuex',\n componentStateTypes: [LABEL_VUEX_BINDINGS]\n },\n function (api) {\n api.addTimelineLayer({\n id: MUTATIONS_LAYER_ID,\n label: 'Vuex Mutations',\n color: COLOR_LIME_500\n });\n\n api.addTimelineLayer({\n id: ACTIONS_LAYER_ID,\n label: 'Vuex Actions',\n color: COLOR_LIME_500\n });\n\n api.addInspector({\n id: INSPECTOR_ID,\n label: 'Vuex',\n icon: 'storage',\n treeFilterPlaceholder: 'Filter stores...'\n });\n\n api.on.getInspectorTree(function (payload) {\n if (payload.app === app && payload.inspectorId === INSPECTOR_ID) {\n if (payload.filter) {\n var nodes = [];\n flattenStoreForInspectorTree(nodes, store._modules.root, payload.filter, '');\n payload.rootNodes = nodes;\n } else {\n payload.rootNodes = [\n formatStoreForInspectorTree(store._modules.root, '')\n ];\n }\n }\n });\n\n api.on.getInspectorState(function (payload) {\n if (payload.app === app && payload.inspectorId === INSPECTOR_ID) {\n var modulePath = payload.nodeId;\n makeLocalGetters(store, modulePath);\n payload.state = formatStoreForInspectorState(\n getStoreModule(store._modules, modulePath),\n modulePath === 'root' ? store.getters : store._makeLocalGettersCache,\n modulePath\n );\n }\n });\n\n api.on.editInspectorState(function (payload) {\n if (payload.app === app && payload.inspectorId === INSPECTOR_ID) {\n var modulePath = payload.nodeId;\n var path = payload.path;\n if (modulePath !== 'root') {\n path = modulePath.split('/').filter(Boolean).concat( path);\n }\n store._withCommit(function () {\n payload.set(store._state.data, path, payload.state.value);\n });\n }\n });\n\n store.subscribe(function (mutation, state) {\n var data = {};\n\n if (mutation.payload) {\n data.payload = mutation.payload;\n }\n\n data.state = state;\n\n api.notifyComponentUpdate();\n api.sendInspectorTree(INSPECTOR_ID);\n api.sendInspectorState(INSPECTOR_ID);\n\n api.addTimelineEvent({\n layerId: MUTATIONS_LAYER_ID,\n event: {\n time: Date.now(),\n title: mutation.type,\n data: data\n }\n });\n });\n\n store.subscribeAction({\n before: function (action, state) {\n var data = {};\n if (action.payload) {\n data.payload = action.payload;\n }\n action._id = actionId++;\n action._time = Date.now();\n data.state = state;\n\n api.addTimelineEvent({\n layerId: ACTIONS_LAYER_ID,\n event: {\n time: action._time,\n title: action.type,\n groupId: action._id,\n subtitle: 'start',\n data: data\n }\n });\n },\n after: function (action, state) {\n var data = {};\n var duration = Date.now() - action._time;\n data.duration = {\n _custom: {\n type: 'duration',\n display: (duration + \"ms\"),\n tooltip: 'Action duration',\n value: duration\n }\n };\n if (action.payload) {\n data.payload = action.payload;\n }\n data.state = state;\n\n api.addTimelineEvent({\n layerId: ACTIONS_LAYER_ID,\n event: {\n time: Date.now(),\n title: action.type,\n groupId: action._id,\n subtitle: 'end',\n data: data\n }\n });\n }\n });\n }\n );\n}\n\n// extracted from tailwind palette\nvar COLOR_LIME_500 = 0x84cc16;\nvar COLOR_DARK = 0x666666;\nvar COLOR_WHITE = 0xffffff;\n\nvar TAG_NAMESPACED = {\n label: 'namespaced',\n textColor: COLOR_WHITE,\n backgroundColor: COLOR_DARK\n};\n\n/**\n * @param {string} path\n */\nfunction extractNameFromPath (path) {\n return path && path !== 'root' ? path.split('/').slice(-2, -1)[0] : 'Root'\n}\n\n/**\n * @param {*} module\n * @return {import('@vue/devtools-api').CustomInspectorNode}\n */\nfunction formatStoreForInspectorTree (module, path) {\n return {\n id: path || 'root',\n // all modules end with a `/`, we want the last segment only\n // cart/ -> cart\n // nested/cart/ -> cart\n label: extractNameFromPath(path),\n tags: module.namespaced ? [TAG_NAMESPACED] : [],\n children: Object.keys(module._children).map(function (moduleName) { return formatStoreForInspectorTree(\n module._children[moduleName],\n path + moduleName + '/'\n ); }\n )\n }\n}\n\n/**\n * @param {import('@vue/devtools-api').CustomInspectorNode[]} result\n * @param {*} module\n * @param {string} filter\n * @param {string} path\n */\nfunction flattenStoreForInspectorTree (result, module, filter, path) {\n if (path.includes(filter)) {\n result.push({\n id: path || 'root',\n label: path.endsWith('/') ? path.slice(0, path.length - 1) : path || 'Root',\n tags: module.namespaced ? [TAG_NAMESPACED] : []\n });\n }\n Object.keys(module._children).forEach(function (moduleName) {\n flattenStoreForInspectorTree(result, module._children[moduleName], filter, path + moduleName + '/');\n });\n}\n\n/**\n * @param {*} module\n * @return {import('@vue/devtools-api').CustomInspectorState}\n */\nfunction formatStoreForInspectorState (module, getters, path) {\n getters = path === 'root' ? getters : getters[path];\n var gettersKeys = Object.keys(getters);\n var storeState = {\n state: Object.keys(module.state).map(function (key) { return ({\n key: key,\n editable: true,\n value: module.state[key]\n }); })\n };\n\n if (gettersKeys.length) {\n var tree = transformPathsToObjectTree(getters);\n storeState.getters = Object.keys(tree).map(function (key) { return ({\n key: key.endsWith('/') ? extractNameFromPath(key) : key,\n editable: false,\n value: canThrow(function () { return tree[key]; })\n }); });\n }\n\n return storeState\n}\n\nfunction transformPathsToObjectTree (getters) {\n var result = {};\n Object.keys(getters).forEach(function (key) {\n var path = key.split('/');\n if (path.length > 1) {\n var target = result;\n var leafKey = path.pop();\n path.forEach(function (p) {\n if (!target[p]) {\n target[p] = {\n _custom: {\n value: {},\n display: p,\n tooltip: 'Module',\n abstract: true\n }\n };\n }\n target = target[p]._custom.value;\n });\n target[leafKey] = canThrow(function () { return getters[key]; });\n } else {\n result[key] = canThrow(function () { return getters[key]; });\n }\n });\n return result\n}\n\nfunction getStoreModule (moduleMap, path) {\n var names = path.split('/').filter(function (n) { return n; });\n return names.reduce(\n function (module, moduleName, i) {\n var child = module[moduleName];\n if (!child) {\n throw new Error((\"Missing module \\\"\" + moduleName + \"\\\" for path \\\"\" + path + \"\\\".\"))\n }\n return i === names.length - 1 ? child : child._children\n },\n path === 'root' ? moduleMap : moduleMap.root._children\n )\n}\n\nfunction canThrow (cb) {\n try {\n return cb()\n } catch (e) {\n return e\n }\n}\n\n// Base data struct for store's module, package with some attribute and method\nvar Module = function Module (rawModule, runtime) {\n this.runtime = runtime;\n // Store some children item\n this._children = Object.create(null);\n // Store the origin module object which passed by programmer\n this._rawModule = rawModule;\n var rawState = rawModule.state;\n\n // Store the origin module's state\n this.state = (typeof rawState === 'function' ? rawState() : rawState) || {};\n};\n\nvar prototypeAccessors$1 = { namespaced: { configurable: true } };\n\nprototypeAccessors$1.namespaced.get = function () {\n return !!this._rawModule.namespaced\n};\n\nModule.prototype.addChild = function addChild (key, module) {\n this._children[key] = module;\n};\n\nModule.prototype.removeChild = function removeChild (key) {\n delete this._children[key];\n};\n\nModule.prototype.getChild = function getChild (key) {\n return this._children[key]\n};\n\nModule.prototype.hasChild = function hasChild (key) {\n return key in this._children\n};\n\nModule.prototype.update = function update (rawModule) {\n this._rawModule.namespaced = rawModule.namespaced;\n if (rawModule.actions) {\n this._rawModule.actions = rawModule.actions;\n }\n if (rawModule.mutations) {\n this._rawModule.mutations = rawModule.mutations;\n }\n if (rawModule.getters) {\n this._rawModule.getters = rawModule.getters;\n }\n};\n\nModule.prototype.forEachChild = function forEachChild (fn) {\n forEachValue(this._children, fn);\n};\n\nModule.prototype.forEachGetter = function forEachGetter (fn) {\n if (this._rawModule.getters) {\n forEachValue(this._rawModule.getters, fn);\n }\n};\n\nModule.prototype.forEachAction = function forEachAction (fn) {\n if (this._rawModule.actions) {\n forEachValue(this._rawModule.actions, fn);\n }\n};\n\nModule.prototype.forEachMutation = function forEachMutation (fn) {\n if (this._rawModule.mutations) {\n forEachValue(this._rawModule.mutations, fn);\n }\n};\n\nObject.defineProperties( Module.prototype, prototypeAccessors$1 );\n\nvar ModuleCollection = function ModuleCollection (rawRootModule) {\n // register root module (Vuex.Store options)\n this.register([], rawRootModule, false);\n};\n\nModuleCollection.prototype.get = function get (path) {\n return path.reduce(function (module, key) {\n return module.getChild(key)\n }, this.root)\n};\n\nModuleCollection.prototype.getNamespace = function getNamespace (path) {\n var module = this.root;\n return path.reduce(function (namespace, key) {\n module = module.getChild(key);\n return namespace + (module.namespaced ? key + '/' : '')\n }, '')\n};\n\nModuleCollection.prototype.update = function update$1 (rawRootModule) {\n update([], this.root, rawRootModule);\n};\n\nModuleCollection.prototype.register = function register (path, rawModule, runtime) {\n var this$1$1 = this;\n if ( runtime === void 0 ) runtime = true;\n\n {\n assertRawModule(path, rawModule);\n }\n\n var newModule = new Module(rawModule, runtime);\n if (path.length === 0) {\n this.root = newModule;\n } else {\n var parent = this.get(path.slice(0, -1));\n parent.addChild(path[path.length - 1], newModule);\n }\n\n // register nested modules\n if (rawModule.modules) {\n forEachValue(rawModule.modules, function (rawChildModule, key) {\n this$1$1.register(path.concat(key), rawChildModule, runtime);\n });\n }\n};\n\nModuleCollection.prototype.unregister = function unregister (path) {\n var parent = this.get(path.slice(0, -1));\n var key = path[path.length - 1];\n var child = parent.getChild(key);\n\n if (!child) {\n {\n console.warn(\n \"[vuex] trying to unregister module '\" + key + \"', which is \" +\n \"not registered\"\n );\n }\n return\n }\n\n if (!child.runtime) {\n return\n }\n\n parent.removeChild(key);\n};\n\nModuleCollection.prototype.isRegistered = function isRegistered (path) {\n var parent = this.get(path.slice(0, -1));\n var key = path[path.length - 1];\n\n if (parent) {\n return parent.hasChild(key)\n }\n\n return false\n};\n\nfunction update (path, targetModule, newModule) {\n {\n assertRawModule(path, newModule);\n }\n\n // update target module\n targetModule.update(newModule);\n\n // update nested modules\n if (newModule.modules) {\n for (var key in newModule.modules) {\n if (!targetModule.getChild(key)) {\n {\n console.warn(\n \"[vuex] trying to add a new module '\" + key + \"' on hot reloading, \" +\n 'manual reload is needed'\n );\n }\n return\n }\n update(\n path.concat(key),\n targetModule.getChild(key),\n newModule.modules[key]\n );\n }\n }\n}\n\nvar functionAssert = {\n assert: function (value) { return typeof value === 'function'; },\n expected: 'function'\n};\n\nvar objectAssert = {\n assert: function (value) { return typeof value === 'function' ||\n (typeof value === 'object' && typeof value.handler === 'function'); },\n expected: 'function or object with \"handler\" function'\n};\n\nvar assertTypes = {\n getters: functionAssert,\n mutations: functionAssert,\n actions: objectAssert\n};\n\nfunction assertRawModule (path, rawModule) {\n Object.keys(assertTypes).forEach(function (key) {\n if (!rawModule[key]) { return }\n\n var assertOptions = assertTypes[key];\n\n forEachValue(rawModule[key], function (value, type) {\n assert(\n assertOptions.assert(value),\n makeAssertionMessage(path, key, type, value, assertOptions.expected)\n );\n });\n });\n}\n\nfunction makeAssertionMessage (path, key, type, value, expected) {\n var buf = key + \" should be \" + expected + \" but \\\"\" + key + \".\" + type + \"\\\"\";\n if (path.length > 0) {\n buf += \" in module \\\"\" + (path.join('.')) + \"\\\"\";\n }\n buf += \" is \" + (JSON.stringify(value)) + \".\";\n return buf\n}\n\nfunction createStore (options) {\n return new Store(options)\n}\n\nvar Store = function Store (options) {\n var this$1$1 = this;\n if ( options === void 0 ) options = {};\n\n {\n assert(typeof Promise !== 'undefined', \"vuex requires a Promise polyfill in this browser.\");\n assert(this instanceof Store, \"store must be called with the new operator.\");\n }\n\n var plugins = options.plugins; if ( plugins === void 0 ) plugins = [];\n var strict = options.strict; if ( strict === void 0 ) strict = false;\n var devtools = options.devtools;\n\n // store internal state\n this._committing = false;\n this._actions = Object.create(null);\n this._actionSubscribers = [];\n this._mutations = Object.create(null);\n this._wrappedGetters = Object.create(null);\n this._modules = new ModuleCollection(options);\n this._modulesNamespaceMap = Object.create(null);\n this._subscribers = [];\n this._makeLocalGettersCache = Object.create(null);\n\n // EffectScope instance. when registering new getters, we wrap them inside\n // EffectScope so that getters (computed) would not be destroyed on\n // component unmount.\n this._scope = null;\n\n this._devtools = devtools;\n\n // bind commit and dispatch to self\n var store = this;\n var ref = this;\n var dispatch = ref.dispatch;\n var commit = ref.commit;\n this.dispatch = function boundDispatch (type, payload) {\n return dispatch.call(store, type, payload)\n };\n this.commit = function boundCommit (type, payload, options) {\n return commit.call(store, type, payload, options)\n };\n\n // strict mode\n this.strict = strict;\n\n var state = this._modules.root.state;\n\n // init root module.\n // this also recursively registers all sub-modules\n // and collects all module getters inside this._wrappedGetters\n installModule(this, state, [], this._modules.root);\n\n // initialize the store state, which is responsible for the reactivity\n // (also registers _wrappedGetters as computed properties)\n resetStoreState(this, state);\n\n // apply plugins\n plugins.forEach(function (plugin) { return plugin(this$1$1); });\n};\n\nvar prototypeAccessors = { state: { configurable: true } };\n\nStore.prototype.install = function install (app, injectKey) {\n app.provide(injectKey || storeKey, this);\n app.config.globalProperties.$store = this;\n\n var useDevtools = this._devtools !== undefined\n ? this._devtools\n : true ;\n\n if (useDevtools) {\n addDevtools(app, this);\n }\n};\n\nprototypeAccessors.state.get = function () {\n return this._state.data\n};\n\nprototypeAccessors.state.set = function (v) {\n {\n assert(false, \"use store.replaceState() to explicit replace store state.\");\n }\n};\n\nStore.prototype.commit = function commit (_type, _payload, _options) {\n var this$1$1 = this;\n\n // check object-style commit\n var ref = unifyObjectStyle(_type, _payload, _options);\n var type = ref.type;\n var payload = ref.payload;\n var options = ref.options;\n\n var mutation = { type: type, payload: payload };\n var entry = this._mutations[type];\n if (!entry) {\n {\n console.error((\"[vuex] unknown mutation type: \" + type));\n }\n return\n }\n this._withCommit(function () {\n entry.forEach(function commitIterator (handler) {\n handler(payload);\n });\n });\n\n this._subscribers\n .slice() // shallow copy to prevent iterator invalidation if subscriber synchronously calls unsubscribe\n .forEach(function (sub) { return sub(mutation, this$1$1.state); });\n\n if (\n options && options.silent\n ) {\n console.warn(\n \"[vuex] mutation type: \" + type + \". Silent option has been removed. \" +\n 'Use the filter functionality in the vue-devtools'\n );\n }\n};\n\nStore.prototype.dispatch = function dispatch (_type, _payload) {\n var this$1$1 = this;\n\n // check object-style dispatch\n var ref = unifyObjectStyle(_type, _payload);\n var type = ref.type;\n var payload = ref.payload;\n\n var action = { type: type, payload: payload };\n var entry = this._actions[type];\n if (!entry) {\n {\n console.error((\"[vuex] unknown action type: \" + type));\n }\n return\n }\n\n try {\n this._actionSubscribers\n .slice() // shallow copy to prevent iterator invalidation if subscriber synchronously calls unsubscribe\n .filter(function (sub) { return sub.before; })\n .forEach(function (sub) { return sub.before(action, this$1$1.state); });\n } catch (e) {\n {\n console.warn(\"[vuex] error in before action subscribers: \");\n console.error(e);\n }\n }\n\n var result = entry.length > 1\n ? Promise.all(entry.map(function (handler) { return handler(payload); }))\n : entry[0](payload);\n\n return new Promise(function (resolve, reject) {\n result.then(function (res) {\n try {\n this$1$1._actionSubscribers\n .filter(function (sub) { return sub.after; })\n .forEach(function (sub) { return sub.after(action, this$1$1.state); });\n } catch (e) {\n {\n console.warn(\"[vuex] error in after action subscribers: \");\n console.error(e);\n }\n }\n resolve(res);\n }, function (error) {\n try {\n this$1$1._actionSubscribers\n .filter(function (sub) { return sub.error; })\n .forEach(function (sub) { return sub.error(action, this$1$1.state, error); });\n } catch (e) {\n {\n console.warn(\"[vuex] error in error action subscribers: \");\n console.error(e);\n }\n }\n reject(error);\n });\n })\n};\n\nStore.prototype.subscribe = function subscribe (fn, options) {\n return genericSubscribe(fn, this._subscribers, options)\n};\n\nStore.prototype.subscribeAction = function subscribeAction (fn, options) {\n var subs = typeof fn === 'function' ? { before: fn } : fn;\n return genericSubscribe(subs, this._actionSubscribers, options)\n};\n\nStore.prototype.watch = function watch$1 (getter, cb, options) {\n var this$1$1 = this;\n\n {\n assert(typeof getter === 'function', \"store.watch only accepts a function.\");\n }\n return watch(function () { return getter(this$1$1.state, this$1$1.getters); }, cb, Object.assign({}, options))\n};\n\nStore.prototype.replaceState = function replaceState (state) {\n var this$1$1 = this;\n\n this._withCommit(function () {\n this$1$1._state.data = state;\n });\n};\n\nStore.prototype.registerModule = function registerModule (path, rawModule, options) {\n if ( options === void 0 ) options = {};\n\n if (typeof path === 'string') { path = [path]; }\n\n {\n assert(Array.isArray(path), \"module path must be a string or an Array.\");\n assert(path.length > 0, 'cannot register the root module by using registerModule.');\n }\n\n this._modules.register(path, rawModule);\n installModule(this, this.state, path, this._modules.get(path), options.preserveState);\n // reset store to update getters...\n resetStoreState(this, this.state);\n};\n\nStore.prototype.unregisterModule = function unregisterModule (path) {\n var this$1$1 = this;\n\n if (typeof path === 'string') { path = [path]; }\n\n {\n assert(Array.isArray(path), \"module path must be a string or an Array.\");\n }\n\n this._modules.unregister(path);\n this._withCommit(function () {\n var parentState = getNestedState(this$1$1.state, path.slice(0, -1));\n delete parentState[path[path.length - 1]];\n });\n resetStore(this);\n};\n\nStore.prototype.hasModule = function hasModule (path) {\n if (typeof path === 'string') { path = [path]; }\n\n {\n assert(Array.isArray(path), \"module path must be a string or an Array.\");\n }\n\n return this._modules.isRegistered(path)\n};\n\nStore.prototype.hotUpdate = function hotUpdate (newOptions) {\n this._modules.update(newOptions);\n resetStore(this, true);\n};\n\nStore.prototype._withCommit = function _withCommit (fn) {\n var committing = this._committing;\n this._committing = true;\n fn();\n this._committing = committing;\n};\n\nObject.defineProperties( Store.prototype, prototypeAccessors );\n\n/**\n * Reduce the code which written in Vue.js for getting the state.\n * @param {String} [namespace] - Module's namespace\n * @param {Object|Array} states # Object's item can be a function which accept state and getters for param, you can do something for state and getters in it.\n * @param {Object}\n */\nvar mapState = normalizeNamespace(function (namespace, states) {\n var res = {};\n if (!isValidMap(states)) {\n console.error('[vuex] mapState: mapper parameter must be either an Array or an Object');\n }\n normalizeMap(states).forEach(function (ref) {\n var key = ref.key;\n var val = ref.val;\n\n res[key] = function mappedState () {\n var state = this.$store.state;\n var getters = this.$store.getters;\n if (namespace) {\n var module = getModuleByNamespace(this.$store, 'mapState', namespace);\n if (!module) {\n return\n }\n state = module.context.state;\n getters = module.context.getters;\n }\n return typeof val === 'function'\n ? val.call(this, state, getters)\n : state[val]\n };\n // mark vuex getter for devtools\n res[key].vuex = true;\n });\n return res\n});\n\n/**\n * Reduce the code which written in Vue.js for committing the mutation\n * @param {String} [namespace] - Module's namespace\n * @param {Object|Array} mutations # Object's item can be a function which accept `commit` function as the first param, it can accept another params. You can commit mutation and do any other things in this function. specially, You need to pass anthor params from the mapped function.\n * @return {Object}\n */\nvar mapMutations = normalizeNamespace(function (namespace, mutations) {\n var res = {};\n if (!isValidMap(mutations)) {\n console.error('[vuex] mapMutations: mapper parameter must be either an Array or an Object');\n }\n normalizeMap(mutations).forEach(function (ref) {\n var key = ref.key;\n var val = ref.val;\n\n res[key] = function mappedMutation () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n // Get the commit method from store\n var commit = this.$store.commit;\n if (namespace) {\n var module = getModuleByNamespace(this.$store, 'mapMutations', namespace);\n if (!module) {\n return\n }\n commit = module.context.commit;\n }\n return typeof val === 'function'\n ? val.apply(this, [commit].concat(args))\n : commit.apply(this.$store, [val].concat(args))\n };\n });\n return res\n});\n\n/**\n * Reduce the code which written in Vue.js for getting the getters\n * @param {String} [namespace] - Module's namespace\n * @param {Object|Array} getters\n * @return {Object}\n */\nvar mapGetters = normalizeNamespace(function (namespace, getters) {\n var res = {};\n if (!isValidMap(getters)) {\n console.error('[vuex] mapGetters: mapper parameter must be either an Array or an Object');\n }\n normalizeMap(getters).forEach(function (ref) {\n var key = ref.key;\n var val = ref.val;\n\n // The namespace has been mutated by normalizeNamespace\n val = namespace + val;\n res[key] = function mappedGetter () {\n if (namespace && !getModuleByNamespace(this.$store, 'mapGetters', namespace)) {\n return\n }\n if (!(val in this.$store.getters)) {\n console.error((\"[vuex] unknown getter: \" + val));\n return\n }\n return this.$store.getters[val]\n };\n // mark vuex getter for devtools\n res[key].vuex = true;\n });\n return res\n});\n\n/**\n * Reduce the code which written in Vue.js for dispatch the action\n * @param {String} [namespace] - Module's namespace\n * @param {Object|Array} actions # Object's item can be a function which accept `dispatch` function as the first param, it can accept anthor params. You can dispatch action and do any other things in this function. specially, You need to pass anthor params from the mapped function.\n * @return {Object}\n */\nvar mapActions = normalizeNamespace(function (namespace, actions) {\n var res = {};\n if (!isValidMap(actions)) {\n console.error('[vuex] mapActions: mapper parameter must be either an Array or an Object');\n }\n normalizeMap(actions).forEach(function (ref) {\n var key = ref.key;\n var val = ref.val;\n\n res[key] = function mappedAction () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n // get dispatch function from store\n var dispatch = this.$store.dispatch;\n if (namespace) {\n var module = getModuleByNamespace(this.$store, 'mapActions', namespace);\n if (!module) {\n return\n }\n dispatch = module.context.dispatch;\n }\n return typeof val === 'function'\n ? val.apply(this, [dispatch].concat(args))\n : dispatch.apply(this.$store, [val].concat(args))\n };\n });\n return res\n});\n\n/**\n * Rebinding namespace param for mapXXX function in special scoped, and return them by simple object\n * @param {String} namespace\n * @return {Object}\n */\nvar createNamespacedHelpers = function (namespace) { return ({\n mapState: mapState.bind(null, namespace),\n mapGetters: mapGetters.bind(null, namespace),\n mapMutations: mapMutations.bind(null, namespace),\n mapActions: mapActions.bind(null, namespace)\n}); };\n\n/**\n * Normalize the map\n * normalizeMap([1, 2, 3]) => [ { key: 1, val: 1 }, { key: 2, val: 2 }, { key: 3, val: 3 } ]\n * normalizeMap({a: 1, b: 2, c: 3}) => [ { key: 'a', val: 1 }, { key: 'b', val: 2 }, { key: 'c', val: 3 } ]\n * @param {Array|Object} map\n * @return {Object}\n */\nfunction normalizeMap (map) {\n if (!isValidMap(map)) {\n return []\n }\n return Array.isArray(map)\n ? map.map(function (key) { return ({ key: key, val: key }); })\n : Object.keys(map).map(function (key) { return ({ key: key, val: map[key] }); })\n}\n\n/**\n * Validate whether given map is valid or not\n * @param {*} map\n * @return {Boolean}\n */\nfunction isValidMap (map) {\n return Array.isArray(map) || isObject(map)\n}\n\n/**\n * Return a function expect two param contains namespace and map. it will normalize the namespace and then the param's function will handle the new namespace and the map.\n * @param {Function} fn\n * @return {Function}\n */\nfunction normalizeNamespace (fn) {\n return function (namespace, map) {\n if (typeof namespace !== 'string') {\n map = namespace;\n namespace = '';\n } else if (namespace.charAt(namespace.length - 1) !== '/') {\n namespace += '/';\n }\n return fn(namespace, map)\n }\n}\n\n/**\n * Search a special module from store by namespace. if module not exist, print error message.\n * @param {Object} store\n * @param {String} helper\n * @param {String} namespace\n * @return {Object}\n */\nfunction getModuleByNamespace (store, helper, namespace) {\n var module = store._modulesNamespaceMap[namespace];\n if (!module) {\n console.error((\"[vuex] module namespace not found in \" + helper + \"(): \" + namespace));\n }\n return module\n}\n\n// Credits: borrowed code from fcomb/redux-logger\n\nfunction createLogger (ref) {\n if ( ref === void 0 ) ref = {};\n var collapsed = ref.collapsed; if ( collapsed === void 0 ) collapsed = true;\n var filter = ref.filter; if ( filter === void 0 ) filter = function (mutation, stateBefore, stateAfter) { return true; };\n var transformer = ref.transformer; if ( transformer === void 0 ) transformer = function (state) { return state; };\n var mutationTransformer = ref.mutationTransformer; if ( mutationTransformer === void 0 ) mutationTransformer = function (mut) { return mut; };\n var actionFilter = ref.actionFilter; if ( actionFilter === void 0 ) actionFilter = function (action, state) { return true; };\n var actionTransformer = ref.actionTransformer; if ( actionTransformer === void 0 ) actionTransformer = function (act) { return act; };\n var logMutations = ref.logMutations; if ( logMutations === void 0 ) logMutations = true;\n var logActions = ref.logActions; if ( logActions === void 0 ) logActions = true;\n var logger = ref.logger; if ( logger === void 0 ) logger = console;\n\n return function (store) {\n var prevState = deepCopy(store.state);\n\n if (typeof logger === 'undefined') {\n return\n }\n\n if (logMutations) {\n store.subscribe(function (mutation, state) {\n var nextState = deepCopy(state);\n\n if (filter(mutation, prevState, nextState)) {\n var formattedTime = getFormattedTime();\n var formattedMutation = mutationTransformer(mutation);\n var message = \"mutation \" + (mutation.type) + formattedTime;\n\n startMessage(logger, message, collapsed);\n logger.log('%c prev state', 'color: #9E9E9E; font-weight: bold', transformer(prevState));\n logger.log('%c mutation', 'color: #03A9F4; font-weight: bold', formattedMutation);\n logger.log('%c next state', 'color: #4CAF50; font-weight: bold', transformer(nextState));\n endMessage(logger);\n }\n\n prevState = nextState;\n });\n }\n\n if (logActions) {\n store.subscribeAction(function (action, state) {\n if (actionFilter(action, state)) {\n var formattedTime = getFormattedTime();\n var formattedAction = actionTransformer(action);\n var message = \"action \" + (action.type) + formattedTime;\n\n startMessage(logger, message, collapsed);\n logger.log('%c action', 'color: #03A9F4; font-weight: bold', formattedAction);\n endMessage(logger);\n }\n });\n }\n }\n}\n\nfunction startMessage (logger, message, collapsed) {\n var startMessage = collapsed\n ? logger.groupCollapsed\n : logger.group;\n\n // render\n try {\n startMessage.call(logger, message);\n } catch (e) {\n logger.log(message);\n }\n}\n\nfunction endMessage (logger) {\n try {\n logger.groupEnd();\n } catch (e) {\n logger.log('—— log end ——');\n }\n}\n\nfunction getFormattedTime () {\n var time = new Date();\n return (\" @ \" + (pad(time.getHours(), 2)) + \":\" + (pad(time.getMinutes(), 2)) + \":\" + (pad(time.getSeconds(), 2)) + \".\" + (pad(time.getMilliseconds(), 3)))\n}\n\nfunction repeat (str, times) {\n return (new Array(times + 1)).join(str)\n}\n\nfunction pad (num, maxLength) {\n return repeat('0', maxLength - num.toString().length) + num\n}\n\nvar index = {\n version: '4.1.0',\n Store: Store,\n storeKey: storeKey,\n createStore: createStore,\n useStore: useStore,\n mapState: mapState,\n mapMutations: mapMutations,\n mapGetters: mapGetters,\n mapActions: mapActions,\n createNamespacedHelpers: createNamespacedHelpers,\n createLogger: createLogger\n};\n\nexport default index;\nexport { Store, createLogger, createNamespacedHelpers, createStore, mapActions, mapGetters, mapMutations, mapState, storeKey, useStore };\n","'use strict';\nvar store = require('../internals/shared-store');\n\nmodule.exports = function (key, value) {\n return store[key] || (store[key] = value || {});\n};\n","'use strict';\nvar getBuiltIn = require('../internals/get-built-in');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar getOwnPropertyNamesModule = require('../internals/object-get-own-property-names');\nvar getOwnPropertySymbolsModule = require('../internals/object-get-own-property-symbols');\nvar anObject = require('../internals/an-object');\n\nvar concat = uncurryThis([].concat);\n\n// all object keys, includes non-enumerable and symbols\nmodule.exports = getBuiltIn('Reflect', 'ownKeys') || function ownKeys(it) {\n var keys = getOwnPropertyNamesModule.f(anObject(it));\n var getOwnPropertySymbols = getOwnPropertySymbolsModule.f;\n return getOwnPropertySymbols ? concat(keys, getOwnPropertySymbols(it)) : keys;\n};\n","'use strict';\nvar classof = require('../internals/classof');\n\nvar $String = String;\n\nmodule.exports = function (argument) {\n if (classof(argument) === 'Symbol') throw new TypeError('Cannot convert a Symbol value to a string');\n return $String(argument);\n};\n","import { client } from './plugins/Platform.js'\nimport { noop } from './utils/event.js'\n\nconst getTrue = () => true\n\nfunction filterInvalidPath (path) {\n return typeof path === 'string'\n && path !== ''\n && path !== '/'\n && path !== '#/'\n}\n\nfunction normalizeExitPath (path) {\n path.startsWith('#') === true && (path = path.substr(1))\n path.startsWith('/') === false && (path = '/' + path)\n path.endsWith('/') === true && (path = path.substr(0, path.length - 1))\n return '#' + path\n}\n\nfunction getShouldExitFn (cfg) {\n if (cfg.backButtonExit === false) {\n return () => false\n }\n\n if (cfg.backButtonExit === '*') {\n return getTrue\n }\n\n // Add default root path\n const exitPaths = [ '#/' ]\n\n // Add custom exit paths\n Array.isArray(cfg.backButtonExit) === true && exitPaths.push(\n ...cfg.backButtonExit.filter(filterInvalidPath).map(normalizeExitPath)\n )\n\n return () => exitPaths.includes(window.location.hash)\n}\n\nexport default {\n __history: [],\n add: noop,\n remove: noop,\n\n install ({ $q }) {\n if (__QUASAR_SSR_SERVER__ || this.__installed === true) { return }\n\n const { cordova, capacitor } = client.is\n\n if (cordova !== true && capacitor !== true) {\n return\n }\n\n const qConf = $q.config[ cordova === true ? 'cordova' : 'capacitor' ]\n\n if (qConf !== void 0 && qConf.backButton === false) {\n return\n }\n\n // if the '@capacitor/app' plugin is not installed\n // then we got nothing to do\n if (\n // if we're on Capacitor mode\n capacitor === true\n // and it's also not in Capacitor's main instance\n && (window.Capacitor === void 0 || window.Capacitor.Plugins.App === void 0)\n ) {\n return\n }\n\n this.add = entry => {\n if (entry.condition === void 0) {\n entry.condition = getTrue\n }\n this.__history.push(entry)\n }\n\n this.remove = entry => {\n const index = this.__history.indexOf(entry)\n if (index >= 0) {\n this.__history.splice(index, 1)\n }\n }\n\n const shouldExit = getShouldExitFn(\n Object.assign(\n { backButtonExit: true },\n qConf\n )\n )\n\n const backHandler = () => {\n if (this.__history.length) {\n const entry = this.__history[ this.__history.length - 1 ]\n\n if (entry.condition() === true) {\n this.__history.pop()\n entry.handler()\n }\n }\n else if (shouldExit() === true) {\n navigator.app.exitApp()\n }\n else {\n window.history.back()\n }\n }\n\n if (cordova === true) {\n document.addEventListener('deviceready', () => {\n document.addEventListener('backbutton', backHandler, false)\n })\n }\n else {\n window.Capacitor.Plugins.App.addListener('backButton', backHandler)\n }\n }\n}\n","'use strict';\nvar trunc = require('../internals/math-trunc');\n\n// `ToIntegerOrInfinity` abstract operation\n// https://tc39.es/ecma262/#sec-tointegerorinfinity\nmodule.exports = function (argument) {\n var number = +argument;\n // eslint-disable-next-line no-self-compare -- NaN check\n return number !== number || number === 0 ? 0 : trunc(number);\n};\n","'use strict';\nvar isCallable = require('../internals/is-callable');\nvar tryToString = require('../internals/try-to-string');\n\nvar $TypeError = TypeError;\n\n// `Assert: IsCallable(argument) is true`\nmodule.exports = function (argument) {\n if (isCallable(argument)) return argument;\n throw new $TypeError(tryToString(argument) + ' is not a function');\n};\n","'use strict';\nmodule.exports = function (bitmap, value) {\n return {\n enumerable: !(bitmap & 1),\n configurable: !(bitmap & 2),\n writable: !(bitmap & 4),\n value: value\n };\n};\n","module.exports = {\n \"version\": \"0.24.0\"\n};","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar hasOwn = require('../internals/has-own-property');\n\nvar FunctionPrototype = Function.prototype;\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar getDescriptor = DESCRIPTORS && Object.getOwnPropertyDescriptor;\n\nvar EXISTS = hasOwn(FunctionPrototype, 'name');\n// additional protection from minified / mangled / dropped function names\nvar PROPER = EXISTS && (function something() { /* empty */ }).name === 'something';\nvar CONFIGURABLE = EXISTS && (!DESCRIPTORS || (DESCRIPTORS && getDescriptor(FunctionPrototype, 'name').configurable));\n\nmodule.exports = {\n EXISTS: EXISTS,\n PROPER: PROPER,\n CONFIGURABLE: CONFIGURABLE\n};\n","'use strict';\n\n/**\n * Determines whether the payload is an error thrown by Axios\n *\n * @param {*} payload The value to test\n * @returns {boolean} True if the payload is an error thrown by Axios, otherwise false\n */\nmodule.exports = function isAxiosError(payload) {\n return (typeof payload === 'object') && (payload.isAxiosError === true);\n};\n","'use strict';\n\nvar firebase = require('@firebase/app');\nvar component = require('@firebase/component');\nvar tslib = require('tslib');\nvar util = require('@firebase/util');\nvar logger$1 = require('@firebase/logger');\n\nfunction _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }\n\nvar firebase__default = /*#__PURE__*/_interopDefaultLegacy(firebase);\n\n/**\r\n * @license\r\n * Copyright 2020 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nvar _a;\r\nvar ERRORS = (_a = {},\r\n _a[\"already-activated\" /* ALREADY_ACTIVATED */] = 'You are trying to activate AppCheck for FirebaseApp {$appName}, ' +\r\n 'while it is already activated. ' +\r\n 'AppCheck can only be activated once.',\r\n _a[\"use-before-activation\" /* USE_BEFORE_ACTIVATION */] = 'AppCheck is being used before activate() is called for FirebaseApp {$appName}. ' +\r\n 'Please make sure you call activate() before instantiating other Firebase services.',\r\n _a[\"fetch-network-error\" /* FETCH_NETWORK_ERROR */] = 'Fetch failed to connect to a network. Check Internet connection. ' +\r\n 'Original error: {$originalErrorMessage}.',\r\n _a[\"fetch-parse-error\" /* FETCH_PARSE_ERROR */] = 'Fetch client could not parse response.' +\r\n ' Original error: {$originalErrorMessage}.',\r\n _a[\"fetch-status-error\" /* FETCH_STATUS_ERROR */] = 'Fetch server returned an HTTP error status. HTTP status: {$httpStatus}.',\r\n _a[\"storage-open\" /* STORAGE_OPEN */] = 'Error thrown when opening storage. Original error: {$originalErrorMessage}.',\r\n _a[\"storage-get\" /* STORAGE_GET */] = 'Error thrown when reading from storage. Original error: {$originalErrorMessage}.',\r\n _a[\"storage-set\" /* STORAGE_WRITE */] = 'Error thrown when writing to storage. Original error: {$originalErrorMessage}.',\r\n _a[\"recaptcha-error\" /* RECAPTCHA_ERROR */] = 'ReCAPTCHA error.',\r\n _a);\r\nvar ERROR_FACTORY = new util.ErrorFactory('appCheck', 'AppCheck', ERRORS);\n\n/**\r\n * @license\r\n * Copyright 2020 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nvar APP_CHECK_STATES = new Map();\r\nvar DEFAULT_STATE = {\r\n activated: false,\r\n tokenObservers: []\r\n};\r\nvar DEBUG_STATE = {\r\n enabled: false\r\n};\r\nfunction getState(app) {\r\n return APP_CHECK_STATES.get(app) || DEFAULT_STATE;\r\n}\r\nfunction setState(app, state) {\r\n APP_CHECK_STATES.set(app, state);\r\n}\r\nfunction getDebugState() {\r\n return DEBUG_STATE;\r\n}\n\n/**\r\n * @license\r\n * Copyright 2020 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nvar BASE_ENDPOINT = 'https://content-firebaseappcheck.googleapis.com/v1beta';\r\nvar EXCHANGE_RECAPTCHA_TOKEN_METHOD = 'exchangeRecaptchaToken';\r\nvar EXCHANGE_DEBUG_TOKEN_METHOD = 'exchangeDebugToken';\r\nvar TOKEN_REFRESH_TIME = {\r\n /**\r\n * The offset time before token natural expiration to run the refresh.\r\n * This is currently 5 minutes.\r\n */\r\n OFFSET_DURATION: 5 * 60 * 1000,\r\n /**\r\n * This is the first retrial wait after an error. This is currently\r\n * 30 seconds.\r\n */\r\n RETRIAL_MIN_WAIT: 30 * 1000,\r\n /**\r\n * This is the maximum retrial wait, currently 16 minutes.\r\n */\r\n RETRIAL_MAX_WAIT: 16 * 60 * 1000\r\n};\n\n/**\r\n * @license\r\n * Copyright 2020 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * Port from auth proactiverefresh.js\r\n *\r\n */\r\n// TODO: move it to @firebase/util?\r\n// TODO: allow to config whether refresh should happen in the background\r\nvar Refresher = /** @class */ (function () {\r\n function Refresher(operation, retryPolicy, getWaitDuration, lowerBound, upperBound) {\r\n this.operation = operation;\r\n this.retryPolicy = retryPolicy;\r\n this.getWaitDuration = getWaitDuration;\r\n this.lowerBound = lowerBound;\r\n this.upperBound = upperBound;\r\n this.pending = null;\r\n this.nextErrorWaitInterval = lowerBound;\r\n if (lowerBound > upperBound) {\r\n throw new Error('Proactive refresh lower bound greater than upper bound!');\r\n }\r\n }\r\n Refresher.prototype.start = function () {\r\n this.nextErrorWaitInterval = this.lowerBound;\r\n this.process(true).catch(function () {\r\n /* we don't care about the result */\r\n });\r\n };\r\n Refresher.prototype.stop = function () {\r\n if (this.pending) {\r\n this.pending.reject('cancelled');\r\n this.pending = null;\r\n }\r\n };\r\n Refresher.prototype.isRunning = function () {\r\n return !!this.pending;\r\n };\r\n Refresher.prototype.process = function (hasSucceeded) {\r\n return tslib.__awaiter(this, void 0, void 0, function () {\r\n var error_1;\r\n return tslib.__generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n this.stop();\r\n _a.label = 1;\r\n case 1:\r\n _a.trys.push([1, 6, , 7]);\r\n this.pending = new util.Deferred();\r\n return [4 /*yield*/, sleep(this.getNextRun(hasSucceeded))];\r\n case 2:\r\n _a.sent();\r\n // Why do we resolve a promise, then immediate wait for it?\r\n // We do it to make the promise chain cancellable.\r\n // We can call stop() which rejects the promise before the following line execute, which makes\r\n // the code jump to the catch block.\r\n // TODO: unit test this\r\n this.pending.resolve();\r\n return [4 /*yield*/, this.pending.promise];\r\n case 3:\r\n _a.sent();\r\n this.pending = new util.Deferred();\r\n return [4 /*yield*/, this.operation()];\r\n case 4:\r\n _a.sent();\r\n this.pending.resolve();\r\n return [4 /*yield*/, this.pending.promise];\r\n case 5:\r\n _a.sent();\r\n this.process(true).catch(function () {\r\n /* we don't care about the result */\r\n });\r\n return [3 /*break*/, 7];\r\n case 6:\r\n error_1 = _a.sent();\r\n if (this.retryPolicy(error_1)) {\r\n this.process(false).catch(function () {\r\n /* we don't care about the result */\r\n });\r\n }\r\n else {\r\n this.stop();\r\n }\r\n return [3 /*break*/, 7];\r\n case 7: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n Refresher.prototype.getNextRun = function (hasSucceeded) {\r\n if (hasSucceeded) {\r\n // If last operation succeeded, reset next error wait interval and return\r\n // the default wait duration.\r\n this.nextErrorWaitInterval = this.lowerBound;\r\n // Return typical wait duration interval after a successful operation.\r\n return this.getWaitDuration();\r\n }\r\n else {\r\n // Get next error wait interval.\r\n var currentErrorWaitInterval = this.nextErrorWaitInterval;\r\n // Double interval for next consecutive error.\r\n this.nextErrorWaitInterval *= 2;\r\n // Make sure next wait interval does not exceed the maximum upper bound.\r\n if (this.nextErrorWaitInterval > this.upperBound) {\r\n this.nextErrorWaitInterval = this.upperBound;\r\n }\r\n return currentErrorWaitInterval;\r\n }\r\n };\r\n return Refresher;\r\n}());\r\nfunction sleep(ms) {\r\n return new Promise(function (resolve) {\r\n setTimeout(resolve, ms);\r\n });\r\n}\n\n/**\r\n * @license\r\n * Copyright 2020 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nfunction getRecaptcha() {\r\n return self.grecaptcha;\r\n}\r\nfunction ensureActivated(app) {\r\n if (!getState(app).activated) {\r\n throw ERROR_FACTORY.create(\"use-before-activation\" /* USE_BEFORE_ACTIVATION */, {\r\n appName: app.name\r\n });\r\n }\r\n}\r\n/**\r\n * Copied from https://stackoverflow.com/a/2117523\r\n */\r\nfunction uuidv4() {\r\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {\r\n var r = (Math.random() * 16) | 0, v = c === 'x' ? r : (r & 0x3) | 0x8;\r\n return v.toString(16);\r\n });\r\n}\r\n/**\r\n * Stringify and base64 encode token error data.\r\n *\r\n * @param tokenError Error data, currently hardcoded.\r\n */\r\nfunction formatDummyToken(tokenErrorData) {\r\n return util.base64.encodeString(JSON.stringify(tokenErrorData), \r\n /* webSafe= */ false);\r\n}\n\n/**\r\n * @license\r\n * Copyright 2020 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nfunction exchangeToken(_a, platformLoggerProvider) {\r\n var url = _a.url, body = _a.body;\r\n return tslib.__awaiter(this, void 0, void 0, function () {\r\n var headers, platformLogger, options, response, originalError_1, responseBody, originalError_2, match, timeToLiveAsNumber, now;\r\n return tslib.__generator(this, function (_b) {\r\n switch (_b.label) {\r\n case 0:\r\n headers = {\r\n 'Content-Type': 'application/json'\r\n };\r\n platformLogger = platformLoggerProvider.getImmediate({\r\n optional: true\r\n });\r\n if (platformLogger) {\r\n headers['X-Firebase-Client'] = platformLogger.getPlatformInfoString();\r\n }\r\n options = {\r\n method: 'POST',\r\n body: JSON.stringify(body),\r\n headers: headers\r\n };\r\n _b.label = 1;\r\n case 1:\r\n _b.trys.push([1, 3, , 4]);\r\n return [4 /*yield*/, fetch(url, options)];\r\n case 2:\r\n response = _b.sent();\r\n return [3 /*break*/, 4];\r\n case 3:\r\n originalError_1 = _b.sent();\r\n throw ERROR_FACTORY.create(\"fetch-network-error\" /* FETCH_NETWORK_ERROR */, {\r\n originalErrorMessage: originalError_1.message\r\n });\r\n case 4:\r\n if (response.status !== 200) {\r\n throw ERROR_FACTORY.create(\"fetch-status-error\" /* FETCH_STATUS_ERROR */, {\r\n httpStatus: response.status\r\n });\r\n }\r\n _b.label = 5;\r\n case 5:\r\n _b.trys.push([5, 7, , 8]);\r\n return [4 /*yield*/, response.json()];\r\n case 6:\r\n // JSON parsing throws SyntaxError if the response body isn't a JSON string.\r\n responseBody = _b.sent();\r\n return [3 /*break*/, 8];\r\n case 7:\r\n originalError_2 = _b.sent();\r\n throw ERROR_FACTORY.create(\"fetch-parse-error\" /* FETCH_PARSE_ERROR */, {\r\n originalErrorMessage: originalError_2.message\r\n });\r\n case 8:\r\n match = responseBody.ttl.match(/^([\\d.]+)(s)$/);\r\n if (!match || !match[2] || isNaN(Number(match[1]))) {\r\n throw ERROR_FACTORY.create(\"fetch-parse-error\" /* FETCH_PARSE_ERROR */, {\r\n originalErrorMessage: \"ttl field (timeToLive) is not in standard Protobuf Duration \" +\r\n (\"format: \" + responseBody.ttl)\r\n });\r\n }\r\n timeToLiveAsNumber = Number(match[1]) * 1000;\r\n now = Date.now();\r\n return [2 /*return*/, {\r\n token: responseBody.attestationToken,\r\n expireTimeMillis: now + timeToLiveAsNumber,\r\n issuedAtTimeMillis: now\r\n }];\r\n }\r\n });\r\n });\r\n}\r\nfunction getExchangeRecaptchaTokenRequest(app, reCAPTCHAToken) {\r\n var _a = app.options, projectId = _a.projectId, appId = _a.appId, apiKey = _a.apiKey;\r\n return {\r\n url: BASE_ENDPOINT + \"/projects/\" + projectId + \"/apps/\" + appId + \":\" + EXCHANGE_RECAPTCHA_TOKEN_METHOD + \"?key=\" + apiKey,\r\n body: {\r\n // eslint-disable-next-line\r\n recaptcha_token: reCAPTCHAToken\r\n }\r\n };\r\n}\r\nfunction getExchangeDebugTokenRequest(app, debugToken) {\r\n var _a = app.options, projectId = _a.projectId, appId = _a.appId, apiKey = _a.apiKey;\r\n return {\r\n url: BASE_ENDPOINT + \"/projects/\" + projectId + \"/apps/\" + appId + \":\" + EXCHANGE_DEBUG_TOKEN_METHOD + \"?key=\" + apiKey,\r\n body: {\r\n // eslint-disable-next-line\r\n debug_token: debugToken\r\n }\r\n };\r\n}\n\n/**\r\n * @license\r\n * Copyright 2020 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nvar DB_NAME = 'firebase-app-check-database';\r\nvar DB_VERSION = 1;\r\nvar STORE_NAME = 'firebase-app-check-store';\r\nvar DEBUG_TOKEN_KEY = 'debug-token';\r\nvar dbPromise = null;\r\nfunction getDBPromise() {\r\n if (dbPromise) {\r\n return dbPromise;\r\n }\r\n dbPromise = new Promise(function (resolve, reject) {\r\n try {\r\n var request = indexedDB.open(DB_NAME, DB_VERSION);\r\n request.onsuccess = function (event) {\r\n resolve(event.target.result);\r\n };\r\n request.onerror = function (event) {\r\n var _a;\r\n reject(ERROR_FACTORY.create(\"storage-open\" /* STORAGE_OPEN */, {\r\n originalErrorMessage: (_a = event.target.error) === null || _a === void 0 ? void 0 : _a.message\r\n }));\r\n };\r\n request.onupgradeneeded = function (event) {\r\n var db = event.target.result;\r\n // We don't use 'break' in this switch statement, the fall-through\r\n // behavior is what we want, because if there are multiple versions between\r\n // the old version and the current version, we want ALL the migrations\r\n // that correspond to those versions to run, not only the last one.\r\n // eslint-disable-next-line default-case\r\n switch (event.oldVersion) {\r\n case 0:\r\n db.createObjectStore(STORE_NAME, {\r\n keyPath: 'compositeKey'\r\n });\r\n }\r\n };\r\n }\r\n catch (e) {\r\n reject(ERROR_FACTORY.create(\"storage-open\" /* STORAGE_OPEN */, {\r\n originalErrorMessage: e.message\r\n }));\r\n }\r\n });\r\n return dbPromise;\r\n}\r\nfunction readTokenFromIndexedDB(app) {\r\n return read(computeKey(app));\r\n}\r\nfunction writeTokenToIndexedDB(app, token) {\r\n return write(computeKey(app), token);\r\n}\r\nfunction writeDebugTokenToIndexedDB(token) {\r\n return write(DEBUG_TOKEN_KEY, token);\r\n}\r\nfunction readDebugTokenFromIndexedDB() {\r\n return read(DEBUG_TOKEN_KEY);\r\n}\r\nfunction write(key, value) {\r\n return tslib.__awaiter(this, void 0, void 0, function () {\r\n var db, transaction, store, request;\r\n return tslib.__generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0: return [4 /*yield*/, getDBPromise()];\r\n case 1:\r\n db = _a.sent();\r\n transaction = db.transaction(STORE_NAME, 'readwrite');\r\n store = transaction.objectStore(STORE_NAME);\r\n request = store.put({\r\n compositeKey: key,\r\n value: value\r\n });\r\n return [2 /*return*/, new Promise(function (resolve, reject) {\r\n request.onsuccess = function (_event) {\r\n resolve();\r\n };\r\n transaction.onerror = function (event) {\r\n var _a;\r\n reject(ERROR_FACTORY.create(\"storage-set\" /* STORAGE_WRITE */, {\r\n originalErrorMessage: (_a = event.target.error) === null || _a === void 0 ? void 0 : _a.message\r\n }));\r\n };\r\n })];\r\n }\r\n });\r\n });\r\n}\r\nfunction read(key) {\r\n return tslib.__awaiter(this, void 0, void 0, function () {\r\n var db, transaction, store, request;\r\n return tslib.__generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0: return [4 /*yield*/, getDBPromise()];\r\n case 1:\r\n db = _a.sent();\r\n transaction = db.transaction(STORE_NAME, 'readonly');\r\n store = transaction.objectStore(STORE_NAME);\r\n request = store.get(key);\r\n return [2 /*return*/, new Promise(function (resolve, reject) {\r\n request.onsuccess = function (event) {\r\n var result = event.target.result;\r\n if (result) {\r\n resolve(result.value);\r\n }\r\n else {\r\n resolve(undefined);\r\n }\r\n };\r\n transaction.onerror = function (event) {\r\n var _a;\r\n reject(ERROR_FACTORY.create(\"storage-get\" /* STORAGE_GET */, {\r\n originalErrorMessage: (_a = event.target.error) === null || _a === void 0 ? void 0 : _a.message\r\n }));\r\n };\r\n })];\r\n }\r\n });\r\n });\r\n}\r\nfunction computeKey(app) {\r\n return app.options.appId + \"-\" + app.name;\r\n}\n\n/**\r\n * @license\r\n * Copyright 2020 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nvar logger = new logger$1.Logger('@firebase/app-check');\n\n/**\r\n * @license\r\n * Copyright 2020 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * Always resolves. In case of an error reading from indexeddb, resolve with undefined\r\n */\r\nfunction readTokenFromStorage(app) {\r\n return tslib.__awaiter(this, void 0, void 0, function () {\r\n var token, e_1;\r\n return tslib.__generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n if (!util.isIndexedDBAvailable()) return [3 /*break*/, 5];\r\n token = undefined;\r\n _a.label = 1;\r\n case 1:\r\n _a.trys.push([1, 3, , 4]);\r\n return [4 /*yield*/, readTokenFromIndexedDB(app)];\r\n case 2:\r\n token = _a.sent();\r\n return [3 /*break*/, 4];\r\n case 3:\r\n e_1 = _a.sent();\r\n // swallow the error and return undefined\r\n logger.warn(\"Failed to read token from indexeddb. Error: \" + e_1);\r\n return [3 /*break*/, 4];\r\n case 4: return [2 /*return*/, token];\r\n case 5: return [2 /*return*/, undefined];\r\n }\r\n });\r\n });\r\n}\r\n/**\r\n * Always resolves. In case of an error writing to indexeddb, print a warning and resolve the promise\r\n */\r\nfunction writeTokenToStorage(app, token) {\r\n if (util.isIndexedDBAvailable()) {\r\n return writeTokenToIndexedDB(app, token).catch(function (e) {\r\n // swallow the error and resolve the promise\r\n logger.warn(\"Failed to write token to indexeddb. Error: \" + e);\r\n });\r\n }\r\n return Promise.resolve();\r\n}\r\nfunction readOrCreateDebugTokenFromStorage() {\r\n return tslib.__awaiter(this, void 0, void 0, function () {\r\n var existingDebugToken, newToken;\r\n return tslib.__generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n existingDebugToken = undefined;\r\n _a.label = 1;\r\n case 1:\r\n _a.trys.push([1, 3, , 4]);\r\n return [4 /*yield*/, readDebugTokenFromIndexedDB()];\r\n case 2:\r\n existingDebugToken = _a.sent();\r\n return [3 /*break*/, 4];\r\n case 3:\r\n _a.sent();\r\n return [3 /*break*/, 4];\r\n case 4:\r\n if (!existingDebugToken) {\r\n newToken = uuidv4();\r\n // We don't need to block on writing to indexeddb\r\n // In case persistence failed, a new debug token will be generated everytime the page is refreshed.\r\n // It renders the debug token useless because you have to manually register(whitelist) the new token in the firebase console again and again.\r\n // If you see this error trying to use debug token, it probably means you are using a browser that doesn't support indexeddb.\r\n // You should switch to a different browser that supports indexeddb\r\n writeDebugTokenToIndexedDB(newToken).catch(function (e) {\r\n return logger.warn(\"Failed to persist debug token to indexeddb. Error: \" + e);\r\n });\r\n // Not using logger because I don't think we ever want this accidentally hidden?\r\n console.log(\"AppCheck debug token: \" + newToken + \". You will need to whitelist it in the Firebase console for it to work\");\r\n return [2 /*return*/, newToken];\r\n }\r\n else {\r\n return [2 /*return*/, existingDebugToken];\r\n }\r\n }\r\n });\r\n });\r\n}\n\n/**\r\n * @license\r\n * Copyright 2020 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nfunction isDebugMode() {\r\n var debugState = getDebugState();\r\n return debugState.enabled;\r\n}\r\nfunction getDebugToken() {\r\n return tslib.__awaiter(this, void 0, void 0, function () {\r\n var state;\r\n return tslib.__generator(this, function (_a) {\r\n state = getDebugState();\r\n if (state.enabled && state.token) {\r\n return [2 /*return*/, state.token.promise];\r\n }\r\n else {\r\n // should not happen!\r\n throw Error(\"\\n Can't get debug token in production mode.\\n \");\r\n }\r\n });\r\n });\r\n}\r\nfunction initializeDebugMode() {\r\n var globals = util.getGlobal();\r\n if (typeof globals.FIREBASE_APPCHECK_DEBUG_TOKEN !== 'string' &&\r\n globals.FIREBASE_APPCHECK_DEBUG_TOKEN !== true) {\r\n return;\r\n }\r\n var debugState = getDebugState();\r\n debugState.enabled = true;\r\n var deferredToken = new util.Deferred();\r\n debugState.token = deferredToken;\r\n if (typeof globals.FIREBASE_APPCHECK_DEBUG_TOKEN === 'string') {\r\n deferredToken.resolve(globals.FIREBASE_APPCHECK_DEBUG_TOKEN);\r\n }\r\n else {\r\n deferredToken.resolve(readOrCreateDebugTokenFromStorage());\r\n }\r\n}\n\n/**\r\n * @license\r\n * Copyright 2020 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n// Initial hardcoded value agreed upon across platforms for initial launch.\r\n// Format left open for possible dynamic error values and other fields in the future.\r\nvar defaultTokenErrorData = { error: 'UNKNOWN_ERROR' };\r\n/**\r\n * This function will always resolve.\r\n * The result will contain an error field if there is any error.\r\n * In case there is an error, the token field in the result will be populated with a dummy value\r\n */\r\nfunction getToken$2(app, platformLoggerProvider, forceRefresh) {\r\n if (forceRefresh === void 0) { forceRefresh = false; }\r\n return tslib.__awaiter(this, void 0, void 0, function () {\r\n var state, token, error, cachedToken, tokenFromDebugExchange, _a, _b, _c, e_1, interopTokenResult;\r\n return tslib.__generator(this, function (_d) {\r\n switch (_d.label) {\r\n case 0:\r\n ensureActivated(app);\r\n state = getState(app);\r\n token = state.token;\r\n error = undefined;\r\n if (!!token) return [3 /*break*/, 2];\r\n return [4 /*yield*/, state.cachedTokenPromise];\r\n case 1:\r\n cachedToken = _d.sent();\r\n if (cachedToken && isValid(cachedToken)) {\r\n token = cachedToken;\r\n setState(app, tslib.__assign(tslib.__assign({}, state), { token: token }));\r\n // notify all listeners with the cached token\r\n notifyTokenListeners(app, { token: token.token });\r\n }\r\n _d.label = 2;\r\n case 2:\r\n // Return the cached token (from either memory or indexedDB) if it's valid\r\n if (!forceRefresh && token && isValid(token)) {\r\n return [2 /*return*/, {\r\n token: token.token\r\n }];\r\n }\r\n if (!isDebugMode()) return [3 /*break*/, 6];\r\n _a = exchangeToken;\r\n _b = getExchangeDebugTokenRequest;\r\n _c = [app];\r\n return [4 /*yield*/, getDebugToken()];\r\n case 3: return [4 /*yield*/, _a.apply(void 0, [_b.apply(void 0, _c.concat([_d.sent()])), platformLoggerProvider])];\r\n case 4:\r\n tokenFromDebugExchange = _d.sent();\r\n // Write debug token to indexedDB.\r\n return [4 /*yield*/, writeTokenToStorage(app, tokenFromDebugExchange)];\r\n case 5:\r\n // Write debug token to indexedDB.\r\n _d.sent();\r\n // Write debug token to state.\r\n setState(app, tslib.__assign(tslib.__assign({}, state), { token: tokenFromDebugExchange }));\r\n return [2 /*return*/, { token: tokenFromDebugExchange.token }];\r\n case 6:\r\n _d.trys.push([6, 8, , 9]);\r\n return [4 /*yield*/, state.provider.getToken()];\r\n case 7:\r\n // state.provider is populated in initializeAppCheck()\r\n // ensureActivated() at the top of this function checks that\r\n // initializeAppCheck() has been called.\r\n token = _d.sent();\r\n return [3 /*break*/, 9];\r\n case 8:\r\n e_1 = _d.sent();\r\n // `getToken()` should never throw, but logging error text to console will aid debugging.\r\n logger.error(e_1);\r\n error = e_1;\r\n return [3 /*break*/, 9];\r\n case 9:\r\n if (!!token) return [3 /*break*/, 10];\r\n // if token is undefined, there must be an error.\r\n // we return a dummy token along with the error\r\n interopTokenResult = makeDummyTokenResult(error);\r\n return [3 /*break*/, 12];\r\n case 10:\r\n interopTokenResult = {\r\n token: token.token\r\n };\r\n // write the new token to the memory state as well as the persistent storage.\r\n // Only do it if we got a valid new token\r\n setState(app, tslib.__assign(tslib.__assign({}, state), { token: token }));\r\n return [4 /*yield*/, writeTokenToStorage(app, token)];\r\n case 11:\r\n _d.sent();\r\n _d.label = 12;\r\n case 12:\r\n notifyTokenListeners(app, interopTokenResult);\r\n return [2 /*return*/, interopTokenResult];\r\n }\r\n });\r\n });\r\n}\r\nfunction addTokenListener(app, platformLoggerProvider, type, listener, onError) {\r\n var state = getState(app);\r\n var tokenListener = {\r\n next: listener,\r\n error: onError,\r\n type: type\r\n };\r\n var newState = tslib.__assign(tslib.__assign({}, state), { tokenObservers: tslib.__spreadArray(tslib.__spreadArray([], state.tokenObservers), [tokenListener]) });\r\n /**\r\n * Invoke the listener with the valid token, then start the token refresher\r\n */\r\n if (!newState.tokenRefresher) {\r\n var tokenRefresher = createTokenRefresher(app, platformLoggerProvider);\r\n newState.tokenRefresher = tokenRefresher;\r\n }\r\n // Create the refresher but don't start it if `isTokenAutoRefreshEnabled`\r\n // is not true.\r\n if (!newState.tokenRefresher.isRunning() && state.isTokenAutoRefreshEnabled) {\r\n newState.tokenRefresher.start();\r\n }\r\n // Invoke the listener async immediately if there is a valid token\r\n // in memory.\r\n if (state.token && isValid(state.token)) {\r\n var validToken_1 = state.token;\r\n Promise.resolve()\r\n .then(function () { return listener({ token: validToken_1.token }); })\r\n .catch(function () {\r\n /** Ignore errors in listeners. */\r\n });\r\n }\r\n else if (state.token == null) {\r\n // Only check cache if there was no token. If the token was invalid,\r\n // skip this and rely on exchange endpoint.\r\n void state\r\n .cachedTokenPromise // Storage token promise. Always populated in `activate()`.\r\n .then(function (cachedToken) {\r\n if (cachedToken && isValid(cachedToken)) {\r\n listener({ token: cachedToken.token });\r\n }\r\n })\r\n .catch(function () {\r\n /** Ignore errors in listeners. */\r\n });\r\n }\r\n setState(app, newState);\r\n}\r\nfunction removeTokenListener(app, listener) {\r\n var state = getState(app);\r\n var newObservers = state.tokenObservers.filter(function (tokenObserver) { return tokenObserver.next !== listener; });\r\n if (newObservers.length === 0 &&\r\n state.tokenRefresher &&\r\n state.tokenRefresher.isRunning()) {\r\n state.tokenRefresher.stop();\r\n }\r\n setState(app, tslib.__assign(tslib.__assign({}, state), { tokenObservers: newObservers }));\r\n}\r\nfunction createTokenRefresher(app, platformLoggerProvider) {\r\n var _this = this;\r\n return new Refresher(\r\n // Keep in mind when this fails for any reason other than the ones\r\n // for which we should retry, it will effectively stop the proactive refresh.\r\n function () { return tslib.__awaiter(_this, void 0, void 0, function () {\r\n var state, result;\r\n return tslib.__generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n state = getState(app);\r\n if (!!state.token) return [3 /*break*/, 2];\r\n return [4 /*yield*/, getToken$2(app, platformLoggerProvider)];\r\n case 1:\r\n result = _a.sent();\r\n return [3 /*break*/, 4];\r\n case 2: return [4 /*yield*/, getToken$2(app, platformLoggerProvider, true)];\r\n case 3:\r\n result = _a.sent();\r\n _a.label = 4;\r\n case 4:\r\n // getToken() always resolves. In case the result has an error field defined, it means the operation failed, and we should retry.\r\n if (result.error) {\r\n throw result.error;\r\n }\r\n return [2 /*return*/];\r\n }\r\n });\r\n }); }, function () {\r\n // TODO: when should we retry?\r\n return true;\r\n }, function () {\r\n var state = getState(app);\r\n if (state.token) {\r\n // issuedAtTime + (50% * total TTL) + 5 minutes\r\n var nextRefreshTimeMillis = state.token.issuedAtTimeMillis +\r\n (state.token.expireTimeMillis - state.token.issuedAtTimeMillis) *\r\n 0.5 +\r\n 5 * 60 * 1000;\r\n // Do not allow refresh time to be past (expireTime - 5 minutes)\r\n var latestAllowableRefresh = state.token.expireTimeMillis - 5 * 60 * 1000;\r\n nextRefreshTimeMillis = Math.min(nextRefreshTimeMillis, latestAllowableRefresh);\r\n return Math.max(0, nextRefreshTimeMillis - Date.now());\r\n }\r\n else {\r\n return 0;\r\n }\r\n }, TOKEN_REFRESH_TIME.RETRIAL_MIN_WAIT, TOKEN_REFRESH_TIME.RETRIAL_MAX_WAIT);\r\n}\r\nfunction notifyTokenListeners(app, token) {\r\n var observers = getState(app).tokenObservers;\r\n for (var _i = 0, observers_1 = observers; _i < observers_1.length; _i++) {\r\n var observer = observers_1[_i];\r\n try {\r\n if (observer.type === \"EXTERNAL\" /* EXTERNAL */ && token.error != null) {\r\n // If this listener was added by a 3P call, send any token error to\r\n // the supplied error handler. A 3P observer always has an error\r\n // handler.\r\n observer.error(token.error);\r\n }\r\n else {\r\n // If the token has no error field, always return the token.\r\n // If this is a 2P listener, return the token, whether or not it\r\n // has an error field.\r\n observer.next(token);\r\n }\r\n }\r\n catch (ignored) {\r\n // Errors in the listener function itself are always ignored.\r\n }\r\n }\r\n}\r\nfunction isValid(token) {\r\n return token.expireTimeMillis - Date.now() > 0;\r\n}\r\nfunction makeDummyTokenResult(error) {\r\n return {\r\n token: formatDummyToken(defaultTokenErrorData),\r\n error: error\r\n };\r\n}\n\n/**\r\n * @license\r\n * Copyright 2020 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nvar RECAPTCHA_URL = 'https://www.google.com/recaptcha/api.js';\r\nfunction initialize(app, siteKey) {\r\n var state = getState(app);\r\n var initialized = new util.Deferred();\r\n setState(app, tslib.__assign(tslib.__assign({}, state), { reCAPTCHAState: { initialized: initialized } }));\r\n var divId = \"fire_app_check_\" + app.name;\r\n var invisibleDiv = document.createElement('div');\r\n invisibleDiv.id = divId;\r\n invisibleDiv.style.display = 'none';\r\n document.body.appendChild(invisibleDiv);\r\n var grecaptcha = getRecaptcha();\r\n if (!grecaptcha) {\r\n loadReCAPTCHAScript(function () {\r\n var grecaptcha = getRecaptcha();\r\n if (!grecaptcha) {\r\n // it shouldn't happen.\r\n throw new Error('no recaptcha');\r\n }\r\n grecaptcha.ready(function () {\r\n // Invisible widgets allow us to set a different siteKey for each widget, so we use them to support multiple apps\r\n renderInvisibleWidget(app, siteKey, grecaptcha, divId);\r\n initialized.resolve(grecaptcha);\r\n });\r\n });\r\n }\r\n else {\r\n grecaptcha.ready(function () {\r\n renderInvisibleWidget(app, siteKey, grecaptcha, divId);\r\n initialized.resolve(grecaptcha);\r\n });\r\n }\r\n return initialized.promise;\r\n}\r\nfunction getToken$1(app) {\r\n return tslib.__awaiter(this, void 0, void 0, function () {\r\n var reCAPTCHAState, recaptcha;\r\n return tslib.__generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n ensureActivated(app);\r\n reCAPTCHAState = getState(app).reCAPTCHAState;\r\n return [4 /*yield*/, reCAPTCHAState.initialized.promise];\r\n case 1:\r\n recaptcha = _a.sent();\r\n return [2 /*return*/, new Promise(function (resolve, _reject) {\r\n // Updated after initialization is complete.\r\n var reCAPTCHAState = getState(app).reCAPTCHAState;\r\n recaptcha.ready(function () {\r\n resolve(\r\n // widgetId is guaranteed to be available if reCAPTCHAState.initialized.promise resolved.\r\n recaptcha.execute(reCAPTCHAState.widgetId, {\r\n action: 'fire_app_check'\r\n }));\r\n });\r\n })];\r\n }\r\n });\r\n });\r\n}\r\n/**\r\n *\r\n * @param app\r\n * @param container - Id of a HTML element.\r\n */\r\nfunction renderInvisibleWidget(app, siteKey, grecaptcha, container) {\r\n var widgetId = grecaptcha.render(container, {\r\n sitekey: siteKey,\r\n size: 'invisible'\r\n });\r\n var state = getState(app);\r\n setState(app, tslib.__assign(tslib.__assign({}, state), { reCAPTCHAState: tslib.__assign(tslib.__assign({}, state.reCAPTCHAState), { // state.reCAPTCHAState is set in the initialize()\r\n widgetId: widgetId }) }));\r\n}\r\nfunction loadReCAPTCHAScript(onload) {\r\n var script = document.createElement('script');\r\n script.src = \"\" + RECAPTCHA_URL;\r\n script.onload = onload;\r\n document.head.appendChild(script);\r\n}\n\n/**\r\n * @license\r\n * Copyright 2021 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * App Check provider that can obtain a reCAPTCHA V3 token and exchange it\r\n * for an App Check token.\r\n */\r\nvar ReCaptchaV3Provider = /** @class */ (function () {\r\n /**\r\n * Create a ReCaptchaV3Provider instance.\r\n * @param siteKey - ReCAPTCHA V3 siteKey.\r\n */\r\n function ReCaptchaV3Provider(_siteKey) {\r\n this._siteKey = _siteKey;\r\n }\r\n /**\r\n * Returns an App Check token.\r\n * @internal\r\n */\r\n ReCaptchaV3Provider.prototype.getToken = function () {\r\n return tslib.__awaiter(this, void 0, void 0, function () {\r\n var attestedClaimsToken;\r\n return tslib.__generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n if (!this._app || !this._platformLoggerProvider) {\r\n // This should only occur if user has not called initializeAppCheck().\r\n // We don't have an appName to provide if so.\r\n // This should already be caught in the top level `getToken()` function.\r\n throw ERROR_FACTORY.create(\"use-before-activation\" /* USE_BEFORE_ACTIVATION */, {\r\n appName: ''\r\n });\r\n }\r\n _a.label = 1;\r\n case 1:\r\n _a.trys.push([1, 3, , 4]);\r\n return [4 /*yield*/, getToken$1(this._app)];\r\n case 2:\r\n attestedClaimsToken = _a.sent();\r\n return [3 /*break*/, 4];\r\n case 3:\r\n _a.sent();\r\n // reCaptcha.execute() throws null which is not very descriptive.\r\n throw ERROR_FACTORY.create(\"recaptcha-error\" /* RECAPTCHA_ERROR */);\r\n case 4: return [2 /*return*/, exchangeToken(getExchangeRecaptchaTokenRequest(this._app, attestedClaimsToken), this._platformLoggerProvider)];\r\n }\r\n });\r\n });\r\n };\r\n ReCaptchaV3Provider.prototype.initialize = function (app, platformLoggerProvider) {\r\n this._app = app;\r\n this._platformLoggerProvider = platformLoggerProvider;\r\n initialize(app, this._siteKey).catch(function () {\r\n /* we don't care about the initialization result */\r\n });\r\n };\r\n return ReCaptchaV3Provider;\r\n}());\r\n/**\r\n * Custom provider class.\r\n */\r\nvar CustomProvider = /** @class */ (function () {\r\n function CustomProvider(_customProviderOptions) {\r\n this._customProviderOptions = _customProviderOptions;\r\n }\r\n /**\r\n * @internal\r\n */\r\n CustomProvider.prototype.getToken = function () {\r\n return tslib.__awaiter(this, void 0, void 0, function () {\r\n var customToken, issuedAtTimeSeconds, issuedAtTimeMillis;\r\n return tslib.__generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n if (!this._app) {\r\n // This should only occur if user has not called initializeAppCheck().\r\n // We don't have an appName to provide if so.\r\n // This should already be caught in the top level `getToken()` function.\r\n throw ERROR_FACTORY.create(\"use-before-activation\" /* USE_BEFORE_ACTIVATION */, {\r\n appName: ''\r\n });\r\n }\r\n return [4 /*yield*/, this._customProviderOptions.getToken()];\r\n case 1:\r\n customToken = _a.sent();\r\n issuedAtTimeSeconds = util.issuedAtTime(customToken.token);\r\n issuedAtTimeMillis = issuedAtTimeSeconds !== null &&\r\n issuedAtTimeSeconds < Date.now() &&\r\n issuedAtTimeSeconds > 0\r\n ? issuedAtTimeSeconds * 1000\r\n : Date.now();\r\n return [2 /*return*/, tslib.__assign(tslib.__assign({}, customToken), { issuedAtTimeMillis: issuedAtTimeMillis })];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * @internal\r\n */\r\n CustomProvider.prototype.initialize = function (app) {\r\n this._app = app;\r\n };\r\n return CustomProvider;\r\n}());\n\n/**\r\n * @license\r\n * Copyright 2020 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n *\r\n * @param app\r\n * @param siteKeyOrProvider - optional custom attestation provider\r\n * or reCAPTCHA provider\r\n * @param isTokenAutoRefreshEnabled - if true, enables auto refresh\r\n * of appCheck token.\r\n */\r\nfunction activate(app, siteKeyOrProvider, platformLoggerProvider, isTokenAutoRefreshEnabled) {\r\n var state = getState(app);\r\n if (state.activated) {\r\n throw ERROR_FACTORY.create(\"already-activated\" /* ALREADY_ACTIVATED */, {\r\n appName: app.name\r\n });\r\n }\r\n var newState = tslib.__assign(tslib.__assign({}, state), { activated: true });\r\n // Read cached token from storage if it exists and store it in memory.\r\n newState.cachedTokenPromise = readTokenFromStorage(app).then(function (cachedToken) {\r\n if (cachedToken && isValid(cachedToken)) {\r\n setState(app, tslib.__assign(tslib.__assign({}, getState(app)), { token: cachedToken }));\r\n }\r\n return cachedToken;\r\n });\r\n if (typeof siteKeyOrProvider === 'string') {\r\n newState.provider = new ReCaptchaV3Provider(siteKeyOrProvider);\r\n }\r\n else if (siteKeyOrProvider instanceof ReCaptchaV3Provider ||\r\n siteKeyOrProvider instanceof CustomProvider) {\r\n newState.provider = siteKeyOrProvider;\r\n }\r\n else {\r\n // Process \"old\" custom provider to avoid breaking previous users.\r\n // This was defined at beta release as simply an object with a\r\n // getToken() method.\r\n newState.provider = new CustomProvider({\r\n getToken: siteKeyOrProvider.getToken\r\n });\r\n }\r\n // Use value of global `automaticDataCollectionEnabled` (which\r\n // itself defaults to false if not specified in config) if\r\n // `isTokenAutoRefreshEnabled` param was not provided by user.\r\n newState.isTokenAutoRefreshEnabled =\r\n isTokenAutoRefreshEnabled === undefined\r\n ? app.automaticDataCollectionEnabled\r\n : isTokenAutoRefreshEnabled;\r\n setState(app, newState);\r\n newState.provider.initialize(app, platformLoggerProvider);\r\n}\r\nfunction setTokenAutoRefreshEnabled(app, isTokenAutoRefreshEnabled) {\r\n var state = getState(app);\r\n // This will exist if any product libraries have called\r\n // `addTokenListener()`\r\n if (state.tokenRefresher) {\r\n if (isTokenAutoRefreshEnabled === true) {\r\n state.tokenRefresher.start();\r\n }\r\n else {\r\n state.tokenRefresher.stop();\r\n }\r\n }\r\n setState(app, tslib.__assign(tslib.__assign({}, state), { isTokenAutoRefreshEnabled: isTokenAutoRefreshEnabled }));\r\n}\r\n/**\r\n * Differs from internal getToken in that it throws the error.\r\n */\r\nfunction getToken(app, platformLoggerProvider, forceRefresh) {\r\n return tslib.__awaiter(this, void 0, void 0, function () {\r\n var result;\r\n return tslib.__generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0: return [4 /*yield*/, getToken$2(app, platformLoggerProvider, forceRefresh)];\r\n case 1:\r\n result = _a.sent();\r\n if (result.error) {\r\n throw result.error;\r\n }\r\n return [2 /*return*/, { token: result.token }];\r\n }\r\n });\r\n });\r\n}\r\nfunction onTokenChanged(app, platformLoggerProvider, onNextOrObserver, onError, \r\n/**\r\n * NOTE: Although an `onCompletion` callback can be provided, it will\r\n * never be called because the token stream is never-ending.\r\n * It is added only for API consistency with the observer pattern, which\r\n * we follow in JS APIs.\r\n */\r\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\r\nonCompletion) {\r\n var nextFn = function () { };\r\n var errorFn = function () { };\r\n if (onNextOrObserver.next != null) {\r\n nextFn = onNextOrObserver.next.bind(onNextOrObserver);\r\n }\r\n else {\r\n nextFn = onNextOrObserver;\r\n }\r\n if (onNextOrObserver.error != null) {\r\n errorFn = onNextOrObserver.error.bind(onNextOrObserver);\r\n }\r\n else if (onError) {\r\n errorFn = onError;\r\n }\r\n addTokenListener(app, platformLoggerProvider, \"EXTERNAL\" /* EXTERNAL */, nextFn, errorFn);\r\n return function () { return removeTokenListener(app, nextFn); };\r\n}\n\n/**\r\n * @license\r\n * Copyright 2020 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nfunction factory(app, platformLoggerProvider) {\r\n return {\r\n app: app,\r\n activate: function (siteKeyOrProvider, isTokenAutoRefreshEnabled) {\r\n return activate(app, \r\n // Public types of ReCaptchaV3Provider/CustomProvider don't\r\n // expose getToken() and aren't recognized as the internal\r\n // class version of themselves.\r\n siteKeyOrProvider, platformLoggerProvider, isTokenAutoRefreshEnabled);\r\n },\r\n setTokenAutoRefreshEnabled: function (isTokenAutoRefreshEnabled) {\r\n return setTokenAutoRefreshEnabled(app, isTokenAutoRefreshEnabled);\r\n },\r\n getToken: function (forceRefresh) {\r\n return getToken(app, platformLoggerProvider, forceRefresh);\r\n },\r\n onTokenChanged: function (onNextOrObserver, onError, onCompletion) {\r\n return onTokenChanged(app, platformLoggerProvider, \r\n /**\r\n * This can still be an observer. Need to do this casting because\r\n * according to Typescript: \"Implementation signatures of overloads\r\n * are not externally visible\"\r\n */\r\n onNextOrObserver, onError);\r\n },\r\n INTERNAL: {\r\n delete: function () {\r\n var tokenObservers = getState(app).tokenObservers;\r\n for (var _i = 0, tokenObservers_1 = tokenObservers; _i < tokenObservers_1.length; _i++) {\r\n var tokenObserver = tokenObservers_1[_i];\r\n removeTokenListener(app, tokenObserver.next);\r\n }\r\n return Promise.resolve();\r\n }\r\n }\r\n };\r\n}\r\nfunction internalFactory(app, platformLoggerProvider) {\r\n return {\r\n getToken: function (forceRefresh) {\r\n return getToken$2(app, platformLoggerProvider, forceRefresh);\r\n },\r\n addTokenListener: function (listener) {\r\n return addTokenListener(app, platformLoggerProvider, \"INTERNAL\" /* INTERNAL */, listener);\r\n },\r\n removeTokenListener: function (listener) { return removeTokenListener(app, listener); }\r\n };\r\n}\n\nvar name = \"@firebase/app-check\";\nvar version = \"0.3.2\";\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nvar APP_CHECK_NAME = 'appCheck';\r\nvar APP_CHECK_NAME_INTERNAL = 'app-check-internal';\r\nfunction registerAppCheck(firebase) {\r\n // The public interface\r\n firebase.INTERNAL.registerComponent(new component.Component(APP_CHECK_NAME, function (container) {\r\n // getImmediate for FirebaseApp will always succeed\r\n var app = container.getProvider('app').getImmediate();\r\n var platformLoggerProvider = container.getProvider('platform-logger');\r\n return factory(app, platformLoggerProvider);\r\n }, \"PUBLIC\" /* PUBLIC */)\r\n .setServiceProps({\r\n ReCaptchaV3Provider: ReCaptchaV3Provider,\r\n CustomProvider: CustomProvider\r\n })\r\n /**\r\n * AppCheck can only be initialized by explicitly calling firebase.appCheck()\r\n * We don't want firebase products that consume AppCheck to gate on AppCheck\r\n * if the user doesn't intend them to, just because the AppCheck component\r\n * is registered.\r\n */\r\n .setInstantiationMode(\"EXPLICIT\" /* EXPLICIT */)\r\n /**\r\n * Because all firebase products that depend on app-check depend on app-check-internal directly,\r\n * we need to initialize app-check-internal after app-check is initialized to make it\r\n * available to other firebase products.\r\n */\r\n .setInstanceCreatedCallback(function (container, _instanceIdentifier, _instance) {\r\n var appCheckInternalProvider = container.getProvider(APP_CHECK_NAME_INTERNAL);\r\n appCheckInternalProvider.initialize();\r\n }));\r\n // The internal interface used by other Firebase products\r\n firebase.INTERNAL.registerComponent(new component.Component(APP_CHECK_NAME_INTERNAL, function (container) {\r\n // getImmediate for FirebaseApp will always succeed\r\n var app = container.getProvider('app').getImmediate();\r\n var platformLoggerProvider = container.getProvider('platform-logger');\r\n return internalFactory(app, platformLoggerProvider);\r\n }, \"PUBLIC\" /* PUBLIC */).setInstantiationMode(\"EXPLICIT\" /* EXPLICIT */));\r\n firebase.registerVersion(name, version);\r\n}\r\nregisterAppCheck(firebase__default['default']);\r\ninitializeDebugMode();\n//# sourceMappingURL=index.cjs.js.map\n","'use strict';\nvar globalThis = require('../internals/global-this');\n\n// eslint-disable-next-line es/no-object-defineproperty -- safe\nvar defineProperty = Object.defineProperty;\n\nmodule.exports = function (key, value) {\n try {\n defineProperty(globalThis, key, { value: value, configurable: true, writable: true });\n } catch (error) {\n globalThis[key] = value;\n } return value;\n};\n","/*!\n * vue-router v4.5.0\n * (c) 2024 Eduardo San Martin Morote\n * @license MIT\n */\nimport { getCurrentInstance, inject, onUnmounted, onDeactivated, onActivated, computed, unref, watchEffect, defineComponent, reactive, h, provide, ref, watch, shallowRef, shallowReactive, nextTick } from 'vue';\nimport { setupDevtoolsPlugin } from '@vue/devtools-api';\n\nconst isBrowser = typeof document !== 'undefined';\n\n/**\n * Allows differentiating lazy components from functional components and vue-class-component\n * @internal\n *\n * @param component\n */\nfunction isRouteComponent(component) {\n return (typeof component === 'object' ||\n 'displayName' in component ||\n 'props' in component ||\n '__vccOpts' in component);\n}\nfunction isESModule(obj) {\n return (obj.__esModule ||\n obj[Symbol.toStringTag] === 'Module' ||\n // support CF with dynamic imports that do not\n // add the Module string tag\n (obj.default && isRouteComponent(obj.default)));\n}\nconst assign = Object.assign;\nfunction applyToParams(fn, params) {\n const newParams = {};\n for (const key in params) {\n const value = params[key];\n newParams[key] = isArray(value)\n ? value.map(fn)\n : fn(value);\n }\n return newParams;\n}\nconst noop = () => { };\n/**\n * Typesafe alternative to Array.isArray\n * https://github.com/microsoft/TypeScript/pull/48228\n */\nconst isArray = Array.isArray;\n\nfunction warn(msg) {\n // avoid using ...args as it breaks in older Edge builds\n const args = Array.from(arguments).slice(1);\n console.warn.apply(console, ['[Vue Router warn]: ' + msg].concat(args));\n}\n\n/**\n * Encoding Rules (␣ = Space)\n * - Path: ␣ \" < > # ? { }\n * - Query: ␣ \" < > # & =\n * - Hash: ␣ \" < > `\n *\n * On top of that, the RFC3986 (https://tools.ietf.org/html/rfc3986#section-2.2)\n * defines some extra characters to be encoded. Most browsers do not encode them\n * in encodeURI https://github.com/whatwg/url/issues/369, so it may be safer to\n * also encode `!'()*`. Leaving un-encoded only ASCII alphanumeric(`a-zA-Z0-9`)\n * plus `-._~`. This extra safety should be applied to query by patching the\n * string returned by encodeURIComponent encodeURI also encodes `[\\]^`. `\\`\n * should be encoded to avoid ambiguity. Browsers (IE, FF, C) transform a `\\`\n * into a `/` if directly typed in. The _backtick_ (`````) should also be\n * encoded everywhere because some browsers like FF encode it when directly\n * written while others don't. Safari and IE don't encode ``\"<>{}``` in hash.\n */\n// const EXTRA_RESERVED_RE = /[!'()*]/g\n// const encodeReservedReplacer = (c: string) => '%' + c.charCodeAt(0).toString(16)\nconst HASH_RE = /#/g; // %23\nconst AMPERSAND_RE = /&/g; // %26\nconst SLASH_RE = /\\//g; // %2F\nconst EQUAL_RE = /=/g; // %3D\nconst IM_RE = /\\?/g; // %3F\nconst PLUS_RE = /\\+/g; // %2B\n/**\n * NOTE: It's not clear to me if we should encode the + symbol in queries, it\n * seems to be less flexible than not doing so and I can't find out the legacy\n * systems requiring this for regular requests like text/html. In the standard,\n * the encoding of the plus character is only mentioned for\n * application/x-www-form-urlencoded\n * (https://url.spec.whatwg.org/#urlencoded-parsing) and most browsers seems lo\n * leave the plus character as is in queries. To be more flexible, we allow the\n * plus character on the query, but it can also be manually encoded by the user.\n *\n * Resources:\n * - https://url.spec.whatwg.org/#urlencoded-parsing\n * - https://stackoverflow.com/questions/1634271/url-encoding-the-space-character-or-20\n */\nconst ENC_BRACKET_OPEN_RE = /%5B/g; // [\nconst ENC_BRACKET_CLOSE_RE = /%5D/g; // ]\nconst ENC_CARET_RE = /%5E/g; // ^\nconst ENC_BACKTICK_RE = /%60/g; // `\nconst ENC_CURLY_OPEN_RE = /%7B/g; // {\nconst ENC_PIPE_RE = /%7C/g; // |\nconst ENC_CURLY_CLOSE_RE = /%7D/g; // }\nconst ENC_SPACE_RE = /%20/g; // }\n/**\n * Encode characters that need to be encoded on the path, search and hash\n * sections of the URL.\n *\n * @internal\n * @param text - string to encode\n * @returns encoded string\n */\nfunction commonEncode(text) {\n return encodeURI('' + text)\n .replace(ENC_PIPE_RE, '|')\n .replace(ENC_BRACKET_OPEN_RE, '[')\n .replace(ENC_BRACKET_CLOSE_RE, ']');\n}\n/**\n * Encode characters that need to be encoded on the hash section of the URL.\n *\n * @param text - string to encode\n * @returns encoded string\n */\nfunction encodeHash(text) {\n return commonEncode(text)\n .replace(ENC_CURLY_OPEN_RE, '{')\n .replace(ENC_CURLY_CLOSE_RE, '}')\n .replace(ENC_CARET_RE, '^');\n}\n/**\n * Encode characters that need to be encoded query values on the query\n * section of the URL.\n *\n * @param text - string to encode\n * @returns encoded string\n */\nfunction encodeQueryValue(text) {\n return (commonEncode(text)\n // Encode the space as +, encode the + to differentiate it from the space\n .replace(PLUS_RE, '%2B')\n .replace(ENC_SPACE_RE, '+')\n .replace(HASH_RE, '%23')\n .replace(AMPERSAND_RE, '%26')\n .replace(ENC_BACKTICK_RE, '`')\n .replace(ENC_CURLY_OPEN_RE, '{')\n .replace(ENC_CURLY_CLOSE_RE, '}')\n .replace(ENC_CARET_RE, '^'));\n}\n/**\n * Like `encodeQueryValue` but also encodes the `=` character.\n *\n * @param text - string to encode\n */\nfunction encodeQueryKey(text) {\n return encodeQueryValue(text).replace(EQUAL_RE, '%3D');\n}\n/**\n * Encode characters that need to be encoded on the path section of the URL.\n *\n * @param text - string to encode\n * @returns encoded string\n */\nfunction encodePath(text) {\n return commonEncode(text).replace(HASH_RE, '%23').replace(IM_RE, '%3F');\n}\n/**\n * Encode characters that need to be encoded on the path section of the URL as a\n * param. This function encodes everything {@link encodePath} does plus the\n * slash (`/`) character. If `text` is `null` or `undefined`, returns an empty\n * string instead.\n *\n * @param text - string to encode\n * @returns encoded string\n */\nfunction encodeParam(text) {\n return text == null ? '' : encodePath(text).replace(SLASH_RE, '%2F');\n}\n/**\n * Decode text using `decodeURIComponent`. Returns the original text if it\n * fails.\n *\n * @param text - string to decode\n * @returns decoded string\n */\nfunction decode(text) {\n try {\n return decodeURIComponent('' + text);\n }\n catch (err) {\n (process.env.NODE_ENV !== 'production') && warn(`Error decoding \"${text}\". Using original value`);\n }\n return '' + text;\n}\n\nconst TRAILING_SLASH_RE = /\\/$/;\nconst removeTrailingSlash = (path) => path.replace(TRAILING_SLASH_RE, '');\n/**\n * Transforms a URI into a normalized history location\n *\n * @param parseQuery\n * @param location - URI to normalize\n * @param currentLocation - current absolute location. Allows resolving relative\n * paths. Must start with `/`. Defaults to `/`\n * @returns a normalized history location\n */\nfunction parseURL(parseQuery, location, currentLocation = '/') {\n let path, query = {}, searchString = '', hash = '';\n // Could use URL and URLSearchParams but IE 11 doesn't support it\n // TODO: move to new URL()\n const hashPos = location.indexOf('#');\n let searchPos = location.indexOf('?');\n // the hash appears before the search, so it's not part of the search string\n if (hashPos < searchPos && hashPos >= 0) {\n searchPos = -1;\n }\n if (searchPos > -1) {\n path = location.slice(0, searchPos);\n searchString = location.slice(searchPos + 1, hashPos > -1 ? hashPos : location.length);\n query = parseQuery(searchString);\n }\n if (hashPos > -1) {\n path = path || location.slice(0, hashPos);\n // keep the # character\n hash = location.slice(hashPos, location.length);\n }\n // no search and no query\n path = resolveRelativePath(path != null ? path : location, currentLocation);\n // empty path means a relative query or hash `?foo=f`, `#thing`\n return {\n fullPath: path + (searchString && '?') + searchString + hash,\n path,\n query,\n hash: decode(hash),\n };\n}\n/**\n * Stringifies a URL object\n *\n * @param stringifyQuery\n * @param location\n */\nfunction stringifyURL(stringifyQuery, location) {\n const query = location.query ? stringifyQuery(location.query) : '';\n return location.path + (query && '?') + query + (location.hash || '');\n}\n/**\n * Strips off the base from the beginning of a location.pathname in a non-case-sensitive way.\n *\n * @param pathname - location.pathname\n * @param base - base to strip off\n */\nfunction stripBase(pathname, base) {\n // no base or base is not found at the beginning\n if (!base || !pathname.toLowerCase().startsWith(base.toLowerCase()))\n return pathname;\n return pathname.slice(base.length) || '/';\n}\n/**\n * Checks if two RouteLocation are equal. This means that both locations are\n * pointing towards the same {@link RouteRecord} and that all `params`, `query`\n * parameters and `hash` are the same\n *\n * @param stringifyQuery - A function that takes a query object of type LocationQueryRaw and returns a string representation of it.\n * @param a - first {@link RouteLocation}\n * @param b - second {@link RouteLocation}\n */\nfunction isSameRouteLocation(stringifyQuery, a, b) {\n const aLastIndex = a.matched.length - 1;\n const bLastIndex = b.matched.length - 1;\n return (aLastIndex > -1 &&\n aLastIndex === bLastIndex &&\n isSameRouteRecord(a.matched[aLastIndex], b.matched[bLastIndex]) &&\n isSameRouteLocationParams(a.params, b.params) &&\n stringifyQuery(a.query) === stringifyQuery(b.query) &&\n a.hash === b.hash);\n}\n/**\n * Check if two `RouteRecords` are equal. Takes into account aliases: they are\n * considered equal to the `RouteRecord` they are aliasing.\n *\n * @param a - first {@link RouteRecord}\n * @param b - second {@link RouteRecord}\n */\nfunction isSameRouteRecord(a, b) {\n // since the original record has an undefined value for aliasOf\n // but all aliases point to the original record, this will always compare\n // the original record\n return (a.aliasOf || a) === (b.aliasOf || b);\n}\nfunction isSameRouteLocationParams(a, b) {\n if (Object.keys(a).length !== Object.keys(b).length)\n return false;\n for (const key in a) {\n if (!isSameRouteLocationParamsValue(a[key], b[key]))\n return false;\n }\n return true;\n}\nfunction isSameRouteLocationParamsValue(a, b) {\n return isArray(a)\n ? isEquivalentArray(a, b)\n : isArray(b)\n ? isEquivalentArray(b, a)\n : a === b;\n}\n/**\n * Check if two arrays are the same or if an array with one single entry is the\n * same as another primitive value. Used to check query and parameters\n *\n * @param a - array of values\n * @param b - array of values or a single value\n */\nfunction isEquivalentArray(a, b) {\n return isArray(b)\n ? a.length === b.length && a.every((value, i) => value === b[i])\n : a.length === 1 && a[0] === b;\n}\n/**\n * Resolves a relative path that starts with `.`.\n *\n * @param to - path location we are resolving\n * @param from - currentLocation.path, should start with `/`\n */\nfunction resolveRelativePath(to, from) {\n if (to.startsWith('/'))\n return to;\n if ((process.env.NODE_ENV !== 'production') && !from.startsWith('/')) {\n warn(`Cannot resolve a relative location without an absolute path. Trying to resolve \"${to}\" from \"${from}\". It should look like \"/${from}\".`);\n return to;\n }\n if (!to)\n return from;\n const fromSegments = from.split('/');\n const toSegments = to.split('/');\n const lastToSegment = toSegments[toSegments.length - 1];\n // make . and ./ the same (../ === .., ../../ === ../..)\n // this is the same behavior as new URL()\n if (lastToSegment === '..' || lastToSegment === '.') {\n toSegments.push('');\n }\n let position = fromSegments.length - 1;\n let toPosition;\n let segment;\n for (toPosition = 0; toPosition < toSegments.length; toPosition++) {\n segment = toSegments[toPosition];\n // we stay on the same position\n if (segment === '.')\n continue;\n // go up in the from array\n if (segment === '..') {\n // we can't go below zero, but we still need to increment toPosition\n if (position > 1)\n position--;\n // continue\n }\n // we reached a non-relative path, we stop here\n else\n break;\n }\n return (fromSegments.slice(0, position).join('/') +\n '/' +\n toSegments.slice(toPosition).join('/'));\n}\n/**\n * Initial route location where the router is. Can be used in navigation guards\n * to differentiate the initial navigation.\n *\n * @example\n * ```js\n * import { START_LOCATION } from 'vue-router'\n *\n * router.beforeEach((to, from) => {\n * if (from === START_LOCATION) {\n * // initial navigation\n * }\n * })\n * ```\n */\nconst START_LOCATION_NORMALIZED = {\n path: '/',\n // TODO: could we use a symbol in the future?\n name: undefined,\n params: {},\n query: {},\n hash: '',\n fullPath: '/',\n matched: [],\n meta: {},\n redirectedFrom: undefined,\n};\n\nvar NavigationType;\n(function (NavigationType) {\n NavigationType[\"pop\"] = \"pop\";\n NavigationType[\"push\"] = \"push\";\n})(NavigationType || (NavigationType = {}));\nvar NavigationDirection;\n(function (NavigationDirection) {\n NavigationDirection[\"back\"] = \"back\";\n NavigationDirection[\"forward\"] = \"forward\";\n NavigationDirection[\"unknown\"] = \"\";\n})(NavigationDirection || (NavigationDirection = {}));\n/**\n * Starting location for Histories\n */\nconst START = '';\n// Generic utils\n/**\n * Normalizes a base by removing any trailing slash and reading the base tag if\n * present.\n *\n * @param base - base to normalize\n */\nfunction normalizeBase(base) {\n if (!base) {\n if (isBrowser) {\n // respect tag\n const baseEl = document.querySelector('base');\n base = (baseEl && baseEl.getAttribute('href')) || '/';\n // strip full URL origin\n base = base.replace(/^\\w+:\\/\\/[^\\/]+/, '');\n }\n else {\n base = '/';\n }\n }\n // ensure leading slash when it was removed by the regex above avoid leading\n // slash with hash because the file could be read from the disk like file://\n // and the leading slash would cause problems\n if (base[0] !== '/' && base[0] !== '#')\n base = '/' + base;\n // remove the trailing slash so all other method can just do `base + fullPath`\n // to build an href\n return removeTrailingSlash(base);\n}\n// remove any character before the hash\nconst BEFORE_HASH_RE = /^[^#]+#/;\nfunction createHref(base, location) {\n return base.replace(BEFORE_HASH_RE, '#') + location;\n}\n\nfunction getElementPosition(el, offset) {\n const docRect = document.documentElement.getBoundingClientRect();\n const elRect = el.getBoundingClientRect();\n return {\n behavior: offset.behavior,\n left: elRect.left - docRect.left - (offset.left || 0),\n top: elRect.top - docRect.top - (offset.top || 0),\n };\n}\nconst computeScrollPosition = () => ({\n left: window.scrollX,\n top: window.scrollY,\n});\nfunction scrollToPosition(position) {\n let scrollToOptions;\n if ('el' in position) {\n const positionEl = position.el;\n const isIdSelector = typeof positionEl === 'string' && positionEl.startsWith('#');\n /**\n * `id`s can accept pretty much any characters, including CSS combinators\n * like `>` or `~`. It's still possible to retrieve elements using\n * `document.getElementById('~')` but it needs to be escaped when using\n * `document.querySelector('#\\\\~')` for it to be valid. The only\n * requirements for `id`s are them to be unique on the page and to not be\n * empty (`id=\"\"`). Because of that, when passing an id selector, it should\n * be properly escaped for it to work with `querySelector`. We could check\n * for the id selector to be simple (no CSS combinators `+ >~`) but that\n * would make things inconsistent since they are valid characters for an\n * `id` but would need to be escaped when using `querySelector`, breaking\n * their usage and ending up in no selector returned. Selectors need to be\n * escaped:\n *\n * - `#1-thing` becomes `#\\31 -thing`\n * - `#with~symbols` becomes `#with\\\\~symbols`\n *\n * - More information about the topic can be found at\n * https://mathiasbynens.be/notes/html5-id-class.\n * - Practical example: https://mathiasbynens.be/demo/html5-id\n */\n if ((process.env.NODE_ENV !== 'production') && typeof position.el === 'string') {\n if (!isIdSelector || !document.getElementById(position.el.slice(1))) {\n try {\n const foundEl = document.querySelector(position.el);\n if (isIdSelector && foundEl) {\n warn(`The selector \"${position.el}\" should be passed as \"el: document.querySelector('${position.el}')\" because it starts with \"#\".`);\n // return to avoid other warnings\n return;\n }\n }\n catch (err) {\n warn(`The selector \"${position.el}\" is invalid. If you are using an id selector, make sure to escape it. You can find more information about escaping characters in selectors at https://mathiasbynens.be/notes/css-escapes or use CSS.escape (https://developer.mozilla.org/en-US/docs/Web/API/CSS/escape).`);\n // return to avoid other warnings\n return;\n }\n }\n }\n const el = typeof positionEl === 'string'\n ? isIdSelector\n ? document.getElementById(positionEl.slice(1))\n : document.querySelector(positionEl)\n : positionEl;\n if (!el) {\n (process.env.NODE_ENV !== 'production') &&\n warn(`Couldn't find element using selector \"${position.el}\" returned by scrollBehavior.`);\n return;\n }\n scrollToOptions = getElementPosition(el, position);\n }\n else {\n scrollToOptions = position;\n }\n if ('scrollBehavior' in document.documentElement.style)\n window.scrollTo(scrollToOptions);\n else {\n window.scrollTo(scrollToOptions.left != null ? scrollToOptions.left : window.scrollX, scrollToOptions.top != null ? scrollToOptions.top : window.scrollY);\n }\n}\nfunction getScrollKey(path, delta) {\n const position = history.state ? history.state.position - delta : -1;\n return position + path;\n}\nconst scrollPositions = new Map();\nfunction saveScrollPosition(key, scrollPosition) {\n scrollPositions.set(key, scrollPosition);\n}\nfunction getSavedScrollPosition(key) {\n const scroll = scrollPositions.get(key);\n // consume it so it's not used again\n scrollPositions.delete(key);\n return scroll;\n}\n// TODO: RFC about how to save scroll position\n/**\n * ScrollBehavior instance used by the router to compute and restore the scroll\n * position when navigating.\n */\n// export interface ScrollHandler {\n// // returns a scroll position that can be saved in history\n// compute(): ScrollPositionEntry\n// // can take an extended ScrollPositionEntry\n// scroll(position: ScrollPosition): void\n// }\n// export const scrollHandler: ScrollHandler = {\n// compute: computeScroll,\n// scroll: scrollToPosition,\n// }\n\nlet createBaseLocation = () => location.protocol + '//' + location.host;\n/**\n * Creates a normalized history location from a window.location object\n * @param base - The base path\n * @param location - The window.location object\n */\nfunction createCurrentLocation(base, location) {\n const { pathname, search, hash } = location;\n // allows hash bases like #, /#, #/, #!, #!/, /#!/, or even /folder#end\n const hashPos = base.indexOf('#');\n if (hashPos > -1) {\n let slicePos = hash.includes(base.slice(hashPos))\n ? base.slice(hashPos).length\n : 1;\n let pathFromHash = hash.slice(slicePos);\n // prepend the starting slash to hash so the url starts with /#\n if (pathFromHash[0] !== '/')\n pathFromHash = '/' + pathFromHash;\n return stripBase(pathFromHash, '');\n }\n const path = stripBase(pathname, base);\n return path + search + hash;\n}\nfunction useHistoryListeners(base, historyState, currentLocation, replace) {\n let listeners = [];\n let teardowns = [];\n // TODO: should it be a stack? a Dict. Check if the popstate listener\n // can trigger twice\n let pauseState = null;\n const popStateHandler = ({ state, }) => {\n const to = createCurrentLocation(base, location);\n const from = currentLocation.value;\n const fromState = historyState.value;\n let delta = 0;\n if (state) {\n currentLocation.value = to;\n historyState.value = state;\n // ignore the popstate and reset the pauseState\n if (pauseState && pauseState === from) {\n pauseState = null;\n return;\n }\n delta = fromState ? state.position - fromState.position : 0;\n }\n else {\n replace(to);\n }\n // Here we could also revert the navigation by calling history.go(-delta)\n // this listener will have to be adapted to not trigger again and to wait for the url\n // to be updated before triggering the listeners. Some kind of validation function would also\n // need to be passed to the listeners so the navigation can be accepted\n // call all listeners\n listeners.forEach(listener => {\n listener(currentLocation.value, from, {\n delta,\n type: NavigationType.pop,\n direction: delta\n ? delta > 0\n ? NavigationDirection.forward\n : NavigationDirection.back\n : NavigationDirection.unknown,\n });\n });\n };\n function pauseListeners() {\n pauseState = currentLocation.value;\n }\n function listen(callback) {\n // set up the listener and prepare teardown callbacks\n listeners.push(callback);\n const teardown = () => {\n const index = listeners.indexOf(callback);\n if (index > -1)\n listeners.splice(index, 1);\n };\n teardowns.push(teardown);\n return teardown;\n }\n function beforeUnloadListener() {\n const { history } = window;\n if (!history.state)\n return;\n history.replaceState(assign({}, history.state, { scroll: computeScrollPosition() }), '');\n }\n function destroy() {\n for (const teardown of teardowns)\n teardown();\n teardowns = [];\n window.removeEventListener('popstate', popStateHandler);\n window.removeEventListener('beforeunload', beforeUnloadListener);\n }\n // set up the listeners and prepare teardown callbacks\n window.addEventListener('popstate', popStateHandler);\n // TODO: could we use 'pagehide' or 'visibilitychange' instead?\n // https://developer.chrome.com/blog/page-lifecycle-api/\n window.addEventListener('beforeunload', beforeUnloadListener, {\n passive: true,\n });\n return {\n pauseListeners,\n listen,\n destroy,\n };\n}\n/**\n * Creates a state object\n */\nfunction buildState(back, current, forward, replaced = false, computeScroll = false) {\n return {\n back,\n current,\n forward,\n replaced,\n position: window.history.length,\n scroll: computeScroll ? computeScrollPosition() : null,\n };\n}\nfunction useHistoryStateNavigation(base) {\n const { history, location } = window;\n // private variables\n const currentLocation = {\n value: createCurrentLocation(base, location),\n };\n const historyState = { value: history.state };\n // build current history entry as this is a fresh navigation\n if (!historyState.value) {\n changeLocation(currentLocation.value, {\n back: null,\n current: currentLocation.value,\n forward: null,\n // the length is off by one, we need to decrease it\n position: history.length - 1,\n replaced: true,\n // don't add a scroll as the user may have an anchor, and we want\n // scrollBehavior to be triggered without a saved position\n scroll: null,\n }, true);\n }\n function changeLocation(to, state, replace) {\n /**\n * if a base tag is provided, and we are on a normal domain, we have to\n * respect the provided `base` attribute because pushState() will use it and\n * potentially erase anything before the `#` like at\n * https://github.com/vuejs/router/issues/685 where a base of\n * `/folder/#` but a base of `/` would erase the `/folder/` section. If\n * there is no host, the `` tag makes no sense and if there isn't a\n * base tag we can just use everything after the `#`.\n */\n const hashIndex = base.indexOf('#');\n const url = hashIndex > -1\n ? (location.host && document.querySelector('base')\n ? base\n : base.slice(hashIndex)) + to\n : createBaseLocation() + base + to;\n try {\n // BROWSER QUIRK\n // NOTE: Safari throws a SecurityError when calling this function 100 times in 30 seconds\n history[replace ? 'replaceState' : 'pushState'](state, '', url);\n historyState.value = state;\n }\n catch (err) {\n if ((process.env.NODE_ENV !== 'production')) {\n warn('Error with push/replace State', err);\n }\n else {\n console.error(err);\n }\n // Force the navigation, this also resets the call count\n location[replace ? 'replace' : 'assign'](url);\n }\n }\n function replace(to, data) {\n const state = assign({}, history.state, buildState(historyState.value.back, \n // keep back and forward entries but override current position\n to, historyState.value.forward, true), data, { position: historyState.value.position });\n changeLocation(to, state, true);\n currentLocation.value = to;\n }\n function push(to, data) {\n // Add to current entry the information of where we are going\n // as well as saving the current position\n const currentState = assign({}, \n // use current history state to gracefully handle a wrong call to\n // history.replaceState\n // https://github.com/vuejs/router/issues/366\n historyState.value, history.state, {\n forward: to,\n scroll: computeScrollPosition(),\n });\n if ((process.env.NODE_ENV !== 'production') && !history.state) {\n warn(`history.state seems to have been manually replaced without preserving the necessary values. Make sure to preserve existing history state if you are manually calling history.replaceState:\\n\\n` +\n `history.replaceState(history.state, '', url)\\n\\n` +\n `You can find more information at https://router.vuejs.org/guide/migration/#Usage-of-history-state`);\n }\n changeLocation(currentState.current, currentState, true);\n const state = assign({}, buildState(currentLocation.value, to, null), { position: currentState.position + 1 }, data);\n changeLocation(to, state, false);\n currentLocation.value = to;\n }\n return {\n location: currentLocation,\n state: historyState,\n push,\n replace,\n };\n}\n/**\n * Creates an HTML5 history. Most common history for single page applications.\n *\n * @param base -\n */\nfunction createWebHistory(base) {\n base = normalizeBase(base);\n const historyNavigation = useHistoryStateNavigation(base);\n const historyListeners = useHistoryListeners(base, historyNavigation.state, historyNavigation.location, historyNavigation.replace);\n function go(delta, triggerListeners = true) {\n if (!triggerListeners)\n historyListeners.pauseListeners();\n history.go(delta);\n }\n const routerHistory = assign({\n // it's overridden right after\n location: '',\n base,\n go,\n createHref: createHref.bind(null, base),\n }, historyNavigation, historyListeners);\n Object.defineProperty(routerHistory, 'location', {\n enumerable: true,\n get: () => historyNavigation.location.value,\n });\n Object.defineProperty(routerHistory, 'state', {\n enumerable: true,\n get: () => historyNavigation.state.value,\n });\n return routerHistory;\n}\n\n/**\n * Creates an in-memory based history. The main purpose of this history is to handle SSR. It starts in a special location that is nowhere.\n * It's up to the user to replace that location with the starter location by either calling `router.push` or `router.replace`.\n *\n * @param base - Base applied to all urls, defaults to '/'\n * @returns a history object that can be passed to the router constructor\n */\nfunction createMemoryHistory(base = '') {\n let listeners = [];\n let queue = [START];\n let position = 0;\n base = normalizeBase(base);\n function setLocation(location) {\n position++;\n if (position !== queue.length) {\n // we are in the middle, we remove everything from here in the queue\n queue.splice(position);\n }\n queue.push(location);\n }\n function triggerListeners(to, from, { direction, delta }) {\n const info = {\n direction,\n delta,\n type: NavigationType.pop,\n };\n for (const callback of listeners) {\n callback(to, from, info);\n }\n }\n const routerHistory = {\n // rewritten by Object.defineProperty\n location: START,\n // TODO: should be kept in queue\n state: {},\n base,\n createHref: createHref.bind(null, base),\n replace(to) {\n // remove current entry and decrement position\n queue.splice(position--, 1);\n setLocation(to);\n },\n push(to, data) {\n setLocation(to);\n },\n listen(callback) {\n listeners.push(callback);\n return () => {\n const index = listeners.indexOf(callback);\n if (index > -1)\n listeners.splice(index, 1);\n };\n },\n destroy() {\n listeners = [];\n queue = [START];\n position = 0;\n },\n go(delta, shouldTrigger = true) {\n const from = this.location;\n const direction = \n // we are considering delta === 0 going forward, but in abstract mode\n // using 0 for the delta doesn't make sense like it does in html5 where\n // it reloads the page\n delta < 0 ? NavigationDirection.back : NavigationDirection.forward;\n position = Math.max(0, Math.min(position + delta, queue.length - 1));\n if (shouldTrigger) {\n triggerListeners(this.location, from, {\n direction,\n delta,\n });\n }\n },\n };\n Object.defineProperty(routerHistory, 'location', {\n enumerable: true,\n get: () => queue[position],\n });\n return routerHistory;\n}\n\n/**\n * Creates a hash history. Useful for web applications with no host (e.g. `file://`) or when configuring a server to\n * handle any URL is not possible.\n *\n * @param base - optional base to provide. Defaults to `location.pathname + location.search` If there is a `` tag\n * in the `head`, its value will be ignored in favor of this parameter **but note it affects all the history.pushState()\n * calls**, meaning that if you use a `` tag, it's `href` value **has to match this parameter** (ignoring anything\n * after the `#`).\n *\n * @example\n * ```js\n * // at https://example.com/folder\n * createWebHashHistory() // gives a url of `https://example.com/folder#`\n * createWebHashHistory('/folder/') // gives a url of `https://example.com/folder/#`\n * // if the `#` is provided in the base, it won't be added by `createWebHashHistory`\n * createWebHashHistory('/folder/#/app/') // gives a url of `https://example.com/folder/#/app/`\n * // you should avoid doing this because it changes the original url and breaks copying urls\n * createWebHashHistory('/other-folder/') // gives a url of `https://example.com/other-folder/#`\n *\n * // at file:///usr/etc/folder/index.html\n * // for locations with no `host`, the base is ignored\n * createWebHashHistory('/iAmIgnored') // gives a url of `file:///usr/etc/folder/index.html#`\n * ```\n */\nfunction createWebHashHistory(base) {\n // Make sure this implementation is fine in terms of encoding, specially for IE11\n // for `file://`, directly use the pathname and ignore the base\n // location.pathname contains an initial `/` even at the root: `https://example.com`\n base = location.host ? base || location.pathname + location.search : '';\n // allow the user to provide a `#` in the middle: `/base/#/app`\n if (!base.includes('#'))\n base += '#';\n if ((process.env.NODE_ENV !== 'production') && !base.endsWith('#/') && !base.endsWith('#')) {\n warn(`A hash base must end with a \"#\":\\n\"${base}\" should be \"${base.replace(/#.*$/, '#')}\".`);\n }\n return createWebHistory(base);\n}\n\nfunction isRouteLocation(route) {\n return typeof route === 'string' || (route && typeof route === 'object');\n}\nfunction isRouteName(name) {\n return typeof name === 'string' || typeof name === 'symbol';\n}\n\nconst NavigationFailureSymbol = Symbol((process.env.NODE_ENV !== 'production') ? 'navigation failure' : '');\n/**\n * Enumeration with all possible types for navigation failures. Can be passed to\n * {@link isNavigationFailure} to check for specific failures.\n */\nvar NavigationFailureType;\n(function (NavigationFailureType) {\n /**\n * An aborted navigation is a navigation that failed because a navigation\n * guard returned `false` or called `next(false)`\n */\n NavigationFailureType[NavigationFailureType[\"aborted\"] = 4] = \"aborted\";\n /**\n * A cancelled navigation is a navigation that failed because a more recent\n * navigation finished started (not necessarily finished).\n */\n NavigationFailureType[NavigationFailureType[\"cancelled\"] = 8] = \"cancelled\";\n /**\n * A duplicated navigation is a navigation that failed because it was\n * initiated while already being at the exact same location.\n */\n NavigationFailureType[NavigationFailureType[\"duplicated\"] = 16] = \"duplicated\";\n})(NavigationFailureType || (NavigationFailureType = {}));\n// DEV only debug messages\nconst ErrorTypeMessages = {\n [1 /* ErrorTypes.MATCHER_NOT_FOUND */]({ location, currentLocation }) {\n return `No match for\\n ${JSON.stringify(location)}${currentLocation\n ? '\\nwhile being at\\n' + JSON.stringify(currentLocation)\n : ''}`;\n },\n [2 /* ErrorTypes.NAVIGATION_GUARD_REDIRECT */]({ from, to, }) {\n return `Redirected from \"${from.fullPath}\" to \"${stringifyRoute(to)}\" via a navigation guard.`;\n },\n [4 /* ErrorTypes.NAVIGATION_ABORTED */]({ from, to }) {\n return `Navigation aborted from \"${from.fullPath}\" to \"${to.fullPath}\" via a navigation guard.`;\n },\n [8 /* ErrorTypes.NAVIGATION_CANCELLED */]({ from, to }) {\n return `Navigation cancelled from \"${from.fullPath}\" to \"${to.fullPath}\" with a new navigation.`;\n },\n [16 /* ErrorTypes.NAVIGATION_DUPLICATED */]({ from, to }) {\n return `Avoided redundant navigation to current location: \"${from.fullPath}\".`;\n },\n};\n/**\n * Creates a typed NavigationFailure object.\n * @internal\n * @param type - NavigationFailureType\n * @param params - { from, to }\n */\nfunction createRouterError(type, params) {\n // keep full error messages in cjs versions\n if ((process.env.NODE_ENV !== 'production') || !true) {\n return assign(new Error(ErrorTypeMessages[type](params)), {\n type,\n [NavigationFailureSymbol]: true,\n }, params);\n }\n else {\n return assign(new Error(), {\n type,\n [NavigationFailureSymbol]: true,\n }, params);\n }\n}\nfunction isNavigationFailure(error, type) {\n return (error instanceof Error &&\n NavigationFailureSymbol in error &&\n (type == null || !!(error.type & type)));\n}\nconst propertiesToLog = ['params', 'query', 'hash'];\nfunction stringifyRoute(to) {\n if (typeof to === 'string')\n return to;\n if (to.path != null)\n return to.path;\n const location = {};\n for (const key of propertiesToLog) {\n if (key in to)\n location[key] = to[key];\n }\n return JSON.stringify(location, null, 2);\n}\n\n// default pattern for a param: non-greedy everything but /\nconst BASE_PARAM_PATTERN = '[^/]+?';\nconst BASE_PATH_PARSER_OPTIONS = {\n sensitive: false,\n strict: false,\n start: true,\n end: true,\n};\n// Special Regex characters that must be escaped in static tokens\nconst REGEX_CHARS_RE = /[.+*?^${}()[\\]/\\\\]/g;\n/**\n * Creates a path parser from an array of Segments (a segment is an array of Tokens)\n *\n * @param segments - array of segments returned by tokenizePath\n * @param extraOptions - optional options for the regexp\n * @returns a PathParser\n */\nfunction tokensToParser(segments, extraOptions) {\n const options = assign({}, BASE_PATH_PARSER_OPTIONS, extraOptions);\n // the amount of scores is the same as the length of segments except for the root segment \"/\"\n const score = [];\n // the regexp as a string\n let pattern = options.start ? '^' : '';\n // extracted keys\n const keys = [];\n for (const segment of segments) {\n // the root segment needs special treatment\n const segmentScores = segment.length ? [] : [90 /* PathScore.Root */];\n // allow trailing slash\n if (options.strict && !segment.length)\n pattern += '/';\n for (let tokenIndex = 0; tokenIndex < segment.length; tokenIndex++) {\n const token = segment[tokenIndex];\n // resets the score if we are inside a sub-segment /:a-other-:b\n let subSegmentScore = 40 /* PathScore.Segment */ +\n (options.sensitive ? 0.25 /* PathScore.BonusCaseSensitive */ : 0);\n if (token.type === 0 /* TokenType.Static */) {\n // prepend the slash if we are starting a new segment\n if (!tokenIndex)\n pattern += '/';\n pattern += token.value.replace(REGEX_CHARS_RE, '\\\\$&');\n subSegmentScore += 40 /* PathScore.Static */;\n }\n else if (token.type === 1 /* TokenType.Param */) {\n const { value, repeatable, optional, regexp } = token;\n keys.push({\n name: value,\n repeatable,\n optional,\n });\n const re = regexp ? regexp : BASE_PARAM_PATTERN;\n // the user provided a custom regexp /:id(\\\\d+)\n if (re !== BASE_PARAM_PATTERN) {\n subSegmentScore += 10 /* PathScore.BonusCustomRegExp */;\n // make sure the regexp is valid before using it\n try {\n new RegExp(`(${re})`);\n }\n catch (err) {\n throw new Error(`Invalid custom RegExp for param \"${value}\" (${re}): ` +\n err.message);\n }\n }\n // when we repeat we must take care of the repeating leading slash\n let subPattern = repeatable ? `((?:${re})(?:/(?:${re}))*)` : `(${re})`;\n // prepend the slash if we are starting a new segment\n if (!tokenIndex)\n subPattern =\n // avoid an optional / if there are more segments e.g. /:p?-static\n // or /:p?-:p2\n optional && segment.length < 2\n ? `(?:/${subPattern})`\n : '/' + subPattern;\n if (optional)\n subPattern += '?';\n pattern += subPattern;\n subSegmentScore += 20 /* PathScore.Dynamic */;\n if (optional)\n subSegmentScore += -8 /* PathScore.BonusOptional */;\n if (repeatable)\n subSegmentScore += -20 /* PathScore.BonusRepeatable */;\n if (re === '.*')\n subSegmentScore += -50 /* PathScore.BonusWildcard */;\n }\n segmentScores.push(subSegmentScore);\n }\n // an empty array like /home/ -> [[{home}], []]\n // if (!segment.length) pattern += '/'\n score.push(segmentScores);\n }\n // only apply the strict bonus to the last score\n if (options.strict && options.end) {\n const i = score.length - 1;\n score[i][score[i].length - 1] += 0.7000000000000001 /* PathScore.BonusStrict */;\n }\n // TODO: dev only warn double trailing slash\n if (!options.strict)\n pattern += '/?';\n if (options.end)\n pattern += '$';\n // allow paths like /dynamic to only match dynamic or dynamic/... but not dynamic_something_else\n else if (options.strict && !pattern.endsWith('/'))\n pattern += '(?:/|$)';\n const re = new RegExp(pattern, options.sensitive ? '' : 'i');\n function parse(path) {\n const match = path.match(re);\n const params = {};\n if (!match)\n return null;\n for (let i = 1; i < match.length; i++) {\n const value = match[i] || '';\n const key = keys[i - 1];\n params[key.name] = value && key.repeatable ? value.split('/') : value;\n }\n return params;\n }\n function stringify(params) {\n let path = '';\n // for optional parameters to allow to be empty\n let avoidDuplicatedSlash = false;\n for (const segment of segments) {\n if (!avoidDuplicatedSlash || !path.endsWith('/'))\n path += '/';\n avoidDuplicatedSlash = false;\n for (const token of segment) {\n if (token.type === 0 /* TokenType.Static */) {\n path += token.value;\n }\n else if (token.type === 1 /* TokenType.Param */) {\n const { value, repeatable, optional } = token;\n const param = value in params ? params[value] : '';\n if (isArray(param) && !repeatable) {\n throw new Error(`Provided param \"${value}\" is an array but it is not repeatable (* or + modifiers)`);\n }\n const text = isArray(param)\n ? param.join('/')\n : param;\n if (!text) {\n if (optional) {\n // if we have more than one optional param like /:a?-static we don't need to care about the optional param\n if (segment.length < 2) {\n // remove the last slash as we could be at the end\n if (path.endsWith('/'))\n path = path.slice(0, -1);\n // do not append a slash on the next iteration\n else\n avoidDuplicatedSlash = true;\n }\n }\n else\n throw new Error(`Missing required param \"${value}\"`);\n }\n path += text;\n }\n }\n }\n // avoid empty path when we have multiple optional params\n return path || '/';\n }\n return {\n re,\n score,\n keys,\n parse,\n stringify,\n };\n}\n/**\n * Compares an array of numbers as used in PathParser.score and returns a\n * number. This function can be used to `sort` an array\n *\n * @param a - first array of numbers\n * @param b - second array of numbers\n * @returns 0 if both are equal, < 0 if a should be sorted first, > 0 if b\n * should be sorted first\n */\nfunction compareScoreArray(a, b) {\n let i = 0;\n while (i < a.length && i < b.length) {\n const diff = b[i] - a[i];\n // only keep going if diff === 0\n if (diff)\n return diff;\n i++;\n }\n // if the last subsegment was Static, the shorter segments should be sorted first\n // otherwise sort the longest segment first\n if (a.length < b.length) {\n return a.length === 1 && a[0] === 40 /* PathScore.Static */ + 40 /* PathScore.Segment */\n ? -1\n : 1;\n }\n else if (a.length > b.length) {\n return b.length === 1 && b[0] === 40 /* PathScore.Static */ + 40 /* PathScore.Segment */\n ? 1\n : -1;\n }\n return 0;\n}\n/**\n * Compare function that can be used with `sort` to sort an array of PathParser\n *\n * @param a - first PathParser\n * @param b - second PathParser\n * @returns 0 if both are equal, < 0 if a should be sorted first, > 0 if b\n */\nfunction comparePathParserScore(a, b) {\n let i = 0;\n const aScore = a.score;\n const bScore = b.score;\n while (i < aScore.length && i < bScore.length) {\n const comp = compareScoreArray(aScore[i], bScore[i]);\n // do not return if both are equal\n if (comp)\n return comp;\n i++;\n }\n if (Math.abs(bScore.length - aScore.length) === 1) {\n if (isLastScoreNegative(aScore))\n return 1;\n if (isLastScoreNegative(bScore))\n return -1;\n }\n // if a and b share the same score entries but b has more, sort b first\n return bScore.length - aScore.length;\n // this is the ternary version\n // return aScore.length < bScore.length\n // ? 1\n // : aScore.length > bScore.length\n // ? -1\n // : 0\n}\n/**\n * This allows detecting splats at the end of a path: /home/:id(.*)*\n *\n * @param score - score to check\n * @returns true if the last entry is negative\n */\nfunction isLastScoreNegative(score) {\n const last = score[score.length - 1];\n return score.length > 0 && last[last.length - 1] < 0;\n}\n\nconst ROOT_TOKEN = {\n type: 0 /* TokenType.Static */,\n value: '',\n};\nconst VALID_PARAM_RE = /[a-zA-Z0-9_]/;\n// After some profiling, the cache seems to be unnecessary because tokenizePath\n// (the slowest part of adding a route) is very fast\n// const tokenCache = new Map()\nfunction tokenizePath(path) {\n if (!path)\n return [[]];\n if (path === '/')\n return [[ROOT_TOKEN]];\n if (!path.startsWith('/')) {\n throw new Error((process.env.NODE_ENV !== 'production')\n ? `Route paths should start with a \"/\": \"${path}\" should be \"/${path}\".`\n : `Invalid path \"${path}\"`);\n }\n // if (tokenCache.has(path)) return tokenCache.get(path)!\n function crash(message) {\n throw new Error(`ERR (${state})/\"${buffer}\": ${message}`);\n }\n let state = 0 /* TokenizerState.Static */;\n let previousState = state;\n const tokens = [];\n // the segment will always be valid because we get into the initial state\n // with the leading /\n let segment;\n function finalizeSegment() {\n if (segment)\n tokens.push(segment);\n segment = [];\n }\n // index on the path\n let i = 0;\n // char at index\n let char;\n // buffer of the value read\n let buffer = '';\n // custom regexp for a param\n let customRe = '';\n function consumeBuffer() {\n if (!buffer)\n return;\n if (state === 0 /* TokenizerState.Static */) {\n segment.push({\n type: 0 /* TokenType.Static */,\n value: buffer,\n });\n }\n else if (state === 1 /* TokenizerState.Param */ ||\n state === 2 /* TokenizerState.ParamRegExp */ ||\n state === 3 /* TokenizerState.ParamRegExpEnd */) {\n if (segment.length > 1 && (char === '*' || char === '+'))\n crash(`A repeatable param (${buffer}) must be alone in its segment. eg: '/:ids+.`);\n segment.push({\n type: 1 /* TokenType.Param */,\n value: buffer,\n regexp: customRe,\n repeatable: char === '*' || char === '+',\n optional: char === '*' || char === '?',\n });\n }\n else {\n crash('Invalid state to consume buffer');\n }\n buffer = '';\n }\n function addCharToBuffer() {\n buffer += char;\n }\n while (i < path.length) {\n char = path[i++];\n if (char === '\\\\' && state !== 2 /* TokenizerState.ParamRegExp */) {\n previousState = state;\n state = 4 /* TokenizerState.EscapeNext */;\n continue;\n }\n switch (state) {\n case 0 /* TokenizerState.Static */:\n if (char === '/') {\n if (buffer) {\n consumeBuffer();\n }\n finalizeSegment();\n }\n else if (char === ':') {\n consumeBuffer();\n state = 1 /* TokenizerState.Param */;\n }\n else {\n addCharToBuffer();\n }\n break;\n case 4 /* TokenizerState.EscapeNext */:\n addCharToBuffer();\n state = previousState;\n break;\n case 1 /* TokenizerState.Param */:\n if (char === '(') {\n state = 2 /* TokenizerState.ParamRegExp */;\n }\n else if (VALID_PARAM_RE.test(char)) {\n addCharToBuffer();\n }\n else {\n consumeBuffer();\n state = 0 /* TokenizerState.Static */;\n // go back one character if we were not modifying\n if (char !== '*' && char !== '?' && char !== '+')\n i--;\n }\n break;\n case 2 /* TokenizerState.ParamRegExp */:\n // TODO: is it worth handling nested regexp? like :p(?:prefix_([^/]+)_suffix)\n // it already works by escaping the closing )\n // https://paths.esm.dev/?p=AAMeJbiAwQEcDKbAoAAkP60PG2R6QAvgNaA6AFACM2ABuQBB#\n // is this really something people need since you can also write\n // /prefix_:p()_suffix\n if (char === ')') {\n // handle the escaped )\n if (customRe[customRe.length - 1] == '\\\\')\n customRe = customRe.slice(0, -1) + char;\n else\n state = 3 /* TokenizerState.ParamRegExpEnd */;\n }\n else {\n customRe += char;\n }\n break;\n case 3 /* TokenizerState.ParamRegExpEnd */:\n // same as finalizing a param\n consumeBuffer();\n state = 0 /* TokenizerState.Static */;\n // go back one character if we were not modifying\n if (char !== '*' && char !== '?' && char !== '+')\n i--;\n customRe = '';\n break;\n default:\n crash('Unknown state');\n break;\n }\n }\n if (state === 2 /* TokenizerState.ParamRegExp */)\n crash(`Unfinished custom RegExp for param \"${buffer}\"`);\n consumeBuffer();\n finalizeSegment();\n // tokenCache.set(path, tokens)\n return tokens;\n}\n\nfunction createRouteRecordMatcher(record, parent, options) {\n const parser = tokensToParser(tokenizePath(record.path), options);\n // warn against params with the same name\n if ((process.env.NODE_ENV !== 'production')) {\n const existingKeys = new Set();\n for (const key of parser.keys) {\n if (existingKeys.has(key.name))\n warn(`Found duplicated params with name \"${key.name}\" for path \"${record.path}\". Only the last one will be available on \"$route.params\".`);\n existingKeys.add(key.name);\n }\n }\n const matcher = assign(parser, {\n record,\n parent,\n // these needs to be populated by the parent\n children: [],\n alias: [],\n });\n if (parent) {\n // both are aliases or both are not aliases\n // we don't want to mix them because the order is used when\n // passing originalRecord in Matcher.addRoute\n if (!matcher.record.aliasOf === !parent.record.aliasOf)\n parent.children.push(matcher);\n }\n return matcher;\n}\n\n/**\n * Creates a Router Matcher.\n *\n * @internal\n * @param routes - array of initial routes\n * @param globalOptions - global route options\n */\nfunction createRouterMatcher(routes, globalOptions) {\n // normalized ordered array of matchers\n const matchers = [];\n const matcherMap = new Map();\n globalOptions = mergeOptions({ strict: false, end: true, sensitive: false }, globalOptions);\n function getRecordMatcher(name) {\n return matcherMap.get(name);\n }\n function addRoute(record, parent, originalRecord) {\n // used later on to remove by name\n const isRootAdd = !originalRecord;\n const mainNormalizedRecord = normalizeRouteRecord(record);\n if ((process.env.NODE_ENV !== 'production')) {\n checkChildMissingNameWithEmptyPath(mainNormalizedRecord, parent);\n }\n // we might be the child of an alias\n mainNormalizedRecord.aliasOf = originalRecord && originalRecord.record;\n const options = mergeOptions(globalOptions, record);\n // generate an array of records to correctly handle aliases\n const normalizedRecords = [mainNormalizedRecord];\n if ('alias' in record) {\n const aliases = typeof record.alias === 'string' ? [record.alias] : record.alias;\n for (const alias of aliases) {\n normalizedRecords.push(\n // we need to normalize again to ensure the `mods` property\n // being non enumerable\n normalizeRouteRecord(assign({}, mainNormalizedRecord, {\n // this allows us to hold a copy of the `components` option\n // so that async components cache is hold on the original record\n components: originalRecord\n ? originalRecord.record.components\n : mainNormalizedRecord.components,\n path: alias,\n // we might be the child of an alias\n aliasOf: originalRecord\n ? originalRecord.record\n : mainNormalizedRecord,\n // the aliases are always of the same kind as the original since they\n // are defined on the same record\n })));\n }\n }\n let matcher;\n let originalMatcher;\n for (const normalizedRecord of normalizedRecords) {\n const { path } = normalizedRecord;\n // Build up the path for nested routes if the child isn't an absolute\n // route. Only add the / delimiter if the child path isn't empty and if the\n // parent path doesn't have a trailing slash\n if (parent && path[0] !== '/') {\n const parentPath = parent.record.path;\n const connectingSlash = parentPath[parentPath.length - 1] === '/' ? '' : '/';\n normalizedRecord.path =\n parent.record.path + (path && connectingSlash + path);\n }\n if ((process.env.NODE_ENV !== 'production') && normalizedRecord.path === '*') {\n throw new Error('Catch all routes (\"*\") must now be defined using a param with a custom regexp.\\n' +\n 'See more at https://router.vuejs.org/guide/migration/#Removed-star-or-catch-all-routes.');\n }\n // create the object beforehand, so it can be passed to children\n matcher = createRouteRecordMatcher(normalizedRecord, parent, options);\n if ((process.env.NODE_ENV !== 'production') && parent && path[0] === '/')\n checkMissingParamsInAbsolutePath(matcher, parent);\n // if we are an alias we must tell the original record that we exist,\n // so we can be removed\n if (originalRecord) {\n originalRecord.alias.push(matcher);\n if ((process.env.NODE_ENV !== 'production')) {\n checkSameParams(originalRecord, matcher);\n }\n }\n else {\n // otherwise, the first record is the original and others are aliases\n originalMatcher = originalMatcher || matcher;\n if (originalMatcher !== matcher)\n originalMatcher.alias.push(matcher);\n // remove the route if named and only for the top record (avoid in nested calls)\n // this works because the original record is the first one\n if (isRootAdd && record.name && !isAliasRecord(matcher)) {\n if ((process.env.NODE_ENV !== 'production')) {\n checkSameNameAsAncestor(record, parent);\n }\n removeRoute(record.name);\n }\n }\n // Avoid adding a record that doesn't display anything. This allows passing through records without a component to\n // not be reached and pass through the catch all route\n if (isMatchable(matcher)) {\n insertMatcher(matcher);\n }\n if (mainNormalizedRecord.children) {\n const children = mainNormalizedRecord.children;\n for (let i = 0; i < children.length; i++) {\n addRoute(children[i], matcher, originalRecord && originalRecord.children[i]);\n }\n }\n // if there was no original record, then the first one was not an alias and all\n // other aliases (if any) need to reference this record when adding children\n originalRecord = originalRecord || matcher;\n // TODO: add normalized records for more flexibility\n // if (parent && isAliasRecord(originalRecord)) {\n // parent.children.push(originalRecord)\n // }\n }\n return originalMatcher\n ? () => {\n // since other matchers are aliases, they should be removed by the original matcher\n removeRoute(originalMatcher);\n }\n : noop;\n }\n function removeRoute(matcherRef) {\n if (isRouteName(matcherRef)) {\n const matcher = matcherMap.get(matcherRef);\n if (matcher) {\n matcherMap.delete(matcherRef);\n matchers.splice(matchers.indexOf(matcher), 1);\n matcher.children.forEach(removeRoute);\n matcher.alias.forEach(removeRoute);\n }\n }\n else {\n const index = matchers.indexOf(matcherRef);\n if (index > -1) {\n matchers.splice(index, 1);\n if (matcherRef.record.name)\n matcherMap.delete(matcherRef.record.name);\n matcherRef.children.forEach(removeRoute);\n matcherRef.alias.forEach(removeRoute);\n }\n }\n }\n function getRoutes() {\n return matchers;\n }\n function insertMatcher(matcher) {\n const index = findInsertionIndex(matcher, matchers);\n matchers.splice(index, 0, matcher);\n // only add the original record to the name map\n if (matcher.record.name && !isAliasRecord(matcher))\n matcherMap.set(matcher.record.name, matcher);\n }\n function resolve(location, currentLocation) {\n let matcher;\n let params = {};\n let path;\n let name;\n if ('name' in location && location.name) {\n matcher = matcherMap.get(location.name);\n if (!matcher)\n throw createRouterError(1 /* ErrorTypes.MATCHER_NOT_FOUND */, {\n location,\n });\n // warn if the user is passing invalid params so they can debug it better when they get removed\n if ((process.env.NODE_ENV !== 'production')) {\n const invalidParams = Object.keys(location.params || {}).filter(paramName => !matcher.keys.find(k => k.name === paramName));\n if (invalidParams.length) {\n warn(`Discarded invalid param(s) \"${invalidParams.join('\", \"')}\" when navigating. See https://github.com/vuejs/router/blob/main/packages/router/CHANGELOG.md#414-2022-08-22 for more details.`);\n }\n }\n name = matcher.record.name;\n params = assign(\n // paramsFromLocation is a new object\n paramsFromLocation(currentLocation.params, \n // only keep params that exist in the resolved location\n // only keep optional params coming from a parent record\n matcher.keys\n .filter(k => !k.optional)\n .concat(matcher.parent ? matcher.parent.keys.filter(k => k.optional) : [])\n .map(k => k.name)), \n // discard any existing params in the current location that do not exist here\n // #1497 this ensures better active/exact matching\n location.params &&\n paramsFromLocation(location.params, matcher.keys.map(k => k.name)));\n // throws if cannot be stringified\n path = matcher.stringify(params);\n }\n else if (location.path != null) {\n // no need to resolve the path with the matcher as it was provided\n // this also allows the user to control the encoding\n path = location.path;\n if ((process.env.NODE_ENV !== 'production') && !path.startsWith('/')) {\n warn(`The Matcher cannot resolve relative paths but received \"${path}\". Unless you directly called \\`matcher.resolve(\"${path}\")\\`, this is probably a bug in vue-router. Please open an issue at https://github.com/vuejs/router/issues/new/choose.`);\n }\n matcher = matchers.find(m => m.re.test(path));\n // matcher should have a value after the loop\n if (matcher) {\n // we know the matcher works because we tested the regexp\n params = matcher.parse(path);\n name = matcher.record.name;\n }\n // location is a relative path\n }\n else {\n // match by name or path of current route\n matcher = currentLocation.name\n ? matcherMap.get(currentLocation.name)\n : matchers.find(m => m.re.test(currentLocation.path));\n if (!matcher)\n throw createRouterError(1 /* ErrorTypes.MATCHER_NOT_FOUND */, {\n location,\n currentLocation,\n });\n name = matcher.record.name;\n // since we are navigating to the same location, we don't need to pick the\n // params like when `name` is provided\n params = assign({}, currentLocation.params, location.params);\n path = matcher.stringify(params);\n }\n const matched = [];\n let parentMatcher = matcher;\n while (parentMatcher) {\n // reversed order so parents are at the beginning\n matched.unshift(parentMatcher.record);\n parentMatcher = parentMatcher.parent;\n }\n return {\n name,\n path,\n params,\n matched,\n meta: mergeMetaFields(matched),\n };\n }\n // add initial routes\n routes.forEach(route => addRoute(route));\n function clearRoutes() {\n matchers.length = 0;\n matcherMap.clear();\n }\n return {\n addRoute,\n resolve,\n removeRoute,\n clearRoutes,\n getRoutes,\n getRecordMatcher,\n };\n}\nfunction paramsFromLocation(params, keys) {\n const newParams = {};\n for (const key of keys) {\n if (key in params)\n newParams[key] = params[key];\n }\n return newParams;\n}\n/**\n * Normalizes a RouteRecordRaw. Creates a copy\n *\n * @param record\n * @returns the normalized version\n */\nfunction normalizeRouteRecord(record) {\n const normalized = {\n path: record.path,\n redirect: record.redirect,\n name: record.name,\n meta: record.meta || {},\n aliasOf: record.aliasOf,\n beforeEnter: record.beforeEnter,\n props: normalizeRecordProps(record),\n children: record.children || [],\n instances: {},\n leaveGuards: new Set(),\n updateGuards: new Set(),\n enterCallbacks: {},\n // must be declared afterwards\n // mods: {},\n components: 'components' in record\n ? record.components || null\n : record.component && { default: record.component },\n };\n // mods contain modules and shouldn't be copied,\n // logged or anything. It's just used for internal\n // advanced use cases like data loaders\n Object.defineProperty(normalized, 'mods', {\n value: {},\n });\n return normalized;\n}\n/**\n * Normalize the optional `props` in a record to always be an object similar to\n * components. Also accept a boolean for components.\n * @param record\n */\nfunction normalizeRecordProps(record) {\n const propsObject = {};\n // props does not exist on redirect records, but we can set false directly\n const props = record.props || false;\n if ('component' in record) {\n propsObject.default = props;\n }\n else {\n // NOTE: we could also allow a function to be applied to every component.\n // Would need user feedback for use cases\n for (const name in record.components)\n propsObject[name] = typeof props === 'object' ? props[name] : props;\n }\n return propsObject;\n}\n/**\n * Checks if a record or any of its parent is an alias\n * @param record\n */\nfunction isAliasRecord(record) {\n while (record) {\n if (record.record.aliasOf)\n return true;\n record = record.parent;\n }\n return false;\n}\n/**\n * Merge meta fields of an array of records\n *\n * @param matched - array of matched records\n */\nfunction mergeMetaFields(matched) {\n return matched.reduce((meta, record) => assign(meta, record.meta), {});\n}\nfunction mergeOptions(defaults, partialOptions) {\n const options = {};\n for (const key in defaults) {\n options[key] = key in partialOptions ? partialOptions[key] : defaults[key];\n }\n return options;\n}\nfunction isSameParam(a, b) {\n return (a.name === b.name &&\n a.optional === b.optional &&\n a.repeatable === b.repeatable);\n}\n/**\n * Check if a path and its alias have the same required params\n *\n * @param a - original record\n * @param b - alias record\n */\nfunction checkSameParams(a, b) {\n for (const key of a.keys) {\n if (!key.optional && !b.keys.find(isSameParam.bind(null, key)))\n return warn(`Alias \"${b.record.path}\" and the original record: \"${a.record.path}\" must have the exact same param named \"${key.name}\"`);\n }\n for (const key of b.keys) {\n if (!key.optional && !a.keys.find(isSameParam.bind(null, key)))\n return warn(`Alias \"${b.record.path}\" and the original record: \"${a.record.path}\" must have the exact same param named \"${key.name}\"`);\n }\n}\n/**\n * A route with a name and a child with an empty path without a name should warn when adding the route\n *\n * @param mainNormalizedRecord - RouteRecordNormalized\n * @param parent - RouteRecordMatcher\n */\nfunction checkChildMissingNameWithEmptyPath(mainNormalizedRecord, parent) {\n if (parent &&\n parent.record.name &&\n !mainNormalizedRecord.name &&\n !mainNormalizedRecord.path) {\n warn(`The route named \"${String(parent.record.name)}\" has a child without a name and an empty path. Using that name won't render the empty path child so you probably want to move the name to the child instead. If this is intentional, add a name to the child route to remove the warning.`);\n }\n}\nfunction checkSameNameAsAncestor(record, parent) {\n for (let ancestor = parent; ancestor; ancestor = ancestor.parent) {\n if (ancestor.record.name === record.name) {\n throw new Error(`A route named \"${String(record.name)}\" has been added as a ${parent === ancestor ? 'child' : 'descendant'} of a route with the same name. Route names must be unique and a nested route cannot use the same name as an ancestor.`);\n }\n }\n}\nfunction checkMissingParamsInAbsolutePath(record, parent) {\n for (const key of parent.keys) {\n if (!record.keys.find(isSameParam.bind(null, key)))\n return warn(`Absolute path \"${record.record.path}\" must have the exact same param named \"${key.name}\" as its parent \"${parent.record.path}\".`);\n }\n}\n/**\n * Performs a binary search to find the correct insertion index for a new matcher.\n *\n * Matchers are primarily sorted by their score. If scores are tied then we also consider parent/child relationships,\n * with descendants coming before ancestors. If there's still a tie, new routes are inserted after existing routes.\n *\n * @param matcher - new matcher to be inserted\n * @param matchers - existing matchers\n */\nfunction findInsertionIndex(matcher, matchers) {\n // First phase: binary search based on score\n let lower = 0;\n let upper = matchers.length;\n while (lower !== upper) {\n const mid = (lower + upper) >> 1;\n const sortOrder = comparePathParserScore(matcher, matchers[mid]);\n if (sortOrder < 0) {\n upper = mid;\n }\n else {\n lower = mid + 1;\n }\n }\n // Second phase: check for an ancestor with the same score\n const insertionAncestor = getInsertionAncestor(matcher);\n if (insertionAncestor) {\n upper = matchers.lastIndexOf(insertionAncestor, upper - 1);\n if ((process.env.NODE_ENV !== 'production') && upper < 0) {\n // This should never happen\n warn(`Finding ancestor route \"${insertionAncestor.record.path}\" failed for \"${matcher.record.path}\"`);\n }\n }\n return upper;\n}\nfunction getInsertionAncestor(matcher) {\n let ancestor = matcher;\n while ((ancestor = ancestor.parent)) {\n if (isMatchable(ancestor) &&\n comparePathParserScore(matcher, ancestor) === 0) {\n return ancestor;\n }\n }\n return;\n}\n/**\n * Checks if a matcher can be reachable. This means if it's possible to reach it as a route. For example, routes without\n * a component, or name, or redirect, are just used to group other routes.\n * @param matcher\n * @param matcher.record record of the matcher\n * @returns\n */\nfunction isMatchable({ record }) {\n return !!(record.name ||\n (record.components && Object.keys(record.components).length) ||\n record.redirect);\n}\n\n/**\n * Transforms a queryString into a {@link LocationQuery} object. Accept both, a\n * version with the leading `?` and without Should work as URLSearchParams\n\n * @internal\n *\n * @param search - search string to parse\n * @returns a query object\n */\nfunction parseQuery(search) {\n const query = {};\n // avoid creating an object with an empty key and empty value\n // because of split('&')\n if (search === '' || search === '?')\n return query;\n const hasLeadingIM = search[0] === '?';\n const searchParams = (hasLeadingIM ? search.slice(1) : search).split('&');\n for (let i = 0; i < searchParams.length; ++i) {\n // pre decode the + into space\n const searchParam = searchParams[i].replace(PLUS_RE, ' ');\n // allow the = character\n const eqPos = searchParam.indexOf('=');\n const key = decode(eqPos < 0 ? searchParam : searchParam.slice(0, eqPos));\n const value = eqPos < 0 ? null : decode(searchParam.slice(eqPos + 1));\n if (key in query) {\n // an extra variable for ts types\n let currentValue = query[key];\n if (!isArray(currentValue)) {\n currentValue = query[key] = [currentValue];\n }\n currentValue.push(value);\n }\n else {\n query[key] = value;\n }\n }\n return query;\n}\n/**\n * Stringifies a {@link LocationQueryRaw} object. Like `URLSearchParams`, it\n * doesn't prepend a `?`\n *\n * @internal\n *\n * @param query - query object to stringify\n * @returns string version of the query without the leading `?`\n */\nfunction stringifyQuery(query) {\n let search = '';\n for (let key in query) {\n const value = query[key];\n key = encodeQueryKey(key);\n if (value == null) {\n // only null adds the value\n if (value !== undefined) {\n search += (search.length ? '&' : '') + key;\n }\n continue;\n }\n // keep null values\n const values = isArray(value)\n ? value.map(v => v && encodeQueryValue(v))\n : [value && encodeQueryValue(value)];\n values.forEach(value => {\n // skip undefined values in arrays as if they were not present\n // smaller code than using filter\n if (value !== undefined) {\n // only append & with non-empty search\n search += (search.length ? '&' : '') + key;\n if (value != null)\n search += '=' + value;\n }\n });\n }\n return search;\n}\n/**\n * Transforms a {@link LocationQueryRaw} into a {@link LocationQuery} by casting\n * numbers into strings, removing keys with an undefined value and replacing\n * undefined with null in arrays\n *\n * @param query - query object to normalize\n * @returns a normalized query object\n */\nfunction normalizeQuery(query) {\n const normalizedQuery = {};\n for (const key in query) {\n const value = query[key];\n if (value !== undefined) {\n normalizedQuery[key] = isArray(value)\n ? value.map(v => (v == null ? null : '' + v))\n : value == null\n ? value\n : '' + value;\n }\n }\n return normalizedQuery;\n}\n\n/**\n * RouteRecord being rendered by the closest ancestor Router View. Used for\n * `onBeforeRouteUpdate` and `onBeforeRouteLeave`. rvlm stands for Router View\n * Location Matched\n *\n * @internal\n */\nconst matchedRouteKey = Symbol((process.env.NODE_ENV !== 'production') ? 'router view location matched' : '');\n/**\n * Allows overriding the router view depth to control which component in\n * `matched` is rendered. rvd stands for Router View Depth\n *\n * @internal\n */\nconst viewDepthKey = Symbol((process.env.NODE_ENV !== 'production') ? 'router view depth' : '');\n/**\n * Allows overriding the router instance returned by `useRouter` in tests. r\n * stands for router\n *\n * @internal\n */\nconst routerKey = Symbol((process.env.NODE_ENV !== 'production') ? 'router' : '');\n/**\n * Allows overriding the current route returned by `useRoute` in tests. rl\n * stands for route location\n *\n * @internal\n */\nconst routeLocationKey = Symbol((process.env.NODE_ENV !== 'production') ? 'route location' : '');\n/**\n * Allows overriding the current route used by router-view. Internally this is\n * used when the `route` prop is passed.\n *\n * @internal\n */\nconst routerViewLocationKey = Symbol((process.env.NODE_ENV !== 'production') ? 'router view location' : '');\n\n/**\n * Create a list of callbacks that can be reset. Used to create before and after navigation guards list\n */\nfunction useCallbacks() {\n let handlers = [];\n function add(handler) {\n handlers.push(handler);\n return () => {\n const i = handlers.indexOf(handler);\n if (i > -1)\n handlers.splice(i, 1);\n };\n }\n function reset() {\n handlers = [];\n }\n return {\n add,\n list: () => handlers.slice(),\n reset,\n };\n}\n\nfunction registerGuard(record, name, guard) {\n const removeFromList = () => {\n record[name].delete(guard);\n };\n onUnmounted(removeFromList);\n onDeactivated(removeFromList);\n onActivated(() => {\n record[name].add(guard);\n });\n record[name].add(guard);\n}\n/**\n * Add a navigation guard that triggers whenever the component for the current\n * location is about to be left. Similar to {@link beforeRouteLeave} but can be\n * used in any component. The guard is removed when the component is unmounted.\n *\n * @param leaveGuard - {@link NavigationGuard}\n */\nfunction onBeforeRouteLeave(leaveGuard) {\n if ((process.env.NODE_ENV !== 'production') && !getCurrentInstance()) {\n warn('getCurrentInstance() returned null. onBeforeRouteLeave() must be called at the top of a setup function');\n return;\n }\n const activeRecord = inject(matchedRouteKey, \n // to avoid warning\n {}).value;\n if (!activeRecord) {\n (process.env.NODE_ENV !== 'production') &&\n warn('No active route record was found when calling `onBeforeRouteLeave()`. Make sure you call this function inside a component child of . Maybe you called it inside of App.vue?');\n return;\n }\n registerGuard(activeRecord, 'leaveGuards', leaveGuard);\n}\n/**\n * Add a navigation guard that triggers whenever the current location is about\n * to be updated. Similar to {@link beforeRouteUpdate} but can be used in any\n * component. The guard is removed when the component is unmounted.\n *\n * @param updateGuard - {@link NavigationGuard}\n */\nfunction onBeforeRouteUpdate(updateGuard) {\n if ((process.env.NODE_ENV !== 'production') && !getCurrentInstance()) {\n warn('getCurrentInstance() returned null. onBeforeRouteUpdate() must be called at the top of a setup function');\n return;\n }\n const activeRecord = inject(matchedRouteKey, \n // to avoid warning\n {}).value;\n if (!activeRecord) {\n (process.env.NODE_ENV !== 'production') &&\n warn('No active route record was found when calling `onBeforeRouteUpdate()`. Make sure you call this function inside a component child of . Maybe you called it inside of App.vue?');\n return;\n }\n registerGuard(activeRecord, 'updateGuards', updateGuard);\n}\nfunction guardToPromiseFn(guard, to, from, record, name, runWithContext = fn => fn()) {\n // keep a reference to the enterCallbackArray to prevent pushing callbacks if a new navigation took place\n const enterCallbackArray = record &&\n // name is defined if record is because of the function overload\n (record.enterCallbacks[name] = record.enterCallbacks[name] || []);\n return () => new Promise((resolve, reject) => {\n const next = (valid) => {\n if (valid === false) {\n reject(createRouterError(4 /* ErrorTypes.NAVIGATION_ABORTED */, {\n from,\n to,\n }));\n }\n else if (valid instanceof Error) {\n reject(valid);\n }\n else if (isRouteLocation(valid)) {\n reject(createRouterError(2 /* ErrorTypes.NAVIGATION_GUARD_REDIRECT */, {\n from: to,\n to: valid,\n }));\n }\n else {\n if (enterCallbackArray &&\n // since enterCallbackArray is truthy, both record and name also are\n record.enterCallbacks[name] === enterCallbackArray &&\n typeof valid === 'function') {\n enterCallbackArray.push(valid);\n }\n resolve();\n }\n };\n // wrapping with Promise.resolve allows it to work with both async and sync guards\n const guardReturn = runWithContext(() => guard.call(record && record.instances[name], to, from, (process.env.NODE_ENV !== 'production') ? canOnlyBeCalledOnce(next, to, from) : next));\n let guardCall = Promise.resolve(guardReturn);\n if (guard.length < 3)\n guardCall = guardCall.then(next);\n if ((process.env.NODE_ENV !== 'production') && guard.length > 2) {\n const message = `The \"next\" callback was never called inside of ${guard.name ? '\"' + guard.name + '\"' : ''}:\\n${guard.toString()}\\n. If you are returning a value instead of calling \"next\", make sure to remove the \"next\" parameter from your function.`;\n if (typeof guardReturn === 'object' && 'then' in guardReturn) {\n guardCall = guardCall.then(resolvedValue => {\n // @ts-expect-error: _called is added at canOnlyBeCalledOnce\n if (!next._called) {\n warn(message);\n return Promise.reject(new Error('Invalid navigation guard'));\n }\n return resolvedValue;\n });\n }\n else if (guardReturn !== undefined) {\n // @ts-expect-error: _called is added at canOnlyBeCalledOnce\n if (!next._called) {\n warn(message);\n reject(new Error('Invalid navigation guard'));\n return;\n }\n }\n }\n guardCall.catch(err => reject(err));\n });\n}\nfunction canOnlyBeCalledOnce(next, to, from) {\n let called = 0;\n return function () {\n if (called++ === 1)\n warn(`The \"next\" callback was called more than once in one navigation guard when going from \"${from.fullPath}\" to \"${to.fullPath}\". It should be called exactly one time in each navigation guard. This will fail in production.`);\n // @ts-expect-error: we put it in the original one because it's easier to check\n next._called = true;\n if (called === 1)\n next.apply(null, arguments);\n };\n}\nfunction extractComponentsGuards(matched, guardType, to, from, runWithContext = fn => fn()) {\n const guards = [];\n for (const record of matched) {\n if ((process.env.NODE_ENV !== 'production') && !record.components && !record.children.length) {\n warn(`Record with path \"${record.path}\" is either missing a \"component(s)\"` +\n ` or \"children\" property.`);\n }\n for (const name in record.components) {\n let rawComponent = record.components[name];\n if ((process.env.NODE_ENV !== 'production')) {\n if (!rawComponent ||\n (typeof rawComponent !== 'object' &&\n typeof rawComponent !== 'function')) {\n warn(`Component \"${name}\" in record with path \"${record.path}\" is not` +\n ` a valid component. Received \"${String(rawComponent)}\".`);\n // throw to ensure we stop here but warn to ensure the message isn't\n // missed by the user\n throw new Error('Invalid route component');\n }\n else if ('then' in rawComponent) {\n // warn if user wrote import('/component.vue') instead of () =>\n // import('./component.vue')\n warn(`Component \"${name}\" in record with path \"${record.path}\" is a ` +\n `Promise instead of a function that returns a Promise. Did you ` +\n `write \"import('./MyPage.vue')\" instead of ` +\n `\"() => import('./MyPage.vue')\" ? This will break in ` +\n `production if not fixed.`);\n const promise = rawComponent;\n rawComponent = () => promise;\n }\n else if (rawComponent.__asyncLoader &&\n // warn only once per component\n !rawComponent.__warnedDefineAsync) {\n rawComponent.__warnedDefineAsync = true;\n warn(`Component \"${name}\" in record with path \"${record.path}\" is defined ` +\n `using \"defineAsyncComponent()\". ` +\n `Write \"() => import('./MyPage.vue')\" instead of ` +\n `\"defineAsyncComponent(() => import('./MyPage.vue'))\".`);\n }\n }\n // skip update and leave guards if the route component is not mounted\n if (guardType !== 'beforeRouteEnter' && !record.instances[name])\n continue;\n if (isRouteComponent(rawComponent)) {\n // __vccOpts is added by vue-class-component and contain the regular options\n const options = rawComponent.__vccOpts || rawComponent;\n const guard = options[guardType];\n guard &&\n guards.push(guardToPromiseFn(guard, to, from, record, name, runWithContext));\n }\n else {\n // start requesting the chunk already\n let componentPromise = rawComponent();\n if ((process.env.NODE_ENV !== 'production') && !('catch' in componentPromise)) {\n warn(`Component \"${name}\" in record with path \"${record.path}\" is a function that does not return a Promise. If you were passing a functional component, make sure to add a \"displayName\" to the component. This will break in production if not fixed.`);\n componentPromise = Promise.resolve(componentPromise);\n }\n guards.push(() => componentPromise.then(resolved => {\n if (!resolved)\n throw new Error(`Couldn't resolve component \"${name}\" at \"${record.path}\"`);\n const resolvedComponent = isESModule(resolved)\n ? resolved.default\n : resolved;\n // keep the resolved module for plugins like data loaders\n record.mods[name] = resolved;\n // replace the function with the resolved component\n // cannot be null or undefined because we went into the for loop\n record.components[name] = resolvedComponent;\n // __vccOpts is added by vue-class-component and contain the regular options\n const options = resolvedComponent.__vccOpts || resolvedComponent;\n const guard = options[guardType];\n return (guard &&\n guardToPromiseFn(guard, to, from, record, name, runWithContext)());\n }));\n }\n }\n }\n return guards;\n}\n/**\n * Ensures a route is loaded, so it can be passed as o prop to ``.\n *\n * @param route - resolved route to load\n */\nfunction loadRouteLocation(route) {\n return route.matched.every(record => record.redirect)\n ? Promise.reject(new Error('Cannot load a route that redirects.'))\n : Promise.all(route.matched.map(record => record.components &&\n Promise.all(Object.keys(record.components).reduce((promises, name) => {\n const rawComponent = record.components[name];\n if (typeof rawComponent === 'function' &&\n !('displayName' in rawComponent)) {\n promises.push(rawComponent().then(resolved => {\n if (!resolved)\n return Promise.reject(new Error(`Couldn't resolve component \"${name}\" at \"${record.path}\". Ensure you passed a function that returns a promise.`));\n const resolvedComponent = isESModule(resolved)\n ? resolved.default\n : resolved;\n // keep the resolved module for plugins like data loaders\n record.mods[name] = resolved;\n // replace the function with the resolved component\n // cannot be null or undefined because we went into the for loop\n record.components[name] = resolvedComponent;\n return;\n }));\n }\n return promises;\n }, [])))).then(() => route);\n}\n\n// TODO: we could allow currentRoute as a prop to expose `isActive` and\n// `isExactActive` behavior should go through an RFC\n/**\n * Returns the internal behavior of a {@link RouterLink} without the rendering part.\n *\n * @param props - a `to` location and an optional `replace` flag\n */\nfunction useLink(props) {\n const router = inject(routerKey);\n const currentRoute = inject(routeLocationKey);\n let hasPrevious = false;\n let previousTo = null;\n const route = computed(() => {\n const to = unref(props.to);\n if ((process.env.NODE_ENV !== 'production') && (!hasPrevious || to !== previousTo)) {\n if (!isRouteLocation(to)) {\n if (hasPrevious) {\n warn(`Invalid value for prop \"to\" in useLink()\\n- to:`, to, `\\n- previous to:`, previousTo, `\\n- props:`, props);\n }\n else {\n warn(`Invalid value for prop \"to\" in useLink()\\n- to:`, to, `\\n- props:`, props);\n }\n }\n previousTo = to;\n hasPrevious = true;\n }\n return router.resolve(to);\n });\n const activeRecordIndex = computed(() => {\n const { matched } = route.value;\n const { length } = matched;\n const routeMatched = matched[length - 1];\n const currentMatched = currentRoute.matched;\n if (!routeMatched || !currentMatched.length)\n return -1;\n const index = currentMatched.findIndex(isSameRouteRecord.bind(null, routeMatched));\n if (index > -1)\n return index;\n // possible parent record\n const parentRecordPath = getOriginalPath(matched[length - 2]);\n return (\n // we are dealing with nested routes\n length > 1 &&\n // if the parent and matched route have the same path, this link is\n // referring to the empty child. Or we currently are on a different\n // child of the same parent\n getOriginalPath(routeMatched) === parentRecordPath &&\n // avoid comparing the child with its parent\n currentMatched[currentMatched.length - 1].path !== parentRecordPath\n ? currentMatched.findIndex(isSameRouteRecord.bind(null, matched[length - 2]))\n : index);\n });\n const isActive = computed(() => activeRecordIndex.value > -1 &&\n includesParams(currentRoute.params, route.value.params));\n const isExactActive = computed(() => activeRecordIndex.value > -1 &&\n activeRecordIndex.value === currentRoute.matched.length - 1 &&\n isSameRouteLocationParams(currentRoute.params, route.value.params));\n function navigate(e = {}) {\n if (guardEvent(e)) {\n const p = router[unref(props.replace) ? 'replace' : 'push'](unref(props.to)\n // avoid uncaught errors are they are logged anyway\n ).catch(noop);\n if (props.viewTransition &&\n typeof document !== 'undefined' &&\n 'startViewTransition' in document) {\n document.startViewTransition(() => p);\n }\n return p;\n }\n return Promise.resolve();\n }\n // devtools only\n if (((process.env.NODE_ENV !== 'production') || __VUE_PROD_DEVTOOLS__) && isBrowser) {\n const instance = getCurrentInstance();\n if (instance) {\n const linkContextDevtools = {\n route: route.value,\n isActive: isActive.value,\n isExactActive: isExactActive.value,\n error: null,\n };\n // @ts-expect-error: this is internal\n instance.__vrl_devtools = instance.__vrl_devtools || [];\n // @ts-expect-error: this is internal\n instance.__vrl_devtools.push(linkContextDevtools);\n watchEffect(() => {\n linkContextDevtools.route = route.value;\n linkContextDevtools.isActive = isActive.value;\n linkContextDevtools.isExactActive = isExactActive.value;\n linkContextDevtools.error = isRouteLocation(unref(props.to))\n ? null\n : 'Invalid \"to\" value';\n }, { flush: 'post' });\n }\n }\n /**\n * NOTE: update {@link _RouterLinkI}'s `$slots` type when updating this\n */\n return {\n route,\n href: computed(() => route.value.href),\n isActive,\n isExactActive,\n navigate,\n };\n}\nfunction preferSingleVNode(vnodes) {\n return vnodes.length === 1 ? vnodes[0] : vnodes;\n}\nconst RouterLinkImpl = /*#__PURE__*/ defineComponent({\n name: 'RouterLink',\n compatConfig: { MODE: 3 },\n props: {\n to: {\n type: [String, Object],\n required: true,\n },\n replace: Boolean,\n activeClass: String,\n // inactiveClass: String,\n exactActiveClass: String,\n custom: Boolean,\n ariaCurrentValue: {\n type: String,\n default: 'page',\n },\n },\n useLink,\n setup(props, { slots }) {\n const link = reactive(useLink(props));\n const { options } = inject(routerKey);\n const elClass = computed(() => ({\n [getLinkClass(props.activeClass, options.linkActiveClass, 'router-link-active')]: link.isActive,\n // [getLinkClass(\n // props.inactiveClass,\n // options.linkInactiveClass,\n // 'router-link-inactive'\n // )]: !link.isExactActive,\n [getLinkClass(props.exactActiveClass, options.linkExactActiveClass, 'router-link-exact-active')]: link.isExactActive,\n }));\n return () => {\n const children = slots.default && preferSingleVNode(slots.default(link));\n return props.custom\n ? children\n : h('a', {\n 'aria-current': link.isExactActive\n ? props.ariaCurrentValue\n : null,\n href: link.href,\n // this would override user added attrs but Vue will still add\n // the listener, so we end up triggering both\n onClick: link.navigate,\n class: elClass.value,\n }, children);\n };\n },\n});\n// export the public type for h/tsx inference\n// also to avoid inline import() in generated d.ts files\n/**\n * Component to render a link that triggers a navigation on click.\n */\nconst RouterLink = RouterLinkImpl;\nfunction guardEvent(e) {\n // don't redirect with control keys\n if (e.metaKey || e.altKey || e.ctrlKey || e.shiftKey)\n return;\n // don't redirect when preventDefault called\n if (e.defaultPrevented)\n return;\n // don't redirect on right click\n if (e.button !== undefined && e.button !== 0)\n return;\n // don't redirect if `target=\"_blank\"`\n // @ts-expect-error getAttribute does exist\n if (e.currentTarget && e.currentTarget.getAttribute) {\n // @ts-expect-error getAttribute exists\n const target = e.currentTarget.getAttribute('target');\n if (/\\b_blank\\b/i.test(target))\n return;\n }\n // this may be a Weex event which doesn't have this method\n if (e.preventDefault)\n e.preventDefault();\n return true;\n}\nfunction includesParams(outer, inner) {\n for (const key in inner) {\n const innerValue = inner[key];\n const outerValue = outer[key];\n if (typeof innerValue === 'string') {\n if (innerValue !== outerValue)\n return false;\n }\n else {\n if (!isArray(outerValue) ||\n outerValue.length !== innerValue.length ||\n innerValue.some((value, i) => value !== outerValue[i]))\n return false;\n }\n }\n return true;\n}\n/**\n * Get the original path value of a record by following its aliasOf\n * @param record\n */\nfunction getOriginalPath(record) {\n return record ? (record.aliasOf ? record.aliasOf.path : record.path) : '';\n}\n/**\n * Utility class to get the active class based on defaults.\n * @param propClass\n * @param globalClass\n * @param defaultClass\n */\nconst getLinkClass = (propClass, globalClass, defaultClass) => propClass != null\n ? propClass\n : globalClass != null\n ? globalClass\n : defaultClass;\n\nconst RouterViewImpl = /*#__PURE__*/ defineComponent({\n name: 'RouterView',\n // #674 we manually inherit them\n inheritAttrs: false,\n props: {\n name: {\n type: String,\n default: 'default',\n },\n route: Object,\n },\n // Better compat for @vue/compat users\n // https://github.com/vuejs/router/issues/1315\n compatConfig: { MODE: 3 },\n setup(props, { attrs, slots }) {\n (process.env.NODE_ENV !== 'production') && warnDeprecatedUsage();\n const injectedRoute = inject(routerViewLocationKey);\n const routeToDisplay = computed(() => props.route || injectedRoute.value);\n const injectedDepth = inject(viewDepthKey, 0);\n // The depth changes based on empty components option, which allows passthrough routes e.g. routes with children\n // that are used to reuse the `path` property\n const depth = computed(() => {\n let initialDepth = unref(injectedDepth);\n const { matched } = routeToDisplay.value;\n let matchedRoute;\n while ((matchedRoute = matched[initialDepth]) &&\n !matchedRoute.components) {\n initialDepth++;\n }\n return initialDepth;\n });\n const matchedRouteRef = computed(() => routeToDisplay.value.matched[depth.value]);\n provide(viewDepthKey, computed(() => depth.value + 1));\n provide(matchedRouteKey, matchedRouteRef);\n provide(routerViewLocationKey, routeToDisplay);\n const viewRef = ref();\n // watch at the same time the component instance, the route record we are\n // rendering, and the name\n watch(() => [viewRef.value, matchedRouteRef.value, props.name], ([instance, to, name], [oldInstance, from, oldName]) => {\n // copy reused instances\n if (to) {\n // this will update the instance for new instances as well as reused\n // instances when navigating to a new route\n to.instances[name] = instance;\n // the component instance is reused for a different route or name, so\n // we copy any saved update or leave guards. With async setup, the\n // mounting component will mount before the matchedRoute changes,\n // making instance === oldInstance, so we check if guards have been\n // added before. This works because we remove guards when\n // unmounting/deactivating components\n if (from && from !== to && instance && instance === oldInstance) {\n if (!to.leaveGuards.size) {\n to.leaveGuards = from.leaveGuards;\n }\n if (!to.updateGuards.size) {\n to.updateGuards = from.updateGuards;\n }\n }\n }\n // trigger beforeRouteEnter next callbacks\n if (instance &&\n to &&\n // if there is no instance but to and from are the same this might be\n // the first visit\n (!from || !isSameRouteRecord(to, from) || !oldInstance)) {\n (to.enterCallbacks[name] || []).forEach(callback => callback(instance));\n }\n }, { flush: 'post' });\n return () => {\n const route = routeToDisplay.value;\n // we need the value at the time we render because when we unmount, we\n // navigated to a different location so the value is different\n const currentName = props.name;\n const matchedRoute = matchedRouteRef.value;\n const ViewComponent = matchedRoute && matchedRoute.components[currentName];\n if (!ViewComponent) {\n return normalizeSlot(slots.default, { Component: ViewComponent, route });\n }\n // props from route configuration\n const routePropsOption = matchedRoute.props[currentName];\n const routeProps = routePropsOption\n ? routePropsOption === true\n ? route.params\n : typeof routePropsOption === 'function'\n ? routePropsOption(route)\n : routePropsOption\n : null;\n const onVnodeUnmounted = vnode => {\n // remove the instance reference to prevent leak\n if (vnode.component.isUnmounted) {\n matchedRoute.instances[currentName] = null;\n }\n };\n const component = h(ViewComponent, assign({}, routeProps, attrs, {\n onVnodeUnmounted,\n ref: viewRef,\n }));\n if (((process.env.NODE_ENV !== 'production') || __VUE_PROD_DEVTOOLS__) &&\n isBrowser &&\n component.ref) {\n // TODO: can display if it's an alias, its props\n const info = {\n depth: depth.value,\n name: matchedRoute.name,\n path: matchedRoute.path,\n meta: matchedRoute.meta,\n };\n const internalInstances = isArray(component.ref)\n ? component.ref.map(r => r.i)\n : [component.ref.i];\n internalInstances.forEach(instance => {\n // @ts-expect-error\n instance.__vrv_devtools = info;\n });\n }\n return (\n // pass the vnode to the slot as a prop.\n // h and both accept vnodes\n normalizeSlot(slots.default, { Component: component, route }) ||\n component);\n };\n },\n});\nfunction normalizeSlot(slot, data) {\n if (!slot)\n return null;\n const slotContent = slot(data);\n return slotContent.length === 1 ? slotContent[0] : slotContent;\n}\n// export the public type for h/tsx inference\n// also to avoid inline import() in generated d.ts files\n/**\n * Component to display the current route the user is at.\n */\nconst RouterView = RouterViewImpl;\n// warn against deprecated usage with & \n// due to functional component being no longer eager in Vue 3\nfunction warnDeprecatedUsage() {\n const instance = getCurrentInstance();\n const parentName = instance.parent && instance.parent.type.name;\n const parentSubTreeType = instance.parent && instance.parent.subTree && instance.parent.subTree.type;\n if (parentName &&\n (parentName === 'KeepAlive' || parentName.includes('Transition')) &&\n typeof parentSubTreeType === 'object' &&\n parentSubTreeType.name === 'RouterView') {\n const comp = parentName === 'KeepAlive' ? 'keep-alive' : 'transition';\n warn(` can no longer be used directly inside or .\\n` +\n `Use slot props instead:\\n\\n` +\n `\\n` +\n ` <${comp}>\\n` +\n ` \\n` +\n ` \\n` +\n ``);\n }\n}\n\n/**\n * Copies a route location and removes any problematic properties that cannot be shown in devtools (e.g. Vue instances).\n *\n * @param routeLocation - routeLocation to format\n * @param tooltip - optional tooltip\n * @returns a copy of the routeLocation\n */\nfunction formatRouteLocation(routeLocation, tooltip) {\n const copy = assign({}, routeLocation, {\n // remove variables that can contain vue instances\n matched: routeLocation.matched.map(matched => omit(matched, ['instances', 'children', 'aliasOf'])),\n });\n return {\n _custom: {\n type: null,\n readOnly: true,\n display: routeLocation.fullPath,\n tooltip,\n value: copy,\n },\n };\n}\nfunction formatDisplay(display) {\n return {\n _custom: {\n display,\n },\n };\n}\n// to support multiple router instances\nlet routerId = 0;\nfunction addDevtools(app, router, matcher) {\n // Take over router.beforeEach and afterEach\n // make sure we are not registering the devtool twice\n if (router.__hasDevtools)\n return;\n router.__hasDevtools = true;\n // increment to support multiple router instances\n const id = routerId++;\n setupDevtoolsPlugin({\n id: 'org.vuejs.router' + (id ? '.' + id : ''),\n label: 'Vue Router',\n packageName: 'vue-router',\n homepage: 'https://router.vuejs.org',\n logo: 'https://router.vuejs.org/logo.png',\n componentStateTypes: ['Routing'],\n app,\n }, api => {\n if (typeof api.now !== 'function') {\n console.warn('[Vue Router]: You seem to be using an outdated version of Vue Devtools. Are you still using the Beta release instead of the stable one? You can find the links at https://devtools.vuejs.org/guide/installation.html.');\n }\n // display state added by the router\n api.on.inspectComponent((payload, ctx) => {\n if (payload.instanceData) {\n payload.instanceData.state.push({\n type: 'Routing',\n key: '$route',\n editable: false,\n value: formatRouteLocation(router.currentRoute.value, 'Current Route'),\n });\n }\n });\n // mark router-link as active and display tags on router views\n api.on.visitComponentTree(({ treeNode: node, componentInstance }) => {\n if (componentInstance.__vrv_devtools) {\n const info = componentInstance.__vrv_devtools;\n node.tags.push({\n label: (info.name ? `${info.name.toString()}: ` : '') + info.path,\n textColor: 0,\n tooltip: 'This component is rendered by <router-view>',\n backgroundColor: PINK_500,\n });\n }\n // if multiple useLink are used\n if (isArray(componentInstance.__vrl_devtools)) {\n componentInstance.__devtoolsApi = api;\n componentInstance.__vrl_devtools.forEach(devtoolsData => {\n let label = devtoolsData.route.path;\n let backgroundColor = ORANGE_400;\n let tooltip = '';\n let textColor = 0;\n if (devtoolsData.error) {\n label = devtoolsData.error;\n backgroundColor = RED_100;\n textColor = RED_700;\n }\n else if (devtoolsData.isExactActive) {\n backgroundColor = LIME_500;\n tooltip = 'This is exactly active';\n }\n else if (devtoolsData.isActive) {\n backgroundColor = BLUE_600;\n tooltip = 'This link is active';\n }\n node.tags.push({\n label,\n textColor,\n tooltip,\n backgroundColor,\n });\n });\n }\n });\n watch(router.currentRoute, () => {\n // refresh active state\n refreshRoutesView();\n api.notifyComponentUpdate();\n api.sendInspectorTree(routerInspectorId);\n api.sendInspectorState(routerInspectorId);\n });\n const navigationsLayerId = 'router:navigations:' + id;\n api.addTimelineLayer({\n id: navigationsLayerId,\n label: `Router${id ? ' ' + id : ''} Navigations`,\n color: 0x40a8c4,\n });\n // const errorsLayerId = 'router:errors'\n // api.addTimelineLayer({\n // id: errorsLayerId,\n // label: 'Router Errors',\n // color: 0xea5455,\n // })\n router.onError((error, to) => {\n api.addTimelineEvent({\n layerId: navigationsLayerId,\n event: {\n title: 'Error during Navigation',\n subtitle: to.fullPath,\n logType: 'error',\n time: api.now(),\n data: { error },\n groupId: to.meta.__navigationId,\n },\n });\n });\n // attached to `meta` and used to group events\n let navigationId = 0;\n router.beforeEach((to, from) => {\n const data = {\n guard: formatDisplay('beforeEach'),\n from: formatRouteLocation(from, 'Current Location during this navigation'),\n to: formatRouteLocation(to, 'Target location'),\n };\n // Used to group navigations together, hide from devtools\n Object.defineProperty(to.meta, '__navigationId', {\n value: navigationId++,\n });\n api.addTimelineEvent({\n layerId: navigationsLayerId,\n event: {\n time: api.now(),\n title: 'Start of navigation',\n subtitle: to.fullPath,\n data,\n groupId: to.meta.__navigationId,\n },\n });\n });\n router.afterEach((to, from, failure) => {\n const data = {\n guard: formatDisplay('afterEach'),\n };\n if (failure) {\n data.failure = {\n _custom: {\n type: Error,\n readOnly: true,\n display: failure ? failure.message : '',\n tooltip: 'Navigation Failure',\n value: failure,\n },\n };\n data.status = formatDisplay('❌');\n }\n else {\n data.status = formatDisplay('✅');\n }\n // we set here to have the right order\n data.from = formatRouteLocation(from, 'Current Location during this navigation');\n data.to = formatRouteLocation(to, 'Target location');\n api.addTimelineEvent({\n layerId: navigationsLayerId,\n event: {\n title: 'End of navigation',\n subtitle: to.fullPath,\n time: api.now(),\n data,\n logType: failure ? 'warning' : 'default',\n groupId: to.meta.__navigationId,\n },\n });\n });\n /**\n * Inspector of Existing routes\n */\n const routerInspectorId = 'router-inspector:' + id;\n api.addInspector({\n id: routerInspectorId,\n label: 'Routes' + (id ? ' ' + id : ''),\n icon: 'book',\n treeFilterPlaceholder: 'Search routes',\n });\n function refreshRoutesView() {\n // the routes view isn't active\n if (!activeRoutesPayload)\n return;\n const payload = activeRoutesPayload;\n // children routes will appear as nested\n let routes = matcher.getRoutes().filter(route => !route.parent ||\n // these routes have a parent with no component which will not appear in the view\n // therefore we still need to include them\n !route.parent.record.components);\n // reset match state to false\n routes.forEach(resetMatchStateOnRouteRecord);\n // apply a match state if there is a payload\n if (payload.filter) {\n routes = routes.filter(route => \n // save matches state based on the payload\n isRouteMatching(route, payload.filter.toLowerCase()));\n }\n // mark active routes\n routes.forEach(route => markRouteRecordActive(route, router.currentRoute.value));\n payload.rootNodes = routes.map(formatRouteRecordForInspector);\n }\n let activeRoutesPayload;\n api.on.getInspectorTree(payload => {\n activeRoutesPayload = payload;\n if (payload.app === app && payload.inspectorId === routerInspectorId) {\n refreshRoutesView();\n }\n });\n /**\n * Display information about the currently selected route record\n */\n api.on.getInspectorState(payload => {\n if (payload.app === app && payload.inspectorId === routerInspectorId) {\n const routes = matcher.getRoutes();\n const route = routes.find(route => route.record.__vd_id === payload.nodeId);\n if (route) {\n payload.state = {\n options: formatRouteRecordMatcherForStateInspector(route),\n };\n }\n }\n });\n api.sendInspectorTree(routerInspectorId);\n api.sendInspectorState(routerInspectorId);\n });\n}\nfunction modifierForKey(key) {\n if (key.optional) {\n return key.repeatable ? '*' : '?';\n }\n else {\n return key.repeatable ? '+' : '';\n }\n}\nfunction formatRouteRecordMatcherForStateInspector(route) {\n const { record } = route;\n const fields = [\n { editable: false, key: 'path', value: record.path },\n ];\n if (record.name != null) {\n fields.push({\n editable: false,\n key: 'name',\n value: record.name,\n });\n }\n fields.push({ editable: false, key: 'regexp', value: route.re });\n if (route.keys.length) {\n fields.push({\n editable: false,\n key: 'keys',\n value: {\n _custom: {\n type: null,\n readOnly: true,\n display: route.keys\n .map(key => `${key.name}${modifierForKey(key)}`)\n .join(' '),\n tooltip: 'Param keys',\n value: route.keys,\n },\n },\n });\n }\n if (record.redirect != null) {\n fields.push({\n editable: false,\n key: 'redirect',\n value: record.redirect,\n });\n }\n if (route.alias.length) {\n fields.push({\n editable: false,\n key: 'aliases',\n value: route.alias.map(alias => alias.record.path),\n });\n }\n if (Object.keys(route.record.meta).length) {\n fields.push({\n editable: false,\n key: 'meta',\n value: route.record.meta,\n });\n }\n fields.push({\n key: 'score',\n editable: false,\n value: {\n _custom: {\n type: null,\n readOnly: true,\n display: route.score.map(score => score.join(', ')).join(' | '),\n tooltip: 'Score used to sort routes',\n value: route.score,\n },\n },\n });\n return fields;\n}\n/**\n * Extracted from tailwind palette\n */\nconst PINK_500 = 0xec4899;\nconst BLUE_600 = 0x2563eb;\nconst LIME_500 = 0x84cc16;\nconst CYAN_400 = 0x22d3ee;\nconst ORANGE_400 = 0xfb923c;\n// const GRAY_100 = 0xf4f4f5\nconst DARK = 0x666666;\nconst RED_100 = 0xfee2e2;\nconst RED_700 = 0xb91c1c;\nfunction formatRouteRecordForInspector(route) {\n const tags = [];\n const { record } = route;\n if (record.name != null) {\n tags.push({\n label: String(record.name),\n textColor: 0,\n backgroundColor: CYAN_400,\n });\n }\n if (record.aliasOf) {\n tags.push({\n label: 'alias',\n textColor: 0,\n backgroundColor: ORANGE_400,\n });\n }\n if (route.__vd_match) {\n tags.push({\n label: 'matches',\n textColor: 0,\n backgroundColor: PINK_500,\n });\n }\n if (route.__vd_exactActive) {\n tags.push({\n label: 'exact',\n textColor: 0,\n backgroundColor: LIME_500,\n });\n }\n if (route.__vd_active) {\n tags.push({\n label: 'active',\n textColor: 0,\n backgroundColor: BLUE_600,\n });\n }\n if (record.redirect) {\n tags.push({\n label: typeof record.redirect === 'string'\n ? `redirect: ${record.redirect}`\n : 'redirects',\n textColor: 0xffffff,\n backgroundColor: DARK,\n });\n }\n // add an id to be able to select it. Using the `path` is not possible because\n // empty path children would collide with their parents\n let id = record.__vd_id;\n if (id == null) {\n id = String(routeRecordId++);\n record.__vd_id = id;\n }\n return {\n id,\n label: record.path,\n tags,\n children: route.children.map(formatRouteRecordForInspector),\n };\n}\n// incremental id for route records and inspector state\nlet routeRecordId = 0;\nconst EXTRACT_REGEXP_RE = /^\\/(.*)\\/([a-z]*)$/;\nfunction markRouteRecordActive(route, currentRoute) {\n // no route will be active if matched is empty\n // reset the matching state\n const isExactActive = currentRoute.matched.length &&\n isSameRouteRecord(currentRoute.matched[currentRoute.matched.length - 1], route.record);\n route.__vd_exactActive = route.__vd_active = isExactActive;\n if (!isExactActive) {\n route.__vd_active = currentRoute.matched.some(match => isSameRouteRecord(match, route.record));\n }\n route.children.forEach(childRoute => markRouteRecordActive(childRoute, currentRoute));\n}\nfunction resetMatchStateOnRouteRecord(route) {\n route.__vd_match = false;\n route.children.forEach(resetMatchStateOnRouteRecord);\n}\nfunction isRouteMatching(route, filter) {\n const found = String(route.re).match(EXTRACT_REGEXP_RE);\n route.__vd_match = false;\n if (!found || found.length < 3) {\n return false;\n }\n // use a regexp without $ at the end to match nested routes better\n const nonEndingRE = new RegExp(found[1].replace(/\\$$/, ''), found[2]);\n if (nonEndingRE.test(filter)) {\n // mark children as matches\n route.children.forEach(child => isRouteMatching(child, filter));\n // exception case: `/`\n if (route.record.path !== '/' || filter === '/') {\n route.__vd_match = route.re.test(filter);\n return true;\n }\n // hide the / route\n return false;\n }\n const path = route.record.path.toLowerCase();\n const decodedPath = decode(path);\n // also allow partial matching on the path\n if (!filter.startsWith('/') &&\n (decodedPath.includes(filter) || path.includes(filter)))\n return true;\n if (decodedPath.startsWith(filter) || path.startsWith(filter))\n return true;\n if (route.record.name && String(route.record.name).includes(filter))\n return true;\n return route.children.some(child => isRouteMatching(child, filter));\n}\nfunction omit(obj, keys) {\n const ret = {};\n for (const key in obj) {\n if (!keys.includes(key)) {\n // @ts-expect-error\n ret[key] = obj[key];\n }\n }\n return ret;\n}\n\n/**\n * Creates a Router instance that can be used by a Vue app.\n *\n * @param options - {@link RouterOptions}\n */\nfunction createRouter(options) {\n const matcher = createRouterMatcher(options.routes, options);\n const parseQuery$1 = options.parseQuery || parseQuery;\n const stringifyQuery$1 = options.stringifyQuery || stringifyQuery;\n const routerHistory = options.history;\n if ((process.env.NODE_ENV !== 'production') && !routerHistory)\n throw new Error('Provide the \"history\" option when calling \"createRouter()\":' +\n ' https://router.vuejs.org/api/interfaces/RouterOptions.html#history');\n const beforeGuards = useCallbacks();\n const beforeResolveGuards = useCallbacks();\n const afterGuards = useCallbacks();\n const currentRoute = shallowRef(START_LOCATION_NORMALIZED);\n let pendingLocation = START_LOCATION_NORMALIZED;\n // leave the scrollRestoration if no scrollBehavior is provided\n if (isBrowser && options.scrollBehavior && 'scrollRestoration' in history) {\n history.scrollRestoration = 'manual';\n }\n const normalizeParams = applyToParams.bind(null, paramValue => '' + paramValue);\n const encodeParams = applyToParams.bind(null, encodeParam);\n const decodeParams = \n // @ts-expect-error: intentionally avoid the type check\n applyToParams.bind(null, decode);\n function addRoute(parentOrRoute, route) {\n let parent;\n let record;\n if (isRouteName(parentOrRoute)) {\n parent = matcher.getRecordMatcher(parentOrRoute);\n if ((process.env.NODE_ENV !== 'production') && !parent) {\n warn(`Parent route \"${String(parentOrRoute)}\" not found when adding child route`, route);\n }\n record = route;\n }\n else {\n record = parentOrRoute;\n }\n return matcher.addRoute(record, parent);\n }\n function removeRoute(name) {\n const recordMatcher = matcher.getRecordMatcher(name);\n if (recordMatcher) {\n matcher.removeRoute(recordMatcher);\n }\n else if ((process.env.NODE_ENV !== 'production')) {\n warn(`Cannot remove non-existent route \"${String(name)}\"`);\n }\n }\n function getRoutes() {\n return matcher.getRoutes().map(routeMatcher => routeMatcher.record);\n }\n function hasRoute(name) {\n return !!matcher.getRecordMatcher(name);\n }\n function resolve(rawLocation, currentLocation) {\n // const resolve: Router['resolve'] = (rawLocation: RouteLocationRaw, currentLocation) => {\n // const objectLocation = routerLocationAsObject(rawLocation)\n // we create a copy to modify it later\n currentLocation = assign({}, currentLocation || currentRoute.value);\n if (typeof rawLocation === 'string') {\n const locationNormalized = parseURL(parseQuery$1, rawLocation, currentLocation.path);\n const matchedRoute = matcher.resolve({ path: locationNormalized.path }, currentLocation);\n const href = routerHistory.createHref(locationNormalized.fullPath);\n if ((process.env.NODE_ENV !== 'production')) {\n if (href.startsWith('//'))\n warn(`Location \"${rawLocation}\" resolved to \"${href}\". A resolved location cannot start with multiple slashes.`);\n else if (!matchedRoute.matched.length) {\n warn(`No match found for location with path \"${rawLocation}\"`);\n }\n }\n // locationNormalized is always a new object\n return assign(locationNormalized, matchedRoute, {\n params: decodeParams(matchedRoute.params),\n hash: decode(locationNormalized.hash),\n redirectedFrom: undefined,\n href,\n });\n }\n if ((process.env.NODE_ENV !== 'production') && !isRouteLocation(rawLocation)) {\n warn(`router.resolve() was passed an invalid location. This will fail in production.\\n- Location:`, rawLocation);\n return resolve({});\n }\n let matcherLocation;\n // path could be relative in object as well\n if (rawLocation.path != null) {\n if ((process.env.NODE_ENV !== 'production') &&\n 'params' in rawLocation &&\n !('name' in rawLocation) &&\n // @ts-expect-error: the type is never\n Object.keys(rawLocation.params).length) {\n warn(`Path \"${rawLocation.path}\" was passed with params but they will be ignored. Use a named route alongside params instead.`);\n }\n matcherLocation = assign({}, rawLocation, {\n path: parseURL(parseQuery$1, rawLocation.path, currentLocation.path).path,\n });\n }\n else {\n // remove any nullish param\n const targetParams = assign({}, rawLocation.params);\n for (const key in targetParams) {\n if (targetParams[key] == null) {\n delete targetParams[key];\n }\n }\n // pass encoded values to the matcher, so it can produce encoded path and fullPath\n matcherLocation = assign({}, rawLocation, {\n params: encodeParams(targetParams),\n });\n // current location params are decoded, we need to encode them in case the\n // matcher merges the params\n currentLocation.params = encodeParams(currentLocation.params);\n }\n const matchedRoute = matcher.resolve(matcherLocation, currentLocation);\n const hash = rawLocation.hash || '';\n if ((process.env.NODE_ENV !== 'production') && hash && !hash.startsWith('#')) {\n warn(`A \\`hash\\` should always start with the character \"#\". Replace \"${hash}\" with \"#${hash}\".`);\n }\n // the matcher might have merged current location params, so\n // we need to run the decoding again\n matchedRoute.params = normalizeParams(decodeParams(matchedRoute.params));\n const fullPath = stringifyURL(stringifyQuery$1, assign({}, rawLocation, {\n hash: encodeHash(hash),\n path: matchedRoute.path,\n }));\n const href = routerHistory.createHref(fullPath);\n if ((process.env.NODE_ENV !== 'production')) {\n if (href.startsWith('//')) {\n warn(`Location \"${rawLocation}\" resolved to \"${href}\". A resolved location cannot start with multiple slashes.`);\n }\n else if (!matchedRoute.matched.length) {\n warn(`No match found for location with path \"${rawLocation.path != null ? rawLocation.path : rawLocation}\"`);\n }\n }\n return assign({\n fullPath,\n // keep the hash encoded so fullPath is effectively path + encodedQuery +\n // hash\n hash,\n query: \n // if the user is using a custom query lib like qs, we might have\n // nested objects, so we keep the query as is, meaning it can contain\n // numbers at `$route.query`, but at the point, the user will have to\n // use their own type anyway.\n // https://github.com/vuejs/router/issues/328#issuecomment-649481567\n stringifyQuery$1 === stringifyQuery\n ? normalizeQuery(rawLocation.query)\n : (rawLocation.query || {}),\n }, matchedRoute, {\n redirectedFrom: undefined,\n href,\n });\n }\n function locationAsObject(to) {\n return typeof to === 'string'\n ? parseURL(parseQuery$1, to, currentRoute.value.path)\n : assign({}, to);\n }\n function checkCanceledNavigation(to, from) {\n if (pendingLocation !== to) {\n return createRouterError(8 /* ErrorTypes.NAVIGATION_CANCELLED */, {\n from,\n to,\n });\n }\n }\n function push(to) {\n return pushWithRedirect(to);\n }\n function replace(to) {\n return push(assign(locationAsObject(to), { replace: true }));\n }\n function handleRedirectRecord(to) {\n const lastMatched = to.matched[to.matched.length - 1];\n if (lastMatched && lastMatched.redirect) {\n const { redirect } = lastMatched;\n let newTargetLocation = typeof redirect === 'function' ? redirect(to) : redirect;\n if (typeof newTargetLocation === 'string') {\n newTargetLocation =\n newTargetLocation.includes('?') || newTargetLocation.includes('#')\n ? (newTargetLocation = locationAsObject(newTargetLocation))\n : // force empty params\n { path: newTargetLocation };\n // @ts-expect-error: force empty params when a string is passed to let\n // the router parse them again\n newTargetLocation.params = {};\n }\n if ((process.env.NODE_ENV !== 'production') &&\n newTargetLocation.path == null &&\n !('name' in newTargetLocation)) {\n warn(`Invalid redirect found:\\n${JSON.stringify(newTargetLocation, null, 2)}\\n when navigating to \"${to.fullPath}\". A redirect must contain a name or path. This will break in production.`);\n throw new Error('Invalid redirect');\n }\n return assign({\n query: to.query,\n hash: to.hash,\n // avoid transferring params if the redirect has a path\n params: newTargetLocation.path != null ? {} : to.params,\n }, newTargetLocation);\n }\n }\n function pushWithRedirect(to, redirectedFrom) {\n const targetLocation = (pendingLocation = resolve(to));\n const from = currentRoute.value;\n const data = to.state;\n const force = to.force;\n // to could be a string where `replace` is a function\n const replace = to.replace === true;\n const shouldRedirect = handleRedirectRecord(targetLocation);\n if (shouldRedirect)\n return pushWithRedirect(assign(locationAsObject(shouldRedirect), {\n state: typeof shouldRedirect === 'object'\n ? assign({}, data, shouldRedirect.state)\n : data,\n force,\n replace,\n }), \n // keep original redirectedFrom if it exists\n redirectedFrom || targetLocation);\n // if it was a redirect we already called `pushWithRedirect` above\n const toLocation = targetLocation;\n toLocation.redirectedFrom = redirectedFrom;\n let failure;\n if (!force && isSameRouteLocation(stringifyQuery$1, from, targetLocation)) {\n failure = createRouterError(16 /* ErrorTypes.NAVIGATION_DUPLICATED */, { to: toLocation, from });\n // trigger scroll to allow scrolling to the same anchor\n handleScroll(from, from, \n // this is a push, the only way for it to be triggered from a\n // history.listen is with a redirect, which makes it become a push\n true, \n // This cannot be the first navigation because the initial location\n // cannot be manually navigated to\n false);\n }\n return (failure ? Promise.resolve(failure) : navigate(toLocation, from))\n .catch((error) => isNavigationFailure(error)\n ? // navigation redirects still mark the router as ready\n isNavigationFailure(error, 2 /* ErrorTypes.NAVIGATION_GUARD_REDIRECT */)\n ? error\n : markAsReady(error) // also returns the error\n : // reject any unknown error\n triggerError(error, toLocation, from))\n .then((failure) => {\n if (failure) {\n if (isNavigationFailure(failure, 2 /* ErrorTypes.NAVIGATION_GUARD_REDIRECT */)) {\n if ((process.env.NODE_ENV !== 'production') &&\n // we are redirecting to the same location we were already at\n isSameRouteLocation(stringifyQuery$1, resolve(failure.to), toLocation) &&\n // and we have done it a couple of times\n redirectedFrom &&\n // @ts-expect-error: added only in dev\n (redirectedFrom._count = redirectedFrom._count\n ? // @ts-expect-error\n redirectedFrom._count + 1\n : 1) > 30) {\n warn(`Detected a possibly infinite redirection in a navigation guard when going from \"${from.fullPath}\" to \"${toLocation.fullPath}\". Aborting to avoid a Stack Overflow.\\n Are you always returning a new location within a navigation guard? That would lead to this error. Only return when redirecting or aborting, that should fix this. This might break in production if not fixed.`);\n return Promise.reject(new Error('Infinite redirect in navigation guard'));\n }\n return pushWithRedirect(\n // keep options\n assign({\n // preserve an existing replacement but allow the redirect to override it\n replace,\n }, locationAsObject(failure.to), {\n state: typeof failure.to === 'object'\n ? assign({}, data, failure.to.state)\n : data,\n force,\n }), \n // preserve the original redirectedFrom if any\n redirectedFrom || toLocation);\n }\n }\n else {\n // if we fail we don't finalize the navigation\n failure = finalizeNavigation(toLocation, from, true, replace, data);\n }\n triggerAfterEach(toLocation, from, failure);\n return failure;\n });\n }\n /**\n * Helper to reject and skip all navigation guards if a new navigation happened\n * @param to\n * @param from\n */\n function checkCanceledNavigationAndReject(to, from) {\n const error = checkCanceledNavigation(to, from);\n return error ? Promise.reject(error) : Promise.resolve();\n }\n function runWithContext(fn) {\n const app = installedApps.values().next().value;\n // support Vue < 3.3\n return app && typeof app.runWithContext === 'function'\n ? app.runWithContext(fn)\n : fn();\n }\n // TODO: refactor the whole before guards by internally using router.beforeEach\n function navigate(to, from) {\n let guards;\n const [leavingRecords, updatingRecords, enteringRecords] = extractChangingRecords(to, from);\n // all components here have been resolved once because we are leaving\n guards = extractComponentsGuards(leavingRecords.reverse(), 'beforeRouteLeave', to, from);\n // leavingRecords is already reversed\n for (const record of leavingRecords) {\n record.leaveGuards.forEach(guard => {\n guards.push(guardToPromiseFn(guard, to, from));\n });\n }\n const canceledNavigationCheck = checkCanceledNavigationAndReject.bind(null, to, from);\n guards.push(canceledNavigationCheck);\n // run the queue of per route beforeRouteLeave guards\n return (runGuardQueue(guards)\n .then(() => {\n // check global guards beforeEach\n guards = [];\n for (const guard of beforeGuards.list()) {\n guards.push(guardToPromiseFn(guard, to, from));\n }\n guards.push(canceledNavigationCheck);\n return runGuardQueue(guards);\n })\n .then(() => {\n // check in components beforeRouteUpdate\n guards = extractComponentsGuards(updatingRecords, 'beforeRouteUpdate', to, from);\n for (const record of updatingRecords) {\n record.updateGuards.forEach(guard => {\n guards.push(guardToPromiseFn(guard, to, from));\n });\n }\n guards.push(canceledNavigationCheck);\n // run the queue of per route beforeEnter guards\n return runGuardQueue(guards);\n })\n .then(() => {\n // check the route beforeEnter\n guards = [];\n for (const record of enteringRecords) {\n // do not trigger beforeEnter on reused views\n if (record.beforeEnter) {\n if (isArray(record.beforeEnter)) {\n for (const beforeEnter of record.beforeEnter)\n guards.push(guardToPromiseFn(beforeEnter, to, from));\n }\n else {\n guards.push(guardToPromiseFn(record.beforeEnter, to, from));\n }\n }\n }\n guards.push(canceledNavigationCheck);\n // run the queue of per route beforeEnter guards\n return runGuardQueue(guards);\n })\n .then(() => {\n // NOTE: at this point to.matched is normalized and does not contain any () => Promise\n // clear existing enterCallbacks, these are added by extractComponentsGuards\n to.matched.forEach(record => (record.enterCallbacks = {}));\n // check in-component beforeRouteEnter\n guards = extractComponentsGuards(enteringRecords, 'beforeRouteEnter', to, from, runWithContext);\n guards.push(canceledNavigationCheck);\n // run the queue of per route beforeEnter guards\n return runGuardQueue(guards);\n })\n .then(() => {\n // check global guards beforeResolve\n guards = [];\n for (const guard of beforeResolveGuards.list()) {\n guards.push(guardToPromiseFn(guard, to, from));\n }\n guards.push(canceledNavigationCheck);\n return runGuardQueue(guards);\n })\n // catch any navigation canceled\n .catch(err => isNavigationFailure(err, 8 /* ErrorTypes.NAVIGATION_CANCELLED */)\n ? err\n : Promise.reject(err)));\n }\n function triggerAfterEach(to, from, failure) {\n // navigation is confirmed, call afterGuards\n // TODO: wrap with error handlers\n afterGuards\n .list()\n .forEach(guard => runWithContext(() => guard(to, from, failure)));\n }\n /**\n * - Cleans up any navigation guards\n * - Changes the url if necessary\n * - Calls the scrollBehavior\n */\n function finalizeNavigation(toLocation, from, isPush, replace, data) {\n // a more recent navigation took place\n const error = checkCanceledNavigation(toLocation, from);\n if (error)\n return error;\n // only consider as push if it's not the first navigation\n const isFirstNavigation = from === START_LOCATION_NORMALIZED;\n const state = !isBrowser ? {} : history.state;\n // change URL only if the user did a push/replace and if it's not the initial navigation because\n // it's just reflecting the url\n if (isPush) {\n // on the initial navigation, we want to reuse the scroll position from\n // history state if it exists\n if (replace || isFirstNavigation)\n routerHistory.replace(toLocation.fullPath, assign({\n scroll: isFirstNavigation && state && state.scroll,\n }, data));\n else\n routerHistory.push(toLocation.fullPath, data);\n }\n // accept current navigation\n currentRoute.value = toLocation;\n handleScroll(toLocation, from, isPush, isFirstNavigation);\n markAsReady();\n }\n let removeHistoryListener;\n // attach listener to history to trigger navigations\n function setupListeners() {\n // avoid setting up listeners twice due to an invalid first navigation\n if (removeHistoryListener)\n return;\n removeHistoryListener = routerHistory.listen((to, _from, info) => {\n if (!router.listening)\n return;\n // cannot be a redirect route because it was in history\n const toLocation = resolve(to);\n // due to dynamic routing, and to hash history with manual navigation\n // (manually changing the url or calling history.hash = '#/somewhere'),\n // there could be a redirect record in history\n const shouldRedirect = handleRedirectRecord(toLocation);\n if (shouldRedirect) {\n pushWithRedirect(assign(shouldRedirect, { replace: true, force: true }), toLocation).catch(noop);\n return;\n }\n pendingLocation = toLocation;\n const from = currentRoute.value;\n // TODO: should be moved to web history?\n if (isBrowser) {\n saveScrollPosition(getScrollKey(from.fullPath, info.delta), computeScrollPosition());\n }\n navigate(toLocation, from)\n .catch((error) => {\n if (isNavigationFailure(error, 4 /* ErrorTypes.NAVIGATION_ABORTED */ | 8 /* ErrorTypes.NAVIGATION_CANCELLED */)) {\n return error;\n }\n if (isNavigationFailure(error, 2 /* ErrorTypes.NAVIGATION_GUARD_REDIRECT */)) {\n // Here we could call if (info.delta) routerHistory.go(-info.delta,\n // false) but this is bug prone as we have no way to wait the\n // navigation to be finished before calling pushWithRedirect. Using\n // a setTimeout of 16ms seems to work but there is no guarantee for\n // it to work on every browser. So instead we do not restore the\n // history entry and trigger a new navigation as requested by the\n // navigation guard.\n // the error is already handled by router.push we just want to avoid\n // logging the error\n pushWithRedirect(assign(locationAsObject(error.to), {\n force: true,\n }), toLocation\n // avoid an uncaught rejection, let push call triggerError\n )\n .then(failure => {\n // manual change in hash history #916 ending up in the URL not\n // changing, but it was changed by the manual url change, so we\n // need to manually change it ourselves\n if (isNavigationFailure(failure, 4 /* ErrorTypes.NAVIGATION_ABORTED */ |\n 16 /* ErrorTypes.NAVIGATION_DUPLICATED */) &&\n !info.delta &&\n info.type === NavigationType.pop) {\n routerHistory.go(-1, false);\n }\n })\n .catch(noop);\n // avoid the then branch\n return Promise.reject();\n }\n // do not restore history on unknown direction\n if (info.delta) {\n routerHistory.go(-info.delta, false);\n }\n // unrecognized error, transfer to the global handler\n return triggerError(error, toLocation, from);\n })\n .then((failure) => {\n failure =\n failure ||\n finalizeNavigation(\n // after navigation, all matched components are resolved\n toLocation, from, false);\n // revert the navigation\n if (failure) {\n if (info.delta &&\n // a new navigation has been triggered, so we do not want to revert, that will change the current history\n // entry while a different route is displayed\n !isNavigationFailure(failure, 8 /* ErrorTypes.NAVIGATION_CANCELLED */)) {\n routerHistory.go(-info.delta, false);\n }\n else if (info.type === NavigationType.pop &&\n isNavigationFailure(failure, 4 /* ErrorTypes.NAVIGATION_ABORTED */ | 16 /* ErrorTypes.NAVIGATION_DUPLICATED */)) {\n // manual change in hash history #916\n // it's like a push but lacks the information of the direction\n routerHistory.go(-1, false);\n }\n }\n triggerAfterEach(toLocation, from, failure);\n })\n // avoid warnings in the console about uncaught rejections, they are logged by triggerErrors\n .catch(noop);\n });\n }\n // Initialization and Errors\n let readyHandlers = useCallbacks();\n let errorListeners = useCallbacks();\n let ready;\n /**\n * Trigger errorListeners added via onError and throws the error as well\n *\n * @param error - error to throw\n * @param to - location we were navigating to when the error happened\n * @param from - location we were navigating from when the error happened\n * @returns the error as a rejected promise\n */\n function triggerError(error, to, from) {\n markAsReady(error);\n const list = errorListeners.list();\n if (list.length) {\n list.forEach(handler => handler(error, to, from));\n }\n else {\n if ((process.env.NODE_ENV !== 'production')) {\n warn('uncaught error during route navigation:');\n }\n console.error(error);\n }\n // reject the error no matter there were error listeners or not\n return Promise.reject(error);\n }\n function isReady() {\n if (ready && currentRoute.value !== START_LOCATION_NORMALIZED)\n return Promise.resolve();\n return new Promise((resolve, reject) => {\n readyHandlers.add([resolve, reject]);\n });\n }\n function markAsReady(err) {\n if (!ready) {\n // still not ready if an error happened\n ready = !err;\n setupListeners();\n readyHandlers\n .list()\n .forEach(([resolve, reject]) => (err ? reject(err) : resolve()));\n readyHandlers.reset();\n }\n return err;\n }\n // Scroll behavior\n function handleScroll(to, from, isPush, isFirstNavigation) {\n const { scrollBehavior } = options;\n if (!isBrowser || !scrollBehavior)\n return Promise.resolve();\n const scrollPosition = (!isPush && getSavedScrollPosition(getScrollKey(to.fullPath, 0))) ||\n ((isFirstNavigation || !isPush) &&\n history.state &&\n history.state.scroll) ||\n null;\n return nextTick()\n .then(() => scrollBehavior(to, from, scrollPosition))\n .then(position => position && scrollToPosition(position))\n .catch(err => triggerError(err, to, from));\n }\n const go = (delta) => routerHistory.go(delta);\n let started;\n const installedApps = new Set();\n const router = {\n currentRoute,\n listening: true,\n addRoute,\n removeRoute,\n clearRoutes: matcher.clearRoutes,\n hasRoute,\n getRoutes,\n resolve,\n options,\n push,\n replace,\n go,\n back: () => go(-1),\n forward: () => go(1),\n beforeEach: beforeGuards.add,\n beforeResolve: beforeResolveGuards.add,\n afterEach: afterGuards.add,\n onError: errorListeners.add,\n isReady,\n install(app) {\n const router = this;\n app.component('RouterLink', RouterLink);\n app.component('RouterView', RouterView);\n app.config.globalProperties.$router = router;\n Object.defineProperty(app.config.globalProperties, '$route', {\n enumerable: true,\n get: () => unref(currentRoute),\n });\n // this initial navigation is only necessary on client, on server it doesn't\n // make sense because it will create an extra unnecessary navigation and could\n // lead to problems\n if (isBrowser &&\n // used for the initial navigation client side to avoid pushing\n // multiple times when the router is used in multiple apps\n !started &&\n currentRoute.value === START_LOCATION_NORMALIZED) {\n // see above\n started = true;\n push(routerHistory.location).catch(err => {\n if ((process.env.NODE_ENV !== 'production'))\n warn('Unexpected error when starting the router:', err);\n });\n }\n const reactiveRoute = {};\n for (const key in START_LOCATION_NORMALIZED) {\n Object.defineProperty(reactiveRoute, key, {\n get: () => currentRoute.value[key],\n enumerable: true,\n });\n }\n app.provide(routerKey, router);\n app.provide(routeLocationKey, shallowReactive(reactiveRoute));\n app.provide(routerViewLocationKey, currentRoute);\n const unmountApp = app.unmount;\n installedApps.add(app);\n app.unmount = function () {\n installedApps.delete(app);\n // the router is not attached to an app anymore\n if (installedApps.size < 1) {\n // invalidate the current navigation\n pendingLocation = START_LOCATION_NORMALIZED;\n removeHistoryListener && removeHistoryListener();\n removeHistoryListener = null;\n currentRoute.value = START_LOCATION_NORMALIZED;\n started = false;\n ready = false;\n }\n unmountApp();\n };\n // TODO: this probably needs to be updated so it can be used by vue-termui\n if (((process.env.NODE_ENV !== 'production') || __VUE_PROD_DEVTOOLS__) && isBrowser) {\n addDevtools(app, router, matcher);\n }\n },\n };\n // TODO: type this as NavigationGuardReturn or similar instead of any\n function runGuardQueue(guards) {\n return guards.reduce((promise, guard) => promise.then(() => runWithContext(guard)), Promise.resolve());\n }\n return router;\n}\nfunction extractChangingRecords(to, from) {\n const leavingRecords = [];\n const updatingRecords = [];\n const enteringRecords = [];\n const len = Math.max(from.matched.length, to.matched.length);\n for (let i = 0; i < len; i++) {\n const recordFrom = from.matched[i];\n if (recordFrom) {\n if (to.matched.find(record => isSameRouteRecord(record, recordFrom)))\n updatingRecords.push(recordFrom);\n else\n leavingRecords.push(recordFrom);\n }\n const recordTo = to.matched[i];\n if (recordTo) {\n // the type doesn't matter because we are comparing per reference\n if (!from.matched.find(record => isSameRouteRecord(record, recordTo))) {\n enteringRecords.push(recordTo);\n }\n }\n }\n return [leavingRecords, updatingRecords, enteringRecords];\n}\n\n/**\n * Returns the router instance. Equivalent to using `$router` inside\n * templates.\n */\nfunction useRouter() {\n return inject(routerKey);\n}\n/**\n * Returns the current route location. Equivalent to using `$route` inside\n * templates.\n */\nfunction useRoute(_name) {\n return inject(routeLocationKey);\n}\n\nexport { NavigationFailureType, RouterLink, RouterView, START_LOCATION_NORMALIZED as START_LOCATION, createMemoryHistory, createRouter, createRouterMatcher, createWebHashHistory, createWebHistory, isNavigationFailure, loadRouteLocation, matchedRouteKey, onBeforeRouteLeave, onBeforeRouteUpdate, parseQuery, routeLocationKey, routerKey, routerViewLocationKey, stringifyQuery, useLink, useRoute, useRouter, viewDepthKey };\n","'use strict';\nvar aSet = require('../internals/a-set');\nvar size = require('../internals/set-size');\nvar iterate = require('../internals/set-iterate');\nvar getSetRecord = require('../internals/get-set-record');\n\n// `Set.prototype.isSubsetOf` method\n// https://tc39.github.io/proposal-set-methods/#Set.prototype.isSubsetOf\nmodule.exports = function isSubsetOf(other) {\n var O = aSet(this);\n var otherRec = getSetRecord(other);\n if (size(O) > otherRec.size) return false;\n return iterate(O, function (e) {\n if (!otherRec.includes(e)) return false;\n }, true) !== false;\n};\n","'use strict';\nvar defineBuiltIn = require('../internals/define-built-in');\n\nmodule.exports = function (target, src, options) {\n for (var key in src) defineBuiltIn(target, key, src[key], options);\n return target;\n};\n","'use strict';\nvar NATIVE_WEAK_MAP = require('../internals/weak-map-basic-detection');\nvar globalThis = require('../internals/global-this');\nvar isObject = require('../internals/is-object');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar hasOwn = require('../internals/has-own-property');\nvar shared = require('../internals/shared-store');\nvar sharedKey = require('../internals/shared-key');\nvar hiddenKeys = require('../internals/hidden-keys');\n\nvar OBJECT_ALREADY_INITIALIZED = 'Object already initialized';\nvar TypeError = globalThis.TypeError;\nvar WeakMap = globalThis.WeakMap;\nvar set, get, has;\n\nvar enforce = function (it) {\n return has(it) ? get(it) : set(it, {});\n};\n\nvar getterFor = function (TYPE) {\n return function (it) {\n var state;\n if (!isObject(it) || (state = get(it)).type !== TYPE) {\n throw new TypeError('Incompatible receiver, ' + TYPE + ' required');\n } return state;\n };\n};\n\nif (NATIVE_WEAK_MAP || shared.state) {\n var store = shared.state || (shared.state = new WeakMap());\n /* eslint-disable no-self-assign -- prototype methods protection */\n store.get = store.get;\n store.has = store.has;\n store.set = store.set;\n /* eslint-enable no-self-assign -- prototype methods protection */\n set = function (it, metadata) {\n if (store.has(it)) throw new TypeError(OBJECT_ALREADY_INITIALIZED);\n metadata.facade = it;\n store.set(it, metadata);\n return metadata;\n };\n get = function (it) {\n return store.get(it) || {};\n };\n has = function (it) {\n return store.has(it);\n };\n} else {\n var STATE = sharedKey('state');\n hiddenKeys[STATE] = true;\n set = function (it, metadata) {\n if (hasOwn(it, STATE)) throw new TypeError(OBJECT_ALREADY_INITIALIZED);\n metadata.facade = it;\n createNonEnumerableProperty(it, STATE, metadata);\n return metadata;\n };\n get = function (it) {\n return hasOwn(it, STATE) ? it[STATE] : {};\n };\n has = function (it) {\n return hasOwn(it, STATE);\n };\n}\n\nmodule.exports = {\n set: set,\n get: get,\n has: has,\n enforce: enforce,\n getterFor: getterFor\n};\n","import { __extends as t, __spreadArray as e, __awaiter as n, __generator as r } from \"tslib\";\n\nimport { getUA as i, isSafari as o, isMobileCordova as s, isReactNative as u, isElectron as a, isIE as c, isUWP as h, isBrowserExtension as f, getModularInstance as l, createMockUserToken as d } from \"@firebase/util\";\n\nimport { Logger as p, LogLevel as y } from \"@firebase/logger\";\n\nimport { XhrIo as v, EventType as m, ErrorCode as g, createWebChannelTransport as w, getStatEventTarget as b, FetchXmlHttpFactory as I, WebChannel as T, Event as _, Stat as E } from \"@firebase/webchannel-wrapper\";\n\n/**\n * @license\n * Copyright 2018 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * `ListenSequence` is a monotonic sequence. It is initialized with a minimum value to\n * exceed. All subsequent calls to next will return increasing values. If provided with a\n * `SequenceNumberSyncer`, it will additionally bump its next value when told of a new value, as\n * well as write out sequence numbers that it produces via `next()`.\n */ var S = /** @class */ function() {\n function t(t, e) {\n var n = this;\n this.previousValue = t, e && (e.sequenceNumberHandler = function(t) {\n return n.t(t);\n }, this.i = function(t) {\n return e.writeSequenceNumber(t);\n });\n }\n return t.prototype.t = function(t) {\n return this.previousValue = Math.max(t, this.previousValue), this.previousValue;\n }, t.prototype.next = function() {\n var t = ++this.previousValue;\n return this.i && this.i(t), t;\n }, t;\n}();\n\nS.o = -1;\n\n/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nvar N = {\n // Causes are copied from:\n // https://github.com/grpc/grpc/blob/bceec94ea4fc5f0085d81235d8e1c06798dc341a/include/grpc%2B%2B/impl/codegen/status_code_enum.h\n /** Not an error; returned on success. */\n OK: \"ok\",\n /** The operation was cancelled (typically by the caller). */\n CANCELLED: \"cancelled\",\n /** Unknown error or an error from a different error domain. */\n UNKNOWN: \"unknown\",\n /**\n * Client specified an invalid argument. Note that this differs from\n * FAILED_PRECONDITION. INVALID_ARGUMENT indicates arguments that are\n * problematic regardless of the state of the system (e.g., a malformed file\n * name).\n */\n INVALID_ARGUMENT: \"invalid-argument\",\n /**\n * Deadline expired before operation could complete. For operations that\n * change the state of the system, this error may be returned even if the\n * operation has completed successfully. For example, a successful response\n * from a server could have been delayed long enough for the deadline to\n * expire.\n */\n DEADLINE_EXCEEDED: \"deadline-exceeded\",\n /** Some requested entity (e.g., file or directory) was not found. */\n NOT_FOUND: \"not-found\",\n /**\n * Some entity that we attempted to create (e.g., file or directory) already\n * exists.\n */\n ALREADY_EXISTS: \"already-exists\",\n /**\n * The caller does not have permission to execute the specified operation.\n * PERMISSION_DENIED must not be used for rejections caused by exhausting\n * some resource (use RESOURCE_EXHAUSTED instead for those errors).\n * PERMISSION_DENIED must not be used if the caller can not be identified\n * (use UNAUTHENTICATED instead for those errors).\n */\n PERMISSION_DENIED: \"permission-denied\",\n /**\n * The request does not have valid authentication credentials for the\n * operation.\n */\n UNAUTHENTICATED: \"unauthenticated\",\n /**\n * Some resource has been exhausted, perhaps a per-user quota, or perhaps the\n * entire file system is out of space.\n */\n RESOURCE_EXHAUSTED: \"resource-exhausted\",\n /**\n * Operation was rejected because the system is not in a state required for\n * the operation's execution. For example, directory to be deleted may be\n * non-empty, an rmdir operation is applied to a non-directory, etc.\n *\n * A litmus test that may help a service implementor in deciding\n * between FAILED_PRECONDITION, ABORTED, and UNAVAILABLE:\n * (a) Use UNAVAILABLE if the client can retry just the failing call.\n * (b) Use ABORTED if the client should retry at a higher-level\n * (e.g., restarting a read-modify-write sequence).\n * (c) Use FAILED_PRECONDITION if the client should not retry until\n * the system state has been explicitly fixed. E.g., if an \"rmdir\"\n * fails because the directory is non-empty, FAILED_PRECONDITION\n * should be returned since the client should not retry unless\n * they have first fixed up the directory by deleting files from it.\n * (d) Use FAILED_PRECONDITION if the client performs conditional\n * REST Get/Update/Delete on a resource and the resource on the\n * server does not match the condition. E.g., conflicting\n * read-modify-write on the same resource.\n */\n FAILED_PRECONDITION: \"failed-precondition\",\n /**\n * The operation was aborted, typically due to a concurrency issue like\n * sequencer check failures, transaction aborts, etc.\n *\n * See litmus test above for deciding between FAILED_PRECONDITION, ABORTED,\n * and UNAVAILABLE.\n */\n ABORTED: \"aborted\",\n /**\n * Operation was attempted past the valid range. E.g., seeking or reading\n * past end of file.\n *\n * Unlike INVALID_ARGUMENT, this error indicates a problem that may be fixed\n * if the system state changes. For example, a 32-bit file system will\n * generate INVALID_ARGUMENT if asked to read at an offset that is not in the\n * range [0,2^32-1], but it will generate OUT_OF_RANGE if asked to read from\n * an offset past the current file size.\n *\n * There is a fair bit of overlap between FAILED_PRECONDITION and\n * OUT_OF_RANGE. We recommend using OUT_OF_RANGE (the more specific error)\n * when it applies so that callers who are iterating through a space can\n * easily look for an OUT_OF_RANGE error to detect when they are done.\n */\n OUT_OF_RANGE: \"out-of-range\",\n /** Operation is not implemented or not supported/enabled in this service. */\n UNIMPLEMENTED: \"unimplemented\",\n /**\n * Internal errors. Means some invariants expected by underlying System has\n * been broken. If you see one of these errors, Something is very broken.\n */\n INTERNAL: \"internal\",\n /**\n * The service is currently unavailable. This is a most likely a transient\n * condition and may be corrected by retrying with a backoff.\n *\n * See litmus test above for deciding between FAILED_PRECONDITION, ABORTED,\n * and UNAVAILABLE.\n */\n UNAVAILABLE: \"unavailable\",\n /** Unrecoverable data loss or corruption. */\n DATA_LOSS: \"data-loss\"\n}, D = /** @class */ function(e) {\n /** @hideconstructor */\n function n(\n /**\n * The backend error code associated with this error.\n */\n t, \n /**\n * A custom error description.\n */\n n) {\n var r = this;\n return (r = e.call(this, n) || this).code = t, r.message = n, \n /** The custom name for all FirestoreErrors. */\n r.name = \"FirebaseError\", \n // HACK: We write a toString property directly because Error is not a real\n // class and so inheritance does not work correctly. We could alternatively\n // do the same \"back-door inheritance\" trick that FirebaseError does.\n r.toString = function() {\n return r.name + \": [code=\" + r.code + \"]: \" + r.message;\n }, r;\n }\n return t(n, e), n;\n}(Error), A = new p(\"@firebase/firestore\");\n\n/** An error returned by a Firestore operation. */\n// Helper methods are needed because variables can't be exported as read/write\nfunction k() {\n return A.logLevel;\n}\n\n/**\n * Sets the verbosity of Cloud Firestore logs (debug, error, or silent).\n *\n * @param logLevel - The verbosity you set for activity and error logging. Can\n * be any of the following values:\n *\n *
    \n *
  • `debug` for the most verbose logging level, primarily for\n * debugging.
  • \n *
  • `error` to log errors only.
  • \n *
  • `silent` to turn off logging.
  • \n *
\n */ function C(t) {\n for (var n = [], r = 1; r < arguments.length; r++) n[r - 1] = arguments[r];\n if (A.logLevel <= y.DEBUG) {\n var i = n.map(L);\n A.debug.apply(A, e([ \"Firestore (8.10.1): \" + t ], i));\n }\n}\n\nfunction x(t) {\n for (var n = [], r = 1; r < arguments.length; r++) n[r - 1] = arguments[r];\n if (A.logLevel <= y.ERROR) {\n var i = n.map(L);\n A.error.apply(A, e([ \"Firestore (8.10.1): \" + t ], i));\n }\n}\n\nfunction R(t) {\n for (var n = [], r = 1; r < arguments.length; r++) n[r - 1] = arguments[r];\n if (A.logLevel <= y.WARN) {\n var i = n.map(L);\n A.warn.apply(A, e([ \"Firestore (8.10.1): \" + t ], i));\n }\n}\n\n/**\n * Converts an additional log parameter to a string representation.\n */ function L(t) {\n if (\"string\" == typeof t) return t;\n try {\n return e = t, JSON.stringify(e);\n } catch (e) {\n // Converting to JSON failed, just log the object directly\n return t;\n }\n var e;\n}\n\n/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * Unconditionally fails, throwing an Error with the given message.\n * Messages are stripped in production builds.\n *\n * Returns `never` and can be used in expressions:\n * @example\n * let futureVar = fail('not implemented yet');\n */ function O(t) {\n void 0 === t && (t = \"Unexpected state\");\n // Log the failure in addition to throw an exception, just in case the\n // exception is swallowed.\n var e = \"FIRESTORE (8.10.1) INTERNAL ASSERTION FAILED: \" + t;\n // NOTE: We don't use FirestoreError here because these are internal failures\n // that cannot be handled by the user. (Also it would create a circular\n // dependency between the error and assert modules which doesn't work.)\n throw x(e), new Error(e)\n /**\n * Fails if the given assertion condition is false, throwing an Error with the\n * given message if it did.\n *\n * Messages are stripped in production builds.\n */;\n}\n\nfunction P(t, e) {\n t || O();\n}\n\n/**\n * Casts `obj` to `T`. In non-production builds, verifies that `obj` is an\n * instance of `T` before casting.\n */ function F(t, \n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ne) {\n return t;\n}\n\n/**\n * @license\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * Generates `nBytes` of random bytes.\n *\n * If `nBytes < 0` , an error will be thrown.\n */ function M(t) {\n // Polyfills for IE and WebWorker by using `self` and `msCrypto` when `crypto` is not available.\n var e = \n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n \"undefined\" != typeof self && (self.crypto || self.msCrypto), n = new Uint8Array(t);\n if (e && \"function\" == typeof e.getRandomValues) e.getRandomValues(n); else \n // Falls back to Math.random\n for (var r = 0; r < t; r++) n[r] = Math.floor(256 * Math.random());\n return n;\n}\n\n/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */ var V = /** @class */ function() {\n function t() {}\n return t.u = function() {\n for (\n // Alphanumeric characters\n var t = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\", e = Math.floor(256 / t.length) * t.length, n = \"\"\n // The largest byte value that is a multiple of `char.length`.\n ; n.length < 20; ) for (var r = M(40), i = 0; i < r.length; ++i) \n // Only accept values that are [0, maxMultiple), this ensures they can\n // be evenly mapped to indices of `chars` via a modulo operation.\n n.length < 20 && r[i] < e && (n += t.charAt(r[i] % t.length));\n return n;\n }, t;\n}();\n\nfunction q(t, e) {\n return t < e ? -1 : t > e ? 1 : 0;\n}\n\n/** Helper to compare arrays using isEqual(). */ function U(t, e, n) {\n return t.length === e.length && t.every((function(t, r) {\n return n(t, e[r]);\n }));\n}\n\n/**\n * Returns the immediate lexicographically-following string. This is useful to\n * construct an inclusive range for indexeddb iterators.\n */ function B(t) {\n // Return the input string, with an additional NUL byte appended.\n return t + \"\\0\";\n}\n\n/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n// The earliest date supported by Firestore timestamps (0001-01-01T00:00:00Z).\n/**\n * A `Timestamp` represents a point in time independent of any time zone or\n * calendar, represented as seconds and fractions of seconds at nanosecond\n * resolution in UTC Epoch time.\n *\n * It is encoded using the Proleptic Gregorian Calendar which extends the\n * Gregorian calendar backwards to year one. It is encoded assuming all minutes\n * are 60 seconds long, i.e. leap seconds are \"smeared\" so that no leap second\n * table is needed for interpretation. Range is from 0001-01-01T00:00:00Z to\n * 9999-12-31T23:59:59.999999999Z.\n *\n * For examples and further specifications, refer to the\n * {@link https://github.com/google/protobuf/blob/master/src/google/protobuf/timestamp.proto | Timestamp definition}.\n */ var j = /** @class */ function() {\n /**\n * Creates a new timestamp.\n *\n * @param seconds - The number of seconds of UTC time since Unix epoch\n * 1970-01-01T00:00:00Z. Must be from 0001-01-01T00:00:00Z to\n * 9999-12-31T23:59:59Z inclusive.\n * @param nanoseconds - The non-negative fractions of a second at nanosecond\n * resolution. Negative second values with fractions must still have\n * non-negative nanoseconds values that count forward in time. Must be\n * from 0 to 999,999,999 inclusive.\n */\n function t(\n /**\n * The number of seconds of UTC time since Unix epoch 1970-01-01T00:00:00Z.\n */\n t, \n /**\n * The fractions of a second at nanosecond resolution.*\n */\n e) {\n if (this.seconds = t, this.nanoseconds = e, e < 0) throw new D(N.INVALID_ARGUMENT, \"Timestamp nanoseconds out of range: \" + e);\n if (e >= 1e9) throw new D(N.INVALID_ARGUMENT, \"Timestamp nanoseconds out of range: \" + e);\n if (t < -62135596800) throw new D(N.INVALID_ARGUMENT, \"Timestamp seconds out of range: \" + t);\n // This will break in the year 10,000.\n if (t >= 253402300800) throw new D(N.INVALID_ARGUMENT, \"Timestamp seconds out of range: \" + t);\n }\n /**\n * Creates a new timestamp with the current date, with millisecond precision.\n *\n * @returns a new timestamp representing the current date.\n */ return t.now = function() {\n return t.fromMillis(Date.now());\n }, \n /**\n * Creates a new timestamp from the given date.\n *\n * @param date - The date to initialize the `Timestamp` from.\n * @returns A new `Timestamp` representing the same point in time as the given\n * date.\n */\n t.fromDate = function(e) {\n return t.fromMillis(e.getTime());\n }, \n /**\n * Creates a new timestamp from the given number of milliseconds.\n *\n * @param milliseconds - Number of milliseconds since Unix epoch\n * 1970-01-01T00:00:00Z.\n * @returns A new `Timestamp` representing the same point in time as the given\n * number of milliseconds.\n */\n t.fromMillis = function(e) {\n var n = Math.floor(e / 1e3);\n return new t(n, Math.floor(1e6 * (e - 1e3 * n)));\n }, \n /**\n * Converts a `Timestamp` to a JavaScript `Date` object. This conversion\n * causes a loss of precision since `Date` objects only support millisecond\n * precision.\n *\n * @returns JavaScript `Date` object representing the same point in time as\n * this `Timestamp`, with millisecond precision.\n */\n t.prototype.toDate = function() {\n return new Date(this.toMillis());\n }, \n /**\n * Converts a `Timestamp` to a numeric timestamp (in milliseconds since\n * epoch). This operation causes a loss of precision.\n *\n * @returns The point in time corresponding to this timestamp, represented as\n * the number of milliseconds since Unix epoch 1970-01-01T00:00:00Z.\n */\n t.prototype.toMillis = function() {\n return 1e3 * this.seconds + this.nanoseconds / 1e6;\n }, t.prototype._compareTo = function(t) {\n return this.seconds === t.seconds ? q(this.nanoseconds, t.nanoseconds) : q(this.seconds, t.seconds);\n }, \n /**\n * Returns true if this `Timestamp` is equal to the provided one.\n *\n * @param other - The `Timestamp` to compare against.\n * @returns true if this `Timestamp` is equal to the provided one.\n */\n t.prototype.isEqual = function(t) {\n return t.seconds === this.seconds && t.nanoseconds === this.nanoseconds;\n }, \n /** Returns a textual representation of this `Timestamp`. */ t.prototype.toString = function() {\n return \"Timestamp(seconds=\" + this.seconds + \", nanoseconds=\" + this.nanoseconds + \")\";\n }, \n /** Returns a JSON-serializable representation of this `Timestamp`. */ t.prototype.toJSON = function() {\n return {\n seconds: this.seconds,\n nanoseconds: this.nanoseconds\n };\n }, \n /**\n * Converts this object to a primitive string, which allows `Timestamp` objects\n * to be compared using the `>`, `<=`, `>=` and `>` operators.\n */\n t.prototype.valueOf = function() {\n // This method returns a string of the form . where\n // is translated to have a non-negative value and both \n // and are left-padded with zeroes to be a consistent length.\n // Strings with this format then have a lexiographical ordering that matches\n // the expected ordering. The translation is done to avoid having\n // a leading negative sign (i.e. a leading '-' character) in its string\n // representation, which would affect its lexiographical ordering.\n var t = this.seconds - -62135596800;\n // Note: Up to 12 decimal digits are required to represent all valid\n // 'seconds' values.\n return String(t).padStart(12, \"0\") + \".\" + String(this.nanoseconds).padStart(9, \"0\");\n }, t;\n}(), K = /** @class */ function() {\n function t(t) {\n this.timestamp = t;\n }\n return t.fromTimestamp = function(e) {\n return new t(e);\n }, t.min = function() {\n return new t(new j(0, 0));\n }, t.prototype.compareTo = function(t) {\n return this.timestamp._compareTo(t.timestamp);\n }, t.prototype.isEqual = function(t) {\n return this.timestamp.isEqual(t.timestamp);\n }, \n /** Returns a number representation of the version for use in spec tests. */ t.prototype.toMicroseconds = function() {\n // Convert to microseconds.\n return 1e6 * this.timestamp.seconds + this.timestamp.nanoseconds / 1e3;\n }, t.prototype.toString = function() {\n return \"SnapshotVersion(\" + this.timestamp.toString() + \")\";\n }, t.prototype.toTimestamp = function() {\n return this.timestamp;\n }, t;\n}();\n\n/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * A version of a document in Firestore. This corresponds to the version\n * timestamp, such as update_time or read_time.\n */\n/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nfunction G(t) {\n var e = 0;\n for (var n in t) Object.prototype.hasOwnProperty.call(t, n) && e++;\n return e;\n}\n\nfunction Q(t, e) {\n for (var n in t) Object.prototype.hasOwnProperty.call(t, n) && e(n, t[n]);\n}\n\nfunction z(t) {\n for (var e in t) if (Object.prototype.hasOwnProperty.call(t, e)) return !1;\n return !0;\n}\n\n/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * Path represents an ordered sequence of string segments.\n */ var W = /** @class */ function() {\n function t(t, e, n) {\n void 0 === e ? e = 0 : e > t.length && O(), void 0 === n ? n = t.length - e : n > t.length - e && O(), \n this.segments = t, this.offset = e, this.len = n;\n }\n return Object.defineProperty(t.prototype, \"length\", {\n get: function() {\n return this.len;\n },\n enumerable: !1,\n configurable: !0\n }), t.prototype.isEqual = function(e) {\n return 0 === t.comparator(this, e);\n }, t.prototype.child = function(e) {\n var n = this.segments.slice(this.offset, this.limit());\n return e instanceof t ? e.forEach((function(t) {\n n.push(t);\n })) : n.push(e), this.construct(n);\n }, \n /** The index of one past the last segment of the path. */ t.prototype.limit = function() {\n return this.offset + this.length;\n }, t.prototype.popFirst = function(t) {\n return t = void 0 === t ? 1 : t, this.construct(this.segments, this.offset + t, this.length - t);\n }, t.prototype.popLast = function() {\n return this.construct(this.segments, this.offset, this.length - 1);\n }, t.prototype.firstSegment = function() {\n return this.segments[this.offset];\n }, t.prototype.lastSegment = function() {\n return this.get(this.length - 1);\n }, t.prototype.get = function(t) {\n return this.segments[this.offset + t];\n }, t.prototype.isEmpty = function() {\n return 0 === this.length;\n }, t.prototype.isPrefixOf = function(t) {\n if (t.length < this.length) return !1;\n for (var e = 0; e < this.length; e++) if (this.get(e) !== t.get(e)) return !1;\n return !0;\n }, t.prototype.isImmediateParentOf = function(t) {\n if (this.length + 1 !== t.length) return !1;\n for (var e = 0; e < this.length; e++) if (this.get(e) !== t.get(e)) return !1;\n return !0;\n }, t.prototype.forEach = function(t) {\n for (var e = this.offset, n = this.limit(); e < n; e++) t(this.segments[e]);\n }, t.prototype.toArray = function() {\n return this.segments.slice(this.offset, this.limit());\n }, t.comparator = function(t, e) {\n for (var n = Math.min(t.length, e.length), r = 0; r < n; r++) {\n var i = t.get(r), o = e.get(r);\n if (i < o) return -1;\n if (i > o) return 1;\n }\n return t.length < e.length ? -1 : t.length > e.length ? 1 : 0;\n }, t;\n}(), H = /** @class */ function(e) {\n function n() {\n return null !== e && e.apply(this, arguments) || this;\n }\n return t(n, e), n.prototype.construct = function(t, e, r) {\n return new n(t, e, r);\n }, n.prototype.canonicalString = function() {\n // NOTE: The client is ignorant of any path segments containing escape\n // sequences (e.g. __id123__) and just passes them through raw (they exist\n // for legacy reasons and should not be used frequently).\n return this.toArray().join(\"/\");\n }, n.prototype.toString = function() {\n return this.canonicalString();\n }, \n /**\n * Creates a resource path from the given slash-delimited string. If multiple\n * arguments are provided, all components are combined. Leading and trailing\n * slashes from all components are ignored.\n */\n n.fromString = function() {\n for (var t = [], e = 0; e < arguments.length; e++) t[e] = arguments[e];\n // NOTE: The client is ignorant of any path segments containing escape\n // sequences (e.g. __id123__) and just passes them through raw (they exist\n // for legacy reasons and should not be used frequently).\n for (var r = [], i = 0, o = t; i < o.length; i++) {\n var s = o[i];\n if (s.indexOf(\"//\") >= 0) throw new D(N.INVALID_ARGUMENT, \"Invalid segment (\" + s + \"). Paths must not contain // in them.\");\n // Strip leading and traling slashed.\n r.push.apply(r, s.split(\"/\").filter((function(t) {\n return t.length > 0;\n })));\n }\n return new n(r);\n }, n.emptyPath = function() {\n return new n([]);\n }, n;\n}(W), Y = /^[_a-zA-Z][_a-zA-Z0-9]*$/, $ = /** @class */ function(e) {\n function n() {\n return null !== e && e.apply(this, arguments) || this;\n }\n return t(n, e), n.prototype.construct = function(t, e, r) {\n return new n(t, e, r);\n }, \n /**\n * Returns true if the string could be used as a segment in a field path\n * without escaping.\n */\n n.isValidIdentifier = function(t) {\n return Y.test(t);\n }, n.prototype.canonicalString = function() {\n return this.toArray().map((function(t) {\n return t = t.replace(/\\\\/g, \"\\\\\\\\\").replace(/`/g, \"\\\\`\"), n.isValidIdentifier(t) || (t = \"`\" + t + \"`\"), \n t;\n })).join(\".\");\n }, n.prototype.toString = function() {\n return this.canonicalString();\n }, \n /**\n * Returns true if this field references the key of a document.\n */\n n.prototype.isKeyField = function() {\n return 1 === this.length && \"__name__\" === this.get(0);\n }, \n /**\n * The field designating the key of a document.\n */\n n.keyField = function() {\n return new n([ \"__name__\" ]);\n }, \n /**\n * Parses a field string from the given server-formatted string.\n *\n * - Splitting the empty string is not allowed (for now at least).\n * - Empty segments within the string (e.g. if there are two consecutive\n * separators) are not allowed.\n *\n * TODO(b/37244157): we should make this more strict. Right now, it allows\n * non-identifier path components, even if they aren't escaped.\n */\n n.fromServerFormat = function(t) {\n for (var e = [], r = \"\", i = 0, o = function() {\n if (0 === r.length) throw new D(N.INVALID_ARGUMENT, \"Invalid field path (\" + t + \"). Paths must not be empty, begin with '.', end with '.', or contain '..'\");\n e.push(r), r = \"\";\n }, s = !1; i < t.length; ) {\n var u = t[i];\n if (\"\\\\\" === u) {\n if (i + 1 === t.length) throw new D(N.INVALID_ARGUMENT, \"Path has trailing escape character: \" + t);\n var a = t[i + 1];\n if (\"\\\\\" !== a && \".\" !== a && \"`\" !== a) throw new D(N.INVALID_ARGUMENT, \"Path has invalid escape sequence: \" + t);\n r += a, i += 2;\n } else \"`\" === u ? (s = !s, i++) : \".\" !== u || s ? (r += u, i++) : (o(), i++);\n }\n if (o(), s) throw new D(N.INVALID_ARGUMENT, \"Unterminated ` in path: \" + t);\n return new n(e);\n }, n.emptyPath = function() {\n return new n([]);\n }, n;\n}(W), X = /** @class */ function() {\n function t(t) {\n this.fields = t, \n // TODO(dimond): validation of FieldMask\n // Sort the field mask to support `FieldMask.isEqual()` and assert below.\n t.sort($.comparator)\n /**\n * Verifies that `fieldPath` is included by at least one field in this field\n * mask.\n *\n * This is an O(n) operation, where `n` is the size of the field mask.\n */;\n }\n return t.prototype.covers = function(t) {\n for (var e = 0, n = this.fields; e < n.length; e++) {\n if (n[e].isPrefixOf(t)) return !0;\n }\n return !1;\n }, t.prototype.isEqual = function(t) {\n return U(this.fields, t.fields, (function(t, e) {\n return t.isEqual(e);\n }));\n }, t;\n}(), J = /** @class */ function() {\n function t(t) {\n this.binaryString = t;\n }\n return t.fromBase64String = function(e) {\n return new t(atob(e));\n }, t.fromUint8Array = function(e) {\n return new t(\n /**\n * Helper function to convert an Uint8array to a binary string.\n */\n function(t) {\n for (var e = \"\", n = 0; n < t.length; ++n) e += String.fromCharCode(t[n]);\n return e;\n }(e));\n }, t.prototype.toBase64 = function() {\n return t = this.binaryString, btoa(t);\n /** Converts a binary string to a Base64 encoded string. */ var t;\n /** True if and only if the Base64 conversion functions are available. */ }, \n t.prototype.toUint8Array = function() {\n return function(t) {\n for (var e = new Uint8Array(t.length), n = 0; n < t.length; n++) e[n] = t.charCodeAt(n);\n return e;\n }(this.binaryString);\n }, t.prototype.approximateByteSize = function() {\n return 2 * this.binaryString.length;\n }, t.prototype.compareTo = function(t) {\n return q(this.binaryString, t.binaryString);\n }, t.prototype.isEqual = function(t) {\n return this.binaryString === t.binaryString;\n }, t;\n}();\n\n/**\n * A slash-separated path for navigating resources (documents and collections)\n * within Firestore.\n */ J.EMPTY_BYTE_STRING = new J(\"\");\n\nvar Z = new RegExp(/^\\d{4}-\\d\\d-\\d\\dT\\d\\d:\\d\\d:\\d\\d(?:\\.(\\d+))?Z$/);\n\n/**\n * Converts the possible Proto values for a timestamp value into a \"seconds and\n * nanos\" representation.\n */ function tt(t) {\n // The json interface (for the browser) will return an iso timestamp string,\n // while the proto js library (for node) will return a\n // google.protobuf.Timestamp instance.\n if (P(!!t), \"string\" == typeof t) {\n // The date string can have higher precision (nanos) than the Date class\n // (millis), so we do some custom parsing here.\n // Parse the nanos right out of the string.\n var e = 0, n = Z.exec(t);\n if (P(!!n), n[1]) {\n // Pad the fraction out to 9 digits (nanos).\n var r = n[1];\n r = (r + \"000000000\").substr(0, 9), e = Number(r);\n }\n // Parse the date to get the seconds.\n var i = new Date(t);\n return {\n seconds: Math.floor(i.getTime() / 1e3),\n nanos: e\n };\n }\n return {\n seconds: et(t.seconds),\n nanos: et(t.nanos)\n };\n}\n\n/**\n * Converts the possible Proto types for numbers into a JavaScript number.\n * Returns 0 if the value is not numeric.\n */ function et(t) {\n // TODO(bjornick): Handle int64 greater than 53 bits.\n return \"number\" == typeof t ? t : \"string\" == typeof t ? Number(t) : 0;\n}\n\n/** Converts the possible Proto types for Blobs into a ByteString. */ function nt(t) {\n return \"string\" == typeof t ? J.fromBase64String(t) : J.fromUint8Array(t);\n}\n\n/**\n * @license\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * Represents a locally-applied ServerTimestamp.\n *\n * Server Timestamps are backed by MapValues that contain an internal field\n * `__type__` with a value of `server_timestamp`. The previous value and local\n * write time are stored in its `__previous_value__` and `__local_write_time__`\n * fields respectively.\n *\n * Notes:\n * - ServerTimestampValue instances are created as the result of applying a\n * transform. They can only exist in the local view of a document. Therefore\n * they do not need to be parsed or serialized.\n * - When evaluated locally (e.g. for snapshot.data()), they by default\n * evaluate to `null`. This behavior can be configured by passing custom\n * FieldValueOptions to value().\n * - With respect to other ServerTimestampValues, they sort by their\n * localWriteTime.\n */ function rt(t) {\n var e, n;\n return \"server_timestamp\" === (null === (n = ((null === (e = null == t ? void 0 : t.mapValue) || void 0 === e ? void 0 : e.fields) || {}).__type__) || void 0 === n ? void 0 : n.stringValue);\n}\n\n/**\n * Creates a new ServerTimestamp proto value (using the internal format).\n */\n/**\n * Returns the value of the field before this ServerTimestamp was set.\n *\n * Preserving the previous values allows the user to display the last resoled\n * value until the backend responds with the timestamp.\n */ function it(t) {\n var e = t.mapValue.fields.__previous_value__;\n return rt(e) ? it(e) : e;\n}\n\n/**\n * Returns the local time at which this timestamp was first set.\n */ function ot(t) {\n var e = tt(t.mapValue.fields.__local_write_time__.timestampValue);\n return new j(e.seconds, e.nanos);\n}\n\n/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/** Sentinel value that sorts before any Mutation Batch ID. */\n/**\n * Returns whether a variable is either undefined or null.\n */ function st(t) {\n return null == t;\n}\n\n/** Returns whether the value represents -0. */ function ut(t) {\n // Detect if the value is -0.0. Based on polyfill from\n // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is\n return 0 === t && 1 / t == -1 / 0;\n}\n\n/**\n * Returns whether a value is an integer and in the safe integer range\n * @param value - The value to test for being an integer and in the safe range\n */ function at(t) {\n return \"number\" == typeof t && Number.isInteger(t) && !ut(t) && t <= Number.MAX_SAFE_INTEGER && t >= Number.MIN_SAFE_INTEGER;\n}\n\n/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */ var ct = /** @class */ function() {\n function t(t) {\n this.path = t;\n }\n return t.fromPath = function(e) {\n return new t(H.fromString(e));\n }, t.fromName = function(e) {\n return new t(H.fromString(e).popFirst(5));\n }, \n /** Returns true if the document is in the specified collectionId. */ t.prototype.hasCollectionId = function(t) {\n return this.path.length >= 2 && this.path.get(this.path.length - 2) === t;\n }, t.prototype.isEqual = function(t) {\n return null !== t && 0 === H.comparator(this.path, t.path);\n }, t.prototype.toString = function() {\n return this.path.toString();\n }, t.comparator = function(t, e) {\n return H.comparator(t.path, e.path);\n }, t.isDocumentKey = function(t) {\n return t.length % 2 == 0;\n }, \n /**\n * Creates and returns a new document key with the given segments.\n *\n * @param segments - The segments of the path to the document\n * @returns A new instance of DocumentKey\n */\n t.fromSegments = function(e) {\n return new t(new H(e.slice()));\n }, t;\n}();\n\n/**\n * @license\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/** Extracts the backend's type order for the provided value. */ function ht(t) {\n return \"nullValue\" in t ? 0 /* NullValue */ : \"booleanValue\" in t ? 1 /* BooleanValue */ : \"integerValue\" in t || \"doubleValue\" in t ? 2 /* NumberValue */ : \"timestampValue\" in t ? 3 /* TimestampValue */ : \"stringValue\" in t ? 5 /* StringValue */ : \"bytesValue\" in t ? 6 /* BlobValue */ : \"referenceValue\" in t ? 7 /* RefValue */ : \"geoPointValue\" in t ? 8 /* GeoPointValue */ : \"arrayValue\" in t ? 9 /* ArrayValue */ : \"mapValue\" in t ? rt(t) ? 4 /* ServerTimestampValue */ : 10 /* ObjectValue */ : O();\n}\n\n/** Tests `left` and `right` for equality based on the backend semantics. */ function ft(t, e) {\n var n = ht(t);\n if (n !== ht(e)) return !1;\n switch (n) {\n case 0 /* NullValue */ :\n return !0;\n\n case 1 /* BooleanValue */ :\n return t.booleanValue === e.booleanValue;\n\n case 4 /* ServerTimestampValue */ :\n return ot(t).isEqual(ot(e));\n\n case 3 /* TimestampValue */ :\n return function(t, e) {\n if (\"string\" == typeof t.timestampValue && \"string\" == typeof e.timestampValue && t.timestampValue.length === e.timestampValue.length) \n // Use string equality for ISO 8601 timestamps\n return t.timestampValue === e.timestampValue;\n var n = tt(t.timestampValue), r = tt(e.timestampValue);\n return n.seconds === r.seconds && n.nanos === r.nanos;\n }(t, e);\n\n case 5 /* StringValue */ :\n return t.stringValue === e.stringValue;\n\n case 6 /* BlobValue */ :\n return function(t, e) {\n return nt(t.bytesValue).isEqual(nt(e.bytesValue));\n }(t, e);\n\n case 7 /* RefValue */ :\n return t.referenceValue === e.referenceValue;\n\n case 8 /* GeoPointValue */ :\n return function(t, e) {\n return et(t.geoPointValue.latitude) === et(e.geoPointValue.latitude) && et(t.geoPointValue.longitude) === et(e.geoPointValue.longitude);\n }(t, e);\n\n case 2 /* NumberValue */ :\n return function(t, e) {\n if (\"integerValue\" in t && \"integerValue\" in e) return et(t.integerValue) === et(e.integerValue);\n if (\"doubleValue\" in t && \"doubleValue\" in e) {\n var n = et(t.doubleValue), r = et(e.doubleValue);\n return n === r ? ut(n) === ut(r) : isNaN(n) && isNaN(r);\n }\n return !1;\n }(t, e);\n\n case 9 /* ArrayValue */ :\n return U(t.arrayValue.values || [], e.arrayValue.values || [], ft);\n\n case 10 /* ObjectValue */ :\n return function(t, e) {\n var n = t.mapValue.fields || {}, r = e.mapValue.fields || {};\n if (G(n) !== G(r)) return !1;\n for (var i in n) if (n.hasOwnProperty(i) && (void 0 === r[i] || !ft(n[i], r[i]))) return !1;\n return !0;\n }(t, e);\n\n default:\n return O();\n }\n}\n\nfunction lt(t, e) {\n return void 0 !== (t.values || []).find((function(t) {\n return ft(t, e);\n }));\n}\n\nfunction dt(t, e) {\n var n = ht(t), r = ht(e);\n if (n !== r) return q(n, r);\n switch (n) {\n case 0 /* NullValue */ :\n return 0;\n\n case 1 /* BooleanValue */ :\n return q(t.booleanValue, e.booleanValue);\n\n case 2 /* NumberValue */ :\n return function(t, e) {\n var n = et(t.integerValue || t.doubleValue), r = et(e.integerValue || e.doubleValue);\n return n < r ? -1 : n > r ? 1 : n === r ? 0 : \n // one or both are NaN.\n isNaN(n) ? isNaN(r) ? 0 : -1 : 1;\n }(t, e);\n\n case 3 /* TimestampValue */ :\n return pt(t.timestampValue, e.timestampValue);\n\n case 4 /* ServerTimestampValue */ :\n return pt(ot(t), ot(e));\n\n case 5 /* StringValue */ :\n return q(t.stringValue, e.stringValue);\n\n case 6 /* BlobValue */ :\n return function(t, e) {\n var n = nt(t), r = nt(e);\n return n.compareTo(r);\n }(t.bytesValue, e.bytesValue);\n\n case 7 /* RefValue */ :\n return function(t, e) {\n for (var n = t.split(\"/\"), r = e.split(\"/\"), i = 0; i < n.length && i < r.length; i++) {\n var o = q(n[i], r[i]);\n if (0 !== o) return o;\n }\n return q(n.length, r.length);\n }(t.referenceValue, e.referenceValue);\n\n case 8 /* GeoPointValue */ :\n return function(t, e) {\n var n = q(et(t.latitude), et(e.latitude));\n return 0 !== n ? n : q(et(t.longitude), et(e.longitude));\n }(t.geoPointValue, e.geoPointValue);\n\n case 9 /* ArrayValue */ :\n return function(t, e) {\n for (var n = t.values || [], r = e.values || [], i = 0; i < n.length && i < r.length; ++i) {\n var o = dt(n[i], r[i]);\n if (o) return o;\n }\n return q(n.length, r.length);\n }(t.arrayValue, e.arrayValue);\n\n case 10 /* ObjectValue */ :\n return function(t, e) {\n var n = t.fields || {}, r = Object.keys(n), i = e.fields || {}, o = Object.keys(i);\n // Even though MapValues are likely sorted correctly based on their insertion\n // order (e.g. when received from the backend), local modifications can bring\n // elements out of order. We need to re-sort the elements to ensure that\n // canonical IDs are independent of insertion order.\n r.sort(), o.sort();\n for (var s = 0; s < r.length && s < o.length; ++s) {\n var u = q(r[s], o[s]);\n if (0 !== u) return u;\n var a = dt(n[r[s]], i[o[s]]);\n if (0 !== a) return a;\n }\n return q(r.length, o.length);\n }(t.mapValue, e.mapValue);\n\n default:\n throw O();\n }\n}\n\nfunction pt(t, e) {\n if (\"string\" == typeof t && \"string\" == typeof e && t.length === e.length) return q(t, e);\n var n = tt(t), r = tt(e), i = q(n.seconds, r.seconds);\n return 0 !== i ? i : q(n.nanos, r.nanos);\n}\n\nfunction yt(t) {\n return vt(t);\n}\n\nfunction vt(t) {\n return \"nullValue\" in t ? \"null\" : \"booleanValue\" in t ? \"\" + t.booleanValue : \"integerValue\" in t ? \"\" + t.integerValue : \"doubleValue\" in t ? \"\" + t.doubleValue : \"timestampValue\" in t ? function(t) {\n var e = tt(t);\n return \"time(\" + e.seconds + \",\" + e.nanos + \")\";\n }(t.timestampValue) : \"stringValue\" in t ? t.stringValue : \"bytesValue\" in t ? nt(t.bytesValue).toBase64() : \"referenceValue\" in t ? (n = t.referenceValue, \n ct.fromName(n).toString()) : \"geoPointValue\" in t ? \"geo(\" + (e = t.geoPointValue).latitude + \",\" + e.longitude + \")\" : \"arrayValue\" in t ? function(t) {\n for (var e = \"[\", n = !0, r = 0, i = t.values || []; r < i.length; r++) {\n n ? n = !1 : e += \",\", e += vt(i[r]);\n }\n return e + \"]\";\n }(t.arrayValue) : \"mapValue\" in t ? function(t) {\n for (\n // Iteration order in JavaScript is not guaranteed. To ensure that we generate\n // matching canonical IDs for identical maps, we need to sort the keys.\n var e = \"{\", n = !0, r = 0, i = Object.keys(t.fields || {}).sort(); r < i.length; r++) {\n var o = i[r];\n n ? n = !1 : e += \",\", e += o + \":\" + vt(t.fields[o]);\n }\n return e + \"}\";\n }(t.mapValue) : O();\n var e, n;\n}\n\nfunction mt(t, e) {\n return {\n referenceValue: \"projects/\" + t.projectId + \"/databases/\" + t.database + \"/documents/\" + e.path.canonicalString()\n };\n}\n\n/** Returns true if `value` is an IntegerValue . */ function gt(t) {\n return !!t && \"integerValue\" in t;\n}\n\n/** Returns true if `value` is a DoubleValue. */\n/** Returns true if `value` is an ArrayValue. */ function wt(t) {\n return !!t && \"arrayValue\" in t;\n}\n\n/** Returns true if `value` is a NullValue. */ function bt(t) {\n return !!t && \"nullValue\" in t;\n}\n\n/** Returns true if `value` is NaN. */ function It(t) {\n return !!t && \"doubleValue\" in t && isNaN(Number(t.doubleValue));\n}\n\n/** Returns true if `value` is a MapValue. */ function Tt(t) {\n return !!t && \"mapValue\" in t;\n}\n\n/** Creates a deep copy of `source`. */ function _t(t) {\n if (t.geoPointValue) return {\n geoPointValue: Object.assign({}, t.geoPointValue)\n };\n if (t.timestampValue && \"object\" == typeof t.timestampValue) return {\n timestampValue: Object.assign({}, t.timestampValue)\n };\n if (t.mapValue) {\n var e = {\n mapValue: {\n fields: {}\n }\n };\n return Q(t.mapValue.fields, (function(t, n) {\n return e.mapValue.fields[t] = _t(n);\n })), e;\n }\n if (t.arrayValue) {\n for (var n = {\n arrayValue: {\n values: []\n }\n }, r = 0; r < (t.arrayValue.values || []).length; ++r) n.arrayValue.values[r] = _t(t.arrayValue.values[r]);\n return n;\n }\n return Object.assign({}, t);\n}\n\n/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * An ObjectValue represents a MapValue in the Firestore Proto and offers the\n * ability to add and remove fields (via the ObjectValueBuilder).\n */ var Et = /** @class */ function() {\n function t(t) {\n this.value = t;\n }\n return t.empty = function() {\n return new t({\n mapValue: {}\n });\n }, \n /**\n * Returns the value at the given path or null.\n *\n * @param path - the path to search\n * @returns The value at the path or null if the path is not set.\n */\n t.prototype.field = function(t) {\n if (t.isEmpty()) return this.value;\n for (var e = this.value, n = 0; n < t.length - 1; ++n) if (!Tt(e = (e.mapValue.fields || {})[t.get(n)])) return null;\n return (e = (e.mapValue.fields || {})[t.lastSegment()]) || null;\n }, \n /**\n * Sets the field to the provided value.\n *\n * @param path - The field path to set.\n * @param value - The value to set.\n */\n t.prototype.set = function(t, e) {\n this.getFieldsMap(t.popLast())[t.lastSegment()] = _t(e);\n }, \n /**\n * Sets the provided fields to the provided values.\n *\n * @param data - A map of fields to values (or null for deletes).\n */\n t.prototype.setAll = function(t) {\n var e = this, n = $.emptyPath(), r = {}, i = [];\n t.forEach((function(t, o) {\n if (!n.isImmediateParentOf(o)) {\n // Insert the accumulated changes at this parent location\n var s = e.getFieldsMap(n);\n e.applyChanges(s, r, i), r = {}, i = [], n = o.popLast();\n }\n t ? r[o.lastSegment()] = _t(t) : i.push(o.lastSegment());\n }));\n var o = this.getFieldsMap(n);\n this.applyChanges(o, r, i);\n }, \n /**\n * Removes the field at the specified path. If there is no field at the\n * specified path, nothing is changed.\n *\n * @param path - The field path to remove.\n */\n t.prototype.delete = function(t) {\n var e = this.field(t.popLast());\n Tt(e) && e.mapValue.fields && delete e.mapValue.fields[t.lastSegment()];\n }, t.prototype.isEqual = function(t) {\n return ft(this.value, t.value);\n }, \n /**\n * Returns the map that contains the leaf element of `path`. If the parent\n * entry does not yet exist, or if it is not a map, a new map will be created.\n */\n t.prototype.getFieldsMap = function(t) {\n var e = this.value;\n e.mapValue.fields || (e.mapValue = {\n fields: {}\n });\n for (var n = 0; n < t.length; ++n) {\n var r = e.mapValue.fields[t.get(n)];\n Tt(r) && r.mapValue.fields || (r = {\n mapValue: {\n fields: {}\n }\n }, e.mapValue.fields[t.get(n)] = r), e = r;\n }\n return e.mapValue.fields;\n }, \n /**\n * Modifies `fieldsMap` by adding, replacing or deleting the specified\n * entries.\n */\n t.prototype.applyChanges = function(t, e, n) {\n Q(e, (function(e, n) {\n return t[e] = n;\n }));\n for (var r = 0, i = n; r < i.length; r++) {\n var o = i[r];\n delete t[o];\n }\n }, t.prototype.clone = function() {\n return new t(_t(this.value));\n }, t;\n}();\n\n/**\n * Returns a FieldMask built from all fields in a MapValue.\n */ function St(t) {\n var e = [];\n return Q(t.fields, (function(t, n) {\n var r = new $([ t ]);\n if (Tt(n)) {\n var i = St(n.mapValue).fields;\n if (0 === i.length) \n // Preserve the empty map by adding it to the FieldMask.\n e.push(r); else \n // For nested and non-empty ObjectValues, add the FieldPath of the\n // leaf nodes.\n for (var o = 0, s = i; o < s.length; o++) {\n var u = s[o];\n e.push(r.child(u));\n }\n } else \n // For nested and non-empty ObjectValues, add the FieldPath of the leaf\n // nodes.\n e.push(r);\n })), new X(e)\n /**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n /**\n * Represents a document in Firestore with a key, version, data and whether it\n * has local mutations applied to it.\n *\n * Documents can transition between states via `convertToFoundDocument()`,\n * `convertToNoDocument()` and `convertToUnknownDocument()`. If a document does\n * not transition to one of these states even after all mutations have been\n * applied, `isValidDocument()` returns false and the document should be removed\n * from all views.\n */;\n}\n\nvar Nt = /** @class */ function() {\n function t(t, e, n, r, i) {\n this.key = t, this.documentType = e, this.version = n, this.data = r, this.documentState = i\n /**\n * Creates a document with no known version or data, but which can serve as\n * base document for mutations.\n */;\n }\n return t.newInvalidDocument = function(e) {\n return new t(e, 0 /* INVALID */ , K.min(), Et.empty(), 0 /* SYNCED */);\n }, \n /**\n * Creates a new document that is known to exist with the given data at the\n * given version.\n */\n t.newFoundDocument = function(e, n, r) {\n return new t(e, 1 /* FOUND_DOCUMENT */ , n, r, 0 /* SYNCED */);\n }, \n /** Creates a new document that is known to not exist at the given version. */ t.newNoDocument = function(e, n) {\n return new t(e, 2 /* NO_DOCUMENT */ , n, Et.empty(), 0 /* SYNCED */);\n }, \n /**\n * Creates a new document that is known to exist at the given version but\n * whose data is not known (e.g. a document that was updated without a known\n * base document).\n */\n t.newUnknownDocument = function(e, n) {\n return new t(e, 3 /* UNKNOWN_DOCUMENT */ , n, Et.empty(), 2 /* HAS_COMMITTED_MUTATIONS */);\n }, \n /**\n * Changes the document type to indicate that it exists and that its version\n * and data are known.\n */\n t.prototype.convertToFoundDocument = function(t, e) {\n return this.version = t, this.documentType = 1 /* FOUND_DOCUMENT */ , this.data = e, \n this.documentState = 0 /* SYNCED */ , this;\n }, \n /**\n * Changes the document type to indicate that it doesn't exist at the given\n * version.\n */\n t.prototype.convertToNoDocument = function(t) {\n return this.version = t, this.documentType = 2 /* NO_DOCUMENT */ , this.data = Et.empty(), \n this.documentState = 0 /* SYNCED */ , this;\n }, \n /**\n * Changes the document type to indicate that it exists at a given version but\n * that its data is not known (e.g. a document that was updated without a known\n * base document).\n */\n t.prototype.convertToUnknownDocument = function(t) {\n return this.version = t, this.documentType = 3 /* UNKNOWN_DOCUMENT */ , this.data = Et.empty(), \n this.documentState = 2 /* HAS_COMMITTED_MUTATIONS */ , this;\n }, t.prototype.setHasCommittedMutations = function() {\n return this.documentState = 2 /* HAS_COMMITTED_MUTATIONS */ , this;\n }, t.prototype.setHasLocalMutations = function() {\n return this.documentState = 1 /* HAS_LOCAL_MUTATIONS */ , this;\n }, Object.defineProperty(t.prototype, \"hasLocalMutations\", {\n get: function() {\n return 1 /* HAS_LOCAL_MUTATIONS */ === this.documentState;\n },\n enumerable: !1,\n configurable: !0\n }), Object.defineProperty(t.prototype, \"hasCommittedMutations\", {\n get: function() {\n return 2 /* HAS_COMMITTED_MUTATIONS */ === this.documentState;\n },\n enumerable: !1,\n configurable: !0\n }), Object.defineProperty(t.prototype, \"hasPendingWrites\", {\n get: function() {\n return this.hasLocalMutations || this.hasCommittedMutations;\n },\n enumerable: !1,\n configurable: !0\n }), t.prototype.isValidDocument = function() {\n return 0 /* INVALID */ !== this.documentType;\n }, t.prototype.isFoundDocument = function() {\n return 1 /* FOUND_DOCUMENT */ === this.documentType;\n }, t.prototype.isNoDocument = function() {\n return 2 /* NO_DOCUMENT */ === this.documentType;\n }, t.prototype.isUnknownDocument = function() {\n return 3 /* UNKNOWN_DOCUMENT */ === this.documentType;\n }, t.prototype.isEqual = function(e) {\n return e instanceof t && this.key.isEqual(e.key) && this.version.isEqual(e.version) && this.documentType === e.documentType && this.documentState === e.documentState && this.data.isEqual(e.data);\n }, t.prototype.clone = function() {\n return new t(this.key, this.documentType, this.version, this.data.clone(), this.documentState);\n }, t.prototype.toString = function() {\n return \"Document(\" + this.key + \", \" + this.version + \", \" + JSON.stringify(this.data.value) + \", {documentType: \" + this.documentType + \"}), {documentState: \" + this.documentState + \"})\";\n }, t;\n}(), Dt = function(t, e, n, r, i, o, s) {\n void 0 === e && (e = null), void 0 === n && (n = []), void 0 === r && (r = []), \n void 0 === i && (i = null), void 0 === o && (o = null), void 0 === s && (s = null), \n this.path = t, this.collectionGroup = e, this.orderBy = n, this.filters = r, this.limit = i, \n this.startAt = o, this.endAt = s, this.h = null;\n};\n\n/**\n * Compares the value for field `field` in the provided documents. Throws if\n * the field does not exist in both documents.\n */\n/**\n * @license\n * Copyright 2019 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n// Visible for testing\n/**\n * Initializes a Target with a path and optional additional query constraints.\n * Path must currently be empty if this is a collection group query.\n *\n * NOTE: you should always construct `Target` from `Query.toTarget` instead of\n * using this factory method, because `Query` provides an implicit `orderBy`\n * property.\n */\nfunction At(t, e, n, r, i, o, s) {\n return void 0 === e && (e = null), void 0 === n && (n = []), void 0 === r && (r = []), \n void 0 === i && (i = null), void 0 === o && (o = null), void 0 === s && (s = null), \n new Dt(t, e, n, r, i, o, s);\n}\n\nfunction kt(t) {\n var e = F(t);\n if (null === e.h) {\n var n = e.path.canonicalString();\n null !== e.collectionGroup && (n += \"|cg:\" + e.collectionGroup), n += \"|f:\", n += e.filters.map((function(t) {\n return function(t) {\n // TODO(b/29183165): Technically, this won't be unique if two values have\n // the same description, such as the int 3 and the string \"3\". So we should\n // add the types in here somehow, too.\n return t.field.canonicalString() + t.op.toString() + yt(t.value);\n }(t);\n })).join(\",\"), n += \"|ob:\", n += e.orderBy.map((function(t) {\n return function(t) {\n // TODO(b/29183165): Make this collision robust.\n return t.field.canonicalString() + t.dir;\n }(t);\n })).join(\",\"), st(e.limit) || (n += \"|l:\", n += e.limit), e.startAt && (n += \"|lb:\", \n n += jt(e.startAt)), e.endAt && (n += \"|ub:\", n += jt(e.endAt)), e.h = n;\n }\n return e.h;\n}\n\nfunction Ct(t, e) {\n if (t.limit !== e.limit) return !1;\n if (t.orderBy.length !== e.orderBy.length) return !1;\n for (var n = 0; n < t.orderBy.length; n++) if (!Gt(t.orderBy[n], e.orderBy[n])) return !1;\n if (t.filters.length !== e.filters.length) return !1;\n for (var r = 0; r < t.filters.length; r++) if (i = t.filters[r], o = e.filters[r], \n i.op !== o.op || !i.field.isEqual(o.field) || !ft(i.value, o.value)) return !1;\n var i, o;\n return t.collectionGroup === e.collectionGroup && !!t.path.isEqual(e.path) && !!zt(t.startAt, e.startAt) && zt(t.endAt, e.endAt);\n}\n\nfunction xt(t) {\n return ct.isDocumentKey(t.path) && null === t.collectionGroup && 0 === t.filters.length;\n}\n\nvar Rt = /** @class */ function(e) {\n function n(t, n, r) {\n var i = this;\n return (i = e.call(this) || this).field = t, i.op = n, i.value = r, i;\n }\n /**\n * Creates a filter based on the provided arguments.\n */ return t(n, e), n.create = function(t, e, r) {\n return t.isKeyField() ? \"in\" /* IN */ === e || \"not-in\" /* NOT_IN */ === e ? this.l(t, e, r) : new Lt(t, e, r) : \"array-contains\" /* ARRAY_CONTAINS */ === e ? new Mt(t, r) : \"in\" /* IN */ === e ? new Vt(t, r) : \"not-in\" /* NOT_IN */ === e ? new qt(t, r) : \"array-contains-any\" /* ARRAY_CONTAINS_ANY */ === e ? new Ut(t, r) : new n(t, e, r);\n }, n.l = function(t, e, n) {\n return \"in\" /* IN */ === e ? new Ot(t, n) : new Pt(t, n);\n }, n.prototype.matches = function(t) {\n var e = t.data.field(this.field);\n // Types do not have to match in NOT_EQUAL filters.\n return \"!=\" /* NOT_EQUAL */ === this.op ? null !== e && this.m(dt(e, this.value)) : null !== e && ht(this.value) === ht(e) && this.m(dt(e, this.value));\n // Only compare types with matching backend order (such as double and int).\n }, n.prototype.m = function(t) {\n switch (this.op) {\n case \"<\" /* LESS_THAN */ :\n return t < 0;\n\n case \"<=\" /* LESS_THAN_OR_EQUAL */ :\n return t <= 0;\n\n case \"==\" /* EQUAL */ :\n return 0 === t;\n\n case \"!=\" /* NOT_EQUAL */ :\n return 0 !== t;\n\n case \">\" /* GREATER_THAN */ :\n return t > 0;\n\n case \">=\" /* GREATER_THAN_OR_EQUAL */ :\n return t >= 0;\n\n default:\n return O();\n }\n }, n.prototype.g = function() {\n return [ \"<\" /* LESS_THAN */ , \"<=\" /* LESS_THAN_OR_EQUAL */ , \">\" /* GREATER_THAN */ , \">=\" /* GREATER_THAN_OR_EQUAL */ , \"!=\" /* NOT_EQUAL */ , \"not-in\" /* NOT_IN */ ].indexOf(this.op) >= 0;\n }, n;\n}((function() {}));\n\nvar Lt = /** @class */ function(e) {\n function n(t, n, r) {\n var i = this;\n return (i = e.call(this, t, n, r) || this).key = ct.fromName(r.referenceValue), \n i;\n }\n return t(n, e), n.prototype.matches = function(t) {\n var e = ct.comparator(t.key, this.key);\n return this.m(e);\n }, n;\n}(Rt), Ot = /** @class */ function(e) {\n function n(t, n) {\n var r = this;\n return (r = e.call(this, t, \"in\" /* IN */ , n) || this).keys = Ft(\"in\" /* IN */ , n), \n r;\n }\n return t(n, e), n.prototype.matches = function(t) {\n return this.keys.some((function(e) {\n return e.isEqual(t.key);\n }));\n }, n;\n}(Rt), Pt = /** @class */ function(e) {\n function n(t, n) {\n var r = this;\n return (r = e.call(this, t, \"not-in\" /* NOT_IN */ , n) || this).keys = Ft(\"not-in\" /* NOT_IN */ , n), \n r;\n }\n return t(n, e), n.prototype.matches = function(t) {\n return !this.keys.some((function(e) {\n return e.isEqual(t.key);\n }));\n }, n;\n}(Rt);\n\n/** Filter that matches on key fields within an array. */ function Ft(t, e) {\n var n;\n return ((null === (n = e.arrayValue) || void 0 === n ? void 0 : n.values) || []).map((function(t) {\n return ct.fromName(t.referenceValue);\n }));\n}\n\n/** A Filter that implements the array-contains operator. */ var Mt = /** @class */ function(e) {\n function n(t, n) {\n return e.call(this, t, \"array-contains\" /* ARRAY_CONTAINS */ , n) || this;\n }\n return t(n, e), n.prototype.matches = function(t) {\n var e = t.data.field(this.field);\n return wt(e) && lt(e.arrayValue, this.value);\n }, n;\n}(Rt), Vt = /** @class */ function(e) {\n function n(t, n) {\n return e.call(this, t, \"in\" /* IN */ , n) || this;\n }\n return t(n, e), n.prototype.matches = function(t) {\n var e = t.data.field(this.field);\n return null !== e && lt(this.value.arrayValue, e);\n }, n;\n}(Rt), qt = /** @class */ function(e) {\n function n(t, n) {\n return e.call(this, t, \"not-in\" /* NOT_IN */ , n) || this;\n }\n return t(n, e), n.prototype.matches = function(t) {\n if (lt(this.value.arrayValue, {\n nullValue: \"NULL_VALUE\"\n })) return !1;\n var e = t.data.field(this.field);\n return null !== e && !lt(this.value.arrayValue, e);\n }, n;\n}(Rt), Ut = /** @class */ function(e) {\n function n(t, n) {\n return e.call(this, t, \"array-contains-any\" /* ARRAY_CONTAINS_ANY */ , n) || this;\n }\n return t(n, e), n.prototype.matches = function(t) {\n var e = this, n = t.data.field(this.field);\n return !(!wt(n) || !n.arrayValue.values) && n.arrayValue.values.some((function(t) {\n return lt(e.value.arrayValue, t);\n }));\n }, n;\n}(Rt), Bt = function(t, e) {\n this.position = t, this.before = e;\n};\n\n/** A Filter that implements the IN operator. */ function jt(t) {\n // TODO(b/29183165): Make this collision robust.\n return (t.before ? \"b\" : \"a\") + \":\" + t.position.map((function(t) {\n return yt(t);\n })).join(\",\");\n}\n\n/**\n * An ordering on a field, in some Direction. Direction defaults to ASCENDING.\n */ var Kt = function(t, e /* ASCENDING */) {\n void 0 === e && (e = \"asc\"), this.field = t, this.dir = e;\n};\n\nfunction Gt(t, e) {\n return t.dir === e.dir && t.field.isEqual(e.field);\n}\n\n/**\n * Returns true if a document sorts before a bound using the provided sort\n * order.\n */ function Qt(t, e, n) {\n for (var r = 0, i = 0; i < t.position.length; i++) {\n var o = e[i], s = t.position[i];\n if (r = o.field.isKeyField() ? ct.comparator(ct.fromName(s.referenceValue), n.key) : dt(s, n.data.field(o.field)), \n \"desc\" /* DESCENDING */ === o.dir && (r *= -1), 0 !== r) break;\n }\n return t.before ? r <= 0 : r < 0;\n}\n\nfunction zt(t, e) {\n if (null === t) return null === e;\n if (null === e) return !1;\n if (t.before !== e.before || t.position.length !== e.position.length) return !1;\n for (var n = 0; n < t.position.length; n++) if (!ft(t.position[n], e.position[n])) return !1;\n return !0;\n}\n\n/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * Query encapsulates all the query attributes we support in the SDK. It can\n * be run against the LocalStore, as well as be converted to a `Target` to\n * query the RemoteStore results.\n *\n * Visible for testing.\n */ var Wt = \n/**\n * Initializes a Query with a path and optional additional query constraints.\n * Path must currently be empty if this is a collection group query.\n */\nfunction(t, e, n, r, i, o /* First */ , s, u) {\n void 0 === e && (e = null), void 0 === n && (n = []), void 0 === r && (r = []), \n void 0 === i && (i = null), void 0 === o && (o = \"F\"), void 0 === s && (s = null), \n void 0 === u && (u = null), this.path = t, this.collectionGroup = e, this.explicitOrderBy = n, \n this.filters = r, this.limit = i, this.limitType = o, this.startAt = s, this.endAt = u, \n this.p = null, \n // The corresponding `Target` of this `Query` instance.\n this.T = null, this.startAt, this.endAt;\n};\n\n/** Creates a new Query instance with the options provided. */ function Ht(t, e, n, r, i, o, s, u) {\n return new Wt(t, e, n, r, i, o, s, u);\n}\n\n/** Creates a new Query for a query that matches all documents at `path` */ function Yt(t) {\n return new Wt(t);\n}\n\n/**\n * Helper to convert a collection group query into a collection query at a\n * specific path. This is used when executing collection group queries, since\n * we have to split the query into a set of collection queries at multiple\n * paths.\n */ function $t(t) {\n return !st(t.limit) && \"F\" /* First */ === t.limitType;\n}\n\nfunction Xt(t) {\n return !st(t.limit) && \"L\" /* Last */ === t.limitType;\n}\n\nfunction Jt(t) {\n return t.explicitOrderBy.length > 0 ? t.explicitOrderBy[0].field : null;\n}\n\nfunction Zt(t) {\n for (var e = 0, n = t.filters; e < n.length; e++) {\n var r = n[e];\n if (r.g()) return r.field;\n }\n return null;\n}\n\n/**\n * Checks if any of the provided Operators are included in the query and\n * returns the first one that is, or null if none are.\n */\n/**\n * Returns whether the query matches a collection group rather than a specific\n * collection.\n */ function te(t) {\n return null !== t.collectionGroup;\n}\n\n/**\n * Returns the implicit order by constraint that is used to execute the Query,\n * which can be different from the order by constraints the user provided (e.g.\n * the SDK and backend always orders by `__name__`).\n */ function ee(t) {\n var e = F(t);\n if (null === e.p) {\n e.p = [];\n var n = Zt(e), r = Jt(e);\n if (null !== n && null === r) \n // In order to implicitly add key ordering, we must also add the\n // inequality filter field for it to be a valid query.\n // Note that the default inequality field and key ordering is ascending.\n n.isKeyField() || e.p.push(new Kt(n)), e.p.push(new Kt($.keyField(), \"asc\" /* ASCENDING */)); else {\n for (var i = !1, o = 0, s = e.explicitOrderBy; o < s.length; o++) {\n var u = s[o];\n e.p.push(u), u.field.isKeyField() && (i = !0);\n }\n if (!i) {\n // The order of the implicit key ordering always matches the last\n // explicit order by\n var a = e.explicitOrderBy.length > 0 ? e.explicitOrderBy[e.explicitOrderBy.length - 1].dir : \"asc\" /* ASCENDING */;\n e.p.push(new Kt($.keyField(), a));\n }\n }\n }\n return e.p;\n}\n\n/**\n * Converts this `Query` instance to it's corresponding `Target` representation.\n */ function ne(t) {\n var e = F(t);\n if (!e.T) if (\"F\" /* First */ === e.limitType) e.T = At(e.path, e.collectionGroup, ee(e), e.filters, e.limit, e.startAt, e.endAt); else {\n for (\n // Flip the orderBy directions since we want the last results\n var n = [], r = 0, i = ee(e); r < i.length; r++) {\n var o = i[r], s = \"desc\" /* DESCENDING */ === o.dir ? \"asc\" /* ASCENDING */ : \"desc\" /* DESCENDING */;\n n.push(new Kt(o.field, s));\n }\n // We need to swap the cursors to match the now-flipped query ordering.\n var u = e.endAt ? new Bt(e.endAt.position, !e.endAt.before) : null, a = e.startAt ? new Bt(e.startAt.position, !e.startAt.before) : null;\n // Now return as a LimitType.First query.\n e.T = At(e.path, e.collectionGroup, n, e.filters, e.limit, u, a);\n }\n return e.T;\n}\n\nfunction re(t, e, n) {\n return new Wt(t.path, t.collectionGroup, t.explicitOrderBy.slice(), t.filters.slice(), e, n, t.startAt, t.endAt);\n}\n\nfunction ie(t, e) {\n return Ct(ne(t), ne(e)) && t.limitType === e.limitType;\n}\n\n// TODO(b/29183165): This is used to get a unique string from a query to, for\n// example, use as a dictionary key, but the implementation is subject to\n// collisions. Make it collision-free.\nfunction oe(t) {\n return kt(ne(t)) + \"|lt:\" + t.limitType;\n}\n\nfunction se(t) {\n return \"Query(target=\" + function(t) {\n var e = t.path.canonicalString();\n return null !== t.collectionGroup && (e += \" collectionGroup=\" + t.collectionGroup), \n t.filters.length > 0 && (e += \", filters: [\" + t.filters.map((function(t) {\n return (e = t).field.canonicalString() + \" \" + e.op + \" \" + yt(e.value);\n /** Returns a debug description for `filter`. */ var e;\n /** Filter that matches on key fields (i.e. '__name__'). */ })).join(\", \") + \"]\"), \n st(t.limit) || (e += \", limit: \" + t.limit), t.orderBy.length > 0 && (e += \", orderBy: [\" + t.orderBy.map((function(t) {\n return function(t) {\n return t.field.canonicalString() + \" (\" + t.dir + \")\";\n }(t);\n })).join(\", \") + \"]\"), t.startAt && (e += \", startAt: \" + jt(t.startAt)), t.endAt && (e += \", endAt: \" + jt(t.endAt)), \n \"Target(\" + e + \")\";\n }(ne(t)) + \"; limitType=\" + t.limitType + \")\";\n}\n\n/** Returns whether `doc` matches the constraints of `query`. */ function ue(t, e) {\n return e.isFoundDocument() && function(t, e) {\n var n = e.key.path;\n return null !== t.collectionGroup ? e.key.hasCollectionId(t.collectionGroup) && t.path.isPrefixOf(n) : ct.isDocumentKey(t.path) ? t.path.isEqual(n) : t.path.isImmediateParentOf(n);\n }(t, e) && function(t, e) {\n for (var n = 0, r = t.explicitOrderBy; n < r.length; n++) {\n var i = r[n];\n // order by key always matches\n if (!i.field.isKeyField() && null === e.data.field(i.field)) return !1;\n }\n return !0;\n }(t, e) && function(t, e) {\n for (var n = 0, r = t.filters; n < r.length; n++) {\n if (!r[n].matches(e)) return !1;\n }\n return !0;\n }(t, e) && function(t, e) {\n return !(t.startAt && !Qt(t.startAt, ee(t), e)) && (!t.endAt || !Qt(t.endAt, ee(t), e));\n }(t, e);\n}\n\nfunction ae(t) {\n return function(e, n) {\n for (var r = !1, i = 0, o = ee(t); i < o.length; i++) {\n var s = o[i], u = ce(s, e, n);\n if (0 !== u) return u;\n r = r || s.field.isKeyField();\n }\n return 0;\n };\n}\n\nfunction ce(t, e, n) {\n var r = t.field.isKeyField() ? ct.comparator(e.key, n.key) : function(t, e, n) {\n var r = e.data.field(t), i = n.data.field(t);\n return null !== r && null !== i ? dt(r, i) : O();\n }(t.field, e, n);\n switch (t.dir) {\n case \"asc\" /* ASCENDING */ :\n return r;\n\n case \"desc\" /* DESCENDING */ :\n return -1 * r;\n\n default:\n return O();\n }\n}\n\n/**\n * @license\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * Returns an DoubleValue for `value` that is encoded based the serializer's\n * `useProto3Json` setting.\n */ function he(t, e) {\n if (t.I) {\n if (isNaN(e)) return {\n doubleValue: \"NaN\"\n };\n if (e === 1 / 0) return {\n doubleValue: \"Infinity\"\n };\n if (e === -1 / 0) return {\n doubleValue: \"-Infinity\"\n };\n }\n return {\n doubleValue: ut(e) ? \"-0\" : e\n };\n}\n\n/**\n * Returns an IntegerValue for `value`.\n */ function fe(t) {\n return {\n integerValue: \"\" + t\n };\n}\n\n/**\n * Returns a value for a number that's appropriate to put into a proto.\n * The return value is an IntegerValue if it can safely represent the value,\n * otherwise a DoubleValue is returned.\n */ function le(t, e) {\n return at(e) ? fe(e) : he(t, e);\n}\n\n/**\n * @license\n * Copyright 2018 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/** Used to represent a field transform on a mutation. */ var de = function() {\n // Make sure that the structural type of `TransformOperation` is unique.\n // See https://github.com/microsoft/TypeScript/issues/5451\n this._ = void 0;\n};\n\n/**\n * Computes the local transform result against the provided `previousValue`,\n * optionally using the provided localWriteTime.\n */ function pe(t, e, n) {\n return t instanceof me ? function(t, e) {\n var n = {\n fields: {\n __type__: {\n stringValue: \"server_timestamp\"\n },\n __local_write_time__: {\n timestampValue: {\n seconds: t.seconds,\n nanos: t.nanoseconds\n }\n }\n }\n };\n return e && (n.fields.__previous_value__ = e), {\n mapValue: n\n };\n }(n, e) : t instanceof ge ? we(t, e) : t instanceof be ? Ie(t, e) : function(t, e) {\n // PORTING NOTE: Since JavaScript's integer arithmetic is limited to 53 bit\n // precision and resolves overflows by reducing precision, we do not\n // manually cap overflows at 2^63.\n var n = ve(t, e), r = _e(n) + _e(t.A);\n return gt(n) && gt(t.A) ? fe(r) : he(t.R, r);\n }(t, e);\n}\n\n/**\n * Computes a final transform result after the transform has been acknowledged\n * by the server, potentially using the server-provided transformResult.\n */ function ye(t, e, n) {\n // The server just sends null as the transform result for array operations,\n // so we have to calculate a result the same as we do for local\n // applications.\n return t instanceof ge ? we(t, e) : t instanceof be ? Ie(t, e) : n;\n}\n\n/**\n * If this transform operation is not idempotent, returns the base value to\n * persist for this transform. If a base value is returned, the transform\n * operation is always applied to this base value, even if document has\n * already been updated.\n *\n * Base values provide consistent behavior for non-idempotent transforms and\n * allow us to return the same latency-compensated value even if the backend\n * has already applied the transform operation. The base value is null for\n * idempotent transforms, as they can be re-played even if the backend has\n * already applied them.\n *\n * @returns a base value to store along with the mutation, or null for\n * idempotent transforms.\n */ function ve(t, e) {\n return t instanceof Te ? gt(n = e) || function(t) {\n return !!t && \"doubleValue\" in t;\n }(n) ? e : {\n integerValue: 0\n } : null;\n var n;\n}\n\n/** Transforms a value into a server-generated timestamp. */ var me = /** @class */ function(e) {\n function n() {\n return null !== e && e.apply(this, arguments) || this;\n }\n return t(n, e), n;\n}(de), ge = /** @class */ function(e) {\n function n(t) {\n var n = this;\n return (n = e.call(this) || this).elements = t, n;\n }\n return t(n, e), n;\n}(de);\n\n/** Transforms an array value via a union operation. */ function we(t, e) {\n for (var n = Ee(e), r = function(t) {\n n.some((function(e) {\n return ft(e, t);\n })) || n.push(t);\n }, i = 0, o = t.elements; i < o.length; i++) {\n r(o[i]);\n }\n return {\n arrayValue: {\n values: n\n }\n };\n}\n\n/** Transforms an array value via a remove operation. */ var be = /** @class */ function(e) {\n function n(t) {\n var n = this;\n return (n = e.call(this) || this).elements = t, n;\n }\n return t(n, e), n;\n}(de);\n\nfunction Ie(t, e) {\n for (var n = Ee(e), r = function(t) {\n n = n.filter((function(e) {\n return !ft(e, t);\n }));\n }, i = 0, o = t.elements; i < o.length; i++) {\n r(o[i]);\n }\n return {\n arrayValue: {\n values: n\n }\n };\n}\n\n/**\n * Implements the backend semantics for locally computed NUMERIC_ADD (increment)\n * transforms. Converts all field values to integers or doubles, but unlike the\n * backend does not cap integer values at 2^63. Instead, JavaScript number\n * arithmetic is used and precision loss can occur for values greater than 2^53.\n */ var Te = /** @class */ function(e) {\n function n(t, n) {\n var r = this;\n return (r = e.call(this) || this).R = t, r.A = n, r;\n }\n return t(n, e), n;\n}(de);\n\nfunction _e(t) {\n return et(t.integerValue || t.doubleValue);\n}\n\nfunction Ee(t) {\n return wt(t) && t.arrayValue.values ? t.arrayValue.values.slice() : [];\n}\n\n/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/** A field path and the TransformOperation to perform upon it. */ var Se = function(t, e) {\n this.field = t, this.transform = e;\n};\n\n/** The result of successfully applying a mutation to the backend. */\nvar Ne = function(\n/**\n * The version at which the mutation was committed:\n *\n * - For most operations, this is the updateTime in the WriteResult.\n * - For deletes, the commitTime of the WriteResponse (because deletes are\n * not stored and have no updateTime).\n *\n * Note that these versions can be different: No-op writes will not change\n * the updateTime even though the commitTime advances.\n */\nt, \n/**\n * The resulting fields returned from the backend after a mutation\n * containing field transforms has been committed. Contains one FieldValue\n * for each FieldTransform that was in the mutation.\n *\n * Will be empty if the mutation did not contain any field transforms.\n */\ne) {\n this.version = t, this.transformResults = e;\n}, De = /** @class */ function() {\n function t(t, e) {\n this.updateTime = t, this.exists = e\n /** Creates a new empty Precondition. */;\n }\n return t.none = function() {\n return new t;\n }, \n /** Creates a new Precondition with an exists flag. */ t.exists = function(e) {\n return new t(void 0, e);\n }, \n /** Creates a new Precondition based on a version a document exists at. */ t.updateTime = function(e) {\n return new t(e);\n }, Object.defineProperty(t.prototype, \"isNone\", {\n /** Returns whether this Precondition is empty. */ get: function() {\n return void 0 === this.updateTime && void 0 === this.exists;\n },\n enumerable: !1,\n configurable: !0\n }), t.prototype.isEqual = function(t) {\n return this.exists === t.exists && (this.updateTime ? !!t.updateTime && this.updateTime.isEqual(t.updateTime) : !t.updateTime);\n }, t;\n}();\n\n/**\n * Encodes a precondition for a mutation. This follows the model that the\n * backend accepts with the special case of an explicit \"empty\" precondition\n * (meaning no precondition).\n */\n/** Returns true if the preconditions is valid for the given document. */ function Ae(t, e) {\n return void 0 !== t.updateTime ? e.isFoundDocument() && e.version.isEqual(t.updateTime) : void 0 === t.exists || t.exists === e.isFoundDocument();\n}\n\n/**\n * A mutation describes a self-contained change to a document. Mutations can\n * create, replace, delete, and update subsets of documents.\n *\n * Mutations not only act on the value of the document but also its version.\n *\n * For local mutations (mutations that haven't been committed yet), we preserve\n * the existing version for Set and Patch mutations. For Delete mutations, we\n * reset the version to 0.\n *\n * Here's the expected transition table.\n *\n * MUTATION APPLIED TO RESULTS IN\n *\n * SetMutation Document(v3) Document(v3)\n * SetMutation NoDocument(v3) Document(v0)\n * SetMutation InvalidDocument(v0) Document(v0)\n * PatchMutation Document(v3) Document(v3)\n * PatchMutation NoDocument(v3) NoDocument(v3)\n * PatchMutation InvalidDocument(v0) UnknownDocument(v3)\n * DeleteMutation Document(v3) NoDocument(v0)\n * DeleteMutation NoDocument(v3) NoDocument(v0)\n * DeleteMutation InvalidDocument(v0) NoDocument(v0)\n *\n * For acknowledged mutations, we use the updateTime of the WriteResponse as\n * the resulting version for Set and Patch mutations. As deletes have no\n * explicit update time, we use the commitTime of the WriteResponse for\n * Delete mutations.\n *\n * If a mutation is acknowledged by the backend but fails the precondition check\n * locally, we transition to an `UnknownDocument` and rely on Watch to send us\n * the updated version.\n *\n * Field transforms are used only with Patch and Set Mutations. We use the\n * `updateTransforms` message to store transforms, rather than the `transforms`s\n * messages.\n *\n * ## Subclassing Notes\n *\n * Every type of mutation needs to implement its own applyToRemoteDocument() and\n * applyToLocalView() to implement the actual behavior of applying the mutation\n * to some source document (see `applySetMutationToRemoteDocument()` for an\n * example).\n */ var ke = function() {};\n\n/**\n * Applies this mutation to the given document for the purposes of computing a\n * new remote document. If the input document doesn't match the expected state\n * (e.g. it is invalid or outdated), the document type may transition to\n * unknown.\n *\n * @param mutation - The mutation to apply.\n * @param document - The document to mutate. The input document can be an\n * invalid document if the client has no knowledge of the pre-mutation state\n * of the document.\n * @param mutationResult - The result of applying the mutation from the backend.\n */ function Ce(t, e, n) {\n t instanceof Pe ? function(t, e, n) {\n // Unlike applySetMutationToLocalView, if we're applying a mutation to a\n // remote document the server has accepted the mutation so the precondition\n // must have held.\n var r = t.value.clone(), i = Ve(t.fieldTransforms, e, n.transformResults);\n r.setAll(i), e.convertToFoundDocument(n.version, r).setHasCommittedMutations();\n }(t, e, n) : t instanceof Fe ? function(t, e, n) {\n if (Ae(t.precondition, e)) {\n var r = Ve(t.fieldTransforms, e, n.transformResults), i = e.data;\n i.setAll(Me(t)), i.setAll(r), e.convertToFoundDocument(n.version, i).setHasCommittedMutations();\n } else e.convertToUnknownDocument(n.version);\n }(t, e, n) : function(t, e, n) {\n // Unlike applyToLocalView, if we're applying a mutation to a remote\n // document the server has accepted the mutation so the precondition must\n // have held.\n e.convertToNoDocument(n.version).setHasCommittedMutations();\n }(0, e, n);\n}\n\n/**\n * Applies this mutation to the given document for the purposes of computing\n * the new local view of a document. If the input document doesn't match the\n * expected state, the document is not modified.\n *\n * @param mutation - The mutation to apply.\n * @param document - The document to mutate. The input document can be an\n * invalid document if the client has no knowledge of the pre-mutation state\n * of the document.\n * @param localWriteTime - A timestamp indicating the local write time of the\n * batch this mutation is a part of.\n */ function xe(t, e, n) {\n t instanceof Pe ? function(t, e, n) {\n if (Ae(t.precondition, e)) {\n var r = t.value.clone(), i = qe(t.fieldTransforms, n, e);\n r.setAll(i), e.convertToFoundDocument(Oe(e), r).setHasLocalMutations();\n }\n }(t, e, n) : t instanceof Fe ? function(t, e, n) {\n if (Ae(t.precondition, e)) {\n var r = qe(t.fieldTransforms, n, e), i = e.data;\n i.setAll(Me(t)), i.setAll(r), e.convertToFoundDocument(Oe(e), i).setHasLocalMutations();\n }\n }(t, e, n) : function(t, e) {\n Ae(t.precondition, e) && \n // We don't call `setHasLocalMutations()` since we want to be backwards\n // compatible with the existing SDK behavior.\n e.convertToNoDocument(K.min());\n }(t, e);\n}\n\n/**\n * If this mutation is not idempotent, returns the base value to persist with\n * this mutation. If a base value is returned, the mutation is always applied\n * to this base value, even if document has already been updated.\n *\n * The base value is a sparse object that consists of only the document\n * fields for which this mutation contains a non-idempotent transformation\n * (e.g. a numeric increment). The provided value guarantees consistent\n * behavior for non-idempotent transforms and allow us to return the same\n * latency-compensated value even if the backend has already applied the\n * mutation. The base value is null for idempotent mutations, as they can be\n * re-played even if the backend has already applied them.\n *\n * @returns a base value to store along with the mutation, or null for\n * idempotent mutations.\n */ function Re(t, e) {\n for (var n = null, r = 0, i = t.fieldTransforms; r < i.length; r++) {\n var o = i[r], s = e.data.field(o.field), u = ve(o.transform, s || null);\n null != u && (null == n && (n = Et.empty()), n.set(o.field, u));\n }\n return n || null;\n}\n\nfunction Le(t, e) {\n return t.type === e.type && !!t.key.isEqual(e.key) && !!t.precondition.isEqual(e.precondition) && !!function(t, e) {\n return void 0 === t && void 0 === e || !(!t || !e) && U(t, e, (function(t, e) {\n return function(t, e) {\n return t.field.isEqual(e.field) && function(t, e) {\n return t instanceof ge && e instanceof ge || t instanceof be && e instanceof be ? U(t.elements, e.elements, ft) : t instanceof Te && e instanceof Te ? ft(t.A, e.A) : t instanceof me && e instanceof me;\n }(t.transform, e.transform);\n }(t, e);\n }));\n }(t.fieldTransforms, e.fieldTransforms) && (0 /* Set */ === t.type ? t.value.isEqual(e.value) : 1 /* Patch */ !== t.type || t.data.isEqual(e.data) && t.fieldMask.isEqual(e.fieldMask));\n}\n\n/**\n * Returns the version from the given document for use as the result of a\n * mutation. Mutations are defined to return the version of the base document\n * only if it is an existing document. Deleted and unknown documents have a\n * post-mutation version of SnapshotVersion.min().\n */ function Oe(t) {\n return t.isFoundDocument() ? t.version : K.min();\n}\n\n/**\n * A mutation that creates or replaces the document at the given key with the\n * object value contents.\n */ var Pe = /** @class */ function(e) {\n function n(t, n, r, i) {\n void 0 === i && (i = []);\n var o = this;\n return (o = e.call(this) || this).key = t, o.value = n, o.precondition = r, o.fieldTransforms = i, \n o.type = 0 /* Set */ , o;\n }\n return t(n, e), n;\n}(ke), Fe = /** @class */ function(e) {\n function n(t, n, r, i, o) {\n void 0 === o && (o = []);\n var s = this;\n return (s = e.call(this) || this).key = t, s.data = n, s.fieldMask = r, s.precondition = i, \n s.fieldTransforms = o, s.type = 1 /* Patch */ , s;\n }\n return t(n, e), n;\n}(ke);\n\nfunction Me(t) {\n var e = new Map;\n return t.fieldMask.fields.forEach((function(n) {\n if (!n.isEmpty()) {\n var r = t.data.field(n);\n e.set(n, r);\n }\n })), e\n /**\n * Creates a list of \"transform results\" (a transform result is a field value\n * representing the result of applying a transform) for use after a mutation\n * containing transforms has been acknowledged by the server.\n *\n * @param fieldTransforms - The field transforms to apply the result to.\n * @param mutableDocument - The current state of the document after applying all\n * previous mutations.\n * @param serverTransformResults - The transform results received by the server.\n * @returns The transform results list.\n */;\n}\n\nfunction Ve(t, e, n) {\n var r = new Map;\n P(t.length === n.length);\n for (var i = 0; i < n.length; i++) {\n var o = t[i], s = o.transform, u = e.data.field(o.field);\n r.set(o.field, ye(s, u, n[i]));\n }\n return r;\n}\n\n/**\n * Creates a list of \"transform results\" (a transform result is a field value\n * representing the result of applying a transform) for use when applying a\n * transform locally.\n *\n * @param fieldTransforms - The field transforms to apply the result to.\n * @param localWriteTime - The local time of the mutation (used to\n * generate ServerTimestampValues).\n * @param mutableDocument - The current state of the document after applying all\n * previous mutations.\n * @returns The transform results list.\n */ function qe(t, e, n) {\n for (var r = new Map, i = 0, o = t; i < o.length; i++) {\n var s = o[i], u = s.transform, a = n.data.field(s.field);\n r.set(s.field, pe(u, a, e));\n }\n return r;\n}\n\n/** A mutation that deletes the document at the given key. */ var Ue, Be, je = /** @class */ function(e) {\n function n(t, n) {\n var r = this;\n return (r = e.call(this) || this).key = t, r.precondition = n, r.type = 2 /* Delete */ , \n r.fieldTransforms = [], r;\n }\n return t(n, e), n;\n}(ke), Ke = /** @class */ function(e) {\n function n(t, n) {\n var r = this;\n return (r = e.call(this) || this).key = t, r.precondition = n, r.type = 3 /* Verify */ , \n r.fieldTransforms = [], r;\n }\n return t(n, e), n;\n}(ke), Ge = \n// TODO(b/33078163): just use simplest form of existence filter for now\nfunction(t) {\n this.count = t;\n};\n\n/**\n * Determines whether an error code represents a permanent error when received\n * in response to a non-write operation.\n *\n * See isPermanentWriteError for classifying write errors.\n */\nfunction Qe(t) {\n switch (t) {\n case N.OK:\n return O();\n\n case N.CANCELLED:\n case N.UNKNOWN:\n case N.DEADLINE_EXCEEDED:\n case N.RESOURCE_EXHAUSTED:\n case N.INTERNAL:\n case N.UNAVAILABLE:\n // Unauthenticated means something went wrong with our token and we need\n // to retry with new credentials which will happen automatically.\n case N.UNAUTHENTICATED:\n return !1;\n\n case N.INVALID_ARGUMENT:\n case N.NOT_FOUND:\n case N.ALREADY_EXISTS:\n case N.PERMISSION_DENIED:\n case N.FAILED_PRECONDITION:\n // Aborted might be retried in some scenarios, but that is dependant on\n // the context and should handled individually by the calling code.\n // See https://cloud.google.com/apis/design/errors.\n case N.ABORTED:\n case N.OUT_OF_RANGE:\n case N.UNIMPLEMENTED:\n case N.DATA_LOSS:\n return !0;\n\n default:\n return O();\n }\n}\n\n/**\n * Determines whether an error code represents a permanent error when received\n * in response to a write operation.\n *\n * Write operations must be handled specially because as of b/119437764, ABORTED\n * errors on the write stream should be retried too (even though ABORTED errors\n * are not generally retryable).\n *\n * Note that during the initial handshake on the write stream an ABORTED error\n * signals that we should discard our stream token (i.e. it is permanent). This\n * means a handshake error should be classified with isPermanentError, above.\n */\n/**\n * Maps an error Code from GRPC status code number, like 0, 1, or 14. These\n * are not the same as HTTP status codes.\n *\n * @returns The Code equivalent to the given GRPC status code. Fails if there\n * is no match.\n */ function ze(t) {\n if (void 0 === t) \n // This shouldn't normally happen, but in certain error cases (like trying\n // to send invalid proto messages) we may get an error with no GRPC code.\n return x(\"GRPC error has no .code\"), N.UNKNOWN;\n switch (t) {\n case Ue.OK:\n return N.OK;\n\n case Ue.CANCELLED:\n return N.CANCELLED;\n\n case Ue.UNKNOWN:\n return N.UNKNOWN;\n\n case Ue.DEADLINE_EXCEEDED:\n return N.DEADLINE_EXCEEDED;\n\n case Ue.RESOURCE_EXHAUSTED:\n return N.RESOURCE_EXHAUSTED;\n\n case Ue.INTERNAL:\n return N.INTERNAL;\n\n case Ue.UNAVAILABLE:\n return N.UNAVAILABLE;\n\n case Ue.UNAUTHENTICATED:\n return N.UNAUTHENTICATED;\n\n case Ue.INVALID_ARGUMENT:\n return N.INVALID_ARGUMENT;\n\n case Ue.NOT_FOUND:\n return N.NOT_FOUND;\n\n case Ue.ALREADY_EXISTS:\n return N.ALREADY_EXISTS;\n\n case Ue.PERMISSION_DENIED:\n return N.PERMISSION_DENIED;\n\n case Ue.FAILED_PRECONDITION:\n return N.FAILED_PRECONDITION;\n\n case Ue.ABORTED:\n return N.ABORTED;\n\n case Ue.OUT_OF_RANGE:\n return N.OUT_OF_RANGE;\n\n case Ue.UNIMPLEMENTED:\n return N.UNIMPLEMENTED;\n\n case Ue.DATA_LOSS:\n return N.DATA_LOSS;\n\n default:\n return O();\n }\n}\n\n/**\n * Converts an HTTP response's error status to the equivalent error code.\n *\n * @param status - An HTTP error response status (\"FAILED_PRECONDITION\",\n * \"UNKNOWN\", etc.)\n * @returns The equivalent Code. Non-matching responses are mapped to\n * Code.UNKNOWN.\n */ (Be = Ue || (Ue = {}))[Be.OK = 0] = \"OK\", Be[Be.CANCELLED = 1] = \"CANCELLED\", \nBe[Be.UNKNOWN = 2] = \"UNKNOWN\", Be[Be.INVALID_ARGUMENT = 3] = \"INVALID_ARGUMENT\", \nBe[Be.DEADLINE_EXCEEDED = 4] = \"DEADLINE_EXCEEDED\", Be[Be.NOT_FOUND = 5] = \"NOT_FOUND\", \nBe[Be.ALREADY_EXISTS = 6] = \"ALREADY_EXISTS\", Be[Be.PERMISSION_DENIED = 7] = \"PERMISSION_DENIED\", \nBe[Be.UNAUTHENTICATED = 16] = \"UNAUTHENTICATED\", Be[Be.RESOURCE_EXHAUSTED = 8] = \"RESOURCE_EXHAUSTED\", \nBe[Be.FAILED_PRECONDITION = 9] = \"FAILED_PRECONDITION\", Be[Be.ABORTED = 10] = \"ABORTED\", \nBe[Be.OUT_OF_RANGE = 11] = \"OUT_OF_RANGE\", Be[Be.UNIMPLEMENTED = 12] = \"UNIMPLEMENTED\", \nBe[Be.INTERNAL = 13] = \"INTERNAL\", Be[Be.UNAVAILABLE = 14] = \"UNAVAILABLE\", Be[Be.DATA_LOSS = 15] = \"DATA_LOSS\";\n\n/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n// An immutable sorted map implementation, based on a Left-leaning Red-Black\n// tree.\nvar We = /** @class */ function() {\n function t(t, e) {\n this.comparator = t, this.root = e || Ye.EMPTY;\n }\n // Returns a copy of the map, with the specified key/value added or replaced.\n return t.prototype.insert = function(e, n) {\n return new t(this.comparator, this.root.insert(e, n, this.comparator).copy(null, null, Ye.BLACK, null, null));\n }, \n // Returns a copy of the map, with the specified key removed.\n t.prototype.remove = function(e) {\n return new t(this.comparator, this.root.remove(e, this.comparator).copy(null, null, Ye.BLACK, null, null));\n }, \n // Returns the value of the node with the given key, or null.\n t.prototype.get = function(t) {\n for (var e = this.root; !e.isEmpty(); ) {\n var n = this.comparator(t, e.key);\n if (0 === n) return e.value;\n n < 0 ? e = e.left : n > 0 && (e = e.right);\n }\n return null;\n }, \n // Returns the index of the element in this sorted map, or -1 if it doesn't\n // exist.\n t.prototype.indexOf = function(t) {\n for (\n // Number of nodes that were pruned when descending right\n var e = 0, n = this.root; !n.isEmpty(); ) {\n var r = this.comparator(t, n.key);\n if (0 === r) return e + n.left.size;\n r < 0 ? n = n.left : (\n // Count all nodes left of the node plus the node itself\n e += n.left.size + 1, n = n.right);\n }\n // Node not found\n return -1;\n }, t.prototype.isEmpty = function() {\n return this.root.isEmpty();\n }, Object.defineProperty(t.prototype, \"size\", {\n // Returns the total number of nodes in the map.\n get: function() {\n return this.root.size;\n },\n enumerable: !1,\n configurable: !0\n }), \n // Returns the minimum key in the map.\n t.prototype.minKey = function() {\n return this.root.minKey();\n }, \n // Returns the maximum key in the map.\n t.prototype.maxKey = function() {\n return this.root.maxKey();\n }, \n // Traverses the map in key order and calls the specified action function\n // for each key/value pair. If action returns true, traversal is aborted.\n // Returns the first truthy value returned by action, or the last falsey\n // value returned by action.\n t.prototype.inorderTraversal = function(t) {\n return this.root.inorderTraversal(t);\n }, t.prototype.forEach = function(t) {\n this.inorderTraversal((function(e, n) {\n return t(e, n), !1;\n }));\n }, t.prototype.toString = function() {\n var t = [];\n return this.inorderTraversal((function(e, n) {\n return t.push(e + \":\" + n), !1;\n })), \"{\" + t.join(\", \") + \"}\";\n }, \n // Traverses the map in reverse key order and calls the specified action\n // function for each key/value pair. If action returns true, traversal is\n // aborted.\n // Returns the first truthy value returned by action, or the last falsey\n // value returned by action.\n t.prototype.reverseTraversal = function(t) {\n return this.root.reverseTraversal(t);\n }, \n // Returns an iterator over the SortedMap.\n t.prototype.getIterator = function() {\n return new He(this.root, null, this.comparator, !1);\n }, t.prototype.getIteratorFrom = function(t) {\n return new He(this.root, t, this.comparator, !1);\n }, t.prototype.getReverseIterator = function() {\n return new He(this.root, null, this.comparator, !0);\n }, t.prototype.getReverseIteratorFrom = function(t) {\n return new He(this.root, t, this.comparator, !0);\n }, t;\n}(), He = /** @class */ function() {\n function t(t, e, n, r) {\n this.isReverse = r, this.nodeStack = [];\n for (var i = 1; !t.isEmpty(); ) if (i = e ? n(t.key, e) : 1, \n // flip the comparison if we're going in reverse\n r && (i *= -1), i < 0) \n // This node is less than our start key. ignore it\n t = this.isReverse ? t.left : t.right; else {\n if (0 === i) {\n // This node is exactly equal to our start key. Push it on the stack,\n // but stop iterating;\n this.nodeStack.push(t);\n break;\n }\n // This node is greater than our start key, add it to the stack and move\n // to the next one\n this.nodeStack.push(t), t = this.isReverse ? t.right : t.left;\n }\n }\n return t.prototype.getNext = function() {\n var t = this.nodeStack.pop(), e = {\n key: t.key,\n value: t.value\n };\n if (this.isReverse) for (t = t.left; !t.isEmpty(); ) this.nodeStack.push(t), t = t.right; else for (t = t.right; !t.isEmpty(); ) this.nodeStack.push(t), \n t = t.left;\n return e;\n }, t.prototype.hasNext = function() {\n return this.nodeStack.length > 0;\n }, t.prototype.peek = function() {\n if (0 === this.nodeStack.length) return null;\n var t = this.nodeStack[this.nodeStack.length - 1];\n return {\n key: t.key,\n value: t.value\n };\n }, t;\n}(), Ye = /** @class */ function() {\n function t(e, n, r, i, o) {\n this.key = e, this.value = n, this.color = null != r ? r : t.RED, this.left = null != i ? i : t.EMPTY, \n this.right = null != o ? o : t.EMPTY, this.size = this.left.size + 1 + this.right.size;\n }\n // Returns a copy of the current node, optionally replacing pieces of it.\n return t.prototype.copy = function(e, n, r, i, o) {\n return new t(null != e ? e : this.key, null != n ? n : this.value, null != r ? r : this.color, null != i ? i : this.left, null != o ? o : this.right);\n }, t.prototype.isEmpty = function() {\n return !1;\n }, \n // Traverses the tree in key order and calls the specified action function\n // for each node. If action returns true, traversal is aborted.\n // Returns the first truthy value returned by action, or the last falsey\n // value returned by action.\n t.prototype.inorderTraversal = function(t) {\n return this.left.inorderTraversal(t) || t(this.key, this.value) || this.right.inorderTraversal(t);\n }, \n // Traverses the tree in reverse key order and calls the specified action\n // function for each node. If action returns true, traversal is aborted.\n // Returns the first truthy value returned by action, or the last falsey\n // value returned by action.\n t.prototype.reverseTraversal = function(t) {\n return this.right.reverseTraversal(t) || t(this.key, this.value) || this.left.reverseTraversal(t);\n }, \n // Returns the minimum node in the tree.\n t.prototype.min = function() {\n return this.left.isEmpty() ? this : this.left.min();\n }, \n // Returns the maximum key in the tree.\n t.prototype.minKey = function() {\n return this.min().key;\n }, \n // Returns the maximum key in the tree.\n t.prototype.maxKey = function() {\n return this.right.isEmpty() ? this.key : this.right.maxKey();\n }, \n // Returns new tree, with the key/value added.\n t.prototype.insert = function(t, e, n) {\n var r = this, i = n(t, r.key);\n return (r = i < 0 ? r.copy(null, null, null, r.left.insert(t, e, n), null) : 0 === i ? r.copy(null, e, null, null, null) : r.copy(null, null, null, null, r.right.insert(t, e, n))).fixUp();\n }, t.prototype.removeMin = function() {\n if (this.left.isEmpty()) return t.EMPTY;\n var e = this;\n return e.left.isRed() || e.left.left.isRed() || (e = e.moveRedLeft()), (e = e.copy(null, null, null, e.left.removeMin(), null)).fixUp();\n }, \n // Returns new tree, with the specified item removed.\n t.prototype.remove = function(e, n) {\n var r, i = this;\n if (n(e, i.key) < 0) i.left.isEmpty() || i.left.isRed() || i.left.left.isRed() || (i = i.moveRedLeft()), \n i = i.copy(null, null, null, i.left.remove(e, n), null); else {\n if (i.left.isRed() && (i = i.rotateRight()), i.right.isEmpty() || i.right.isRed() || i.right.left.isRed() || (i = i.moveRedRight()), \n 0 === n(e, i.key)) {\n if (i.right.isEmpty()) return t.EMPTY;\n r = i.right.min(), i = i.copy(r.key, r.value, null, null, i.right.removeMin());\n }\n i = i.copy(null, null, null, null, i.right.remove(e, n));\n }\n return i.fixUp();\n }, t.prototype.isRed = function() {\n return this.color;\n }, \n // Returns new tree after performing any needed rotations.\n t.prototype.fixUp = function() {\n var t = this;\n return t.right.isRed() && !t.left.isRed() && (t = t.rotateLeft()), t.left.isRed() && t.left.left.isRed() && (t = t.rotateRight()), \n t.left.isRed() && t.right.isRed() && (t = t.colorFlip()), t;\n }, t.prototype.moveRedLeft = function() {\n var t = this.colorFlip();\n return t.right.left.isRed() && (t = (t = (t = t.copy(null, null, null, null, t.right.rotateRight())).rotateLeft()).colorFlip()), \n t;\n }, t.prototype.moveRedRight = function() {\n var t = this.colorFlip();\n return t.left.left.isRed() && (t = (t = t.rotateRight()).colorFlip()), t;\n }, t.prototype.rotateLeft = function() {\n var e = this.copy(null, null, t.RED, null, this.right.left);\n return this.right.copy(null, null, this.color, e, null);\n }, t.prototype.rotateRight = function() {\n var e = this.copy(null, null, t.RED, this.left.right, null);\n return this.left.copy(null, null, this.color, null, e);\n }, t.prototype.colorFlip = function() {\n var t = this.left.copy(null, null, !this.left.color, null, null), e = this.right.copy(null, null, !this.right.color, null, null);\n return this.copy(null, null, !this.color, t, e);\n }, \n // For testing.\n t.prototype.checkMaxDepth = function() {\n var t = this.check();\n return Math.pow(2, t) <= this.size + 1;\n }, \n // In a balanced RB tree, the black-depth (number of black nodes) from root to\n // leaves is equal on both sides. This function verifies that or asserts.\n t.prototype.check = function() {\n if (this.isRed() && this.left.isRed()) throw O();\n if (this.right.isRed()) throw O();\n var t = this.left.check();\n if (t !== this.right.check()) throw O();\n return t + (this.isRed() ? 0 : 1);\n }, t;\n}();\n\n// end SortedMap\n// An iterator over an LLRBNode.\n// end LLRBNode\n// Empty node is shared between all LLRB trees.\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nYe.EMPTY = null, Ye.RED = !0, Ye.BLACK = !1, \n// end LLRBEmptyNode\nYe.EMPTY = new (/** @class */ function() {\n function t() {\n this.size = 0;\n }\n return Object.defineProperty(t.prototype, \"key\", {\n get: function() {\n throw O();\n },\n enumerable: !1,\n configurable: !0\n }), Object.defineProperty(t.prototype, \"value\", {\n get: function() {\n throw O();\n },\n enumerable: !1,\n configurable: !0\n }), Object.defineProperty(t.prototype, \"color\", {\n get: function() {\n throw O();\n },\n enumerable: !1,\n configurable: !0\n }), Object.defineProperty(t.prototype, \"left\", {\n get: function() {\n throw O();\n },\n enumerable: !1,\n configurable: !0\n }), Object.defineProperty(t.prototype, \"right\", {\n get: function() {\n throw O();\n },\n enumerable: !1,\n configurable: !0\n }), \n // Returns a copy of the current node.\n t.prototype.copy = function(t, e, n, r, i) {\n return this;\n }, \n // Returns a copy of the tree, with the specified key/value added.\n t.prototype.insert = function(t, e, n) {\n return new Ye(t, e);\n }, \n // Returns a copy of the tree, with the specified key removed.\n t.prototype.remove = function(t, e) {\n return this;\n }, t.prototype.isEmpty = function() {\n return !0;\n }, t.prototype.inorderTraversal = function(t) {\n return !1;\n }, t.prototype.reverseTraversal = function(t) {\n return !1;\n }, t.prototype.minKey = function() {\n return null;\n }, t.prototype.maxKey = function() {\n return null;\n }, t.prototype.isRed = function() {\n return !1;\n }, \n // For testing.\n t.prototype.checkMaxDepth = function() {\n return !0;\n }, t.prototype.check = function() {\n return 0;\n }, t;\n}());\n\n/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * SortedSet is an immutable (copy-on-write) collection that holds elements\n * in order specified by the provided comparator.\n *\n * NOTE: if provided comparator returns 0 for two elements, we consider them to\n * be equal!\n */\nvar $e = /** @class */ function() {\n function t(t) {\n this.comparator = t, this.data = new We(this.comparator);\n }\n return t.prototype.has = function(t) {\n return null !== this.data.get(t);\n }, t.prototype.first = function() {\n return this.data.minKey();\n }, t.prototype.last = function() {\n return this.data.maxKey();\n }, Object.defineProperty(t.prototype, \"size\", {\n get: function() {\n return this.data.size;\n },\n enumerable: !1,\n configurable: !0\n }), t.prototype.indexOf = function(t) {\n return this.data.indexOf(t);\n }, \n /** Iterates elements in order defined by \"comparator\" */ t.prototype.forEach = function(t) {\n this.data.inorderTraversal((function(e, n) {\n return t(e), !1;\n }));\n }, \n /** Iterates over `elem`s such that: range[0] <= elem < range[1]. */ t.prototype.forEachInRange = function(t, e) {\n for (var n = this.data.getIteratorFrom(t[0]); n.hasNext(); ) {\n var r = n.getNext();\n if (this.comparator(r.key, t[1]) >= 0) return;\n e(r.key);\n }\n }, \n /**\n * Iterates over `elem`s such that: start <= elem until false is returned.\n */\n t.prototype.forEachWhile = function(t, e) {\n var n;\n for (n = void 0 !== e ? this.data.getIteratorFrom(e) : this.data.getIterator(); n.hasNext(); ) if (!t(n.getNext().key)) return;\n }, \n /** Finds the least element greater than or equal to `elem`. */ t.prototype.firstAfterOrEqual = function(t) {\n var e = this.data.getIteratorFrom(t);\n return e.hasNext() ? e.getNext().key : null;\n }, t.prototype.getIterator = function() {\n return new Xe(this.data.getIterator());\n }, t.prototype.getIteratorFrom = function(t) {\n return new Xe(this.data.getIteratorFrom(t));\n }, \n /** Inserts or updates an element */ t.prototype.add = function(t) {\n return this.copy(this.data.remove(t).insert(t, !0));\n }, \n /** Deletes an element */ t.prototype.delete = function(t) {\n return this.has(t) ? this.copy(this.data.remove(t)) : this;\n }, t.prototype.isEmpty = function() {\n return this.data.isEmpty();\n }, t.prototype.unionWith = function(t) {\n var e = this;\n // Make sure `result` always refers to the larger one of the two sets.\n return e.size < t.size && (e = t, t = this), t.forEach((function(t) {\n e = e.add(t);\n })), e;\n }, t.prototype.isEqual = function(e) {\n if (!(e instanceof t)) return !1;\n if (this.size !== e.size) return !1;\n for (var n = this.data.getIterator(), r = e.data.getIterator(); n.hasNext(); ) {\n var i = n.getNext().key, o = r.getNext().key;\n if (0 !== this.comparator(i, o)) return !1;\n }\n return !0;\n }, t.prototype.toArray = function() {\n var t = [];\n return this.forEach((function(e) {\n t.push(e);\n })), t;\n }, t.prototype.toString = function() {\n var t = [];\n return this.forEach((function(e) {\n return t.push(e);\n })), \"SortedSet(\" + t.toString() + \")\";\n }, t.prototype.copy = function(e) {\n var n = new t(this.comparator);\n return n.data = e, n;\n }, t;\n}(), Xe = /** @class */ function() {\n function t(t) {\n this.iter = t;\n }\n return t.prototype.getNext = function() {\n return this.iter.getNext().key;\n }, t.prototype.hasNext = function() {\n return this.iter.hasNext();\n }, t;\n}(), Je = new We(ct.comparator);\n\nfunction Ze() {\n return Je;\n}\n\nvar tn = new We(ct.comparator);\n\nfunction en() {\n return tn;\n}\n\nvar nn = new We(ct.comparator);\n\nfunction rn() {\n return nn;\n}\n\nvar on = new $e(ct.comparator);\n\nfunction sn() {\n for (var t = [], e = 0; e < arguments.length; e++) t[e] = arguments[e];\n for (var n = on, r = 0, i = t; r < i.length; r++) {\n var o = i[r];\n n = n.add(o);\n }\n return n;\n}\n\nvar un = new $e(q);\n\nfunction an() {\n return un;\n}\n\n/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * An event from the RemoteStore. It is split into targetChanges (changes to the\n * state or the set of documents in our watched targets) and documentUpdates\n * (changes to the actual documents).\n */ var cn = /** @class */ function() {\n function t(\n /**\n * The snapshot version this event brings us up to, or MIN if not set.\n */\n t, \n /**\n * A map from target to changes to the target. See TargetChange.\n */\n e, \n /**\n * A set of targets that is known to be inconsistent. Listens for these\n * targets should be re-established without resume tokens.\n */\n n, \n /**\n * A set of which documents have changed or been deleted, along with the\n * doc's new values (if not deleted).\n */\n r, \n /**\n * A set of which document updates are due only to limbo resolution targets.\n */\n i) {\n this.snapshotVersion = t, this.targetChanges = e, this.targetMismatches = n, this.documentUpdates = r, \n this.resolvedLimboDocuments = i;\n }\n /**\n * HACK: Views require RemoteEvents in order to determine whether the view is\n * CURRENT, but secondary tabs don't receive remote events. So this method is\n * used to create a synthesized RemoteEvent that can be used to apply a\n * CURRENT status change to a View, for queries executed in a different tab.\n */\n // PORTING NOTE: Multi-tab only\n return t.createSynthesizedRemoteEventForCurrentChange = function(e, n) {\n var r = new Map;\n return r.set(e, hn.createSynthesizedTargetChangeForCurrentChange(e, n)), new t(K.min(), r, an(), Ze(), sn());\n }, t;\n}(), hn = /** @class */ function() {\n function t(\n /**\n * An opaque, server-assigned token that allows watching a query to be resumed\n * after disconnecting without retransmitting all the data that matches the\n * query. The resume token essentially identifies a point in time from which\n * the server should resume sending results.\n */\n t, \n /**\n * The \"current\" (synced) status of this target. Note that \"current\"\n * has special meaning in the RPC protocol that implies that a target is\n * both up-to-date and consistent with the rest of the watch stream.\n */\n e, \n /**\n * The set of documents that were newly assigned to this target as part of\n * this remote event.\n */\n n, \n /**\n * The set of documents that were already assigned to this target but received\n * an update during this remote event.\n */\n r, \n /**\n * The set of documents that were removed from this target as part of this\n * remote event.\n */\n i) {\n this.resumeToken = t, this.current = e, this.addedDocuments = n, this.modifiedDocuments = r, \n this.removedDocuments = i\n /**\n * This method is used to create a synthesized TargetChanges that can be used to\n * apply a CURRENT status change to a View (for queries executed in a different\n * tab) or for new queries (to raise snapshots with correct CURRENT status).\n */;\n }\n return t.createSynthesizedTargetChangeForCurrentChange = function(e, n) {\n return new t(J.EMPTY_BYTE_STRING, n, sn(), sn(), sn());\n }, t;\n}(), fn = function(\n/** The new document applies to all of these targets. */\nt, \n/** The new document is removed from all of these targets. */\ne, \n/** The key of the document for this change. */\nn, \n/**\n * The new document or NoDocument if it was deleted. Is null if the\n * document went out of view without the server sending a new document.\n */\nr) {\n this.v = t, this.removedTargetIds = e, this.key = n, this.P = r;\n}, ln = function(t, e) {\n this.targetId = t, this.V = e;\n}, dn = function(\n/** What kind of change occurred to the watch target. */\nt, \n/** The target IDs that were added/removed/set. */\ne, \n/**\n * An opaque, server-assigned token that allows watching a target to be\n * resumed after disconnecting without retransmitting all the data that\n * matches the target. The resume token essentially identifies a point in\n * time from which the server should resume sending results.\n */\nn\n/** An RPC error indicating why the watch failed. */ , r) {\n void 0 === n && (n = J.EMPTY_BYTE_STRING), void 0 === r && (r = null), this.state = t, \n this.targetIds = e, this.resumeToken = n, this.cause = r;\n}, pn = /** @class */ function() {\n function t() {\n /**\n * The number of pending responses (adds or removes) that we are waiting on.\n * We only consider targets active that have no pending responses.\n */\n this.S = 0, \n /**\n * Keeps track of the document changes since the last raised snapshot.\n *\n * These changes are continuously updated as we receive document updates and\n * always reflect the current set of changes against the last issued snapshot.\n */\n this.D = mn(), \n /** See public getters for explanations of these fields. */\n this.C = J.EMPTY_BYTE_STRING, this.N = !1, \n /**\n * Whether this target state should be included in the next snapshot. We\n * initialize to true so that newly-added targets are included in the next\n * RemoteEvent.\n */\n this.k = !0;\n }\n return Object.defineProperty(t.prototype, \"current\", {\n /**\n * Whether this target has been marked 'current'.\n *\n * 'Current' has special meaning in the RPC protocol: It implies that the\n * Watch backend has sent us all changes up to the point at which the target\n * was added and that the target is consistent with the rest of the watch\n * stream.\n */\n get: function() {\n return this.N;\n },\n enumerable: !1,\n configurable: !0\n }), Object.defineProperty(t.prototype, \"resumeToken\", {\n /** The last resume token sent to us for this target. */ get: function() {\n return this.C;\n },\n enumerable: !1,\n configurable: !0\n }), Object.defineProperty(t.prototype, \"F\", {\n /** Whether this target has pending target adds or target removes. */ get: function() {\n return 0 !== this.S;\n },\n enumerable: !1,\n configurable: !0\n }), Object.defineProperty(t.prototype, \"$\", {\n /** Whether we have modified any state that should trigger a snapshot. */ get: function() {\n return this.k;\n },\n enumerable: !1,\n configurable: !0\n }), \n /**\n * Applies the resume token to the TargetChange, but only when it has a new\n * value. Empty resumeTokens are discarded.\n */\n t.prototype.O = function(t) {\n t.approximateByteSize() > 0 && (this.k = !0, this.C = t);\n }, \n /**\n * Creates a target change from the current set of changes.\n *\n * To reset the document changes after raising this snapshot, call\n * `clearPendingChanges()`.\n */\n t.prototype.M = function() {\n var t = sn(), e = sn(), n = sn();\n return this.D.forEach((function(r, i) {\n switch (i) {\n case 0 /* Added */ :\n t = t.add(r);\n break;\n\n case 2 /* Modified */ :\n e = e.add(r);\n break;\n\n case 1 /* Removed */ :\n n = n.add(r);\n break;\n\n default:\n O();\n }\n })), new hn(this.C, this.N, t, e, n);\n }, \n /**\n * Resets the document changes and sets `hasPendingChanges` to false.\n */\n t.prototype.L = function() {\n this.k = !1, this.D = mn();\n }, t.prototype.B = function(t, e) {\n this.k = !0, this.D = this.D.insert(t, e);\n }, t.prototype.q = function(t) {\n this.k = !0, this.D = this.D.remove(t);\n }, t.prototype.U = function() {\n this.S += 1;\n }, t.prototype.K = function() {\n this.S -= 1;\n }, t.prototype.j = function() {\n this.k = !0, this.N = !0;\n }, t;\n}(), yn = /** @class */ function() {\n function t(t) {\n this.W = t, \n /** The internal state of all tracked targets. */\n this.G = new Map, \n /** Keeps track of the documents to update since the last raised snapshot. */\n this.H = Ze(), \n /** A mapping of document keys to their set of target IDs. */\n this.J = vn(), \n /**\n * A list of targets with existence filter mismatches. These targets are\n * known to be inconsistent and their listens needs to be re-established by\n * RemoteStore.\n */\n this.Y = new $e(q)\n /**\n * Processes and adds the DocumentWatchChange to the current set of changes.\n */;\n }\n return t.prototype.X = function(t) {\n for (var e = 0, n = t.v; e < n.length; e++) {\n var r = n[e];\n t.P && t.P.isFoundDocument() ? this.Z(r, t.P) : this.tt(r, t.key, t.P);\n }\n for (var i = 0, o = t.removedTargetIds; i < o.length; i++) {\n r = o[i];\n this.tt(r, t.key, t.P);\n }\n }, \n /** Processes and adds the WatchTargetChange to the current set of changes. */ t.prototype.et = function(t) {\n var e = this;\n this.forEachTarget(t, (function(n) {\n var r = e.nt(n);\n switch (t.state) {\n case 0 /* NoChange */ :\n e.st(n) && r.O(t.resumeToken);\n break;\n\n case 1 /* Added */ :\n // We need to decrement the number of pending acks needed from watch\n // for this targetId.\n r.K(), r.F || \n // We have a freshly added target, so we need to reset any state\n // that we had previously. This can happen e.g. when remove and add\n // back a target for existence filter mismatches.\n r.L(), r.O(t.resumeToken);\n break;\n\n case 2 /* Removed */ :\n // We need to keep track of removed targets to we can post-filter and\n // remove any target changes.\n // We need to decrement the number of pending acks needed from watch\n // for this targetId.\n r.K(), r.F || e.removeTarget(n);\n break;\n\n case 3 /* Current */ :\n e.st(n) && (r.j(), r.O(t.resumeToken));\n break;\n\n case 4 /* Reset */ :\n e.st(n) && (\n // Reset the target and synthesizes removes for all existing\n // documents. The backend will re-add any documents that still\n // match the target before it sends the next global snapshot.\n e.it(n), r.O(t.resumeToken));\n break;\n\n default:\n O();\n }\n }));\n }, \n /**\n * Iterates over all targetIds that the watch change applies to: either the\n * targetIds explicitly listed in the change or the targetIds of all currently\n * active targets.\n */\n t.prototype.forEachTarget = function(t, e) {\n var n = this;\n t.targetIds.length > 0 ? t.targetIds.forEach(e) : this.G.forEach((function(t, r) {\n n.st(r) && e(r);\n }));\n }, \n /**\n * Handles existence filters and synthesizes deletes for filter mismatches.\n * Targets that are invalidated by filter mismatches are added to\n * `pendingTargetResets`.\n */\n t.prototype.rt = function(t) {\n var e = t.targetId, n = t.V.count, r = this.ot(e);\n if (r) {\n var i = r.target;\n if (xt(i)) if (0 === n) {\n // The existence filter told us the document does not exist. We deduce\n // that this document does not exist and apply a deleted document to\n // our updates. Without applying this deleted document there might be\n // another query that will raise this document as part of a snapshot\n // until it is resolved, essentially exposing inconsistency between\n // queries.\n var o = new ct(i.path);\n this.tt(e, o, Nt.newNoDocument(o, K.min()));\n } else P(1 === n); else this.ct(e) !== n && (\n // Existence filter mismatch: We reset the mapping and raise a new\n // snapshot with `isFromCache:true`.\n this.it(e), this.Y = this.Y.add(e));\n }\n }, \n /**\n * Converts the currently accumulated state into a remote event at the\n * provided snapshot version. Resets the accumulated changes before returning.\n */\n t.prototype.ut = function(t) {\n var e = this, n = new Map;\n this.G.forEach((function(r, i) {\n var o = e.ot(i);\n if (o) {\n if (r.current && xt(o.target)) {\n // Document queries for document that don't exist can produce an empty\n // result set. To update our local cache, we synthesize a document\n // delete if we have not previously received the document. This\n // resolves the limbo state of the document, removing it from\n // limboDocumentRefs.\n // TODO(dimond): Ideally we would have an explicit lookup target\n // instead resulting in an explicit delete message and we could\n // remove this special logic.\n var s = new ct(o.target.path);\n null !== e.H.get(s) || e.at(i, s) || e.tt(i, s, Nt.newNoDocument(s, t));\n }\n r.$ && (n.set(i, r.M()), r.L());\n }\n }));\n var r = sn();\n // We extract the set of limbo-only document updates as the GC logic\n // special-cases documents that do not appear in the target cache.\n // TODO(gsoltis): Expand on this comment once GC is available in the JS\n // client.\n this.J.forEach((function(t, n) {\n var i = !0;\n n.forEachWhile((function(t) {\n var n = e.ot(t);\n return !n || 2 /* LimboResolution */ === n.purpose || (i = !1, !1);\n })), i && (r = r.add(t));\n }));\n var i = new cn(t, n, this.Y, this.H, r);\n return this.H = Ze(), this.J = vn(), this.Y = new $e(q), i;\n }, \n /**\n * Adds the provided document to the internal list of document updates and\n * its document key to the given target's mapping.\n */\n // Visible for testing.\n t.prototype.Z = function(t, e) {\n if (this.st(t)) {\n var n = this.at(t, e.key) ? 2 /* Modified */ : 0 /* Added */;\n this.nt(t).B(e.key, n), this.H = this.H.insert(e.key, e), this.J = this.J.insert(e.key, this.ht(e.key).add(t));\n }\n }, \n /**\n * Removes the provided document from the target mapping. If the\n * document no longer matches the target, but the document's state is still\n * known (e.g. we know that the document was deleted or we received the change\n * that caused the filter mismatch), the new document can be provided\n * to update the remote document cache.\n */\n // Visible for testing.\n t.prototype.tt = function(t, e, n) {\n if (this.st(t)) {\n var r = this.nt(t);\n this.at(t, e) ? r.B(e, 1 /* Removed */) : \n // The document may have entered and left the target before we raised a\n // snapshot, so we can just ignore the change.\n r.q(e), this.J = this.J.insert(e, this.ht(e).delete(t)), n && (this.H = this.H.insert(e, n));\n }\n }, t.prototype.removeTarget = function(t) {\n this.G.delete(t);\n }, \n /**\n * Returns the current count of documents in the target. This includes both\n * the number of documents that the LocalStore considers to be part of the\n * target as well as any accumulated changes.\n */\n t.prototype.ct = function(t) {\n var e = this.nt(t).M();\n return this.W.getRemoteKeysForTarget(t).size + e.addedDocuments.size - e.removedDocuments.size;\n }, \n /**\n * Increment the number of acks needed from watch before we can consider the\n * server to be 'in-sync' with the client's active targets.\n */\n t.prototype.U = function(t) {\n this.nt(t).U();\n }, t.prototype.nt = function(t) {\n var e = this.G.get(t);\n return e || (e = new pn, this.G.set(t, e)), e;\n }, t.prototype.ht = function(t) {\n var e = this.J.get(t);\n return e || (e = new $e(q), this.J = this.J.insert(t, e)), e;\n }, \n /**\n * Verifies that the user is still interested in this target (by calling\n * `getTargetDataForTarget()`) and that we are not waiting for pending ADDs\n * from watch.\n */\n t.prototype.st = function(t) {\n var e = null !== this.ot(t);\n return e || C(\"WatchChangeAggregator\", \"Detected inactive target\", t), e;\n }, \n /**\n * Returns the TargetData for an active target (i.e. a target that the user\n * is still interested in that has no outstanding target change requests).\n */\n t.prototype.ot = function(t) {\n var e = this.G.get(t);\n return e && e.F ? null : this.W.lt(t);\n }, \n /**\n * Resets the state of a Watch target to its initial state (e.g. sets\n * 'current' to false, clears the resume token and removes its target mapping\n * from all documents).\n */\n t.prototype.it = function(t) {\n var e = this;\n this.G.set(t, new pn), this.W.getRemoteKeysForTarget(t).forEach((function(n) {\n e.tt(t, n, /*updatedDocument=*/ null);\n }));\n }, \n /**\n * Returns whether the LocalStore considers the document to be part of the\n * specified target.\n */\n t.prototype.at = function(t, e) {\n return this.W.getRemoteKeysForTarget(t).has(e);\n }, t;\n}();\n\n/**\n * A TargetChange specifies the set of changes for a specific target as part of\n * a RemoteEvent. These changes track which documents are added, modified or\n * removed, as well as the target's resume token and whether the target is\n * marked CURRENT.\n * The actual changes *to* documents are not part of the TargetChange since\n * documents may be part of multiple targets.\n */ function vn() {\n return new We(ct.comparator);\n}\n\nfunction mn() {\n return new We(ct.comparator);\n}\n\n/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */ var gn = {\n asc: \"ASCENDING\",\n desc: \"DESCENDING\"\n}, wn = {\n \"<\": \"LESS_THAN\",\n \"<=\": \"LESS_THAN_OR_EQUAL\",\n \">\": \"GREATER_THAN\",\n \">=\": \"GREATER_THAN_OR_EQUAL\",\n \"==\": \"EQUAL\",\n \"!=\": \"NOT_EQUAL\",\n \"array-contains\": \"ARRAY_CONTAINS\",\n in: \"IN\",\n \"not-in\": \"NOT_IN\",\n \"array-contains-any\": \"ARRAY_CONTAINS_ANY\"\n}, bn = function(t, e) {\n this.databaseId = t, this.I = e;\n};\n\n/**\n * This class generates JsonObject values for the Datastore API suitable for\n * sending to either GRPC stub methods or via the JSON/HTTP REST API.\n *\n * The serializer supports both Protobuf.js and Proto3 JSON formats. By\n * setting `useProto3Json` to true, the serializer will use the Proto3 JSON\n * format.\n *\n * For a description of the Proto3 JSON format check\n * https://developers.google.com/protocol-buffers/docs/proto3#json\n *\n * TODO(klimt): We can remove the databaseId argument if we keep the full\n * resource name in documents.\n */\n/**\n * Returns a value for a Date that's appropriate to put into a proto.\n */\nfunction In(t, e) {\n return t.I ? new Date(1e3 * e.seconds).toISOString().replace(/\\.\\d*/, \"\").replace(\"Z\", \"\") + \".\" + (\"000000000\" + e.nanoseconds).slice(-9) + \"Z\" : {\n seconds: \"\" + e.seconds,\n nanos: e.nanoseconds\n };\n}\n\n/**\n * Returns a value for bytes that's appropriate to put in a proto.\n *\n * Visible for testing.\n */ function Tn(t, e) {\n return t.I ? e.toBase64() : e.toUint8Array();\n}\n\n/**\n * Returns a ByteString based on the proto string value.\n */ function _n(t, e) {\n return In(t, e.toTimestamp());\n}\n\nfunction En(t) {\n return P(!!t), K.fromTimestamp(function(t) {\n var e = tt(t);\n return new j(e.seconds, e.nanos);\n }(t));\n}\n\nfunction Sn(t, e) {\n return function(t) {\n return new H([ \"projects\", t.projectId, \"databases\", t.database ]);\n }(t).child(\"documents\").child(e).canonicalString();\n}\n\nfunction Nn(t) {\n var e = H.fromString(t);\n return P($n(e)), e;\n}\n\nfunction Dn(t, e) {\n return Sn(t.databaseId, e.path);\n}\n\nfunction An(t, e) {\n var n = Nn(e);\n if (n.get(1) !== t.databaseId.projectId) throw new D(N.INVALID_ARGUMENT, \"Tried to deserialize key from different project: \" + n.get(1) + \" vs \" + t.databaseId.projectId);\n if (n.get(3) !== t.databaseId.database) throw new D(N.INVALID_ARGUMENT, \"Tried to deserialize key from different database: \" + n.get(3) + \" vs \" + t.databaseId.database);\n return new ct(Rn(n));\n}\n\nfunction kn(t, e) {\n return Sn(t.databaseId, e);\n}\n\nfunction Cn(t) {\n var e = Nn(t);\n // In v1beta1 queries for collections at the root did not have a trailing\n // \"/documents\". In v1 all resource paths contain \"/documents\". Preserve the\n // ability to read the v1beta1 form for compatibility with queries persisted\n // in the local target cache.\n return 4 === e.length ? H.emptyPath() : Rn(e);\n}\n\nfunction xn(t) {\n return new H([ \"projects\", t.databaseId.projectId, \"databases\", t.databaseId.database ]).canonicalString();\n}\n\nfunction Rn(t) {\n return P(t.length > 4 && \"documents\" === t.get(4)), t.popFirst(5)\n /** Creates a Document proto from key and fields (but no create/update time) */;\n}\n\nfunction Ln(t, e, n) {\n return {\n name: Dn(t, e),\n fields: n.value.mapValue.fields\n };\n}\n\nfunction On(t, e, n) {\n var r = An(t, e.name), i = En(e.updateTime), o = new Et({\n mapValue: {\n fields: e.fields\n }\n }), s = Nt.newFoundDocument(r, i, o);\n return n && s.setHasCommittedMutations(), n ? s.setHasCommittedMutations() : s;\n}\n\nfunction Pn(t, e) {\n var n;\n if (e instanceof Pe) n = {\n update: Ln(t, e.key, e.value)\n }; else if (e instanceof je) n = {\n delete: Dn(t, e.key)\n }; else if (e instanceof Fe) n = {\n update: Ln(t, e.key, e.data),\n updateMask: Yn(e.fieldMask)\n }; else {\n if (!(e instanceof Ke)) return O();\n n = {\n verify: Dn(t, e.key)\n };\n }\n return e.fieldTransforms.length > 0 && (n.updateTransforms = e.fieldTransforms.map((function(t) {\n return function(t, e) {\n var n = e.transform;\n if (n instanceof me) return {\n fieldPath: e.field.canonicalString(),\n setToServerValue: \"REQUEST_TIME\"\n };\n if (n instanceof ge) return {\n fieldPath: e.field.canonicalString(),\n appendMissingElements: {\n values: n.elements\n }\n };\n if (n instanceof be) return {\n fieldPath: e.field.canonicalString(),\n removeAllFromArray: {\n values: n.elements\n }\n };\n if (n instanceof Te) return {\n fieldPath: e.field.canonicalString(),\n increment: n.A\n };\n throw O();\n }(0, t);\n }))), e.precondition.isNone || (n.currentDocument = function(t, e) {\n return void 0 !== e.updateTime ? {\n updateTime: _n(t, e.updateTime)\n } : void 0 !== e.exists ? {\n exists: e.exists\n } : O();\n }(t, e.precondition)), n;\n}\n\nfunction Fn(t, e) {\n var n = e.currentDocument ? function(t) {\n return void 0 !== t.updateTime ? De.updateTime(En(t.updateTime)) : void 0 !== t.exists ? De.exists(t.exists) : De.none();\n }(e.currentDocument) : De.none(), r = e.updateTransforms ? e.updateTransforms.map((function(e) {\n return function(t, e) {\n var n = null;\n if (\"setToServerValue\" in e) P(\"REQUEST_TIME\" === e.setToServerValue), n = new me; else if (\"appendMissingElements\" in e) {\n var r = e.appendMissingElements.values || [];\n n = new ge(r);\n } else if (\"removeAllFromArray\" in e) {\n var i = e.removeAllFromArray.values || [];\n n = new be(i);\n } else \"increment\" in e ? n = new Te(t, e.increment) : O();\n var o = $.fromServerFormat(e.fieldPath);\n return new Se(o, n);\n }(t, e);\n })) : [];\n if (e.update) {\n e.update.name;\n var i = An(t, e.update.name), o = new Et({\n mapValue: {\n fields: e.update.fields\n }\n });\n if (e.updateMask) {\n var s = function(t) {\n var e = t.fieldPaths || [];\n return new X(e.map((function(t) {\n return $.fromServerFormat(t);\n })));\n }(e.updateMask);\n return new Fe(i, o, s, n, r);\n }\n return new Pe(i, o, n, r);\n }\n if (e.delete) {\n var u = An(t, e.delete);\n return new je(u, n);\n }\n if (e.verify) {\n var a = An(t, e.verify);\n return new Ke(a, n);\n }\n return O();\n}\n\nfunction Mn(t, e) {\n return {\n documents: [ kn(t, e.path) ]\n };\n}\n\nfunction Vn(t, e) {\n // Dissect the path into parent, collectionId, and optional key filter.\n var n = {\n structuredQuery: {}\n }, r = e.path;\n null !== e.collectionGroup ? (n.parent = kn(t, r), n.structuredQuery.from = [ {\n collectionId: e.collectionGroup,\n allDescendants: !0\n } ]) : (n.parent = kn(t, r.popLast()), n.structuredQuery.from = [ {\n collectionId: r.lastSegment()\n } ]);\n var i = function(t) {\n if (0 !== t.length) {\n var e = t.map((function(t) {\n // visible for testing\n return function(t) {\n if (\"==\" /* EQUAL */ === t.op) {\n if (It(t.value)) return {\n unaryFilter: {\n field: Qn(t.field),\n op: \"IS_NAN\"\n }\n };\n if (bt(t.value)) return {\n unaryFilter: {\n field: Qn(t.field),\n op: \"IS_NULL\"\n }\n };\n } else if (\"!=\" /* NOT_EQUAL */ === t.op) {\n if (It(t.value)) return {\n unaryFilter: {\n field: Qn(t.field),\n op: \"IS_NOT_NAN\"\n }\n };\n if (bt(t.value)) return {\n unaryFilter: {\n field: Qn(t.field),\n op: \"IS_NOT_NULL\"\n }\n };\n }\n return {\n fieldFilter: {\n field: Qn(t.field),\n op: Gn(t.op),\n value: t.value\n }\n };\n }(t);\n }));\n return 1 === e.length ? e[0] : {\n compositeFilter: {\n op: \"AND\",\n filters: e\n }\n };\n }\n }(e.filters);\n i && (n.structuredQuery.where = i);\n var o = function(t) {\n if (0 !== t.length) return t.map((function(t) {\n // visible for testing\n return function(t) {\n return {\n field: Qn(t.field),\n direction: Kn(t.dir)\n };\n }(t);\n }));\n }(e.orderBy);\n o && (n.structuredQuery.orderBy = o);\n var s = function(t, e) {\n return t.I || st(e) ? e : {\n value: e\n };\n }(t, e.limit);\n return null !== s && (n.structuredQuery.limit = s), e.startAt && (n.structuredQuery.startAt = Bn(e.startAt)), \n e.endAt && (n.structuredQuery.endAt = Bn(e.endAt)), n;\n}\n\nfunction qn(t) {\n var e = Cn(t.parent), n = t.structuredQuery, r = n.from ? n.from.length : 0, i = null;\n if (r > 0) {\n P(1 === r);\n var o = n.from[0];\n o.allDescendants ? i = o.collectionId : e = e.child(o.collectionId);\n }\n var s = [];\n n.where && (s = Un(n.where));\n var u = [];\n n.orderBy && (u = n.orderBy.map((function(t) {\n return function(t) {\n return new Kt(zn(t.field), \n // visible for testing\n function(t) {\n switch (t) {\n case \"ASCENDING\":\n return \"asc\" /* ASCENDING */;\n\n case \"DESCENDING\":\n return \"desc\" /* DESCENDING */;\n\n default:\n return;\n }\n }(t.direction));\n }(t);\n })));\n var a = null;\n n.limit && (a = function(t) {\n var e;\n return st(e = \"object\" == typeof t ? t.value : t) ? null : e;\n }(n.limit));\n var c = null;\n n.startAt && (c = jn(n.startAt));\n var h = null;\n return n.endAt && (h = jn(n.endAt)), Ht(e, i, u, s, a, \"F\" /* First */ , c, h);\n}\n\nfunction Un(t) {\n return t ? void 0 !== t.unaryFilter ? [ Hn(t) ] : void 0 !== t.fieldFilter ? [ Wn(t) ] : void 0 !== t.compositeFilter ? t.compositeFilter.filters.map((function(t) {\n return Un(t);\n })).reduce((function(t, e) {\n return t.concat(e);\n })) : O() : [];\n}\n\nfunction Bn(t) {\n return {\n before: t.before,\n values: t.position\n };\n}\n\nfunction jn(t) {\n var e = !!t.before, n = t.values || [];\n return new Bt(n, e);\n}\n\n// visible for testing\nfunction Kn(t) {\n return gn[t];\n}\n\nfunction Gn(t) {\n return wn[t];\n}\n\nfunction Qn(t) {\n return {\n fieldPath: t.canonicalString()\n };\n}\n\nfunction zn(t) {\n return $.fromServerFormat(t.fieldPath);\n}\n\nfunction Wn(t) {\n return Rt.create(zn(t.fieldFilter.field), function(t) {\n switch (t) {\n case \"EQUAL\":\n return \"==\" /* EQUAL */;\n\n case \"NOT_EQUAL\":\n return \"!=\" /* NOT_EQUAL */;\n\n case \"GREATER_THAN\":\n return \">\" /* GREATER_THAN */;\n\n case \"GREATER_THAN_OR_EQUAL\":\n return \">=\" /* GREATER_THAN_OR_EQUAL */;\n\n case \"LESS_THAN\":\n return \"<\" /* LESS_THAN */;\n\n case \"LESS_THAN_OR_EQUAL\":\n return \"<=\" /* LESS_THAN_OR_EQUAL */;\n\n case \"ARRAY_CONTAINS\":\n return \"array-contains\" /* ARRAY_CONTAINS */;\n\n case \"IN\":\n return \"in\" /* IN */;\n\n case \"NOT_IN\":\n return \"not-in\" /* NOT_IN */;\n\n case \"ARRAY_CONTAINS_ANY\":\n return \"array-contains-any\" /* ARRAY_CONTAINS_ANY */;\n\n case \"OPERATOR_UNSPECIFIED\":\n default:\n return O();\n }\n }(t.fieldFilter.op), t.fieldFilter.value);\n}\n\nfunction Hn(t) {\n switch (t.unaryFilter.op) {\n case \"IS_NAN\":\n var e = zn(t.unaryFilter.field);\n return Rt.create(e, \"==\" /* EQUAL */ , {\n doubleValue: NaN\n });\n\n case \"IS_NULL\":\n var n = zn(t.unaryFilter.field);\n return Rt.create(n, \"==\" /* EQUAL */ , {\n nullValue: \"NULL_VALUE\"\n });\n\n case \"IS_NOT_NAN\":\n var r = zn(t.unaryFilter.field);\n return Rt.create(r, \"!=\" /* NOT_EQUAL */ , {\n doubleValue: NaN\n });\n\n case \"IS_NOT_NULL\":\n var i = zn(t.unaryFilter.field);\n return Rt.create(i, \"!=\" /* NOT_EQUAL */ , {\n nullValue: \"NULL_VALUE\"\n });\n\n case \"OPERATOR_UNSPECIFIED\":\n default:\n return O();\n }\n}\n\nfunction Yn(t) {\n var e = [];\n return t.fields.forEach((function(t) {\n return e.push(t.canonicalString());\n })), {\n fieldPaths: e\n };\n}\n\nfunction $n(t) {\n // Resource names have at least 4 components (project ID, database ID)\n return t.length >= 4 && \"projects\" === t.get(0) && \"databases\" === t.get(2);\n}\n\n/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * Encodes a resource path into a IndexedDb-compatible string form.\n */ function Xn(t) {\n for (var e = \"\", n = 0; n < t.length; n++) e.length > 0 && (e = Zn(e)), e = Jn(t.get(n), e);\n return Zn(e);\n}\n\n/** Encodes a single segment of a resource path into the given result */ function Jn(t, e) {\n for (var n = e, r = t.length, i = 0; i < r; i++) {\n var o = t.charAt(i);\n switch (o) {\n case \"\\0\":\n n += \"\u0001\u0010\";\n break;\n\n case \"\u0001\":\n n += \"\u0001\u0011\";\n break;\n\n default:\n n += o;\n }\n }\n return n;\n}\n\n/** Encodes a path separator into the given result */ function Zn(t) {\n return t + \"\u0001\u0001\";\n}\n\n/**\n * Decodes the given IndexedDb-compatible string form of a resource path into\n * a ResourcePath instance. Note that this method is not suitable for use with\n * decoding resource names from the server; those are One Platform format\n * strings.\n */ function tr(t) {\n // Event the empty path must encode as a path of at least length 2. A path\n // with exactly 2 must be the empty path.\n var e = t.length;\n if (P(e >= 2), 2 === e) return P(\"\u0001\" === t.charAt(0) && \"\u0001\" === t.charAt(1)), H.emptyPath();\n // Escape characters cannot exist past the second-to-last position in the\n // source value.\n for (var n = e - 2, r = [], i = \"\", o = 0; o < e; ) {\n // The last two characters of a valid encoded path must be a separator, so\n // there must be an end to this segment.\n var s = t.indexOf(\"\u0001\", o);\n switch ((s < 0 || s > n) && O(), t.charAt(s + 1)) {\n case \"\u0001\":\n var u = t.substring(o, s), a = void 0;\n 0 === i.length ? \n // Avoid copying for the common case of a segment that excludes \\0\n // and \\001\n a = u : (a = i += u, i = \"\"), r.push(a);\n break;\n\n case \"\u0010\":\n i += t.substring(o, s), i += \"\\0\";\n break;\n\n case \"\u0011\":\n // The escape character can be used in the output to encode itself.\n i += t.substring(o, s + 1);\n break;\n\n default:\n O();\n }\n o = s + 2;\n }\n return new H(r);\n}\n\n/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * Schema Version for the Web client:\n * 1. Initial version including Mutation Queue, Query Cache, and Remote\n * Document Cache\n * 2. Used to ensure a targetGlobal object exists and add targetCount to it. No\n * longer required because migration 3 unconditionally clears it.\n * 3. Dropped and re-created Query Cache to deal with cache corruption related\n * to limbo resolution. Addresses\n * https://github.com/firebase/firebase-ios-sdk/issues/1548\n * 4. Multi-Tab Support.\n * 5. Removal of held write acks.\n * 6. Create document global for tracking document cache size.\n * 7. Ensure every cached document has a sentinel row with a sequence number.\n * 8. Add collection-parent index for Collection Group queries.\n * 9. Change RemoteDocumentChanges store to be keyed by readTime rather than\n * an auto-incrementing ID. This is required for Index-Free queries.\n * 10. Rewrite the canonical IDs to the explicit Protobuf-based format.\n * 11. Add bundles and named_queries for bundle support.\n */\n/**\n * Wrapper class to store timestamps (seconds and nanos) in IndexedDb objects.\n */ var er = function(t, e) {\n this.seconds = t, this.nanoseconds = e;\n}, nr = function(t, \n/** Whether to allow shared access from multiple tabs. */\ne, n) {\n this.ownerId = t, this.allowTabSynchronization = e, this.leaseTimestampMs = n;\n};\n\n/**\n * A singleton object to be stored in the 'owner' store in IndexedDb.\n *\n * A given database can have a single primary tab assigned at a given time. That\n * tab must validate that it is still holding the primary lease before every\n * operation that requires locked access. The primary tab should regularly\n * write an updated timestamp to this lease to prevent other tabs from\n * \"stealing\" the primary lease\n */\n/**\n * Name of the IndexedDb object store.\n *\n * Note that the name 'owner' is chosen to ensure backwards compatibility with\n * older clients that only supported single locked access to the persistence\n * layer.\n */\nnr.store = \"owner\", \n/**\n * The key string used for the single object that exists in the\n * DbPrimaryClient store.\n */\nnr.key = \"owner\";\n\n/**\n * An object to be stored in the 'mutationQueues' store in IndexedDb.\n *\n * Each user gets a single queue of MutationBatches to apply to the server.\n * DbMutationQueue tracks the metadata about the queue.\n */\nvar rr = function(\n/**\n * The normalized user ID to which this queue belongs.\n */\nt, \n/**\n * An identifier for the highest numbered batch that has been acknowledged\n * by the server. All MutationBatches in this queue with batchIds less\n * than or equal to this value are considered to have been acknowledged by\n * the server.\n *\n * NOTE: this is deprecated and no longer used by the code.\n */\ne, \n/**\n * A stream token that was previously sent by the server.\n *\n * See StreamingWriteRequest in datastore.proto for more details about\n * usage.\n *\n * After sending this token, earlier tokens may not be used anymore so\n * only a single stream token is retained.\n *\n * NOTE: this is deprecated and no longer used by the code.\n */\nn) {\n this.userId = t, this.lastAcknowledgedBatchId = e, this.lastStreamToken = n;\n};\n\n/** Name of the IndexedDb object store. */ rr.store = \"mutationQueues\", \n/** Keys are automatically assigned via the userId property. */\nrr.keyPath = \"userId\";\n\n/**\n * An object to be stored in the 'mutations' store in IndexedDb.\n *\n * Represents a batch of user-level mutations intended to be sent to the server\n * in a single write. Each user-level batch gets a separate DbMutationBatch\n * with a new batchId.\n */\nvar ir = function(\n/**\n * The normalized user ID to which this batch belongs.\n */\nt, \n/**\n * An identifier for this batch, allocated using an auto-generated key.\n */\ne, \n/**\n * The local write time of the batch, stored as milliseconds since the\n * epoch.\n */\nn, \n/**\n * A list of \"mutations\" that represent a partial base state from when this\n * write batch was initially created. During local application of the write\n * batch, these baseMutations are applied prior to the real writes in order\n * to override certain document fields from the remote document cache. This\n * is necessary in the case of non-idempotent writes (e.g. `increment()`\n * transforms) to make sure that the local view of the modified documents\n * doesn't flicker if the remote document cache receives the result of the\n * non-idempotent write before the write is removed from the queue.\n *\n * These mutations are never sent to the backend.\n */\nr, \n/**\n * A list of mutations to apply. All mutations will be applied atomically.\n *\n * Mutations are serialized via toMutation().\n */\ni) {\n this.userId = t, this.batchId = e, this.localWriteTimeMs = n, this.baseMutations = r, \n this.mutations = i;\n};\n\n/** Name of the IndexedDb object store. */ ir.store = \"mutations\", \n/** Keys are automatically assigned via the userId, batchId properties. */\nir.keyPath = \"batchId\", \n/** The index name for lookup of mutations by user. */\nir.userMutationsIndex = \"userMutationsIndex\", \n/** The user mutations index is keyed by [userId, batchId] pairs. */\nir.userMutationsKeyPath = [ \"userId\", \"batchId\" ];\n\n/**\n * An object to be stored in the 'documentMutations' store in IndexedDb.\n *\n * A manually maintained index of all the mutation batches that affect a given\n * document key. The rows in this table are references based on the contents of\n * DbMutationBatch.mutations.\n */\nvar or = /** @class */ function() {\n function t() {}\n /**\n * Creates a [userId] key for use in the DbDocumentMutations index to iterate\n * over all of a user's document mutations.\n */ return t.prefixForUser = function(t) {\n return [ t ];\n }, \n /**\n * Creates a [userId, encodedPath] key for use in the DbDocumentMutations\n * index to iterate over all at document mutations for a given path or lower.\n */\n t.prefixForPath = function(t, e) {\n return [ t, Xn(e) ];\n }, \n /**\n * Creates a full index key of [userId, encodedPath, batchId] for inserting\n * and deleting into the DbDocumentMutations index.\n */\n t.key = function(t, e, n) {\n return [ t, Xn(e), n ];\n }, t;\n}();\n\nor.store = \"documentMutations\", \n/**\n * Because we store all the useful information for this store in the key,\n * there is no useful information to store as the value. The raw (unencoded)\n * path cannot be stored because IndexedDb doesn't store prototype\n * information.\n */\nor.PLACEHOLDER = new or;\n\n/**\n * Represents the known absence of a document at a particular version.\n * Stored in IndexedDb as part of a DbRemoteDocument object.\n */\nvar sr = function(t, e) {\n this.path = t, this.readTime = e;\n}, ur = function(t, e) {\n this.path = t, this.version = e;\n}, ar = \n// TODO: We are currently storing full document keys almost three times\n// (once as part of the primary key, once - partly - as `parentPath` and once\n// inside the encoded documents). During our next migration, we should\n// rewrite the primary key as parentPath + document ID which would allow us\n// to drop one value.\nfunction(\n/**\n * Set to an instance of DbUnknownDocument if the data for a document is\n * not known, but it is known that a document exists at the specified\n * version (e.g. it had a successful update applied to it)\n */\nt, \n/**\n * Set to an instance of a DbNoDocument if it is known that no document\n * exists.\n */\ne, \n/**\n * Set to an instance of a Document if there's a cached version of the\n * document.\n */\nn, \n/**\n * Documents that were written to the remote document store based on\n * a write acknowledgment are marked with `hasCommittedMutations`. These\n * documents are potentially inconsistent with the backend's copy and use\n * the write's commit version as their document version.\n */\nr, \n/**\n * When the document was read from the backend. Undefined for data written\n * prior to schema version 9.\n */\ni, \n/**\n * The path of the collection this document is part of. Undefined for data\n * written prior to schema version 9.\n */\no) {\n this.unknownDocument = t, this.noDocument = e, this.document = n, this.hasCommittedMutations = r, \n this.readTime = i, this.parentPath = o;\n};\n\n/**\n * Represents a document that is known to exist but whose data is unknown.\n * Stored in IndexedDb as part of a DbRemoteDocument object.\n */ ar.store = \"remoteDocuments\", \n/**\n * An index that provides access to all entries sorted by read time (which\n * corresponds to the last modification time of each row).\n *\n * This index is used to provide a changelog for Multi-Tab.\n */\nar.readTimeIndex = \"readTimeIndex\", ar.readTimeIndexPath = \"readTime\", \n/**\n * An index that provides access to documents in a collection sorted by read\n * time.\n *\n * This index is used to allow the RemoteDocumentCache to fetch newly changed\n * documents in a collection.\n */\nar.collectionReadTimeIndex = \"collectionReadTimeIndex\", ar.collectionReadTimeIndexPath = [ \"parentPath\", \"readTime\" ];\n\n/**\n * Contains a single entry that has metadata about the remote document cache.\n */\nvar cr = \n/**\n * @param byteSize - Approximately the total size in bytes of all the\n * documents in the document cache.\n */\nfunction(t) {\n this.byteSize = t;\n};\n\ncr.store = \"remoteDocumentGlobal\", cr.key = \"remoteDocumentGlobalKey\";\n\n/**\n * An object to be stored in the 'targets' store in IndexedDb.\n *\n * This is based on and should be kept in sync with the proto used in the iOS\n * client.\n *\n * Each query the client listens to against the server is tracked on disk so\n * that the query can be efficiently resumed on restart.\n */\nvar hr = function(\n/**\n * An auto-generated sequential numeric identifier for the query.\n *\n * Queries are stored using their canonicalId as the key, but these\n * canonicalIds can be quite long so we additionally assign a unique\n * queryId which can be used by referenced data structures (e.g.\n * indexes) to minimize the on-disk cost.\n */\nt, \n/**\n * The canonical string representing this query. This is not unique.\n */\ne, \n/**\n * The last readTime received from the Watch Service for this query.\n *\n * This is the same value as TargetChange.read_time in the protos.\n */\nn, \n/**\n * An opaque, server-assigned token that allows watching a query to be\n * resumed after disconnecting without retransmitting all the data\n * that matches the query. The resume token essentially identifies a\n * point in time from which the server should resume sending results.\n *\n * This is related to the snapshotVersion in that the resumeToken\n * effectively also encodes that value, but the resumeToken is opaque\n * and sometimes encodes additional information.\n *\n * A consequence of this is that the resumeToken should be used when\n * asking the server to reason about where this client is in the watch\n * stream, but the client should use the snapshotVersion for its own\n * purposes.\n *\n * This is the same value as TargetChange.resume_token in the protos.\n */\nr, \n/**\n * A sequence number representing the last time this query was\n * listened to, used for garbage collection purposes.\n *\n * Conventionally this would be a timestamp value, but device-local\n * clocks are unreliable and they must be able to create new listens\n * even while disconnected. Instead this should be a monotonically\n * increasing number that's incremented on each listen call.\n *\n * This is different from the queryId since the queryId is an\n * immutable identifier assigned to the Query on first use while\n * lastListenSequenceNumber is updated every time the query is\n * listened to.\n */\ni, \n/**\n * Denotes the maximum snapshot version at which the associated query view\n * contained no limbo documents. Undefined for data written prior to\n * schema version 9.\n */\no, \n/**\n * The query for this target.\n *\n * Because canonical ids are not unique we must store the actual query. We\n * use the proto to have an object we can persist without having to\n * duplicate translation logic to and from a `Query` object.\n */\ns) {\n this.targetId = t, this.canonicalId = e, this.readTime = n, this.resumeToken = r, \n this.lastListenSequenceNumber = i, this.lastLimboFreeSnapshotVersion = o, this.query = s;\n};\n\nhr.store = \"targets\", \n/** Keys are automatically assigned via the targetId property. */\nhr.keyPath = \"targetId\", \n/** The name of the queryTargets index. */\nhr.queryTargetsIndexName = \"queryTargetsIndex\", \n/**\n * The index of all canonicalIds to the targets that they match. This is not\n * a unique mapping because canonicalId does not promise a unique name for all\n * possible queries, so we append the targetId to make the mapping unique.\n */\nhr.queryTargetsKeyPath = [ \"canonicalId\", \"targetId\" ];\n\n/**\n * An object representing an association between a target and a document, or a\n * sentinel row marking the last sequence number at which a document was used.\n * Each document cached must have a corresponding sentinel row before lru\n * garbage collection is enabled.\n *\n * The target associations and sentinel rows are co-located so that orphaned\n * documents and their sequence numbers can be identified efficiently via a scan\n * of this store.\n */\nvar fr = function(\n/**\n * The targetId identifying a target or 0 for a sentinel row.\n */\nt, \n/**\n * The path to the document, as encoded in the key.\n */\ne, \n/**\n * If this is a sentinel row, this should be the sequence number of the last\n * time the document specified by `path` was used. Otherwise, it should be\n * `undefined`.\n */\nn) {\n this.targetId = t, this.path = e, this.sequenceNumber = n;\n};\n\n/** Name of the IndexedDb object store. */ fr.store = \"targetDocuments\", \n/** Keys are automatically assigned via the targetId, path properties. */\nfr.keyPath = [ \"targetId\", \"path\" ], \n/** The index name for the reverse index. */\nfr.documentTargetsIndex = \"documentTargetsIndex\", \n/** We also need to create the reverse index for these properties. */\nfr.documentTargetsKeyPath = [ \"path\", \"targetId\" ];\n\n/**\n * A record of global state tracked across all Targets, tracked separately\n * to avoid the need for extra indexes.\n *\n * This should be kept in-sync with the proto used in the iOS client.\n */\nvar lr = function(\n/**\n * The highest numbered target id across all targets.\n *\n * See DbTarget.targetId.\n */\nt, \n/**\n * The highest numbered lastListenSequenceNumber across all targets.\n *\n * See DbTarget.lastListenSequenceNumber.\n */\ne, \n/**\n * A global snapshot version representing the last consistent snapshot we\n * received from the backend. This is monotonically increasing and any\n * snapshots received from the backend prior to this version (e.g. for\n * targets resumed with a resumeToken) should be suppressed (buffered)\n * until the backend has caught up to this snapshot version again. This\n * prevents our cache from ever going backwards in time.\n */\nn, \n/**\n * The number of targets persisted.\n */\nr) {\n this.highestTargetId = t, this.highestListenSequenceNumber = e, this.lastRemoteSnapshotVersion = n, \n this.targetCount = r;\n};\n\n/**\n * The key string used for the single object that exists in the\n * DbTargetGlobal store.\n */ lr.key = \"targetGlobalKey\", lr.store = \"targetGlobal\";\n\n/**\n * An object representing an association between a Collection id (e.g. 'messages')\n * to a parent path (e.g. '/chats/123') that contains it as a (sub)collection.\n * This is used to efficiently find all collections to query when performing\n * a Collection Group query.\n */\nvar dr = function(\n/**\n * The collectionId (e.g. 'messages')\n */\nt, \n/**\n * The path to the parent (either a document location or an empty path for\n * a root-level collection).\n */\ne) {\n this.collectionId = t, this.parent = e;\n};\n\n/** Name of the IndexedDb object store. */ dr.store = \"collectionParents\", \n/** Keys are automatically assigned via the collectionId, parent properties. */\ndr.keyPath = [ \"collectionId\", \"parent\" ];\n\n/**\n * A record of the metadata state of each client.\n *\n * PORTING NOTE: This is used to synchronize multi-tab state and does not need\n * to be ported to iOS or Android.\n */\nvar pr = function(\n// Note: Previous schema versions included a field\n// \"lastProcessedDocumentChangeId\". Don't use anymore.\n/** The auto-generated client id assigned at client startup. */\nt, \n/** The last time this state was updated. */\ne, \n/** Whether the client's network connection is enabled. */\nn, \n/** Whether this client is running in a foreground tab. */\nr) {\n this.clientId = t, this.updateTimeMs = e, this.networkEnabled = n, this.inForeground = r;\n};\n\n/** Name of the IndexedDb object store. */ pr.store = \"clientMetadata\", \n/** Keys are automatically assigned via the clientId properties. */\npr.keyPath = \"clientId\";\n\n/**\n * A object representing a bundle loaded by the SDK.\n */\nvar yr = function(\n/** The ID of the loaded bundle. */\nt, \n/** The create time of the loaded bundle. */\ne, \n/** The schema version of the loaded bundle. */\nn) {\n this.bundleId = t, this.createTime = e, this.version = n;\n};\n\n/** Name of the IndexedDb object store. */ yr.store = \"bundles\", yr.keyPath = \"bundleId\";\n\n/**\n * A object representing a named query loaded by the SDK via a bundle.\n */\nvar vr = function(\n/** The name of the query. */\nt, \n/** The read time of the results saved in the bundle from the named query. */\ne, \n/** The query saved in the bundle. */\nn) {\n this.name = t, this.readTime = e, this.bundledQuery = n;\n};\n\n/** Name of the IndexedDb object store. */ vr.store = \"namedQueries\", vr.keyPath = \"name\";\n\n// Visible for testing\nvar mr = e(e([], e(e([], e(e([], e(e([], [ rr.store, ir.store, or.store, ar.store, hr.store, nr.store, lr.store, fr.store ]), [ pr.store ])), [ cr.store ])), [ dr.store ])), [ yr.store, vr.store ]), gr = \"The current tab is not in the required state to perform this operation. It might be necessary to refresh the browser tab.\", wr = /** @class */ function() {\n function t() {\n this.onCommittedListeners = [];\n }\n return t.prototype.addOnCommittedListener = function(t) {\n this.onCommittedListeners.push(t);\n }, t.prototype.raiseOnCommittedEvent = function() {\n this.onCommittedListeners.forEach((function(t) {\n return t();\n }));\n }, t;\n}(), br = function() {\n var t = this;\n this.promise = new Promise((function(e, n) {\n t.resolve = e, t.reject = n;\n }));\n}, Ir = /** @class */ function() {\n function t(t) {\n var e = this;\n // NOTE: next/catchCallback will always point to our own wrapper functions,\n // not the user's raw next() or catch() callbacks.\n this.nextCallback = null, this.catchCallback = null, \n // When the operation resolves, we'll set result or error and mark isDone.\n this.result = void 0, this.error = void 0, this.isDone = !1, \n // Set to true when .then() or .catch() are called and prevents additional\n // chaining.\n this.callbackAttached = !1, t((function(t) {\n e.isDone = !0, e.result = t, e.nextCallback && \n // value should be defined unless T is Void, but we can't express\n // that in the type system.\n e.nextCallback(t);\n }), (function(t) {\n e.isDone = !0, e.error = t, e.catchCallback && e.catchCallback(t);\n }));\n }\n return t.prototype.catch = function(t) {\n return this.next(void 0, t);\n }, t.prototype.next = function(e, n) {\n var r = this;\n return this.callbackAttached && O(), this.callbackAttached = !0, this.isDone ? this.error ? this.wrapFailure(n, this.error) : this.wrapSuccess(e, this.result) : new t((function(t, i) {\n r.nextCallback = function(n) {\n r.wrapSuccess(e, n).next(t, i);\n }, r.catchCallback = function(e) {\n r.wrapFailure(n, e).next(t, i);\n };\n }));\n }, t.prototype.toPromise = function() {\n var t = this;\n return new Promise((function(e, n) {\n t.next(e, n);\n }));\n }, t.prototype.wrapUserFunction = function(e) {\n try {\n var n = e();\n return n instanceof t ? n : t.resolve(n);\n } catch (e) {\n return t.reject(e);\n }\n }, t.prototype.wrapSuccess = function(e, n) {\n return e ? this.wrapUserFunction((function() {\n return e(n);\n })) : t.resolve(n);\n }, t.prototype.wrapFailure = function(e, n) {\n return e ? this.wrapUserFunction((function() {\n return e(n);\n })) : t.reject(n);\n }, t.resolve = function(e) {\n return new t((function(t, n) {\n t(e);\n }));\n }, t.reject = function(e) {\n return new t((function(t, n) {\n n(e);\n }));\n }, t.waitFor = function(\n // Accept all Promise types in waitFor().\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n e) {\n return new t((function(t, n) {\n var r = 0, i = 0, o = !1;\n e.forEach((function(e) {\n ++r, e.next((function() {\n ++i, o && i === r && t();\n }), (function(t) {\n return n(t);\n }));\n })), o = !0, i === r && t();\n }));\n }, \n /**\n * Given an array of predicate functions that asynchronously evaluate to a\n * boolean, implements a short-circuiting `or` between the results. Predicates\n * will be evaluated until one of them returns `true`, then stop. The final\n * result will be whether any of them returned `true`.\n */\n t.or = function(e) {\n for (var n = t.resolve(!1), r = function(e) {\n n = n.next((function(n) {\n return n ? t.resolve(n) : e();\n }));\n }, i = 0, o = e; i < o.length; i++) {\n r(o[i]);\n }\n return n;\n }, t.forEach = function(t, e) {\n var n = this, r = [];\n return t.forEach((function(t, i) {\n r.push(e.call(n, t, i));\n })), this.waitFor(r);\n }, t;\n}(), Tr = /** @class */ function() {\n function t(t, e) {\n var n = this;\n this.action = t, this.transaction = e, this.aborted = !1, \n /**\n * A `Promise` that resolves with the result of the IndexedDb transaction.\n */\n this.ft = new br, this.transaction.oncomplete = function() {\n n.ft.resolve();\n }, this.transaction.onabort = function() {\n e.error ? n.ft.reject(new Sr(t, e.error)) : n.ft.resolve();\n }, this.transaction.onerror = function(e) {\n var r = Cr(e.target.error);\n n.ft.reject(new Sr(t, r));\n };\n }\n return t.open = function(e, n, r, i) {\n try {\n return new t(n, e.transaction(i, r));\n } catch (e) {\n throw new Sr(n, e);\n }\n }, Object.defineProperty(t.prototype, \"dt\", {\n get: function() {\n return this.ft.promise;\n },\n enumerable: !1,\n configurable: !0\n }), t.prototype.abort = function(t) {\n t && this.ft.reject(t), this.aborted || (C(\"SimpleDb\", \"Aborting transaction:\", t ? t.message : \"Client-initiated abort\"), \n this.aborted = !0, this.transaction.abort());\n }, \n /**\n * Returns a SimpleDbStore for the specified store. All\n * operations performed on the SimpleDbStore happen within the context of this\n * transaction and it cannot be used anymore once the transaction is\n * completed.\n *\n * Note that we can't actually enforce that the KeyType and ValueType are\n * correct, but they allow type safety through the rest of the consuming code.\n */\n t.prototype.store = function(t) {\n var e = this.transaction.objectStore(t);\n return new Dr(e);\n }, t;\n}(), _r = /** @class */ function() {\n /*\n * Creates a new SimpleDb wrapper for IndexedDb database `name`.\n *\n * Note that `version` must not be a downgrade. IndexedDB does not support\n * downgrading the schema version. We currently do not support any way to do\n * versioning outside of IndexedDB's versioning mechanism, as only\n * version-upgrade transactions are allowed to do things like create\n * objectstores.\n */\n function t(e, n, r) {\n this.name = e, this.version = n, this.wt = r, \n // NOTE: According to https://bugs.webkit.org/show_bug.cgi?id=197050, the\n // bug we're checking for should exist in iOS >= 12.2 and < 13, but for\n // whatever reason it's much harder to hit after 12.2 so we only proactively\n // log on 12.2.\n 12.2 === t._t(i()) && x(\"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.\");\n }\n /** Deletes the specified database. */ return t.delete = function(t) {\n return C(\"SimpleDb\", \"Removing database:\", t), Ar(window.indexedDB.deleteDatabase(t)).toPromise();\n }, \n /** Returns true if IndexedDB is available in the current environment. */ t.yt = function() {\n if (\"undefined\" == typeof indexedDB) return !1;\n if (t.gt()) return !0;\n // We extensively use indexed array values and compound keys,\n // which IE and Edge do not support. However, they still have indexedDB\n // defined on the window, so we need to check for them here and make sure\n // to return that persistence is not enabled for those browsers.\n // For tracking support of this feature, see here:\n // https://developer.microsoft.com/en-us/microsoft-edge/platform/status/indexeddbarraysandmultientrysupport/\n // Check the UA string to find out the browser.\n var e = i(), n = t._t(e), r = 0 < n && n < 10, o = t.Et(e), s = 0 < o && o < 4.5;\n // IE 10\n // ua = 'Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; Trident/6.0)';\n // IE 11\n // ua = 'Mozilla/5.0 (Windows NT 6.3; Trident/7.0; rv:11.0) like Gecko';\n // Edge\n // ua = 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML,\n // like Gecko) Chrome/39.0.2171.71 Safari/537.36 Edge/12.0';\n // iOS Safari: Disable for users running iOS version < 10.\n return !(e.indexOf(\"MSIE \") > 0 || e.indexOf(\"Trident/\") > 0 || e.indexOf(\"Edge/\") > 0 || r || s);\n }, \n /**\n * Returns true if the backing IndexedDB store is the Node IndexedDBShim\n * (see https://github.com/axemclion/IndexedDBShim).\n */\n t.gt = function() {\n var t;\n return \"undefined\" != typeof process && \"YES\" === (null === (t = process.env) || void 0 === t ? void 0 : t.Tt);\n }, \n /** Helper to get a typed SimpleDbStore from a transaction. */ t.It = function(t, e) {\n return t.store(e);\n }, \n // visible for testing\n /** Parse User Agent to determine iOS version. Returns -1 if not found. */\n t._t = function(t) {\n var e = t.match(/i(?:phone|pad|pod) os ([\\d_]+)/i), n = e ? e[1].split(\"_\").slice(0, 2).join(\".\") : \"-1\";\n return Number(n);\n }, \n // visible for testing\n /** Parse User Agent to determine Android version. Returns -1 if not found. */\n t.Et = function(t) {\n var e = t.match(/Android ([\\d.]+)/i), n = e ? e[1].split(\".\").slice(0, 2).join(\".\") : \"-1\";\n return Number(n);\n }, \n /**\n * Opens the specified database, creating or upgrading it if necessary.\n */\n t.prototype.At = function(t) {\n return n(this, void 0, void 0, (function() {\n var e, n = this;\n return r(this, (function(r) {\n switch (r.label) {\n case 0:\n return this.db ? [ 3 /*break*/ , 2 ] : (C(\"SimpleDb\", \"Opening database:\", this.name), \n e = this, [ 4 /*yield*/ , new Promise((function(e, r) {\n // TODO(mikelehen): Investigate browser compatibility.\n // https://developer.mozilla.org/en-US/docs/Web/API/IndexedDB_API/Using_IndexedDB\n // suggests IE9 and older WebKit browsers handle upgrade\n // differently. They expect setVersion, as described here:\n // https://developer.mozilla.org/en-US/docs/Web/API/IDBVersionChangeRequest/setVersion\n var i = indexedDB.open(n.name, n.version);\n i.onsuccess = function(t) {\n var n = t.target.result;\n e(n);\n }, i.onblocked = function() {\n r(new Sr(t, \"Cannot upgrade IndexedDB schema while another tab is open. Close all tabs that access Firestore and reload this page to proceed.\"));\n }, i.onerror = function(e) {\n var n = e.target.error;\n \"VersionError\" === n.name ? r(new D(N.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.\")) : r(new Sr(t, n));\n }, i.onupgradeneeded = function(t) {\n C(\"SimpleDb\", 'Database \"' + n.name + '\" requires upgrade from version:', t.oldVersion);\n var e = t.target.result;\n n.wt.Rt(e, i.transaction, t.oldVersion, n.version).next((function() {\n C(\"SimpleDb\", \"Database upgrade to version \" + n.version + \" complete\");\n }));\n };\n })) ]);\n\n case 1:\n e.db = r.sent(), r.label = 2;\n\n case 2:\n return [ 2 /*return*/ , (this.bt && (this.db.onversionchange = function(t) {\n return n.bt(t);\n }), this.db) ];\n }\n }));\n }));\n }, t.prototype.vt = function(t) {\n this.bt = t, this.db && (this.db.onversionchange = function(e) {\n return t(e);\n });\n }, t.prototype.runTransaction = function(t, e, i, o) {\n return n(this, void 0, void 0, (function() {\n var n, s, u, a, c;\n return r(this, (function(h) {\n switch (h.label) {\n case 0:\n n = \"readonly\" === e, s = 0, u = function() {\n var e, u, c, h, f;\n return r(this, (function(r) {\n switch (r.label) {\n case 0:\n ++s, r.label = 1;\n\n case 1:\n return r.trys.push([ 1, 4, , 5 ]), [ 4 /*yield*/ , a.At(t) ];\n\n case 2:\n // Wait for the transaction to complete (i.e. IndexedDb's onsuccess event to\n // fire), but still return the original transactionFnResult back to the\n // caller.\n return a.db = r.sent(), e = Tr.open(a.db, t, n ? \"readonly\" : \"readwrite\", i), u = o(e).catch((function(t) {\n // Abort the transaction if there was an error.\n return e.abort(t), Ir.reject(t);\n })).toPromise(), c = {}, u.catch((function() {})), [ 4 /*yield*/ , e.dt ];\n\n case 3:\n return [ 2 /*return*/ , (c.value = (\n // Wait for the transaction to complete (i.e. IndexedDb's onsuccess event to\n // fire), but still return the original transactionFnResult back to the\n // caller.\n r.sent(), u), c) ];\n\n case 4:\n return h = r.sent(), f = \"FirebaseError\" !== h.name && s < 3, C(\"SimpleDb\", \"Transaction failed with error:\", h.message, \"Retrying:\", f), \n a.close(), f ? [ 3 /*break*/ , 5 ] : [ 2 /*return*/ , {\n value: Promise.reject(h)\n } ];\n\n case 5:\n return [ 2 /*return*/ ];\n }\n }));\n }, a = this, h.label = 1;\n\n case 1:\n return [ 5 /*yield**/ , u() ];\n\n case 2:\n if (\"object\" == typeof (c = h.sent())) return [ 2 /*return*/ , c.value ];\n h.label = 3;\n\n case 3:\n return [ 3 /*break*/ , 1 ];\n\n case 4:\n return [ 2 /*return*/ ];\n }\n }));\n }));\n }, t.prototype.close = function() {\n this.db && this.db.close(), this.db = void 0;\n }, t;\n}(), Er = /** @class */ function() {\n function t(t) {\n this.Pt = t, this.Vt = !1, this.St = null;\n }\n return Object.defineProperty(t.prototype, \"isDone\", {\n get: function() {\n return this.Vt;\n },\n enumerable: !1,\n configurable: !0\n }), Object.defineProperty(t.prototype, \"Dt\", {\n get: function() {\n return this.St;\n },\n enumerable: !1,\n configurable: !0\n }), Object.defineProperty(t.prototype, \"cursor\", {\n set: function(t) {\n this.Pt = t;\n },\n enumerable: !1,\n configurable: !0\n }), \n /**\n * This function can be called to stop iteration at any point.\n */\n t.prototype.done = function() {\n this.Vt = !0;\n }, \n /**\n * This function can be called to skip to that next key, which could be\n * an index or a primary key.\n */\n t.prototype.Ct = function(t) {\n this.St = t;\n }, \n /**\n * Delete the current cursor value from the object store.\n *\n * NOTE: You CANNOT do this with a keysOnly query.\n */\n t.prototype.delete = function() {\n return Ar(this.Pt.delete());\n }, t;\n}(), Sr = /** @class */ function(e) {\n function n(t, n) {\n var r = this;\n return (r = e.call(this, N.UNAVAILABLE, \"IndexedDB transaction '\" + t + \"' failed: \" + n) || this).name = \"IndexedDbTransactionError\", \n r;\n }\n return t(n, e), n;\n}(D);\n\n// V2 is no longer usable (see comment at top of file)\n// Visible for testing\n/**\n * A base class representing a persistence transaction, encapsulating both the\n * transaction's sequence numbers as well as a list of onCommitted listeners.\n *\n * When you call Persistence.runTransaction(), it will create a transaction and\n * pass it to your callback. You then pass it to any method that operates\n * on persistence.\n */\n/** Verifies whether `e` is an IndexedDbTransactionError. */ function Nr(t) {\n // Use name equality, as instanceof checks on errors don't work with errors\n // that wrap other errors.\n return \"IndexedDbTransactionError\" === t.name;\n}\n\n/**\n * A wrapper around an IDBObjectStore providing an API that:\n *\n * 1) Has generic KeyType / ValueType parameters to provide strongly-typed\n * methods for acting against the object store.\n * 2) Deals with IndexedDB's onsuccess / onerror event callbacks, making every\n * method return a PersistencePromise instead.\n * 3) Provides a higher-level API to avoid needing to do excessive wrapping of\n * intermediate IndexedDB types (IDBCursorWithValue, etc.)\n */ var Dr = /** @class */ function() {\n function t(t) {\n this.store = t;\n }\n return t.prototype.put = function(t, e) {\n var n;\n return void 0 !== e ? (C(\"SimpleDb\", \"PUT\", this.store.name, t, e), n = this.store.put(e, t)) : (C(\"SimpleDb\", \"PUT\", this.store.name, \"\", t), \n n = this.store.put(t)), Ar(n);\n }, \n /**\n * Adds a new value into an Object Store and returns the new key. Similar to\n * IndexedDb's `add()`, this method will fail on primary key collisions.\n *\n * @param value - The object to write.\n * @returns The key of the value to add.\n */\n t.prototype.add = function(t) {\n return C(\"SimpleDb\", \"ADD\", this.store.name, t, t), Ar(this.store.add(t));\n }, \n /**\n * Gets the object with the specified key from the specified store, or null\n * if no object exists with the specified key.\n *\n * @key The key of the object to get.\n * @returns The object with the specified key or null if no object exists.\n */\n t.prototype.get = function(t) {\n var e = this;\n // We're doing an unsafe cast to ValueType.\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return Ar(this.store.get(t)).next((function(n) {\n // Normalize nonexistence to null.\n return void 0 === n && (n = null), C(\"SimpleDb\", \"GET\", e.store.name, t, n), n;\n }));\n }, t.prototype.delete = function(t) {\n return C(\"SimpleDb\", \"DELETE\", this.store.name, t), Ar(this.store.delete(t));\n }, \n /**\n * If we ever need more of the count variants, we can add overloads. For now,\n * all we need is to count everything in a store.\n *\n * Returns the number of rows in the store.\n */\n t.prototype.count = function() {\n return C(\"SimpleDb\", \"COUNT\", this.store.name), Ar(this.store.count());\n }, t.prototype.Nt = function(t, e) {\n var n = this.cursor(this.options(t, e)), r = [];\n return this.xt(n, (function(t, e) {\n r.push(e);\n })).next((function() {\n return r;\n }));\n }, t.prototype.kt = function(t, e) {\n C(\"SimpleDb\", \"DELETE ALL\", this.store.name);\n var n = this.options(t, e);\n n.Ft = !1;\n var r = this.cursor(n);\n return this.xt(r, (function(t, e, n) {\n return n.delete();\n }));\n }, t.prototype.$t = function(t, e) {\n var n;\n e ? n = t : (n = {}, e = t);\n var r = this.cursor(n);\n return this.xt(r, e);\n }, \n /**\n * Iterates over a store, but waits for the given callback to complete for\n * each entry before iterating the next entry. This allows the callback to do\n * asynchronous work to determine if this iteration should continue.\n *\n * The provided callback should return `true` to continue iteration, and\n * `false` otherwise.\n */\n t.prototype.Ot = function(t) {\n var e = this.cursor({});\n return new Ir((function(n, r) {\n e.onerror = function(t) {\n var e = Cr(t.target.error);\n r(e);\n }, e.onsuccess = function(e) {\n var r = e.target.result;\n r ? t(r.primaryKey, r.value).next((function(t) {\n t ? r.continue() : n();\n })) : n();\n };\n }));\n }, t.prototype.xt = function(t, e) {\n var n = [];\n return new Ir((function(r, i) {\n t.onerror = function(t) {\n i(t.target.error);\n }, t.onsuccess = function(t) {\n var i = t.target.result;\n if (i) {\n var o = new Er(i), s = e(i.primaryKey, i.value, o);\n if (s instanceof Ir) {\n var u = s.catch((function(t) {\n return o.done(), Ir.reject(t);\n }));\n n.push(u);\n }\n o.isDone ? r() : null === o.Dt ? i.continue() : i.continue(o.Dt);\n } else r();\n };\n })).next((function() {\n return Ir.waitFor(n);\n }));\n }, t.prototype.options = function(t, e) {\n var n;\n return void 0 !== t && (\"string\" == typeof t ? n = t : e = t), {\n index: n,\n range: e\n };\n }, t.prototype.cursor = function(t) {\n var e = \"next\";\n if (t.reverse && (e = \"prev\"), t.index) {\n var n = this.store.index(t.index);\n return t.Ft ? n.openKeyCursor(t.range, e) : n.openCursor(t.range, e);\n }\n return this.store.openCursor(t.range, e);\n }, t;\n}();\n\n/**\n * Wraps an IDBRequest in a PersistencePromise, using the onsuccess / onerror\n * handlers to resolve / reject the PersistencePromise as appropriate.\n */ function Ar(t) {\n return new Ir((function(e, n) {\n t.onsuccess = function(t) {\n var n = t.target.result;\n e(n);\n }, t.onerror = function(t) {\n var e = Cr(t.target.error);\n n(e);\n };\n }));\n}\n\n// Guard so we only report the error once.\nvar kr = !1;\n\nfunction Cr(t) {\n var e = _r._t(i());\n if (e >= 12.2 && e < 13) {\n var n = \"An internal error was encountered in the Indexed Database server\";\n if (t.message.indexOf(n) >= 0) {\n // Wrap error in a more descriptive one.\n var r = new D(\"internal\", \"IOS_INDEXEDDB_BUG1: IndexedDb has thrown '\" + n + \"'. This is likely due to an unavoidable bug in iOS. See https://stackoverflow.com/q/56496296/110915 for details and a potential workaround.\");\n return kr || (kr = !0, \n // Throw a global exception outside of this promise chain, for the user to\n // potentially catch.\n setTimeout((function() {\n throw r;\n }), 0)), r;\n }\n }\n return t;\n}\n\n/**\n * @license\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */ var xr = /** @class */ function(e) {\n function n(t, n) {\n var r = this;\n return (r = e.call(this) || this).Mt = t, r.currentSequenceNumber = n, r;\n }\n return t(n, e), n;\n}(wr);\n\nfunction Rr(t, e) {\n var n = F(t);\n return _r.It(n.Mt, e);\n}\n\n/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * A batch of mutations that will be sent as one unit to the backend.\n */ var Lr = /** @class */ function() {\n /**\n * @param batchId - The unique ID of this mutation batch.\n * @param localWriteTime - The original write time of this mutation.\n * @param baseMutations - Mutations that are used to populate the base\n * values when this mutation is applied locally. This can be used to locally\n * overwrite values that are persisted in the remote document cache. Base\n * mutations are never sent to the backend.\n * @param mutations - The user-provided mutations in this mutation batch.\n * User-provided mutations are applied both locally and remotely on the\n * backend.\n */\n function t(t, e, n, r) {\n this.batchId = t, this.localWriteTime = e, this.baseMutations = n, this.mutations = r\n /**\n * Applies all the mutations in this MutationBatch to the specified document\n * to compute the state of the remote document\n *\n * @param document - The document to apply mutations to.\n * @param batchResult - The result of applying the MutationBatch to the\n * backend.\n */;\n }\n return t.prototype.applyToRemoteDocument = function(t, e) {\n for (var n = e.mutationResults, r = 0; r < this.mutations.length; r++) {\n var i = this.mutations[r];\n i.key.isEqual(t.key) && Ce(i, t, n[r]);\n }\n }, \n /**\n * Computes the local view of a document given all the mutations in this\n * batch.\n *\n * @param document - The document to apply mutations to.\n */\n t.prototype.applyToLocalView = function(t) {\n // First, apply the base state. This allows us to apply non-idempotent\n // transform against a consistent set of values.\n for (var e = 0, n = this.baseMutations; e < n.length; e++) {\n (o = n[e]).key.isEqual(t.key) && xe(o, t, this.localWriteTime);\n }\n // Second, apply all user-provided mutations.\n for (var r = 0, i = this.mutations; r < i.length; r++) {\n var o;\n (o = i[r]).key.isEqual(t.key) && xe(o, t, this.localWriteTime);\n }\n }, \n /**\n * Computes the local view for all provided documents given the mutations in\n * this batch.\n */\n t.prototype.applyToLocalDocumentSet = function(t) {\n var e = this;\n // TODO(mrschmidt): This implementation is O(n^2). If we apply the mutations\n // directly (as done in `applyToLocalView()`), we can reduce the complexity\n // to O(n).\n this.mutations.forEach((function(n) {\n var r = t.get(n.key), i = r;\n // TODO(mutabledocuments): This method should take a MutableDocumentMap\n // and we should remove this cast.\n e.applyToLocalView(i), r.isValidDocument() || i.convertToNoDocument(K.min());\n }));\n }, t.prototype.keys = function() {\n return this.mutations.reduce((function(t, e) {\n return t.add(e.key);\n }), sn());\n }, t.prototype.isEqual = function(t) {\n return this.batchId === t.batchId && U(this.mutations, t.mutations, (function(t, e) {\n return Le(t, e);\n })) && U(this.baseMutations, t.baseMutations, (function(t, e) {\n return Le(t, e);\n }));\n }, t;\n}(), Or = /** @class */ function() {\n function t(t, e, n, \n /**\n * A pre-computed mapping from each mutated document to the resulting\n * version.\n */\n r) {\n this.batch = t, this.commitVersion = e, this.mutationResults = n, this.docVersions = r\n /**\n * Creates a new MutationBatchResult for the given batch and results. There\n * must be one result for each mutation in the batch. This static factory\n * caches a document=>version mapping (docVersions).\n */;\n }\n return t.from = function(e, n, r) {\n P(e.mutations.length === r.length);\n for (var i = rn(), o = e.mutations, s = 0; s < o.length; s++) i = i.insert(o[s].key, r[s].version);\n return new t(e, n, r, i);\n }, t;\n}(), Pr = /** @class */ function() {\n function t(\n /** The target being listened to. */\n t, \n /**\n * The target ID to which the target corresponds; Assigned by the\n * LocalStore for user listens and by the SyncEngine for limbo watches.\n */\n e, \n /** The purpose of the target. */\n n, \n /**\n * The sequence number of the last transaction during which this target data\n * was modified.\n */\n r, \n /** The latest snapshot version seen for this target. */\n i\n /**\n * The maximum snapshot version at which the associated view\n * contained no limbo documents.\n */ , o\n /**\n * An opaque, server-assigned token that allows watching a target to be\n * resumed after disconnecting without retransmitting all the data that\n * matches the target. The resume token essentially identifies a point in\n * time from which the server should resume sending results.\n */ , s) {\n void 0 === i && (i = K.min()), void 0 === o && (o = K.min()), void 0 === s && (s = J.EMPTY_BYTE_STRING), \n this.target = t, this.targetId = e, this.purpose = n, this.sequenceNumber = r, this.snapshotVersion = i, \n this.lastLimboFreeSnapshotVersion = o, this.resumeToken = s;\n }\n /** Creates a new target data instance with an updated sequence number. */ return t.prototype.withSequenceNumber = function(e) {\n return new t(this.target, this.targetId, this.purpose, e, this.snapshotVersion, this.lastLimboFreeSnapshotVersion, this.resumeToken);\n }, \n /**\n * Creates a new target data instance with an updated resume token and\n * snapshot version.\n */\n t.prototype.withResumeToken = function(e, n) {\n return new t(this.target, this.targetId, this.purpose, this.sequenceNumber, n, this.lastLimboFreeSnapshotVersion, e);\n }, \n /**\n * Creates a new target data instance with an updated last limbo free\n * snapshot version number.\n */\n t.prototype.withLastLimboFreeSnapshotVersion = function(e) {\n return new t(this.target, this.targetId, this.purpose, this.sequenceNumber, this.snapshotVersion, e, this.resumeToken);\n }, t;\n}(), Fr = function(t) {\n this.Lt = t;\n};\n\n/** The result of applying a mutation batch to the backend. */\n/** Decodes a remote document from storage locally to a Document. */ function Mr(t, e) {\n if (e.document) return On(t.Lt, e.document, !!e.hasCommittedMutations);\n if (e.noDocument) {\n var n = ct.fromSegments(e.noDocument.path), r = jr(e.noDocument.readTime), i = Nt.newNoDocument(n, r);\n return e.hasCommittedMutations ? i.setHasCommittedMutations() : i;\n }\n if (e.unknownDocument) {\n var o = ct.fromSegments(e.unknownDocument.path);\n r = jr(e.unknownDocument.version);\n return Nt.newUnknownDocument(o, r);\n }\n return O();\n}\n\n/** Encodes a document for storage locally. */ function Vr(t, e, n) {\n var r = qr(n), i = e.key.path.popLast().toArray();\n if (e.isFoundDocument()) {\n var o = function(t, e) {\n return {\n name: Dn(t, e.key),\n fields: e.data.value.mapValue.fields,\n updateTime: In(t, e.version.toTimestamp())\n };\n }(t.Lt, e), s = e.hasCommittedMutations;\n return new ar(\n /* unknownDocument= */ null, \n /* noDocument= */ null, o, s, r, i);\n }\n if (e.isNoDocument()) {\n var u = e.key.path.toArray(), a = Br(e.version);\n s = e.hasCommittedMutations;\n return new ar(\n /* unknownDocument= */ null, new sr(u, a), \n /* document= */ null, s, r, i);\n }\n if (e.isUnknownDocument()) {\n var c = e.key.path.toArray(), h = Br(e.version);\n return new ar(new ur(c, h), \n /* noDocument= */ null, \n /* document= */ null, \n /* hasCommittedMutations= */ !0, r, i);\n }\n return O();\n}\n\nfunction qr(t) {\n var e = t.toTimestamp();\n return [ e.seconds, e.nanoseconds ];\n}\n\nfunction Ur(t) {\n var e = new j(t[0], t[1]);\n return K.fromTimestamp(e);\n}\n\nfunction Br(t) {\n var e = t.toTimestamp();\n return new er(e.seconds, e.nanoseconds);\n}\n\nfunction jr(t) {\n var e = new j(t.seconds, t.nanoseconds);\n return K.fromTimestamp(e);\n}\n\n/** Encodes a batch of mutations into a DbMutationBatch for local storage. */\n/** Decodes a DbMutationBatch into a MutationBatch */ function Kr(t, e) {\n // Squash old transform mutations into existing patch or set mutations.\n // The replacement of representing `transforms` with `update_transforms`\n // on the SDK means that old `transform` mutations stored in IndexedDB need\n // to be updated to `update_transforms`.\n // TODO(b/174608374): Remove this code once we perform a schema migration.\n for (var n = (e.baseMutations || []).map((function(e) {\n return Fn(t.Lt, e);\n })), r = 0; r < e.mutations.length - 1; ++r) {\n var i = e.mutations[r];\n if (r + 1 < e.mutations.length && void 0 !== e.mutations[r + 1].transform) {\n var o = e.mutations[r + 1];\n i.updateTransforms = o.transform.fieldTransforms, e.mutations.splice(r + 1, 1), \n ++r;\n }\n }\n var s = e.mutations.map((function(e) {\n return Fn(t.Lt, e);\n })), u = j.fromMillis(e.localWriteTimeMs);\n return new Lr(e.batchId, u, n, s);\n}\n\n/** Decodes a DbTarget into TargetData */ function Gr(t) {\n var e, n, r = jr(t.readTime), i = void 0 !== t.lastLimboFreeSnapshotVersion ? jr(t.lastLimboFreeSnapshotVersion) : K.min();\n return void 0 !== t.query.documents ? (P(1 === (n = t.query).documents.length), \n e = ne(Yt(Cn(n.documents[0])))) : e = function(t) {\n return ne(qn(t));\n }(t.query), new Pr(e, t.targetId, 0 /* Listen */ , t.lastListenSequenceNumber, r, i, J.fromBase64String(t.resumeToken))\n /** Encodes TargetData into a DbTarget for storage locally. */;\n}\n\nfunction Qr(t, e) {\n var n, r = Br(e.snapshotVersion), i = Br(e.lastLimboFreeSnapshotVersion);\n n = xt(e.target) ? Mn(t.Lt, e.target) : Vn(t.Lt, e.target);\n // We can't store the resumeToken as a ByteString in IndexedDb, so we\n // convert it to a base64 string for storage.\n var o = e.resumeToken.toBase64();\n // lastListenSequenceNumber is always 0 until we do real GC.\n return new hr(e.targetId, kt(e.target), r, o, e.sequenceNumber, i, n);\n}\n\n/**\n * A helper function for figuring out what kind of query has been stored.\n */\n/**\n * Encodes a `BundledQuery` from bundle proto to a Query object.\n *\n * This reconstructs the original query used to build the bundle being loaded,\n * including features exists only in SDKs (for example: limit-to-last).\n */ function zr(t) {\n var e = qn({\n parent: t.parent,\n structuredQuery: t.structuredQuery\n });\n return \"LAST\" === t.limitType ? re(e, e.limit, \"L\" /* Last */) : e;\n}\n\n/** Encodes a NamedQuery proto object to a NamedQuery model object. */\n/**\n * @license\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */ var Wr = /** @class */ function() {\n function t() {}\n return t.prototype.getBundleMetadata = function(t, e) {\n return Hr(t).get(e).next((function(t) {\n if (t) return {\n id: (e = t).bundleId,\n createTime: jr(e.createTime),\n version: e.version\n };\n /** Encodes a DbBundle to a BundleMetadata object. */ var e;\n /** Encodes a BundleMetadata to a DbBundle. */ }));\n }, t.prototype.saveBundleMetadata = function(t, e) {\n return Hr(t).put({\n bundleId: (n = e).id,\n createTime: Br(En(n.createTime)),\n version: n.version\n });\n var n;\n /** Encodes a DbNamedQuery to a NamedQuery. */ }, t.prototype.getNamedQuery = function(t, e) {\n return Yr(t).get(e).next((function(t) {\n if (t) return {\n name: (e = t).name,\n query: zr(e.bundledQuery),\n readTime: jr(e.readTime)\n };\n var e;\n /** Encodes a NamedQuery from a bundle proto to a DbNamedQuery. */ }));\n }, t.prototype.saveNamedQuery = function(t, e) {\n return Yr(t).put(function(t) {\n return {\n name: t.name,\n readTime: Br(En(t.readTime)),\n bundledQuery: t.bundledQuery\n };\n }(e));\n }, t;\n}();\n\n/**\n * Helper to get a typed SimpleDbStore for the bundles object store.\n */ function Hr(t) {\n return Rr(t, yr.store);\n}\n\n/**\n * Helper to get a typed SimpleDbStore for the namedQueries object store.\n */ function Yr(t) {\n return Rr(t, vr.store);\n}\n\n/**\n * @license\n * Copyright 2019 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * An in-memory implementation of IndexManager.\n */ var $r = /** @class */ function() {\n function t() {\n this.Bt = new Xr;\n }\n return t.prototype.addToCollectionParentIndex = function(t, e) {\n return this.Bt.add(e), Ir.resolve();\n }, t.prototype.getCollectionParents = function(t, e) {\n return Ir.resolve(this.Bt.getEntries(e));\n }, t;\n}(), Xr = /** @class */ function() {\n function t() {\n this.index = {};\n }\n // Returns false if the entry already existed.\n return t.prototype.add = function(t) {\n var e = t.lastSegment(), n = t.popLast(), r = this.index[e] || new $e(H.comparator), i = !r.has(n);\n return this.index[e] = r.add(n), i;\n }, t.prototype.has = function(t) {\n var e = t.lastSegment(), n = t.popLast(), r = this.index[e];\n return r && r.has(n);\n }, t.prototype.getEntries = function(t) {\n return (this.index[t] || new $e(H.comparator)).toArray();\n }, t;\n}(), Jr = /** @class */ function() {\n function t() {\n /**\n * An in-memory copy of the index entries we've already written since the SDK\n * launched. Used to avoid re-writing the same entry repeatedly.\n *\n * This is *NOT* a complete cache of what's in persistence and so can never be used to\n * satisfy reads.\n */\n this.qt = new Xr;\n }\n /**\n * Adds a new entry to the collection parent index.\n *\n * Repeated calls for the same collectionPath should be avoided within a\n * transaction as IndexedDbIndexManager only caches writes once a transaction\n * has been committed.\n */ return t.prototype.addToCollectionParentIndex = function(t, e) {\n var n = this;\n if (!this.qt.has(e)) {\n var r = e.lastSegment(), i = e.popLast();\n t.addOnCommittedListener((function() {\n // Add the collection to the in memory cache only if the transaction was\n // successfully committed.\n n.qt.add(e);\n }));\n var o = {\n collectionId: r,\n parent: Xn(i)\n };\n return Zr(t).put(o);\n }\n return Ir.resolve();\n }, t.prototype.getCollectionParents = function(t, e) {\n var n = [], r = IDBKeyRange.bound([ e, \"\" ], [ B(e), \"\" ], \n /*lowerOpen=*/ !1, \n /*upperOpen=*/ !0);\n return Zr(t).Nt(r).next((function(t) {\n for (var r = 0, i = t; r < i.length; r++) {\n var o = i[r];\n // This collectionId guard shouldn't be necessary (and isn't as long\n // as we're running in a real browser), but there's a bug in\n // indexeddbshim that breaks our range in our tests running in node:\n // https://github.com/axemclion/IndexedDBShim/issues/334\n if (o.collectionId !== e) break;\n n.push(tr(o.parent));\n }\n return n;\n }));\n }, t;\n}();\n\n/**\n * Internal implementation of the collection-parent index exposed by MemoryIndexManager.\n * Also used for in-memory caching by IndexedDbIndexManager and initial index population\n * in indexeddb_schema.ts\n */\n/**\n * Helper to get a typed SimpleDbStore for the collectionParents\n * document store.\n */\nfunction Zr(t) {\n return Rr(t, dr.store);\n}\n\n/**\n * @license\n * Copyright 2018 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */ var ti = {\n didRun: !1,\n sequenceNumbersCollected: 0,\n targetsRemoved: 0,\n documentsRemoved: 0\n}, ei = /** @class */ function() {\n function t(\n // When we attempt to collect, we will only do so if the cache size is greater than this\n // threshold. Passing `COLLECTION_DISABLED` here will cause collection to always be skipped.\n t, \n // The percentage of sequence numbers that we will attempt to collect\n e, \n // A cap on the total number of sequence numbers that will be collected. This prevents\n // us from collecting a huge number of sequence numbers if the cache has grown very large.\n n) {\n this.cacheSizeCollectionThreshold = t, this.percentileToCollect = e, this.maximumSequenceNumbersToCollect = n;\n }\n return t.withCacheSize = function(e) {\n return new t(e, t.DEFAULT_COLLECTION_PERCENTILE, t.DEFAULT_MAX_SEQUENCE_NUMBERS_TO_COLLECT);\n }, t;\n}();\n\n/**\n * @license\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * Delete a mutation batch and the associated document mutations.\n * @returns A PersistencePromise of the document mutations that were removed.\n */\nfunction ni(t, e, n) {\n var r = t.store(ir.store), i = t.store(or.store), o = [], s = IDBKeyRange.only(n.batchId), u = 0, a = r.$t({\n range: s\n }, (function(t, e, n) {\n return u++, n.delete();\n }));\n o.push(a.next((function() {\n P(1 === u);\n })));\n for (var c = [], h = 0, f = n.mutations; h < f.length; h++) {\n var l = f[h], d = or.key(e, l.key.path, n.batchId);\n o.push(i.delete(d)), c.push(l.key);\n }\n return Ir.waitFor(o).next((function() {\n return c;\n }));\n}\n\n/**\n * Returns an approximate size for the given document.\n */ function ri(t) {\n if (!t) return 0;\n var e;\n if (t.document) e = t.document; else if (t.unknownDocument) e = t.unknownDocument; else {\n if (!t.noDocument) throw O();\n e = t.noDocument;\n }\n return JSON.stringify(e).length;\n}\n\n/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/** A mutation queue for a specific user, backed by IndexedDB. */ ei.DEFAULT_COLLECTION_PERCENTILE = 10, \nei.DEFAULT_MAX_SEQUENCE_NUMBERS_TO_COLLECT = 1e3, ei.DEFAULT = new ei(41943040, ei.DEFAULT_COLLECTION_PERCENTILE, ei.DEFAULT_MAX_SEQUENCE_NUMBERS_TO_COLLECT), \nei.DISABLED = new ei(-1, 0, 0);\n\nvar ii = /** @class */ function() {\n function t(\n /**\n * The normalized userId (e.g. null UID => \"\" userId) used to store /\n * retrieve mutations.\n */\n t, e, n, r) {\n this.userId = t, this.R = e, this.Ut = n, this.referenceDelegate = r, \n /**\n * Caches the document keys for pending mutation batches. If the mutation\n * has been removed from IndexedDb, the cached value may continue to\n * be used to retrieve the batch's document keys. To remove a cached value\n * locally, `removeCachedMutationKeys()` should be invoked either directly\n * or through `removeMutationBatches()`.\n *\n * With multi-tab, when the primary client acknowledges or rejects a mutation,\n * this cache is used by secondary clients to invalidate the local\n * view of the documents that were previously affected by the mutation.\n */\n // PORTING NOTE: Multi-tab only.\n this.Kt = {}\n /**\n * Creates a new mutation queue for the given user.\n * @param user - The user for which to create a mutation queue.\n * @param serializer - The serializer to use when persisting to IndexedDb.\n */;\n }\n return t.Qt = function(e, n, r, i) {\n // TODO(mcg): Figure out what constraints there are on userIDs\n // In particular, are there any reserved characters? are empty ids allowed?\n // For the moment store these together in the same mutations table assuming\n // that empty userIDs aren't allowed.\n return P(\"\" !== e.uid), new t(e.isAuthenticated() ? e.uid : \"\", n, r, i);\n }, t.prototype.checkEmpty = function(t) {\n var e = !0, n = IDBKeyRange.bound([ this.userId, Number.NEGATIVE_INFINITY ], [ this.userId, Number.POSITIVE_INFINITY ]);\n return si(t).$t({\n index: ir.userMutationsIndex,\n range: n\n }, (function(t, n, r) {\n e = !1, r.done();\n })).next((function() {\n return e;\n }));\n }, t.prototype.addMutationBatch = function(t, e, n, r) {\n var i = this, o = ui(t), s = si(t);\n // The IndexedDb implementation in Chrome (and Firefox) does not handle\n // compound indices that include auto-generated keys correctly. To ensure\n // that the index entry is added correctly in all browsers, we perform two\n // writes: The first write is used to retrieve the next auto-generated Batch\n // ID, and the second write populates the index and stores the actual\n // mutation batch.\n // See: https://bugs.chromium.org/p/chromium/issues/detail?id=701972\n // We write an empty object to obtain key\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return s.add({}).next((function(u) {\n P(\"number\" == typeof u);\n for (var a = new Lr(u, e, n, r), c = function(t, e, n) {\n var r = n.baseMutations.map((function(e) {\n return Pn(t.Lt, e);\n })), i = n.mutations.map((function(e) {\n return Pn(t.Lt, e);\n }));\n return new ir(e, n.batchId, n.localWriteTime.toMillis(), r, i);\n }(i.R, i.userId, a), h = [], f = new $e((function(t, e) {\n return q(t.canonicalString(), e.canonicalString());\n })), l = 0, d = r; l < d.length; l++) {\n var p = d[l], y = or.key(i.userId, p.key.path, u);\n f = f.add(p.key.path.popLast()), h.push(s.put(c)), h.push(o.put(y, or.PLACEHOLDER));\n }\n return f.forEach((function(e) {\n h.push(i.Ut.addToCollectionParentIndex(t, e));\n })), t.addOnCommittedListener((function() {\n i.Kt[u] = a.keys();\n })), Ir.waitFor(h).next((function() {\n return a;\n }));\n }));\n }, t.prototype.lookupMutationBatch = function(t, e) {\n var n = this;\n return si(t).get(e).next((function(t) {\n return t ? (P(t.userId === n.userId), Kr(n.R, t)) : null;\n }));\n }, \n /**\n * Returns the document keys for the mutation batch with the given batchId.\n * For primary clients, this method returns `null` after\n * `removeMutationBatches()` has been called. Secondary clients return a\n * cached result until `removeCachedMutationKeys()` is invoked.\n */\n // PORTING NOTE: Multi-tab only.\n t.prototype.jt = function(t, e) {\n var n = this;\n return this.Kt[e] ? Ir.resolve(this.Kt[e]) : this.lookupMutationBatch(t, e).next((function(t) {\n if (t) {\n var r = t.keys();\n return n.Kt[e] = r, r;\n }\n return null;\n }));\n }, t.prototype.getNextMutationBatchAfterBatchId = function(t, e) {\n var n = this, r = e + 1, i = IDBKeyRange.lowerBound([ this.userId, r ]), o = null;\n return si(t).$t({\n index: ir.userMutationsIndex,\n range: i\n }, (function(t, e, i) {\n e.userId === n.userId && (P(e.batchId >= r), o = Kr(n.R, e)), i.done();\n })).next((function() {\n return o;\n }));\n }, t.prototype.getHighestUnacknowledgedBatchId = function(t) {\n var e = IDBKeyRange.upperBound([ this.userId, Number.POSITIVE_INFINITY ]), n = -1;\n return si(t).$t({\n index: ir.userMutationsIndex,\n range: e,\n reverse: !0\n }, (function(t, e, r) {\n n = e.batchId, r.done();\n })).next((function() {\n return n;\n }));\n }, t.prototype.getAllMutationBatches = function(t) {\n var e = this, n = IDBKeyRange.bound([ this.userId, -1 ], [ this.userId, Number.POSITIVE_INFINITY ]);\n return si(t).Nt(ir.userMutationsIndex, n).next((function(t) {\n return t.map((function(t) {\n return Kr(e.R, t);\n }));\n }));\n }, t.prototype.getAllMutationBatchesAffectingDocumentKey = function(t, e) {\n var n = this, r = or.prefixForPath(this.userId, e.path), i = IDBKeyRange.lowerBound(r), o = [];\n // Scan the document-mutation index starting with a prefix starting with\n // the given documentKey.\n return ui(t).$t({\n range: i\n }, (function(r, i, s) {\n var u = r[0], a = r[1], c = r[2], h = tr(a);\n // Only consider rows matching exactly the specific key of\n // interest. Note that because we order by path first, and we\n // order terminators before path separators, we'll encounter all\n // the index rows for documentKey contiguously. In particular, all\n // the rows for documentKey will occur before any rows for\n // documents nested in a subcollection beneath documentKey so we\n // can stop as soon as we hit any such row.\n if (u === n.userId && e.path.isEqual(h)) \n // Look up the mutation batch in the store.\n return si(t).get(c).next((function(t) {\n if (!t) throw O();\n P(t.userId === n.userId), o.push(Kr(n.R, t));\n }));\n s.done();\n })).next((function() {\n return o;\n }));\n }, t.prototype.getAllMutationBatchesAffectingDocumentKeys = function(t, e) {\n var n = this, r = new $e(q), i = [];\n return e.forEach((function(e) {\n var o = or.prefixForPath(n.userId, e.path), s = IDBKeyRange.lowerBound(o), u = ui(t).$t({\n range: s\n }, (function(t, i, o) {\n var s = t[0], u = t[1], a = t[2], c = tr(u);\n // Only consider rows matching exactly the specific key of\n // interest. Note that because we order by path first, and we\n // order terminators before path separators, we'll encounter all\n // the index rows for documentKey contiguously. In particular, all\n // the rows for documentKey will occur before any rows for\n // documents nested in a subcollection beneath documentKey so we\n // can stop as soon as we hit any such row.\n s === n.userId && e.path.isEqual(c) ? r = r.add(a) : o.done();\n }));\n i.push(u);\n })), Ir.waitFor(i).next((function() {\n return n.Wt(t, r);\n }));\n }, t.prototype.getAllMutationBatchesAffectingQuery = function(t, e) {\n var n = this, r = e.path, i = r.length + 1, o = or.prefixForPath(this.userId, r), s = IDBKeyRange.lowerBound(o), u = new $e(q);\n return ui(t).$t({\n range: s\n }, (function(t, e, o) {\n var s = t[0], a = t[1], c = t[2], h = tr(a);\n s === n.userId && r.isPrefixOf(h) ? \n // Rows with document keys more than one segment longer than the\n // query path can't be matches. For example, a query on 'rooms'\n // can't match the document /rooms/abc/messages/xyx.\n // TODO(mcg): we'll need a different scanner when we implement\n // ancestor queries.\n h.length === i && (u = u.add(c)) : o.done();\n })).next((function() {\n return n.Wt(t, u);\n }));\n }, t.prototype.Wt = function(t, e) {\n var n = this, r = [], i = [];\n // TODO(rockwood): Implement this using iterate.\n return e.forEach((function(e) {\n i.push(si(t).get(e).next((function(t) {\n if (null === t) throw O();\n P(t.userId === n.userId), r.push(Kr(n.R, t));\n })));\n })), Ir.waitFor(i).next((function() {\n return r;\n }));\n }, t.prototype.removeMutationBatch = function(t, e) {\n var n = this;\n return ni(t.Mt, this.userId, e).next((function(r) {\n return t.addOnCommittedListener((function() {\n n.Gt(e.batchId);\n })), Ir.forEach(r, (function(e) {\n return n.referenceDelegate.markPotentiallyOrphaned(t, e);\n }));\n }));\n }, \n /**\n * Clears the cached keys for a mutation batch. This method should be\n * called by secondary clients after they process mutation updates.\n *\n * Note that this method does not have to be called from primary clients as\n * the corresponding cache entries are cleared when an acknowledged or\n * rejected batch is removed from the mutation queue.\n */\n // PORTING NOTE: Multi-tab only\n t.prototype.Gt = function(t) {\n delete this.Kt[t];\n }, t.prototype.performConsistencyCheck = function(t) {\n var e = this;\n return this.checkEmpty(t).next((function(n) {\n if (!n) return Ir.resolve();\n // Verify that there are no entries in the documentMutations index if\n // the queue is empty.\n var r = IDBKeyRange.lowerBound(or.prefixForUser(e.userId)), i = [];\n return ui(t).$t({\n range: r\n }, (function(t, n, r) {\n if (t[0] === e.userId) {\n var o = tr(t[1]);\n i.push(o);\n } else r.done();\n })).next((function() {\n P(0 === i.length);\n }));\n }));\n }, t.prototype.containsKey = function(t, e) {\n return oi(t, this.userId, e);\n }, \n // PORTING NOTE: Multi-tab only (state is held in memory in other clients).\n /** Returns the mutation queue's metadata from IndexedDb. */\n t.prototype.zt = function(t) {\n var e = this;\n return ai(t).get(this.userId).next((function(t) {\n return t || new rr(e.userId, -1, \n /*lastStreamToken=*/ \"\");\n }));\n }, t;\n}();\n\n/**\n * @returns true if the mutation queue for the given user contains a pending\n * mutation for the given key.\n */ function oi(t, e, n) {\n var r = or.prefixForPath(e, n.path), i = r[1], o = IDBKeyRange.lowerBound(r), s = !1;\n return ui(t).$t({\n range: o,\n Ft: !0\n }, (function(t, n, r) {\n var o = t[0], u = t[1];\n /*batchID*/ t[2], o === e && u === i && (s = !0), \n r.done();\n })).next((function() {\n return s;\n }));\n}\n\n/** Returns true if any mutation queue contains the given document. */\n/**\n * Helper to get a typed SimpleDbStore for the mutations object store.\n */ function si(t) {\n return Rr(t, ir.store);\n}\n\n/**\n * Helper to get a typed SimpleDbStore for the mutationQueues object store.\n */ function ui(t) {\n return Rr(t, or.store);\n}\n\n/**\n * Helper to get a typed SimpleDbStore for the mutationQueues object store.\n */ function ai(t) {\n return Rr(t, rr.store);\n}\n\n/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/** Offset to ensure non-overlapping target ids. */\n/**\n * Generates monotonically increasing target IDs for sending targets to the\n * watch stream.\n *\n * The client constructs two generators, one for the target cache, and one for\n * for the sync engine (to generate limbo documents targets). These\n * generators produce non-overlapping IDs (by using even and odd IDs\n * respectively).\n *\n * By separating the target ID space, the query cache can generate target IDs\n * that persist across client restarts, while sync engine can independently\n * generate in-memory target IDs that are transient and can be reused after a\n * restart.\n */ var ci = /** @class */ function() {\n function t(t) {\n this.Ht = t;\n }\n return t.prototype.next = function() {\n return this.Ht += 2, this.Ht;\n }, t.Jt = function() {\n // The target cache generator must return '2' in its first call to `next()`\n // as there is no differentiation in the protocol layer between an unset\n // number and the number '0'. If we were to sent a target with target ID\n // '0', the backend would consider it unset and replace it with its own ID.\n return new t(0);\n }, t.Yt = function() {\n // Sync engine assigns target IDs for limbo document detection.\n return new t(-1);\n }, t;\n}(), hi = /** @class */ function() {\n function t(t, e) {\n this.referenceDelegate = t, this.R = e;\n }\n // PORTING NOTE: We don't cache global metadata for the target cache, since\n // some of it (in particular `highestTargetId`) can be modified by secondary\n // tabs. We could perhaps be more granular (and e.g. still cache\n // `lastRemoteSnapshotVersion` in memory) but for simplicity we currently go\n // to IndexedDb whenever we need to read metadata. We can revisit if it turns\n // out to have a meaningful performance impact.\n return t.prototype.allocateTargetId = function(t) {\n var e = this;\n return this.Xt(t).next((function(n) {\n var r = new ci(n.highestTargetId);\n return n.highestTargetId = r.next(), e.Zt(t, n).next((function() {\n return n.highestTargetId;\n }));\n }));\n }, t.prototype.getLastRemoteSnapshotVersion = function(t) {\n return this.Xt(t).next((function(t) {\n return K.fromTimestamp(new j(t.lastRemoteSnapshotVersion.seconds, t.lastRemoteSnapshotVersion.nanoseconds));\n }));\n }, t.prototype.getHighestSequenceNumber = function(t) {\n return this.Xt(t).next((function(t) {\n return t.highestListenSequenceNumber;\n }));\n }, t.prototype.setTargetsMetadata = function(t, e, n) {\n var r = this;\n return this.Xt(t).next((function(i) {\n return i.highestListenSequenceNumber = e, n && (i.lastRemoteSnapshotVersion = n.toTimestamp()), \n e > i.highestListenSequenceNumber && (i.highestListenSequenceNumber = e), r.Zt(t, i);\n }));\n }, t.prototype.addTargetData = function(t, e) {\n var n = this;\n return this.te(t, e).next((function() {\n return n.Xt(t).next((function(r) {\n return r.targetCount += 1, n.ee(e, r), n.Zt(t, r);\n }));\n }));\n }, t.prototype.updateTargetData = function(t, e) {\n return this.te(t, e);\n }, t.prototype.removeTargetData = function(t, e) {\n var n = this;\n return this.removeMatchingKeysForTargetId(t, e.targetId).next((function() {\n return fi(t).delete(e.targetId);\n })).next((function() {\n return n.Xt(t);\n })).next((function(e) {\n return P(e.targetCount > 0), e.targetCount -= 1, n.Zt(t, e);\n }));\n }, \n /**\n * Drops any targets with sequence number less than or equal to the upper bound, excepting those\n * present in `activeTargetIds`. Document associations for the removed targets are also removed.\n * Returns the number of targets removed.\n */\n t.prototype.removeTargets = function(t, e, n) {\n var r = this, i = 0, o = [];\n return fi(t).$t((function(s, u) {\n var a = Gr(u);\n a.sequenceNumber <= e && null === n.get(a.targetId) && (i++, o.push(r.removeTargetData(t, a)));\n })).next((function() {\n return Ir.waitFor(o);\n })).next((function() {\n return i;\n }));\n }, \n /**\n * Call provided function with each `TargetData` that we have cached.\n */\n t.prototype.forEachTarget = function(t, e) {\n return fi(t).$t((function(t, n) {\n var r = Gr(n);\n e(r);\n }));\n }, t.prototype.Xt = function(t) {\n return li(t).get(lr.key).next((function(t) {\n return P(null !== t), t;\n }));\n }, t.prototype.Zt = function(t, e) {\n return li(t).put(lr.key, e);\n }, t.prototype.te = function(t, e) {\n return fi(t).put(Qr(this.R, e));\n }, \n /**\n * In-place updates the provided metadata to account for values in the given\n * TargetData. Saving is done separately. Returns true if there were any\n * changes to the metadata.\n */\n t.prototype.ee = function(t, e) {\n var n = !1;\n return t.targetId > e.highestTargetId && (e.highestTargetId = t.targetId, n = !0), \n t.sequenceNumber > e.highestListenSequenceNumber && (e.highestListenSequenceNumber = t.sequenceNumber, \n n = !0), n;\n }, t.prototype.getTargetCount = function(t) {\n return this.Xt(t).next((function(t) {\n return t.targetCount;\n }));\n }, t.prototype.getTargetData = function(t, e) {\n // Iterating by the canonicalId may yield more than one result because\n // canonicalId values are not required to be unique per target. This query\n // depends on the queryTargets index to be efficient.\n var n = kt(e), r = IDBKeyRange.bound([ n, Number.NEGATIVE_INFINITY ], [ n, Number.POSITIVE_INFINITY ]), i = null;\n return fi(t).$t({\n range: r,\n index: hr.queryTargetsIndexName\n }, (function(t, n, r) {\n var o = Gr(n);\n // After finding a potential match, check that the target is\n // actually equal to the requested target.\n Ct(e, o.target) && (i = o, r.done());\n })).next((function() {\n return i;\n }));\n }, t.prototype.addMatchingKeys = function(t, e, n) {\n var r = this, i = [], o = di(t);\n // PORTING NOTE: The reverse index (documentsTargets) is maintained by\n // IndexedDb.\n return e.forEach((function(e) {\n var s = Xn(e.path);\n i.push(o.put(new fr(n, s))), i.push(r.referenceDelegate.addReference(t, n, e));\n })), Ir.waitFor(i);\n }, t.prototype.removeMatchingKeys = function(t, e, n) {\n var r = this, i = di(t);\n // PORTING NOTE: The reverse index (documentsTargets) is maintained by\n // IndexedDb.\n return Ir.forEach(e, (function(e) {\n var o = Xn(e.path);\n return Ir.waitFor([ i.delete([ n, o ]), r.referenceDelegate.removeReference(t, n, e) ]);\n }));\n }, t.prototype.removeMatchingKeysForTargetId = function(t, e) {\n var n = di(t), r = IDBKeyRange.bound([ e ], [ e + 1 ], \n /*lowerOpen=*/ !1, \n /*upperOpen=*/ !0);\n return n.delete(r);\n }, t.prototype.getMatchingKeysForTargetId = function(t, e) {\n var n = IDBKeyRange.bound([ e ], [ e + 1 ], \n /*lowerOpen=*/ !1, \n /*upperOpen=*/ !0), r = di(t), i = sn();\n return r.$t({\n range: n,\n Ft: !0\n }, (function(t, e, n) {\n var r = tr(t[1]), o = new ct(r);\n i = i.add(o);\n })).next((function() {\n return i;\n }));\n }, t.prototype.containsKey = function(t, e) {\n var n = Xn(e.path), r = IDBKeyRange.bound([ n ], [ B(n) ], \n /*lowerOpen=*/ !1, \n /*upperOpen=*/ !0), i = 0;\n return di(t).$t({\n index: fr.documentTargetsIndex,\n Ft: !0,\n range: r\n }, (function(t, e, n) {\n var r = t[0];\n t[1], \n // Having a sentinel row for a document does not count as containing that document;\n // For the target cache, containing the document means the document is part of some\n // target.\n 0 !== r && (i++, n.done());\n })).next((function() {\n return i > 0;\n }));\n }, \n /**\n * Looks up a TargetData entry by target ID.\n *\n * @param targetId - The target ID of the TargetData entry to look up.\n * @returns The cached TargetData entry, or null if the cache has no entry for\n * the target.\n */\n // PORTING NOTE: Multi-tab only.\n t.prototype.lt = function(t, e) {\n return fi(t).get(e).next((function(t) {\n return t ? Gr(t) : null;\n }));\n }, t;\n}();\n\n/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * Helper to get a typed SimpleDbStore for the queries object store.\n */\nfunction fi(t) {\n return Rr(t, hr.store);\n}\n\n/**\n * Helper to get a typed SimpleDbStore for the target globals object store.\n */ function li(t) {\n return Rr(t, lr.store);\n}\n\n/**\n * Helper to get a typed SimpleDbStore for the document target object store.\n */ function di(t) {\n return Rr(t, fr.store);\n}\n\n/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * Verifies the error thrown by a LocalStore operation. If a LocalStore\n * operation fails because the primary lease has been taken by another client,\n * we ignore the error (the persistence layer will immediately call\n * `applyPrimaryLease` to propagate the primary state change). All other errors\n * are re-thrown.\n *\n * @param err - An error returned by a LocalStore operation.\n * @returns A Promise that resolves after we recovered, or the original error.\n */ function pi(t) {\n return n(this, void 0, void 0, (function() {\n return r(this, (function(e) {\n if (t.code !== N.FAILED_PRECONDITION || t.message !== gr) throw t;\n return C(\"LocalStore\", \"Unexpectedly lost primary lease\"), [ 2 /*return*/ ];\n }));\n }));\n}\n\n/**\n * @license\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */ function yi(t, e) {\n var n = t[0], r = t[1], i = e[0], o = e[1], s = q(n, i);\n return 0 === s ? q(r, o) : s;\n}\n\n/**\n * Used to calculate the nth sequence number. Keeps a rolling buffer of the\n * lowest n values passed to `addElement`, and finally reports the largest of\n * them in `maxValue`.\n */ var vi = /** @class */ function() {\n function t(t) {\n this.ne = t, this.buffer = new $e(yi), this.se = 0;\n }\n return t.prototype.ie = function() {\n return ++this.se;\n }, t.prototype.re = function(t) {\n var e = [ t, this.ie() ];\n if (this.buffer.size < this.ne) this.buffer = this.buffer.add(e); else {\n var n = this.buffer.last();\n yi(e, n) < 0 && (this.buffer = this.buffer.delete(n).add(e));\n }\n }, Object.defineProperty(t.prototype, \"maxValue\", {\n get: function() {\n // Guaranteed to be non-empty. If we decide we are not collecting any\n // sequence numbers, nthSequenceNumber below short-circuits. If we have\n // decided that we are collecting n sequence numbers, it's because n is some\n // percentage of the existing sequence numbers. That means we should never\n // be in a situation where we are collecting sequence numbers but don't\n // actually have any.\n return this.buffer.last()[0];\n },\n enumerable: !1,\n configurable: !0\n }), t;\n}(), mi = /** @class */ function() {\n function t(t, e) {\n this.garbageCollector = t, this.asyncQueue = e, this.oe = !1, this.ce = null;\n }\n return t.prototype.start = function(t) {\n -1 !== this.garbageCollector.params.cacheSizeCollectionThreshold && this.ue(t);\n }, t.prototype.stop = function() {\n this.ce && (this.ce.cancel(), this.ce = null);\n }, Object.defineProperty(t.prototype, \"started\", {\n get: function() {\n return null !== this.ce;\n },\n enumerable: !1,\n configurable: !0\n }), t.prototype.ue = function(t) {\n var e = this, i = this.oe ? 3e5 : 6e4;\n C(\"LruGarbageCollector\", \"Garbage collection scheduled in \" + i + \"ms\"), this.ce = this.asyncQueue.enqueueAfterDelay(\"lru_garbage_collection\" /* LruGarbageCollection */ , i, (function() {\n return n(e, void 0, void 0, (function() {\n var e;\n return r(this, (function(n) {\n switch (n.label) {\n case 0:\n this.ce = null, this.oe = !0, n.label = 1;\n\n case 1:\n return n.trys.push([ 1, 3, , 7 ]), [ 4 /*yield*/ , t.collectGarbage(this.garbageCollector) ];\n\n case 2:\n return n.sent(), [ 3 /*break*/ , 7 ];\n\n case 3:\n return Nr(e = n.sent()) ? (C(\"LruGarbageCollector\", \"Ignoring IndexedDB error during garbage collection: \", e), \n [ 3 /*break*/ , 6 ]) : [ 3 /*break*/ , 4 ];\n\n case 4:\n return [ 4 /*yield*/ , pi(e) ];\n\n case 5:\n n.sent(), n.label = 6;\n\n case 6:\n return [ 3 /*break*/ , 7 ];\n\n case 7:\n return [ 4 /*yield*/ , this.ue(t) ];\n\n case 8:\n return n.sent(), [ 2 /*return*/ ];\n }\n }));\n }));\n }));\n }, t;\n}(), gi = /** @class */ function() {\n function t(t, e) {\n this.ae = t, this.params = e;\n }\n return t.prototype.calculateTargetCount = function(t, e) {\n return this.ae.he(t).next((function(t) {\n return Math.floor(e / 100 * t);\n }));\n }, t.prototype.nthSequenceNumber = function(t, e) {\n var n = this;\n if (0 === e) return Ir.resolve(S.o);\n var r = new vi(e);\n return this.ae.forEachTarget(t, (function(t) {\n return r.re(t.sequenceNumber);\n })).next((function() {\n return n.ae.le(t, (function(t) {\n return r.re(t);\n }));\n })).next((function() {\n return r.maxValue;\n }));\n }, t.prototype.removeTargets = function(t, e, n) {\n return this.ae.removeTargets(t, e, n);\n }, t.prototype.removeOrphanedDocuments = function(t, e) {\n return this.ae.removeOrphanedDocuments(t, e);\n }, t.prototype.collect = function(t, e) {\n var n = this;\n return -1 === this.params.cacheSizeCollectionThreshold ? (C(\"LruGarbageCollector\", \"Garbage collection skipped; disabled\"), \n Ir.resolve(ti)) : this.getCacheSize(t).next((function(r) {\n return r < n.params.cacheSizeCollectionThreshold ? (C(\"LruGarbageCollector\", \"Garbage collection skipped; Cache size \" + r + \" is lower than threshold \" + n.params.cacheSizeCollectionThreshold), \n ti) : n.fe(t, e);\n }));\n }, t.prototype.getCacheSize = function(t) {\n return this.ae.getCacheSize(t);\n }, t.prototype.fe = function(t, e) {\n var n, r, i, o, s, u, a, c = this, h = Date.now();\n return this.calculateTargetCount(t, this.params.percentileToCollect).next((function(e) {\n // Cap at the configured max\n return e > c.params.maximumSequenceNumbersToCollect ? (C(\"LruGarbageCollector\", \"Capping sequence numbers to collect down to the maximum of \" + c.params.maximumSequenceNumbersToCollect + \" from \" + e), \n r = c.params.maximumSequenceNumbersToCollect) : r = e, o = Date.now(), c.nthSequenceNumber(t, r);\n })).next((function(r) {\n return n = r, s = Date.now(), c.removeTargets(t, n, e);\n })).next((function(e) {\n return i = e, u = Date.now(), c.removeOrphanedDocuments(t, n);\n })).next((function(t) {\n return a = Date.now(), k() <= y.DEBUG && C(\"LruGarbageCollector\", \"LRU Garbage Collection\\n\\tCounted targets in \" + (o - h) + \"ms\\n\\tDetermined least recently used \" + r + \" in \" + (s - o) + \"ms\\n\\tRemoved \" + i + \" targets in \" + (u - s) + \"ms\\n\\tRemoved \" + t + \" documents in \" + (a - u) + \"ms\\nTotal Duration: \" + (a - h) + \"ms\"), \n Ir.resolve({\n didRun: !0,\n sequenceNumbersCollected: r,\n targetsRemoved: i,\n documentsRemoved: t\n });\n }));\n }, t;\n}(), wi = /** @class */ function() {\n function t(t, e) {\n this.db = t, this.garbageCollector = function(t, e) {\n return new gi(t, e);\n }(this, e);\n }\n return t.prototype.he = function(t) {\n var e = this.de(t);\n return this.db.getTargetCache().getTargetCount(t).next((function(t) {\n return e.next((function(e) {\n return t + e;\n }));\n }));\n }, t.prototype.de = function(t) {\n var e = 0;\n return this.le(t, (function(t) {\n e++;\n })).next((function() {\n return e;\n }));\n }, t.prototype.forEachTarget = function(t, e) {\n return this.db.getTargetCache().forEachTarget(t, e);\n }, t.prototype.le = function(t, e) {\n return this.we(t, (function(t, n) {\n return e(n);\n }));\n }, t.prototype.addReference = function(t, e, n) {\n return bi(t, n);\n }, t.prototype.removeReference = function(t, e, n) {\n return bi(t, n);\n }, t.prototype.removeTargets = function(t, e, n) {\n return this.db.getTargetCache().removeTargets(t, e, n);\n }, t.prototype.markPotentiallyOrphaned = function(t, e) {\n return bi(t, e);\n }, \n /**\n * Returns true if anything would prevent this document from being garbage\n * collected, given that the document in question is not present in any\n * targets and has a sequence number less than or equal to the upper bound for\n * the collection run.\n */\n t.prototype._e = function(t, e) {\n return function(t, e) {\n var n = !1;\n return ai(t).Ot((function(r) {\n return oi(t, r, e).next((function(t) {\n return t && (n = !0), Ir.resolve(!t);\n }));\n })).next((function() {\n return n;\n }));\n }(t, e);\n }, t.prototype.removeOrphanedDocuments = function(t, e) {\n var n = this, r = this.db.getRemoteDocumentCache().newChangeBuffer(), i = [], o = 0;\n return this.we(t, (function(s, u) {\n if (u <= e) {\n var a = n._e(t, s).next((function(e) {\n if (!e) \n // Our size accounting requires us to read all documents before\n // removing them.\n return o++, r.getEntry(t, s).next((function() {\n return r.removeEntry(s), di(t).delete([ 0, Xn(s.path) ]);\n }));\n }));\n i.push(a);\n }\n })).next((function() {\n return Ir.waitFor(i);\n })).next((function() {\n return r.apply(t);\n })).next((function() {\n return o;\n }));\n }, t.prototype.removeTarget = function(t, e) {\n var n = e.withSequenceNumber(t.currentSequenceNumber);\n return this.db.getTargetCache().updateTargetData(t, n);\n }, t.prototype.updateLimboDocument = function(t, e) {\n return bi(t, e);\n }, \n /**\n * Call provided function for each document in the cache that is 'orphaned'. Orphaned\n * means not a part of any target, so the only entry in the target-document index for\n * that document will be the sentinel row (targetId 0), which will also have the sequence\n * number for the last time the document was accessed.\n */\n t.prototype.we = function(t, e) {\n var n, r = di(t), i = S.o;\n return r.$t({\n index: fr.documentTargetsIndex\n }, (function(t, r) {\n var o = t[0];\n t[1];\n var s = r.path, u = r.sequenceNumber;\n 0 === o ? (\n // if nextToReport is valid, report it, this is a new key so the\n // last one must not be a member of any targets.\n i !== S.o && e(new ct(tr(n)), i), \n // set nextToReport to be this sequence number. It's the next one we\n // might report, if we don't find any targets for this document.\n // Note that the sequence number must be defined when the targetId\n // is 0.\n i = u, n = s) : \n // set nextToReport to be invalid, we know we don't need to report\n // this one since we found a target for it.\n i = S.o;\n })).next((function() {\n // Since we report sequence numbers after getting to the next key, we\n // need to check if the last key we iterated over was an orphaned\n // document and report it.\n i !== S.o && e(new ct(tr(n)), i);\n }));\n }, t.prototype.getCacheSize = function(t) {\n return this.db.getRemoteDocumentCache().getSize(t);\n }, t;\n}();\n\n/**\n * This class is responsible for the scheduling of LRU garbage collection. It handles checking\n * whether or not GC is enabled, as well as which delay to use before the next run.\n */ function bi(t, e) {\n return di(t).put(\n /**\n * @returns A value suitable for writing a sentinel row in the target-document\n * store.\n */\n function(t, e) {\n return new fr(0, Xn(t.path), e);\n }(e, t.currentSequenceNumber));\n}\n\n/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * A map implementation that uses objects as keys. Objects must have an\n * associated equals function and must be immutable. Entries in the map are\n * stored together with the key being produced from the mapKeyFn. This map\n * automatically handles collisions of keys.\n */ var Ii = /** @class */ function() {\n function t(t, e) {\n this.mapKeyFn = t, this.equalsFn = e, \n /**\n * The inner map for a key/value pair. Due to the possibility of collisions we\n * keep a list of entries that we do a linear search through to find an actual\n * match. Note that collisions should be rare, so we still expect near\n * constant time lookups in practice.\n */\n this.inner = {}\n /** Get a value for this key, or undefined if it does not exist. */;\n }\n return t.prototype.get = function(t) {\n var e = this.mapKeyFn(t), n = this.inner[e];\n if (void 0 !== n) for (var r = 0, i = n; r < i.length; r++) {\n var o = i[r], s = o[0], u = o[1];\n if (this.equalsFn(s, t)) return u;\n }\n }, t.prototype.has = function(t) {\n return void 0 !== this.get(t);\n }, \n /** Put this key and value in the map. */ t.prototype.set = function(t, e) {\n var n = this.mapKeyFn(t), r = this.inner[n];\n if (void 0 !== r) {\n for (var i = 0; i < r.length; i++) if (this.equalsFn(r[i][0], t)) return void (r[i] = [ t, e ]);\n r.push([ t, e ]);\n } else this.inner[n] = [ [ t, e ] ];\n }, \n /**\n * Remove this key from the map. Returns a boolean if anything was deleted.\n */\n t.prototype.delete = function(t) {\n var e = this.mapKeyFn(t), n = this.inner[e];\n if (void 0 === n) return !1;\n for (var r = 0; r < n.length; r++) if (this.equalsFn(n[r][0], t)) return 1 === n.length ? delete this.inner[e] : n.splice(r, 1), \n !0;\n return !1;\n }, t.prototype.forEach = function(t) {\n Q(this.inner, (function(e, n) {\n for (var r = 0, i = n; r < i.length; r++) {\n var o = i[r], s = o[0], u = o[1];\n t(s, u);\n }\n }));\n }, t.prototype.isEmpty = function() {\n return z(this.inner);\n }, t;\n}(), Ti = /** @class */ function() {\n function t() {\n // A mapping of document key to the new cache entry that should be written (or null if any\n // existing cache entry should be removed).\n this.changes = new Ii((function(t) {\n return t.toString();\n }), (function(t, e) {\n return t.isEqual(e);\n })), this.changesApplied = !1;\n }\n return t.prototype.getReadTime = function(t) {\n var e = this.changes.get(t);\n return e ? e.readTime : K.min();\n }, \n /**\n * Buffers a `RemoteDocumentCache.addEntry()` call.\n *\n * You can only modify documents that have already been retrieved via\n * `getEntry()/getEntries()` (enforced via IndexedDbs `apply()`).\n */\n t.prototype.addEntry = function(t, e) {\n this.assertNotApplied(), this.changes.set(t.key, {\n document: t,\n readTime: e\n });\n }, \n /**\n * Buffers a `RemoteDocumentCache.removeEntry()` call.\n *\n * You can only remove documents that have already been retrieved via\n * `getEntry()/getEntries()` (enforced via IndexedDbs `apply()`).\n */\n t.prototype.removeEntry = function(t, e) {\n void 0 === e && (e = null), this.assertNotApplied(), this.changes.set(t, {\n document: Nt.newInvalidDocument(t),\n readTime: e\n });\n }, \n /**\n * Looks up an entry in the cache. The buffered changes will first be checked,\n * and if no buffered change applies, this will forward to\n * `RemoteDocumentCache.getEntry()`.\n *\n * @param transaction - The transaction in which to perform any persistence\n * operations.\n * @param documentKey - The key of the entry to look up.\n * @returns The cached document or an invalid document if we have nothing\n * cached.\n */\n t.prototype.getEntry = function(t, e) {\n this.assertNotApplied();\n var n = this.changes.get(e);\n return void 0 !== n ? Ir.resolve(n.document) : this.getFromCache(t, e);\n }, \n /**\n * Looks up several entries in the cache, forwarding to\n * `RemoteDocumentCache.getEntry()`.\n *\n * @param transaction - The transaction in which to perform any persistence\n * operations.\n * @param documentKeys - The keys of the entries to look up.\n * @returns A map of cached documents, indexed by key. If an entry cannot be\n * found, the corresponding key will be mapped to an invalid document.\n */\n t.prototype.getEntries = function(t, e) {\n return this.getAllFromCache(t, e);\n }, \n /**\n * Applies buffered changes to the underlying RemoteDocumentCache, using\n * the provided transaction.\n */\n t.prototype.apply = function(t) {\n return this.assertNotApplied(), this.changesApplied = !0, this.applyChanges(t);\n }, \n /** Helper to assert this.changes is not null */ t.prototype.assertNotApplied = function() {}, \n t;\n}(), _i = /** @class */ function() {\n /**\n * @param serializer - The document serializer.\n * @param indexManager - The query indexes that need to be maintained.\n */\n function t(t, e) {\n this.R = t, this.Ut = e\n /**\n * Adds the supplied entries to the cache.\n *\n * All calls of `addEntry` are required to go through the RemoteDocumentChangeBuffer\n * returned by `newChangeBuffer()` to ensure proper accounting of metadata.\n */;\n }\n return t.prototype.addEntry = function(t, e, n) {\n return Ni(t).put(Di(e), n);\n }, \n /**\n * Removes a document from the cache.\n *\n * All calls of `removeEntry` are required to go through the RemoteDocumentChangeBuffer\n * returned by `newChangeBuffer()` to ensure proper accounting of metadata.\n */\n t.prototype.removeEntry = function(t, e) {\n var n = Ni(t), r = Di(e);\n return n.delete(r);\n }, \n /**\n * Updates the current cache size.\n *\n * Callers to `addEntry()` and `removeEntry()` *must* call this afterwards to update the\n * cache's metadata.\n */\n t.prototype.updateMetadata = function(t, e) {\n var n = this;\n return this.getMetadata(t).next((function(r) {\n return r.byteSize += e, n.me(t, r);\n }));\n }, t.prototype.getEntry = function(t, e) {\n var n = this;\n return Ni(t).get(Di(e)).next((function(t) {\n return n.ye(e, t);\n }));\n }, \n /**\n * Looks up an entry in the cache.\n *\n * @param documentKey - The key of the entry to look up.\n * @returns The cached document entry and its size.\n */\n t.prototype.ge = function(t, e) {\n var n = this;\n return Ni(t).get(Di(e)).next((function(t) {\n return {\n document: n.ye(e, t),\n size: ri(t)\n };\n }));\n }, t.prototype.getEntries = function(t, e) {\n var n = this, r = Ze();\n return this.pe(t, e, (function(t, e) {\n var i = n.ye(t, e);\n r = r.insert(t, i);\n })).next((function() {\n return r;\n }));\n }, \n /**\n * Looks up several entries in the cache.\n *\n * @param documentKeys - The set of keys entries to look up.\n * @returns A map of documents indexed by key and a map of sizes indexed by\n * key (zero if the document does not exist).\n */\n t.prototype.Ee = function(t, e) {\n var n = this, r = Ze(), i = new We(ct.comparator);\n return this.pe(t, e, (function(t, e) {\n var o = n.ye(t, e);\n r = r.insert(t, o), i = i.insert(t, ri(e));\n })).next((function() {\n return {\n documents: r,\n Te: i\n };\n }));\n }, t.prototype.pe = function(t, e, n) {\n if (e.isEmpty()) return Ir.resolve();\n var r = IDBKeyRange.bound(e.first().path.toArray(), e.last().path.toArray()), i = e.getIterator(), o = i.getNext();\n return Ni(t).$t({\n range: r\n }, (function(t, e, r) {\n // Go through keys not found in cache.\n for (var s = ct.fromSegments(t); o && ct.comparator(o, s) < 0; ) n(o, null), o = i.getNext();\n o && o.isEqual(s) && (\n // Key found in cache.\n n(o, e), o = i.hasNext() ? i.getNext() : null), \n // Skip to the next key (if there is one).\n o ? r.Ct(o.path.toArray()) : r.done();\n })).next((function() {\n // The rest of the keys are not in the cache. One case where `iterate`\n // above won't go through them is when the cache is empty.\n for (;o; ) n(o, null), o = i.hasNext() ? i.getNext() : null;\n }));\n }, t.prototype.getDocumentsMatchingQuery = function(t, e, n) {\n var r = this, i = Ze(), o = e.path.length + 1, s = {};\n if (n.isEqual(K.min())) {\n // Documents are ordered by key, so we can use a prefix scan to narrow\n // down the documents we need to match the query against.\n var u = e.path.toArray();\n s.range = IDBKeyRange.lowerBound(u);\n } else {\n // Execute an index-free query and filter by read time. This is safe\n // since all document changes to queries that have a\n // lastLimboFreeSnapshotVersion (`sinceReadTime`) have a read time set.\n var a = e.path.toArray(), c = qr(n);\n s.range = IDBKeyRange.lowerBound([ a, c ], \n /* open= */ !0), s.index = ar.collectionReadTimeIndex;\n }\n return Ni(t).$t(s, (function(t, n, s) {\n // The query is actually returning any path that starts with the query\n // path prefix which may include documents in subcollections. For\n // example, a query on 'rooms' will return rooms/abc/messages/xyx but we\n // shouldn't match it. Fix this by discarding rows with document keys\n // more than one segment longer than the query path.\n if (t.length === o) {\n var u = Mr(r.R, n);\n e.path.isPrefixOf(u.key.path) ? ue(e, u) && (i = i.insert(u.key, u)) : s.done();\n }\n })).next((function() {\n return i;\n }));\n }, t.prototype.newChangeBuffer = function(t) {\n return new Ei(this, !!t && t.trackRemovals);\n }, t.prototype.getSize = function(t) {\n return this.getMetadata(t).next((function(t) {\n return t.byteSize;\n }));\n }, t.prototype.getMetadata = function(t) {\n return Si(t).get(cr.key).next((function(t) {\n return P(!!t), t;\n }));\n }, t.prototype.me = function(t, e) {\n return Si(t).put(cr.key, e);\n }, \n /**\n * Decodes `remoteDoc` and returns the document (or null, if the document\n * corresponds to the format used for sentinel deletes).\n */\n t.prototype.ye = function(t, e) {\n if (e) {\n var n = Mr(this.R, e);\n // Whether the document is a sentinel removal and should only be used in the\n // `getNewDocumentChanges()`\n if (!n.isNoDocument() || !n.version.isEqual(K.min())) return n;\n }\n return Nt.newInvalidDocument(t);\n }, t;\n}(), Ei = /** @class */ function(e) {\n /**\n * @param documentCache - The IndexedDbRemoteDocumentCache to apply the changes to.\n * @param trackRemovals - Whether to create sentinel deletes that can be tracked by\n * `getNewDocumentChanges()`.\n */\n function n(t, n) {\n var r = this;\n return (r = e.call(this) || this).Ie = t, r.trackRemovals = n, \n // A map of document sizes prior to applying the changes in this buffer.\n r.Ae = new Ii((function(t) {\n return t.toString();\n }), (function(t, e) {\n return t.isEqual(e);\n })), r;\n }\n return t(n, e), n.prototype.applyChanges = function(t) {\n var e = this, n = [], r = 0, i = new $e((function(t, e) {\n return q(t.canonicalString(), e.canonicalString());\n }));\n return this.changes.forEach((function(o, s) {\n var u = e.Ae.get(o);\n if (s.document.isValidDocument()) {\n var a = Vr(e.Ie.R, s.document, e.getReadTime(o));\n i = i.add(o.path.popLast());\n var c = ri(a);\n r += c - u, n.push(e.Ie.addEntry(t, o, a));\n } else if (r -= u, e.trackRemovals) {\n // In order to track removals, we store a \"sentinel delete\" in the\n // RemoteDocumentCache. This entry is represented by a NoDocument\n // with a version of 0 and ignored by `maybeDecodeDocument()` but\n // preserved in `getNewDocumentChanges()`.\n var h = Vr(e.Ie.R, Nt.newNoDocument(o, K.min()), e.getReadTime(o));\n n.push(e.Ie.addEntry(t, o, h));\n } else n.push(e.Ie.removeEntry(t, o));\n })), i.forEach((function(r) {\n n.push(e.Ie.Ut.addToCollectionParentIndex(t, r));\n })), n.push(this.Ie.updateMetadata(t, r)), Ir.waitFor(n);\n }, n.prototype.getFromCache = function(t, e) {\n var n = this;\n // Record the size of everything we load from the cache so we can compute a delta later.\n return this.Ie.ge(t, e).next((function(t) {\n return n.Ae.set(e, t.size), t.document;\n }));\n }, n.prototype.getAllFromCache = function(t, e) {\n var n = this;\n // Record the size of everything we load from the cache so we can compute\n // a delta later.\n return this.Ie.Ee(t, e).next((function(t) {\n var e = t.documents;\n // Note: `getAllFromCache` returns two maps instead of a single map from\n // keys to `DocumentSizeEntry`s. This is to allow returning the\n // `MutableDocumentMap` directly, without a conversion.\n return t.Te.forEach((function(t, e) {\n n.Ae.set(t, e);\n })), e;\n }));\n }, n;\n}(Ti);\n\n/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * An in-memory buffer of entries to be written to a RemoteDocumentCache.\n * It can be used to batch up a set of changes to be written to the cache, but\n * additionally supports reading entries back with the `getEntry()` method,\n * falling back to the underlying RemoteDocumentCache if no entry is\n * buffered.\n *\n * Entries added to the cache *must* be read first. This is to facilitate\n * calculating the size delta of the pending changes.\n *\n * PORTING NOTE: This class was implemented then removed from other platforms.\n * If byte-counting ends up being needed on the other platforms, consider\n * porting this class as part of that implementation work.\n */ function Si(t) {\n return Rr(t, cr.store);\n}\n\n/**\n * Helper to get a typed SimpleDbStore for the remoteDocuments object store.\n */ function Ni(t) {\n return Rr(t, ar.store);\n}\n\nfunction Di(t) {\n return t.path.toArray();\n}\n\n/**\n * @license\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/** Performs database creation and schema upgrades. */ var Ai = /** @class */ function() {\n function t(t) {\n this.R = t;\n }\n /**\n * Performs database creation and schema upgrades.\n *\n * Note that in production, this method is only ever used to upgrade the schema\n * to SCHEMA_VERSION. Different values of toVersion are only used for testing\n * and local feature development.\n */ return t.prototype.Rt = function(t, e, n, r) {\n var i = this;\n P(n < r && n >= 0 && r <= 11);\n var o = new Tr(\"createOrUpgrade\", e);\n n < 1 && r >= 1 && (function(t) {\n t.createObjectStore(nr.store);\n }(t), function(t) {\n t.createObjectStore(rr.store, {\n keyPath: rr.keyPath\n }), t.createObjectStore(ir.store, {\n keyPath: ir.keyPath,\n autoIncrement: !0\n }).createIndex(ir.userMutationsIndex, ir.userMutationsKeyPath, {\n unique: !0\n }), t.createObjectStore(or.store);\n }(t), ki(t), function(t) {\n t.createObjectStore(ar.store);\n }(t));\n // Migration 2 to populate the targetGlobal object no longer needed since\n // migration 3 unconditionally clears it.\n var s = Ir.resolve();\n return n < 3 && r >= 3 && (\n // Brand new clients don't need to drop and recreate--only clients that\n // potentially have corrupt data.\n 0 !== n && (function(t) {\n t.deleteObjectStore(fr.store), t.deleteObjectStore(hr.store), t.deleteObjectStore(lr.store);\n }(t), ki(t)), s = s.next((function() {\n /**\n * Creates the target global singleton row.\n *\n * @param txn - The version upgrade transaction for indexeddb\n */\n return function(t) {\n var e = t.store(lr.store), n = new lr(\n /*highestTargetId=*/ 0, \n /*lastListenSequenceNumber=*/ 0, K.min().toTimestamp(), \n /*targetCount=*/ 0);\n return e.put(lr.key, n);\n }(o);\n }))), n < 4 && r >= 4 && (0 !== n && (\n // Schema version 3 uses auto-generated keys to generate globally unique\n // mutation batch IDs (this was previously ensured internally by the\n // client). To migrate to the new schema, we have to read all mutations\n // and write them back out. We preserve the existing batch IDs to guarantee\n // consistency with other object stores. Any further mutation batch IDs will\n // be auto-generated.\n s = s.next((function() {\n return function(t, e) {\n return e.store(ir.store).Nt().next((function(n) {\n t.deleteObjectStore(ir.store), t.createObjectStore(ir.store, {\n keyPath: ir.keyPath,\n autoIncrement: !0\n }).createIndex(ir.userMutationsIndex, ir.userMutationsKeyPath, {\n unique: !0\n });\n var r = e.store(ir.store), i = n.map((function(t) {\n return r.put(t);\n }));\n return Ir.waitFor(i);\n }));\n }(t, o);\n }))), s = s.next((function() {\n !function(t) {\n t.createObjectStore(pr.store, {\n keyPath: pr.keyPath\n });\n }(t);\n }))), n < 5 && r >= 5 && (s = s.next((function() {\n return i.Re(o);\n }))), n < 6 && r >= 6 && (s = s.next((function() {\n return function(t) {\n t.createObjectStore(cr.store);\n }(t), i.be(o);\n }))), n < 7 && r >= 7 && (s = s.next((function() {\n return i.ve(o);\n }))), n < 8 && r >= 8 && (s = s.next((function() {\n return i.Pe(t, o);\n }))), n < 9 && r >= 9 && (s = s.next((function() {\n // Multi-Tab used to manage its own changelog, but this has been moved\n // to the DbRemoteDocument object store itself. Since the previous change\n // log only contained transient data, we can drop its object store.\n !function(t) {\n t.objectStoreNames.contains(\"remoteDocumentChanges\") && t.deleteObjectStore(\"remoteDocumentChanges\");\n }(t), function(t) {\n var e = t.objectStore(ar.store);\n e.createIndex(ar.readTimeIndex, ar.readTimeIndexPath, {\n unique: !1\n }), e.createIndex(ar.collectionReadTimeIndex, ar.collectionReadTimeIndexPath, {\n unique: !1\n });\n }(e);\n }))), n < 10 && r >= 10 && (s = s.next((function() {\n return i.Ve(o);\n }))), n < 11 && r >= 11 && (s = s.next((function() {\n !function(t) {\n t.createObjectStore(yr.store, {\n keyPath: yr.keyPath\n });\n }(t), function(t) {\n t.createObjectStore(vr.store, {\n keyPath: vr.keyPath\n });\n }(t);\n }))), s;\n }, t.prototype.be = function(t) {\n var e = 0;\n return t.store(ar.store).$t((function(t, n) {\n e += ri(n);\n })).next((function() {\n var n = new cr(e);\n return t.store(cr.store).put(cr.key, n);\n }));\n }, t.prototype.Re = function(t) {\n var e = this, n = t.store(rr.store), r = t.store(ir.store);\n return n.Nt().next((function(n) {\n return Ir.forEach(n, (function(n) {\n var i = IDBKeyRange.bound([ n.userId, -1 ], [ n.userId, n.lastAcknowledgedBatchId ]);\n return r.Nt(ir.userMutationsIndex, i).next((function(r) {\n return Ir.forEach(r, (function(r) {\n P(r.userId === n.userId);\n var i = Kr(e.R, r);\n return ni(t, n.userId, i).next((function() {}));\n }));\n }));\n }));\n }));\n }, \n /**\n * Ensures that every document in the remote document cache has a corresponding sentinel row\n * with a sequence number. Missing rows are given the most recently used sequence number.\n */\n t.prototype.ve = function(t) {\n var e = t.store(fr.store), n = t.store(ar.store);\n return t.store(lr.store).get(lr.key).next((function(t) {\n var r = [];\n return n.$t((function(n, i) {\n var o = new H(n), s = function(t) {\n return [ 0, Xn(t) ];\n }(o);\n r.push(e.get(s).next((function(n) {\n return n ? Ir.resolve() : function(n) {\n return e.put(new fr(0, Xn(n), t.highestListenSequenceNumber));\n }(o);\n })));\n })).next((function() {\n return Ir.waitFor(r);\n }));\n }));\n }, t.prototype.Pe = function(t, e) {\n // Create the index.\n t.createObjectStore(dr.store, {\n keyPath: dr.keyPath\n });\n var n = e.store(dr.store), r = new Xr, i = function(t) {\n if (r.add(t)) {\n var e = t.lastSegment(), i = t.popLast();\n return n.put({\n collectionId: e,\n parent: Xn(i)\n });\n }\n };\n // Helper to add an index entry iff we haven't already written it.\n // Index existing remote documents.\n return e.store(ar.store).$t({\n Ft: !0\n }, (function(t, e) {\n var n = new H(t);\n return i(n.popLast());\n })).next((function() {\n return e.store(or.store).$t({\n Ft: !0\n }, (function(t, e) {\n t[0];\n var n = t[1];\n t[2];\n var r = tr(n);\n return i(r.popLast());\n }));\n }));\n }, t.prototype.Ve = function(t) {\n var e = this, n = t.store(hr.store);\n return n.$t((function(t, r) {\n var i = Gr(r), o = Qr(e.R, i);\n return n.put(o);\n }));\n }, t;\n}();\n\nfunction ki(t) {\n t.createObjectStore(fr.store, {\n keyPath: fr.keyPath\n }).createIndex(fr.documentTargetsIndex, fr.documentTargetsKeyPath, {\n unique: !0\n }), \n // NOTE: This is unique only because the TargetId is the suffix.\n t.createObjectStore(hr.store, {\n keyPath: hr.keyPath\n }).createIndex(hr.queryTargetsIndexName, hr.queryTargetsKeyPath, {\n unique: !0\n }), t.createObjectStore(lr.store);\n}\n\nvar Ci = \"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.\", xi = /** @class */ function() {\n function t(\n /**\n * Whether to synchronize the in-memory state of multiple tabs and share\n * access to local persistence.\n */\n e, n, r, i, o, s, u, a, c, \n /**\n * If set to true, forcefully obtains database access. Existing tabs will\n * no longer be able to access IndexedDB.\n */\n h) {\n if (this.allowTabSynchronization = e, this.persistenceKey = n, this.clientId = r, \n this.Se = o, this.window = s, this.document = u, this.De = c, this.Ce = h, this.Ne = null, \n this.xe = !1, this.isPrimary = !1, this.networkEnabled = !0, \n /** Our window.unload handler, if registered. */\n this.ke = null, this.inForeground = !1, \n /** Our 'visibilitychange' listener if registered. */\n this.Fe = null, \n /** The client metadata refresh task. */\n this.$e = null, \n /** The last time we garbage collected the client metadata object store. */\n this.Oe = Number.NEGATIVE_INFINITY, \n /** A listener to notify on primary state changes. */\n this.Me = function(t) {\n return Promise.resolve();\n }, !t.yt()) throw new D(N.UNIMPLEMENTED, \"This platform is either missing IndexedDB or is known to have an incomplete implementation. Offline persistence has been disabled.\");\n this.referenceDelegate = new wi(this, i), this.Le = n + \"main\", this.R = new Fr(a), \n this.Be = new _r(this.Le, 11, new Ai(this.R)), this.qe = new hi(this.referenceDelegate, this.R), \n this.Ut = new Jr, this.Ue = function(t, e) {\n return new _i(t, e);\n }(this.R, this.Ut), this.Ke = new Wr, this.window && this.window.localStorage ? this.Qe = this.window.localStorage : (this.Qe = null, \n !1 === h && x(\"IndexedDbPersistence\", \"LocalStorage is unavailable. As a result, persistence may not work reliably. In particular enablePersistence() could fail immediately after refreshing the page.\"));\n }\n /**\n * Attempt to start IndexedDb persistence.\n *\n * @returns Whether persistence was enabled.\n */ return t.prototype.start = function() {\n var t = this;\n // NOTE: This is expected to fail sometimes (in the case of another tab\n // already having the persistence lock), so it's the first thing we should\n // do.\n return this.je().then((function() {\n if (!t.isPrimary && !t.allowTabSynchronization) \n // Fail `start()` if `synchronizeTabs` is disabled and we cannot\n // obtain the primary lease.\n throw new D(N.FAILED_PRECONDITION, Ci);\n return t.We(), t.Ge(), t.ze(), t.runTransaction(\"getHighestListenSequenceNumber\", \"readonly\", (function(e) {\n return t.qe.getHighestSequenceNumber(e);\n }));\n })).then((function(e) {\n t.Ne = new S(e, t.De);\n })).then((function() {\n t.xe = !0;\n })).catch((function(e) {\n return t.Be && t.Be.close(), Promise.reject(e);\n }));\n }, \n /**\n * Registers a listener that gets called when the primary state of the\n * instance changes. Upon registering, this listener is invoked immediately\n * with the current primary state.\n *\n * PORTING NOTE: This is only used for Web multi-tab.\n */\n t.prototype.He = function(t) {\n var e = this;\n return this.Me = function(i) {\n return n(e, void 0, void 0, (function() {\n return r(this, (function(e) {\n return this.started ? [ 2 /*return*/ , t(i) ] : [ 2 /*return*/ ];\n }));\n }));\n }, t(this.isPrimary);\n }, \n /**\n * Registers a listener that gets called when the database receives a\n * version change event indicating that it has deleted.\n *\n * PORTING NOTE: This is only used for Web multi-tab.\n */\n t.prototype.setDatabaseDeletedListener = function(t) {\n var e = this;\n this.Be.vt((function(i) {\n return n(e, void 0, void 0, (function() {\n return r(this, (function(e) {\n switch (e.label) {\n case 0:\n return null === i.newVersion ? [ 4 /*yield*/ , t() ] : [ 3 /*break*/ , 2 ];\n\n case 1:\n e.sent(), e.label = 2;\n\n case 2:\n return [ 2 /*return*/ ];\n }\n }));\n }));\n }));\n }, \n /**\n * Adjusts the current network state in the client's metadata, potentially\n * affecting the primary lease.\n *\n * PORTING NOTE: This is only used for Web multi-tab.\n */\n t.prototype.setNetworkEnabled = function(t) {\n var e = this;\n this.networkEnabled !== t && (this.networkEnabled = t, \n // Schedule a primary lease refresh for immediate execution. The eventual\n // lease update will be propagated via `primaryStateListener`.\n this.Se.enqueueAndForget((function() {\n return n(e, void 0, void 0, (function() {\n return r(this, (function(t) {\n switch (t.label) {\n case 0:\n return this.started ? [ 4 /*yield*/ , this.je() ] : [ 3 /*break*/ , 2 ];\n\n case 1:\n t.sent(), t.label = 2;\n\n case 2:\n return [ 2 /*return*/ ];\n }\n }));\n }));\n })));\n }, \n /**\n * Updates the client metadata in IndexedDb and attempts to either obtain or\n * extend the primary lease for the local client. Asynchronously notifies the\n * primary state listener if the client either newly obtained or released its\n * primary lease.\n */\n t.prototype.je = function() {\n var t = this;\n return this.runTransaction(\"updateClientMetadataAndTryBecomePrimary\", \"readwrite\", (function(e) {\n return Li(e).put(new pr(t.clientId, Date.now(), t.networkEnabled, t.inForeground)).next((function() {\n if (t.isPrimary) return t.Je(e).next((function(e) {\n e || (t.isPrimary = !1, t.Se.enqueueRetryable((function() {\n return t.Me(!1);\n })));\n }));\n })).next((function() {\n return t.Ye(e);\n })).next((function(n) {\n return t.isPrimary && !n ? t.Xe(e).next((function() {\n return !1;\n })) : !!n && t.Ze(e).next((function() {\n return !0;\n }));\n }));\n })).catch((function(e) {\n if (Nr(e)) \n // Proceed with the existing state. Any subsequent access to\n // IndexedDB will verify the lease.\n return C(\"IndexedDbPersistence\", \"Failed to extend owner lease: \", e), t.isPrimary;\n if (!t.allowTabSynchronization) throw e;\n return C(\"IndexedDbPersistence\", \"Releasing owner lease after error during lease refresh\", e), \n /* isPrimary= */ !1;\n })).then((function(e) {\n t.isPrimary !== e && t.Se.enqueueRetryable((function() {\n return t.Me(e);\n })), t.isPrimary = e;\n }));\n }, t.prototype.Je = function(t) {\n var e = this;\n return Ri(t).get(nr.key).next((function(t) {\n return Ir.resolve(e.tn(t));\n }));\n }, t.prototype.en = function(t) {\n return Li(t).delete(this.clientId);\n }, \n /**\n * If the garbage collection threshold has passed, prunes the\n * RemoteDocumentChanges and the ClientMetadata store based on the last update\n * time of all clients.\n */\n t.prototype.nn = function() {\n return n(this, void 0, void 0, (function() {\n var t, e, n, i, o = this;\n return r(this, (function(r) {\n switch (r.label) {\n case 0:\n return !this.isPrimary || this.sn(this.Oe, 18e5) ? [ 3 /*break*/ , 2 ] : (this.Oe = Date.now(), \n [ 4 /*yield*/ , this.runTransaction(\"maybeGarbageCollectMultiClientState\", \"readwrite-primary\", (function(t) {\n var e = Rr(t, pr.store);\n return e.Nt().next((function(t) {\n var n = o.rn(t, 18e5), r = t.filter((function(t) {\n return -1 === n.indexOf(t);\n }));\n // Delete metadata for clients that are no longer considered active.\n return Ir.forEach(r, (function(t) {\n return e.delete(t.clientId);\n })).next((function() {\n return r;\n }));\n }));\n })).catch((function() {\n return [];\n })) ]);\n\n case 1:\n // Delete potential leftover entries that may continue to mark the\n // inactive clients as zombied in LocalStorage.\n // Ideally we'd delete the IndexedDb and LocalStorage zombie entries for\n // the client atomically, but we can't. So we opt to delete the IndexedDb\n // entries first to avoid potentially reviving a zombied client.\n if (t = r.sent(), this.Qe) for (e = 0, n = t; e < n.length; e++) i = n[e], this.Qe.removeItem(this.on(i.clientId));\n r.label = 2;\n\n case 2:\n return [ 2 /*return*/ ];\n }\n }));\n }));\n }, \n /**\n * Schedules a recurring timer to update the client metadata and to either\n * extend or acquire the primary lease if the client is eligible.\n */\n t.prototype.ze = function() {\n var t = this;\n this.$e = this.Se.enqueueAfterDelay(\"client_metadata_refresh\" /* ClientMetadataRefresh */ , 4e3, (function() {\n return t.je().then((function() {\n return t.nn();\n })).then((function() {\n return t.ze();\n }));\n }));\n }, \n /** Checks whether `client` is the local client. */ t.prototype.tn = function(t) {\n return !!t && t.ownerId === this.clientId;\n }, \n /**\n * Evaluate the state of all active clients and determine whether the local\n * client is or can act as the holder of the primary lease. Returns whether\n * the client is eligible for the lease, but does not actually acquire it.\n * May return 'false' even if there is no active leaseholder and another\n * (foreground) client should become leaseholder instead.\n */\n t.prototype.Ye = function(t) {\n var e = this;\n return this.Ce ? Ir.resolve(!0) : Ri(t).get(nr.key).next((function(n) {\n // A client is eligible for the primary lease if:\n // - its network is enabled and the client's tab is in the foreground.\n // - its network is enabled and no other client's tab is in the\n // foreground.\n // - every clients network is disabled and the client's tab is in the\n // foreground.\n // - every clients network is disabled and no other client's tab is in\n // the foreground.\n // - the `forceOwningTab` setting was passed in.\n if (null !== n && e.sn(n.leaseTimestampMs, 5e3) && !e.cn(n.ownerId)) {\n if (e.tn(n) && e.networkEnabled) return !0;\n if (!e.tn(n)) {\n if (!n.allowTabSynchronization) \n // Fail the `canActAsPrimary` check if the current leaseholder has\n // not opted into multi-tab synchronization. If this happens at\n // client startup, we reject the Promise returned by\n // `enablePersistence()` and the user can continue to use Firestore\n // with in-memory persistence.\n // If this fails during a lease refresh, we will instead block the\n // AsyncQueue from executing further operations. Note that this is\n // acceptable since mixing & matching different `synchronizeTabs`\n // settings is not supported.\n // TODO(b/114226234): Remove this check when `synchronizeTabs` can\n // no longer be turned off.\n throw new D(N.FAILED_PRECONDITION, Ci);\n return !1;\n }\n }\n return !(!e.networkEnabled || !e.inForeground) || Li(t).Nt().next((function(t) {\n return void 0 === e.rn(t, 5e3).find((function(t) {\n if (e.clientId !== t.clientId) {\n var n = !e.networkEnabled && t.networkEnabled, r = !e.inForeground && t.inForeground, i = e.networkEnabled === t.networkEnabled;\n if (n || r && i) return !0;\n }\n return !1;\n }));\n }));\n })).next((function(t) {\n return e.isPrimary !== t && C(\"IndexedDbPersistence\", \"Client \" + (t ? \"is\" : \"is not\") + \" eligible for a primary lease.\"), \n t;\n }));\n }, t.prototype.shutdown = function() {\n return n(this, void 0, void 0, (function() {\n var t = this;\n return r(this, (function(e) {\n switch (e.label) {\n case 0:\n // Use `SimpleDb.runTransaction` directly to avoid failing if another tab\n // has obtained the primary lease.\n // The shutdown() operations are idempotent and can be called even when\n // start() aborted (e.g. because it couldn't acquire the persistence lease).\n return this.xe = !1, this.un(), this.$e && (this.$e.cancel(), this.$e = null), this.an(), \n this.hn(), [ 4 /*yield*/ , this.Be.runTransaction(\"shutdown\", \"readwrite\", [ nr.store, pr.store ], (function(e) {\n var n = new xr(e, S.o);\n return t.Xe(n).next((function() {\n return t.en(n);\n }));\n })) ];\n\n case 1:\n // The shutdown() operations are idempotent and can be called even when\n // start() aborted (e.g. because it couldn't acquire the persistence lease).\n // Use `SimpleDb.runTransaction` directly to avoid failing if another tab\n // has obtained the primary lease.\n return e.sent(), this.Be.close(), \n // Remove the entry marking the client as zombied from LocalStorage since\n // we successfully deleted its metadata from IndexedDb.\n this.ln(), [ 2 /*return*/ ];\n }\n }));\n }));\n }, \n /**\n * Returns clients that are not zombied and have an updateTime within the\n * provided threshold.\n */\n t.prototype.rn = function(t, e) {\n var n = this;\n return t.filter((function(t) {\n return n.sn(t.updateTimeMs, e) && !n.cn(t.clientId);\n }));\n }, \n /**\n * Returns the IDs of the clients that are currently active. If multi-tab\n * is not supported, returns an array that only contains the local client's\n * ID.\n *\n * PORTING NOTE: This is only used for Web multi-tab.\n */\n t.prototype.fn = function() {\n var t = this;\n return this.runTransaction(\"getActiveClients\", \"readonly\", (function(e) {\n return Li(e).Nt().next((function(e) {\n return t.rn(e, 18e5).map((function(t) {\n return t.clientId;\n }));\n }));\n }));\n }, Object.defineProperty(t.prototype, \"started\", {\n get: function() {\n return this.xe;\n },\n enumerable: !1,\n configurable: !0\n }), t.prototype.getMutationQueue = function(t) {\n return ii.Qt(t, this.R, this.Ut, this.referenceDelegate);\n }, t.prototype.getTargetCache = function() {\n return this.qe;\n }, t.prototype.getRemoteDocumentCache = function() {\n return this.Ue;\n }, t.prototype.getIndexManager = function() {\n return this.Ut;\n }, t.prototype.getBundleCache = function() {\n return this.Ke;\n }, t.prototype.runTransaction = function(t, e, n) {\n var r = this;\n C(\"IndexedDbPersistence\", \"Starting transaction:\", t);\n var i, o = \"readonly\" === e ? \"readonly\" : \"readwrite\";\n // Do all transactions as readwrite against all object stores, since we\n // are the only reader/writer.\n return this.Be.runTransaction(t, o, mr, (function(o) {\n return i = new xr(o, r.Ne ? r.Ne.next() : S.o), \"readwrite-primary\" === e ? r.Je(i).next((function(t) {\n return !!t || r.Ye(i);\n })).next((function(e) {\n if (!e) throw x(\"Failed to obtain primary lease for action '\" + t + \"'.\"), r.isPrimary = !1, \n r.Se.enqueueRetryable((function() {\n return r.Me(!1);\n })), new D(N.FAILED_PRECONDITION, gr);\n return n(i);\n })).next((function(t) {\n return r.Ze(i).next((function() {\n return t;\n }));\n })) : r.dn(i).next((function() {\n return n(i);\n }));\n })).then((function(t) {\n return i.raiseOnCommittedEvent(), t;\n }));\n }, \n /**\n * Verifies that the current tab is the primary leaseholder or alternatively\n * that the leaseholder has opted into multi-tab synchronization.\n */\n // TODO(b/114226234): Remove this check when `synchronizeTabs` can no longer\n // be turned off.\n t.prototype.dn = function(t) {\n var e = this;\n return Ri(t).get(nr.key).next((function(t) {\n if (null !== t && e.sn(t.leaseTimestampMs, 5e3) && !e.cn(t.ownerId) && !e.tn(t) && !(e.Ce || e.allowTabSynchronization && t.allowTabSynchronization)) throw new D(N.FAILED_PRECONDITION, Ci);\n }));\n }, \n /**\n * Obtains or extends the new primary lease for the local client. This\n * method does not verify that the client is eligible for this lease.\n */\n t.prototype.Ze = function(t) {\n var e = new nr(this.clientId, this.allowTabSynchronization, Date.now());\n return Ri(t).put(nr.key, e);\n }, t.yt = function() {\n return _r.yt();\n }, \n /** Checks the primary lease and removes it if we are the current primary. */ t.prototype.Xe = function(t) {\n var e = this, n = Ri(t);\n return n.get(nr.key).next((function(t) {\n return e.tn(t) ? (C(\"IndexedDbPersistence\", \"Releasing primary lease.\"), n.delete(nr.key)) : Ir.resolve();\n }));\n }, \n /** Verifies that `updateTimeMs` is within `maxAgeMs`. */ t.prototype.sn = function(t, e) {\n var n = Date.now();\n return !(t < n - e || t > n && (x(\"Detected an update time that is in the future: \" + t + \" > \" + n), \n 1));\n }, t.prototype.We = function() {\n var t = this;\n null !== this.document && \"function\" == typeof this.document.addEventListener && (this.Fe = function() {\n t.Se.enqueueAndForget((function() {\n return t.inForeground = \"visible\" === t.document.visibilityState, t.je();\n }));\n }, this.document.addEventListener(\"visibilitychange\", this.Fe), this.inForeground = \"visible\" === this.document.visibilityState);\n }, t.prototype.an = function() {\n this.Fe && (this.document.removeEventListener(\"visibilitychange\", this.Fe), this.Fe = null);\n }, \n /**\n * Attaches a window.unload handler that will synchronously write our\n * clientId to a \"zombie client id\" location in LocalStorage. This can be used\n * by tabs trying to acquire the primary lease to determine that the lease\n * is no longer valid even if the timestamp is recent. This is particularly\n * important for the refresh case (so the tab correctly re-acquires the\n * primary lease). LocalStorage is used for this rather than IndexedDb because\n * it is a synchronous API and so can be used reliably from an unload\n * handler.\n */\n t.prototype.Ge = function() {\n var t, e = this;\n \"function\" == typeof (null === (t = this.window) || void 0 === t ? void 0 : t.addEventListener) && (this.ke = function() {\n // Note: In theory, this should be scheduled on the AsyncQueue since it\n // accesses internal state. We execute this code directly during shutdown\n // to make sure it gets a chance to run.\n e.un(), o() && navigator.appVersion.match(\"Version/14\") && \n // On Safari 14, we do not run any cleanup actions as it might trigger\n // a bug that prevents Safari from re-opening IndexedDB during the\n // next page load.\n // See https://bugs.webkit.org/show_bug.cgi?id=226547\n e.Se.enterRestrictedMode(/* purgeExistingTasks= */ !0), e.Se.enqueueAndForget((function() {\n return e.shutdown();\n }));\n }, this.window.addEventListener(\"pagehide\", this.ke));\n }, t.prototype.hn = function() {\n this.ke && (this.window.removeEventListener(\"pagehide\", this.ke), this.ke = null);\n }, \n /**\n * Returns whether a client is \"zombied\" based on its LocalStorage entry.\n * Clients become zombied when their tab closes without running all of the\n * cleanup logic in `shutdown()`.\n */\n t.prototype.cn = function(t) {\n var e;\n try {\n var n = null !== (null === (e = this.Qe) || void 0 === e ? void 0 : e.getItem(this.on(t)));\n return C(\"IndexedDbPersistence\", \"Client '\" + t + \"' \" + (n ? \"is\" : \"is not\") + \" zombied in LocalStorage\"), \n n;\n } catch (t) {\n // Gracefully handle if LocalStorage isn't working.\n return x(\"IndexedDbPersistence\", \"Failed to get zombied client id.\", t), !1;\n }\n }, \n /**\n * Record client as zombied (a client that had its tab closed). Zombied\n * clients are ignored during primary tab selection.\n */\n t.prototype.un = function() {\n if (this.Qe) try {\n this.Qe.setItem(this.on(this.clientId), String(Date.now()));\n } catch (t) {\n // Gracefully handle if LocalStorage isn't available / working.\n x(\"Failed to set zombie client id.\", t);\n }\n }, \n /** Removes the zombied client entry if it exists. */ t.prototype.ln = function() {\n if (this.Qe) try {\n this.Qe.removeItem(this.on(this.clientId));\n } catch (t) {\n // Ignore\n }\n }, t.prototype.on = function(t) {\n return \"firestore_zombie_\" + this.persistenceKey + \"_\" + t;\n }, t;\n}();\n\n/**\n * Oldest acceptable age in milliseconds for client metadata before the client\n * is considered inactive and its associated data is garbage collected.\n */\n/**\n * An IndexedDB-backed instance of Persistence. Data is stored persistently\n * across sessions.\n *\n * On Web only, the Firestore SDKs support shared access to its persistence\n * layer. This allows multiple browser tabs to read and write to IndexedDb and\n * to synchronize state even without network connectivity. Shared access is\n * currently optional and not enabled unless all clients invoke\n * `enablePersistence()` with `{synchronizeTabs:true}`.\n *\n * In multi-tab mode, if multiple clients are active at the same time, the SDK\n * will designate one client as the “primary client”. An effort is made to pick\n * a visible, network-connected and active client, and this client is\n * responsible for letting other clients know about its presence. The primary\n * client writes a unique client-generated identifier (the client ID) to\n * IndexedDb’s “owner” store every 4 seconds. If the primary client fails to\n * update this entry, another client can acquire the lease and take over as\n * primary.\n *\n * Some persistence operations in the SDK are designated as primary-client only\n * operations. This includes the acknowledgment of mutations and all updates of\n * remote documents. The effects of these operations are written to persistence\n * and then broadcast to other tabs via LocalStorage (see\n * `WebStorageSharedClientState`), which then refresh their state from\n * persistence.\n *\n * Similarly, the primary client listens to notifications sent by secondary\n * clients to discover persistence changes written by secondary clients, such as\n * the addition of new mutations and query targets.\n *\n * If multi-tab is not enabled and another tab already obtained the primary\n * lease, IndexedDbPersistence enters a failed state and all subsequent\n * operations will automatically fail.\n *\n * Additionally, there is an optimization so that when a tab is closed, the\n * primary lease is released immediately (this is especially important to make\n * sure that a refreshed tab is able to immediately re-acquire the primary\n * lease). Unfortunately, IndexedDB cannot be reliably used in window.unload\n * since it is an asynchronous API. So in addition to attempting to give up the\n * lease, the leaseholder writes its client ID to a \"zombiedClient\" entry in\n * LocalStorage which acts as an indicator that another tab should go ahead and\n * take the primary lease immediately regardless of the current lease timestamp.\n *\n * TODO(b/114226234): Remove `synchronizeTabs` section when multi-tab is no\n * longer optional.\n */\n/**\n * Helper to get a typed SimpleDbStore for the primary client object store.\n */\nfunction Ri(t) {\n return Rr(t, nr.store);\n}\n\n/**\n * Helper to get a typed SimpleDbStore for the client metadata object store.\n */ function Li(t) {\n return Rr(t, pr.store);\n}\n\n/**\n * Generates a string used as a prefix when storing data in IndexedDB and\n * LocalStorage.\n */ function Oi(t, e) {\n // Use two different prefix formats:\n // * firestore / persistenceKey / projectID . databaseID / ...\n // * firestore / persistenceKey / projectID / ...\n // projectIDs are DNS-compatible names and cannot contain dots\n // so there's no danger of collisions.\n var n = t.projectId;\n return t.isDefaultDatabase || (n += \".\" + t.database), \"firestore/\" + e + \"/\" + n + \"/\"\n /**\n * @license\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */;\n}\n\nvar Pi = function(t, e) {\n this.progress = t, this.wn = e;\n}, Fi = /** @class */ function() {\n function t(t, e, n) {\n this.Ue = t, this._n = e, this.Ut = n\n /**\n * Get the local view of the document identified by `key`.\n *\n * @returns Local view of the document or null if we don't have any cached\n * state for it.\n */;\n }\n return t.prototype.mn = function(t, e) {\n var n = this;\n return this._n.getAllMutationBatchesAffectingDocumentKey(t, e).next((function(r) {\n return n.yn(t, e, r);\n }));\n }, \n /** Internal version of `getDocument` that allows reusing batches. */ t.prototype.yn = function(t, e, n) {\n return this.Ue.getEntry(t, e).next((function(t) {\n for (var e = 0, r = n; e < r.length; e++) {\n r[e].applyToLocalView(t);\n }\n return t;\n }));\n }, \n // Returns the view of the given `docs` as they would appear after applying\n // all mutations in the given `batches`.\n t.prototype.gn = function(t, e) {\n t.forEach((function(t, n) {\n for (var r = 0, i = e; r < i.length; r++) {\n i[r].applyToLocalView(n);\n }\n }));\n }, \n /**\n * Gets the local view of the documents identified by `keys`.\n *\n * If we don't have cached state for a document in `keys`, a NoDocument will\n * be stored for that key in the resulting set.\n */\n t.prototype.pn = function(t, e) {\n var n = this;\n return this.Ue.getEntries(t, e).next((function(e) {\n return n.En(t, e).next((function() {\n return e;\n }));\n }));\n }, \n /**\n * Applies the local view the given `baseDocs` without retrieving documents\n * from the local store.\n */\n t.prototype.En = function(t, e) {\n var n = this;\n return this._n.getAllMutationBatchesAffectingDocumentKeys(t, e).next((function(t) {\n return n.gn(e, t);\n }));\n }, \n /**\n * Performs a query against the local view of all documents.\n *\n * @param transaction - The persistence transaction.\n * @param query - The query to match documents against.\n * @param sinceReadTime - If not set to SnapshotVersion.min(), return only\n * documents that have been read since this snapshot version (exclusive).\n */\n t.prototype.getDocumentsMatchingQuery = function(t, e, n) {\n /**\n * Returns whether the query matches a single document by path (rather than a\n * collection).\n */\n return function(t) {\n return ct.isDocumentKey(t.path) && null === t.collectionGroup && 0 === t.filters.length;\n }(e) ? this.Tn(t, e.path) : te(e) ? this.In(t, e, n) : this.An(t, e, n);\n }, t.prototype.Tn = function(t, e) {\n // Just do a simple document lookup.\n return this.mn(t, new ct(e)).next((function(t) {\n var e = en();\n return t.isFoundDocument() && (e = e.insert(t.key, t)), e;\n }));\n }, t.prototype.In = function(t, e, n) {\n var r = this, i = e.collectionGroup, o = en();\n return this.Ut.getCollectionParents(t, i).next((function(s) {\n return Ir.forEach(s, (function(s) {\n var u = function(t, e) {\n return new Wt(e, \n /*collectionGroup=*/ null, t.explicitOrderBy.slice(), t.filters.slice(), t.limit, t.limitType, t.startAt, t.endAt);\n }(e, s.child(i));\n return r.An(t, u, n).next((function(t) {\n t.forEach((function(t, e) {\n o = o.insert(t, e);\n }));\n }));\n })).next((function() {\n return o;\n }));\n }));\n }, t.prototype.An = function(t, e, n) {\n var r, i, o = this;\n // Query the remote documents and overlay mutations.\n return this.Ue.getDocumentsMatchingQuery(t, e, n).next((function(n) {\n return r = n, o._n.getAllMutationBatchesAffectingQuery(t, e);\n })).next((function(e) {\n return i = e, o.Rn(t, i, r).next((function(t) {\n r = t;\n for (var e = 0, n = i; e < n.length; e++) for (var o = n[e], s = 0, u = o.mutations; s < u.length; s++) {\n var a = u[s], c = a.key, h = r.get(c);\n null == h && (\n // Create invalid document to apply mutations on top of\n h = Nt.newInvalidDocument(c), r = r.insert(c, h)), xe(a, h, o.localWriteTime), h.isFoundDocument() || (r = r.remove(c));\n }\n }));\n })).next((function() {\n // Finally, filter out any documents that don't actually match\n // the query.\n return r.forEach((function(t, n) {\n ue(e, n) || (r = r.remove(t));\n })), r;\n }));\n }, t.prototype.Rn = function(t, e, n) {\n for (var r = sn(), i = 0, o = e; i < o.length; i++) for (var s = 0, u = o[i].mutations; s < u.length; s++) {\n var a = u[s];\n a instanceof Fe && null === n.get(a.key) && (r = r.add(a.key));\n }\n var c = n;\n return this.Ue.getEntries(t, r).next((function(t) {\n return t.forEach((function(t, e) {\n e.isFoundDocument() && (c = c.insert(t, e));\n })), c;\n }));\n }, t;\n}(), Mi = /** @class */ function() {\n function t(t, e, n, r) {\n this.targetId = t, this.fromCache = e, this.bn = n, this.vn = r;\n }\n return t.Pn = function(e, n) {\n for (var r = sn(), i = sn(), o = 0, s = n.docChanges; o < s.length; o++) {\n var u = s[o];\n switch (u.type) {\n case 0 /* Added */ :\n r = r.add(u.doc.key);\n break;\n\n case 1 /* Removed */ :\n i = i.add(u.doc.key);\n // do nothing\n }\n }\n return new t(e, n.fromCache, r, i);\n }, t;\n}(), Vi = /** @class */ function() {\n function t() {}\n /** Sets the document view to query against. */ return t.prototype.Vn = function(t) {\n this.Sn = t;\n }, \n /** Returns all local documents matching the specified query. */ t.prototype.getDocumentsMatchingQuery = function(t, e, n, r) {\n var i = this;\n // Queries that match all documents don't benefit from using\n // key-based lookups. It is more efficient to scan all documents in a\n // collection, rather than to perform individual lookups.\n return function(t) {\n return 0 === t.filters.length && null === t.limit && null == t.startAt && null == t.endAt && (0 === t.explicitOrderBy.length || 1 === t.explicitOrderBy.length && t.explicitOrderBy[0].field.isKeyField());\n }(e) || n.isEqual(K.min()) ? this.Dn(t, e) : this.Sn.pn(t, r).next((function(o) {\n var s = i.Cn(e, o);\n return ($t(e) || Xt(e)) && i.Nn(e.limitType, s, r, n) ? i.Dn(t, e) : (k() <= y.DEBUG && C(\"QueryEngine\", \"Re-using previous result from %s to execute query: %s\", n.toString(), se(e)), \n i.Sn.getDocumentsMatchingQuery(t, e, n).next((function(t) {\n // We merge `previousResults` into `updateResults`, since\n // `updateResults` is already a DocumentMap. If a document is\n // contained in both lists, then its contents are the same.\n return s.forEach((function(e) {\n t = t.insert(e.key, e);\n })), t;\n })));\n }));\n // Queries that have never seen a snapshot without limbo free documents\n // should also be run as a full collection scan.\n }, \n /** Applies the query filter and sorting to the provided documents. */ t.prototype.Cn = function(t, e) {\n // Sort the documents and re-apply the query filter since previously\n // matching documents do not necessarily still match the query.\n var n = new $e(ae(t));\n return e.forEach((function(e, r) {\n ue(t, r) && (n = n.add(r));\n })), n;\n }, \n /**\n * Determines if a limit query needs to be refilled from cache, making it\n * ineligible for index-free execution.\n *\n * @param sortedPreviousResults - The documents that matched the query when it\n * was last synchronized, sorted by the query's comparator.\n * @param remoteKeys - The document keys that matched the query at the last\n * snapshot.\n * @param limboFreeSnapshotVersion - The version of the snapshot when the\n * query was last synchronized.\n */\n t.prototype.Nn = function(t, e, n, r) {\n // The query needs to be refilled if a previously matching document no\n // longer matches.\n if (n.size !== e.size) return !0;\n // Limit queries are not eligible for index-free query execution if there is\n // a potential that an older document from cache now sorts before a document\n // that was previously part of the limit. This, however, can only happen if\n // the document at the edge of the limit goes out of limit.\n // If a document that is not the limit boundary sorts differently,\n // the boundary of the limit itself did not change and documents from cache\n // will continue to be \"rejected\" by this boundary. Therefore, we can ignore\n // any modifications that don't affect the last document.\n var i = \"F\" /* First */ === t ? e.last() : e.first();\n return !!i && (i.hasPendingWrites || i.version.compareTo(r) > 0);\n }, t.prototype.Dn = function(t, e) {\n return k() <= y.DEBUG && C(\"QueryEngine\", \"Using full collection scan to execute query:\", se(e)), \n this.Sn.getDocumentsMatchingQuery(t, e, K.min());\n }, t;\n}(), qi = /** @class */ function() {\n function t(\n /** Manages our in-memory or durable persistence. */\n t, e, n, r) {\n this.persistence = t, this.xn = e, this.R = r, \n /**\n * Maps a targetID to data about its target.\n *\n * PORTING NOTE: We are using an immutable data structure on Web to make re-runs\n * of `applyRemoteEvent()` idempotent.\n */\n this.kn = new We(q), \n /** Maps a target to its targetID. */\n // TODO(wuandy): Evaluate if TargetId can be part of Target.\n this.Fn = new Ii((function(t) {\n return kt(t);\n }), Ct), \n /**\n * The read time of the last entry processed by `getNewDocumentChanges()`.\n *\n * PORTING NOTE: This is only used for multi-tab synchronization.\n */\n this.$n = K.min(), this._n = t.getMutationQueue(n), this.On = t.getRemoteDocumentCache(), \n this.qe = t.getTargetCache(), this.Mn = new Fi(this.On, this._n, this.persistence.getIndexManager()), \n this.Ke = t.getBundleCache(), this.xn.Vn(this.Mn);\n }\n return t.prototype.collectGarbage = function(t) {\n var e = this;\n return this.persistence.runTransaction(\"Collect garbage\", \"readwrite-primary\", (function(n) {\n return t.collect(n, e.kn);\n }));\n }, t;\n}();\n\n/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * A readonly view of the local state of all documents we're tracking (i.e. we\n * have a cached version in remoteDocumentCache or local mutations for the\n * document). The view is computed by applying the mutations in the\n * MutationQueue to the RemoteDocumentCache.\n */ function Ui(\n/** Manages our in-memory or durable persistence. */\nt, e, n, r) {\n return new qi(t, e, n, r);\n}\n\n/**\n * Tells the LocalStore that the currently authenticated user has changed.\n *\n * In response the local store switches the mutation queue to the new user and\n * returns any resulting document changes.\n */\n// PORTING NOTE: Android and iOS only return the documents affected by the\n// change.\nfunction Bi(t, e) {\n return n(this, void 0, void 0, (function() {\n var n, i, o, s;\n return r(this, (function(r) {\n switch (r.label) {\n case 0:\n return n = F(t), i = n._n, o = n.Mn, [ 4 /*yield*/ , n.persistence.runTransaction(\"Handle user change\", \"readonly\", (function(t) {\n // Swap out the mutation queue, grabbing the pending mutation batches\n // before and after.\n var r;\n return n._n.getAllMutationBatches(t).next((function(s) {\n return r = s, i = n.persistence.getMutationQueue(e), \n // Recreate our LocalDocumentsView using the new\n // MutationQueue.\n o = new Fi(n.On, i, n.persistence.getIndexManager()), i.getAllMutationBatches(t);\n })).next((function(e) {\n for (var n = [], i = [], s = sn(), u = 0, a = r\n // Union the old/new changed keys.\n ; u < a.length; u++) {\n var c = a[u];\n n.push(c.batchId);\n for (var h = 0, f = c.mutations; h < f.length; h++) {\n var l = f[h];\n s = s.add(l.key);\n }\n }\n for (var d = 0, p = e; d < p.length; d++) {\n var y = p[d];\n i.push(y.batchId);\n for (var v = 0, m = y.mutations; v < m.length; v++) {\n var g = m[v];\n s = s.add(g.key);\n }\n }\n // Return the set of all (potentially) changed documents and the list\n // of mutation batch IDs that were affected by change.\n return o.pn(t, s).next((function(t) {\n return {\n Ln: t,\n removedBatchIds: n,\n addedBatchIds: i\n };\n }));\n }));\n })) ];\n\n case 1:\n return s = r.sent(), [ 2 /*return*/ , (n._n = i, n.Mn = o, n.xn.Vn(n.Mn), s) ];\n }\n }));\n }));\n}\n\n/* Accepts locally generated Mutations and commit them to storage. */\n/**\n * Acknowledges the given batch.\n *\n * On the happy path when a batch is acknowledged, the local store will\n *\n * + remove the batch from the mutation queue;\n * + apply the changes to the remote document cache;\n * + recalculate the latency compensated view implied by those changes (there\n * may be mutations in the queue that affect the documents but haven't been\n * acknowledged yet); and\n * + give the changed documents back the sync engine\n *\n * @returns The resulting (modified) documents.\n */ function ji(t, e) {\n var n = F(t);\n return n.persistence.runTransaction(\"Acknowledge batch\", \"readwrite-primary\", (function(t) {\n var r = e.batch.keys(), i = n.On.newChangeBuffer({\n trackRemovals: !0\n });\n return function(t, e, n, r) {\n var i = n.batch, o = i.keys(), s = Ir.resolve();\n return o.forEach((function(t) {\n s = s.next((function() {\n return r.getEntry(e, t);\n })).next((function(e) {\n var o = n.docVersions.get(t);\n P(null !== o), e.version.compareTo(o) < 0 && (i.applyToRemoteDocument(e, n), e.isValidDocument() && \n // We use the commitVersion as the readTime rather than the\n // document's updateTime since the updateTime is not advanced\n // for updates that do not modify the underlying document.\n r.addEntry(e, n.commitVersion));\n }));\n })), s.next((function() {\n return t._n.removeMutationBatch(e, i);\n }));\n }(n, t, e, i).next((function() {\n return i.apply(t);\n })).next((function() {\n return n._n.performConsistencyCheck(t);\n })).next((function() {\n return n.Mn.pn(t, r);\n }));\n }));\n}\n\n/**\n * Removes mutations from the MutationQueue for the specified batch;\n * LocalDocuments will be recalculated.\n *\n * @returns The resulting modified documents.\n */\n/**\n * Returns the last consistent snapshot processed (used by the RemoteStore to\n * determine whether to buffer incoming snapshots from the backend).\n */ function Ki(t) {\n var e = F(t);\n return e.persistence.runTransaction(\"Get last remote snapshot version\", \"readonly\", (function(t) {\n return e.qe.getLastRemoteSnapshotVersion(t);\n }));\n}\n\n/**\n * Updates the \"ground-state\" (remote) documents. We assume that the remote\n * event reflects any write batches that have been acknowledged or rejected\n * (i.e. we do not re-apply local mutations to updates from this event).\n *\n * LocalDocuments are re-calculated if there are remaining mutations in the\n * queue.\n */ function Gi(t, e) {\n var n = F(t), r = e.snapshotVersion, i = n.kn;\n return n.persistence.runTransaction(\"Apply remote event\", \"readwrite-primary\", (function(t) {\n var o = n.On.newChangeBuffer({\n trackRemovals: !0\n });\n // Reset newTargetDataByTargetMap in case this transaction gets re-run.\n i = n.kn;\n var s = [];\n e.targetChanges.forEach((function(e, o) {\n var u = i.get(o);\n if (u) {\n // Only update the remote keys if the target is still active. This\n // ensures that we can persist the updated target data along with\n // the updated assignment.\n s.push(n.qe.removeMatchingKeys(t, e.removedDocuments, o).next((function() {\n return n.qe.addMatchingKeys(t, e.addedDocuments, o);\n })));\n var a = e.resumeToken;\n // Update the resume token if the change includes one.\n if (a.approximateByteSize() > 0) {\n var c = u.withResumeToken(a, r).withSequenceNumber(t.currentSequenceNumber);\n i = i.insert(o, c), \n // Update the target data if there are target changes (or if\n // sufficient time has passed since the last update).\n /**\n * Returns true if the newTargetData should be persisted during an update of\n * an active target. TargetData should always be persisted when a target is\n * being released and should not call this function.\n *\n * While the target is active, TargetData updates can be omitted when nothing\n * about the target has changed except metadata like the resume token or\n * snapshot version. Occasionally it's worth the extra write to prevent these\n * values from getting too stale after a crash, but this doesn't have to be\n * too frequent.\n */\n function(t, e, n) {\n // Always persist target data if we don't already have a resume token.\n return P(e.resumeToken.approximateByteSize() > 0), 0 === t.resumeToken.approximateByteSize() || (\n // Don't allow resume token changes to be buffered indefinitely. This\n // allows us to be reasonably up-to-date after a crash and avoids needing\n // to loop over all active queries on shutdown. Especially in the browser\n // we may not get time to do anything interesting while the current tab is\n // closing.\n e.snapshotVersion.toMicroseconds() - t.snapshotVersion.toMicroseconds() >= 3e8 || n.addedDocuments.size + n.modifiedDocuments.size + n.removedDocuments.size > 0);\n }(u, c, e) && s.push(n.qe.updateTargetData(t, c));\n }\n }\n }));\n var u = Ze();\n // HACK: The only reason we allow a null snapshot version is so that we\n // can synthesize remote events when we get permission denied errors while\n // trying to resolve the state of a locally cached document that is in\n // limbo.\n if (e.documentUpdates.forEach((function(r, i) {\n e.resolvedLimboDocuments.has(r) && s.push(n.persistence.referenceDelegate.updateLimboDocument(t, r));\n })), \n // Each loop iteration only affects its \"own\" doc, so it's safe to get all the remote\n // documents in advance in a single call.\n s.push(Qi(t, o, e.documentUpdates, r, void 0).next((function(t) {\n u = t;\n }))), !r.isEqual(K.min())) {\n var a = n.qe.getLastRemoteSnapshotVersion(t).next((function(e) {\n return n.qe.setTargetsMetadata(t, t.currentSequenceNumber, r);\n }));\n s.push(a);\n }\n return Ir.waitFor(s).next((function() {\n return o.apply(t);\n })).next((function() {\n return n.Mn.En(t, u);\n })).next((function() {\n return u;\n }));\n })).then((function(t) {\n return n.kn = i, t;\n }));\n}\n\n/**\n * Populates document change buffer with documents from backend or a bundle.\n * Returns the document changes resulting from applying those documents.\n *\n * @param txn - Transaction to use to read existing documents from storage.\n * @param documentBuffer - Document buffer to collect the resulted changes to be\n * applied to storage.\n * @param documents - Documents to be applied.\n * @param globalVersion - A `SnapshotVersion` representing the read time if all\n * documents have the same read time.\n * @param documentVersions - A DocumentKey-to-SnapshotVersion map if documents\n * have their own read time.\n *\n * Note: this function will use `documentVersions` if it is defined;\n * when it is not defined, resorts to `globalVersion`.\n */ function Qi(t, e, n, r, \n// TODO(wuandy): We could add `readTime` to MaybeDocument instead to remove\n// this parameter.\ni) {\n var o = sn();\n return n.forEach((function(t) {\n return o = o.add(t);\n })), e.getEntries(t, o).next((function(t) {\n var o = Ze();\n return n.forEach((function(n, s) {\n var u = t.get(n), a = (null == i ? void 0 : i.get(n)) || r;\n // Note: The order of the steps below is important, since we want\n // to ensure that rejected limbo resolutions (which fabricate\n // NoDocuments with SnapshotVersion.min()) never add documents to\n // cache.\n s.isNoDocument() && s.version.isEqual(K.min()) ? (\n // NoDocuments with SnapshotVersion.min() are used in manufactured\n // events. We remove these documents from cache since we lost\n // access.\n e.removeEntry(n, a), o = o.insert(n, s)) : !u.isValidDocument() || s.version.compareTo(u.version) > 0 || 0 === s.version.compareTo(u.version) && u.hasPendingWrites ? (e.addEntry(s, a), \n o = o.insert(n, s)) : C(\"LocalStore\", \"Ignoring outdated watch update for \", n, \". Current version:\", u.version, \" Watch version:\", s.version);\n })), o;\n }))\n /**\n * Gets the mutation batch after the passed in batchId in the mutation queue\n * or null if empty.\n * @param afterBatchId - If provided, the batch to search after.\n * @returns The next mutation or null if there wasn't one.\n */;\n}\n\nfunction zi(t, e) {\n var n = F(t);\n return n.persistence.runTransaction(\"Get next mutation batch\", \"readonly\", (function(t) {\n return void 0 === e && (e = -1), n._n.getNextMutationBatchAfterBatchId(t, e);\n }));\n}\n\n/**\n * Reads the current value of a Document with a given key or null if not\n * found - used for testing.\n */\n/**\n * Assigns the given target an internal ID so that its results can be pinned so\n * they don't get GC'd. A target must be allocated in the local store before\n * the store can be used to manage its view.\n *\n * Allocating an already allocated `Target` will return the existing `TargetData`\n * for that `Target`.\n */ function Wi(t, e) {\n var n = F(t);\n return n.persistence.runTransaction(\"Allocate target\", \"readwrite\", (function(t) {\n var r;\n return n.qe.getTargetData(t, e).next((function(i) {\n return i ? (\n // This target has been listened to previously, so reuse the\n // previous targetID.\n // TODO(mcg): freshen last accessed date?\n r = i, Ir.resolve(r)) : n.qe.allocateTargetId(t).next((function(i) {\n return r = new Pr(e, i, 0 /* Listen */ , t.currentSequenceNumber), n.qe.addTargetData(t, r).next((function() {\n return r;\n }));\n }));\n }));\n })).then((function(t) {\n // If Multi-Tab is enabled, the existing target data may be newer than\n // the in-memory data\n var r = n.kn.get(t.targetId);\n return (null === r || t.snapshotVersion.compareTo(r.snapshotVersion) > 0) && (n.kn = n.kn.insert(t.targetId, t), \n n.Fn.set(e, t.targetId)), t;\n }));\n}\n\n/**\n * Returns the TargetData as seen by the LocalStore, including updates that may\n * have not yet been persisted to the TargetCache.\n */\n// Visible for testing.\n/**\n * Unpins all the documents associated with the given target. If\n * `keepPersistedTargetData` is set to false and Eager GC enabled, the method\n * directly removes the associated target data from the target cache.\n *\n * Releasing a non-existing `Target` is a no-op.\n */\n// PORTING NOTE: `keepPersistedTargetData` is multi-tab only.\nfunction Hi(t, e, i) {\n return n(this, void 0, void 0, (function() {\n var n, o, s, u;\n return r(this, (function(r) {\n switch (r.label) {\n case 0:\n n = F(t), o = n.kn.get(e), s = i ? \"readwrite\" : \"readwrite-primary\", r.label = 1;\n\n case 1:\n return r.trys.push([ 1, 4, , 5 ]), i ? [ 3 /*break*/ , 3 ] : [ 4 /*yield*/ , n.persistence.runTransaction(\"Release target\", s, (function(t) {\n return n.persistence.referenceDelegate.removeTarget(t, o);\n })) ];\n\n case 2:\n r.sent(), r.label = 3;\n\n case 3:\n return [ 3 /*break*/ , 5 ];\n\n case 4:\n if (!Nr(u = r.sent())) throw u;\n // All `releaseTarget` does is record the final metadata state for the\n // target, but we've been recording this periodically during target\n // activity. If we lose this write this could cause a very slight\n // difference in the order of target deletion during GC, but we\n // don't define exact LRU semantics so this is acceptable.\n return C(\"LocalStore\", \"Failed to update sequence numbers for target \" + e + \": \" + u), \n [ 3 /*break*/ , 5 ];\n\n case 5:\n return n.kn = n.kn.remove(e), n.Fn.delete(o.target), [ 2 /*return*/ ];\n }\n }));\n }));\n}\n\n/**\n * Runs the specified query against the local store and returns the results,\n * potentially taking advantage of query data from previous executions (such\n * as the set of remote keys).\n *\n * @param usePreviousResults - Whether results from previous executions can\n * be used to optimize this query execution.\n */ function Yi(t, e, n) {\n var r = F(t), i = K.min(), o = sn();\n return r.persistence.runTransaction(\"Execute query\", \"readonly\", (function(t) {\n return function(t, e, n) {\n var r = F(t), i = r.Fn.get(n);\n return void 0 !== i ? Ir.resolve(r.kn.get(i)) : r.qe.getTargetData(e, n);\n }(r, t, ne(e)).next((function(e) {\n if (e) return i = e.lastLimboFreeSnapshotVersion, r.qe.getMatchingKeysForTargetId(t, e.targetId).next((function(t) {\n o = t;\n }));\n })).next((function() {\n return r.xn.getDocumentsMatchingQuery(t, e, n ? i : K.min(), n ? o : sn());\n })).next((function(t) {\n return {\n documents: t,\n Bn: o\n };\n }));\n }));\n}\n\n// PORTING NOTE: Multi-Tab only.\nfunction $i(t, e) {\n var n = F(t), r = F(n.qe), i = n.kn.get(e);\n return i ? Promise.resolve(i.target) : n.persistence.runTransaction(\"Get target data\", \"readonly\", (function(t) {\n return r.lt(t, e).next((function(t) {\n return t ? t.target : null;\n }));\n }));\n}\n\n/**\n * Returns the set of documents that have been updated since the last call.\n * If this is the first call, returns the set of changes since client\n * initialization. Further invocations will return document that have changed\n * since the prior call.\n */\n// PORTING NOTE: Multi-Tab only.\nfunction Xi(t) {\n var e = F(t);\n return e.persistence.runTransaction(\"Get new document changes\", \"readonly\", (function(t) {\n return function(t, e, n) {\n var r = F(t), i = Ze(), o = qr(n), s = Ni(e), u = IDBKeyRange.lowerBound(o, !0);\n return s.$t({\n index: ar.readTimeIndex,\n range: u\n }, (function(t, e) {\n // Unlike `getEntry()` and others, `getNewDocumentChanges()` parses\n // the documents directly since we want to keep sentinel deletes.\n var n = Mr(r.R, e);\n i = i.insert(n.key, n), o = e.readTime;\n })).next((function() {\n return {\n wn: i,\n readTime: Ur(o)\n };\n }));\n }(e.On, t, e.$n);\n })).then((function(t) {\n var n = t.wn, r = t.readTime;\n return e.$n = r, n;\n }));\n}\n\n/**\n * Reads the newest document change from persistence and moves the internal\n * synchronization marker forward so that calls to `getNewDocumentChanges()`\n * only return changes that happened after client initialization.\n */\n// PORTING NOTE: Multi-Tab only.\nfunction Ji(t) {\n return n(this, void 0, void 0, (function() {\n var e;\n return r(this, (function(n) {\n return [ 2 /*return*/ , (e = F(t)).persistence.runTransaction(\"Synchronize last document change read time\", \"readonly\", (function(t) {\n return function(t) {\n var e = Ni(t), n = K.min();\n // If there are no existing entries, we return SnapshotVersion.min().\n return e.$t({\n index: ar.readTimeIndex,\n reverse: !0\n }, (function(t, e, r) {\n e.readTime && (n = Ur(e.readTime)), r.done();\n })).next((function() {\n return n;\n }));\n }(t);\n })).then((function(t) {\n e.$n = t;\n })) ];\n }));\n }));\n}\n\n/**\n * Creates a new target using the given bundle name, which will be used to\n * hold the keys of all documents from the bundle in query-document mappings.\n * This ensures that the loaded documents do not get garbage collected\n * right away.\n */\n/**\n * Applies the documents from a bundle to the \"ground-state\" (remote)\n * documents.\n *\n * LocalDocuments are re-calculated if there are remaining mutations in the\n * queue.\n */ function Zi(t, e, i, o) {\n return n(this, void 0, void 0, (function() {\n var n, s, u, a, c, h, f, l, d, p;\n return r(this, (function(r) {\n switch (r.label) {\n case 0:\n for (n = F(t), s = sn(), u = Ze(), a = rn(), c = 0, h = i; c < h.length; c++) f = h[c], \n l = e.qn(f.metadata.name), f.document && (s = s.add(l)), u = u.insert(l, e.Un(f)), \n a = a.insert(l, e.Kn(f.metadata.readTime));\n return d = n.On.newChangeBuffer({\n trackRemovals: !0\n }), [ 4 /*yield*/ , Wi(n, function(t) {\n // It is OK that the path used for the query is not valid, because this will\n // not be read and queried.\n return ne(Yt(H.fromString(\"__bundle__/docs/\" + t)));\n }(o)) ];\n\n case 1:\n // Allocates a target to hold all document keys from the bundle, such that\n // they will not get garbage collected right away.\n return p = r.sent(), [ 2 /*return*/ , n.persistence.runTransaction(\"Apply bundle documents\", \"readwrite\", (function(t) {\n return Qi(t, d, u, K.min(), a).next((function(e) {\n return d.apply(t), e;\n })).next((function(e) {\n return n.qe.removeMatchingKeysForTargetId(t, p.targetId).next((function() {\n return n.qe.addMatchingKeys(t, s, p.targetId);\n })).next((function() {\n return n.Mn.En(t, e);\n })).next((function() {\n return e;\n }));\n }));\n })) ];\n }\n }));\n }));\n}\n\n/**\n * Returns a promise of a boolean to indicate if the given bundle has already\n * been loaded and the create time is newer than the current loading bundle.\n */\n/**\n * Saves the given `NamedQuery` to local persistence.\n */ function to(t, e, i) {\n return void 0 === i && (i = sn()), n(this, void 0, void 0, (function() {\n var n, o;\n return r(this, (function(r) {\n switch (r.label) {\n case 0:\n return [ 4 /*yield*/ , Wi(t, ne(zr(e.bundledQuery))) ];\n\n case 1:\n return n = r.sent(), [ 2 /*return*/ , (o = F(t)).persistence.runTransaction(\"Save named query\", \"readwrite\", (function(t) {\n var r = En(e.readTime);\n // Simply save the query itself if it is older than what the SDK already\n // has.\n if (n.snapshotVersion.compareTo(r) >= 0) return o.Ke.saveNamedQuery(t, e);\n // Update existing target data because the query from the bundle is newer.\n var s = n.withResumeToken(J.EMPTY_BYTE_STRING, r);\n return o.kn = o.kn.insert(s.targetId, s), o.qe.updateTargetData(t, s).next((function() {\n return o.qe.removeMatchingKeysForTargetId(t, n.targetId);\n })).next((function() {\n return o.qe.addMatchingKeys(t, i, n.targetId);\n })).next((function() {\n return o.Ke.saveNamedQuery(t, e);\n }));\n })) ];\n }\n }));\n }));\n}\n\n/**\n * @license\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */ var eo = /** @class */ function() {\n function t(t) {\n this.R = t, this.Qn = new Map, this.jn = new Map;\n }\n return t.prototype.getBundleMetadata = function(t, e) {\n return Ir.resolve(this.Qn.get(e));\n }, t.prototype.saveBundleMetadata = function(t, e) {\n /** Decodes a BundleMetadata proto into a BundleMetadata object. */\n var n;\n return this.Qn.set(e.id, {\n id: (n = e).id,\n version: n.version,\n createTime: En(n.createTime)\n }), Ir.resolve();\n }, t.prototype.getNamedQuery = function(t, e) {\n return Ir.resolve(this.jn.get(e));\n }, t.prototype.saveNamedQuery = function(t, e) {\n return this.jn.set(e.name, function(t) {\n return {\n name: t.name,\n query: zr(t.bundledQuery),\n readTime: En(t.readTime)\n };\n }(e)), Ir.resolve();\n }, t;\n}(), no = /** @class */ function() {\n function t() {\n // A set of outstanding references to a document sorted by key.\n this.Wn = new $e(ro.Gn), \n // A set of outstanding references to a document sorted by target id.\n this.zn = new $e(ro.Hn)\n /** Returns true if the reference set contains no references. */;\n }\n return t.prototype.isEmpty = function() {\n return this.Wn.isEmpty();\n }, \n /** Adds a reference to the given document key for the given ID. */ t.prototype.addReference = function(t, e) {\n var n = new ro(t, e);\n this.Wn = this.Wn.add(n), this.zn = this.zn.add(n);\n }, \n /** Add references to the given document keys for the given ID. */ t.prototype.Jn = function(t, e) {\n var n = this;\n t.forEach((function(t) {\n return n.addReference(t, e);\n }));\n }, \n /**\n * Removes a reference to the given document key for the given\n * ID.\n */\n t.prototype.removeReference = function(t, e) {\n this.Yn(new ro(t, e));\n }, t.prototype.Xn = function(t, e) {\n var n = this;\n t.forEach((function(t) {\n return n.removeReference(t, e);\n }));\n }, \n /**\n * Clears all references with a given ID. Calls removeRef() for each key\n * removed.\n */\n t.prototype.Zn = function(t) {\n var e = this, n = new ct(new H([])), r = new ro(n, t), i = new ro(n, t + 1), o = [];\n return this.zn.forEachInRange([ r, i ], (function(t) {\n e.Yn(t), o.push(t.key);\n })), o;\n }, t.prototype.ts = function() {\n var t = this;\n this.Wn.forEach((function(e) {\n return t.Yn(e);\n }));\n }, t.prototype.Yn = function(t) {\n this.Wn = this.Wn.delete(t), this.zn = this.zn.delete(t);\n }, t.prototype.es = function(t) {\n var e = new ct(new H([])), n = new ro(e, t), r = new ro(e, t + 1), i = sn();\n return this.zn.forEachInRange([ n, r ], (function(t) {\n i = i.add(t.key);\n })), i;\n }, t.prototype.containsKey = function(t) {\n var e = new ro(t, 0), n = this.Wn.firstAfterOrEqual(e);\n return null !== n && t.isEqual(n.key);\n }, t;\n}(), ro = /** @class */ function() {\n function t(t, e) {\n this.key = t, this.ns = e\n /** Compare by key then by ID */;\n }\n return t.Gn = function(t, e) {\n return ct.comparator(t.key, e.key) || q(t.ns, e.ns);\n }, \n /** Compare by ID then by key */ t.Hn = function(t, e) {\n return q(t.ns, e.ns) || ct.comparator(t.key, e.key);\n }, t;\n}(), io = /** @class */ function() {\n function t(t, e) {\n this.Ut = t, this.referenceDelegate = e, \n /**\n * The set of all mutations that have been sent but not yet been applied to\n * the backend.\n */\n this._n = [], \n /** Next value to use when assigning sequential IDs to each mutation batch. */\n this.ss = 1, \n /** An ordered mapping between documents and the mutations batch IDs. */\n this.rs = new $e(ro.Gn);\n }\n return t.prototype.checkEmpty = function(t) {\n return Ir.resolve(0 === this._n.length);\n }, t.prototype.addMutationBatch = function(t, e, n, r) {\n var i = this.ss;\n this.ss++, this._n.length > 0 && this._n[this._n.length - 1];\n var o = new Lr(i, e, n, r);\n this._n.push(o);\n // Track references by document key and index collection parents.\n for (var s = 0, u = r; s < u.length; s++) {\n var a = u[s];\n this.rs = this.rs.add(new ro(a.key, i)), this.Ut.addToCollectionParentIndex(t, a.key.path.popLast());\n }\n return Ir.resolve(o);\n }, t.prototype.lookupMutationBatch = function(t, e) {\n return Ir.resolve(this.os(e));\n }, t.prototype.getNextMutationBatchAfterBatchId = function(t, e) {\n var n = e + 1, r = this.cs(n), i = r < 0 ? 0 : r;\n // The requested batchId may still be out of range so normalize it to the\n // start of the queue.\n return Ir.resolve(this._n.length > i ? this._n[i] : null);\n }, t.prototype.getHighestUnacknowledgedBatchId = function() {\n return Ir.resolve(0 === this._n.length ? -1 : this.ss - 1);\n }, t.prototype.getAllMutationBatches = function(t) {\n return Ir.resolve(this._n.slice());\n }, t.prototype.getAllMutationBatchesAffectingDocumentKey = function(t, e) {\n var n = this, r = new ro(e, 0), i = new ro(e, Number.POSITIVE_INFINITY), o = [];\n return this.rs.forEachInRange([ r, i ], (function(t) {\n var e = n.os(t.ns);\n o.push(e);\n })), Ir.resolve(o);\n }, t.prototype.getAllMutationBatchesAffectingDocumentKeys = function(t, e) {\n var n = this, r = new $e(q);\n return e.forEach((function(t) {\n var e = new ro(t, 0), i = new ro(t, Number.POSITIVE_INFINITY);\n n.rs.forEachInRange([ e, i ], (function(t) {\n r = r.add(t.ns);\n }));\n })), Ir.resolve(this.us(r));\n }, t.prototype.getAllMutationBatchesAffectingQuery = function(t, e) {\n // Use the query path as a prefix for testing if a document matches the\n // query.\n var n = e.path, r = n.length + 1, i = n;\n // Construct a document reference for actually scanning the index. Unlike\n // the prefix the document key in this reference must have an even number of\n // segments. The empty segment can be used a suffix of the query path\n // because it precedes all other segments in an ordered traversal.\n ct.isDocumentKey(i) || (i = i.child(\"\"));\n var o = new ro(new ct(i), 0), s = new $e(q);\n // Find unique batchIDs referenced by all documents potentially matching the\n // query.\n return this.rs.forEachWhile((function(t) {\n var e = t.key.path;\n return !!n.isPrefixOf(e) && (\n // Rows with document keys more than one segment longer than the query\n // path can't be matches. For example, a query on 'rooms' can't match\n // the document /rooms/abc/messages/xyx.\n // TODO(mcg): we'll need a different scanner when we implement\n // ancestor queries.\n e.length === r && (s = s.add(t.ns)), !0);\n }), o), Ir.resolve(this.us(s));\n }, t.prototype.us = function(t) {\n var e = this, n = [];\n // Construct an array of matching batches, sorted by batchID to ensure that\n // multiple mutations affecting the same document key are applied in order.\n return t.forEach((function(t) {\n var r = e.os(t);\n null !== r && n.push(r);\n })), n;\n }, t.prototype.removeMutationBatch = function(t, e) {\n var n = this;\n P(0 === this.hs(e.batchId, \"removed\")), this._n.shift();\n var r = this.rs;\n return Ir.forEach(e.mutations, (function(i) {\n var o = new ro(i.key, e.batchId);\n return r = r.delete(o), n.referenceDelegate.markPotentiallyOrphaned(t, i.key);\n })).next((function() {\n n.rs = r;\n }));\n }, t.prototype.Gt = function(t) {\n // No-op since the memory mutation queue does not maintain a separate cache.\n }, t.prototype.containsKey = function(t, e) {\n var n = new ro(e, 0), r = this.rs.firstAfterOrEqual(n);\n return Ir.resolve(e.isEqual(r && r.key));\n }, t.prototype.performConsistencyCheck = function(t) {\n return this._n.length, Ir.resolve();\n }, \n /**\n * Finds the index of the given batchId in the mutation queue and asserts that\n * the resulting index is within the bounds of the queue.\n *\n * @param batchId - The batchId to search for\n * @param action - A description of what the caller is doing, phrased in passive\n * form (e.g. \"acknowledged\" in a routine that acknowledges batches).\n */\n t.prototype.hs = function(t, e) {\n return this.cs(t);\n }, \n /**\n * Finds the index of the given batchId in the mutation queue. This operation\n * is O(1).\n *\n * @returns The computed index of the batch with the given batchId, based on\n * the state of the queue. Note this index can be negative if the requested\n * batchId has already been remvoed from the queue or past the end of the\n * queue if the batchId is larger than the last added batch.\n */\n t.prototype.cs = function(t) {\n return 0 === this._n.length ? 0 : t - this._n[0].batchId;\n // Examine the front of the queue to figure out the difference between the\n // batchId and indexes in the array. Note that since the queue is ordered\n // by batchId, if the first batch has a larger batchId then the requested\n // batchId doesn't exist in the queue.\n }, \n /**\n * A version of lookupMutationBatch that doesn't return a promise, this makes\n * other functions that uses this code easier to read and more efficent.\n */\n t.prototype.os = function(t) {\n var e = this.cs(t);\n return e < 0 || e >= this._n.length ? null : this._n[e];\n }, t;\n}(), oo = /** @class */ function() {\n /**\n * @param sizer - Used to assess the size of a document. For eager GC, this is\n * expected to just return 0 to avoid unnecessarily doing the work of\n * calculating the size.\n */\n function t(t, e) {\n this.Ut = t, this.ls = e, \n /** Underlying cache of documents and their read times. */\n this.docs = new We(ct.comparator), \n /** Size of all cached documents. */\n this.size = 0\n /**\n * Adds the supplied entry to the cache and updates the cache size as appropriate.\n *\n * All calls of `addEntry` are required to go through the RemoteDocumentChangeBuffer\n * returned by `newChangeBuffer()`.\n */;\n }\n return t.prototype.addEntry = function(t, e, n) {\n var r = e.key, i = this.docs.get(r), o = i ? i.size : 0, s = this.ls(e);\n return this.docs = this.docs.insert(r, {\n document: e.clone(),\n size: s,\n readTime: n\n }), this.size += s - o, this.Ut.addToCollectionParentIndex(t, r.path.popLast());\n }, \n /**\n * Removes the specified entry from the cache and updates the cache size as appropriate.\n *\n * All calls of `removeEntry` are required to go through the RemoteDocumentChangeBuffer\n * returned by `newChangeBuffer()`.\n */\n t.prototype.removeEntry = function(t) {\n var e = this.docs.get(t);\n e && (this.docs = this.docs.remove(t), this.size -= e.size);\n }, t.prototype.getEntry = function(t, e) {\n var n = this.docs.get(e);\n return Ir.resolve(n ? n.document.clone() : Nt.newInvalidDocument(e));\n }, t.prototype.getEntries = function(t, e) {\n var n = this, r = Ze();\n return e.forEach((function(t) {\n var e = n.docs.get(t);\n r = r.insert(t, e ? e.document.clone() : Nt.newInvalidDocument(t));\n })), Ir.resolve(r);\n }, t.prototype.getDocumentsMatchingQuery = function(t, e, n) {\n for (var r = Ze(), i = new ct(e.path.child(\"\")), o = this.docs.getIteratorFrom(i)\n // Documents are ordered by key, so we can use a prefix scan to narrow down\n // the documents we need to match the query against.\n ; o.hasNext(); ) {\n var s = o.getNext(), u = s.key, a = s.value, c = a.document, h = a.readTime;\n if (!e.path.isPrefixOf(u.path)) break;\n h.compareTo(n) <= 0 || ue(e, c) && (r = r.insert(c.key, c.clone()));\n }\n return Ir.resolve(r);\n }, t.prototype.fs = function(t, e) {\n return Ir.forEach(this.docs, (function(t) {\n return e(t);\n }));\n }, t.prototype.newChangeBuffer = function(t) {\n // `trackRemovals` is ignores since the MemoryRemoteDocumentCache keeps\n // a separate changelog and does not need special handling for removals.\n return new so(this);\n }, t.prototype.getSize = function(t) {\n return Ir.resolve(this.size);\n }, t;\n}(), so = /** @class */ function(e) {\n function n(t) {\n var n = this;\n return (n = e.call(this) || this).Ie = t, n;\n }\n return t(n, e), n.prototype.applyChanges = function(t) {\n var e = this, n = [];\n return this.changes.forEach((function(r, i) {\n i.document.isValidDocument() ? n.push(e.Ie.addEntry(t, i.document, e.getReadTime(r))) : e.Ie.removeEntry(r);\n })), Ir.waitFor(n);\n }, n.prototype.getFromCache = function(t, e) {\n return this.Ie.getEntry(t, e);\n }, n.prototype.getAllFromCache = function(t, e) {\n return this.Ie.getEntries(t, e);\n }, n;\n}(Ti), uo = /** @class */ function() {\n function t(t) {\n this.persistence = t, \n /**\n * Maps a target to the data about that target\n */\n this.ds = new Ii((function(t) {\n return kt(t);\n }), Ct), \n /** The last received snapshot version. */\n this.lastRemoteSnapshotVersion = K.min(), \n /** The highest numbered target ID encountered. */\n this.highestTargetId = 0, \n /** The highest sequence number encountered. */\n this.ws = 0, \n /**\n * A ordered bidirectional mapping between documents and the remote target\n * IDs.\n */\n this._s = new no, this.targetCount = 0, this.ys = ci.Jt();\n }\n return t.prototype.forEachTarget = function(t, e) {\n return this.ds.forEach((function(t, n) {\n return e(n);\n })), Ir.resolve();\n }, t.prototype.getLastRemoteSnapshotVersion = function(t) {\n return Ir.resolve(this.lastRemoteSnapshotVersion);\n }, t.prototype.getHighestSequenceNumber = function(t) {\n return Ir.resolve(this.ws);\n }, t.prototype.allocateTargetId = function(t) {\n return this.highestTargetId = this.ys.next(), Ir.resolve(this.highestTargetId);\n }, t.prototype.setTargetsMetadata = function(t, e, n) {\n return n && (this.lastRemoteSnapshotVersion = n), e > this.ws && (this.ws = e), \n Ir.resolve();\n }, t.prototype.te = function(t) {\n this.ds.set(t.target, t);\n var e = t.targetId;\n e > this.highestTargetId && (this.ys = new ci(e), this.highestTargetId = e), t.sequenceNumber > this.ws && (this.ws = t.sequenceNumber);\n }, t.prototype.addTargetData = function(t, e) {\n return this.te(e), this.targetCount += 1, Ir.resolve();\n }, t.prototype.updateTargetData = function(t, e) {\n return this.te(e), Ir.resolve();\n }, t.prototype.removeTargetData = function(t, e) {\n return this.ds.delete(e.target), this._s.Zn(e.targetId), this.targetCount -= 1, \n Ir.resolve();\n }, t.prototype.removeTargets = function(t, e, n) {\n var r = this, i = 0, o = [];\n return this.ds.forEach((function(s, u) {\n u.sequenceNumber <= e && null === n.get(u.targetId) && (r.ds.delete(s), o.push(r.removeMatchingKeysForTargetId(t, u.targetId)), \n i++);\n })), Ir.waitFor(o).next((function() {\n return i;\n }));\n }, t.prototype.getTargetCount = function(t) {\n return Ir.resolve(this.targetCount);\n }, t.prototype.getTargetData = function(t, e) {\n var n = this.ds.get(e) || null;\n return Ir.resolve(n);\n }, t.prototype.addMatchingKeys = function(t, e, n) {\n return this._s.Jn(e, n), Ir.resolve();\n }, t.prototype.removeMatchingKeys = function(t, e, n) {\n this._s.Xn(e, n);\n var r = this.persistence.referenceDelegate, i = [];\n return r && e.forEach((function(e) {\n i.push(r.markPotentiallyOrphaned(t, e));\n })), Ir.waitFor(i);\n }, t.prototype.removeMatchingKeysForTargetId = function(t, e) {\n return this._s.Zn(e), Ir.resolve();\n }, t.prototype.getMatchingKeysForTargetId = function(t, e) {\n var n = this._s.es(e);\n return Ir.resolve(n);\n }, t.prototype.containsKey = function(t, e) {\n return Ir.resolve(this._s.containsKey(e));\n }, t;\n}(), ao = /** @class */ function() {\n /**\n * The constructor accepts a factory for creating a reference delegate. This\n * allows both the delegate and this instance to have strong references to\n * each other without having nullable fields that would then need to be\n * checked or asserted on every access.\n */\n function t(t, e) {\n var n = this;\n this.gs = {}, this.Ne = new S(0), this.xe = !1, this.xe = !0, this.referenceDelegate = t(this), \n this.qe = new uo(this), this.Ut = new $r, this.Ue = function(t, e) {\n return new oo(t, (function(t) {\n return n.referenceDelegate.ps(t);\n }));\n }(this.Ut), this.R = new Fr(e), this.Ke = new eo(this.R);\n }\n return t.prototype.start = function() {\n return Promise.resolve();\n }, t.prototype.shutdown = function() {\n // No durable state to ensure is closed on shutdown.\n return this.xe = !1, Promise.resolve();\n }, Object.defineProperty(t.prototype, \"started\", {\n get: function() {\n return this.xe;\n },\n enumerable: !1,\n configurable: !0\n }), t.prototype.setDatabaseDeletedListener = function() {\n // No op.\n }, t.prototype.setNetworkEnabled = function() {\n // No op.\n }, t.prototype.getIndexManager = function() {\n return this.Ut;\n }, t.prototype.getMutationQueue = function(t) {\n var e = this.gs[t.toKey()];\n return e || (e = new io(this.Ut, this.referenceDelegate), this.gs[t.toKey()] = e), \n e;\n }, t.prototype.getTargetCache = function() {\n return this.qe;\n }, t.prototype.getRemoteDocumentCache = function() {\n return this.Ue;\n }, t.prototype.getBundleCache = function() {\n return this.Ke;\n }, t.prototype.runTransaction = function(t, e, n) {\n var r = this;\n C(\"MemoryPersistence\", \"Starting transaction:\", t);\n var i = new co(this.Ne.next());\n return this.referenceDelegate.Es(), n(i).next((function(t) {\n return r.referenceDelegate.Ts(i).next((function() {\n return t;\n }));\n })).toPromise().then((function(t) {\n return i.raiseOnCommittedEvent(), t;\n }));\n }, t.prototype.Is = function(t, e) {\n return Ir.or(Object.values(this.gs).map((function(n) {\n return function() {\n return n.containsKey(t, e);\n };\n })));\n }, t;\n}(), co = /** @class */ function(e) {\n function n(t) {\n var n = this;\n return (n = e.call(this) || this).currentSequenceNumber = t, n;\n }\n return t(n, e), n;\n}(wr), ho = /** @class */ function() {\n function t(t) {\n this.persistence = t, \n /** Tracks all documents that are active in Query views. */\n this.As = new no, \n /** The list of documents that are potentially GCed after each transaction. */\n this.Rs = null;\n }\n return t.bs = function(e) {\n return new t(e);\n }, Object.defineProperty(t.prototype, \"vs\", {\n get: function() {\n if (this.Rs) return this.Rs;\n throw O();\n },\n enumerable: !1,\n configurable: !0\n }), t.prototype.addReference = function(t, e, n) {\n return this.As.addReference(n, e), this.vs.delete(n.toString()), Ir.resolve();\n }, t.prototype.removeReference = function(t, e, n) {\n return this.As.removeReference(n, e), this.vs.add(n.toString()), Ir.resolve();\n }, t.prototype.markPotentiallyOrphaned = function(t, e) {\n return this.vs.add(e.toString()), Ir.resolve();\n }, t.prototype.removeTarget = function(t, e) {\n var n = this;\n this.As.Zn(e.targetId).forEach((function(t) {\n return n.vs.add(t.toString());\n }));\n var r = this.persistence.getTargetCache();\n return r.getMatchingKeysForTargetId(t, e.targetId).next((function(t) {\n t.forEach((function(t) {\n return n.vs.add(t.toString());\n }));\n })).next((function() {\n return r.removeTargetData(t, e);\n }));\n }, t.prototype.Es = function() {\n this.Rs = new Set;\n }, t.prototype.Ts = function(t) {\n var e = this, n = this.persistence.getRemoteDocumentCache().newChangeBuffer();\n // Remove newly orphaned documents.\n return Ir.forEach(this.vs, (function(r) {\n var i = ct.fromPath(r);\n return e.Ps(t, i).next((function(t) {\n t || n.removeEntry(i);\n }));\n })).next((function() {\n return e.Rs = null, n.apply(t);\n }));\n }, t.prototype.updateLimboDocument = function(t, e) {\n var n = this;\n return this.Ps(t, e).next((function(t) {\n t ? n.vs.delete(e.toString()) : n.vs.add(e.toString());\n }));\n }, t.prototype.ps = function(t) {\n // For eager GC, we don't care about the document size, there are no size thresholds.\n return 0;\n }, t.prototype.Ps = function(t, e) {\n var n = this;\n return Ir.or([ function() {\n return Ir.resolve(n.As.containsKey(e));\n }, function() {\n return n.persistence.getTargetCache().containsKey(t, e);\n }, function() {\n return n.persistence.Is(t, e);\n } ]);\n }, t;\n}(), fo = /** @class */ function() {\n function t(t) {\n this.uid = t;\n }\n return t.prototype.isAuthenticated = function() {\n return null != this.uid;\n }, \n /**\n * Returns a key representing this user, suitable for inclusion in a\n * dictionary.\n */\n t.prototype.toKey = function() {\n return this.isAuthenticated() ? \"uid:\" + this.uid : \"anonymous-user\";\n }, t.prototype.isEqual = function(t) {\n return t.uid === this.uid;\n }, t;\n}();\n\n/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * A collection of references to a document from some kind of numbered entity\n * (either a target ID or batch ID). As references are added to or removed from\n * the set corresponding events are emitted to a registered garbage collector.\n *\n * Each reference is represented by a DocumentReference object. Each of them\n * contains enough information to uniquely identify the reference. They are all\n * stored primarily in a set sorted by key. A document is considered garbage if\n * there's no references in that set (this can be efficiently checked thanks to\n * sorting by key).\n *\n * ReferenceSet also keeps a secondary set that contains references sorted by\n * IDs. This one is used to efficiently implement removal of all references by\n * some target ID.\n */\n/** Assembles the key for a client state in WebStorage */\nfunction lo(t, e) {\n return \"firestore_clients_\" + t + \"_\" + e;\n}\n\n// The format of the WebStorage key that stores the mutation state is:\n// firestore_mutations__\n// (for unauthenticated users)\n// or: firestore_mutations___\n// 'user_uid' is last to avoid needing to escape '_' characters that it might\n// contain.\n/** Assembles the key for a mutation batch in WebStorage */ function po(t, e, n) {\n var r = \"firestore_mutations_\" + t + \"_\" + n;\n return e.isAuthenticated() && (r += \"_\" + e.uid), r;\n}\n\n// The format of the WebStorage key that stores a query target's metadata is:\n// firestore_targets__\n/** Assembles the key for a query state in WebStorage */ function yo(t, e) {\n return \"firestore_targets_\" + t + \"_\" + e;\n}\n\n// The WebStorage prefix that stores the primary tab's online state. The\n// format of the key is:\n// firestore_online_state_\n/**\n * Holds the state of a mutation batch, including its user ID, batch ID and\n * whether the batch is 'pending', 'acknowledged' or 'rejected'.\n */\n// Visible for testing\n/** A user with a null UID. */ fo.UNAUTHENTICATED = new fo(null), \n// TODO(mikelehen): Look into getting a proper uid-equivalent for\n// non-FirebaseAuth providers.\nfo.GOOGLE_CREDENTIALS = new fo(\"google-credentials-uid\"), fo.FIRST_PARTY = new fo(\"first-party-uid\"), \nfo.MOCK_USER = new fo(\"mock-user\");\n\nvar vo = /** @class */ function() {\n function t(t, e, n, r) {\n this.user = t, this.batchId = e, this.state = n, this.error = r\n /**\n * Parses a MutationMetadata from its JSON representation in WebStorage.\n * Logs a warning and returns null if the format of the data is not valid.\n */;\n }\n return t.Vs = function(e, n, r) {\n var i, o = JSON.parse(r), s = \"object\" == typeof o && -1 !== [ \"pending\", \"acknowledged\", \"rejected\" ].indexOf(o.state) && (void 0 === o.error || \"object\" == typeof o.error);\n return s && o.error && ((s = \"string\" == typeof o.error.message && \"string\" == typeof o.error.code) && (i = new D(o.error.code, o.error.message))), \n s ? new t(e, n, o.state, i) : (x(\"SharedClientState\", \"Failed to parse mutation state for ID '\" + n + \"': \" + r), \n null);\n }, t.prototype.Ss = function() {\n var t = {\n state: this.state,\n updateTimeMs: Date.now()\n };\n return this.error && (t.error = {\n code: this.error.code,\n message: this.error.message\n }), JSON.stringify(t);\n }, t;\n}(), mo = /** @class */ function() {\n function t(t, e, n) {\n this.targetId = t, this.state = e, this.error = n\n /**\n * Parses a QueryTargetMetadata from its JSON representation in WebStorage.\n * Logs a warning and returns null if the format of the data is not valid.\n */;\n }\n return t.Vs = function(e, n) {\n var r, i = JSON.parse(n), o = \"object\" == typeof i && -1 !== [ \"not-current\", \"current\", \"rejected\" ].indexOf(i.state) && (void 0 === i.error || \"object\" == typeof i.error);\n return o && i.error && ((o = \"string\" == typeof i.error.message && \"string\" == typeof i.error.code) && (r = new D(i.error.code, i.error.message))), \n o ? new t(e, i.state, r) : (x(\"SharedClientState\", \"Failed to parse target state for ID '\" + e + \"': \" + n), \n null);\n }, t.prototype.Ss = function() {\n var t = {\n state: this.state,\n updateTimeMs: Date.now()\n };\n return this.error && (t.error = {\n code: this.error.code,\n message: this.error.message\n }), JSON.stringify(t);\n }, t;\n}(), go = /** @class */ function() {\n function t(t, e) {\n this.clientId = t, this.activeTargetIds = e\n /**\n * Parses a RemoteClientState from the JSON representation in WebStorage.\n * Logs a warning and returns null if the format of the data is not valid.\n */;\n }\n return t.Vs = function(e, n) {\n for (var r = JSON.parse(n), i = \"object\" == typeof r && r.activeTargetIds instanceof Array, o = an(), s = 0; i && s < r.activeTargetIds.length; ++s) i = at(r.activeTargetIds[s]), \n o = o.add(r.activeTargetIds[s]);\n return i ? new t(e, o) : (x(\"SharedClientState\", \"Failed to parse client data for instance '\" + e + \"': \" + n), \n null);\n }, t;\n}(), wo = /** @class */ function() {\n function t(t, e) {\n this.clientId = t, this.onlineState = e\n /**\n * Parses a SharedOnlineState from its JSON representation in WebStorage.\n * Logs a warning and returns null if the format of the data is not valid.\n */;\n }\n return t.Vs = function(e) {\n var n = JSON.parse(e);\n return \"object\" == typeof n && -1 !== [ \"Unknown\", \"Online\", \"Offline\" ].indexOf(n.onlineState) && \"string\" == typeof n.clientId ? new t(n.clientId, n.onlineState) : (x(\"SharedClientState\", \"Failed to parse online state: \" + e), \n null);\n }, t;\n}(), bo = /** @class */ function() {\n function t() {\n this.activeTargetIds = an();\n }\n return t.prototype.Ds = function(t) {\n this.activeTargetIds = this.activeTargetIds.add(t);\n }, t.prototype.Cs = function(t) {\n this.activeTargetIds = this.activeTargetIds.delete(t);\n }, \n /**\n * Converts this entry into a JSON-encoded format we can use for WebStorage.\n * Does not encode `clientId` as it is part of the key in WebStorage.\n */\n t.prototype.Ss = function() {\n var t = {\n activeTargetIds: this.activeTargetIds.toArray(),\n updateTimeMs: Date.now()\n };\n return JSON.stringify(t);\n }, t;\n}(), Io = /** @class */ function() {\n function t(t, e, n, r, i) {\n this.window = t, this.Se = e, this.persistenceKey = n, this.Ns = r, this.syncEngine = null, \n this.onlineStateHandler = null, this.sequenceNumberHandler = null, this.xs = this.ks.bind(this), \n this.Fs = new We(q), this.started = !1, \n /**\n * Captures WebStorage events that occur before `start()` is called. These\n * events are replayed once `WebStorageSharedClientState` is started.\n */\n this.$s = [];\n // Escape the special characters mentioned here:\n // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions\n var o = n.replace(/[.*+?^${}()|[\\]\\\\]/g, \"\\\\$&\");\n this.storage = this.window.localStorage, this.currentUser = i, this.Os = lo(this.persistenceKey, this.Ns), \n this.Ms = \n /** Assembles the key for the current sequence number. */\n function(t) {\n return \"firestore_sequence_number_\" + t;\n }(this.persistenceKey), this.Fs = this.Fs.insert(this.Ns, new bo), this.Ls = new RegExp(\"^firestore_clients_\" + o + \"_([^_]*)$\"), \n this.Bs = new RegExp(\"^firestore_mutations_\" + o + \"_(\\\\d+)(?:_(.*))?$\"), this.qs = new RegExp(\"^firestore_targets_\" + o + \"_(\\\\d+)$\"), \n this.Us = \n /** Assembles the key for the online state of the primary tab. */\n function(t) {\n return \"firestore_online_state_\" + t;\n }(this.persistenceKey), this.Ks = function(t) {\n return \"firestore_bundle_loaded_\" + t;\n }(this.persistenceKey), \n // Rather than adding the storage observer during start(), we add the\n // storage observer during initialization. This ensures that we collect\n // events before other components populate their initial state (during their\n // respective start() calls). Otherwise, we might for example miss a\n // mutation that is added after LocalStore's start() processed the existing\n // mutations but before we observe WebStorage events.\n this.window.addEventListener(\"storage\", this.xs);\n }\n /** Returns 'true' if WebStorage is available in the current environment. */ return t.yt = function(t) {\n return !(!t || !t.localStorage);\n }, t.prototype.start = function() {\n return n(this, void 0, void 0, (function() {\n var t, e, n, i, o, s, u, a, c, h, f, l = this;\n return r(this, (function(r) {\n switch (r.label) {\n case 0:\n return [ 4 /*yield*/ , this.syncEngine.fn() ];\n\n case 1:\n for (t = r.sent(), e = 0, n = t; e < n.length; e++) (i = n[e]) !== this.Ns && (o = this.getItem(lo(this.persistenceKey, i))) && (s = go.Vs(i, o)) && (this.Fs = this.Fs.insert(s.clientId, s));\n for (this.Qs(), (u = this.storage.getItem(this.Us)) && (a = this.js(u)) && this.Ws(a), \n c = 0, h = this.$s; c < h.length; c++) f = h[c], this.ks(f);\n return this.$s = [], \n // Register a window unload hook to remove the client metadata entry from\n // WebStorage even if `shutdown()` was not called.\n this.window.addEventListener(\"pagehide\", (function() {\n return l.shutdown();\n })), this.started = !0, [ 2 /*return*/ ];\n }\n }));\n }));\n }, t.prototype.writeSequenceNumber = function(t) {\n this.setItem(this.Ms, JSON.stringify(t));\n }, t.prototype.getAllActiveQueryTargets = function() {\n return this.Gs(this.Fs);\n }, t.prototype.isActiveQueryTarget = function(t) {\n var e = !1;\n return this.Fs.forEach((function(n, r) {\n r.activeTargetIds.has(t) && (e = !0);\n })), e;\n }, t.prototype.addPendingMutation = function(t) {\n this.zs(t, \"pending\");\n }, t.prototype.updateMutationState = function(t, e, n) {\n this.zs(t, e, n), \n // Once a final mutation result is observed by other clients, they no longer\n // access the mutation's metadata entry. Since WebStorage replays events\n // in order, it is safe to delete the entry right after updating it.\n this.Hs(t);\n }, t.prototype.addLocalQueryTarget = function(t) {\n var e = \"not-current\";\n // Lookup an existing query state if the target ID was already registered\n // by another tab\n if (this.isActiveQueryTarget(t)) {\n var n = this.storage.getItem(yo(this.persistenceKey, t));\n if (n) {\n var r = mo.Vs(t, n);\n r && (e = r.state);\n }\n }\n return this.Js.Ds(t), this.Qs(), e;\n }, t.prototype.removeLocalQueryTarget = function(t) {\n this.Js.Cs(t), this.Qs();\n }, t.prototype.isLocalQueryTarget = function(t) {\n return this.Js.activeTargetIds.has(t);\n }, t.prototype.clearQueryState = function(t) {\n this.removeItem(yo(this.persistenceKey, t));\n }, t.prototype.updateQueryState = function(t, e, n) {\n this.Ys(t, e, n);\n }, t.prototype.handleUserChange = function(t, e, n) {\n var r = this;\n e.forEach((function(t) {\n r.Hs(t);\n })), this.currentUser = t, n.forEach((function(t) {\n r.addPendingMutation(t);\n }));\n }, t.prototype.setOnlineState = function(t) {\n this.Xs(t);\n }, t.prototype.notifyBundleLoaded = function() {\n this.Zs();\n }, t.prototype.shutdown = function() {\n this.started && (this.window.removeEventListener(\"storage\", this.xs), this.removeItem(this.Os), \n this.started = !1);\n }, t.prototype.getItem = function(t) {\n var e = this.storage.getItem(t);\n return C(\"SharedClientState\", \"READ\", t, e), e;\n }, t.prototype.setItem = function(t, e) {\n C(\"SharedClientState\", \"SET\", t, e), this.storage.setItem(t, e);\n }, t.prototype.removeItem = function(t) {\n C(\"SharedClientState\", \"REMOVE\", t), this.storage.removeItem(t);\n }, t.prototype.ks = function(t) {\n var e = this, i = t;\n // Note: The function is typed to take Event to be interface-compatible with\n // `Window.addEventListener`.\n if (i.storageArea === this.storage) {\n if (C(\"SharedClientState\", \"EVENT\", i.key, i.newValue), i.key === this.Os) return void x(\"Received WebStorage notification for local change. Another client might have garbage-collected our state\");\n this.Se.enqueueRetryable((function() {\n return n(e, void 0, void 0, (function() {\n var t, e, n, o, s, u;\n return r(this, (function(r) {\n if (this.started) {\n if (null !== i.key) if (this.Ls.test(i.key)) {\n if (null == i.newValue) return t = this.ti(i.key), [ 2 /*return*/ , this.ei(t, null) ];\n if (e = this.ni(i.key, i.newValue)) return [ 2 /*return*/ , this.ei(e.clientId, e) ];\n } else if (this.Bs.test(i.key)) {\n if (null !== i.newValue && (n = this.si(i.key, i.newValue))) return [ 2 /*return*/ , this.ii(n) ];\n } else if (this.qs.test(i.key)) {\n if (null !== i.newValue && (o = this.ri(i.key, i.newValue))) return [ 2 /*return*/ , this.oi(o) ];\n } else if (i.key === this.Us) {\n if (null !== i.newValue && (s = this.js(i.newValue))) return [ 2 /*return*/ , this.Ws(s) ];\n } else if (i.key === this.Ms) (u = function(t) {\n var e = S.o;\n if (null != t) try {\n var n = JSON.parse(t);\n P(\"number\" == typeof n), e = n;\n } catch (t) {\n x(\"SharedClientState\", \"Failed to read sequence number from WebStorage\", t);\n }\n return e;\n }(i.newValue)) !== S.o && this.sequenceNumberHandler(u); else if (i.key === this.Ks) return [ 2 /*return*/ , this.syncEngine.ci() ];\n } else this.$s.push(i);\n return [ 2 /*return*/ ];\n }));\n }));\n }));\n }\n }, Object.defineProperty(t.prototype, \"Js\", {\n get: function() {\n return this.Fs.get(this.Ns);\n },\n enumerable: !1,\n configurable: !0\n }), t.prototype.Qs = function() {\n this.setItem(this.Os, this.Js.Ss());\n }, t.prototype.zs = function(t, e, n) {\n var r = new vo(this.currentUser, t, e, n), i = po(this.persistenceKey, this.currentUser, t);\n this.setItem(i, r.Ss());\n }, t.prototype.Hs = function(t) {\n var e = po(this.persistenceKey, this.currentUser, t);\n this.removeItem(e);\n }, t.prototype.Xs = function(t) {\n var e = {\n clientId: this.Ns,\n onlineState: t\n };\n this.storage.setItem(this.Us, JSON.stringify(e));\n }, t.prototype.Ys = function(t, e, n) {\n var r = yo(this.persistenceKey, t), i = new mo(t, e, n);\n this.setItem(r, i.Ss());\n }, t.prototype.Zs = function() {\n this.setItem(this.Ks, \"value-not-used\");\n }, \n /**\n * Parses a client state key in WebStorage. Returns null if the key does not\n * match the expected key format.\n */\n t.prototype.ti = function(t) {\n var e = this.Ls.exec(t);\n return e ? e[1] : null;\n }, \n /**\n * Parses a client state in WebStorage. Returns 'null' if the value could not\n * be parsed.\n */\n t.prototype.ni = function(t, e) {\n var n = this.ti(t);\n return go.Vs(n, e);\n }, \n /**\n * Parses a mutation batch state in WebStorage. Returns 'null' if the value\n * could not be parsed.\n */\n t.prototype.si = function(t, e) {\n var n = this.Bs.exec(t), r = Number(n[1]), i = void 0 !== n[2] ? n[2] : null;\n return vo.Vs(new fo(i), r, e);\n }, \n /**\n * Parses a query target state from WebStorage. Returns 'null' if the value\n * could not be parsed.\n */\n t.prototype.ri = function(t, e) {\n var n = this.qs.exec(t), r = Number(n[1]);\n return mo.Vs(r, e);\n }, \n /**\n * Parses an online state from WebStorage. Returns 'null' if the value\n * could not be parsed.\n */\n t.prototype.js = function(t) {\n return wo.Vs(t);\n }, t.prototype.ii = function(t) {\n return n(this, void 0, void 0, (function() {\n return r(this, (function(e) {\n return t.user.uid === this.currentUser.uid ? [ 2 /*return*/ , this.syncEngine.ui(t.batchId, t.state, t.error) ] : (C(\"SharedClientState\", \"Ignoring mutation for non-active user \" + t.user.uid), \n [ 2 /*return*/ ]);\n }));\n }));\n }, t.prototype.oi = function(t) {\n return this.syncEngine.ai(t.targetId, t.state, t.error);\n }, t.prototype.ei = function(t, e) {\n var n = this, r = e ? this.Fs.insert(t, e) : this.Fs.remove(t), i = this.Gs(this.Fs), o = this.Gs(r), s = [], u = [];\n return o.forEach((function(t) {\n i.has(t) || s.push(t);\n })), i.forEach((function(t) {\n o.has(t) || u.push(t);\n })), this.syncEngine.hi(s, u).then((function() {\n n.Fs = r;\n }));\n }, t.prototype.Ws = function(t) {\n // We check whether the client that wrote this online state is still active\n // by comparing its client ID to the list of clients kept active in\n // IndexedDb. If a client does not update their IndexedDb client state\n // within 5 seconds, it is considered inactive and we don't emit an online\n // state event.\n this.Fs.get(t.clientId) && this.onlineStateHandler(t.onlineState);\n }, t.prototype.Gs = function(t) {\n var e = an();\n return t.forEach((function(t, n) {\n e = e.unionWith(n.activeTargetIds);\n })), e;\n }, t;\n}(), To = /** @class */ function() {\n function t() {\n this.li = new bo, this.fi = {}, this.onlineStateHandler = null, this.sequenceNumberHandler = null;\n }\n return t.prototype.addPendingMutation = function(t) {\n // No op.\n }, t.prototype.updateMutationState = function(t, e, n) {\n // No op.\n }, t.prototype.addLocalQueryTarget = function(t) {\n return this.li.Ds(t), this.fi[t] || \"not-current\";\n }, t.prototype.updateQueryState = function(t, e, n) {\n this.fi[t] = e;\n }, t.prototype.removeLocalQueryTarget = function(t) {\n this.li.Cs(t);\n }, t.prototype.isLocalQueryTarget = function(t) {\n return this.li.activeTargetIds.has(t);\n }, t.prototype.clearQueryState = function(t) {\n delete this.fi[t];\n }, t.prototype.getAllActiveQueryTargets = function() {\n return this.li.activeTargetIds;\n }, t.prototype.isActiveQueryTarget = function(t) {\n return this.li.activeTargetIds.has(t);\n }, t.prototype.start = function() {\n return this.li = new bo, Promise.resolve();\n }, t.prototype.handleUserChange = function(t, e, n) {\n // No op.\n }, t.prototype.setOnlineState = function(t) {\n // No op.\n }, t.prototype.shutdown = function() {}, t.prototype.writeSequenceNumber = function(t) {}, \n t.prototype.notifyBundleLoaded = function() {\n // No op.\n }, t;\n}(), _o = /** @class */ function() {\n function t() {}\n return t.prototype.di = function(t) {\n // No-op.\n }, t.prototype.shutdown = function() {\n // No-op.\n }, t;\n}(), Eo = /** @class */ function() {\n function t() {\n var t = this;\n this.wi = function() {\n return t._i();\n }, this.mi = function() {\n return t.yi();\n }, this.gi = [], this.pi();\n }\n return t.prototype.di = function(t) {\n this.gi.push(t);\n }, t.prototype.shutdown = function() {\n window.removeEventListener(\"online\", this.wi), window.removeEventListener(\"offline\", this.mi);\n }, t.prototype.pi = function() {\n window.addEventListener(\"online\", this.wi), window.addEventListener(\"offline\", this.mi);\n }, t.prototype._i = function() {\n C(\"ConnectivityMonitor\", \"Network connectivity changed: AVAILABLE\");\n for (var t = 0, e = this.gi; t < e.length; t++) {\n (0, e[t])(0 /* AVAILABLE */);\n }\n }, t.prototype.yi = function() {\n C(\"ConnectivityMonitor\", \"Network connectivity changed: UNAVAILABLE\");\n for (var t = 0, e = this.gi; t < e.length; t++) {\n (0, e[t])(1 /* UNAVAILABLE */);\n }\n }, \n // TODO(chenbrian): Consider passing in window either into this component or\n // here for testing via FakeWindow.\n /** Checks that all used attributes of window are available. */\n t.yt = function() {\n return \"undefined\" != typeof window && void 0 !== window.addEventListener && void 0 !== window.removeEventListener;\n }, t;\n}(), So = {\n BatchGetDocuments: \"batchGet\",\n Commit: \"commit\",\n RunQuery: \"runQuery\"\n}, No = /** @class */ function() {\n function t(t) {\n this.Ei = t.Ei, this.Ti = t.Ti;\n }\n return t.prototype.Ii = function(t) {\n this.Ai = t;\n }, t.prototype.Ri = function(t) {\n this.bi = t;\n }, t.prototype.onMessage = function(t) {\n this.vi = t;\n }, t.prototype.close = function() {\n this.Ti();\n }, t.prototype.send = function(t) {\n this.Ei(t);\n }, t.prototype.Pi = function() {\n this.Ai();\n }, t.prototype.Vi = function(t) {\n this.bi(t);\n }, t.prototype.Si = function(t) {\n this.vi(t);\n }, t;\n}(), Do = /** @class */ function(e) {\n function n(t) {\n var n = this;\n return (n = e.call(this, t) || this).forceLongPolling = t.forceLongPolling, n.autoDetectLongPolling = t.autoDetectLongPolling, \n n.useFetchStreams = t.useFetchStreams, n;\n }\n /**\n * Base class for all Rest-based connections to the backend (WebChannel and\n * HTTP).\n */\n return t(n, e), n.prototype.Fi = function(t, e, n, r) {\n return new Promise((function(i, o) {\n var s = new v;\n s.listenOnce(m.COMPLETE, (function() {\n try {\n switch (s.getLastErrorCode()) {\n case g.NO_ERROR:\n var e = s.getResponseJson();\n C(\"Connection\", \"XHR received:\", JSON.stringify(e)), i(e);\n break;\n\n case g.TIMEOUT:\n C(\"Connection\", 'RPC \"' + t + '\" timed out'), o(new D(N.DEADLINE_EXCEEDED, \"Request time out\"));\n break;\n\n case g.HTTP_ERROR:\n var n = s.getStatus();\n if (C(\"Connection\", 'RPC \"' + t + '\" failed with status:', n, \"response text:\", s.getResponseText()), \n n > 0) {\n var r = s.getResponseJson().error;\n if (r && r.status && r.message) {\n var u = function(t) {\n var e = t.toLowerCase().replace(/_/g, \"-\");\n return Object.values(N).indexOf(e) >= 0 ? e : N.UNKNOWN;\n }(r.status);\n o(new D(u, r.message));\n } else o(new D(N.UNKNOWN, \"Server responded with status \" + s.getStatus()));\n } else \n // If we received an HTTP_ERROR but there's no status code,\n // it's most probably a connection issue\n o(new D(N.UNAVAILABLE, \"Connection failed.\"));\n break;\n\n default:\n O();\n }\n } finally {\n C(\"Connection\", 'RPC \"' + t + '\" completed.');\n }\n }));\n var u = JSON.stringify(r);\n s.send(e, \"POST\", u, n, 15);\n }));\n }, n.prototype.Oi = function(t, e) {\n var n = [ this.Di, \"/\", \"google.firestore.v1.Firestore\", \"/\", t, \"/channel\" ], r = w(), i = b(), o = {\n // Required for backend stickiness, routing behavior is based on this\n // parameter.\n httpSessionIdParam: \"gsessionid\",\n initMessageHeaders: {},\n messageUrlParams: {\n // This param is used to improve routing and project isolation by the\n // backend and must be included in every request.\n database: \"projects/\" + this.databaseId.projectId + \"/databases/\" + this.databaseId.database\n },\n sendRawJson: !0,\n supportsCrossDomainXhr: !0,\n internalChannelParams: {\n // Override the default timeout (randomized between 10-20 seconds) since\n // a large write batch on a slow internet connection may take a long\n // time to send to the backend. Rather than have WebChannel impose a\n // tight timeout which could lead to infinite timeouts and retries, we\n // set it very large (5-10 minutes) and rely on the browser's builtin\n // timeouts to kick in if the request isn't working.\n forwardChannelRequestTimeoutMs: 6e5\n },\n forceLongPolling: this.forceLongPolling,\n detectBufferingProxy: this.autoDetectLongPolling\n };\n this.useFetchStreams && (o.xmlHttpFactory = new I({})), this.ki(o.initMessageHeaders, e), \n // Sending the custom headers we just added to request.initMessageHeaders\n // (Authorization, etc.) will trigger the browser to make a CORS preflight\n // request because the XHR will no longer meet the criteria for a \"simple\"\n // CORS request:\n // https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS#Simple_requests\n // Therefore to avoid the CORS preflight request (an extra network\n // roundtrip), we use the httpHeadersOverwriteParam option to specify that\n // the headers should instead be encoded into a special \"$httpHeaders\" query\n // parameter, which is recognized by the webchannel backend. This is\n // formally defined here:\n // https://github.com/google/closure-library/blob/b0e1815b13fb92a46d7c9b3c30de5d6a396a3245/closure/goog/net/rpc/httpcors.js#L32\n // TODO(b/145624756): There is a backend bug where $httpHeaders isn't respected if the request\n // doesn't have an Origin header. So we have to exclude a few browser environments that are\n // known to (sometimes) not include an Origin. See\n // https://github.com/firebase/firebase-js-sdk/issues/1491.\n s() || u() || a() || c() || h() || f() || (o.httpHeadersOverwriteParam = \"$httpHeaders\");\n var l = n.join(\"\");\n C(\"Connection\", \"Creating WebChannel: \" + l, o);\n var d = r.createWebChannel(l, o), p = !1, y = !1, v = new No({\n Ei: function(t) {\n y ? C(\"Connection\", \"Not sending because WebChannel is closed:\", t) : (p || (C(\"Connection\", \"Opening WebChannel transport.\"), \n d.open(), p = !0), C(\"Connection\", \"WebChannel sending:\", t), d.send(t));\n },\n Ti: function() {\n return d.close();\n }\n }), m = function(t, e, n) {\n // TODO(dimond): closure typing seems broken because WebChannel does\n // not implement goog.events.Listenable\n t.listen(e, (function(t) {\n try {\n n(t);\n } catch (t) {\n setTimeout((function() {\n throw t;\n }), 0);\n }\n }));\n };\n // WebChannel supports sending the first message with the handshake - saving\n // a network round trip. However, it will have to call send in the same\n // JS event loop as open. In order to enforce this, we delay actually\n // opening the WebChannel until send is called. Whether we have called\n // open is tracked with this variable.\n // Closure events are guarded and exceptions are swallowed, so catch any\n // exception and rethrow using a setTimeout so they become visible again.\n // Note that eventually this function could go away if we are confident\n // enough the code is exception free.\n return m(d, T.EventType.OPEN, (function() {\n y || C(\"Connection\", \"WebChannel transport opened.\");\n })), m(d, T.EventType.CLOSE, (function() {\n y || (y = !0, C(\"Connection\", \"WebChannel transport closed\"), v.Vi());\n })), m(d, T.EventType.ERROR, (function(t) {\n y || (y = !0, R(\"Connection\", \"WebChannel transport errored:\", t), v.Vi(new D(N.UNAVAILABLE, \"The operation could not be completed\")));\n })), m(d, T.EventType.MESSAGE, (function(t) {\n var e;\n if (!y) {\n var n = t.data[0];\n P(!!n);\n // TODO(b/35143891): There is a bug in One Platform that caused errors\n // (and only errors) to be wrapped in an extra array. To be forward\n // compatible with the bug we need to check either condition. The latter\n // can be removed once the fix has been rolled out.\n // Use any because msgData.error is not typed.\n var r = n, i = r.error || (null === (e = r[0]) || void 0 === e ? void 0 : e.error);\n if (i) {\n C(\"Connection\", \"WebChannel received error:\", i);\n // error.status will be a string like 'OK' or 'NOT_FOUND'.\n var o = i.status, s = \n /**\n * Maps an error Code from a GRPC status identifier like 'NOT_FOUND'.\n *\n * @returns The Code equivalent to the given status string or undefined if\n * there is no match.\n */\n function(t) {\n // lookup by string\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var e = Ue[t];\n if (void 0 !== e) return ze(e);\n }(o), u = i.message;\n void 0 === s && (s = N.INTERNAL, u = \"Unknown error status: \" + o + \" with message \" + i.message), \n // Mark closed so no further events are propagated\n y = !0, v.Vi(new D(s, u)), d.close();\n } else C(\"Connection\", \"WebChannel received:\", n), v.Si(n);\n }\n })), m(i, _.STAT_EVENT, (function(t) {\n t.stat === E.PROXY ? C(\"Connection\", \"Detected buffering proxy\") : t.stat === E.NOPROXY && C(\"Connection\", \"Detected no buffering proxy\");\n })), setTimeout((function() {\n // Technically we could/should wait for the WebChannel opened event,\n // but because we want to send the first message with the WebChannel\n // handshake we pretend the channel opened here (asynchronously), and\n // then delay the actual open until the first message is sent.\n v.Pi();\n }), 0), v;\n }, n;\n}(/** @class */ function() {\n function t(t) {\n this.databaseInfo = t, this.databaseId = t.databaseId;\n var e = t.ssl ? \"https\" : \"http\";\n this.Di = e + \"://\" + t.host, this.Ci = \"projects/\" + this.databaseId.projectId + \"/databases/\" + this.databaseId.database + \"/documents\";\n }\n return t.prototype.Ni = function(t, e, n, r) {\n var i = this.xi(t, e);\n C(\"RestConnection\", \"Sending: \", i, n);\n var o = {};\n return this.ki(o, r), this.Fi(t, i, o, n).then((function(t) {\n return C(\"RestConnection\", \"Received: \", t), t;\n }), (function(e) {\n throw R(\"RestConnection\", t + \" failed with error: \", e, \"url: \", i, \"request:\", n), \n e;\n }));\n }, t.prototype.$i = function(t, e, n, r) {\n // The REST API automatically aggregates all of the streamed results, so we\n // can just use the normal invoke() method.\n return this.Ni(t, e, n, r);\n }, \n /**\n * Modifies the headers for a request, adding any authorization token if\n * present and any additional headers for the request.\n */\n t.prototype.ki = function(t, e) {\n if (t[\"X-Goog-Api-Client\"] = \"gl-js/ fire/8.10.1\", \n // Content-Type: text/plain will avoid preflight requests which might\n // mess with CORS and redirects by proxies. If we add custom headers\n // we will need to change this code to potentially use the $httpOverwrite\n // parameter supported by ESF to avoid triggering preflight requests.\n t[\"Content-Type\"] = \"text/plain\", this.databaseInfo.appId && (t[\"X-Firebase-GMPID\"] = this.databaseInfo.appId), \n e) for (var n in e.authHeaders) e.authHeaders.hasOwnProperty(n) && (t[n] = e.authHeaders[n]);\n }, t.prototype.xi = function(t, e) {\n var n = So[t];\n return this.Di + \"/v1/\" + e + \":\" + n;\n }, t;\n}());\n\n/**\n * Holds the state of a query target, including its target ID and whether the\n * target is 'not-current', 'current' or 'rejected'.\n */\n// Visible for testing\n/**\n * @license\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/** Initializes the WebChannelConnection for the browser. */\n/**\n * @license\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/** The Platform's 'window' implementation or null if not available. */\nfunction Ao() {\n // `window` is not always available, e.g. in ReactNative and WebWorkers.\n // eslint-disable-next-line no-restricted-globals\n return \"undefined\" != typeof window ? window : null;\n}\n\n/** The Platform's 'document' implementation or null if not available. */ function ko() {\n // `document` is not always available, e.g. in ReactNative and WebWorkers.\n // eslint-disable-next-line no-restricted-globals\n return \"undefined\" != typeof document ? document : null;\n}\n\n/**\n * @license\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */ function Co(t) {\n return new bn(t, /* useProto3Json= */ !0);\n}\n\n/**\n * An instance of the Platform's 'TextEncoder' implementation.\n */\n/**\n * A helper for running delayed tasks following an exponential backoff curve\n * between attempts.\n *\n * Each delay is made up of a \"base\" delay which follows the exponential\n * backoff curve, and a +/- 50% \"jitter\" that is calculated and added to the\n * base delay. This prevents clients from accidentally synchronizing their\n * delays causing spikes of load to the backend.\n */ var xo = /** @class */ function() {\n function t(\n /**\n * The AsyncQueue to run backoff operations on.\n */\n t, \n /**\n * The ID to use when scheduling backoff operations on the AsyncQueue.\n */\n e, \n /**\n * The initial delay (used as the base delay on the first retry attempt).\n * Note that jitter will still be applied, so the actual delay could be as\n * little as 0.5*initialDelayMs.\n */\n n\n /**\n * The multiplier to use to determine the extended base delay after each\n * attempt.\n */ , r\n /**\n * The maximum base delay after which no further backoff is performed.\n * Note that jitter will still be applied, so the actual delay could be as\n * much as 1.5*maxDelayMs.\n */ , i) {\n void 0 === n && (n = 1e3), void 0 === r && (r = 1.5), void 0 === i && (i = 6e4), \n this.Se = t, this.timerId = e, this.Mi = n, this.Li = r, this.Bi = i, this.qi = 0, \n this.Ui = null, \n /** The last backoff attempt, as epoch milliseconds. */\n this.Ki = Date.now(), this.reset();\n }\n /**\n * Resets the backoff delay.\n *\n * The very next backoffAndWait() will have no delay. If it is called again\n * (i.e. due to an error), initialDelayMs (plus jitter) will be used, and\n * subsequent ones will increase according to the backoffFactor.\n */ return t.prototype.reset = function() {\n this.qi = 0;\n }, \n /**\n * Resets the backoff delay to the maximum delay (e.g. for use after a\n * RESOURCE_EXHAUSTED error).\n */\n t.prototype.Qi = function() {\n this.qi = this.Bi;\n }, \n /**\n * Returns a promise that resolves after currentDelayMs, and increases the\n * delay for any subsequent attempts. If there was a pending backoff operation\n * already, it will be canceled.\n */\n t.prototype.ji = function(t) {\n var e = this;\n // Cancel any pending backoff operation.\n this.cancel();\n // First schedule using the current base (which may be 0 and should be\n // honored as such).\n var n = Math.floor(this.qi + this.Wi()), r = Math.max(0, Date.now() - this.Ki), i = Math.max(0, n - r);\n // Guard against lastAttemptTime being in the future due to a clock change.\n i > 0 && C(\"ExponentialBackoff\", \"Backing off for \" + i + \" ms (base delay: \" + this.qi + \" ms, delay with jitter: \" + n + \" ms, last attempt: \" + r + \" ms ago)\"), \n this.Ui = this.Se.enqueueAfterDelay(this.timerId, i, (function() {\n return e.Ki = Date.now(), t();\n })), \n // Apply backoff factor to determine next delay and ensure it is within\n // bounds.\n this.qi *= this.Li, this.qi < this.Mi && (this.qi = this.Mi), this.qi > this.Bi && (this.qi = this.Bi);\n }, t.prototype.Gi = function() {\n null !== this.Ui && (this.Ui.skipDelay(), this.Ui = null);\n }, t.prototype.cancel = function() {\n null !== this.Ui && (this.Ui.cancel(), this.Ui = null);\n }, \n /** Returns a random value in the range [-currentBaseMs/2, currentBaseMs/2] */ t.prototype.Wi = function() {\n return (Math.random() - .5) * this.qi;\n }, t;\n}(), Ro = /** @class */ function() {\n function t(t, e, n, r, i, o) {\n this.Se = t, this.zi = n, this.Hi = r, this.Ji = i, this.listener = o, this.state = 0 /* Initial */ , \n /**\n * A close count that's incremented every time the stream is closed; used by\n * getCloseGuardedDispatcher() to invalidate callbacks that happen after\n * close.\n */\n this.Yi = 0, this.Xi = null, this.stream = null, this.Zi = new xo(t, e)\n /**\n * Returns true if start() has been called and no error has occurred. True\n * indicates the stream is open or in the process of opening (which\n * encompasses respecting backoff, getting auth tokens, and starting the\n * actual RPC). Use isOpen() to determine if the stream is open and ready for\n * outbound requests.\n */;\n }\n return t.prototype.tr = function() {\n return 1 /* Starting */ === this.state || 2 /* Open */ === this.state || 4 /* Backoff */ === this.state;\n }, \n /**\n * Returns true if the underlying RPC is open (the onOpen() listener has been\n * called) and the stream is ready for outbound requests.\n */\n t.prototype.er = function() {\n return 2 /* Open */ === this.state;\n }, \n /**\n * Starts the RPC. Only allowed if isStarted() returns false. The stream is\n * not immediately ready for use: onOpen() will be invoked when the RPC is\n * ready for outbound requests, at which point isOpen() will return true.\n *\n * When start returns, isStarted() will return true.\n */\n t.prototype.start = function() {\n 3 /* Error */ !== this.state ? this.auth() : this.nr();\n }, \n /**\n * Stops the RPC. This call is idempotent and allowed regardless of the\n * current isStarted() state.\n *\n * When stop returns, isStarted() and isOpen() will both return false.\n */\n t.prototype.stop = function() {\n return n(this, void 0, void 0, (function() {\n return r(this, (function(t) {\n switch (t.label) {\n case 0:\n return this.tr() ? [ 4 /*yield*/ , this.close(0 /* Initial */) ] : [ 3 /*break*/ , 2 ];\n\n case 1:\n t.sent(), t.label = 2;\n\n case 2:\n return [ 2 /*return*/ ];\n }\n }));\n }));\n }, \n /**\n * After an error the stream will usually back off on the next attempt to\n * start it. If the error warrants an immediate restart of the stream, the\n * sender can use this to indicate that the receiver should not back off.\n *\n * Each error will call the onClose() listener. That function can decide to\n * inhibit backoff if required.\n */\n t.prototype.sr = function() {\n this.state = 0 /* Initial */ , this.Zi.reset();\n }, \n /**\n * Marks this stream as idle. If no further actions are performed on the\n * stream for one minute, the stream will automatically close itself and\n * notify the stream's onClose() handler with Status.OK. The stream will then\n * be in a !isStarted() state, requiring the caller to start the stream again\n * before further use.\n *\n * Only streams that are in state 'Open' can be marked idle, as all other\n * states imply pending network operations.\n */\n t.prototype.ir = function() {\n var t = this;\n // Starts the idle time if we are in state 'Open' and are not yet already\n // running a timer (in which case the previous idle timeout still applies).\n this.er() && null === this.Xi && (this.Xi = this.Se.enqueueAfterDelay(this.zi, 6e4, (function() {\n return t.rr();\n })));\n }, \n /** Sends a message to the underlying stream. */ t.prototype.cr = function(t) {\n this.ur(), this.stream.send(t);\n }, \n /** Called by the idle timer when the stream should close due to inactivity. */ t.prototype.rr = function() {\n return n(this, void 0, void 0, (function() {\n return r(this, (function(t) {\n return this.er() ? [ 2 /*return*/ , this.close(0 /* Initial */) ] : [ 2 /*return*/ ];\n }));\n }));\n }, \n /** Marks the stream as active again. */ t.prototype.ur = function() {\n this.Xi && (this.Xi.cancel(), this.Xi = null);\n }, \n /**\n * Closes the stream and cleans up as necessary:\n *\n * * closes the underlying GRPC stream;\n * * calls the onClose handler with the given 'error';\n * * sets internal stream state to 'finalState';\n * * adjusts the backoff timer based on the error\n *\n * A new stream can be opened by calling start().\n *\n * @param finalState - the intended state of the stream after closing.\n * @param error - the error the connection was closed with.\n */\n t.prototype.close = function(t, e) {\n return n(this, void 0, void 0, (function() {\n return r(this, (function(n) {\n switch (n.label) {\n case 0:\n // Notify the listener that the stream closed.\n // Cancel any outstanding timers (they're guaranteed not to execute).\n return this.ur(), this.Zi.cancel(), \n // Invalidates any stream-related callbacks (e.g. from auth or the\n // underlying stream), guaranteeing they won't execute.\n this.Yi++, 3 /* Error */ !== t ? \n // If this is an intentional close ensure we don't delay our next connection attempt.\n this.Zi.reset() : e && e.code === N.RESOURCE_EXHAUSTED ? (\n // Log the error. (Probably either 'quota exceeded' or 'max queue length reached'.)\n x(e.toString()), x(\"Using maximum backoff delay to prevent overloading the backend.\"), \n this.Zi.Qi()) : e && e.code === N.UNAUTHENTICATED && \n // \"unauthenticated\" error means the token was rejected. Try force refreshing it in case it\n // just expired.\n this.Ji.invalidateToken(), \n // Clean up the underlying stream because we are no longer interested in events.\n null !== this.stream && (this.ar(), this.stream.close(), this.stream = null), \n // This state must be assigned before calling onClose() to allow the callback to\n // inhibit backoff or otherwise manipulate the state in its non-started state.\n this.state = t, [ 4 /*yield*/ , this.listener.Ri(e) ];\n\n case 1:\n // Cancel any outstanding timers (they're guaranteed not to execute).\n // Notify the listener that the stream closed.\n return n.sent(), [ 2 /*return*/ ];\n }\n }));\n }));\n }, \n /**\n * Can be overridden to perform additional cleanup before the stream is closed.\n * Calling super.tearDown() is not required.\n */\n t.prototype.ar = function() {}, t.prototype.auth = function() {\n var t = this;\n this.state = 1 /* Starting */;\n var e = this.hr(this.Yi), n = this.Yi;\n // TODO(mikelehen): Just use dispatchIfNotClosed, but see TODO below.\n this.Ji.getToken().then((function(e) {\n // Stream can be stopped while waiting for authentication.\n // TODO(mikelehen): We really should just use dispatchIfNotClosed\n // and let this dispatch onto the queue, but that opened a spec test can\n // of worms that I don't want to deal with in this PR.\n t.Yi === n && \n // Normally we'd have to schedule the callback on the AsyncQueue.\n // However, the following calls are safe to be called outside the\n // AsyncQueue since they don't chain asynchronous calls\n t.lr(e);\n }), (function(n) {\n e((function() {\n var e = new D(N.UNKNOWN, \"Fetching auth token failed: \" + n.message);\n return t.dr(e);\n }));\n }));\n }, t.prototype.lr = function(t) {\n var e = this, n = this.hr(this.Yi);\n this.stream = this.wr(t), this.stream.Ii((function() {\n n((function() {\n return e.state = 2 /* Open */ , e.listener.Ii();\n }));\n })), this.stream.Ri((function(t) {\n n((function() {\n return e.dr(t);\n }));\n })), this.stream.onMessage((function(t) {\n n((function() {\n return e.onMessage(t);\n }));\n }));\n }, t.prototype.nr = function() {\n var t = this;\n this.state = 4 /* Backoff */ , this.Zi.ji((function() {\n return n(t, void 0, void 0, (function() {\n return r(this, (function(t) {\n return this.state = 0 /* Initial */ , this.start(), [ 2 /*return*/ ];\n }));\n }));\n }));\n }, \n // Visible for tests\n t.prototype.dr = function(t) {\n // In theory the stream could close cleanly, however, in our current model\n // we never expect this to happen because if we stop a stream ourselves,\n // this callback will never be called. To prevent cases where we retry\n // without a backoff accidentally, we set the stream to error in all cases.\n return C(\"PersistentStream\", \"close with error: \" + t), this.stream = null, this.close(3 /* Error */ , t);\n }, \n /**\n * Returns a \"dispatcher\" function that dispatches operations onto the\n * AsyncQueue but only runs them if closeCount remains unchanged. This allows\n * us to turn auth / stream callbacks into no-ops if the stream is closed /\n * re-opened, etc.\n */\n t.prototype.hr = function(t) {\n var e = this;\n return function(n) {\n e.Se.enqueueAndForget((function() {\n return e.Yi === t ? n() : (C(\"PersistentStream\", \"stream callback skipped by getCloseGuardedDispatcher.\"), \n Promise.resolve());\n }));\n };\n }, t;\n}(), Lo = /** @class */ function(e) {\n function n(t, n, r, i, o) {\n var s = this;\n return (s = e.call(this, t, \"listen_stream_connection_backoff\" /* ListenStreamConnectionBackoff */ , \"listen_stream_idle\" /* ListenStreamIdle */ , n, r, o) || this).R = i, \n s;\n }\n return t(n, e), n.prototype.wr = function(t) {\n return this.Hi.Oi(\"Listen\", t);\n }, n.prototype.onMessage = function(t) {\n // A successful response means the stream is healthy\n this.Zi.reset();\n var e = function(t, e) {\n var n;\n if (\"targetChange\" in e) {\n e.targetChange;\n // proto3 default value is unset in JSON (undefined), so use 'NO_CHANGE'\n // if unset\n var r = function(t) {\n return \"NO_CHANGE\" === t ? 0 /* NoChange */ : \"ADD\" === t ? 1 /* Added */ : \"REMOVE\" === t ? 2 /* Removed */ : \"CURRENT\" === t ? 3 /* Current */ : \"RESET\" === t ? 4 /* Reset */ : O();\n }(e.targetChange.targetChangeType || \"NO_CHANGE\"), i = e.targetChange.targetIds || [], o = function(t, e) {\n return t.I ? (P(void 0 === e || \"string\" == typeof e), J.fromBase64String(e || \"\")) : (P(void 0 === e || e instanceof Uint8Array), \n J.fromUint8Array(e || new Uint8Array));\n }(t, e.targetChange.resumeToken), s = (u = e.targetChange.cause) && function(t) {\n var e = void 0 === t.code ? N.UNKNOWN : ze(t.code);\n return new D(e, t.message || \"\");\n }(u);\n n = new dn(r, i, o, s || null);\n } else if (\"documentChange\" in e) {\n e.documentChange, (r = e.documentChange).document, r.document.name, r.document.updateTime, \n i = An(t, r.document.name), o = En(r.document.updateTime);\n var u = new Et({\n mapValue: {\n fields: r.document.fields\n }\n }), a = (s = Nt.newFoundDocument(i, o, u), r.targetIds || []), c = r.removedTargetIds || [];\n n = new fn(a, c, s.key, s);\n } else if (\"documentDelete\" in e) e.documentDelete, (r = e.documentDelete).document, \n i = An(t, r.document), o = r.readTime ? En(r.readTime) : K.min(), u = Nt.newNoDocument(i, o), \n s = r.removedTargetIds || [], n = new fn([], s, u.key, u); else if (\"documentRemove\" in e) e.documentRemove, \n (r = e.documentRemove).document, i = An(t, r.document), o = r.removedTargetIds || [], \n n = new fn([], o, i, null); else {\n if (!(\"filter\" in e)) return O();\n e.filter;\n var h = e.filter;\n h.targetId, r = h.count || 0, i = new Ge(r), o = h.targetId, n = new ln(o, i);\n }\n return n;\n }(this.R, t), n = function(t) {\n // We have only reached a consistent snapshot for the entire stream if there\n // is a read_time set and it applies to all targets (i.e. the list of\n // targets is empty). The backend is guaranteed to send such responses.\n if (!(\"targetChange\" in t)) return K.min();\n var e = t.targetChange;\n return e.targetIds && e.targetIds.length ? K.min() : e.readTime ? En(e.readTime) : K.min();\n }(t);\n return this.listener._r(e, n);\n }, \n /**\n * Registers interest in the results of the given target. If the target\n * includes a resumeToken it will be included in the request. Results that\n * affect the target will be streamed back as WatchChange messages that\n * reference the targetId.\n */\n n.prototype.mr = function(t) {\n var e = {};\n e.database = xn(this.R), e.addTarget = function(t, e) {\n var n, r = e.target;\n return (n = xt(r) ? {\n documents: Mn(t, r)\n } : {\n query: Vn(t, r)\n }).targetId = e.targetId, e.resumeToken.approximateByteSize() > 0 ? n.resumeToken = Tn(t, e.resumeToken) : e.snapshotVersion.compareTo(K.min()) > 0 && (\n // TODO(wuandy): Consider removing above check because it is most likely true.\n // Right now, many tests depend on this behaviour though (leaving min() out\n // of serialization).\n n.readTime = In(t, e.snapshotVersion.toTimestamp())), n;\n }(this.R, t);\n var n = function(t, e) {\n var n = function(t, e) {\n switch (e) {\n case 0 /* Listen */ :\n return null;\n\n case 1 /* ExistenceFilterMismatch */ :\n return \"existence-filter-mismatch\";\n\n case 2 /* LimboResolution */ :\n return \"limbo-document\";\n\n default:\n return O();\n }\n }(0, e.purpose);\n return null == n ? null : {\n \"goog-listen-tags\": n\n };\n }(this.R, t);\n n && (e.labels = n), this.cr(e);\n }, \n /**\n * Unregisters interest in the results of the target associated with the\n * given targetId.\n */\n n.prototype.yr = function(t) {\n var e = {};\n e.database = xn(this.R), e.removeTarget = t, this.cr(e);\n }, n;\n}(Ro), Oo = /** @class */ function(e) {\n function n(t, n, r, i, o) {\n var s = this;\n return (s = e.call(this, t, \"write_stream_connection_backoff\" /* WriteStreamConnectionBackoff */ , \"write_stream_idle\" /* WriteStreamIdle */ , n, r, o) || this).R = i, \n s.gr = !1, s;\n }\n return t(n, e), Object.defineProperty(n.prototype, \"pr\", {\n /**\n * Tracks whether or not a handshake has been successfully exchanged and\n * the stream is ready to accept mutations.\n */\n get: function() {\n return this.gr;\n },\n enumerable: !1,\n configurable: !0\n }), \n // Override of PersistentStream.start\n n.prototype.start = function() {\n this.gr = !1, this.lastStreamToken = void 0, e.prototype.start.call(this);\n }, n.prototype.ar = function() {\n this.gr && this.Er([]);\n }, n.prototype.wr = function(t) {\n return this.Hi.Oi(\"Write\", t);\n }, n.prototype.onMessage = function(t) {\n if (\n // Always capture the last stream token.\n P(!!t.streamToken), this.lastStreamToken = t.streamToken, this.gr) {\n // A successful first write response means the stream is healthy,\n // Note, that we could consider a successful handshake healthy, however,\n // the write itself might be causing an error we want to back off from.\n this.Zi.reset();\n var e = function(t, e) {\n return t && t.length > 0 ? (P(void 0 !== e), t.map((function(t) {\n return function(t, e) {\n // NOTE: Deletes don't have an updateTime.\n var n = t.updateTime ? En(t.updateTime) : En(e);\n return n.isEqual(K.min()) && (\n // The Firestore Emulator currently returns an update time of 0 for\n // deletes of non-existing documents (rather than null). This breaks the\n // test \"get deleted doc while offline with source=cache\" as NoDocuments\n // with version 0 are filtered by IndexedDb's RemoteDocumentCache.\n // TODO(#2149): Remove this when Emulator is fixed\n n = En(e)), new Ne(n, t.transformResults || []);\n }(t, e);\n }))) : [];\n }(t.writeResults, t.commitTime), n = En(t.commitTime);\n return this.listener.Tr(n, e);\n }\n // The first response is always the handshake response\n return P(!t.writeResults || 0 === t.writeResults.length), this.gr = !0, \n this.listener.Ir();\n }, \n /**\n * Sends an initial streamToken to the server, performing the handshake\n * required to make the StreamingWrite RPC work. Subsequent\n * calls should wait until onHandshakeComplete was called.\n */\n n.prototype.Ar = function() {\n // TODO(dimond): Support stream resumption. We intentionally do not set the\n // stream token on the handshake, ignoring any stream token we might have.\n var t = {};\n t.database = xn(this.R), this.cr(t);\n }, \n /** Sends a group of mutations to the Firestore backend to apply. */ n.prototype.Er = function(t) {\n var e = this, n = {\n streamToken: this.lastStreamToken,\n writes: t.map((function(t) {\n return Pn(e.R, t);\n }))\n };\n this.cr(n);\n }, n;\n}(Ro), Po = /** @class */ function(e) {\n function n(t, n, r) {\n var i = this;\n return (i = e.call(this) || this).credentials = t, i.Hi = n, i.R = r, i.Rr = !1, \n i;\n }\n return t(n, e), n.prototype.br = function() {\n if (this.Rr) throw new D(N.FAILED_PRECONDITION, \"The client has already been terminated.\");\n }, \n /** Gets an auth token and invokes the provided RPC. */ n.prototype.Ni = function(t, e, n) {\n var r = this;\n return this.br(), this.credentials.getToken().then((function(i) {\n return r.Hi.Ni(t, e, n, i);\n })).catch((function(t) {\n throw \"FirebaseError\" === t.name ? (t.code === N.UNAUTHENTICATED && r.credentials.invalidateToken(), \n t) : new D(N.UNKNOWN, t.toString());\n }));\n }, \n /** Gets an auth token and invokes the provided RPC with streamed results. */ n.prototype.$i = function(t, e, n) {\n var r = this;\n return this.br(), this.credentials.getToken().then((function(i) {\n return r.Hi.$i(t, e, n, i);\n })).catch((function(t) {\n throw \"FirebaseError\" === t.name ? (t.code === N.UNAUTHENTICATED && r.credentials.invalidateToken(), \n t) : new D(N.UNKNOWN, t.toString());\n }));\n }, n.prototype.terminate = function() {\n this.Rr = !0;\n }, n;\n}((function() {})), Fo = /** @class */ function() {\n function t(t, e) {\n this.asyncQueue = t, this.onlineStateHandler = e, \n /** The current OnlineState. */\n this.state = \"Unknown\" /* Unknown */ , \n /**\n * A count of consecutive failures to open the stream. If it reaches the\n * maximum defined by MAX_WATCH_STREAM_FAILURES, we'll set the OnlineState to\n * Offline.\n */\n this.vr = 0, \n /**\n * A timer that elapses after ONLINE_STATE_TIMEOUT_MS, at which point we\n * transition from OnlineState.Unknown to OnlineState.Offline without waiting\n * for the stream to actually fail (MAX_WATCH_STREAM_FAILURES times).\n */\n this.Pr = null, \n /**\n * Whether the client should log a warning message if it fails to connect to\n * the backend (initially true, cleared after a successful stream, or if we've\n * logged the message already).\n */\n this.Vr = !0\n /**\n * Called by RemoteStore when a watch stream is started (including on each\n * backoff attempt).\n *\n * If this is the first attempt, it sets the OnlineState to Unknown and starts\n * the onlineStateTimer.\n */;\n }\n return t.prototype.Sr = function() {\n var t = this;\n 0 === this.vr && (this.Dr(\"Unknown\" /* Unknown */), this.Pr = this.asyncQueue.enqueueAfterDelay(\"online_state_timeout\" /* OnlineStateTimeout */ , 1e4, (function() {\n return t.Pr = null, t.Cr(\"Backend didn't respond within 10 seconds.\"), t.Dr(\"Offline\" /* Offline */), \n Promise.resolve();\n })));\n }, \n /**\n * Updates our OnlineState as appropriate after the watch stream reports a\n * failure. The first failure moves us to the 'Unknown' state. We then may\n * allow multiple failures (based on MAX_WATCH_STREAM_FAILURES) before we\n * actually transition to the 'Offline' state.\n */\n t.prototype.Nr = function(t) {\n \"Online\" /* Online */ === this.state ? this.Dr(\"Unknown\" /* Unknown */) : (this.vr++, \n this.vr >= 1 && (this.kr(), this.Cr(\"Connection failed 1 times. Most recent error: \" + t.toString()), \n this.Dr(\"Offline\" /* Offline */)));\n }, \n /**\n * Explicitly sets the OnlineState to the specified state.\n *\n * Note that this resets our timers / failure counters, etc. used by our\n * Offline heuristics, so must not be used in place of\n * handleWatchStreamStart() and handleWatchStreamFailure().\n */\n t.prototype.set = function(t) {\n this.kr(), this.vr = 0, \"Online\" /* Online */ === t && (\n // We've connected to watch at least once. Don't warn the developer\n // about being offline going forward.\n this.Vr = !1), this.Dr(t);\n }, t.prototype.Dr = function(t) {\n t !== this.state && (this.state = t, this.onlineStateHandler(t));\n }, t.prototype.Cr = function(t) {\n var e = \"Could not reach Cloud Firestore backend. \" + t + \"\\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.\";\n this.Vr ? (x(e), this.Vr = !1) : C(\"OnlineStateTracker\", e);\n }, t.prototype.kr = function() {\n null !== this.Pr && (this.Pr.cancel(), this.Pr = null);\n }, t;\n}(), Mo = function(\n/**\n * The local store, used to fill the write pipeline with outbound mutations.\n */\nt, \n/** The client-side proxy for interacting with the backend. */\ne, i, o, s) {\n var u = this;\n this.localStore = t, this.datastore = e, this.asyncQueue = i, this.remoteSyncer = {}, \n /**\n * A list of up to MAX_PENDING_WRITES writes that we have fetched from the\n * LocalStore via fillWritePipeline() and have or will send to the write\n * stream.\n *\n * Whenever writePipeline.length > 0 the RemoteStore will attempt to start or\n * restart the write stream. When the stream is established the writes in the\n * pipeline will be sent in order.\n *\n * Writes remain in writePipeline until they are acknowledged by the backend\n * and thus will automatically be re-sent if the stream is interrupted /\n * restarted before they're acknowledged.\n *\n * Write responses from the backend are linked to their originating request\n * purely based on order, and so we can just shift() writes from the front of\n * the writePipeline as we receive responses.\n */\n this.Fr = [], \n /**\n * A mapping of watched targets that the client cares about tracking and the\n * user has explicitly called a 'listen' for this target.\n *\n * These targets may or may not have been sent to or acknowledged by the\n * server. On re-establishing the listen stream, these targets should be sent\n * to the server. The targets removed with unlistens are removed eagerly\n * without waiting for confirmation from the listen stream.\n */\n this.$r = new Map, \n /**\n * A set of reasons for why the RemoteStore may be offline. If empty, the\n * RemoteStore may start its network connections.\n */\n this.Or = new Set, \n /**\n * Event handlers that get called when the network is disabled or enabled.\n *\n * PORTING NOTE: These functions are used on the Web client to create the\n * underlying streams (to support tree-shakeable streams). On Android and iOS,\n * the streams are created during construction of RemoteStore.\n */\n this.Mr = [], this.Lr = s, this.Lr.di((function(t) {\n i.enqueueAndForget((function() {\n return n(u, void 0, void 0, (function() {\n return r(this, (function(t) {\n switch (t.label) {\n case 0:\n return zo(this) ? (C(\"RemoteStore\", \"Restarting streams for network reachability change.\"), \n [ 4 /*yield*/ , function(t) {\n return n(this, void 0, void 0, (function() {\n var e;\n return r(this, (function(n) {\n switch (n.label) {\n case 0:\n return (e = F(t)).Or.add(4 /* ConnectivityChange */), [ 4 /*yield*/ , qo(e) ];\n\n case 1:\n return n.sent(), e.Br.set(\"Unknown\" /* Unknown */), e.Or.delete(4 /* ConnectivityChange */), \n [ 4 /*yield*/ , Vo(e) ];\n\n case 2:\n return n.sent(), [ 2 /*return*/ ];\n }\n }));\n }));\n }(this) ]) : [ 3 /*break*/ , 2 ];\n\n case 1:\n t.sent(), t.label = 2;\n\n case 2:\n return [ 2 /*return*/ ];\n }\n }));\n }));\n }));\n })), this.Br = new Fo(i, o);\n};\n\n/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * A PersistentStream is an abstract base class that represents a streaming RPC\n * to the Firestore backend. It's built on top of the connections own support\n * for streaming RPCs, and adds several critical features for our clients:\n *\n * - Exponential backoff on failure\n * - Authentication via CredentialsProvider\n * - Dispatching all callbacks into the shared worker queue\n * - Closing idle streams after 60 seconds of inactivity\n *\n * Subclasses of PersistentStream implement serialization of models to and\n * from the JSON representation of the protocol buffers for a specific\n * streaming RPC.\n *\n * ## Starting and Stopping\n *\n * Streaming RPCs are stateful and need to be start()ed before messages can\n * be sent and received. The PersistentStream will call the onOpen() function\n * of the listener once the stream is ready to accept requests.\n *\n * Should a start() fail, PersistentStream will call the registered onClose()\n * listener with a FirestoreError indicating what went wrong.\n *\n * A PersistentStream can be started and stopped repeatedly.\n *\n * Generic types:\n * SendType: The type of the outgoing message of the underlying\n * connection stream\n * ReceiveType: The type of the incoming message of the underlying\n * connection stream\n * ListenerType: The type of the listener that will be used for callbacks\n */ function Vo(t) {\n return n(this, void 0, void 0, (function() {\n var e, n;\n return r(this, (function(r) {\n switch (r.label) {\n case 0:\n if (!zo(t)) return [ 3 /*break*/ , 4 ];\n e = 0, n = t.Mr, r.label = 1;\n\n case 1:\n return e < n.length ? [ 4 /*yield*/ , (0, n[e])(/* enabled= */ !0) ] : [ 3 /*break*/ , 4 ];\n\n case 2:\n r.sent(), r.label = 3;\n\n case 3:\n return e++, [ 3 /*break*/ , 1 ];\n\n case 4:\n return [ 2 /*return*/ ];\n }\n }));\n }));\n}\n\n/**\n * Temporarily disables the network. The network can be re-enabled using\n * enableNetwork().\n */ function qo(t) {\n return n(this, void 0, void 0, (function() {\n var e, n;\n return r(this, (function(r) {\n switch (r.label) {\n case 0:\n e = 0, n = t.Mr, r.label = 1;\n\n case 1:\n return e < n.length ? [ 4 /*yield*/ , (0, n[e])(/* enabled= */ !1) ] : [ 3 /*break*/ , 4 ];\n\n case 2:\n r.sent(), r.label = 3;\n\n case 3:\n return e++, [ 3 /*break*/ , 1 ];\n\n case 4:\n return [ 2 /*return*/ ];\n }\n }));\n }));\n}\n\n/**\n * Starts new listen for the given target. Uses resume token if provided. It\n * is a no-op if the target of given `TargetData` is already being listened to.\n */ function Uo(t, e) {\n var n = F(t);\n n.$r.has(e.targetId) || (\n // Mark this as something the client is currently listening for.\n n.$r.set(e.targetId, e), Qo(n) ? \n // The listen will be sent in onWatchStreamOpen\n Go(n) : us(n).er() && jo(n, e));\n}\n\n/**\n * Removes the listen from server. It is a no-op if the given target id is\n * not being listened to.\n */ function Bo(t, e) {\n var n = F(t), r = us(n);\n n.$r.delete(e), r.er() && Ko(n, e), 0 === n.$r.size && (r.er() ? r.ir() : zo(n) && \n // Revert to OnlineState.Unknown if the watch stream is not open and we\n // have no listeners, since without any listens to send we cannot\n // confirm if the stream is healthy and upgrade to OnlineState.Online.\n n.Br.set(\"Unknown\" /* Unknown */));\n}\n\n/**\n * We need to increment the the expected number of pending responses we're due\n * from watch so we wait for the ack to process any messages from this target.\n */ function jo(t, e) {\n t.qr.U(e.targetId), us(t).mr(e)\n /**\n * We need to increment the expected number of pending responses we're due\n * from watch so we wait for the removal on the server before we process any\n * messages from this target.\n */;\n}\n\nfunction Ko(t, e) {\n t.qr.U(e), us(t).yr(e);\n}\n\nfunction Go(t) {\n t.qr = new yn({\n getRemoteKeysForTarget: function(e) {\n return t.remoteSyncer.getRemoteKeysForTarget(e);\n },\n lt: function(e) {\n return t.$r.get(e) || null;\n }\n }), us(t).start(), t.Br.Sr()\n /**\n * Returns whether the watch stream should be started because it's necessary\n * and has not yet been started.\n */;\n}\n\nfunction Qo(t) {\n return zo(t) && !us(t).tr() && t.$r.size > 0;\n}\n\nfunction zo(t) {\n return 0 === F(t).Or.size;\n}\n\nfunction Wo(t) {\n t.qr = void 0;\n}\n\nfunction Ho(t) {\n return n(this, void 0, void 0, (function() {\n return r(this, (function(e) {\n return t.$r.forEach((function(e, n) {\n jo(t, e);\n })), [ 2 /*return*/ ];\n }));\n }));\n}\n\nfunction Yo(t, e) {\n return n(this, void 0, void 0, (function() {\n return r(this, (function(n) {\n return Wo(t), \n // If we still need the watch stream, retry the connection.\n Qo(t) ? (t.Br.Nr(e), Go(t)) : \n // No need to restart watch stream because there are no active targets.\n // The online state is set to unknown because there is no active attempt\n // at establishing a connection\n t.Br.set(\"Unknown\" /* Unknown */), [ 2 /*return*/ ];\n }));\n }));\n}\n\nfunction $o(t, e, i) {\n return n(this, void 0, void 0, (function() {\n var o, s, u;\n return r(this, (function(a) {\n switch (a.label) {\n case 0:\n if (t.Br.set(\"Online\" /* Online */), !(e instanceof dn && 2 /* Removed */ === e.state && e.cause)) \n // Mark the client as online since we got a message from the server\n return [ 3 /*break*/ , 6 ];\n a.label = 1;\n\n case 1:\n return a.trys.push([ 1, 3, , 5 ]), [ 4 /*yield*/ , \n /** Handles an error on a target */\n function(t, e) {\n return n(this, void 0, void 0, (function() {\n var n, i, o, s;\n return r(this, (function(r) {\n switch (r.label) {\n case 0:\n n = e.cause, i = 0, o = e.targetIds, r.label = 1;\n\n case 1:\n return i < o.length ? (s = o[i], t.$r.has(s) ? [ 4 /*yield*/ , t.remoteSyncer.rejectListen(s, n) ] : [ 3 /*break*/ , 3 ]) : [ 3 /*break*/ , 5 ];\n\n case 2:\n r.sent(), t.$r.delete(s), t.qr.removeTarget(s), r.label = 3;\n\n case 3:\n r.label = 4;\n\n case 4:\n return i++, [ 3 /*break*/ , 1 ];\n\n case 5:\n return [ 2 /*return*/ ];\n }\n }));\n }));\n }(t, e) ];\n\n case 2:\n return a.sent(), [ 3 /*break*/ , 5 ];\n\n case 3:\n return o = a.sent(), C(\"RemoteStore\", \"Failed to remove targets %s: %s \", e.targetIds.join(\",\"), o), \n [ 4 /*yield*/ , Xo(t, o) ];\n\n case 4:\n return a.sent(), [ 3 /*break*/ , 5 ];\n\n case 5:\n return [ 3 /*break*/ , 13 ];\n\n case 6:\n if (e instanceof fn ? t.qr.X(e) : e instanceof ln ? t.qr.rt(e) : t.qr.et(e), i.isEqual(K.min())) return [ 3 /*break*/ , 13 ];\n a.label = 7;\n\n case 7:\n return a.trys.push([ 7, 11, , 13 ]), [ 4 /*yield*/ , Ki(t.localStore) ];\n\n case 8:\n return s = a.sent(), i.compareTo(s) >= 0 ? [ 4 /*yield*/ , \n /**\n * Takes a batch of changes from the Datastore, repackages them as a\n * RemoteEvent, and passes that on to the listener, which is typically the\n * SyncEngine.\n */\n function(t, e) {\n var n = t.qr.ut(e);\n // Update in-memory resume tokens. LocalStore will update the\n // persistent view of these when applying the completed RemoteEvent.\n return n.targetChanges.forEach((function(n, r) {\n if (n.resumeToken.approximateByteSize() > 0) {\n var i = t.$r.get(r);\n // A watched target might have been removed already.\n i && t.$r.set(r, i.withResumeToken(n.resumeToken, e));\n }\n })), \n // Re-establish listens for the targets that have been invalidated by\n // existence filter mismatches.\n n.targetMismatches.forEach((function(e) {\n var n = t.$r.get(e);\n if (n) {\n // Clear the resume token for the target, since we're in a known mismatch\n // state.\n t.$r.set(e, n.withResumeToken(J.EMPTY_BYTE_STRING, n.snapshotVersion)), \n // Cause a hard reset by unwatching and rewatching immediately, but\n // deliberately don't send a resume token so that we get a full update.\n Ko(t, e);\n // Mark the target we send as being on behalf of an existence filter\n // mismatch, but don't actually retain that in listenTargets. This ensures\n // that we flag the first re-listen this way without impacting future\n // listens of this target (that might happen e.g. on reconnect).\n var r = new Pr(n.target, e, 1 /* ExistenceFilterMismatch */ , n.sequenceNumber);\n jo(t, r);\n }\n })), t.remoteSyncer.applyRemoteEvent(n);\n }(t, i) ] : [ 3 /*break*/ , 10 ];\n\n // We have received a target change with a global snapshot if the snapshot\n // version is not equal to SnapshotVersion.min().\n case 9:\n // We have received a target change with a global snapshot if the snapshot\n // version is not equal to SnapshotVersion.min().\n a.sent(), a.label = 10;\n\n case 10:\n return [ 3 /*break*/ , 13 ];\n\n case 11:\n return C(\"RemoteStore\", \"Failed to raise snapshot:\", u = a.sent()), [ 4 /*yield*/ , Xo(t, u) ];\n\n case 12:\n return a.sent(), [ 3 /*break*/ , 13 ];\n\n case 13:\n return [ 2 /*return*/ ];\n }\n }));\n }));\n}\n\n/**\n * Recovery logic for IndexedDB errors that takes the network offline until\n * `op` succeeds. Retries are scheduled with backoff using\n * `enqueueRetryable()`. If `op()` is not provided, IndexedDB access is\n * validated via a generic operation.\n *\n * The returned Promise is resolved once the network is disabled and before\n * any retry attempt.\n */ function Xo(t, e, i) {\n return n(this, void 0, void 0, (function() {\n var o = this;\n return r(this, (function(s) {\n switch (s.label) {\n case 0:\n if (!Nr(e)) throw e;\n // Disable network and raise offline snapshots\n return t.Or.add(1 /* IndexedDbFailed */), [ 4 /*yield*/ , qo(t) ];\n\n case 1:\n // Disable network and raise offline snapshots\n return s.sent(), t.Br.set(\"Offline\" /* Offline */), i || (\n // Use a simple read operation to determine if IndexedDB recovered.\n // Ideally, we would expose a health check directly on SimpleDb, but\n // RemoteStore only has access to persistence through LocalStore.\n i = function() {\n return Ki(t.localStore);\n }), \n // Probe IndexedDB periodically and re-enable network\n t.asyncQueue.enqueueRetryable((function() {\n return n(o, void 0, void 0, (function() {\n return r(this, (function(e) {\n switch (e.label) {\n case 0:\n return C(\"RemoteStore\", \"Retrying IndexedDB access\"), [ 4 /*yield*/ , i() ];\n\n case 1:\n return e.sent(), t.Or.delete(1 /* IndexedDbFailed */), [ 4 /*yield*/ , Vo(t) ];\n\n case 2:\n return e.sent(), [ 2 /*return*/ ];\n }\n }));\n }));\n })), [ 2 /*return*/ ];\n }\n }));\n }));\n}\n\n/**\n * Executes `op`. If `op` fails, takes the network offline until `op`\n * succeeds. Returns after the first attempt.\n */ function Jo(t, e) {\n return e().catch((function(n) {\n return Xo(t, n, e);\n }));\n}\n\nfunction Zo(t) {\n return n(this, void 0, void 0, (function() {\n var e, n, i, o, s;\n return r(this, (function(r) {\n switch (r.label) {\n case 0:\n e = F(t), n = as(e), i = e.Fr.length > 0 ? e.Fr[e.Fr.length - 1].batchId : -1, r.label = 1;\n\n case 1:\n if (!\n /**\n * Returns true if we can add to the write pipeline (i.e. the network is\n * enabled and the write pipeline is not full).\n */\n function(t) {\n return zo(t) && t.Fr.length < 10;\n }\n /**\n * Queues additional writes to be sent to the write stream, sending them\n * immediately if the write stream is established.\n */ (e)) return [ 3 /*break*/ , 7 ];\n r.label = 2;\n\n case 2:\n return r.trys.push([ 2, 4, , 6 ]), [ 4 /*yield*/ , zi(e.localStore, i) ];\n\n case 3:\n return null === (o = r.sent()) ? (0 === e.Fr.length && n.ir(), [ 3 /*break*/ , 7 ]) : (i = o.batchId, \n function(t, e) {\n t.Fr.push(e);\n var n = as(t);\n n.er() && n.pr && n.Er(e.mutations);\n }(e, o), [ 3 /*break*/ , 6 ]);\n\n case 4:\n return s = r.sent(), [ 4 /*yield*/ , Xo(e, s) ];\n\n case 5:\n return r.sent(), [ 3 /*break*/ , 6 ];\n\n case 6:\n return [ 3 /*break*/ , 1 ];\n\n case 7:\n return ts(e) && es(e), [ 2 /*return*/ ];\n }\n }));\n }));\n}\n\nfunction ts(t) {\n return zo(t) && !as(t).tr() && t.Fr.length > 0;\n}\n\nfunction es(t) {\n as(t).start();\n}\n\nfunction ns(t) {\n return n(this, void 0, void 0, (function() {\n return r(this, (function(e) {\n return as(t).Ar(), [ 2 /*return*/ ];\n }));\n }));\n}\n\nfunction rs(t) {\n return n(this, void 0, void 0, (function() {\n var e, n, i, o;\n return r(this, (function(r) {\n // Send the write pipeline now that the stream is established.\n for (e = as(t), n = 0, i = t.Fr; n < i.length; n++) o = i[n], e.Er(o.mutations);\n return [ 2 /*return*/ ];\n }));\n }));\n}\n\nfunction is(t, e, i) {\n return n(this, void 0, void 0, (function() {\n var n, o;\n return r(this, (function(r) {\n switch (r.label) {\n case 0:\n return n = t.Fr.shift(), o = Or.from(n, e, i), [ 4 /*yield*/ , Jo(t, (function() {\n return t.remoteSyncer.applySuccessfulWrite(o);\n })) ];\n\n case 1:\n // It's possible that with the completion of this mutation another\n // slot has freed up.\n return r.sent(), [ 4 /*yield*/ , Zo(t) ];\n\n case 2:\n // It's possible that with the completion of this mutation another\n // slot has freed up.\n return r.sent(), [ 2 /*return*/ ];\n }\n }));\n }));\n}\n\nfunction os(t, e) {\n return n(this, void 0, void 0, (function() {\n return r(this, (function(i) {\n switch (i.label) {\n case 0:\n return e && as(t).pr ? [ 4 /*yield*/ , function(t, e) {\n return n(this, void 0, void 0, (function() {\n var n, i;\n return r(this, (function(r) {\n switch (r.label) {\n case 0:\n return Qe(i = e.code) && i !== N.ABORTED ? (n = t.Fr.shift(), \n // In this case it's also unlikely that the server itself is melting\n // down -- this was just a bad request so inhibit backoff on the next\n // restart.\n as(t).sr(), [ 4 /*yield*/ , Jo(t, (function() {\n return t.remoteSyncer.rejectFailedWrite(n.batchId, e);\n })) ]) : [ 3 /*break*/ , 3 ];\n\n case 1:\n // It's possible that with the completion of this mutation\n // another slot has freed up.\n return r.sent(), [ 4 /*yield*/ , Zo(t) ];\n\n case 2:\n // In this case it's also unlikely that the server itself is melting\n // down -- this was just a bad request so inhibit backoff on the next\n // restart.\n // It's possible that with the completion of this mutation\n // another slot has freed up.\n r.sent(), r.label = 3;\n\n case 3:\n return [ 2 /*return*/ ];\n }\n }));\n }));\n }(t, e) ] : [ 3 /*break*/ , 2 ];\n\n // This error affects the actual write.\n case 1:\n // This error affects the actual write.\n i.sent(), i.label = 2;\n\n case 2:\n // If the write stream closed after the write handshake completes, a write\n // operation failed and we fail the pending operation.\n // The write stream might have been started by refilling the write\n // pipeline for failed writes\n return ts(t) && es(t), [ 2 /*return*/ ];\n }\n }));\n }));\n}\n\n/**\n * Toggles the network state when the client gains or loses its primary lease.\n */ function ss(t, e) {\n return n(this, void 0, void 0, (function() {\n var n;\n return r(this, (function(r) {\n switch (r.label) {\n case 0:\n return n = F(t), e ? (n.Or.delete(2 /* IsSecondary */), [ 4 /*yield*/ , Vo(n) ]) : [ 3 /*break*/ , 2 ];\n\n case 1:\n return r.sent(), [ 3 /*break*/ , 5 ];\n\n case 2:\n return e ? [ 3 /*break*/ , 4 ] : (n.Or.add(2 /* IsSecondary */), [ 4 /*yield*/ , qo(n) ]);\n\n case 3:\n r.sent(), n.Br.set(\"Unknown\" /* Unknown */), r.label = 4;\n\n case 4:\n r.label = 5;\n\n case 5:\n return [ 2 /*return*/ ];\n }\n }));\n }));\n}\n\n/**\n * If not yet initialized, registers the WatchStream and its network state\n * callback with `remoteStoreImpl`. Returns the existing stream if one is\n * already available.\n *\n * PORTING NOTE: On iOS and Android, the WatchStream gets registered on startup.\n * This is not done on Web to allow it to be tree-shaken.\n */ function us(t) {\n var e = this;\n return t.Ur || (\n // Create stream (but note that it is not started yet).\n t.Ur = function(t, e, n) {\n var r = F(t);\n return r.br(), new Lo(e, r.Hi, r.credentials, r.R, n);\n }(t.datastore, t.asyncQueue, {\n Ii: Ho.bind(null, t),\n Ri: Yo.bind(null, t),\n _r: $o.bind(null, t)\n }), t.Mr.push((function(i) {\n return n(e, void 0, void 0, (function() {\n return r(this, (function(e) {\n switch (e.label) {\n case 0:\n return i ? (t.Ur.sr(), Qo(t) ? Go(t) : t.Br.set(\"Unknown\" /* Unknown */), [ 3 /*break*/ , 3 ]) : [ 3 /*break*/ , 1 ];\n\n case 1:\n return [ 4 /*yield*/ , t.Ur.stop() ];\n\n case 2:\n e.sent(), Wo(t), e.label = 3;\n\n case 3:\n return [ 2 /*return*/ ];\n }\n }));\n }));\n }))), t.Ur\n /**\n * If not yet initialized, registers the WriteStream and its network state\n * callback with `remoteStoreImpl`. Returns the existing stream if one is\n * already available.\n *\n * PORTING NOTE: On iOS and Android, the WriteStream gets registered on startup.\n * This is not done on Web to allow it to be tree-shaken.\n */;\n}\n\nfunction as(t) {\n var e = this;\n return t.Kr || (\n // Create stream (but note that it is not started yet).\n t.Kr = function(t, e, n) {\n var r = F(t);\n return r.br(), new Oo(e, r.Hi, r.credentials, r.R, n);\n }(t.datastore, t.asyncQueue, {\n Ii: ns.bind(null, t),\n Ri: os.bind(null, t),\n Ir: rs.bind(null, t),\n Tr: is.bind(null, t)\n }), t.Mr.push((function(i) {\n return n(e, void 0, void 0, (function() {\n return r(this, (function(e) {\n switch (e.label) {\n case 0:\n return i ? (t.Kr.sr(), [ 4 /*yield*/ , Zo(t) ]) : [ 3 /*break*/ , 2 ];\n\n case 1:\n // This will start the write stream if necessary.\n return e.sent(), [ 3 /*break*/ , 4 ];\n\n case 2:\n return [ 4 /*yield*/ , t.Kr.stop() ];\n\n case 3:\n e.sent(), t.Fr.length > 0 && (C(\"RemoteStore\", \"Stopping write stream with \" + t.Fr.length + \" pending writes\"), \n t.Fr = []), e.label = 4;\n\n case 4:\n return [ 2 /*return*/ ];\n }\n }));\n }));\n }))), t.Kr\n /**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n /**\n * Represents an operation scheduled to be run in the future on an AsyncQueue.\n *\n * It is created via DelayedOperation.createAndSchedule().\n *\n * Supports cancellation (via cancel()) and early execution (via skipDelay()).\n *\n * Note: We implement `PromiseLike` instead of `Promise`, as the `Promise` type\n * in newer versions of TypeScript defines `finally`, which is not available in\n * IE.\n */;\n}\n\nvar cs = /** @class */ function() {\n function t(t, e, n, r, i) {\n this.asyncQueue = t, this.timerId = e, this.targetTimeMs = n, this.op = r, this.removalCallback = i, \n this.deferred = new br, this.then = this.deferred.promise.then.bind(this.deferred.promise), \n // It's normal for the deferred promise to be canceled (due to cancellation)\n // and so we attach a dummy catch callback to avoid\n // 'UnhandledPromiseRejectionWarning' log spam.\n this.deferred.promise.catch((function(t) {}))\n /**\n * Creates and returns a DelayedOperation that has been scheduled to be\n * executed on the provided asyncQueue after the provided delayMs.\n *\n * @param asyncQueue - The queue to schedule the operation on.\n * @param id - A Timer ID identifying the type of operation this is.\n * @param delayMs - The delay (ms) before the operation should be scheduled.\n * @param op - The operation to run.\n * @param removalCallback - A callback to be called synchronously once the\n * operation is executed or canceled, notifying the AsyncQueue to remove it\n * from its delayedOperations list.\n * PORTING NOTE: This exists to prevent making removeDelayedOperation() and\n * the DelayedOperation class public.\n */;\n }\n return t.createAndSchedule = function(e, n, r, i, o) {\n var s = new t(e, n, Date.now() + r, i, o);\n return s.start(r), s;\n }, \n /**\n * Starts the timer. This is called immediately after construction by\n * createAndSchedule().\n */\n t.prototype.start = function(t) {\n var e = this;\n this.timerHandle = setTimeout((function() {\n return e.handleDelayElapsed();\n }), t);\n }, \n /**\n * Queues the operation to run immediately (if it hasn't already been run or\n * canceled).\n */\n t.prototype.skipDelay = function() {\n return this.handleDelayElapsed();\n }, \n /**\n * Cancels the operation if it hasn't already been executed or canceled. The\n * promise will be rejected.\n *\n * As long as the operation has not yet been run, calling cancel() provides a\n * guarantee that the operation will not be run.\n */\n t.prototype.cancel = function(t) {\n null !== this.timerHandle && (this.clearTimeout(), this.deferred.reject(new D(N.CANCELLED, \"Operation cancelled\" + (t ? \": \" + t : \"\"))));\n }, t.prototype.handleDelayElapsed = function() {\n var t = this;\n this.asyncQueue.enqueueAndForget((function() {\n return null !== t.timerHandle ? (t.clearTimeout(), t.op().then((function(e) {\n return t.deferred.resolve(e);\n }))) : Promise.resolve();\n }));\n }, t.prototype.clearTimeout = function() {\n null !== this.timerHandle && (this.removalCallback(this), clearTimeout(this.timerHandle), \n this.timerHandle = null);\n }, t;\n}();\n\n/**\n * Returns a FirestoreError that can be surfaced to the user if the provided\n * error is an IndexedDbTransactionError. Re-throws the error otherwise.\n */ function hs(t, e) {\n if (x(\"AsyncQueue\", e + \": \" + t), Nr(t)) return new D(N.UNAVAILABLE, e + \": \" + t);\n throw t;\n}\n\n/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * DocumentSet is an immutable (copy-on-write) collection that holds documents\n * in order specified by the provided comparator. We always add a document key\n * comparator on top of what is provided to guarantee document equality based on\n * the key.\n */ var fs = /** @class */ function() {\n /** The default ordering is by key if the comparator is omitted */\n function t(t) {\n // We are adding document key comparator to the end as it's the only\n // guaranteed unique property of a document.\n this.comparator = t ? function(e, n) {\n return t(e, n) || ct.comparator(e.key, n.key);\n } : function(t, e) {\n return ct.comparator(t.key, e.key);\n }, this.keyedMap = en(), this.sortedSet = new We(this.comparator)\n /**\n * Returns an empty copy of the existing DocumentSet, using the same\n * comparator.\n */;\n }\n return t.emptySet = function(e) {\n return new t(e.comparator);\n }, t.prototype.has = function(t) {\n return null != this.keyedMap.get(t);\n }, t.prototype.get = function(t) {\n return this.keyedMap.get(t);\n }, t.prototype.first = function() {\n return this.sortedSet.minKey();\n }, t.prototype.last = function() {\n return this.sortedSet.maxKey();\n }, t.prototype.isEmpty = function() {\n return this.sortedSet.isEmpty();\n }, \n /**\n * Returns the index of the provided key in the document set, or -1 if the\n * document key is not present in the set;\n */\n t.prototype.indexOf = function(t) {\n var e = this.keyedMap.get(t);\n return e ? this.sortedSet.indexOf(e) : -1;\n }, Object.defineProperty(t.prototype, \"size\", {\n get: function() {\n return this.sortedSet.size;\n },\n enumerable: !1,\n configurable: !0\n }), \n /** Iterates documents in order defined by \"comparator\" */ t.prototype.forEach = function(t) {\n this.sortedSet.inorderTraversal((function(e, n) {\n return t(e), !1;\n }));\n }, \n /** Inserts or updates a document with the same key */ t.prototype.add = function(t) {\n // First remove the element if we have it.\n var e = this.delete(t.key);\n return e.copy(e.keyedMap.insert(t.key, t), e.sortedSet.insert(t, null));\n }, \n /** Deletes a document with a given key */ t.prototype.delete = function(t) {\n var e = this.get(t);\n return e ? this.copy(this.keyedMap.remove(t), this.sortedSet.remove(e)) : this;\n }, t.prototype.isEqual = function(e) {\n if (!(e instanceof t)) return !1;\n if (this.size !== e.size) return !1;\n for (var n = this.sortedSet.getIterator(), r = e.sortedSet.getIterator(); n.hasNext(); ) {\n var i = n.getNext().key, o = r.getNext().key;\n if (!i.isEqual(o)) return !1;\n }\n return !0;\n }, t.prototype.toString = function() {\n var t = [];\n return this.forEach((function(e) {\n t.push(e.toString());\n })), 0 === t.length ? \"DocumentSet ()\" : \"DocumentSet (\\n \" + t.join(\" \\n\") + \"\\n)\";\n }, t.prototype.copy = function(e, n) {\n var r = new t;\n return r.comparator = this.comparator, r.keyedMap = e, r.sortedSet = n, r;\n }, t;\n}(), ls = /** @class */ function() {\n function t() {\n this.Qr = new We(ct.comparator);\n }\n return t.prototype.track = function(t) {\n var e = t.doc.key, n = this.Qr.get(e);\n n ? \n // Merge the new change with the existing change.\n 0 /* Added */ !== t.type && 3 /* Metadata */ === n.type ? this.Qr = this.Qr.insert(e, t) : 3 /* Metadata */ === t.type && 1 /* Removed */ !== n.type ? this.Qr = this.Qr.insert(e, {\n type: n.type,\n doc: t.doc\n }) : 2 /* Modified */ === t.type && 2 /* Modified */ === n.type ? this.Qr = this.Qr.insert(e, {\n type: 2 /* Modified */ ,\n doc: t.doc\n }) : 2 /* Modified */ === t.type && 0 /* Added */ === n.type ? this.Qr = this.Qr.insert(e, {\n type: 0 /* Added */ ,\n doc: t.doc\n }) : 1 /* Removed */ === t.type && 0 /* Added */ === n.type ? this.Qr = this.Qr.remove(e) : 1 /* Removed */ === t.type && 2 /* Modified */ === n.type ? this.Qr = this.Qr.insert(e, {\n type: 1 /* Removed */ ,\n doc: n.doc\n }) : 0 /* Added */ === t.type && 1 /* Removed */ === n.type ? this.Qr = this.Qr.insert(e, {\n type: 2 /* Modified */ ,\n doc: t.doc\n }) : \n // This includes these cases, which don't make sense:\n // Added->Added\n // Removed->Removed\n // Modified->Added\n // Removed->Modified\n // Metadata->Added\n // Removed->Metadata\n O() : this.Qr = this.Qr.insert(e, t);\n }, t.prototype.jr = function() {\n var t = [];\n return this.Qr.inorderTraversal((function(e, n) {\n t.push(n);\n })), t;\n }, t;\n}(), ds = /** @class */ function() {\n function t(t, e, n, r, i, o, s, u) {\n this.query = t, this.docs = e, this.oldDocs = n, this.docChanges = r, this.mutatedKeys = i, \n this.fromCache = o, this.syncStateChanged = s, this.excludesMetadataChanges = u\n /** Returns a view snapshot as if all documents in the snapshot were added. */;\n }\n return t.fromInitialDocuments = function(e, n, r, i) {\n var o = [];\n return n.forEach((function(t) {\n o.push({\n type: 0 /* Added */ ,\n doc: t\n });\n })), new t(e, n, fs.emptySet(n), o, r, i, \n /* syncStateChanged= */ !0, \n /* excludesMetadataChanges= */ !1);\n }, Object.defineProperty(t.prototype, \"hasPendingWrites\", {\n get: function() {\n return !this.mutatedKeys.isEmpty();\n },\n enumerable: !1,\n configurable: !0\n }), t.prototype.isEqual = function(t) {\n if (!(this.fromCache === t.fromCache && this.syncStateChanged === t.syncStateChanged && this.mutatedKeys.isEqual(t.mutatedKeys) && ie(this.query, t.query) && this.docs.isEqual(t.docs) && this.oldDocs.isEqual(t.oldDocs))) return !1;\n var e = this.docChanges, n = t.docChanges;\n if (e.length !== n.length) return !1;\n for (var r = 0; r < e.length; r++) if (e[r].type !== n[r].type || !e[r].doc.isEqual(n[r].doc)) return !1;\n return !0;\n }, t;\n}(), ps = function() {\n this.Wr = void 0, this.listeners = [];\n}, ys = function() {\n this.queries = new Ii((function(t) {\n return oe(t);\n }), ie), this.onlineState = \"Unknown\" /* Unknown */ , this.Gr = new Set;\n};\n\n/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * DocumentChangeSet keeps track of a set of changes to docs in a query, merging\n * duplicate events for the same doc.\n */ function vs(t, e) {\n return n(this, void 0, void 0, (function() {\n var n, i, o, s, u, a, c;\n return r(this, (function(r) {\n switch (r.label) {\n case 0:\n if (n = F(t), i = e.query, o = !1, (s = n.queries.get(i)) || (o = !0, s = new ps), \n !o) return [ 3 /*break*/ , 4 ];\n r.label = 1;\n\n case 1:\n return r.trys.push([ 1, 3, , 4 ]), u = s, [ 4 /*yield*/ , n.onListen(i) ];\n\n case 2:\n return u.Wr = r.sent(), [ 3 /*break*/ , 4 ];\n\n case 3:\n return a = r.sent(), c = hs(a, \"Initialization of query '\" + se(e.query) + \"' failed\"), \n [ 2 /*return*/ , void e.onError(c) ];\n\n case 4:\n return n.queries.set(i, s), s.listeners.push(e), \n // Run global snapshot listeners if a consistent snapshot has been emitted.\n e.zr(n.onlineState), s.Wr && e.Hr(s.Wr) && bs(n), [ 2 /*return*/ ];\n }\n }));\n }));\n}\n\nfunction ms(t, e) {\n return n(this, void 0, void 0, (function() {\n var n, i, o, s, u;\n return r(this, (function(r) {\n return n = F(t), i = e.query, o = !1, (s = n.queries.get(i)) && (u = s.listeners.indexOf(e)) >= 0 && (s.listeners.splice(u, 1), \n o = 0 === s.listeners.length), o ? [ 2 /*return*/ , (n.queries.delete(i), n.onUnlisten(i)) ] : [ 2 /*return*/ ];\n }));\n }));\n}\n\nfunction gs(t, e) {\n for (var n = F(t), r = !1, i = 0, o = e; i < o.length; i++) {\n var s = o[i], u = s.query, a = n.queries.get(u);\n if (a) {\n for (var c = 0, h = a.listeners; c < h.length; c++) {\n h[c].Hr(s) && (r = !0);\n }\n a.Wr = s;\n }\n }\n r && bs(n);\n}\n\nfunction ws(t, e, n) {\n var r = F(t), i = r.queries.get(e);\n if (i) for (var o = 0, s = i.listeners; o < s.length; o++) {\n s[o].onError(n);\n }\n // Remove all listeners. NOTE: We don't need to call syncEngine.unlisten()\n // after an error.\n r.queries.delete(e);\n}\n\n// Call all global snapshot listeners that have been set.\nfunction bs(t) {\n t.Gr.forEach((function(t) {\n t.next();\n }));\n}\n\n/**\n * QueryListener takes a series of internal view snapshots and determines\n * when to raise the event.\n *\n * It uses an Observer to dispatch events.\n */ var Is = /** @class */ function() {\n function t(t, e, n) {\n this.query = t, this.Jr = e, \n /**\n * Initial snapshots (e.g. from cache) may not be propagated to the wrapped\n * observer. This flag is set to true once we've actually raised an event.\n */\n this.Yr = !1, this.Xr = null, this.onlineState = \"Unknown\" /* Unknown */ , this.options = n || {}\n /**\n * Applies the new ViewSnapshot to this listener, raising a user-facing event\n * if applicable (depending on what changed, whether the user has opted into\n * metadata-only changes, etc.). Returns true if a user-facing event was\n * indeed raised.\n */;\n }\n return t.prototype.Hr = function(t) {\n if (!this.options.includeMetadataChanges) {\n for (\n // Remove the metadata only changes.\n var e = [], n = 0, r = t.docChanges; n < r.length; n++) {\n var i = r[n];\n 3 /* Metadata */ !== i.type && e.push(i);\n }\n t = new ds(t.query, t.docs, t.oldDocs, e, t.mutatedKeys, t.fromCache, t.syncStateChanged, \n /* excludesMetadataChanges= */ !0);\n }\n var o = !1;\n return this.Yr ? this.Zr(t) && (this.Jr.next(t), o = !0) : this.eo(t, this.onlineState) && (this.no(t), \n o = !0), this.Xr = t, o;\n }, t.prototype.onError = function(t) {\n this.Jr.error(t);\n }, \n /** Returns whether a snapshot was raised. */ t.prototype.zr = function(t) {\n this.onlineState = t;\n var e = !1;\n return this.Xr && !this.Yr && this.eo(this.Xr, t) && (this.no(this.Xr), e = !0), \n e;\n }, t.prototype.eo = function(t, e) {\n // Always raise the first event when we're synced\n if (!t.fromCache) return !0;\n // NOTE: We consider OnlineState.Unknown as online (it should become Offline\n // or Online if we wait long enough).\n var n = \"Offline\" /* Offline */ !== e;\n // Don't raise the event if we're online, aren't synced yet (checked\n // above) and are waiting for a sync.\n return !(this.options.so && n || t.docs.isEmpty() && \"Offline\" /* Offline */ !== e);\n // Raise data from cache if we have any documents or we are offline\n }, t.prototype.Zr = function(t) {\n // We don't need to handle includeDocumentMetadataChanges here because\n // the Metadata only changes have already been stripped out if needed.\n // At this point the only changes we will see are the ones we should\n // propagate.\n if (t.docChanges.length > 0) return !0;\n var e = this.Xr && this.Xr.hasPendingWrites !== t.hasPendingWrites;\n return !(!t.syncStateChanged && !e) && !0 === this.options.includeMetadataChanges;\n // Generally we should have hit one of the cases above, but it's possible\n // to get here if there were only metadata docChanges and they got\n // stripped out.\n }, t.prototype.no = function(t) {\n t = ds.fromInitialDocuments(t.query, t.docs, t.mutatedKeys, t.fromCache), this.Yr = !0, \n this.Jr.next(t);\n }, t;\n}(), Ts = /** @class */ function() {\n function t(t, \n // How many bytes this element takes to store in the bundle.\n e) {\n this.payload = t, this.byteLength = e;\n }\n return t.prototype.io = function() {\n return \"metadata\" in this.payload;\n }, t;\n}(), _s = /** @class */ function() {\n function t(t) {\n this.R = t;\n }\n return t.prototype.qn = function(t) {\n return An(this.R, t);\n }, \n /**\n * Converts a BundleDocument to a MutableDocument.\n */\n t.prototype.Un = function(t) {\n return t.metadata.exists ? On(this.R, t.document, !1) : Nt.newNoDocument(this.qn(t.metadata.name), this.Kn(t.metadata.readTime));\n }, t.prototype.Kn = function(t) {\n return En(t);\n }, t;\n}(), Es = /** @class */ function() {\n function t(t, e, n) {\n this.ro = t, this.localStore = e, this.R = n, \n /** Batched queries to be saved into storage */\n this.queries = [], \n /** Batched documents to be saved into storage */\n this.documents = [], this.progress = Ss(t)\n /**\n * Adds an element from the bundle to the loader.\n *\n * Returns a new progress if adding the element leads to a new progress,\n * otherwise returns null.\n */;\n }\n return t.prototype.oo = function(t) {\n this.progress.bytesLoaded += t.byteLength;\n var e = this.progress.documentsLoaded;\n return t.payload.namedQuery ? this.queries.push(t.payload.namedQuery) : t.payload.documentMetadata ? (this.documents.push({\n metadata: t.payload.documentMetadata\n }), t.payload.documentMetadata.exists || ++e) : t.payload.document && (this.documents[this.documents.length - 1].document = t.payload.document, \n ++e), e !== this.progress.documentsLoaded ? (this.progress.documentsLoaded = e, \n Object.assign({}, this.progress)) : null;\n }, t.prototype.co = function(t) {\n for (var e = new Map, n = new _s(this.R), r = 0, i = t; r < i.length; r++) {\n var o = i[r];\n if (o.metadata.queries) for (var s = n.qn(o.metadata.name), u = 0, a = o.metadata.queries; u < a.length; u++) {\n var c = a[u], h = (e.get(c) || sn()).add(s);\n e.set(c, h);\n }\n }\n return e;\n }, \n /**\n * Update the progress to 'Success' and return the updated progress.\n */\n t.prototype.complete = function() {\n return n(this, void 0, void 0, (function() {\n var t, e, n, i, o;\n return r(this, (function(r) {\n switch (r.label) {\n case 0:\n return [ 4 /*yield*/ , Zi(this.localStore, new _s(this.R), this.documents, this.ro.id) ];\n\n case 1:\n t = r.sent(), e = this.co(this.documents), n = 0, i = this.queries, r.label = 2;\n\n case 2:\n return n < i.length ? (o = i[n], [ 4 /*yield*/ , to(this.localStore, o, e.get(o.name)) ]) : [ 3 /*break*/ , 5 ];\n\n case 3:\n r.sent(), r.label = 4;\n\n case 4:\n return n++, [ 3 /*break*/ , 2 ];\n\n case 5:\n return [ 2 /*return*/ , (this.progress.taskState = \"Success\", new Pi(Object.assign({}, this.progress), t)) ];\n }\n }));\n }));\n }, t;\n}();\n\n/**\n * @license\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * A complete element in the bundle stream, together with the byte length it\n * occupies in the stream.\n */\n/**\n * Returns a `LoadBundleTaskProgress` representing the initial progress of\n * loading a bundle.\n */\nfunction Ss(t) {\n return {\n taskState: \"Running\",\n documentsLoaded: 0,\n bytesLoaded: 0,\n totalDocuments: t.totalDocuments,\n totalBytes: t.totalBytes\n };\n}\n\n/**\n * Returns a `LoadBundleTaskProgress` representing the progress that the loading\n * has succeeded.\n */\n/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */ var Ns = function(t) {\n this.key = t;\n}, Ds = function(t) {\n this.key = t;\n}, As = /** @class */ function() {\n function t(t, \n /** Documents included in the remote target */\n e) {\n this.query = t, this.uo = e, this.ao = null, \n /**\n * A flag whether the view is current with the backend. A view is considered\n * current after it has seen the current flag from the backend and did not\n * lose consistency within the watch stream (e.g. because of an existence\n * filter mismatch).\n */\n this.current = !1, \n /** Documents in the view but not in the remote target */\n this.ho = sn(), \n /** Document Keys that have local changes */\n this.mutatedKeys = sn(), this.lo = ae(t), this.fo = new fs(this.lo);\n }\n return Object.defineProperty(t.prototype, \"wo\", {\n /**\n * The set of remote documents that the server has told us belongs to the target associated with\n * this view.\n */\n get: function() {\n return this.uo;\n },\n enumerable: !1,\n configurable: !0\n }), \n /**\n * Iterates over a set of doc changes, applies the query limit, and computes\n * what the new results should be, what the changes were, and whether we may\n * need to go back to the local cache for more results. Does not make any\n * changes to the view.\n * @param docChanges - The doc changes to apply to this view.\n * @param previousChanges - If this is being called with a refill, then start\n * with this set of docs and changes instead of the current view.\n * @returns a new set of docs, changes, and refill flag.\n */\n t.prototype._o = function(t, e) {\n var n = this, r = e ? e.mo : new ls, i = e ? e.fo : this.fo, o = e ? e.mutatedKeys : this.mutatedKeys, s = i, u = !1, a = $t(this.query) && i.size === this.query.limit ? i.last() : null, c = Xt(this.query) && i.size === this.query.limit ? i.first() : null;\n // Drop documents out to meet limit/limitToLast requirement.\n if (t.inorderTraversal((function(t, e) {\n var h = i.get(t), f = ue(n.query, e) ? e : null, l = !!h && n.mutatedKeys.has(h.key), d = !!f && (f.hasLocalMutations || \n // We only consider committed mutations for documents that were\n // mutated during the lifetime of the view.\n n.mutatedKeys.has(f.key) && f.hasCommittedMutations), p = !1;\n // Calculate change\n h && f ? h.data.isEqual(f.data) ? l !== d && (r.track({\n type: 3 /* Metadata */ ,\n doc: f\n }), p = !0) : n.yo(h, f) || (r.track({\n type: 2 /* Modified */ ,\n doc: f\n }), p = !0, (a && n.lo(f, a) > 0 || c && n.lo(f, c) < 0) && (\n // This doc moved from inside the limit to outside the limit.\n // That means there may be some other doc in the local cache\n // that should be included instead.\n u = !0)) : !h && f ? (r.track({\n type: 0 /* Added */ ,\n doc: f\n }), p = !0) : h && !f && (r.track({\n type: 1 /* Removed */ ,\n doc: h\n }), p = !0, (a || c) && (\n // A doc was removed from a full limit query. We'll need to\n // requery from the local cache to see if we know about some other\n // doc that should be in the results.\n u = !0)), p && (f ? (s = s.add(f), o = d ? o.add(t) : o.delete(t)) : (s = s.delete(t), \n o = o.delete(t)));\n })), $t(this.query) || Xt(this.query)) for (;s.size > this.query.limit; ) {\n var h = $t(this.query) ? s.last() : s.first();\n s = s.delete(h.key), o = o.delete(h.key), r.track({\n type: 1 /* Removed */ ,\n doc: h\n });\n }\n return {\n fo: s,\n mo: r,\n Nn: u,\n mutatedKeys: o\n };\n }, t.prototype.yo = function(t, e) {\n // We suppress the initial change event for documents that were modified as\n // part of a write acknowledgment (e.g. when the value of a server transform\n // is applied) as Watch will send us the same document again.\n // By suppressing the event, we only raise two user visible events (one with\n // `hasPendingWrites` and the final state of the document) instead of three\n // (one with `hasPendingWrites`, the modified document with\n // `hasPendingWrites` and the final state of the document).\n return t.hasLocalMutations && e.hasCommittedMutations && !e.hasLocalMutations;\n }, \n /**\n * Updates the view with the given ViewDocumentChanges and optionally updates\n * limbo docs and sync state from the provided target change.\n * @param docChanges - The set of changes to make to the view's docs.\n * @param updateLimboDocuments - Whether to update limbo documents based on\n * this change.\n * @param targetChange - A target change to apply for computing limbo docs and\n * sync state.\n * @returns A new ViewChange with the given docs, changes, and sync state.\n */\n // PORTING NOTE: The iOS/Android clients always compute limbo document changes.\n t.prototype.applyChanges = function(t, e, n) {\n var r = this, i = this.fo;\n this.fo = t.fo, this.mutatedKeys = t.mutatedKeys;\n // Sort changes based on type and query comparator\n var o = t.mo.jr();\n o.sort((function(t, e) {\n return function(t, e) {\n var n = function(t) {\n switch (t) {\n case 0 /* Added */ :\n return 1;\n\n case 2 /* Modified */ :\n case 3 /* Metadata */ :\n // A metadata change is converted to a modified change at the public\n // api layer. Since we sort by document key and then change type,\n // metadata and modified changes must be sorted equivalently.\n return 2;\n\n case 1 /* Removed */ :\n return 0;\n\n default:\n return O();\n }\n };\n return n(t) - n(e);\n }(t.type, e.type) || r.lo(t.doc, e.doc);\n })), this.po(n);\n var s = e ? this.Eo() : [], u = 0 === this.ho.size && this.current ? 1 /* Synced */ : 0 /* Local */ , a = u !== this.ao;\n return this.ao = u, 0 !== o.length || a ? {\n snapshot: new ds(this.query, t.fo, i, o, t.mutatedKeys, 0 /* Local */ === u, a, \n /* excludesMetadataChanges= */ !1),\n To: s\n } : {\n To: s\n };\n // no changes\n }, \n /**\n * Applies an OnlineState change to the view, potentially generating a\n * ViewChange if the view's syncState changes as a result.\n */\n t.prototype.zr = function(t) {\n return this.current && \"Offline\" /* Offline */ === t ? (\n // If we're offline, set `current` to false and then call applyChanges()\n // to refresh our syncState and generate a ViewChange as appropriate. We\n // are guaranteed to get a new TargetChange that sets `current` back to\n // true once the client is back online.\n this.current = !1, this.applyChanges({\n fo: this.fo,\n mo: new ls,\n mutatedKeys: this.mutatedKeys,\n Nn: !1\n }, \n /* updateLimboDocuments= */ !1)) : {\n To: []\n };\n }, \n /**\n * Returns whether the doc for the given key should be in limbo.\n */\n t.prototype.Io = function(t) {\n // If the remote end says it's part of this query, it's not in limbo.\n return !this.uo.has(t) && \n // The local store doesn't think it's a result, so it shouldn't be in limbo.\n !!this.fo.has(t) && !this.fo.get(t).hasLocalMutations;\n }, \n /**\n * Updates syncedDocuments, current, and limbo docs based on the given change.\n * Returns the list of changes to which docs are in limbo.\n */\n t.prototype.po = function(t) {\n var e = this;\n t && (t.addedDocuments.forEach((function(t) {\n return e.uo = e.uo.add(t);\n })), t.modifiedDocuments.forEach((function(t) {})), t.removedDocuments.forEach((function(t) {\n return e.uo = e.uo.delete(t);\n })), this.current = t.current);\n }, t.prototype.Eo = function() {\n var t = this;\n // We can only determine limbo documents when we're in-sync with the server.\n if (!this.current) return [];\n // TODO(klimt): Do this incrementally so that it's not quadratic when\n // updating many documents.\n var e = this.ho;\n this.ho = sn(), this.fo.forEach((function(e) {\n t.Io(e.key) && (t.ho = t.ho.add(e.key));\n }));\n // Diff the new limbo docs with the old limbo docs.\n var n = [];\n return e.forEach((function(e) {\n t.ho.has(e) || n.push(new Ds(e));\n })), this.ho.forEach((function(t) {\n e.has(t) || n.push(new Ns(t));\n })), n;\n }, \n /**\n * Update the in-memory state of the current view with the state read from\n * persistence.\n *\n * We update the query view whenever a client's primary status changes:\n * - When a client transitions from primary to secondary, it can miss\n * LocalStorage updates and its query views may temporarily not be\n * synchronized with the state on disk.\n * - For secondary to primary transitions, the client needs to update the list\n * of `syncedDocuments` since secondary clients update their query views\n * based purely on synthesized RemoteEvents.\n *\n * @param queryResult.documents - The documents that match the query according\n * to the LocalStore.\n * @param queryResult.remoteKeys - The keys of the documents that match the\n * query according to the backend.\n *\n * @returns The ViewChange that resulted from this synchronization.\n */\n // PORTING NOTE: Multi-tab only.\n t.prototype.Ao = function(t) {\n this.uo = t.Bn, this.ho = sn();\n var e = this._o(t.documents);\n return this.applyChanges(e, /*updateLimboDocuments=*/ !0);\n }, \n /**\n * Returns a view snapshot as if this query was just listened to. Contains\n * a document add for every existing document and the `fromCache` and\n * `hasPendingWrites` status of the already established view.\n */\n // PORTING NOTE: Multi-tab only.\n t.prototype.Ro = function() {\n return ds.fromInitialDocuments(this.query, this.fo, this.mutatedKeys, 0 /* Local */ === this.ao);\n }, t;\n}(), ks = function(\n/**\n * The query itself.\n */\nt, \n/**\n * The target number created by the client that is used in the watch\n * stream to identify this query.\n */\ne, \n/**\n * The view is responsible for computing the final merged truth of what\n * docs are in the query. It gets notified of local and remote changes,\n * and applies the query filters and limits to determine the most correct\n * possible results.\n */\nn) {\n this.query = t, this.targetId = e, this.view = n;\n}, Cs = function(t) {\n this.key = t, \n /**\n * Set to true once we've received a document. This is used in\n * getRemoteKeysForTarget() and ultimately used by WatchChangeAggregator to\n * decide whether it needs to manufacture a delete event for the target once\n * the target is CURRENT.\n */\n this.bo = !1;\n}, xs = /** @class */ function() {\n function t(t, e, n, \n // PORTING NOTE: Manages state synchronization in multi-tab environments.\n r, i, o) {\n this.localStore = t, this.remoteStore = e, this.eventManager = n, this.sharedClientState = r, \n this.currentUser = i, this.maxConcurrentLimboResolutions = o, this.vo = {}, this.Po = new Ii((function(t) {\n return oe(t);\n }), ie), this.Vo = new Map, \n /**\n * The keys of documents that are in limbo for which we haven't yet started a\n * limbo resolution query. The strings in this set are the result of calling\n * `key.path.canonicalString()` where `key` is a `DocumentKey` object.\n *\n * The `Set` type was chosen because it provides efficient lookup and removal\n * of arbitrary elements and it also maintains insertion order, providing the\n * desired queue-like FIFO semantics.\n */\n this.So = new Set, \n /**\n * Keeps track of the target ID for each document that is in limbo with an\n * active target.\n */\n this.Do = new We(ct.comparator), \n /**\n * Keeps track of the information about an active limbo resolution for each\n * active target ID that was started for the purpose of limbo resolution.\n */\n this.Co = new Map, this.No = new no, \n /** Stores user completion handlers, indexed by User and BatchId. */\n this.xo = {}, \n /** Stores user callbacks waiting for all pending writes to be acknowledged. */\n this.ko = new Map, this.Fo = ci.Yt(), this.onlineState = \"Unknown\" /* Unknown */ , \n // The primary state is set to `true` or `false` immediately after Firestore\n // startup. In the interim, a client should only be considered primary if\n // `isPrimary` is true.\n this.$o = void 0;\n }\n return Object.defineProperty(t.prototype, \"isPrimaryClient\", {\n get: function() {\n return !0 === this.$o;\n },\n enumerable: !1,\n configurable: !0\n }), t;\n}();\n\n/**\n * Initiates the new listen, resolves promise when listen enqueued to the\n * server. All the subsequent view snapshots or errors are sent to the\n * subscribed handlers. Returns the initial snapshot.\n */\nfunction Rs(t, e) {\n return n(this, void 0, void 0, (function() {\n var n, i, o, s, u, a;\n return r(this, (function(r) {\n switch (r.label) {\n case 0:\n return n = uu(t), (s = n.Po.get(e)) ? (\n // PORTING NOTE: With Multi-Tab Web, it is possible that a query view\n // already exists when EventManager calls us for the first time. This\n // happens when the primary tab is already listening to this query on\n // behalf of another tab and the user of the primary also starts listening\n // to the query. EventManager will not have an assigned target ID in this\n // case and calls `listen` to obtain this ID.\n i = s.targetId, n.sharedClientState.addLocalQueryTarget(i), o = s.view.Ro(), [ 3 /*break*/ , 4 ]) : [ 3 /*break*/ , 1 ];\n\n case 1:\n return [ 4 /*yield*/ , Wi(n.localStore, ne(e)) ];\n\n case 2:\n return u = r.sent(), a = n.sharedClientState.addLocalQueryTarget(u.targetId), i = u.targetId, \n [ 4 /*yield*/ , Ls(n, e, i, \"current\" === a) ];\n\n case 3:\n o = r.sent(), n.isPrimaryClient && Uo(n.remoteStore, u), r.label = 4;\n\n case 4:\n return [ 2 /*return*/ , o ];\n }\n }));\n }));\n}\n\n/**\n * Registers a view for a previously unknown query and computes its initial\n * snapshot.\n */ function Ls(t, e, i, o) {\n return n(this, void 0, void 0, (function() {\n var s, u, a, c, h, f;\n return r(this, (function(l) {\n switch (l.label) {\n case 0:\n // PORTING NOTE: On Web only, we inject the code that registers new Limbo\n // targets based on view changes. This allows us to only depend on Limbo\n // changes when user code includes queries.\n return t.Oo = function(e, i, o) {\n return function(t, e, i, o) {\n return n(this, void 0, void 0, (function() {\n var n, s, u;\n return r(this, (function(r) {\n switch (r.label) {\n case 0:\n return n = e.view._o(i), n.Nn ? [ 4 /*yield*/ , Yi(t.localStore, e.query, \n /* usePreviousResults= */ !1).then((function(t) {\n var r = t.documents;\n return e.view._o(r, n);\n })) ] : [ 3 /*break*/ , 2 ];\n\n case 1:\n // The query has a limit and some docs were removed, so we need\n // to re-run the query against the local store to make sure we\n // didn't lose any good docs that had been past the limit.\n n = r.sent(), r.label = 2;\n\n case 2:\n return s = o && o.targetChanges.get(e.targetId), u = e.view.applyChanges(n, \n /* updateLimboDocuments= */ t.isPrimaryClient, s), [ 2 /*return*/ , (zs(t, e.targetId, u.To), \n u.snapshot) ];\n }\n }));\n }));\n }(t, e, i, o);\n }, [ 4 /*yield*/ , Yi(t.localStore, e, \n /* usePreviousResults= */ !0) ];\n\n case 1:\n return s = l.sent(), u = new As(e, s.Bn), a = u._o(s.documents), c = hn.createSynthesizedTargetChangeForCurrentChange(i, o && \"Offline\" /* Offline */ !== t.onlineState), \n h = u.applyChanges(a, \n /* updateLimboDocuments= */ t.isPrimaryClient, c), zs(t, i, h.To), f = new ks(e, i, u), \n [ 2 /*return*/ , (t.Po.set(e, f), t.Vo.has(i) ? t.Vo.get(i).push(e) : t.Vo.set(i, [ e ]), \n h.snapshot) ];\n }\n }));\n }));\n}\n\n/** Stops listening to the query. */ function Os(t, e) {\n return n(this, void 0, void 0, (function() {\n var n, i, o;\n return r(this, (function(r) {\n switch (r.label) {\n case 0:\n return n = F(t), i = n.Po.get(e), (o = n.Vo.get(i.targetId)).length > 1 ? [ 2 /*return*/ , (n.Vo.set(i.targetId, o.filter((function(t) {\n return !ie(t, e);\n }))), void n.Po.delete(e)) ] : n.isPrimaryClient ? (\n // We need to remove the local query target first to allow us to verify\n // whether any other client is still interested in this target.\n n.sharedClientState.removeLocalQueryTarget(i.targetId), n.sharedClientState.isActiveQueryTarget(i.targetId) ? [ 3 /*break*/ , 2 ] : [ 4 /*yield*/ , Hi(n.localStore, i.targetId, \n /*keepPersistedTargetData=*/ !1).then((function() {\n n.sharedClientState.clearQueryState(i.targetId), Bo(n.remoteStore, i.targetId), \n Gs(n, i.targetId);\n })).catch(pi) ]) : [ 3 /*break*/ , 3 ];\n\n case 1:\n r.sent(), r.label = 2;\n\n case 2:\n return [ 3 /*break*/ , 5 ];\n\n case 3:\n return Gs(n, i.targetId), [ 4 /*yield*/ , Hi(n.localStore, i.targetId, \n /*keepPersistedTargetData=*/ !0) ];\n\n case 4:\n r.sent(), r.label = 5;\n\n case 5:\n return [ 2 /*return*/ ];\n }\n }));\n }));\n}\n\n/**\n * Initiates the write of local mutation batch which involves adding the\n * writes to the mutation queue, notifying the remote store about new\n * mutations and raising events for any changes this write caused.\n *\n * The promise returned by this call is resolved when the above steps\n * have completed, *not* when the write was acked by the backend. The\n * userCallback is resolved once the write was acked/rejected by the\n * backend (or failed locally for any other reason).\n */ function Ps(t, e, i) {\n return n(this, void 0, void 0, (function() {\n var n, o, s, u;\n return r(this, (function(r) {\n switch (r.label) {\n case 0:\n n = au(t), r.label = 1;\n\n case 1:\n return r.trys.push([ 1, 5, , 6 ]), [ 4 /*yield*/ , function(t, e) {\n var n, r = F(t), i = j.now(), o = e.reduce((function(t, e) {\n return t.add(e.key);\n }), sn());\n return r.persistence.runTransaction(\"Locally write mutations\", \"readwrite\", (function(t) {\n return r.Mn.pn(t, o).next((function(o) {\n n = o;\n for (\n // For non-idempotent mutations (such as `FieldValue.increment()`),\n // we record the base state in a separate patch mutation. This is\n // later used to guarantee consistent values and prevents flicker\n // even if the backend sends us an update that already includes our\n // transform.\n var s = [], u = 0, a = e; u < a.length; u++) {\n var c = a[u], h = Re(c, n.get(c.key));\n null != h && \n // NOTE: The base state should only be applied if there's some\n // existing document to override, so use a Precondition of\n // exists=true\n s.push(new Fe(c.key, h, St(h.value.mapValue), De.exists(!0)));\n }\n return r._n.addMutationBatch(t, i, s, e);\n }));\n })).then((function(t) {\n return t.applyToLocalDocumentSet(n), {\n batchId: t.batchId,\n changes: n\n };\n }));\n }(n.localStore, e) ];\n\n case 2:\n return o = r.sent(), n.sharedClientState.addPendingMutation(o.batchId), function(t, e, n) {\n var r = t.xo[t.currentUser.toKey()];\n r || (r = new We(q)), r = r.insert(e, n), t.xo[t.currentUser.toKey()] = r;\n }(n, o.batchId, i), [ 4 /*yield*/ , Ys(n, o.changes) ];\n\n case 3:\n return r.sent(), [ 4 /*yield*/ , Zo(n.remoteStore) ];\n\n case 4:\n return r.sent(), [ 3 /*break*/ , 6 ];\n\n case 5:\n return s = r.sent(), u = hs(s, \"Failed to persist write\"), i.reject(u), [ 3 /*break*/ , 6 ];\n\n case 6:\n return [ 2 /*return*/ ];\n }\n }));\n }));\n}\n\n/**\n * Applies one remote event to the sync engine, notifying any views of the\n * changes, and releasing any pending mutation batches that would become\n * visible because of the snapshot version the remote event contains.\n */ function Fs(t, e) {\n return n(this, void 0, void 0, (function() {\n var n, i;\n return r(this, (function(r) {\n switch (r.label) {\n case 0:\n n = F(t), r.label = 1;\n\n case 1:\n return r.trys.push([ 1, 4, , 6 ]), [ 4 /*yield*/ , Gi(n.localStore, e) ];\n\n case 2:\n return i = r.sent(), \n // Update `receivedDocument` as appropriate for any limbo targets.\n e.targetChanges.forEach((function(t, e) {\n var r = n.Co.get(e);\n r && (\n // Since this is a limbo resolution lookup, it's for a single document\n // and it could be added, modified, or removed, but not a combination.\n P(t.addedDocuments.size + t.modifiedDocuments.size + t.removedDocuments.size <= 1), \n t.addedDocuments.size > 0 ? r.bo = !0 : t.modifiedDocuments.size > 0 ? P(r.bo) : t.removedDocuments.size > 0 && (P(r.bo), \n r.bo = !1));\n })), [ 4 /*yield*/ , Ys(n, i, e) ];\n\n case 3:\n // Update `receivedDocument` as appropriate for any limbo targets.\n return r.sent(), [ 3 /*break*/ , 6 ];\n\n case 4:\n return [ 4 /*yield*/ , pi(r.sent()) ];\n\n case 5:\n return r.sent(), [ 3 /*break*/ , 6 ];\n\n case 6:\n return [ 2 /*return*/ ];\n }\n }));\n }));\n}\n\n/**\n * Applies an OnlineState change to the sync engine and notifies any views of\n * the change.\n */ function Ms(t, e, n) {\n var r = F(t);\n // If we are the secondary client, we explicitly ignore the remote store's\n // online state (the local client may go offline, even though the primary\n // tab remains online) and only apply the primary tab's online state from\n // SharedClientState.\n if (r.isPrimaryClient && 0 /* RemoteStore */ === n || !r.isPrimaryClient && 1 /* SharedClientState */ === n) {\n var i = [];\n r.Po.forEach((function(t, n) {\n var r = n.view.zr(e);\n r.snapshot && i.push(r.snapshot);\n })), function(t, e) {\n var n = F(t);\n n.onlineState = e;\n var r = !1;\n n.queries.forEach((function(t, n) {\n for (var i = 0, o = n.listeners; i < o.length; i++) {\n // Run global snapshot listeners if a consistent snapshot has been emitted.\n o[i].zr(e) && (r = !0);\n }\n })), r && bs(n);\n }(r.eventManager, e), i.length && r.vo._r(i), r.onlineState = e, r.isPrimaryClient && r.sharedClientState.setOnlineState(e);\n }\n}\n\n/**\n * Rejects the listen for the given targetID. This can be triggered by the\n * backend for any active target.\n *\n * @param syncEngine - The sync engine implementation.\n * @param targetId - The targetID corresponds to one previously initiated by the\n * user as part of TargetData passed to listen() on RemoteStore.\n * @param err - A description of the condition that has forced the rejection.\n * Nearly always this will be an indication that the user is no longer\n * authorized to see the data matching the target.\n */ function Vs(t, e, i) {\n return n(this, void 0, void 0, (function() {\n var n, o, s, u, a, c;\n return r(this, (function(r) {\n switch (r.label) {\n case 0:\n // PORTING NOTE: Multi-tab only.\n return (n = F(t)).sharedClientState.updateQueryState(e, \"rejected\", i), o = n.Co.get(e), \n (s = o && o.key) ? (u = (u = new We(ct.comparator)).insert(s, Nt.newNoDocument(s, K.min())), \n a = sn().add(s), c = new cn(K.min(), \n /* targetChanges= */ new Map, \n /* targetMismatches= */ new $e(q), u, a), [ 4 /*yield*/ , Fs(n, c) ]) : [ 3 /*break*/ , 2 ];\n\n case 1:\n return r.sent(), \n // Since this query failed, we won't want to manually unlisten to it.\n // We only remove it from bookkeeping after we successfully applied the\n // RemoteEvent. If `applyRemoteEvent()` throws, we want to re-listen to\n // this query when the RemoteStore restarts the Watch stream, which should\n // re-trigger the target failure.\n n.Do = n.Do.remove(s), n.Co.delete(e), Hs(n), [ 3 /*break*/ , 4 ];\n\n case 2:\n return [ 4 /*yield*/ , Hi(n.localStore, e, \n /* keepPersistedTargetData */ !1).then((function() {\n return Gs(n, e, i);\n })).catch(pi) ];\n\n case 3:\n r.sent(), r.label = 4;\n\n case 4:\n return [ 2 /*return*/ ];\n }\n }));\n }));\n}\n\nfunction qs(t, e) {\n return n(this, void 0, void 0, (function() {\n var n, i, o;\n return r(this, (function(r) {\n switch (r.label) {\n case 0:\n n = F(t), i = e.batch.batchId, r.label = 1;\n\n case 1:\n return r.trys.push([ 1, 4, , 6 ]), [ 4 /*yield*/ , ji(n.localStore, e) ];\n\n case 2:\n return o = r.sent(), \n // The local store may or may not be able to apply the write result and\n // raise events immediately (depending on whether the watcher is caught\n // up), so we raise user callbacks first so that they consistently happen\n // before listen events.\n Ks(n, i, /*error=*/ null), js(n, i), n.sharedClientState.updateMutationState(i, \"acknowledged\"), \n [ 4 /*yield*/ , Ys(n, o) ];\n\n case 3:\n // The local store may or may not be able to apply the write result and\n // raise events immediately (depending on whether the watcher is caught\n // up), so we raise user callbacks first so that they consistently happen\n // before listen events.\n return r.sent(), [ 3 /*break*/ , 6 ];\n\n case 4:\n return [ 4 /*yield*/ , pi(r.sent()) ];\n\n case 5:\n return r.sent(), [ 3 /*break*/ , 6 ];\n\n case 6:\n return [ 2 /*return*/ ];\n }\n }));\n }));\n}\n\nfunction Us(t, e, i) {\n return n(this, void 0, void 0, (function() {\n var n, o;\n return r(this, (function(r) {\n switch (r.label) {\n case 0:\n n = F(t), r.label = 1;\n\n case 1:\n return r.trys.push([ 1, 4, , 6 ]), [ 4 /*yield*/ , function(t, e) {\n var n = F(t);\n return n.persistence.runTransaction(\"Reject batch\", \"readwrite-primary\", (function(t) {\n var r;\n return n._n.lookupMutationBatch(t, e).next((function(e) {\n return P(null !== e), r = e.keys(), n._n.removeMutationBatch(t, e);\n })).next((function() {\n return n._n.performConsistencyCheck(t);\n })).next((function() {\n return n.Mn.pn(t, r);\n }));\n }));\n }(n.localStore, e) ];\n\n case 2:\n return o = r.sent(), \n // The local store may or may not be able to apply the write result and\n // raise events immediately (depending on whether the watcher is caught up),\n // so we raise user callbacks first so that they consistently happen before\n // listen events.\n Ks(n, e, i), js(n, e), n.sharedClientState.updateMutationState(e, \"rejected\", i), \n [ 4 /*yield*/ , Ys(n, o) ];\n\n case 3:\n // The local store may or may not be able to apply the write result and\n // raise events immediately (depending on whether the watcher is caught up),\n // so we raise user callbacks first so that they consistently happen before\n // listen events.\n return r.sent(), [ 3 /*break*/ , 6 ];\n\n case 4:\n return [ 4 /*yield*/ , pi(r.sent()) ];\n\n case 5:\n return r.sent(), [ 3 /*break*/ , 6 ];\n\n case 6:\n return [ 2 /*return*/ ];\n }\n }));\n }));\n}\n\n/**\n * Registers a user callback that resolves when all pending mutations at the moment of calling\n * are acknowledged .\n */ function Bs(t, e) {\n return n(this, void 0, void 0, (function() {\n var n, i, o, s, u;\n return r(this, (function(r) {\n switch (r.label) {\n case 0:\n zo((n = F(t)).remoteStore) || C(\"SyncEngine\", \"The network is disabled. The task returned by 'awaitPendingWrites()' will not complete until the network is enabled.\"), \n r.label = 1;\n\n case 1:\n return r.trys.push([ 1, 3, , 4 ]), [ 4 /*yield*/ , function(t) {\n var e = F(t);\n return e.persistence.runTransaction(\"Get highest unacknowledged batch id\", \"readonly\", (function(t) {\n return e._n.getHighestUnacknowledgedBatchId(t);\n }));\n }(n.localStore) ];\n\n case 2:\n return -1 === (i = r.sent()) ? [ 2 /*return*/ , void e.resolve() ] : ((o = n.ko.get(i) || []).push(e), \n n.ko.set(i, o), [ 3 /*break*/ , 4 ]);\n\n case 3:\n return s = r.sent(), u = hs(s, \"Initialization of waitForPendingWrites() operation failed\"), \n e.reject(u), [ 3 /*break*/ , 4 ];\n\n case 4:\n return [ 2 /*return*/ ];\n }\n }));\n }));\n}\n\n/**\n * Triggers the callbacks that are waiting for this batch id to get acknowledged by server,\n * if there are any.\n */ function js(t, e) {\n (t.ko.get(e) || []).forEach((function(t) {\n t.resolve();\n })), t.ko.delete(e)\n /** Reject all outstanding callbacks waiting for pending writes to complete. */;\n}\n\nfunction Ks(t, e, n) {\n var r = F(t), i = r.xo[r.currentUser.toKey()];\n // NOTE: Mutations restored from persistence won't have callbacks, so it's\n // okay for there to be no callback for this ID.\n if (i) {\n var o = i.get(e);\n o && (n ? o.reject(n) : o.resolve(), i = i.remove(e)), r.xo[r.currentUser.toKey()] = i;\n }\n}\n\nfunction Gs(t, e, n) {\n void 0 === n && (n = null), t.sharedClientState.removeLocalQueryTarget(e);\n for (var r = 0, i = t.Vo.get(e); r < i.length; r++) {\n var o = i[r];\n t.Po.delete(o), n && t.vo.Mo(o, n);\n }\n t.Vo.delete(e), t.isPrimaryClient && t.No.Zn(e).forEach((function(e) {\n t.No.containsKey(e) || \n // We removed the last reference for this key\n Qs(t, e);\n }));\n}\n\nfunction Qs(t, e) {\n t.So.delete(e.path.canonicalString());\n // It's possible that the target already got removed because the query failed. In that case,\n // the key won't exist in `limboTargetsByKey`. Only do the cleanup if we still have the target.\n var n = t.Do.get(e);\n null !== n && (Bo(t.remoteStore, n), t.Do = t.Do.remove(e), t.Co.delete(n), Hs(t));\n}\n\nfunction zs(t, e, n) {\n for (var r = 0, i = n; r < i.length; r++) {\n var o = i[r];\n o instanceof Ns ? (t.No.addReference(o.key, e), Ws(t, o)) : o instanceof Ds ? (C(\"SyncEngine\", \"Document no longer in limbo: \" + o.key), \n t.No.removeReference(o.key, e), t.No.containsKey(o.key) || \n // We removed the last reference for this key\n Qs(t, o.key)) : O();\n }\n}\n\nfunction Ws(t, e) {\n var n = e.key, r = n.path.canonicalString();\n t.Do.get(n) || t.So.has(r) || (C(\"SyncEngine\", \"New document in limbo: \" + n), t.So.add(r), \n Hs(t));\n}\n\n/**\n * Starts listens for documents in limbo that are enqueued for resolution,\n * subject to a maximum number of concurrent resolutions.\n *\n * Without bounding the number of concurrent resolutions, the server can fail\n * with \"resource exhausted\" errors which can lead to pathological client\n * behavior as seen in https://github.com/firebase/firebase-js-sdk/issues/2683.\n */ function Hs(t) {\n for (;t.So.size > 0 && t.Do.size < t.maxConcurrentLimboResolutions; ) {\n var e = t.So.values().next().value;\n t.So.delete(e);\n var n = new ct(H.fromString(e)), r = t.Fo.next();\n t.Co.set(r, new Cs(n)), t.Do = t.Do.insert(n, r), Uo(t.remoteStore, new Pr(ne(Yt(n.path)), r, 2 /* LimboResolution */ , S.o));\n }\n}\n\nfunction Ys(t, e, i) {\n return n(this, void 0, void 0, (function() {\n var o, s, u, a;\n return r(this, (function(c) {\n switch (c.label) {\n case 0:\n return o = F(t), s = [], u = [], a = [], o.Po.isEmpty() ? [ 3 /*break*/ , 3 ] : (o.Po.forEach((function(t, n) {\n a.push(o.Oo(n, e, i).then((function(t) {\n if (t) {\n o.isPrimaryClient && o.sharedClientState.updateQueryState(n.targetId, t.fromCache ? \"not-current\" : \"current\"), \n s.push(t);\n var e = Mi.Pn(n.targetId, t);\n u.push(e);\n }\n })));\n })), [ 4 /*yield*/ , Promise.all(a) ]);\n\n case 1:\n return c.sent(), o.vo._r(s), [ 4 /*yield*/ , function(t, e) {\n return n(this, void 0, void 0, (function() {\n var n, i, o, s, u, a, c, h, f;\n return r(this, (function(r) {\n switch (r.label) {\n case 0:\n n = F(t), r.label = 1;\n\n case 1:\n return r.trys.push([ 1, 3, , 4 ]), [ 4 /*yield*/ , n.persistence.runTransaction(\"notifyLocalViewChanges\", \"readwrite\", (function(t) {\n return Ir.forEach(e, (function(e) {\n return Ir.forEach(e.bn, (function(r) {\n return n.persistence.referenceDelegate.addReference(t, e.targetId, r);\n })).next((function() {\n return Ir.forEach(e.vn, (function(r) {\n return n.persistence.referenceDelegate.removeReference(t, e.targetId, r);\n }));\n }));\n }));\n })) ];\n\n case 2:\n return r.sent(), [ 3 /*break*/ , 4 ];\n\n case 3:\n if (!Nr(i = r.sent())) throw i;\n // If `notifyLocalViewChanges` fails, we did not advance the sequence\n // number for the documents that were included in this transaction.\n // This might trigger them to be deleted earlier than they otherwise\n // would have, but it should not invalidate the integrity of the data.\n return C(\"LocalStore\", \"Failed to update sequence numbers: \" + i), \n [ 3 /*break*/ , 4 ];\n\n case 4:\n for (o = 0, s = e; o < s.length; o++) u = s[o], a = u.targetId, u.fromCache || (c = n.kn.get(a), \n h = c.snapshotVersion, f = c.withLastLimboFreeSnapshotVersion(h), \n // Advance the last limbo free snapshot version\n n.kn = n.kn.insert(a, f));\n return [ 2 /*return*/ ];\n }\n }));\n }));\n }(o.localStore, u) ];\n\n case 2:\n c.sent(), c.label = 3;\n\n case 3:\n return [ 2 /*return*/ ];\n }\n }));\n }));\n}\n\nfunction $s(t, e) {\n return n(this, void 0, void 0, (function() {\n var n, i;\n return r(this, (function(r) {\n switch (r.label) {\n case 0:\n return (n = F(t)).currentUser.isEqual(e) ? [ 3 /*break*/ , 3 ] : (C(\"SyncEngine\", \"User change. New user:\", e.toKey()), \n [ 4 /*yield*/ , Bi(n.localStore, e) ]);\n\n case 1:\n return i = r.sent(), n.currentUser = e, \n // Fails tasks waiting for pending writes requested by previous user.\n function(t, e) {\n t.ko.forEach((function(t) {\n t.forEach((function(t) {\n t.reject(new D(N.CANCELLED, \"'waitForPendingWrites' promise is rejected due to a user change.\"));\n }));\n })), t.ko.clear();\n }(n), \n // TODO(b/114226417): Consider calling this only in the primary tab.\n n.sharedClientState.handleUserChange(e, i.removedBatchIds, i.addedBatchIds), [ 4 /*yield*/ , Ys(n, i.Ln) ];\n\n case 2:\n r.sent(), r.label = 3;\n\n case 3:\n return [ 2 /*return*/ ];\n }\n }));\n }));\n}\n\nfunction Xs(t, e) {\n var n = F(t), r = n.Co.get(e);\n if (r && r.bo) return sn().add(r.key);\n var i = sn(), o = n.Vo.get(e);\n if (!o) return i;\n for (var s = 0, u = o; s < u.length; s++) {\n var a = u[s], c = n.Po.get(a);\n i = i.unionWith(c.view.wo);\n }\n return i;\n}\n\n/**\n * Reconcile the list of synced documents in an existing view with those\n * from persistence.\n */ function Js(t, e) {\n return n(this, void 0, void 0, (function() {\n var n, i, o;\n return r(this, (function(r) {\n switch (r.label) {\n case 0:\n return [ 4 /*yield*/ , Yi((n = F(t)).localStore, e.query, \n /* usePreviousResults= */ !0) ];\n\n case 1:\n return i = r.sent(), o = e.view.Ao(i), [ 2 /*return*/ , (n.isPrimaryClient && zs(n, e.targetId, o.To), \n o) ];\n }\n }));\n }));\n}\n\n/**\n * Retrieves newly changed documents from remote document cache and raises\n * snapshots if needed.\n */\n// PORTING NOTE: Multi-Tab only.\nfunction Zs(t) {\n return n(this, void 0, void 0, (function() {\n var e;\n return r(this, (function(n) {\n return [ 2 /*return*/ , Xi((e = F(t)).localStore).then((function(t) {\n return Ys(e, t);\n })) ];\n }));\n }));\n}\n\n/** Applies a mutation state to an existing batch. */\n// PORTING NOTE: Multi-Tab only.\nfunction tu(t, e, i, o) {\n return n(this, void 0, void 0, (function() {\n var n, s;\n return r(this, (function(r) {\n switch (r.label) {\n case 0:\n return [ 4 /*yield*/ , function(t, e) {\n var n = F(t), r = F(n._n);\n return n.persistence.runTransaction(\"Lookup mutation documents\", \"readonly\", (function(t) {\n return r.jt(t, e).next((function(e) {\n return e ? n.Mn.pn(t, e) : Ir.resolve(null);\n }));\n }));\n }((n = F(t)).localStore, e) ];\n\n case 1:\n return null === (s = r.sent()) ? [ 3 /*break*/ , 6 ] : \"pending\" !== i ? [ 3 /*break*/ , 3 ] : [ 4 /*yield*/ , Zo(n.remoteStore) ];\n\n case 2:\n // If we are the primary client, we need to send this write to the\n // backend. Secondary clients will ignore these writes since their remote\n // connection is disabled.\n return r.sent(), [ 3 /*break*/ , 4 ];\n\n case 3:\n \"acknowledged\" === i || \"rejected\" === i ? (\n // NOTE: Both these methods are no-ops for batches that originated from\n // other clients.\n Ks(n, e, o || null), js(n, e), function(t, e) {\n F(F(t)._n).Gt(e);\n }(n.localStore, e)) : O(), r.label = 4;\n\n case 4:\n return [ 4 /*yield*/ , Ys(n, s) ];\n\n case 5:\n return r.sent(), [ 3 /*break*/ , 7 ];\n\n case 6:\n // A throttled tab may not have seen the mutation before it was completed\n // and removed from the mutation queue, in which case we won't have cached\n // the affected documents. In this case we can safely ignore the update\n // since that means we didn't apply the mutation locally at all (if we\n // had, we would have cached the affected documents), and so we will just\n // see any resulting document changes via normal remote document updates\n // as applicable.\n C(\"SyncEngine\", \"Cannot apply mutation batch with id: \" + e), r.label = 7;\n\n case 7:\n return [ 2 /*return*/ ];\n }\n }));\n }));\n}\n\n/** Applies a query target change from a different tab. */\n// PORTING NOTE: Multi-Tab only.\nfunction eu(t, e) {\n return n(this, void 0, void 0, (function() {\n var n, i, o, s, u, a, c, h;\n return r(this, (function(r) {\n switch (r.label) {\n case 0:\n return uu(n = F(t)), au(n), !0 !== e || !0 === n.$o ? [ 3 /*break*/ , 3 ] : (i = n.sharedClientState.getAllActiveQueryTargets(), \n [ 4 /*yield*/ , nu(n, i.toArray()) ]);\n\n case 1:\n return o = r.sent(), n.$o = !0, [ 4 /*yield*/ , ss(n.remoteStore, !0) ];\n\n case 2:\n for (r.sent(), s = 0, u = o; s < u.length; s++) a = u[s], Uo(n.remoteStore, a);\n return [ 3 /*break*/ , 7 ];\n\n case 3:\n return !1 !== e || !1 === n.$o ? [ 3 /*break*/ , 7 ] : (c = [], h = Promise.resolve(), \n n.Vo.forEach((function(t, e) {\n n.sharedClientState.isLocalQueryTarget(e) ? c.push(e) : h = h.then((function() {\n return Gs(n, e), Hi(n.localStore, e, \n /*keepPersistedTargetData=*/ !0);\n })), Bo(n.remoteStore, e);\n })), [ 4 /*yield*/ , h ]);\n\n case 4:\n return r.sent(), [ 4 /*yield*/ , nu(n, c) ];\n\n case 5:\n return r.sent(), \n // PORTING NOTE: Multi-Tab only.\n function(t) {\n var e = F(t);\n e.Co.forEach((function(t, n) {\n Bo(e.remoteStore, n);\n })), e.No.ts(), e.Co = new Map, e.Do = new We(ct.comparator);\n }(n), n.$o = !1, [ 4 /*yield*/ , ss(n.remoteStore, !1) ];\n\n case 6:\n r.sent(), r.label = 7;\n\n case 7:\n return [ 2 /*return*/ ];\n }\n }));\n }));\n}\n\nfunction nu(t, e, i) {\n return n(this, void 0, void 0, (function() {\n var n, i, o, s, u, a, c, h, f, l, d, p, y, v;\n return r(this, (function(r) {\n switch (r.label) {\n case 0:\n n = F(t), i = [], o = [], s = 0, u = e, r.label = 1;\n\n case 1:\n return s < u.length ? (a = u[s], c = void 0, (h = n.Vo.get(a)) && 0 !== h.length ? [ 4 /*yield*/ , Wi(n.localStore, ne(h[0])) ] : [ 3 /*break*/ , 7 ]) : [ 3 /*break*/ , 13 ];\n\n case 2:\n // For queries that have a local View, we fetch their current state\n // from LocalStore (as the resume token and the snapshot version\n // might have changed) and reconcile their views with the persisted\n // state (the list of syncedDocuments may have gotten out of sync).\n c = r.sent(), f = 0, l = h, r.label = 3;\n\n case 3:\n return f < l.length ? (d = l[f], p = n.Po.get(d), [ 4 /*yield*/ , Js(n, p) ]) : [ 3 /*break*/ , 6 ];\n\n case 4:\n (y = r.sent()).snapshot && o.push(y.snapshot), r.label = 5;\n\n case 5:\n return f++, [ 3 /*break*/ , 3 ];\n\n case 6:\n return [ 3 /*break*/ , 11 ];\n\n case 7:\n return [ 4 /*yield*/ , $i(n.localStore, a) ];\n\n case 8:\n return v = r.sent(), [ 4 /*yield*/ , Wi(n.localStore, v) ];\n\n case 9:\n return c = r.sent(), [ 4 /*yield*/ , Ls(n, ru(v), a, \n /*current=*/ !1) ];\n\n case 10:\n r.sent(), r.label = 11;\n\n case 11:\n i.push(c), r.label = 12;\n\n case 12:\n return s++, [ 3 /*break*/ , 1 ];\n\n case 13:\n return [ 2 /*return*/ , (n.vo._r(o), i) ];\n }\n }));\n }));\n}\n\n/**\n * Creates a `Query` object from the specified `Target`. There is no way to\n * obtain the original `Query`, so we synthesize a `Query` from the `Target`\n * object.\n *\n * The synthesized result might be different from the original `Query`, but\n * since the synthesized `Query` should return the same results as the\n * original one (only the presentation of results might differ), the potential\n * difference will not cause issues.\n */\n// PORTING NOTE: Multi-Tab only.\nfunction ru(t) {\n return Ht(t.path, t.collectionGroup, t.orderBy, t.filters, t.limit, \"F\" /* First */ , t.startAt, t.endAt);\n}\n\n/** Returns the IDs of the clients that are currently active. */\n// PORTING NOTE: Multi-Tab only.\nfunction iu(t) {\n var e = F(t);\n return F(F(e.localStore).persistence).fn();\n}\n\n/** Applies a query target change from a different tab. */\n// PORTING NOTE: Multi-Tab only.\nfunction ou(t, e, i, o) {\n return n(this, void 0, void 0, (function() {\n var n, s, u;\n return r(this, (function(r) {\n switch (r.label) {\n case 0:\n return (n = F(t)).$o ? (\n // If we receive a target state notification via WebStorage, we are\n // either already secondary or another tab has taken the primary lease.\n C(\"SyncEngine\", \"Ignoring unexpected query state notification.\"), [ 3 /*break*/ , 8 ]) : [ 3 /*break*/ , 1 ];\n\n case 1:\n if (!n.Vo.has(e)) return [ 3 /*break*/ , 8 ];\n switch (i) {\n case \"current\":\n case \"not-current\":\n return [ 3 /*break*/ , 2 ];\n\n case \"rejected\":\n return [ 3 /*break*/ , 5 ];\n }\n return [ 3 /*break*/ , 7 ];\n\n case 2:\n return [ 4 /*yield*/ , Xi(n.localStore) ];\n\n case 3:\n return s = r.sent(), u = cn.createSynthesizedRemoteEventForCurrentChange(e, \"current\" === i), \n [ 4 /*yield*/ , Ys(n, s, u) ];\n\n case 4:\n return r.sent(), [ 3 /*break*/ , 8 ];\n\n case 5:\n return [ 4 /*yield*/ , Hi(n.localStore, e, \n /* keepPersistedTargetData */ !0) ];\n\n case 6:\n return r.sent(), Gs(n, e, o), [ 3 /*break*/ , 8 ];\n\n case 7:\n O(), r.label = 8;\n\n case 8:\n return [ 2 /*return*/ ];\n }\n }));\n }));\n}\n\n/** Adds or removes Watch targets for queries from different tabs. */ function su(t, e, i) {\n return n(this, void 0, void 0, (function() {\n var n, o, s, u, a, c, h, f, l, d;\n return r(this, (function(p) {\n switch (p.label) {\n case 0:\n if (!(n = uu(t)).$o) return [ 3 /*break*/ , 10 ];\n o = 0, s = e, p.label = 1;\n\n case 1:\n return o < s.length ? (u = s[o], n.Vo.has(u) ? (\n // A target might have been added in a previous attempt\n C(\"SyncEngine\", \"Adding an already active target \" + u), [ 3 /*break*/ , 5 ]) : [ 4 /*yield*/ , $i(n.localStore, u) ]) : [ 3 /*break*/ , 6 ];\n\n case 2:\n return a = p.sent(), [ 4 /*yield*/ , Wi(n.localStore, a) ];\n\n case 3:\n return c = p.sent(), [ 4 /*yield*/ , Ls(n, ru(a), c.targetId, \n /*current=*/ !1) ];\n\n case 4:\n p.sent(), Uo(n.remoteStore, c), p.label = 5;\n\n case 5:\n return o++, [ 3 /*break*/ , 1 ];\n\n case 6:\n h = function(t) {\n return r(this, (function(e) {\n switch (e.label) {\n case 0:\n return n.Vo.has(t) ? [ 4 /*yield*/ , Hi(n.localStore, t, \n /* keepPersistedTargetData */ !1).then((function() {\n Bo(n.remoteStore, t), Gs(n, t);\n })).catch(pi) ] : [ 3 /*break*/ , 2 ];\n\n // Release queries that are still active.\n case 1:\n // Release queries that are still active.\n e.sent(), e.label = 2;\n\n case 2:\n return [ 2 /*return*/ ];\n }\n }));\n }, f = 0, l = i, p.label = 7;\n\n case 7:\n return f < l.length ? (d = l[f], [ 5 /*yield**/ , h(d) ]) : [ 3 /*break*/ , 10 ];\n\n case 8:\n p.sent(), p.label = 9;\n\n case 9:\n return f++, [ 3 /*break*/ , 7 ];\n\n case 10:\n return [ 2 /*return*/ ];\n }\n }));\n }));\n}\n\nfunction uu(t) {\n var e = F(t);\n return e.remoteStore.remoteSyncer.applyRemoteEvent = Fs.bind(null, e), e.remoteStore.remoteSyncer.getRemoteKeysForTarget = Xs.bind(null, e), \n e.remoteStore.remoteSyncer.rejectListen = Vs.bind(null, e), e.vo._r = gs.bind(null, e.eventManager), \n e.vo.Mo = ws.bind(null, e.eventManager), e;\n}\n\nfunction au(t) {\n var e = F(t);\n return e.remoteStore.remoteSyncer.applySuccessfulWrite = qs.bind(null, e), e.remoteStore.remoteSyncer.rejectFailedWrite = Us.bind(null, e), \n e\n /**\n * Loads a Firestore bundle into the SDK. The returned promise resolves when\n * the bundle finished loading.\n *\n * @param syncEngine - SyncEngine to use.\n * @param bundleReader - Bundle to load into the SDK.\n * @param task - LoadBundleTask used to update the loading progress to public API.\n */;\n}\n\nfunction cu(t, e, i) {\n var o = F(t);\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n (function(t, e, i) {\n return n(this, void 0, void 0, (function() {\n var n, o, s, u, a, c;\n return r(this, (function(r) {\n switch (r.label) {\n case 0:\n return r.trys.push([ 0, 14, , 15 ]), [ 4 /*yield*/ , e.getMetadata() ];\n\n case 1:\n return n = r.sent(), [ 4 /*yield*/ , function(t, e) {\n var n = F(t), r = En(e.createTime);\n return n.persistence.runTransaction(\"hasNewerBundle\", \"readonly\", (function(t) {\n return n.Ke.getBundleMetadata(t, e.id);\n })).then((function(t) {\n return !!t && t.createTime.compareTo(r) >= 0;\n }));\n }(t.localStore, n) ];\n\n case 2:\n return r.sent() ? [ 4 /*yield*/ , e.close() ] : [ 3 /*break*/ , 4 ];\n\n case 3:\n return [ 2 /*return*/ , (r.sent(), void i._completeWith(function(t) {\n return {\n taskState: \"Success\",\n documentsLoaded: t.totalDocuments,\n bytesLoaded: t.totalBytes,\n totalDocuments: t.totalDocuments,\n totalBytes: t.totalBytes\n };\n }(n))) ];\n\n case 4:\n return i._updateProgress(Ss(n)), o = new Es(n, t.localStore, e.R), [ 4 /*yield*/ , e.Lo() ];\n\n case 5:\n s = r.sent(), r.label = 6;\n\n case 6:\n return s ? [ 4 /*yield*/ , o.oo(s) ] : [ 3 /*break*/ , 10 ];\n\n case 7:\n return (u = r.sent()) && i._updateProgress(u), [ 4 /*yield*/ , e.Lo() ];\n\n case 8:\n s = r.sent(), r.label = 9;\n\n case 9:\n return [ 3 /*break*/ , 6 ];\n\n case 10:\n return [ 4 /*yield*/ , o.complete() ];\n\n case 11:\n // TODO(b/160876443): This currently raises snapshots with\n // `fromCache=false` if users already listen to some queries and bundles\n // has newer version.\n return a = r.sent(), [ 4 /*yield*/ , Ys(t, a.wn, \n /* remoteEvent */ void 0) ];\n\n case 12:\n // Save metadata, so loading the same bundle will skip.\n // TODO(b/160876443): This currently raises snapshots with\n // `fromCache=false` if users already listen to some queries and bundles\n // has newer version.\n return r.sent(), [ 4 /*yield*/ , function(t, e) {\n var n = F(t);\n return n.persistence.runTransaction(\"Save bundle\", \"readwrite\", (function(t) {\n return n.Ke.saveBundleMetadata(t, e);\n }));\n }(t.localStore, n) ];\n\n case 13:\n // TODO(b/160876443): This currently raises snapshots with\n // `fromCache=false` if users already listen to some queries and bundles\n // has newer version.\n // Save metadata, so loading the same bundle will skip.\n return r.sent(), i._completeWith(a.progress), [ 3 /*break*/ , 15 ];\n\n case 14:\n return R(\"SyncEngine\", \"Loading bundle failed with \" + (c = r.sent())), i._failWith(c), \n [ 3 /*break*/ , 15 ];\n\n case 15:\n return [ 2 /*return*/ ];\n }\n }));\n }));\n }\n /**\n * @license\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n /**\n * Provides all components needed for Firestore with in-memory persistence.\n * Uses EagerGC garbage collection.\n */)(o, e, i).then((function() {\n o.sharedClientState.notifyBundleLoaded();\n }));\n}\n\nvar hu = /** @class */ function() {\n function t() {\n this.synchronizeTabs = !1;\n }\n return t.prototype.initialize = function(t) {\n return n(this, void 0, void 0, (function() {\n return r(this, (function(e) {\n switch (e.label) {\n case 0:\n return this.R = Co(t.databaseInfo.databaseId), this.sharedClientState = this.Bo(t), \n this.persistence = this.qo(t), [ 4 /*yield*/ , this.persistence.start() ];\n\n case 1:\n return e.sent(), this.gcScheduler = this.Uo(t), this.localStore = this.Ko(t), [ 2 /*return*/ ];\n }\n }));\n }));\n }, t.prototype.Uo = function(t) {\n return null;\n }, t.prototype.Ko = function(t) {\n return Ui(this.persistence, new Vi, t.initialUser, this.R);\n }, t.prototype.qo = function(t) {\n return new ao(ho.bs, this.R);\n }, t.prototype.Bo = function(t) {\n return new To;\n }, t.prototype.terminate = function() {\n return n(this, void 0, void 0, (function() {\n return r(this, (function(t) {\n switch (t.label) {\n case 0:\n return this.gcScheduler && this.gcScheduler.stop(), [ 4 /*yield*/ , this.sharedClientState.shutdown() ];\n\n case 1:\n return t.sent(), [ 4 /*yield*/ , this.persistence.shutdown() ];\n\n case 2:\n return t.sent(), [ 2 /*return*/ ];\n }\n }));\n }));\n }, t;\n}(), fu = /** @class */ function(e) {\n function i(t, n, r) {\n var i = this;\n return (i = e.call(this) || this).Qo = t, i.cacheSizeBytes = n, i.forceOwnership = r, \n i.synchronizeTabs = !1, i;\n }\n return t(i, e), i.prototype.initialize = function(t) {\n return n(this, void 0, void 0, (function() {\n var n = this;\n return r(this, (function(r) {\n switch (r.label) {\n case 0:\n return [ 4 /*yield*/ , e.prototype.initialize.call(this, t) ];\n\n case 1:\n return r.sent(), [ 4 /*yield*/ , Ji(this.localStore) ];\n\n case 2:\n return r.sent(), [ 4 /*yield*/ , this.Qo.initialize(this, t) ];\n\n case 3:\n // Enqueue writes from a previous session\n return r.sent(), [ 4 /*yield*/ , au(this.Qo.syncEngine) ];\n\n case 4:\n // Enqueue writes from a previous session\n return r.sent(), [ 4 /*yield*/ , Zo(this.Qo.remoteStore) ];\n\n case 5:\n // NOTE: This will immediately call the listener, so we make sure to\n // set it after localStore / remoteStore are started.\n return r.sent(), [ 4 /*yield*/ , this.persistence.He((function() {\n return n.gcScheduler && !n.gcScheduler.started && n.gcScheduler.start(n.localStore), \n Promise.resolve();\n })) ];\n\n case 6:\n // NOTE: This will immediately call the listener, so we make sure to\n // set it after localStore / remoteStore are started.\n return r.sent(), [ 2 /*return*/ ];\n }\n }));\n }));\n }, i.prototype.Ko = function(t) {\n return Ui(this.persistence, new Vi, t.initialUser, this.R);\n }, i.prototype.Uo = function(t) {\n var e = this.persistence.referenceDelegate.garbageCollector;\n return new mi(e, t.asyncQueue);\n }, i.prototype.qo = function(t) {\n var e = Oi(t.databaseInfo.databaseId, t.databaseInfo.persistenceKey), n = void 0 !== this.cacheSizeBytes ? ei.withCacheSize(this.cacheSizeBytes) : ei.DEFAULT;\n return new xi(this.synchronizeTabs, e, t.clientId, n, t.asyncQueue, Ao(), ko(), this.R, this.sharedClientState, !!this.forceOwnership);\n }, i.prototype.Bo = function(t) {\n return new To;\n }, i;\n}(hu), lu = /** @class */ function(e) {\n function i(t, n) {\n var r = this;\n return (r = e.call(this, t, n, /* forceOwnership= */ !1) || this).Qo = t, r.cacheSizeBytes = n, \n r.synchronizeTabs = !0, r;\n }\n return t(i, e), i.prototype.initialize = function(t) {\n return n(this, void 0, void 0, (function() {\n var i, o = this;\n return r(this, (function(s) {\n switch (s.label) {\n case 0:\n return [ 4 /*yield*/ , e.prototype.initialize.call(this, t) ];\n\n case 1:\n return s.sent(), i = this.Qo.syncEngine, this.sharedClientState instanceof Io ? (this.sharedClientState.syncEngine = {\n ui: tu.bind(null, i),\n ai: ou.bind(null, i),\n hi: su.bind(null, i),\n fn: iu.bind(null, i),\n ci: Zs.bind(null, i)\n }, [ 4 /*yield*/ , this.sharedClientState.start() ]) : [ 3 /*break*/ , 3 ];\n\n case 2:\n s.sent(), s.label = 3;\n\n case 3:\n // NOTE: This will immediately call the listener, so we make sure to\n // set it after localStore / remoteStore are started.\n return [ 4 /*yield*/ , this.persistence.He((function(t) {\n return n(o, void 0, void 0, (function() {\n return r(this, (function(e) {\n switch (e.label) {\n case 0:\n return [ 4 /*yield*/ , eu(this.Qo.syncEngine, t) ];\n\n case 1:\n return e.sent(), this.gcScheduler && (t && !this.gcScheduler.started ? this.gcScheduler.start(this.localStore) : t || this.gcScheduler.stop()), \n [ 2 /*return*/ ];\n }\n }));\n }));\n })) ];\n\n case 4:\n // NOTE: This will immediately call the listener, so we make sure to\n // set it after localStore / remoteStore are started.\n return s.sent(), [ 2 /*return*/ ];\n }\n }));\n }));\n }, i.prototype.Bo = function(t) {\n var e = Ao();\n if (!Io.yt(e)) throw new D(N.UNIMPLEMENTED, \"IndexedDB persistence is only available on platforms that support LocalStorage.\");\n var n = Oi(t.databaseInfo.databaseId, t.databaseInfo.persistenceKey);\n return new Io(e, t.asyncQueue, n, t.clientId, t.initialUser);\n }, i;\n}(fu), du = /** @class */ function() {\n function t() {}\n return t.prototype.initialize = function(t, e) {\n return n(this, void 0, void 0, (function() {\n var n = this;\n return r(this, (function(r) {\n switch (r.label) {\n case 0:\n return this.localStore ? [ 3 /*break*/ , 2 ] : (this.localStore = t.localStore, \n this.sharedClientState = t.sharedClientState, this.datastore = this.createDatastore(e), \n this.remoteStore = this.createRemoteStore(e), this.eventManager = this.createEventManager(e), \n this.syncEngine = this.createSyncEngine(e, \n /* startAsPrimary=*/ !t.synchronizeTabs), this.sharedClientState.onlineStateHandler = function(t) {\n return Ms(n.syncEngine, t, 1 /* SharedClientState */);\n }, this.remoteStore.remoteSyncer.handleCredentialChange = $s.bind(null, this.syncEngine), \n [ 4 /*yield*/ , ss(this.remoteStore, this.syncEngine.isPrimaryClient) ]);\n\n case 1:\n r.sent(), r.label = 2;\n\n case 2:\n return [ 2 /*return*/ ];\n }\n }));\n }));\n }, t.prototype.createEventManager = function(t) {\n return new ys;\n }, t.prototype.createDatastore = function(t) {\n var e, n = Co(t.databaseInfo.databaseId), r = (e = t.databaseInfo, new Do(e));\n /** Return the Platform-specific connectivity monitor. */ return function(t, e, n) {\n return new Po(t, e, n);\n }(t.credentials, r, n);\n }, t.prototype.createRemoteStore = function(t) {\n var e, n, r, i, o, s = this;\n return e = this.localStore, n = this.datastore, r = t.asyncQueue, i = function(t) {\n return Ms(s.syncEngine, t, 0 /* RemoteStore */);\n }, o = Eo.yt() ? new Eo : new _o, new Mo(e, n, r, i, o);\n }, t.prototype.createSyncEngine = function(t, e) {\n return function(t, e, n, \n // PORTING NOTE: Manages state synchronization in multi-tab environments.\n r, i, o, s) {\n var u = new xs(t, e, n, r, i, o);\n return s && (u.$o = !0), u;\n }(this.localStore, this.remoteStore, this.eventManager, this.sharedClientState, t.initialUser, t.maxConcurrentLimboResolutions, e);\n }, t.prototype.terminate = function() {\n return function(t) {\n return n(this, void 0, void 0, (function() {\n var e;\n return r(this, (function(n) {\n switch (n.label) {\n case 0:\n return e = F(t), C(\"RemoteStore\", \"RemoteStore shutting down.\"), e.Or.add(5 /* Shutdown */), \n [ 4 /*yield*/ , qo(e) ];\n\n case 1:\n return n.sent(), e.Lr.shutdown(), \n // Set the OnlineState to Unknown (rather than Offline) to avoid potentially\n // triggering spurious listener events with cached data, etc.\n e.Br.set(\"Unknown\" /* Unknown */), [ 2 /*return*/ ];\n }\n }));\n }));\n }(this.remoteStore);\n }, t;\n}();\n\n/**\n * Provides all components needed for Firestore with IndexedDB persistence.\n */\n/**\n * @license\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * How many bytes to read each time when `ReadableStreamReader.read()` is\n * called. Only applicable for byte streams that we control (e.g. those backed\n * by an UInt8Array).\n */\n/**\n * Builds a `ByteStreamReader` from a UInt8Array.\n * @param source - The data source to use.\n * @param bytesPerRead - How many bytes each `read()` from the returned reader\n * will read.\n */\nfunction pu(t, e) {\n void 0 === e && (e = 10240);\n var i = 0;\n return {\n read: function() {\n return n(this, void 0, void 0, (function() {\n var n;\n return r(this, (function(r) {\n return i < t.byteLength ? (n = {\n value: t.slice(i, i + e),\n done: !1\n }, [ 2 /*return*/ , (i += e, n) ]) : [ 2 /*return*/ , {\n done: !0\n } ];\n }));\n }));\n },\n cancel: function() {\n return n(this, void 0, void 0, (function() {\n return r(this, (function(t) {\n return [ 2 /*return*/ ];\n }));\n }));\n },\n releaseLock: function() {},\n closed: Promise.reject(\"unimplemented\")\n };\n}\n\n/**\n * @license\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * On web, a `ReadableStream` is wrapped around by a `ByteStreamReader`.\n */\n/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/*\n * A wrapper implementation of Observer that will dispatch events\n * asynchronously. To allow immediate silencing, a mute call is added which\n * causes events scheduled to no longer be raised.\n */ var yu = /** @class */ function() {\n function t(t) {\n this.observer = t, \n /**\n * When set to true, will not raise future events. Necessary to deal with\n * async detachment of listener.\n */\n this.muted = !1;\n }\n return t.prototype.next = function(t) {\n this.observer.next && this.jo(this.observer.next, t);\n }, t.prototype.error = function(t) {\n this.observer.error ? this.jo(this.observer.error, t) : console.error(\"Uncaught Error in snapshot listener:\", t);\n }, t.prototype.Wo = function() {\n this.muted = !0;\n }, t.prototype.jo = function(t, e) {\n var n = this;\n this.muted || setTimeout((function() {\n n.muted || t(e);\n }), 0);\n }, t;\n}(), vu = /** @class */ function() {\n function t(\n /** The reader to read from underlying binary bundle data source. */\n t, e) {\n var n = this;\n this.Go = t, this.R = e, \n /** Cached bundle metadata. */\n this.metadata = new br, \n /**\n * Internal buffer to hold bundle content, accumulating incomplete element\n * content.\n */\n this.buffer = new Uint8Array, this.zo = new TextDecoder(\"utf-8\"), \n // Read the metadata (which is the first element).\n this.Ho().then((function(t) {\n t && t.io() ? n.metadata.resolve(t.payload.metadata) : n.metadata.reject(new Error(\"The first element of the bundle is not a metadata, it is\\n \" + JSON.stringify(null == t ? void 0 : t.payload)));\n }), (function(t) {\n return n.metadata.reject(t);\n }));\n }\n return t.prototype.close = function() {\n return this.Go.cancel();\n }, t.prototype.getMetadata = function() {\n return n(this, void 0, void 0, (function() {\n return r(this, (function(t) {\n return [ 2 /*return*/ , this.metadata.promise ];\n }));\n }));\n }, t.prototype.Lo = function() {\n return n(this, void 0, void 0, (function() {\n return r(this, (function(t) {\n switch (t.label) {\n case 0:\n return [ 4 /*yield*/ , this.getMetadata() ];\n\n case 1:\n // Makes sure metadata is read before proceeding.\n return [ 2 /*return*/ , (t.sent(), this.Ho()) ];\n }\n }));\n }));\n }, \n /**\n * Reads from the head of internal buffer, and pulling more data from\n * underlying stream if a complete element cannot be found, until an\n * element(including the prefixed length and the JSON string) is found.\n *\n * Once a complete element is read, it is dropped from internal buffer.\n *\n * Returns either the bundled element, or null if we have reached the end of\n * the stream.\n */\n t.prototype.Ho = function() {\n return n(this, void 0, void 0, (function() {\n var t, e, n, i;\n return r(this, (function(r) {\n switch (r.label) {\n case 0:\n return [ 4 /*yield*/ , this.Jo() ];\n\n case 1:\n return null === (t = r.sent()) ? [ 2 /*return*/ , null ] : (e = this.zo.decode(t), \n n = Number(e), isNaN(n) && this.Yo(\"length string (\" + e + \") is not valid number\"), \n [ 4 /*yield*/ , this.Xo(n) ]);\n\n case 2:\n return i = r.sent(), [ 2 /*return*/ , new Ts(JSON.parse(i), t.length + n) ];\n }\n }));\n }));\n }, \n /** First index of '{' from the underlying buffer. */ t.prototype.Zo = function() {\n return this.buffer.findIndex((function(t) {\n return t === \"{\".charCodeAt(0);\n }));\n }, \n /**\n * Reads from the beginning of the internal buffer, until the first '{', and\n * return the content.\n *\n * If reached end of the stream, returns a null.\n */\n t.prototype.Jo = function() {\n return n(this, void 0, void 0, (function() {\n var t, e;\n return r(this, (function(n) {\n switch (n.label) {\n case 0:\n return this.Zo() < 0 ? [ 4 /*yield*/ , this.tc() ] : [ 3 /*break*/ , 3 ];\n\n case 1:\n if (n.sent()) return [ 3 /*break*/ , 3 ];\n n.label = 2;\n\n case 2:\n return [ 3 /*break*/ , 0 ];\n\n case 3:\n // Broke out of the loop because underlying stream is closed, and there\n // happens to be no more data to process.\n return 0 === this.buffer.length ? [ 2 /*return*/ , null ] : (\n // Broke out of the loop because underlying stream is closed, but still\n // cannot find an open bracket.\n (t = this.Zo()) < 0 && this.Yo(\"Reached the end of bundle when a length string is expected.\"), \n e = this.buffer.slice(0, t), [ 2 /*return*/ , (this.buffer = this.buffer.slice(t), \n e) ]);\n }\n }));\n }));\n }, \n /**\n * Reads from a specified position from the internal buffer, for a specified\n * number of bytes, pulling more data from the underlying stream if needed.\n *\n * Returns a string decoded from the read bytes.\n */\n t.prototype.Xo = function(t) {\n return n(this, void 0, void 0, (function() {\n var e;\n return r(this, (function(n) {\n switch (n.label) {\n case 0:\n return this.buffer.length < t ? [ 4 /*yield*/ , this.tc() ] : [ 3 /*break*/ , 3 ];\n\n case 1:\n n.sent() && this.Yo(\"Reached the end of bundle when more is expected.\"), n.label = 2;\n\n case 2:\n return [ 3 /*break*/ , 0 ];\n\n case 3:\n // Update the internal buffer to drop the read json string.\n return e = this.zo.decode(this.buffer.slice(0, t)), [ 2 /*return*/ , (this.buffer = this.buffer.slice(t), \n e) ];\n }\n }));\n }));\n }, t.prototype.Yo = function(t) {\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n throw this.Go.cancel(), new Error(\"Invalid bundle format: \" + t);\n }, \n /**\n * Pulls more data from underlying stream to internal buffer.\n * Returns a boolean indicating whether the stream is finished.\n */\n t.prototype.tc = function() {\n return n(this, void 0, void 0, (function() {\n var t, e;\n return r(this, (function(n) {\n switch (n.label) {\n case 0:\n return [ 4 /*yield*/ , this.Go.read() ];\n\n case 1:\n return (t = n.sent()).done || ((e = new Uint8Array(this.buffer.length + t.value.length)).set(this.buffer), \n e.set(t.value, this.buffer.length), this.buffer = e), [ 2 /*return*/ , t.done ];\n }\n }));\n }));\n }, t;\n}(), mu = /** @class */ function() {\n function t(t) {\n this.datastore = t, \n // The version of each document that was read during this transaction.\n this.readVersions = new Map, this.mutations = [], this.committed = !1, \n /**\n * A deferred usage error that occurred previously in this transaction that\n * will cause the transaction to fail once it actually commits.\n */\n this.lastWriteError = null, \n /**\n * Set of documents that have been written in the transaction.\n *\n * When there's more than one write to the same key in a transaction, any\n * writes after the first are handled differently.\n */\n this.writtenDocs = new Set;\n }\n return t.prototype.lookup = function(t) {\n return n(this, void 0, void 0, (function() {\n var e, i = this;\n return r(this, (function(o) {\n switch (o.label) {\n case 0:\n if (this.ensureCommitNotCalled(), this.mutations.length > 0) throw new D(N.INVALID_ARGUMENT, \"Firestore transactions require all reads to be executed before all writes.\");\n return [ 4 /*yield*/ , function(t, e) {\n return n(this, void 0, void 0, (function() {\n var n, i, o, s, u, a;\n return r(this, (function(r) {\n switch (r.label) {\n case 0:\n return n = F(t), i = xn(n.R) + \"/documents\", o = {\n documents: e.map((function(t) {\n return Dn(n.R, t);\n }))\n }, [ 4 /*yield*/ , n.$i(\"BatchGetDocuments\", i, o) ];\n\n case 1:\n return s = r.sent(), u = new Map, s.forEach((function(t) {\n var e = function(t, e) {\n return \"found\" in e ? function(t, e) {\n P(!!e.found), e.found.name, e.found.updateTime;\n var n = An(t, e.found.name), r = En(e.found.updateTime), i = new Et({\n mapValue: {\n fields: e.found.fields\n }\n });\n return Nt.newFoundDocument(n, r, i);\n }(t, e) : \"missing\" in e ? function(t, e) {\n P(!!e.missing), P(!!e.readTime);\n var n = An(t, e.missing), r = En(e.readTime);\n return Nt.newNoDocument(n, r);\n }(t, e) : O();\n }(n.R, t);\n u.set(e.key.toString(), e);\n })), a = [], [ 2 /*return*/ , (e.forEach((function(t) {\n var e = u.get(t.toString());\n P(!!e), a.push(e);\n })), a) ];\n }\n }));\n }));\n }(this.datastore, t) ];\n\n case 1:\n return [ 2 /*return*/ , ((e = o.sent()).forEach((function(t) {\n return i.recordVersion(t);\n })), e) ];\n }\n }));\n }));\n }, t.prototype.set = function(t, e) {\n this.write(e.toMutation(t, this.precondition(t))), this.writtenDocs.add(t.toString());\n }, t.prototype.update = function(t, e) {\n try {\n this.write(e.toMutation(t, this.preconditionForUpdate(t)));\n } catch (t) {\n this.lastWriteError = t;\n }\n this.writtenDocs.add(t.toString());\n }, t.prototype.delete = function(t) {\n this.write(new je(t, this.precondition(t))), this.writtenDocs.add(t.toString());\n }, t.prototype.commit = function() {\n return n(this, void 0, void 0, (function() {\n var t, e = this;\n return r(this, (function(i) {\n switch (i.label) {\n case 0:\n if (this.ensureCommitNotCalled(), this.lastWriteError) throw this.lastWriteError;\n return t = this.readVersions, \n // For each mutation, note that the doc was written.\n this.mutations.forEach((function(e) {\n t.delete(e.key.toString());\n })), \n // For each document that was read but not written to, we want to perform\n // a `verify` operation.\n t.forEach((function(t, n) {\n var r = ct.fromPath(n);\n e.mutations.push(new Ke(r, e.precondition(r)));\n })), [ 4 /*yield*/ , function(t, e) {\n return n(this, void 0, void 0, (function() {\n var n, i, o;\n return r(this, (function(r) {\n switch (r.label) {\n case 0:\n return n = F(t), i = xn(n.R) + \"/documents\", o = {\n writes: e.map((function(t) {\n return Pn(n.R, t);\n }))\n }, [ 4 /*yield*/ , n.Ni(\"Commit\", i, o) ];\n\n case 1:\n return r.sent(), [ 2 /*return*/ ];\n }\n }));\n }));\n }(this.datastore, this.mutations) ];\n\n case 1:\n // For each mutation, note that the doc was written.\n return i.sent(), this.committed = !0, [ 2 /*return*/ ];\n }\n }));\n }));\n }, t.prototype.recordVersion = function(t) {\n var e;\n if (t.isFoundDocument()) e = t.version; else {\n if (!t.isNoDocument()) throw O();\n // For deleted docs, we must use baseVersion 0 when we overwrite them.\n e = K.min();\n }\n var n = this.readVersions.get(t.key.toString());\n if (n) {\n if (!e.isEqual(n)) \n // This transaction will fail no matter what.\n throw new D(N.ABORTED, \"Document version changed between two reads.\");\n } else this.readVersions.set(t.key.toString(), e);\n }, \n /**\n * Returns the version of this document when it was read in this transaction,\n * as a precondition, or no precondition if it was not read.\n */\n t.prototype.precondition = function(t) {\n var e = this.readVersions.get(t.toString());\n return !this.writtenDocs.has(t.toString()) && e ? De.updateTime(e) : De.none();\n }, \n /**\n * Returns the precondition for a document if the operation is an update.\n */\n t.prototype.preconditionForUpdate = function(t) {\n var e = this.readVersions.get(t.toString());\n // The first time a document is written, we want to take into account the\n // read time and existence\n if (!this.writtenDocs.has(t.toString()) && e) {\n if (e.isEqual(K.min())) \n // The document doesn't exist, so fail the transaction.\n // This has to be validated locally because you can't send a\n // precondition that a document does not exist without changing the\n // semantics of the backend write to be an insert. This is the reverse\n // of what we want, since we want to assert that the document doesn't\n // exist but then send the update and have it fail. Since we can't\n // express that to the backend, we have to validate locally.\n // Note: this can change once we can send separate verify writes in the\n // transaction.\n throw new D(N.INVALID_ARGUMENT, \"Can't update a document that doesn't exist.\");\n // Document exists, base precondition on document update time.\n return De.updateTime(e);\n }\n // Document was not read, so we just use the preconditions for a blind\n // update.\n return De.exists(!0);\n }, t.prototype.write = function(t) {\n this.ensureCommitNotCalled(), this.mutations.push(t);\n }, t.prototype.ensureCommitNotCalled = function() {}, t;\n}(), gu = /** @class */ function() {\n function t(t, e, n, r) {\n this.asyncQueue = t, this.datastore = e, this.updateFunction = n, this.deferred = r, \n this.ec = 5, this.Zi = new xo(this.asyncQueue, \"transaction_retry\" /* TransactionRetry */)\n /** Runs the transaction and sets the result on deferred. */;\n }\n return t.prototype.run = function() {\n this.ec -= 1, this.nc();\n }, t.prototype.nc = function() {\n var t = this;\n this.Zi.ji((function() {\n return n(t, void 0, void 0, (function() {\n var t, e, n = this;\n return r(this, (function(r) {\n return t = new mu(this.datastore), (e = this.sc(t)) && e.then((function(e) {\n n.asyncQueue.enqueueAndForget((function() {\n return t.commit().then((function() {\n n.deferred.resolve(e);\n })).catch((function(t) {\n n.ic(t);\n }));\n }));\n })).catch((function(t) {\n n.ic(t);\n })), [ 2 /*return*/ ];\n }));\n }));\n }));\n }, t.prototype.sc = function(t) {\n try {\n var e = this.updateFunction(t);\n return !st(e) && e.catch && e.then ? e : (this.deferred.reject(Error(\"Transaction callback must return a Promise\")), \n null);\n } catch (t) {\n // Do not retry errors thrown by user provided updateFunction.\n return this.deferred.reject(t), null;\n }\n }, t.prototype.ic = function(t) {\n var e = this;\n this.ec > 0 && this.rc(t) ? (this.ec -= 1, this.asyncQueue.enqueueAndForget((function() {\n return e.nc(), Promise.resolve();\n }))) : this.deferred.reject(t);\n }, t.prototype.rc = function(t) {\n if (\"FirebaseError\" === t.name) {\n // In transactions, the backend will fail outdated reads with FAILED_PRECONDITION and\n // non-matching document versions with ABORTED. These errors should be retried.\n var e = t.code;\n return \"aborted\" === e || \"failed-precondition\" === e || !Qe(e);\n }\n return !1;\n }, t;\n}(), wu = /** @class */ function() {\n function t(t, \n /**\n * Asynchronous queue responsible for all of our internal processing. When\n * we get incoming work from the user (via public API) or the network\n * (incoming GRPC messages), we should always schedule onto this queue.\n * This ensures all of our work is properly serialized (e.g. we don't\n * start processing a new operation while the previous one is waiting for\n * an async I/O to complete).\n */\n e, i) {\n var o = this;\n this.credentials = t, this.asyncQueue = e, this.databaseInfo = i, this.user = fo.UNAUTHENTICATED, \n this.clientId = V.u(), this.credentialListener = function() {\n return Promise.resolve();\n }, this.credentials.setChangeListener(e, (function(t) {\n return n(o, void 0, void 0, (function() {\n return r(this, (function(e) {\n switch (e.label) {\n case 0:\n return C(\"FirestoreClient\", \"Received user=\", t.uid), [ 4 /*yield*/ , this.credentialListener(t) ];\n\n case 1:\n return e.sent(), this.user = t, [ 2 /*return*/ ];\n }\n }));\n }));\n }));\n }\n return t.prototype.getConfiguration = function() {\n return n(this, void 0, void 0, (function() {\n return r(this, (function(t) {\n return [ 2 /*return*/ , {\n asyncQueue: this.asyncQueue,\n databaseInfo: this.databaseInfo,\n clientId: this.clientId,\n credentials: this.credentials,\n initialUser: this.user,\n maxConcurrentLimboResolutions: 100\n } ];\n }));\n }));\n }, t.prototype.setCredentialChangeListener = function(t) {\n this.credentialListener = t;\n }, \n /**\n * Checks that the client has not been terminated. Ensures that other methods on\n * this class cannot be called after the client is terminated.\n */\n t.prototype.verifyNotTerminated = function() {\n if (this.asyncQueue.isShuttingDown) throw new D(N.FAILED_PRECONDITION, \"The client has already been terminated.\");\n }, t.prototype.terminate = function() {\n var t = this;\n this.asyncQueue.enterRestrictedMode();\n var e = new br;\n return this.asyncQueue.enqueueAndForgetEvenWhileRestricted((function() {\n return n(t, void 0, void 0, (function() {\n var t, n;\n return r(this, (function(r) {\n switch (r.label) {\n case 0:\n return r.trys.push([ 0, 5, , 6 ]), this.onlineComponents ? [ 4 /*yield*/ , this.onlineComponents.terminate() ] : [ 3 /*break*/ , 2 ];\n\n case 1:\n r.sent(), r.label = 2;\n\n case 2:\n return this.offlineComponents ? [ 4 /*yield*/ , this.offlineComponents.terminate() ] : [ 3 /*break*/ , 4 ];\n\n case 3:\n r.sent(), r.label = 4;\n\n case 4:\n // `removeChangeListener` must be called after shutting down the\n // RemoteStore as it will prevent the RemoteStore from retrieving\n // auth tokens.\n return this.credentials.removeChangeListener(), e.resolve(), [ 3 /*break*/ , 6 ];\n\n case 5:\n return t = r.sent(), n = hs(t, \"Failed to shutdown persistence\"), e.reject(n), [ 3 /*break*/ , 6 ];\n\n case 6:\n return [ 2 /*return*/ ];\n }\n }));\n }));\n })), e.promise;\n }, t;\n}();\n\n/**\n * @license\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * A class representing a bundle.\n *\n * Takes a bundle stream or buffer, and presents abstractions to read bundled\n * elements out of the underlying content.\n */ function bu(t, e) {\n return n(this, void 0, void 0, (function() {\n var i, o, s = this;\n return r(this, (function(u) {\n switch (u.label) {\n case 0:\n return t.asyncQueue.verifyOperationInProgress(), C(\"FirestoreClient\", \"Initializing OfflineComponentProvider\"), \n [ 4 /*yield*/ , t.getConfiguration() ];\n\n case 1:\n return i = u.sent(), [ 4 /*yield*/ , e.initialize(i) ];\n\n case 2:\n return u.sent(), o = i.initialUser, t.setCredentialChangeListener((function(t) {\n return n(s, void 0, void 0, (function() {\n return r(this, (function(n) {\n switch (n.label) {\n case 0:\n return o.isEqual(t) ? [ 3 /*break*/ , 2 ] : [ 4 /*yield*/ , Bi(e.localStore, t) ];\n\n case 1:\n n.sent(), o = t, n.label = 2;\n\n case 2:\n return [ 2 /*return*/ ];\n }\n }));\n }));\n })), \n // When a user calls clearPersistence() in one client, all other clients\n // need to be terminated to allow the delete to succeed.\n e.persistence.setDatabaseDeletedListener((function() {\n return t.terminate();\n })), t.offlineComponents = e, [ 2 /*return*/ ];\n }\n }));\n }));\n}\n\nfunction Iu(t, e) {\n return n(this, void 0, void 0, (function() {\n var i, o;\n return r(this, (function(s) {\n switch (s.label) {\n case 0:\n return t.asyncQueue.verifyOperationInProgress(), [ 4 /*yield*/ , Tu(t) ];\n\n case 1:\n return i = s.sent(), C(\"FirestoreClient\", \"Initializing OnlineComponentProvider\"), \n [ 4 /*yield*/ , t.getConfiguration() ];\n\n case 2:\n return o = s.sent(), [ 4 /*yield*/ , e.initialize(i, o) ];\n\n case 3:\n return s.sent(), \n // The CredentialChangeListener of the online component provider takes\n // precedence over the offline component provider.\n t.setCredentialChangeListener((function(t) {\n return function(t, e) {\n return n(this, void 0, void 0, (function() {\n var n, i;\n return r(this, (function(r) {\n switch (r.label) {\n case 0:\n return (n = F(t)).asyncQueue.verifyOperationInProgress(), C(\"RemoteStore\", \"RemoteStore received new credentials\"), \n i = zo(n), \n // Tear down and re-create our network streams. This will ensure we get a\n // fresh auth token for the new user and re-fill the write pipeline with\n // new mutations from the LocalStore (since mutations are per-user).\n n.Or.add(3 /* CredentialChange */), [ 4 /*yield*/ , qo(n) ];\n\n case 1:\n return r.sent(), i && \n // Don't set the network status to Unknown if we are offline.\n n.Br.set(\"Unknown\" /* Unknown */), [ 4 /*yield*/ , n.remoteSyncer.handleCredentialChange(e) ];\n\n case 2:\n return r.sent(), n.Or.delete(3 /* CredentialChange */), [ 4 /*yield*/ , Vo(n) ];\n\n case 3:\n // Tear down and re-create our network streams. This will ensure we get a\n // fresh auth token for the new user and re-fill the write pipeline with\n // new mutations from the LocalStore (since mutations are per-user).\n return r.sent(), [ 2 /*return*/ ];\n }\n }));\n }));\n }(e.remoteStore, t);\n })), t.onlineComponents = e, [ 2 /*return*/ ];\n }\n }));\n }));\n}\n\nfunction Tu(t) {\n return n(this, void 0, void 0, (function() {\n return r(this, (function(e) {\n switch (e.label) {\n case 0:\n return t.offlineComponents ? [ 3 /*break*/ , 2 ] : (C(\"FirestoreClient\", \"Using default OfflineComponentProvider\"), \n [ 4 /*yield*/ , bu(t, new hu) ]);\n\n case 1:\n e.sent(), e.label = 2;\n\n case 2:\n return [ 2 /*return*/ , t.offlineComponents ];\n }\n }));\n }));\n}\n\nfunction _u(t) {\n return n(this, void 0, void 0, (function() {\n return r(this, (function(e) {\n switch (e.label) {\n case 0:\n return t.onlineComponents ? [ 3 /*break*/ , 2 ] : (C(\"FirestoreClient\", \"Using default OnlineComponentProvider\"), \n [ 4 /*yield*/ , Iu(t, new du) ]);\n\n case 1:\n e.sent(), e.label = 2;\n\n case 2:\n return [ 2 /*return*/ , t.onlineComponents ];\n }\n }));\n }));\n}\n\nfunction Eu(t) {\n return Tu(t).then((function(t) {\n return t.persistence;\n }));\n}\n\nfunction Su(t) {\n return Tu(t).then((function(t) {\n return t.localStore;\n }));\n}\n\nfunction Nu(t) {\n return _u(t).then((function(t) {\n return t.remoteStore;\n }));\n}\n\nfunction Du(t) {\n return _u(t).then((function(t) {\n return t.syncEngine;\n }));\n}\n\nfunction Au(t) {\n return n(this, void 0, void 0, (function() {\n var e, n;\n return r(this, (function(r) {\n switch (r.label) {\n case 0:\n return [ 4 /*yield*/ , _u(t) ];\n\n case 1:\n return e = r.sent(), [ 2 /*return*/ , ((n = e.eventManager).onListen = Rs.bind(null, e.syncEngine), \n n.onUnlisten = Os.bind(null, e.syncEngine), n) ];\n }\n }));\n }));\n}\n\n/** Enables the network connection and re-enqueues all pending operations. */ function ku(t, e, i) {\n var o = this;\n void 0 === i && (i = {});\n var s = new br;\n return t.asyncQueue.enqueueAndForget((function() {\n return n(o, void 0, void 0, (function() {\n var n;\n return r(this, (function(r) {\n switch (r.label) {\n case 0:\n return n = function(t, e, n, r, i) {\n var o = new yu({\n next: function(o) {\n // Remove query first before passing event to user to avoid\n // user actions affecting the now stale query.\n e.enqueueAndForget((function() {\n return ms(t, s);\n }));\n var u = o.docs.has(n);\n !u && o.fromCache ? \n // TODO(dimond): If we're online and the document doesn't\n // exist then we resolve with a doc.exists set to false. If\n // we're offline however, we reject the Promise in this\n // case. Two options: 1) Cache the negative response from\n // the server so we can deliver that even when you're\n // offline 2) Actually reject the Promise in the online case\n // if the document doesn't exist.\n i.reject(new D(N.UNAVAILABLE, \"Failed to get document because the client is offline.\")) : u && o.fromCache && r && \"server\" === r.source ? i.reject(new D(N.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.)')) : i.resolve(o);\n },\n error: function(t) {\n return i.reject(t);\n }\n }), s = new Is(Yt(n.path), o, {\n includeMetadataChanges: !0,\n so: !0\n });\n return vs(t, s);\n }, [ 4 /*yield*/ , Au(t) ];\n\n case 1:\n return [ 2 /*return*/ , n.apply(void 0, [ r.sent(), t.asyncQueue, e, i, s ]) ];\n }\n }));\n }));\n })), s.promise;\n}\n\nfunction Cu(t, e, i) {\n var o = this;\n void 0 === i && (i = {});\n var s = new br;\n return t.asyncQueue.enqueueAndForget((function() {\n return n(o, void 0, void 0, (function() {\n var n;\n return r(this, (function(r) {\n switch (r.label) {\n case 0:\n return n = function(t, e, n, r, i) {\n var o = new yu({\n next: function(n) {\n // Remove query first before passing event to user to avoid\n // user actions affecting the now stale query.\n e.enqueueAndForget((function() {\n return ms(t, s);\n })), n.fromCache && \"server\" === r.source ? i.reject(new D(N.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(n);\n },\n error: function(t) {\n return i.reject(t);\n }\n }), s = new Is(n, o, {\n includeMetadataChanges: !0,\n so: !0\n });\n return vs(t, s);\n }, [ 4 /*yield*/ , Au(t) ];\n\n case 1:\n return [ 2 /*return*/ , n.apply(void 0, [ r.sent(), t.asyncQueue, e, i, s ]) ];\n }\n }));\n }));\n })), s.promise;\n}\n\nvar xu = \n/**\n * Constructs a DatabaseInfo using the provided host, databaseId and\n * persistenceKey.\n *\n * @param databaseId - The database to use.\n * @param appId - The Firebase App Id.\n * @param persistenceKey - A unique identifier for this Firestore's local\n * storage (used in conjunction with the databaseId).\n * @param host - The Firestore backend host to connect to.\n * @param ssl - Whether to use SSL when connecting.\n * @param forceLongPolling - Whether to use the forceLongPolling option\n * when using WebChannel as the network transport.\n * @param autoDetectLongPolling - Whether to use the detectBufferingProxy\n * option when using WebChannel as the network transport.\n * @param useFetchStreams Whether to use the Fetch API instead of\n * XMLHTTPRequest\n */\nfunction(t, e, n, r, i, o, s, u) {\n this.databaseId = t, this.appId = e, this.persistenceKey = n, this.host = r, this.ssl = i, \n this.forceLongPolling = o, this.autoDetectLongPolling = s, this.useFetchStreams = u;\n}, Ru = /** @class */ function() {\n function t(t, e) {\n this.projectId = t, this.database = e || \"(default)\";\n }\n return Object.defineProperty(t.prototype, \"isDefaultDatabase\", {\n get: function() {\n return \"(default)\" === this.database;\n },\n enumerable: !1,\n configurable: !0\n }), t.prototype.isEqual = function(e) {\n return e instanceof t && e.projectId === this.projectId && e.database === this.database;\n }, t;\n}(), Lu = new Map, Ou = function(t, e) {\n this.user = e, this.type = \"OAuth\", this.authHeaders = {}, \n // Set the headers using Object Literal notation to avoid minification\n this.authHeaders.Authorization = \"Bearer \" + t;\n}, Pu = /** @class */ function() {\n function t() {\n /**\n * Stores the listener registered with setChangeListener()\n * This isn't actually necessary since the UID never changes, but we use this\n * to verify the listen contract is adhered to in tests.\n */\n this.changeListener = null;\n }\n return t.prototype.getToken = function() {\n return Promise.resolve(null);\n }, t.prototype.invalidateToken = function() {}, t.prototype.setChangeListener = function(t, e) {\n this.changeListener = e, \n // Fire with initial user.\n t.enqueueRetryable((function() {\n return e(fo.UNAUTHENTICATED);\n }));\n }, t.prototype.removeChangeListener = function() {\n this.changeListener = null;\n }, t;\n}(), Fu = /** @class */ function() {\n function t(t) {\n this.token = t, \n /**\n * Stores the listener registered with setChangeListener()\n * This isn't actually necessary since the UID never changes, but we use this\n * to verify the listen contract is adhered to in tests.\n */\n this.changeListener = null;\n }\n return t.prototype.getToken = function() {\n return Promise.resolve(this.token);\n }, t.prototype.invalidateToken = function() {}, t.prototype.setChangeListener = function(t, e) {\n var n = this;\n this.changeListener = e, \n // Fire with initial user.\n t.enqueueRetryable((function() {\n return e(n.token.user);\n }));\n }, t.prototype.removeChangeListener = function() {\n this.changeListener = null;\n }, t;\n}(), Mu = /** @class */ function() {\n function t(t) {\n var e = this;\n /** Tracks the current User. */ this.currentUser = fo.UNAUTHENTICATED, \n /** Promise that allows blocking on the initialization of Firebase Auth. */\n this.oc = new br, \n /**\n * Counter used to detect if the token changed while a getToken request was\n * outstanding.\n */\n this.cc = 0, this.forceRefresh = !1, this.auth = null, this.asyncQueue = null, this.uc = function() {\n e.cc++, e.currentUser = e.ac(), e.oc.resolve(), e.changeListener && e.asyncQueue.enqueueRetryable((function() {\n return e.changeListener(e.currentUser);\n }));\n };\n var n = function(t) {\n C(\"FirebaseCredentialsProvider\", \"Auth detected\"), e.auth = t, e.auth.addAuthTokenListener(e.uc);\n };\n t.onInit((function(t) {\n return n(t);\n })), \n // Our users can initialize Auth right after Firestore, so we give it\n // a chance to register itself with the component framework before we\n // determine whether to start up in unauthenticated mode.\n setTimeout((function() {\n if (!e.auth) {\n var r = t.getImmediate({\n optional: !0\n });\n r ? n(r) : (\n // If auth is still not available, proceed with `null` user\n C(\"FirebaseCredentialsProvider\", \"Auth not yet detected\"), e.oc.resolve());\n }\n }), 0);\n }\n return t.prototype.getToken = function() {\n var t = this, e = this.cc, n = this.forceRefresh;\n // Take note of the current value of the tokenCounter so that this method\n // can fail (with an ABORTED error) if there is a token change while the\n // request is outstanding.\n return this.forceRefresh = !1, this.auth ? this.auth.getToken(n).then((function(n) {\n // Cancel the request since the token changed while the request was\n // outstanding so the response is potentially for a previous user (which\n // user, we can't be sure).\n return t.cc !== e ? (C(\"FirebaseCredentialsProvider\", \"getToken aborted due to token change.\"), \n t.getToken()) : n ? (P(\"string\" == typeof n.accessToken), new Ou(n.accessToken, t.currentUser)) : null;\n })) : Promise.resolve(null);\n }, t.prototype.invalidateToken = function() {\n this.forceRefresh = !0;\n }, t.prototype.setChangeListener = function(t, e) {\n var i = this;\n this.asyncQueue = t, \n // Blocks the AsyncQueue until the next user is available.\n this.asyncQueue.enqueueRetryable((function() {\n return n(i, void 0, void 0, (function() {\n return r(this, (function(t) {\n switch (t.label) {\n case 0:\n return [ 4 /*yield*/ , this.oc.promise ];\n\n case 1:\n return t.sent(), [ 4 /*yield*/ , e(this.currentUser) ];\n\n case 2:\n return t.sent(), this.changeListener = e, [ 2 /*return*/ ];\n }\n }));\n }));\n }));\n }, t.prototype.removeChangeListener = function() {\n this.auth && this.auth.removeAuthTokenListener(this.uc), this.changeListener = function() {\n return Promise.resolve();\n };\n }, \n // Auth.getUid() can return null even with a user logged in. It is because\n // getUid() is synchronous, but the auth code populating Uid is asynchronous.\n // This method should only be called in the AuthTokenListener callback\n // to guarantee to get the actual user.\n t.prototype.ac = function() {\n var t = this.auth && this.auth.getUid();\n return P(null === t || \"string\" == typeof t), new fo(t);\n }, t;\n}(), Vu = /** @class */ function() {\n function t(t, e, n) {\n this.hc = t, this.lc = e, this.fc = n, this.type = \"FirstParty\", this.user = fo.FIRST_PARTY;\n }\n return Object.defineProperty(t.prototype, \"authHeaders\", {\n get: function() {\n var t = {\n \"X-Goog-AuthUser\": this.lc\n }, e = this.hc.auth.getAuthHeaderValueForFirstParty([]);\n // Use array notation to prevent minification\n return e && (t.Authorization = e), this.fc && (t[\"X-Goog-Iam-Authorization-Token\"] = this.fc), \n t;\n },\n enumerable: !1,\n configurable: !0\n }), t;\n}(), qu = /** @class */ function() {\n function t(t, e, n) {\n this.hc = t, this.lc = e, this.fc = n;\n }\n return t.prototype.getToken = function() {\n return Promise.resolve(new Vu(this.hc, this.lc, this.fc));\n }, t.prototype.setChangeListener = function(t, e) {\n // Fire with initial uid.\n t.enqueueRetryable((function() {\n return e(fo.FIRST_PARTY);\n }));\n }, t.prototype.removeChangeListener = function() {}, t.prototype.invalidateToken = function() {}, \n t;\n}();\n\n/** The default database name for a project. */\n/** Represents the database ID a Firestore client is associated with. */\n/**\n * Builds a CredentialsProvider depending on the type of\n * the credentials passed in.\n */\n/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nfunction Uu(t, e, n) {\n if (!n) throw new D(N.INVALID_ARGUMENT, \"Function \" + t + \"() cannot be called with an empty \" + e + \".\");\n}\n\nfunction Bu(t, e) {\n if (void 0 === e) return {\n merge: !1\n };\n if (void 0 !== e.mergeFields && void 0 !== e.merge) throw new D(N.INVALID_ARGUMENT, \"Invalid options passed to function \" + t + '(): You cannot specify both \"merge\" and \"mergeFields\".');\n return e;\n}\n\n/**\n * Validates that two boolean options are not set at the same time.\n */ function ju(t, e, n, r) {\n if (!0 === e && !0 === r) throw new D(N.INVALID_ARGUMENT, t + \" and \" + n + \" cannot be used together.\");\n}\n\n/**\n * Validates that `path` refers to a document (indicated by the fact it contains\n * an even numbers of segments).\n */ function Ku(t) {\n if (!ct.isDocumentKey(t)) throw new D(N.INVALID_ARGUMENT, \"Invalid document reference. Document references must have an even number of segments, but \" + t + \" has \" + t.length + \".\");\n}\n\n/**\n * Validates that `path` refers to a collection (indicated by the fact it\n * contains an odd numbers of segments).\n */ function Gu(t) {\n if (ct.isDocumentKey(t)) throw new D(N.INVALID_ARGUMENT, \"Invalid collection reference. Collection references must have an odd number of segments, but \" + t + \" has \" + t.length + \".\");\n}\n\n/**\n * Returns true if it's a non-null object without a custom prototype\n * (i.e. excludes Array, Date, etc.).\n */\n/** Returns a string describing the type / value of the provided input. */ function Qu(t) {\n if (void 0 === t) return \"undefined\";\n if (null === t) return \"null\";\n if (\"string\" == typeof t) return t.length > 20 && (t = t.substring(0, 20) + \"...\"), \n JSON.stringify(t);\n if (\"number\" == typeof t || \"boolean\" == typeof t) return \"\" + t;\n if (\"object\" == typeof t) {\n if (t instanceof Array) return \"an array\";\n var e = \n /** Hacky method to try to get the constructor name for an object. */\n function(t) {\n if (t.constructor) {\n var e = /function\\s+([^\\s(]+)\\s*\\(/.exec(t.constructor.toString());\n if (e && e.length > 1) return e[1];\n }\n return null;\n }(t);\n return e ? \"a custom \" + e + \" object\" : \"an object\";\n }\n return \"function\" == typeof t ? \"a function\" : O();\n}\n\nfunction zu(t, \n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ne) {\n if (\"_delegate\" in t && (\n // Unwrap Compat types\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n t = t._delegate), !(t instanceof e)) {\n if (e.name === t.constructor.name) throw new D(N.INVALID_ARGUMENT, \"Type does not match the expected instance. Did you pass a reference from a different Firestore SDK?\");\n var n = Qu(t);\n throw new D(N.INVALID_ARGUMENT, \"Expected type '\" + e.name + \"', but it was: \" + n);\n }\n return t;\n}\n\nfunction Wu(t, e) {\n if (e <= 0) throw new D(N.INVALID_ARGUMENT, \"Function \" + t + \"() requires a positive number, but it was: \" + e + \".\");\n}\n\n/**\n * @license\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n// settings() defaults:\n/**\n * A concrete type describing all the values that can be applied via a\n * user-supplied `FirestoreSettings` object. This is a separate type so that\n * defaults can be supplied and the value can be checked for equality.\n */ var Hu = /** @class */ function() {\n function t(t) {\n var e;\n if (void 0 === t.host) {\n if (void 0 !== t.ssl) throw new D(N.INVALID_ARGUMENT, \"Can't provide ssl option if host option is not set\");\n this.host = \"firestore.googleapis.com\", this.ssl = !0;\n } else this.host = t.host, this.ssl = null === (e = t.ssl) || void 0 === e || e;\n if (this.credentials = t.credentials, this.ignoreUndefinedProperties = !!t.ignoreUndefinedProperties, \n void 0 === t.cacheSizeBytes) this.cacheSizeBytes = 41943040; else {\n if (-1 !== t.cacheSizeBytes && t.cacheSizeBytes < 1048576) throw new D(N.INVALID_ARGUMENT, \"cacheSizeBytes must be at least 1048576\");\n this.cacheSizeBytes = t.cacheSizeBytes;\n }\n this.experimentalForceLongPolling = !!t.experimentalForceLongPolling, this.experimentalAutoDetectLongPolling = !!t.experimentalAutoDetectLongPolling, \n this.useFetchStreams = !!t.useFetchStreams, ju(\"experimentalForceLongPolling\", t.experimentalForceLongPolling, \"experimentalAutoDetectLongPolling\", t.experimentalAutoDetectLongPolling);\n }\n return t.prototype.isEqual = function(t) {\n return this.host === t.host && this.ssl === t.ssl && this.credentials === t.credentials && this.cacheSizeBytes === t.cacheSizeBytes && this.experimentalForceLongPolling === t.experimentalForceLongPolling && this.experimentalAutoDetectLongPolling === t.experimentalAutoDetectLongPolling && this.ignoreUndefinedProperties === t.ignoreUndefinedProperties && this.useFetchStreams === t.useFetchStreams;\n }, t;\n}(), Yu = /** @class */ function() {\n /** @hideconstructor */\n function t(t, e) {\n /**\n * Whether it's a Firestore or Firestore Lite instance.\n */\n this.type = \"firestore-lite\", this._persistenceKey = \"(lite)\", this._settings = new Hu({}), \n this._settingsFrozen = !1, t instanceof Ru ? (this._databaseId = t, this._credentials = new Pu) : (this._app = t, \n this._databaseId = function(t) {\n if (!Object.prototype.hasOwnProperty.apply(t.options, [ \"projectId\" ])) throw new D(N.INVALID_ARGUMENT, '\"projectId\" not provided in firebase.initializeApp.');\n return new Ru(t.options.projectId);\n }(t), this._credentials = new Mu(e));\n }\n return Object.defineProperty(t.prototype, \"app\", {\n /**\n * The {@link @firebase/app#FirebaseApp} associated with this `Firestore` service\n * instance.\n */\n get: function() {\n if (!this._app) throw new D(N.FAILED_PRECONDITION, \"Firestore was not initialized using the Firebase SDK. 'app' is not available\");\n return this._app;\n },\n enumerable: !1,\n configurable: !0\n }), Object.defineProperty(t.prototype, \"_initialized\", {\n get: function() {\n return this._settingsFrozen;\n },\n enumerable: !1,\n configurable: !0\n }), Object.defineProperty(t.prototype, \"_terminated\", {\n get: function() {\n return void 0 !== this._terminateTask;\n },\n enumerable: !1,\n configurable: !0\n }), t.prototype._setSettings = function(t) {\n if (this._settingsFrozen) throw new D(N.FAILED_PRECONDITION, \"Firestore has already been started and its settings can no longer be changed. You can only modify settings before calling any other methods on a Firestore object.\");\n this._settings = new Hu(t), void 0 !== t.credentials && (this._credentials = function(t) {\n if (!t) return new Pu;\n switch (t.type) {\n case \"gapi\":\n var e = t.client;\n // Make sure this really is a Gapi client.\n return P(!(\"object\" != typeof e || null === e || !e.auth || !e.auth.getAuthHeaderValueForFirstParty)), \n new qu(e, t.sessionIndex || \"0\", t.iamToken || null);\n\n case \"provider\":\n return t.client;\n\n default:\n throw new D(N.INVALID_ARGUMENT, \"makeCredentialsProvider failed due to invalid credential type\");\n }\n }(t.credentials));\n }, t.prototype._getSettings = function() {\n return this._settings;\n }, t.prototype._freezeSettings = function() {\n return this._settingsFrozen = !0, this._settings;\n }, t.prototype._delete = function() {\n return this._terminateTask || (this._terminateTask = this._terminate()), this._terminateTask;\n }, \n /** Returns a JSON-serializable representation of this `Firestore` instance. */ t.prototype.toJSON = function() {\n return {\n app: this._app,\n databaseId: this._databaseId,\n settings: this._settings\n };\n }, \n /**\n * Terminates all components used by this client. Subclasses can override\n * this method to clean up their own dependencies, but must also call this\n * method.\n *\n * Only ever called once.\n */\n t.prototype._terminate = function() {\n /**\n * Removes all components associated with the provided instance. Must be called\n * when the `Firestore` instance is terminated.\n */\n return t = this, (e = Lu.get(t)) && (C(\"ComponentProvider\", \"Removing Datastore\"), \n Lu.delete(t), e.terminate()), Promise.resolve();\n var t, e;\n }, t;\n}(), $u = /** @class */ function() {\n /** @hideconstructor */\n function t(t, \n /**\n * If provided, the `FirestoreDataConverter` associated with this instance.\n */\n e, n) {\n this.converter = e, this._key = n, \n /** The type of this Firestore reference. */\n this.type = \"document\", this.firestore = t;\n }\n return Object.defineProperty(t.prototype, \"_path\", {\n get: function() {\n return this._key.path;\n },\n enumerable: !1,\n configurable: !0\n }), Object.defineProperty(t.prototype, \"id\", {\n /**\n * The document's identifier within its collection.\n */\n get: function() {\n return this._key.path.lastSegment();\n },\n enumerable: !1,\n configurable: !0\n }), Object.defineProperty(t.prototype, \"path\", {\n /**\n * A string representing the path of the referenced document (relative\n * to the root of the database).\n */\n get: function() {\n return this._key.path.canonicalString();\n },\n enumerable: !1,\n configurable: !0\n }), Object.defineProperty(t.prototype, \"parent\", {\n /**\n * The collection this `DocumentReference` belongs to.\n */\n get: function() {\n return new Ju(this.firestore, this.converter, this._key.path.popLast());\n },\n enumerable: !1,\n configurable: !0\n }), t.prototype.withConverter = function(e) {\n return new t(this.firestore, e, this._key);\n }, t;\n}(), Xu = /** @class */ function() {\n // This is the lite version of the Query class in the main SDK.\n /** @hideconstructor protected */\n function t(t, \n /**\n * If provided, the `FirestoreDataConverter` associated with this instance.\n */\n e, n) {\n this.converter = e, this._query = n, \n /** The type of this Firestore reference. */\n this.type = \"query\", this.firestore = t;\n }\n return t.prototype.withConverter = function(e) {\n return new t(this.firestore, e, this._query);\n }, t;\n}(), Ju = /** @class */ function(e) {\n /** @hideconstructor */\n function n(t, n, r) {\n var i = this;\n return (i = e.call(this, t, n, Yt(r)) || this)._path = r, \n /** The type of this Firestore reference. */\n i.type = \"collection\", i;\n }\n return t(n, e), Object.defineProperty(n.prototype, \"id\", {\n /** The collection's identifier. */ get: function() {\n return this._query.path.lastSegment();\n },\n enumerable: !1,\n configurable: !0\n }), Object.defineProperty(n.prototype, \"path\", {\n /**\n * A string representing the path of the referenced collection (relative\n * to the root of the database).\n */\n get: function() {\n return this._query.path.canonicalString();\n },\n enumerable: !1,\n configurable: !0\n }), Object.defineProperty(n.prototype, \"parent\", {\n /**\n * A reference to the containing `DocumentReference` if this is a\n * subcollection. If this isn't a subcollection, the reference is null.\n */\n get: function() {\n var t = this._path.popLast();\n return t.isEmpty() ? null : new $u(this.firestore, \n /* converter= */ null, new ct(t));\n },\n enumerable: !1,\n configurable: !0\n }), n.prototype.withConverter = function(t) {\n return new n(this.firestore, t, this._path);\n }, n;\n}(Xu);\n\n/**\n * @license\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * The Cloud Firestore service interface.\n *\n * Do not call this constructor directly. Instead, use {@link getFirestore}.\n */ function Zu(t, n) {\n for (var r, i = [], o = 2; o < arguments.length; o++) i[o - 2] = arguments[o];\n if (t = l(t), Uu(\"collection\", \"path\", n), t instanceof Yu) return Gu(r = H.fromString.apply(H, e([ n ], i))), \n new Ju(t, /* converter= */ null, r);\n if (!(t instanceof $u || t instanceof Ju)) throw new D(N.INVALID_ARGUMENT, \"Expected first argument to collection() to be a CollectionReference, a DocumentReference or FirebaseFirestore\");\n return Gu(r = H.fromString.apply(H, e([ t.path ], i)).child(H.fromString(n))), new Ju(t.firestore, \n /* converter= */ null, r);\n}\n\n// TODO(firestorelite): Consider using ErrorFactory -\n// https://github.com/firebase/firebase-js-sdk/blob/0131e1f/packages/util/src/errors.ts#L106\n/**\n * Creates and returns a new `Query` instance that includes all documents in the\n * database that are contained in a collection or subcollection with the\n * given `collectionId`.\n *\n * @param firestore - A reference to the root `Firestore` instance.\n * @param collectionId - Identifies the collections to query over. Every\n * collection or subcollection with this ID as the last segment of its path\n * will be included. Cannot contain a slash.\n * @returns The created `Query`.\n */ function ta(t, n) {\n for (var r, i = [], o = 2; o < arguments.length; o++) i[o - 2] = arguments[o];\n if (t = l(t), \n // We allow omission of 'pathString' but explicitly prohibit passing in both\n // 'undefined' and 'null'.\n 1 === arguments.length && (n = V.u()), Uu(\"doc\", \"path\", n), t instanceof Yu) return Ku(r = H.fromString.apply(H, e([ n ], i))), \n new $u(t, \n /* converter= */ null, new ct(r));\n if (!(t instanceof $u || t instanceof Ju)) throw new D(N.INVALID_ARGUMENT, \"Expected first argument to collection() to be a CollectionReference, a DocumentReference or FirebaseFirestore\");\n return Ku(r = t._path.child(H.fromString.apply(H, e([ n ], i)))), new $u(t.firestore, t instanceof Ju ? t.converter : null, new ct(r));\n}\n\n/**\n * Returns true if the provided references are equal.\n *\n * @param left - A reference to compare.\n * @param right - A reference to compare.\n * @returns true if the references point to the same location in the same\n * Firestore database.\n */ function ea(t, e) {\n return t = l(t), e = l(e), (t instanceof $u || t instanceof Ju) && (e instanceof $u || e instanceof Ju) && t.firestore === e.firestore && t.path === e.path && t.converter === e.converter\n /**\n * Returns true if the provided queries point to the same collection and apply\n * the same constraints.\n *\n * @param left - A `Query` to compare.\n * @param right - A `Query` to compare.\n * @returns true if the references point to the same location in the same\n * Firestore database.\n */;\n}\n\nfunction na(t, e) {\n return t = l(t), e = l(e), t instanceof Xu && e instanceof Xu && t.firestore === e.firestore && ie(t._query, e._query) && t.converter === e.converter\n /**\n * @license\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */;\n}\n\nvar ra = /** @class */ function() {\n function t() {\n var t = this;\n // The last promise in the queue.\n this.dc = Promise.resolve(), \n // A list of retryable operations. Retryable operations are run in order and\n // retried with backoff.\n this.wc = [], \n // Is this AsyncQueue being shut down? Once it is set to true, it will not\n // be changed again.\n this._c = !1, \n // Operations scheduled to be queued in the future. Operations are\n // automatically removed after they are run or canceled.\n this.mc = [], \n // visible for testing\n this.yc = null, \n // Flag set while there's an outstanding AsyncQueue operation, used for\n // assertion sanity-checks.\n this.gc = !1, \n // Enabled during shutdown on Safari to prevent future access to IndexedDB.\n this.Ec = !1, \n // List of TimerIds to fast-forward delays for.\n this.Tc = [], \n // Backoff timer used to schedule retries for retryable operations\n this.Zi = new xo(this, \"async_queue_retry\" /* AsyncQueueRetry */), \n // Visibility handler that triggers an immediate retry of all retryable\n // operations. Meant to speed up recovery when we regain file system access\n // after page comes into foreground.\n this.Ic = function() {\n var e = ko();\n e && C(\"AsyncQueue\", \"Visibility state changed to \" + e.visibilityState), t.Zi.Gi();\n };\n var e = ko();\n e && \"function\" == typeof e.addEventListener && e.addEventListener(\"visibilitychange\", this.Ic);\n }\n return Object.defineProperty(t.prototype, \"isShuttingDown\", {\n get: function() {\n return this._c;\n },\n enumerable: !1,\n configurable: !0\n }), \n /**\n * Adds a new operation to the queue without waiting for it to complete (i.e.\n * we ignore the Promise result).\n */\n t.prototype.enqueueAndForget = function(t) {\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n this.enqueue(t);\n }, t.prototype.enqueueAndForgetEvenWhileRestricted = function(t) {\n this.Ac(), \n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n this.Rc(t);\n }, t.prototype.enterRestrictedMode = function(t) {\n if (!this._c) {\n this._c = !0, this.Ec = t || !1;\n var e = ko();\n e && \"function\" == typeof e.removeEventListener && e.removeEventListener(\"visibilitychange\", this.Ic);\n }\n }, t.prototype.enqueue = function(t) {\n var e = this;\n if (this.Ac(), this._c) \n // Return a Promise which never resolves.\n return new Promise((function() {}));\n // Create a deferred Promise that we can return to the callee. This\n // allows us to return a \"hanging Promise\" only to the callee and still\n // advance the queue even when the operation is not run.\n var n = new br;\n return this.Rc((function() {\n return e._c && e.Ec ? Promise.resolve() : (t().then(n.resolve, n.reject), n.promise);\n })).then((function() {\n return n.promise;\n }));\n }, t.prototype.enqueueRetryable = function(t) {\n var e = this;\n this.enqueueAndForget((function() {\n return e.wc.push(t), e.bc();\n }));\n }, \n /**\n * Runs the next operation from the retryable queue. If the operation fails,\n * reschedules with backoff.\n */\n t.prototype.bc = function() {\n return n(this, void 0, void 0, (function() {\n var t, e = this;\n return r(this, (function(n) {\n switch (n.label) {\n case 0:\n if (0 === this.wc.length) return [ 3 /*break*/ , 5 ];\n n.label = 1;\n\n case 1:\n return n.trys.push([ 1, 3, , 4 ]), [ 4 /*yield*/ , this.wc[0]() ];\n\n case 2:\n return n.sent(), this.wc.shift(), this.Zi.reset(), [ 3 /*break*/ , 4 ];\n\n case 3:\n if (!Nr(t = n.sent())) throw t;\n // Failure will be handled by AsyncQueue\n return C(\"AsyncQueue\", \"Operation failed with retryable error: \" + t), \n [ 3 /*break*/ , 4 ];\n\n case 4:\n this.wc.length > 0 && \n // If there are additional operations, we re-schedule `retryNextOp()`.\n // This is necessary to run retryable operations that failed during\n // their initial attempt since we don't know whether they are already\n // enqueued. If, for example, `op1`, `op2`, `op3` are enqueued and `op1`\n // needs to be re-run, we will run `op1`, `op1`, `op2` using the\n // already enqueued calls to `retryNextOp()`. `op3()` will then run in the\n // call scheduled here.\n // Since `backoffAndRun()` cancels an existing backoff and schedules a\n // new backoff on every call, there is only ever a single additional\n // operation in the queue.\n this.Zi.ji((function() {\n return e.bc();\n })), n.label = 5;\n\n case 5:\n return [ 2 /*return*/ ];\n }\n }));\n }));\n }, t.prototype.Rc = function(t) {\n var e = this, n = this.dc.then((function() {\n return e.gc = !0, t().catch((function(t) {\n // Re-throw the error so that this.tail becomes a rejected Promise and\n // all further attempts to chain (via .then) will just short-circuit\n // and return the rejected Promise.\n throw e.yc = t, e.gc = !1, x(\"INTERNAL UNHANDLED ERROR: \", \n /**\n * Chrome includes Error.message in Error.stack. Other browsers do not.\n * This returns expected output of message + stack when available.\n * @param error - Error or FirestoreError\n */\n function(t) {\n var e = t.message || \"\";\n return t.stack && (e = t.stack.includes(t.message) ? t.stack : t.message + \"\\n\" + t.stack), \n e;\n }(t)), t;\n })).then((function(t) {\n return e.gc = !1, t;\n }));\n }));\n return this.dc = n, n;\n }, t.prototype.enqueueAfterDelay = function(t, e, n) {\n var r = this;\n this.Ac(), \n // Fast-forward delays for timerIds that have been overriden.\n this.Tc.indexOf(t) > -1 && (e = 0);\n var i = cs.createAndSchedule(this, t, e, n, (function(t) {\n return r.vc(t);\n }));\n return this.mc.push(i), i;\n }, t.prototype.Ac = function() {\n this.yc && O();\n }, t.prototype.verifyOperationInProgress = function() {}, \n /**\n * Waits until all currently queued tasks are finished executing. Delayed\n * operations are not run.\n */\n t.prototype.Pc = function() {\n return n(this, void 0, void 0, (function() {\n var t;\n return r(this, (function(e) {\n switch (e.label) {\n case 0:\n return [ 4 /*yield*/ , t = this.dc ];\n\n case 1:\n e.sent(), e.label = 2;\n\n case 2:\n if (t !== this.dc) return [ 3 /*break*/ , 0 ];\n e.label = 3;\n\n case 3:\n return [ 2 /*return*/ ];\n }\n }));\n }));\n }, \n /**\n * For Tests: Determine if a delayed operation with a particular TimerId\n * exists.\n */\n t.prototype.Vc = function(t) {\n for (var e = 0, n = this.mc; e < n.length; e++) {\n if (n[e].timerId === t) return !0;\n }\n return !1;\n }, \n /**\n * For Tests: Runs some or all delayed operations early.\n *\n * @param lastTimerId - Delayed operations up to and including this TimerId\n * will be drained. Pass TimerId.All to run all delayed operations.\n * @returns a Promise that resolves once all operations have been run.\n */\n t.prototype.Sc = function(t) {\n var e = this;\n // Note that draining may generate more delayed ops, so we do that first.\n return this.Pc().then((function() {\n // Run ops in the same order they'd run if they ran naturally.\n e.mc.sort((function(t, e) {\n return t.targetTimeMs - e.targetTimeMs;\n }));\n for (var n = 0, r = e.mc; n < r.length; n++) {\n var i = r[n];\n if (i.skipDelay(), \"all\" /* All */ !== t && i.timerId === t) break;\n }\n return e.Pc();\n }));\n }, \n /**\n * For Tests: Skip all subsequent delays for a timer id.\n */\n t.prototype.Dc = function(t) {\n this.Tc.push(t);\n }, \n /** Called once a DelayedOperation is run or canceled. */ t.prototype.vc = function(t) {\n // NOTE: indexOf / slice are O(n), but delayedOperations is expected to be small.\n var e = this.mc.indexOf(t);\n this.mc.splice(e, 1);\n }, t;\n}();\n\nfunction ia(t) {\n /**\n * Returns true if obj is an object and contains at least one of the specified\n * methods.\n */\n return function(t, e) {\n if (\"object\" != typeof t || null === t) return !1;\n for (var n = t, r = 0, i = [ \"next\", \"error\", \"complete\" ]; r < i.length; r++) {\n var o = i[r];\n if (o in n && \"function\" == typeof n[o]) return !0;\n }\n return !1;\n }(t);\n}\n\nvar oa = /** @class */ function() {\n function t() {\n this._progressObserver = {}, this._taskCompletionResolver = new br, this._lastProgress = {\n taskState: \"Running\",\n totalBytes: 0,\n totalDocuments: 0,\n bytesLoaded: 0,\n documentsLoaded: 0\n }\n /**\n * Registers functions to listen to bundle loading progress events.\n * @param next - Called when there is a progress update from bundle loading. Typically `next` calls occur\n * each time a Firestore document is loaded from the bundle.\n * @param error - Called when an error occurs during bundle loading. The task aborts after reporting the\n * error, and there should be no more updates after this.\n * @param complete - Called when the loading task is complete.\n */;\n }\n return t.prototype.onProgress = function(t, e, n) {\n this._progressObserver = {\n next: t,\n error: e,\n complete: n\n };\n }, \n /**\n * Implements the `Promise.catch` interface.\n *\n * @param onRejected - Called when an error occurs during bundle loading.\n */\n t.prototype.catch = function(t) {\n return this._taskCompletionResolver.promise.catch(t);\n }, \n /**\n * Implements the `Promise.then` interface.\n *\n * @param onFulfilled - Called on the completion of the loading task with a final `LoadBundleTaskProgress` update.\n * The update will always have its `taskState` set to `\"Success\"`.\n * @param onRejected - Called when an error occurs during bundle loading.\n */\n t.prototype.then = function(t, e) {\n return this._taskCompletionResolver.promise.then(t, e);\n }, \n /**\n * Notifies all observers that bundle loading has completed, with a provided\n * `LoadBundleTaskProgress` object.\n *\n * @private\n */\n t.prototype._completeWith = function(t) {\n this._updateProgress(t), this._progressObserver.complete && this._progressObserver.complete(), \n this._taskCompletionResolver.resolve(t);\n }, \n /**\n * Notifies all observers that bundle loading has failed, with a provided\n * `Error` as the reason.\n *\n * @private\n */\n t.prototype._failWith = function(t) {\n this._lastProgress.taskState = \"Error\", this._progressObserver.next && this._progressObserver.next(this._lastProgress), \n this._progressObserver.error && this._progressObserver.error(t), this._taskCompletionResolver.reject(t);\n }, \n /**\n * Notifies a progress update of loading a bundle.\n * @param progress - The new progress.\n *\n * @private\n */\n t.prototype._updateProgress = function(t) {\n this._lastProgress = t, this._progressObserver.next && this._progressObserver.next(t);\n }, t;\n}(), sa = -1, ua = /** @class */ function(e) {\n /** @hideconstructor */\n function n(t, n) {\n var r = this;\n /**\n * Whether it's a {@link Firestore} or Firestore Lite instance.\n */\n return (r = e.call(this, t, n) || this).type = \"firestore\", r._queue = new ra, r._persistenceKey = \"name\" in t ? t.name : \"[DEFAULT]\", \n r;\n }\n return t(n, e), n.prototype._terminate = function() {\n return this._firestoreClient || \n // The client must be initialized to ensure that all subsequent API\n // usage throws an exception.\n ca(this), this._firestoreClient.terminate();\n }, n;\n}(Yu);\n\n/**\n * @license\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/** DOMException error code constants. */\n/**\n * @internal\n */\nfunction aa(t) {\n return t._firestoreClient || ca(t), t._firestoreClient.verifyNotTerminated(), t._firestoreClient;\n}\n\nfunction ca(t) {\n var e, n = t._freezeSettings(), r = function(t, e, n, r) {\n return new xu(t, e, n, r.host, r.ssl, r.experimentalForceLongPolling, r.experimentalAutoDetectLongPolling, r.useFetchStreams);\n }(t._databaseId, (null === (e = t._app) || void 0 === e ? void 0 : e.options.appId) || \"\", t._persistenceKey, n);\n t._firestoreClient = new wu(t._credentials, t._queue, r);\n}\n\n/**\n * Attempts to enable persistent storage, if possible.\n *\n * Must be called before any other functions (other than\n * {@link initializeFirestore}, {@link getFirestore} or\n * {@link clearIndexedDbPersistence}.\n *\n * If this fails, `enableIndexedDbPersistence()` will reject the promise it\n * returns. Note that even after this failure, the {@link Firestore} instance will\n * remain usable, however offline persistence will be disabled.\n *\n * There are several reasons why this can fail, which can be identified by\n * the `code` on the error.\n *\n * * failed-precondition: The app is already open in another browser tab.\n * * unimplemented: The browser is incompatible with the offline\n * persistence implementation.\n *\n * @param firestore - The {@link Firestore} instance to enable persistence for.\n * @param persistenceSettings - Optional settings object to configure\n * persistence.\n * @returns A `Promise` that represents successfully enabling persistent storage.\n */\n/**\n * Registers both the `OfflineComponentProvider` and `OnlineComponentProvider`.\n * If the operation fails with a recoverable error (see\n * `canRecoverFromIndexedDbError()` below), the returned Promise is rejected\n * but the client remains usable.\n */ function ha(t, e, i) {\n var o = this, s = new br;\n return t.asyncQueue.enqueue((function() {\n return n(o, void 0, void 0, (function() {\n var n;\n return r(this, (function(r) {\n switch (r.label) {\n case 0:\n return r.trys.push([ 0, 3, , 4 ]), [ 4 /*yield*/ , bu(t, i) ];\n\n case 1:\n return r.sent(), [ 4 /*yield*/ , Iu(t, e) ];\n\n case 2:\n return r.sent(), s.resolve(), [ 3 /*break*/ , 4 ];\n\n case 3:\n if (!\n /**\n * Decides whether the provided error allows us to gracefully disable\n * persistence (as opposed to crashing the client).\n */\n function(t) {\n return \"FirebaseError\" === t.name ? t.code === N.FAILED_PRECONDITION || t.code === N.UNIMPLEMENTED : !(\"undefined\" != typeof DOMException && t instanceof DOMException) || (22 === t.code || 20 === t.code || \n // Firefox Private Browsing mode disables IndexedDb and returns\n // INVALID_STATE for any usage.\n 11 === t.code);\n }(n = r.sent())) throw n;\n return console.warn(\"Error enabling offline persistence. Falling back to persistence disabled: \" + n), \n s.reject(n), [ 3 /*break*/ , 4 ];\n\n case 4:\n return [ 2 /*return*/ ];\n }\n }));\n }));\n })).then((function() {\n return s.promise;\n }));\n}\n\n/**\n * Re-enables use of the network for this {@link Firestore} instance after a prior\n * call to {@link disableNetwork}.\n *\n * @returns A `Promise` that is resolved once the network has been enabled.\n */\nfunction fa(t) {\n if (t._initialized || t._terminated) throw new D(N.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.\");\n}\n\n/**\n * @license\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * A `FieldPath` refers to a field in a document. The path may consist of a\n * single field name (referring to a top-level field in the document), or a\n * list of field names (referring to a nested field in the document).\n *\n * Create a `FieldPath` by providing field names. If more than one field\n * name is provided, the path will point to a nested field in a document.\n */ var la = /** @class */ function() {\n /**\n * Creates a `FieldPath` from the provided field names. If more than one field\n * name is provided, the path will point to a nested field in a document.\n *\n * @param fieldNames - A list of field names.\n */\n function t() {\n for (var t = [], e = 0; e < arguments.length; e++) t[e] = arguments[e];\n for (var n = 0; n < t.length; ++n) if (0 === t[n].length) throw new D(N.INVALID_ARGUMENT, \"Invalid field name at argument $(i + 1). Field names must not be empty.\");\n this._internalPath = new $(t);\n }\n /**\n * Returns true if this `FieldPath` is equal to the provided one.\n *\n * @param other - The `FieldPath` to compare against.\n * @returns true if this `FieldPath` is equal to the provided one.\n */ return t.prototype.isEqual = function(t) {\n return this._internalPath.isEqual(t._internalPath);\n }, t;\n}(), da = /** @class */ function() {\n /** @hideconstructor */\n function t(t) {\n this._byteString = t;\n }\n /**\n * Creates a new `Bytes` object from the given Base64 string, converting it to\n * bytes.\n *\n * @param base64 - The Base64 string used to create the `Bytes` object.\n */ return t.fromBase64String = function(e) {\n try {\n return new t(J.fromBase64String(e));\n } catch (e) {\n throw new D(N.INVALID_ARGUMENT, \"Failed to construct data from Base64 string: \" + e);\n }\n }, \n /**\n * Creates a new `Bytes` object from the given Uint8Array.\n *\n * @param array - The Uint8Array used to create the `Bytes` object.\n */\n t.fromUint8Array = function(e) {\n return new t(J.fromUint8Array(e));\n }, \n /**\n * Returns the underlying bytes as a Base64-encoded string.\n *\n * @returns The Base64-encoded string created from the `Bytes` object.\n */\n t.prototype.toBase64 = function() {\n return this._byteString.toBase64();\n }, \n /**\n * Returns the underlying bytes in a new `Uint8Array`.\n *\n * @returns The Uint8Array created from the `Bytes` object.\n */\n t.prototype.toUint8Array = function() {\n return this._byteString.toUint8Array();\n }, \n /**\n * Returns a string representation of the `Bytes` object.\n *\n * @returns A string representation of the `Bytes` object.\n */\n t.prototype.toString = function() {\n return \"Bytes(base64: \" + this.toBase64() + \")\";\n }, \n /**\n * Returns true if this `Bytes` object is equal to the provided one.\n *\n * @param other - The `Bytes` object to compare against.\n * @returns true if this `Bytes` object is equal to the provided one.\n */\n t.prototype.isEqual = function(t) {\n return this._byteString.isEqual(t._byteString);\n }, t;\n}(), pa = \n/**\n * @param _methodName - The public API endpoint that returns this class.\n * @hideconstructor\n */\nfunction(t) {\n this._methodName = t;\n}, ya = /** @class */ function() {\n /**\n * Creates a new immutable `GeoPoint` object with the provided latitude and\n * longitude values.\n * @param latitude - The latitude as number between -90 and 90.\n * @param longitude - The longitude as number between -180 and 180.\n */\n function t(t, e) {\n if (!isFinite(t) || t < -90 || t > 90) throw new D(N.INVALID_ARGUMENT, \"Latitude must be a number between -90 and 90, but was: \" + t);\n if (!isFinite(e) || e < -180 || e > 180) throw new D(N.INVALID_ARGUMENT, \"Longitude must be a number between -180 and 180, but was: \" + e);\n this._lat = t, this._long = e;\n }\n return Object.defineProperty(t.prototype, \"latitude\", {\n /**\n * The latitude of this `GeoPoint` instance.\n */\n get: function() {\n return this._lat;\n },\n enumerable: !1,\n configurable: !0\n }), Object.defineProperty(t.prototype, \"longitude\", {\n /**\n * The longitude of this `GeoPoint` instance.\n */\n get: function() {\n return this._long;\n },\n enumerable: !1,\n configurable: !0\n }), \n /**\n * Returns true if this `GeoPoint` is equal to the provided one.\n *\n * @param other - The `GeoPoint` to compare against.\n * @returns true if this `GeoPoint` is equal to the provided one.\n */\n t.prototype.isEqual = function(t) {\n return this._lat === t._lat && this._long === t._long;\n }, \n /** Returns a JSON-serializable representation of this GeoPoint. */ t.prototype.toJSON = function() {\n return {\n latitude: this._lat,\n longitude: this._long\n };\n }, \n /**\n * Actually private to JS consumers of our API, so this function is prefixed\n * with an underscore.\n */\n t.prototype._compareTo = function(t) {\n return q(this._lat, t._lat) || q(this._long, t._long);\n }, t;\n}(), va = /^__.*__$/, ma = /** @class */ function() {\n function t(t, e, n) {\n this.data = t, this.fieldMask = e, this.fieldTransforms = n;\n }\n return t.prototype.toMutation = function(t, e) {\n return null !== this.fieldMask ? new Fe(t, this.data, this.fieldMask, e, this.fieldTransforms) : new Pe(t, this.data, e, this.fieldTransforms);\n }, t;\n}(), ga = /** @class */ function() {\n function t(t, \n // The fieldMask does not include document transforms.\n e, n) {\n this.data = t, this.fieldMask = e, this.fieldTransforms = n;\n }\n return t.prototype.toMutation = function(t, e) {\n return new Fe(t, this.data, this.fieldMask, e, this.fieldTransforms);\n }, t;\n}();\n\n/**\n * @license\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * An immutable object representing an array of bytes.\n */ function wa(t) {\n switch (t) {\n case 0 /* Set */ :\n // fall through\n case 2 /* MergeSet */ :\n // fall through\n case 1 /* Update */ :\n return !0;\n\n case 3 /* Argument */ :\n case 4 /* ArrayArgument */ :\n return !1;\n\n default:\n throw O();\n }\n}\n\n/** A \"context\" object passed around while parsing user data. */ var ba = /** @class */ function() {\n /**\n * Initializes a ParseContext with the given source and path.\n *\n * @param settings - The settings for the parser.\n * @param databaseId - The database ID of the Firestore instance.\n * @param serializer - The serializer to use to generate the Value proto.\n * @param ignoreUndefinedProperties - Whether to ignore undefined properties\n * rather than throw.\n * @param fieldTransforms - A mutable list of field transforms encountered\n * while parsing the data.\n * @param fieldMask - A mutable list of field paths encountered while parsing\n * the data.\n *\n * TODO(b/34871131): We don't support array paths right now, so path can be\n * null to indicate the context represents any location within an array (in\n * which case certain features will not work and errors will be somewhat\n * compromised).\n */\n function t(t, e, n, r, i, o) {\n this.settings = t, this.databaseId = e, this.R = n, this.ignoreUndefinedProperties = r, \n // Minor hack: If fieldTransforms is undefined, we assume this is an\n // external call and we need to validate the entire path.\n void 0 === i && this.Cc(), this.fieldTransforms = i || [], this.fieldMask = o || [];\n }\n return Object.defineProperty(t.prototype, \"path\", {\n get: function() {\n return this.settings.path;\n },\n enumerable: !1,\n configurable: !0\n }), Object.defineProperty(t.prototype, \"Nc\", {\n get: function() {\n return this.settings.Nc;\n },\n enumerable: !1,\n configurable: !0\n }), \n /** Returns a new context with the specified settings overwritten. */ t.prototype.xc = function(e) {\n return new t(Object.assign(Object.assign({}, this.settings), e), this.databaseId, this.R, this.ignoreUndefinedProperties, this.fieldTransforms, this.fieldMask);\n }, t.prototype.kc = function(t) {\n var e, n = null === (e = this.path) || void 0 === e ? void 0 : e.child(t), r = this.xc({\n path: n,\n Fc: !1\n });\n return r.$c(t), r;\n }, t.prototype.Oc = function(t) {\n var e, n = null === (e = this.path) || void 0 === e ? void 0 : e.child(t), r = this.xc({\n path: n,\n Fc: !1\n });\n return r.Cc(), r;\n }, t.prototype.Mc = function(t) {\n // TODO(b/34871131): We don't support array paths right now; so make path\n // undefined.\n return this.xc({\n path: void 0,\n Fc: !0\n });\n }, t.prototype.Lc = function(t) {\n return Ua(t, this.settings.methodName, this.settings.Bc || !1, this.path, this.settings.qc);\n }, \n /** Returns 'true' if 'fieldPath' was traversed when creating this context. */ t.prototype.contains = function(t) {\n return void 0 !== this.fieldMask.find((function(e) {\n return t.isPrefixOf(e);\n })) || void 0 !== this.fieldTransforms.find((function(e) {\n return t.isPrefixOf(e.field);\n }));\n }, t.prototype.Cc = function() {\n // TODO(b/34871131): Remove null check once we have proper paths for fields\n // within arrays.\n if (this.path) for (var t = 0; t < this.path.length; t++) this.$c(this.path.get(t));\n }, t.prototype.$c = function(t) {\n if (0 === t.length) throw this.Lc(\"Document fields must not be empty\");\n if (wa(this.Nc) && va.test(t)) throw this.Lc('Document fields cannot begin and end with \"__\"');\n }, t;\n}(), Ia = /** @class */ function() {\n function t(t, e, n) {\n this.databaseId = t, this.ignoreUndefinedProperties = e, this.R = n || Co(t)\n /** Creates a new top-level parse context. */;\n }\n return t.prototype.Uc = function(t, e, n, r) {\n return void 0 === r && (r = !1), new ba({\n Nc: t,\n methodName: e,\n qc: n,\n path: $.emptyPath(),\n Fc: !1,\n Bc: r\n }, this.databaseId, this.R, this.ignoreUndefinedProperties);\n }, t;\n}();\n\n/**\n * Helper for parsing raw user input (provided via the API) into internal model\n * classes.\n */ function Ta(t) {\n var e = t._freezeSettings(), n = Co(t._databaseId);\n return new Ia(t._databaseId, !!e.ignoreUndefinedProperties, n);\n}\n\n/** Parse document data from a set() call. */ function _a(t, e, n, r, i, o) {\n void 0 === o && (o = {});\n var s = t.Uc(o.merge || o.mergeFields ? 2 /* MergeSet */ : 0 /* Set */ , e, n, i);\n Fa(\"Data must be an object, but it was:\", s, r);\n var u, a, c = Oa(r, s);\n if (o.merge) u = new X(s.fieldMask), a = s.fieldTransforms; else if (o.mergeFields) {\n for (var h = [], f = 0, l = o.mergeFields; f < l.length; f++) {\n var d = Ma(e, l[f], n);\n if (!s.contains(d)) throw new D(N.INVALID_ARGUMENT, \"Field '\" + d + \"' is specified in your field mask but missing from your input data.\");\n Ba(h, d) || h.push(d);\n }\n u = new X(h), a = s.fieldTransforms.filter((function(t) {\n return u.covers(t.field);\n }));\n } else u = null, a = s.fieldTransforms;\n return new ma(new Et(c), u, a);\n}\n\nvar Ea = /** @class */ function(e) {\n function n() {\n return null !== e && e.apply(this, arguments) || this;\n }\n return t(n, e), n.prototype._toFieldTransform = function(t) {\n if (2 /* MergeSet */ !== t.Nc) throw 1 /* Update */ === t.Nc ? t.Lc(this._methodName + \"() can only appear at the top level of your update data\") : t.Lc(this._methodName + \"() cannot be used with set() unless you pass {merge:true}\");\n // No transform to add for a delete, but we need to add it to our\n // fieldMask so it gets deleted.\n return t.fieldMask.push(t.path), null;\n }, n.prototype.isEqual = function(t) {\n return t instanceof n;\n }, n;\n}(pa);\n\n/**\n * Creates a child context for parsing SerializableFieldValues.\n *\n * This is different than calling `ParseContext.contextWith` because it keeps\n * the fieldTransforms and fieldMask separate.\n *\n * The created context has its `dataSource` set to `UserDataSource.Argument`.\n * Although these values are used with writes, any elements in these FieldValues\n * are not considered writes since they cannot contain any FieldValue sentinels,\n * etc.\n *\n * @param fieldValue - The sentinel FieldValue for which to create a child\n * context.\n * @param context - The parent context.\n * @param arrayElement - Whether or not the FieldValue has an array.\n */ function Sa(t, e, n) {\n return new ba({\n Nc: 3 /* Argument */ ,\n qc: e.settings.qc,\n methodName: t._methodName,\n Fc: n\n }, e.databaseId, e.R, e.ignoreUndefinedProperties);\n}\n\nvar Na = /** @class */ function(e) {\n function n() {\n return null !== e && e.apply(this, arguments) || this;\n }\n return t(n, e), n.prototype._toFieldTransform = function(t) {\n return new Se(t.path, new me);\n }, n.prototype.isEqual = function(t) {\n return t instanceof n;\n }, n;\n}(pa), Da = /** @class */ function(e) {\n function n(t, n) {\n var r = this;\n return (r = e.call(this, t) || this).Kc = n, r;\n }\n return t(n, e), n.prototype._toFieldTransform = function(t) {\n var e = Sa(this, t, \n /*array=*/ !0), n = this.Kc.map((function(t) {\n return La(t, e);\n })), r = new ge(n);\n return new Se(t.path, r);\n }, n.prototype.isEqual = function(t) {\n // TODO(mrschmidt): Implement isEquals\n return this === t;\n }, n;\n}(pa), Aa = /** @class */ function(e) {\n function n(t, n) {\n var r = this;\n return (r = e.call(this, t) || this).Kc = n, r;\n }\n return t(n, e), n.prototype._toFieldTransform = function(t) {\n var e = Sa(this, t, \n /*array=*/ !0), n = this.Kc.map((function(t) {\n return La(t, e);\n })), r = new be(n);\n return new Se(t.path, r);\n }, n.prototype.isEqual = function(t) {\n // TODO(mrschmidt): Implement isEquals\n return this === t;\n }, n;\n}(pa), ka = /** @class */ function(e) {\n function n(t, n) {\n var r = this;\n return (r = e.call(this, t) || this).Qc = n, r;\n }\n return t(n, e), n.prototype._toFieldTransform = function(t) {\n var e = new Te(t.R, le(t.R, this.Qc));\n return new Se(t.path, e);\n }, n.prototype.isEqual = function(t) {\n // TODO(mrschmidt): Implement isEquals\n return this === t;\n }, n;\n}(pa);\n\n/** Parse update data from an update() call. */ function Ca(t, e, n, r) {\n var i = t.Uc(1 /* Update */ , e, n);\n Fa(\"Data must be an object, but it was:\", i, r);\n var o = [], s = Et.empty();\n Q(r, (function(t, r) {\n var u = qa(e, t, n);\n // For Compat types, we have to \"extract\" the underlying types before\n // performing validation.\n r = l(r);\n var a = i.Oc(u);\n if (r instanceof Ea) \n // Add it to the field mask, but don't add anything to updateData.\n o.push(u); else {\n var c = La(r, a);\n null != c && (o.push(u), s.set(u, c));\n }\n }));\n var u = new X(o);\n return new ga(s, u, i.fieldTransforms);\n}\n\n/** Parse update data from a list of field/value arguments. */ function xa(t, e, n, r, i, o) {\n var s = t.Uc(1 /* Update */ , e, n), u = [ Ma(e, r, n) ], a = [ i ];\n if (o.length % 2 != 0) throw new D(N.INVALID_ARGUMENT, \"Function \" + e + \"() needs to be called with an even number of arguments that alternate between field names and values.\");\n for (var c = 0; c < o.length; c += 2) u.push(Ma(e, o[c])), a.push(o[c + 1]);\n // We iterate in reverse order to pick the last value for a field if the\n // user specified the field multiple times.\n for (var h = [], f = Et.empty(), d = u.length - 1; d >= 0; --d) if (!Ba(h, u[d])) {\n var p = u[d], y = a[d];\n // For Compat types, we have to \"extract\" the underlying types before\n // performing validation.\n y = l(y);\n var v = s.Oc(p);\n if (y instanceof Ea) \n // Add it to the field mask, but don't add anything to updateData.\n h.push(p); else {\n var m = La(y, v);\n null != m && (h.push(p), f.set(p, m));\n }\n }\n var g = new X(h);\n return new ga(f, g, s.fieldTransforms);\n}\n\n/**\n * Parse a \"query value\" (e.g. value in a where filter or a value in a cursor\n * bound).\n *\n * @param allowArrays - Whether the query value is an array that may directly\n * contain additional arrays (e.g. the operand of an `in` query).\n */ function Ra(t, e, n, r) {\n return void 0 === r && (r = !1), La(n, t.Uc(r ? 4 /* ArrayArgument */ : 3 /* Argument */ , e));\n}\n\n/**\n * Parses user data to Protobuf Values.\n *\n * @param input - Data to be parsed.\n * @param context - A context object representing the current path being parsed,\n * the source of the data being parsed, etc.\n * @returns The parsed value, or null if the value was a FieldValue sentinel\n * that should not be included in the resulting parsed data.\n */ function La(t, e) {\n if (Pa(\n // Unwrap the API type from the Compat SDK. This will return the API type\n // from firestore-exp.\n t = l(t))) return Fa(\"Unsupported field value:\", e, t), Oa(t, e);\n if (t instanceof pa) \n // FieldValues usually parse into transforms (except FieldValue.delete())\n // in which case we do not want to include this field in our parsed data\n // (as doing so will overwrite the field directly prior to the transform\n // trying to transform it). So we don't add this location to\n // context.fieldMask and we return null as our parsing result.\n /**\n * \"Parses\" the provided FieldValueImpl, adding any necessary transforms to\n * context.fieldTransforms.\n */\n return function(t, e) {\n // Sentinels are only supported with writes, and not within arrays.\n if (!wa(e.Nc)) throw e.Lc(t._methodName + \"() can only be used with update() and set()\");\n if (!e.path) throw e.Lc(t._methodName + \"() is not currently supported inside arrays\");\n var n = t._toFieldTransform(e);\n n && e.fieldTransforms.push(n);\n }(t, e), null;\n if (void 0 === t && e.ignoreUndefinedProperties) \n // If the input is undefined it can never participate in the fieldMask, so\n // don't handle this below. If `ignoreUndefinedProperties` is false,\n // `parseScalarValue` will reject an undefined value.\n return null;\n if (\n // If context.path is null we are inside an array and we don't support\n // field mask paths more granular than the top-level array.\n e.path && e.fieldMask.push(e.path), t instanceof Array) {\n // TODO(b/34871131): Include the path containing the array in the error\n // message.\n // In the case of IN queries, the parsed data is an array (representing\n // the set of values to be included for the IN query) that may directly\n // contain additional arrays (each representing an individual field\n // value), so we disable this validation.\n if (e.settings.Fc && 4 /* ArrayArgument */ !== e.Nc) throw e.Lc(\"Nested arrays are not supported\");\n return function(t, e) {\n for (var n = [], r = 0, i = 0, o = t; i < o.length; i++) {\n var s = La(o[i], e.Mc(r));\n null == s && (\n // Just include nulls in the array for fields being replaced with a\n // sentinel.\n s = {\n nullValue: \"NULL_VALUE\"\n }), n.push(s), r++;\n }\n return {\n arrayValue: {\n values: n\n }\n };\n }(t, e);\n }\n return function(t, e) {\n if (null === (t = l(t))) return {\n nullValue: \"NULL_VALUE\"\n };\n if (\"number\" == typeof t) return le(e.R, t);\n if (\"boolean\" == typeof t) return {\n booleanValue: t\n };\n if (\"string\" == typeof t) return {\n stringValue: t\n };\n if (t instanceof Date) {\n var n = j.fromDate(t);\n return {\n timestampValue: In(e.R, n)\n };\n }\n if (t instanceof j) {\n // Firestore backend truncates precision down to microseconds. To ensure\n // offline mode works the same with regards to truncation, perform the\n // truncation immediately without waiting for the backend to do that.\n n = new j(t.seconds, 1e3 * Math.floor(t.nanoseconds / 1e3));\n return {\n timestampValue: In(e.R, n)\n };\n }\n if (t instanceof ya) return {\n geoPointValue: {\n latitude: t.latitude,\n longitude: t.longitude\n }\n };\n if (t instanceof da) return {\n bytesValue: Tn(e.R, t._byteString)\n };\n if (t instanceof $u) {\n n = e.databaseId;\n var r = t.firestore._databaseId;\n if (!r.isEqual(n)) throw e.Lc(\"Document reference is for database \" + r.projectId + \"/\" + r.database + \" but should be for database \" + n.projectId + \"/\" + n.database);\n return {\n referenceValue: Sn(t.firestore._databaseId || e.databaseId, t._key.path)\n };\n }\n throw e.Lc(\"Unsupported field value: \" + Qu(t));\n }(t, e);\n}\n\nfunction Oa(t, e) {\n var n = {};\n return z(t) ? \n // If we encounter an empty object, we explicitly add it to the update\n // mask to ensure that the server creates a map entry.\n e.path && e.path.length > 0 && e.fieldMask.push(e.path) : Q(t, (function(t, r) {\n var i = La(r, e.kc(t));\n null != i && (n[t] = i);\n })), {\n mapValue: {\n fields: n\n }\n };\n}\n\nfunction Pa(t) {\n return !(\"object\" != typeof t || null === t || t instanceof Array || t instanceof Date || t instanceof j || t instanceof ya || t instanceof da || t instanceof $u || t instanceof pa);\n}\n\nfunction Fa(t, e, n) {\n if (!Pa(n) || !function(t) {\n return \"object\" == typeof t && null !== t && (Object.getPrototypeOf(t) === Object.prototype || null === Object.getPrototypeOf(t));\n }(n)) {\n var r = Qu(n);\n throw \"an object\" === r ? e.Lc(t + \" a custom object\") : e.Lc(t + \" \" + r);\n }\n}\n\n/**\n * Helper that calls fromDotSeparatedString() but wraps any error thrown.\n */ function Ma(t, e, n) {\n if (\n // If required, replace the FieldPath Compat class with with the firestore-exp\n // FieldPath.\n (e = l(e)) instanceof la) return e._internalPath;\n if (\"string\" == typeof e) return qa(t, e);\n throw Ua(\"Field path arguments must be of type string or FieldPath.\", t, \n /* hasConverter= */ !1, \n /* path= */ void 0, n);\n}\n\n/**\n * Matches any characters in a field path string that are reserved.\n */ var Va = new RegExp(\"[~\\\\*/\\\\[\\\\]]\");\n\n/**\n * Wraps fromDotSeparatedString with an error message about the method that\n * was thrown.\n * @param methodName - The publicly visible method name\n * @param path - The dot-separated string form of a field path which will be\n * split on dots.\n * @param targetDoc - The document against which the field path will be\n * evaluated.\n */ function qa(t, n, r) {\n if (n.search(Va) >= 0) throw Ua(\"Invalid field path (\" + n + \"). Paths must not contain '~', '*', '/', '[', or ']'\", t, \n /* hasConverter= */ !1, \n /* path= */ void 0, r);\n try {\n return (new (la.bind.apply(la, e([ void 0 ], n.split(\".\")))))._internalPath;\n } catch (e) {\n throw Ua(\"Invalid field path (\" + n + \"). Paths must not be empty, begin with '.', end with '.', or contain '..'\", t, \n /* hasConverter= */ !1, \n /* path= */ void 0, r);\n }\n}\n\nfunction Ua(t, e, n, r, i) {\n var o = r && !r.isEmpty(), s = void 0 !== i, u = \"Function \" + e + \"() called with invalid data\";\n n && (u += \" (via `toFirestore()`)\");\n var a = \"\";\n return (o || s) && (a += \" (found\", o && (a += \" in field \" + r), s && (a += \" in document \" + i), \n a += \")\"), new D(N.INVALID_ARGUMENT, (u += \". \") + t + a)\n /** Checks `haystack` if FieldPath `needle` is present. Runs in O(n). */;\n}\n\nfunction Ba(t, e) {\n return t.some((function(t) {\n return t.isEqual(e);\n }));\n}\n\n/**\n * @license\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * A `DocumentSnapshot` contains data read from a document in your Firestore\n * database. The data can be extracted with `.data()` or `.get()` to\n * get a specific field.\n *\n * For a `DocumentSnapshot` that points to a non-existing document, any data\n * access will return 'undefined'. You can use the `exists()` method to\n * explicitly verify a document's existence.\n */ var ja = /** @class */ function() {\n // Note: This class is stripped down version of the DocumentSnapshot in\n // the legacy SDK. The changes are:\n // - No support for SnapshotMetadata.\n // - No support for SnapshotOptions.\n /** @hideconstructor protected */\n function t(t, e, n, r, i) {\n this._firestore = t, this._userDataWriter = e, this._key = n, this._document = r, \n this._converter = i;\n }\n return Object.defineProperty(t.prototype, \"id\", {\n /** Property of the `DocumentSnapshot` that provides the document's ID. */ get: function() {\n return this._key.path.lastSegment();\n },\n enumerable: !1,\n configurable: !0\n }), Object.defineProperty(t.prototype, \"ref\", {\n /**\n * The `DocumentReference` for the document included in the `DocumentSnapshot`.\n */\n get: function() {\n return new $u(this._firestore, this._converter, this._key);\n },\n enumerable: !1,\n configurable: !0\n }), \n /**\n * Signals whether or not the document at the snapshot's location exists.\n *\n * @returns true if the document exists.\n */\n t.prototype.exists = function() {\n return null !== this._document;\n }, \n /**\n * Retrieves all fields in the document as an `Object`. Returns `undefined` if\n * the document doesn't exist.\n *\n * @returns An `Object` containing all fields in the document or `undefined`\n * if the document doesn't exist.\n */\n t.prototype.data = function() {\n if (this._document) {\n if (this._converter) {\n // We only want to use the converter and create a new DocumentSnapshot\n // if a converter has been provided.\n var t = new Ka(this._firestore, this._userDataWriter, this._key, this._document, \n /* converter= */ null);\n return this._converter.fromFirestore(t);\n }\n return this._userDataWriter.convertValue(this._document.data.value);\n }\n }, \n /**\n * Retrieves the field specified by `fieldPath`. Returns `undefined` if the\n * document or field doesn't exist.\n *\n * @param fieldPath - The path (for example 'foo' or 'foo.bar') to a specific\n * field.\n * @returns The data at the specified field location or undefined if no such\n * field exists in the document.\n */\n // We are using `any` here to avoid an explicit cast by our users.\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n t.prototype.get = function(t) {\n if (this._document) {\n var e = this._document.data.field(Ga(\"DocumentSnapshot.get\", t));\n if (null !== e) return this._userDataWriter.convertValue(e);\n }\n }, t;\n}(), Ka = /** @class */ function(e) {\n function n() {\n return null !== e && e.apply(this, arguments) || this;\n }\n /**\n * Retrieves all fields in the document as an `Object`.\n *\n * @override\n * @returns An `Object` containing all fields in the document.\n */ return t(n, e), n.prototype.data = function() {\n return e.prototype.data.call(this);\n }, n;\n}(ja);\n\n/**\n * A `QueryDocumentSnapshot` contains data read from a document in your\n * Firestore database as part of a query. The document is guaranteed to exist\n * and its data can be extracted with `.data()` or `.get()` to get a\n * specific field.\n *\n * A `QueryDocumentSnapshot` offers the same API surface as a\n * `DocumentSnapshot`. Since query results contain only existing documents, the\n * `exists` property will always be true and `data()` will never return\n * 'undefined'.\n */\n/**\n * Helper that calls `fromDotSeparatedString()` but wraps any error thrown.\n */\nfunction Ga(t, e) {\n return \"string\" == typeof e ? qa(t, e) : e instanceof la ? e._internalPath : e._delegate._internalPath;\n}\n\n/**\n * @license\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * Metadata about a snapshot, describing the state of the snapshot.\n */ var Qa = /** @class */ function() {\n /** @hideconstructor */\n function t(t, e) {\n this.hasPendingWrites = t, this.fromCache = e\n /**\n * Returns true if this `SnapshotMetadata` is equal to the provided one.\n *\n * @param other - The `SnapshotMetadata` to compare against.\n * @returns true if this `SnapshotMetadata` is equal to the provided one.\n */;\n }\n return t.prototype.isEqual = function(t) {\n return this.hasPendingWrites === t.hasPendingWrites && this.fromCache === t.fromCache;\n }, t;\n}(), za = /** @class */ function(e) {\n /** @hideconstructor protected */\n function n(t, n, r, i, o, s) {\n var u = this;\n return (u = e.call(this, t, n, r, i, s) || this)._firestore = t, u._firestoreImpl = t, \n u.metadata = o, u;\n }\n /**\n * Property of the `DocumentSnapshot` that signals whether or not the data\n * exists. True if the document exists.\n */ return t(n, e), n.prototype.exists = function() {\n return e.prototype.exists.call(this);\n }, \n /**\n * Retrieves all fields in the document as an `Object`. Returns `undefined` if\n * the document doesn't exist.\n *\n * By default, `FieldValue.serverTimestamp()` values that have not yet been\n * set to their final value will be returned as `null`. You can override\n * this by passing an options object.\n *\n * @param options - An options object to configure how data is retrieved from\n * the snapshot (for example the desired behavior for server timestamps that\n * have not yet been set to their final value).\n * @returns An `Object` containing all fields in the document or `undefined` if\n * the document doesn't exist.\n */\n n.prototype.data = function(t) {\n if (void 0 === t && (t = {}), this._document) {\n if (this._converter) {\n // We only want to use the converter and create a new DocumentSnapshot\n // if a converter has been provided.\n var e = new Wa(this._firestore, this._userDataWriter, this._key, this._document, this.metadata, \n /* converter= */ null);\n return this._converter.fromFirestore(e, t);\n }\n return this._userDataWriter.convertValue(this._document.data.value, t.serverTimestamps);\n }\n }, \n /**\n * Retrieves the field specified by `fieldPath`. Returns `undefined` if the\n * document or field doesn't exist.\n *\n * By default, a `FieldValue.serverTimestamp()` that has not yet been set to\n * its final value will be returned as `null`. You can override this by\n * passing an options object.\n *\n * @param fieldPath - The path (for example 'foo' or 'foo.bar') to a specific\n * field.\n * @param options - An options object to configure how the field is retrieved\n * from the snapshot (for example the desired behavior for server timestamps\n * that have not yet been set to their final value).\n * @returns The data at the specified field location or undefined if no such\n * field exists in the document.\n */\n // We are using `any` here to avoid an explicit cast by our users.\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n n.prototype.get = function(t, e) {\n if (void 0 === e && (e = {}), this._document) {\n var n = this._document.data.field(Ga(\"DocumentSnapshot.get\", t));\n if (null !== n) return this._userDataWriter.convertValue(n, e.serverTimestamps);\n }\n }, n;\n}(ja), Wa = /** @class */ function(e) {\n function n() {\n return null !== e && e.apply(this, arguments) || this;\n }\n /**\n * Retrieves all fields in the document as an `Object`.\n *\n * By default, `FieldValue.serverTimestamp()` values that have not yet been\n * set to their final value will be returned as `null`. You can override\n * this by passing an options object.\n *\n * @override\n * @param options - An options object to configure how data is retrieved from\n * the snapshot (for example the desired behavior for server timestamps that\n * have not yet been set to their final value).\n * @returns An `Object` containing all fields in the document.\n */ return t(n, e), n.prototype.data = function(t) {\n return void 0 === t && (t = {}), e.prototype.data.call(this, t);\n }, n;\n}(za), Ha = /** @class */ function() {\n /** @hideconstructor */\n function t(t, e, n, r) {\n this._firestore = t, this._userDataWriter = e, this._snapshot = r, this.metadata = new Qa(r.hasPendingWrites, r.fromCache), \n this.query = n;\n }\n return Object.defineProperty(t.prototype, \"docs\", {\n /** An array of all the documents in the `QuerySnapshot`. */ get: function() {\n var t = [];\n return this.forEach((function(e) {\n return t.push(e);\n })), t;\n },\n enumerable: !1,\n configurable: !0\n }), Object.defineProperty(t.prototype, \"size\", {\n /** The number of documents in the `QuerySnapshot`. */ get: function() {\n return this._snapshot.docs.size;\n },\n enumerable: !1,\n configurable: !0\n }), Object.defineProperty(t.prototype, \"empty\", {\n /** True if there are no documents in the `QuerySnapshot`. */ get: function() {\n return 0 === this.size;\n },\n enumerable: !1,\n configurable: !0\n }), \n /**\n * Enumerates all of the documents in the `QuerySnapshot`.\n *\n * @param callback - A callback to be called with a `QueryDocumentSnapshot` for\n * each document in the snapshot.\n * @param thisArg - The `this` binding for the callback.\n */\n t.prototype.forEach = function(t, e) {\n var n = this;\n this._snapshot.docs.forEach((function(r) {\n t.call(e, new Wa(n._firestore, n._userDataWriter, r.key, r, new Qa(n._snapshot.mutatedKeys.has(r.key), n._snapshot.fromCache), n.query.converter));\n }));\n }, \n /**\n * Returns an array of the documents changes since the last snapshot. If this\n * is the first snapshot, all documents will be in the list as 'added'\n * changes.\n *\n * @param options - `SnapshotListenOptions` that control whether metadata-only\n * changes (i.e. only `DocumentSnapshot.metadata` changed) should trigger\n * snapshot events.\n */\n t.prototype.docChanges = function(t) {\n void 0 === t && (t = {});\n var e = !!t.includeMetadataChanges;\n if (e && this._snapshot.excludesMetadataChanges) throw new D(N.INVALID_ARGUMENT, \"To include metadata changes with your document changes, you must also pass { includeMetadataChanges:true } to onSnapshot().\");\n return this._cachedChanges && this._cachedChangesIncludeMetadataChanges === e || (this._cachedChanges = \n /** Calculates the array of `DocumentChange`s for a given `ViewSnapshot`. */\n function(t, e) {\n if (t._snapshot.oldDocs.isEmpty()) {\n var n = 0;\n return t._snapshot.docChanges.map((function(e) {\n return {\n type: \"added\",\n doc: new Wa(t._firestore, t._userDataWriter, e.doc.key, e.doc, new Qa(t._snapshot.mutatedKeys.has(e.doc.key), t._snapshot.fromCache), t.query.converter),\n oldIndex: -1,\n newIndex: n++\n };\n }));\n }\n // A `DocumentSet` that is updated incrementally as changes are applied to use\n // to lookup the index of a document.\n var r = t._snapshot.oldDocs;\n return t._snapshot.docChanges.filter((function(t) {\n return e || 3 /* Metadata */ !== t.type;\n })).map((function(e) {\n var n = new Wa(t._firestore, t._userDataWriter, e.doc.key, e.doc, new Qa(t._snapshot.mutatedKeys.has(e.doc.key), t._snapshot.fromCache), t.query.converter), i = -1, o = -1;\n return 0 /* Added */ !== e.type && (i = r.indexOf(e.doc.key), r = r.delete(e.doc.key)), \n 1 /* Removed */ !== e.type && (o = (r = r.add(e.doc)).indexOf(e.doc.key)), {\n type: Ya(e.type),\n doc: n,\n oldIndex: i,\n newIndex: o\n };\n }));\n }(this, e), this._cachedChangesIncludeMetadataChanges = e), this._cachedChanges;\n }, t;\n}();\n\n/**\n * A `DocumentSnapshot` contains data read from a document in your Firestore\n * database. The data can be extracted with `.data()` or `.get()` to\n * get a specific field.\n *\n * For a `DocumentSnapshot` that points to a non-existing document, any data\n * access will return 'undefined'. You can use the `exists()` method to\n * explicitly verify a document's existence.\n */ function Ya(t) {\n switch (t) {\n case 0 /* Added */ :\n return \"added\";\n\n case 2 /* Modified */ :\n case 3 /* Metadata */ :\n return \"modified\";\n\n case 1 /* Removed */ :\n return \"removed\";\n\n default:\n return O();\n }\n}\n\n// TODO(firestoreexp): Add tests for snapshotEqual with different snapshot\n// metadata\n/**\n * Returns true if the provided snapshots are equal.\n *\n * @param left - A snapshot to compare.\n * @param right - A snapshot to compare.\n * @returns true if the snapshots are equal.\n */ function $a(t, e) {\n return t instanceof za && e instanceof za ? t._firestore === e._firestore && t._key.isEqual(e._key) && (null === t._document ? null === e._document : t._document.isEqual(e._document)) && t._converter === e._converter : t instanceof Ha && e instanceof Ha && t._firestore === e._firestore && na(t.query, e.query) && t.metadata.isEqual(e.metadata) && t._snapshot.isEqual(e._snapshot);\n}\n\n/**\n * @license\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */ function Xa(t) {\n if (Xt(t) && 0 === t.explicitOrderBy.length) throw new D(N.UNIMPLEMENTED, \"limitToLast() queries require specifying at least one orderBy() clause\");\n}\n\n/**\n * A `QueryConstraint` is used to narrow the set of documents returned by a\n * Firestore query. `QueryConstraint`s are created by invoking {@link where},\n * {@link orderBy}, {@link (startAt:1)}, {@link (startAfter:1)}, {@link\n * endBefore:1}, {@link (endAt:1)}, {@link limit} or {@link limitToLast} and\n * can then be passed to {@link query} to create a new query instance that\n * also contains this `QueryConstraint`.\n */ var Ja = function() {};\n\n/**\n * Creates a new immutable instance of {@link Query} that is extended to also include\n * additional query constraints.\n *\n * @param query - The {@link Query} instance to use as a base for the new constraints.\n * @param queryConstraints - The list of {@link QueryConstraint}s to apply.\n * @throws if any of the provided query constraints cannot be combined with the\n * existing or new constraints.\n */ function Za(t) {\n for (var e = [], n = 1; n < arguments.length; n++) e[n - 1] = arguments[n];\n for (var r = 0, i = e; r < i.length; r++) {\n var o = i[r];\n t = o._apply(t);\n }\n return t;\n}\n\nvar tc = /** @class */ function(e) {\n function n(t, n, r) {\n var i = this;\n return (i = e.call(this) || this).jc = t, i.Wc = n, i.Gc = r, i.type = \"where\", \n i;\n }\n return t(n, e), n.prototype._apply = function(t) {\n var e = Ta(t.firestore), n = function(t, e, n, r, i, o, s) {\n var u;\n if (i.isKeyField()) {\n if (\"array-contains\" /* ARRAY_CONTAINS */ === o || \"array-contains-any\" /* ARRAY_CONTAINS_ANY */ === o) throw new D(N.INVALID_ARGUMENT, \"Invalid Query. You can't perform '\" + o + \"' queries on FieldPath.documentId().\");\n if (\"in\" /* IN */ === o || \"not-in\" /* NOT_IN */ === o) {\n uc(s, o);\n for (var a = [], c = 0, h = s; c < h.length; c++) {\n var f = h[c];\n a.push(sc(r, t, f));\n }\n u = {\n arrayValue: {\n values: a\n }\n };\n } else u = sc(r, t, s);\n } else \"in\" /* IN */ !== o && \"not-in\" /* NOT_IN */ !== o && \"array-contains-any\" /* ARRAY_CONTAINS_ANY */ !== o || uc(s, o), \n u = Ra(n, \"where\", s, \n /* allowArrays= */ \"in\" /* IN */ === o || \"not-in\" /* NOT_IN */ === o);\n var l = Rt.create(i, o, u);\n return function(t, e) {\n if (e.g()) {\n var n = Zt(t);\n if (null !== n && !n.isEqual(e.field)) throw new D(N.INVALID_ARGUMENT, \"Invalid query. All where filters with an inequality (<, <=, !=, not-in, >, or >=) must be on the same field. But you have inequality filters on '\" + n.toString() + \"' and '\" + e.field.toString() + \"'\");\n var r = Jt(t);\n null !== r && ac(t, e.field, r);\n }\n var i = function(t, e) {\n for (var n = 0, r = t.filters; n < r.length; n++) {\n var i = r[n];\n if (e.indexOf(i.op) >= 0) return i.op;\n }\n return null;\n }(t, \n /**\n * Given an operator, returns the set of operators that cannot be used with it.\n *\n * Operators in a query must adhere to the following set of rules:\n * 1. Only one array operator is allowed.\n * 2. Only one disjunctive operator is allowed.\n * 3. `NOT_EQUAL` cannot be used with another `NOT_EQUAL` operator.\n * 4. `NOT_IN` cannot be used with array, disjunctive, or `NOT_EQUAL` operators.\n *\n * Array operators: `ARRAY_CONTAINS`, `ARRAY_CONTAINS_ANY`\n * Disjunctive operators: `IN`, `ARRAY_CONTAINS_ANY`, `NOT_IN`\n */\n function(t) {\n switch (t) {\n case \"!=\" /* NOT_EQUAL */ :\n return [ \"!=\" /* NOT_EQUAL */ , \"not-in\" /* NOT_IN */ ];\n\n case \"array-contains\" /* ARRAY_CONTAINS */ :\n return [ \"array-contains\" /* ARRAY_CONTAINS */ , \"array-contains-any\" /* ARRAY_CONTAINS_ANY */ , \"not-in\" /* NOT_IN */ ];\n\n case \"in\" /* IN */ :\n return [ \"array-contains-any\" /* ARRAY_CONTAINS_ANY */ , \"in\" /* IN */ , \"not-in\" /* NOT_IN */ ];\n\n case \"array-contains-any\" /* ARRAY_CONTAINS_ANY */ :\n return [ \"array-contains\" /* ARRAY_CONTAINS */ , \"array-contains-any\" /* ARRAY_CONTAINS_ANY */ , \"in\" /* IN */ , \"not-in\" /* NOT_IN */ ];\n\n case \"not-in\" /* NOT_IN */ :\n return [ \"array-contains\" /* ARRAY_CONTAINS */ , \"array-contains-any\" /* ARRAY_CONTAINS_ANY */ , \"in\" /* IN */ , \"not-in\" /* NOT_IN */ , \"!=\" /* NOT_EQUAL */ ];\n\n default:\n return [];\n }\n }(e.op));\n if (null !== i) \n // Special case when it's a duplicate op to give a slightly clearer error message.\n throw i === e.op ? new D(N.INVALID_ARGUMENT, \"Invalid query. You cannot use more than one '\" + e.op.toString() + \"' filter.\") : new D(N.INVALID_ARGUMENT, \"Invalid query. You cannot use '\" + e.op.toString() + \"' filters with '\" + i.toString() + \"' filters.\");\n }(t, l), l;\n }(t._query, 0, e, t.firestore._databaseId, this.jc, this.Wc, this.Gc);\n return new Xu(t.firestore, t.converter, function(t, e) {\n var n = t.filters.concat([ e ]);\n return new Wt(t.path, t.collectionGroup, t.explicitOrderBy.slice(), n, t.limit, t.limitType, t.startAt, t.endAt);\n }(t._query, n));\n }, n;\n}(Ja), ec = /** @class */ function(e) {\n function n(t, n) {\n var r = this;\n return (r = e.call(this) || this).jc = t, r.zc = n, r.type = \"orderBy\", r;\n }\n return t(n, e), n.prototype._apply = function(t) {\n var e = function(t, e, n) {\n if (null !== t.startAt) throw new D(N.INVALID_ARGUMENT, \"Invalid query. You must not call startAt() or startAfter() before calling orderBy().\");\n if (null !== t.endAt) throw new D(N.INVALID_ARGUMENT, \"Invalid query. You must not call endAt() or endBefore() before calling orderBy().\");\n var r = new Kt(e, n);\n return function(t, e) {\n if (null === Jt(t)) {\n // This is the first order by. It must match any inequality.\n var n = Zt(t);\n null !== n && ac(t, n, e.field);\n }\n }(t, r), r;\n }(t._query, this.jc, this.zc);\n return new Xu(t.firestore, t.converter, function(t, e) {\n // TODO(dimond): validate that orderBy does not list the same key twice.\n var n = t.explicitOrderBy.concat([ e ]);\n return new Wt(t.path, t.collectionGroup, n, t.filters.slice(), t.limit, t.limitType, t.startAt, t.endAt);\n }(t._query, e));\n }, n;\n}(Ja), nc = /** @class */ function(e) {\n function n(t, n, r) {\n var i = this;\n return (i = e.call(this) || this).type = t, i.Hc = n, i.Jc = r, i;\n }\n return t(n, e), n.prototype._apply = function(t) {\n return new Xu(t.firestore, t.converter, re(t._query, this.Hc, this.Jc));\n }, n;\n}(Ja), rc = /** @class */ function(e) {\n function n(t, n, r) {\n var i = this;\n return (i = e.call(this) || this).type = t, i.Yc = n, i.Xc = r, i;\n }\n return t(n, e), n.prototype._apply = function(t) {\n var e = oc(t, this.type, this.Yc, this.Xc);\n return new Xu(t.firestore, t.converter, function(t, e) {\n return new Wt(t.path, t.collectionGroup, t.explicitOrderBy.slice(), t.filters.slice(), t.limit, t.limitType, e, t.endAt);\n }(t._query, e));\n }, n;\n}(Ja), ic = /** @class */ function(e) {\n function n(t, n, r) {\n var i = this;\n return (i = e.call(this) || this).type = t, i.Yc = n, i.Xc = r, i;\n }\n return t(n, e), n.prototype._apply = function(t) {\n var e = oc(t, this.type, this.Yc, this.Xc);\n return new Xu(t.firestore, t.converter, function(t, e) {\n return new Wt(t.path, t.collectionGroup, t.explicitOrderBy.slice(), t.filters.slice(), t.limit, t.limitType, t.startAt, e);\n }(t._query, e));\n }, n;\n}(Ja);\n\n/**\n * Creates a {@link QueryConstraint} that enforces that documents must contain the\n * specified field and that the value should satisfy the relation constraint\n * provided.\n *\n * @param fieldPath - The path to compare\n * @param opStr - The operation string (e.g \"<\", \"<=\", \"==\", \"<\",\n * \"<=\", \"!=\").\n * @param value - The value for comparison\n * @returns The created {@link Query}.\n */\n/** Helper function to create a bound from a document or fields */\nfunction oc(t, e, n, r) {\n if (n[0] = l(n[0]), n[0] instanceof ja) return function(t, e, n, r, i) {\n if (!r) throw new D(N.NOT_FOUND, \"Can't use a DocumentSnapshot that doesn't exist for \" + n + \"().\");\n // Because people expect to continue/end a query at the exact document\n // provided, we need to use the implicit sort order rather than the explicit\n // sort order, because it's guaranteed to contain the document key. That way\n // the position becomes unambiguous and the query continues/ends exactly at\n // the provided document. Without the key (by using the explicit sort\n // orders), multiple documents could match the position, yielding duplicate\n // results.\n for (var o = [], s = 0, u = ee(t); s < u.length; s++) {\n var a = u[s];\n if (a.field.isKeyField()) o.push(mt(e, r.key)); else {\n var c = r.data.field(a.field);\n if (rt(c)) throw new D(N.INVALID_ARGUMENT, 'Invalid query. You are trying to start or end a query using a document for which the field \"' + a.field + '\" is an uncommitted server timestamp. (Since the value of this field is unknown, you cannot start/end a query with it.)');\n if (null === c) {\n var h = a.field.canonicalString();\n throw new D(N.INVALID_ARGUMENT, \"Invalid query. You are trying to start or end a query using a document for which the field '\" + h + \"' (used as the orderBy) does not exist.\");\n }\n o.push(c);\n }\n }\n return new Bt(o, i);\n }(t._query, t.firestore._databaseId, e, n[0]._document, r);\n var i = Ta(t.firestore);\n return function(t, e, n, r, i, o) {\n // Use explicit order by's because it has to match the query the user made\n var s = t.explicitOrderBy;\n if (i.length > s.length) throw new D(N.INVALID_ARGUMENT, \"Too many arguments provided to \" + r + \"(). The number of arguments must be less than or equal to the number of orderBy() clauses\");\n for (var u = [], a = 0; a < i.length; a++) {\n var c = i[a];\n if (s[a].field.isKeyField()) {\n if (\"string\" != typeof c) throw new D(N.INVALID_ARGUMENT, \"Invalid query. Expected a string for document ID in \" + r + \"(), but got a \" + typeof c);\n if (!te(t) && -1 !== c.indexOf(\"/\")) throw new D(N.INVALID_ARGUMENT, \"Invalid query. When querying a collection and ordering by FieldPath.documentId(), the value passed to \" + r + \"() must be a plain document ID, but '\" + c + \"' contains a slash.\");\n var h = t.path.child(H.fromString(c));\n if (!ct.isDocumentKey(h)) throw new D(N.INVALID_ARGUMENT, \"Invalid query. When querying a collection group and ordering by FieldPath.documentId(), the value passed to \" + r + \"() must result in a valid document path, but '\" + h + \"' is not because it contains an odd number of segments.\");\n var f = new ct(h);\n u.push(mt(e, f));\n } else {\n var l = Ra(n, r, c);\n u.push(l);\n }\n }\n return new Bt(u, o);\n }(t._query, t.firestore._databaseId, i, e, n, r);\n}\n\nfunction sc(t, e, n) {\n if (\"string\" == typeof (n = l(n))) {\n if (\"\" === n) throw new D(N.INVALID_ARGUMENT, \"Invalid query. When querying with FieldPath.documentId(), you must provide a valid document ID, but it was an empty string.\");\n if (!te(e) && -1 !== n.indexOf(\"/\")) throw new D(N.INVALID_ARGUMENT, \"Invalid query. When querying a collection by FieldPath.documentId(), you must provide a plain document ID, but '\" + n + \"' contains a '/' character.\");\n var r = e.path.child(H.fromString(n));\n if (!ct.isDocumentKey(r)) throw new D(N.INVALID_ARGUMENT, \"Invalid query. When querying a collection group by FieldPath.documentId(), the value provided must result in a valid document path, but '\" + r + \"' is not because it has an odd number of segments (\" + r.length + \").\");\n return mt(t, new ct(r));\n }\n if (n instanceof $u) return mt(t, n._key);\n throw new D(N.INVALID_ARGUMENT, \"Invalid query. When querying with FieldPath.documentId(), you must provide a valid string or a DocumentReference, but it was: \" + Qu(n) + \".\");\n}\n\n/**\n * Validates that the value passed into a disjunctive filter satisfies all\n * array requirements.\n */ function uc(t, e) {\n if (!Array.isArray(t) || 0 === t.length) throw new D(N.INVALID_ARGUMENT, \"Invalid Query. A non-empty array is required for '\" + e.toString() + \"' filters.\");\n if (t.length > 10) throw new D(N.INVALID_ARGUMENT, \"Invalid Query. '\" + e.toString() + \"' filters support a maximum of 10 elements in the value array.\");\n}\n\nfunction ac(t, e, n) {\n if (!n.isEqual(e)) throw new D(N.INVALID_ARGUMENT, \"Invalid query. You have a where filter with an inequality (<, <=, !=, not-in, >, or >=) on field '\" + e.toString() + \"' and so you must also use '\" + e.toString() + \"' as your first argument to orderBy(), but your first orderBy() is on field '\" + n.toString() + \"' instead.\");\n}\n\n/**\n * @license\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * Converts Firestore's internal types to the JavaScript types that we expose\n * to the user.\n *\n * @internal\n */ var cc = /** @class */ function() {\n function t() {}\n return t.prototype.convertValue = function(t, e) {\n switch (void 0 === e && (e = \"none\"), ht(t)) {\n case 0 /* NullValue */ :\n return null;\n\n case 1 /* BooleanValue */ :\n return t.booleanValue;\n\n case 2 /* NumberValue */ :\n return et(t.integerValue || t.doubleValue);\n\n case 3 /* TimestampValue */ :\n return this.convertTimestamp(t.timestampValue);\n\n case 4 /* ServerTimestampValue */ :\n return this.convertServerTimestamp(t, e);\n\n case 5 /* StringValue */ :\n return t.stringValue;\n\n case 6 /* BlobValue */ :\n return this.convertBytes(nt(t.bytesValue));\n\n case 7 /* RefValue */ :\n return this.convertReference(t.referenceValue);\n\n case 8 /* GeoPointValue */ :\n return this.convertGeoPoint(t.geoPointValue);\n\n case 9 /* ArrayValue */ :\n return this.convertArray(t.arrayValue, e);\n\n case 10 /* ObjectValue */ :\n return this.convertObject(t.mapValue, e);\n\n default:\n throw O();\n }\n }, t.prototype.convertObject = function(t, e) {\n var n = this, r = {};\n return Q(t.fields, (function(t, i) {\n r[t] = n.convertValue(i, e);\n })), r;\n }, t.prototype.convertGeoPoint = function(t) {\n return new ya(et(t.latitude), et(t.longitude));\n }, t.prototype.convertArray = function(t, e) {\n var n = this;\n return (t.values || []).map((function(t) {\n return n.convertValue(t, e);\n }));\n }, t.prototype.convertServerTimestamp = function(t, e) {\n switch (e) {\n case \"previous\":\n var n = it(t);\n return null == n ? null : this.convertValue(n, e);\n\n case \"estimate\":\n return this.convertTimestamp(ot(t));\n\n default:\n return null;\n }\n }, t.prototype.convertTimestamp = function(t) {\n var e = tt(t);\n return new j(e.seconds, e.nanos);\n }, t.prototype.convertDocumentKey = function(t, e) {\n var n = H.fromString(t);\n P($n(n));\n var r = new Ru(n.get(1), n.get(3)), i = new ct(n.popFirst(5));\n return r.isEqual(e) || \n // TODO(b/64130202): Somehow support foreign references.\n x(\"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 (\" + e.projectId + \"/\" + e.database + \") instead.\"), \n i;\n }, t;\n}();\n\n/**\n * @license\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * Converts custom model object of type T into `DocumentData` by applying the\n * converter if it exists.\n *\n * This function is used when converting user objects to `DocumentData`\n * because we want to provide the user with a more specific error message if\n * their `set()` or fails due to invalid data originating from a `toFirestore()`\n * call.\n */ function hc(t, e, n) {\n // Cast to `any` in order to satisfy the union type constraint on\n // toFirestore().\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return t ? n && (n.merge || n.mergeFields) ? t.toFirestore(e, n) : t.toFirestore(e) : e;\n}\n\nvar fc = /** @class */ function(e) {\n function n(t) {\n var n = this;\n return (n = e.call(this) || this).firestore = t, n;\n }\n return t(n, e), n.prototype.convertBytes = function(t) {\n return new da(t);\n }, n.prototype.convertReference = function(t) {\n var e = this.convertDocumentKey(t, this.firestore._databaseId);\n return new $u(this.firestore, /* converter= */ null, e);\n }, n;\n}(cc), lc = /** @class */ function() {\n /** @hideconstructor */\n function t(t, e) {\n this._firestore = t, this._commitHandler = e, this._mutations = [], this._committed = !1, \n this._dataReader = Ta(t);\n }\n return t.prototype.set = function(t, e, n) {\n this._verifyNotCommitted();\n var r = dc(t, this._firestore), i = hc(r.converter, e, n), o = _a(this._dataReader, \"WriteBatch.set\", r._key, i, null !== r.converter, n);\n return this._mutations.push(o.toMutation(r._key, De.none())), this;\n }, t.prototype.update = function(t, e, n) {\n for (var r = [], i = 3; i < arguments.length; i++) r[i - 3] = arguments[i];\n this._verifyNotCommitted();\n var o, s = dc(t, this._firestore);\n // For Compat types, we have to \"extract\" the underlying types before\n // performing validation.\n return o = \"string\" == typeof (e = l(e)) || e instanceof la ? xa(this._dataReader, \"WriteBatch.update\", s._key, e, n, r) : Ca(this._dataReader, \"WriteBatch.update\", s._key, e), \n this._mutations.push(o.toMutation(s._key, De.exists(!0))), this;\n }, \n /**\n * Deletes the document referred to by the provided {@link DocumentReference}.\n *\n * @param documentRef - A reference to the document to be deleted.\n * @returns This `WriteBatch` instance. Used for chaining method calls.\n */\n t.prototype.delete = function(t) {\n this._verifyNotCommitted();\n var e = dc(t, this._firestore);\n return this._mutations = this._mutations.concat(new je(e._key, De.none())), this;\n }, \n /**\n * Commits all of the writes in this write batch as a single atomic unit.\n *\n * The result of these writes will only be reflected in document reads that\n * occur after the returned promise resolves. If the client is offline, the\n * write fails. If you would like to see local modifications or buffer writes\n * until the client is online, use the full Firestore SDK.\n *\n * @returns A `Promise` resolved once all of the writes in the batch have been\n * successfully written to the backend as an atomic unit (note that it won't\n * resolve while you're offline).\n */\n t.prototype.commit = function() {\n return this._verifyNotCommitted(), this._committed = !0, this._mutations.length > 0 ? this._commitHandler(this._mutations) : Promise.resolve();\n }, t.prototype._verifyNotCommitted = function() {\n if (this._committed) throw new D(N.FAILED_PRECONDITION, \"A write batch can no longer be used after commit() has been called.\");\n }, t;\n}();\n\n/**\n * @license\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * A write batch, used to perform multiple writes as a single atomic unit.\n *\n * A `WriteBatch` object can be acquired by calling {@link writeBatch}. It\n * provides methods for adding writes to the write batch. None of the writes\n * will be committed (or visible locally) until {@link WriteBatch.commit} is\n * called.\n */ function dc(t, e) {\n if ((t = l(t)).firestore !== e) throw new D(N.INVALID_ARGUMENT, \"Provided document reference is from a different Firestore instance.\");\n return t;\n}\n\n/**\n * @license\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n// TODO(mrschmidt) Consider using `BaseTransaction` as the base class in the\n// legacy SDK.\n/**\n * A reference to a transaction.\n *\n * The `Transaction` object passed to a transaction's `updateFunction` provides\n * the methods to read and write data within the transaction context. See\n * {@link runTransaction}.\n */ var pc = /** @class */ function(e) {\n function n(t) {\n var n = this;\n return (n = e.call(this) || this).firestore = t, n;\n }\n return t(n, e), n.prototype.convertBytes = function(t) {\n return new da(t);\n }, n.prototype.convertReference = function(t) {\n var e = this.convertDocumentKey(t, this.firestore._databaseId);\n return new $u(this.firestore, /* converter= */ null, e);\n }, n;\n}(cc);\n\n/**\n * Reads the document referred to by this `DocumentReference` from cache.\n * Returns an error if the document is not currently cached.\n *\n * @returns A `Promise` resolved with a `DocumentSnapshot` containing the\n * current document contents.\n */ function yc(t, e, n) {\n t = zu(t, $u);\n var r = zu(t.firestore, ua), i = hc(t.converter, e, n);\n return gc(r, [ _a(Ta(r), \"setDoc\", t._key, i, null !== t.converter, n).toMutation(t._key, De.none()) ]);\n}\n\nfunction vc(t, e, n) {\n for (var r = [], i = 3; i < arguments.length; i++) r[i - 3] = arguments[i];\n t = zu(t, $u);\n var o = zu(t.firestore, ua), s = Ta(o);\n return gc(o, [ (\"string\" == typeof (\n // For Compat types, we have to \"extract\" the underlying types before\n // performing validation.\n e = l(e)) || e instanceof la ? xa(s, \"updateDoc\", t._key, e, n, r) : Ca(s, \"updateDoc\", t._key, e)).toMutation(t._key, De.exists(!0)) ]);\n}\n\n/**\n * Deletes the document referred to by the specified `DocumentReference`.\n *\n * @param reference - A reference to the document to delete.\n * @returns A Promise resolved once the document has been successfully\n * deleted from the backend (note that it won't resolve while you're offline).\n */ function mc(t) {\n for (var e, i, o, s = [], u = 1; u < arguments.length; u++) s[u - 1] = arguments[u];\n t = l(t);\n var a = {\n includeMetadataChanges: !1\n }, c = 0;\n \"object\" != typeof s[c] || ia(s[c]) || (a = s[c], c++);\n var h, f, d, p = {\n includeMetadataChanges: a.includeMetadataChanges\n };\n if (ia(s[c])) {\n var y = s[c];\n s[c] = null === (e = y.next) || void 0 === e ? void 0 : e.bind(y), s[c + 1] = null === (i = y.error) || void 0 === i ? void 0 : i.bind(y), \n s[c + 2] = null === (o = y.complete) || void 0 === o ? void 0 : o.bind(y);\n }\n if (t instanceof $u) f = zu(t.firestore, ua), d = Yt(t._key.path), h = {\n next: function(e) {\n s[c] && s[c](wc(f, t, e));\n },\n error: s[c + 1],\n complete: s[c + 2]\n }; else {\n var v = zu(t, Xu);\n f = zu(v.firestore, ua), d = v._query;\n var m = new pc(f);\n h = {\n next: function(t) {\n s[c] && s[c](new Ha(f, m, v, t));\n },\n error: s[c + 1],\n complete: s[c + 2]\n }, Xa(t._query);\n }\n return function(t, e, i, o) {\n var s = this, u = new yu(o), a = new Is(e, u, i);\n return t.asyncQueue.enqueueAndForget((function() {\n return n(s, void 0, void 0, (function() {\n var e;\n return r(this, (function(n) {\n switch (n.label) {\n case 0:\n return e = vs, [ 4 /*yield*/ , Au(t) ];\n\n case 1:\n return [ 2 /*return*/ , e.apply(void 0, [ n.sent(), a ]) ];\n }\n }));\n }));\n })), function() {\n u.Wo(), t.asyncQueue.enqueueAndForget((function() {\n return n(s, void 0, void 0, (function() {\n var e;\n return r(this, (function(n) {\n switch (n.label) {\n case 0:\n return e = ms, [ 4 /*yield*/ , Au(t) ];\n\n case 1:\n return [ 2 /*return*/ , e.apply(void 0, [ n.sent(), a ]) ];\n }\n }));\n }));\n }));\n };\n }(aa(f), d, p, h);\n}\n\n/**\n * Locally writes `mutations` on the async queue.\n * @internal\n */ function gc(t, e) {\n return function(t, e) {\n var i = this, o = new br;\n return t.asyncQueue.enqueueAndForget((function() {\n return n(i, void 0, void 0, (function() {\n var n;\n return r(this, (function(r) {\n switch (r.label) {\n case 0:\n return n = Ps, [ 4 /*yield*/ , Du(t) ];\n\n case 1:\n return [ 2 /*return*/ , n.apply(void 0, [ r.sent(), e, o ]) ];\n }\n }));\n }));\n })), o.promise;\n }(aa(t), e);\n}\n\n/**\n * Converts a {@link ViewSnapshot} that contains the single document specified by `ref`\n * to a {@link DocumentSnapshot}.\n */ function wc(t, e, n) {\n var r = n.docs.get(e._key), i = new pc(t);\n return new za(t, i, e._key, r, new Qa(n.hasPendingWrites, n.fromCache), e.converter);\n}\n\n/**\n * @license\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * A reference to a transaction.\n *\n * The `Transaction` object passed to a transaction's `updateFunction` provides\n * the methods to read and write data within the transaction context. See\n * {@link runTransaction}.\n */ var bc = /** @class */ function(e) {\n // This class implements the same logic as the Transaction API in the Lite SDK\n // but is subclassed in order to return its own DocumentSnapshot types.\n /** @hideconstructor */\n function n(t, n) {\n var r = this;\n return (r = e.call(this, t, n) || this)._firestore = t, r;\n }\n /**\n * Reads the document referenced by the provided {@link DocumentReference}.\n *\n * @param documentRef - A reference to the document to be read.\n * @returns A `DocumentSnapshot` with the read data.\n */ return t(n, e), n.prototype.get = function(t) {\n var n = this, r = dc(t, this._firestore), i = new pc(this._firestore);\n return e.prototype.get.call(this, t).then((function(t) {\n return new za(n._firestore, i, r._key, t._document, new Qa(\n /* hasPendingWrites= */ !1, \n /* fromCache= */ !1), r.converter);\n }));\n }, n;\n}(/** @class */ function() {\n /** @hideconstructor */\n function t(t, e) {\n this._firestore = t, this._transaction = e, this._dataReader = Ta(t)\n /**\n * Reads the document referenced by the provided {@link DocumentReference}.\n *\n * @param documentRef - A reference to the document to be read.\n * @returns A `DocumentSnapshot` with the read data.\n */;\n }\n return t.prototype.get = function(t) {\n var e = this, n = dc(t, this._firestore), r = new fc(this._firestore);\n return this._transaction.lookup([ n._key ]).then((function(t) {\n if (!t || 1 !== t.length) return O();\n var i = t[0];\n if (i.isFoundDocument()) return new ja(e._firestore, r, i.key, i, n.converter);\n if (i.isNoDocument()) return new ja(e._firestore, r, n._key, null, n.converter);\n throw O();\n }));\n }, t.prototype.set = function(t, e, n) {\n var r = dc(t, this._firestore), i = hc(r.converter, e, n), o = _a(this._dataReader, \"Transaction.set\", r._key, i, null !== r.converter, n);\n return this._transaction.set(r._key, o), this;\n }, t.prototype.update = function(t, e, n) {\n for (var r = [], i = 3; i < arguments.length; i++) r[i - 3] = arguments[i];\n var o, s = dc(t, this._firestore);\n // For Compat types, we have to \"extract\" the underlying types before\n // performing validation.\n return o = \"string\" == typeof (e = l(e)) || e instanceof la ? xa(this._dataReader, \"Transaction.update\", s._key, e, n, r) : Ca(this._dataReader, \"Transaction.update\", s._key, e), \n this._transaction.update(s._key, o), this;\n }, \n /**\n * Deletes the document referred to by the provided {@link DocumentReference}.\n *\n * @param documentRef - A reference to the document to be deleted.\n * @returns This `Transaction` instance. Used for chaining method calls.\n */\n t.prototype.delete = function(t) {\n var e = dc(t, this._firestore);\n return this._transaction.delete(e._key), this;\n }, t;\n}());\n\n/**\n * Executes the given `updateFunction` and then attempts to commit the changes\n * applied within the transaction. If any document read within the transaction\n * has changed, Cloud Firestore retries the `updateFunction`. If it fails to\n * commit after 5 attempts, the transaction fails.\n *\n * The maximum number of writes allowed in a single transaction is 500.\n *\n * @param firestore - A reference to the Firestore database to run this\n * transaction against.\n * @param updateFunction - The function to execute within the transaction\n * context.\n * @returns If the transaction completed successfully or was explicitly aborted\n * (the `updateFunction` returned a failed promise), the promise returned by the\n * `updateFunction `is returned here. Otherwise, if the transaction failed, a\n * rejected promise with the corresponding failure error is returned.\n */\n/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/** Helper function to assert Uint8Array is available at runtime. */ function Ic() {\n if (\"undefined\" == typeof Uint8Array) throw new D(N.UNIMPLEMENTED, \"Uint8Arrays are not available in this environment.\");\n}\n\n/** Helper function to assert Base64 functions are available at runtime. */ function Tc() {\n if (\"undefined\" == typeof atob) throw new D(N.UNIMPLEMENTED, \"Blobs are unavailable in Firestore in this environment.\");\n}\n\n/** Immutable class holding a blob (binary data) */ var _c = /** @class */ function() {\n function t(t) {\n this._delegate = t;\n }\n return t.fromBase64String = function(e) {\n return Tc(), new t(da.fromBase64String(e));\n }, t.fromUint8Array = function(e) {\n return Ic(), new t(da.fromUint8Array(e));\n }, t.prototype.toBase64 = function() {\n return Tc(), this._delegate.toBase64();\n }, t.prototype.toUint8Array = function() {\n return Ic(), this._delegate.toUint8Array();\n }, t.prototype.isEqual = function(t) {\n return this._delegate.isEqual(t._delegate);\n }, t.prototype.toString = function() {\n return \"Blob(base64: \" + this.toBase64() + \")\";\n }, t;\n}(), Ec = /** @class */ function() {\n function t() {}\n return t.prototype.enableIndexedDbPersistence = function(t, e) {\n return function(t, e) {\n fa(t = zu(t, ua));\n var n = aa(t), r = t._freezeSettings(), i = new du;\n return ha(n, i, new fu(i, r.cacheSizeBytes, null == e ? void 0 : e.forceOwnership));\n }(t._delegate, {\n forceOwnership: e\n });\n }, t.prototype.enableMultiTabIndexedDbPersistence = function(t) {\n return function(t) {\n fa(t = zu(t, ua));\n var e = aa(t), n = t._freezeSettings(), r = new du;\n return ha(e, r, new lu(r, n.cacheSizeBytes));\n }(t._delegate);\n }, t.prototype.clearIndexedDbPersistence = function(t) {\n return function(t) {\n var e = this;\n if (t._initialized && !t._terminated) throw new D(N.FAILED_PRECONDITION, \"Persistence can only be cleared before a Firestore instance is initialized or after it is terminated.\");\n var i = new br;\n return t._queue.enqueueAndForgetEvenWhileRestricted((function() {\n return n(e, void 0, void 0, (function() {\n var e;\n return r(this, (function(o) {\n switch (o.label) {\n case 0:\n return o.trys.push([ 0, 2, , 3 ]), [ 4 /*yield*/ , function(t) {\n return n(this, void 0, void 0, (function() {\n var e;\n return r(this, (function(n) {\n switch (n.label) {\n case 0:\n return _r.yt() ? (e = t + \"main\", [ 4 /*yield*/ , _r.delete(e) ]) : [ 2 /*return*/ , Promise.resolve() ];\n\n case 1:\n return n.sent(), [ 2 /*return*/ ];\n }\n }));\n }));\n }(Oi(t._databaseId, t._persistenceKey)) ];\n\n case 1:\n return o.sent(), i.resolve(), [ 3 /*break*/ , 3 ];\n\n case 2:\n return e = o.sent(), i.reject(e), [ 3 /*break*/ , 3 ];\n\n case 3:\n return [ 2 /*return*/ ];\n }\n }));\n }));\n })), i.promise\n /**\n * Waits until all currently pending writes for the active user have been\n * acknowledged by the backend.\n *\n * The returned promise resolves immediately if there are no outstanding writes.\n * Otherwise, the promise waits for all previously issued writes (including\n * those written in a previous app session), but it does not wait for writes\n * that were added after the function is called. If you want to wait for\n * additional writes, call `waitForPendingWrites()` again.\n *\n * Any outstanding `waitForPendingWrites()` promises are rejected during user\n * changes.\n *\n * @returns A `Promise` which resolves when all currently pending writes have been\n * acknowledged by the backend.\n */;\n }(t._delegate);\n }, t;\n}(), Sc = /** @class */ function() {\n function t(t, e, n) {\n var r = this;\n this._delegate = e, this.Zc = n, this.INTERNAL = {\n delete: function() {\n return r.terminate();\n }\n }, t instanceof Ru || (this.tu = t);\n }\n return Object.defineProperty(t.prototype, \"_databaseId\", {\n get: function() {\n return this._delegate._databaseId;\n },\n enumerable: !1,\n configurable: !0\n }), t.prototype.settings = function(t) {\n var e = this._delegate._getSettings();\n t.merge || e.host === t.host || R(\"You are overriding the original host. If you did not intend to override your settings, use {merge: true}.\"), \n t.merge && \n // Remove the property from the settings once the merge is completed\n delete (t = Object.assign(Object.assign({}, e), t)).merge, this._delegate._setSettings(t);\n }, t.prototype.useEmulator = function(t, e, n) {\n void 0 === n && (n = {}), function(t, e, n, r) {\n var i;\n void 0 === r && (r = {});\n var o = (t = zu(t, Yu))._getSettings();\n if (\"firestore.googleapis.com\" !== o.host && o.host !== e && R(\"Host has been set in both settings() and useEmulator(), emulator host will be used\"), \n t._setSettings(Object.assign(Object.assign({}, o), {\n host: e + \":\" + n,\n ssl: !1\n })), r.mockUserToken) {\n var s, u;\n if (\"string\" == typeof r.mockUserToken) s = r.mockUserToken, u = fo.MOCK_USER; else {\n // Let createMockUserToken validate first (catches common mistakes like\n // invalid field \"uid\" and missing field \"sub\" / \"user_id\".)\n s = d(r.mockUserToken, null === (i = t._app) || void 0 === i ? void 0 : i.options.projectId);\n var a = r.mockUserToken.sub || r.mockUserToken.user_id;\n if (!a) throw new D(N.INVALID_ARGUMENT, \"mockUserToken must contain 'sub' or 'user_id' field!\");\n u = new fo(a);\n }\n t._credentials = new Fu(new Ou(s, u));\n }\n }(this._delegate, t, e, n);\n }, t.prototype.enableNetwork = function() {\n return function(t) {\n var e = this;\n return t.asyncQueue.enqueue((function() {\n return n(e, void 0, void 0, (function() {\n var e, n;\n return r(this, (function(r) {\n switch (r.label) {\n case 0:\n return [ 4 /*yield*/ , Eu(t) ];\n\n case 1:\n return e = r.sent(), [ 4 /*yield*/ , Nu(t) ];\n\n case 2:\n return n = r.sent(), [ 2 /*return*/ , (e.setNetworkEnabled(!0), function(t) {\n var e = F(t);\n return e.Or.delete(0 /* UserDisabled */), Vo(e);\n }(n)) ];\n }\n }));\n }));\n }));\n }\n /** Disables the network connection. Pending operations will not complete. */ (aa(zu(this._delegate, ua)));\n }, t.prototype.disableNetwork = function() {\n return function(t) {\n var e = this;\n return t.asyncQueue.enqueue((function() {\n return n(e, void 0, void 0, (function() {\n var e, i;\n return r(this, (function(o) {\n switch (o.label) {\n case 0:\n return [ 4 /*yield*/ , Eu(t) ];\n\n case 1:\n return e = o.sent(), [ 4 /*yield*/ , Nu(t) ];\n\n case 2:\n return i = o.sent(), [ 2 /*return*/ , (e.setNetworkEnabled(!1), function(t) {\n return n(this, void 0, void 0, (function() {\n var e;\n return r(this, (function(n) {\n switch (n.label) {\n case 0:\n return (e = F(t)).Or.add(0 /* UserDisabled */), [ 4 /*yield*/ , qo(e) ];\n\n case 1:\n return n.sent(), \n // Set the OnlineState to Offline so get()s return from cache, etc.\n e.Br.set(\"Offline\" /* Offline */), [ 2 /*return*/ ];\n }\n }));\n }));\n }(i)) ];\n }\n }));\n }));\n }));\n }\n /**\n * Returns a Promise that resolves when all writes that were pending at the time\n * this method was called received server acknowledgement. An acknowledgement\n * can be either acceptance or rejection.\n */ (aa(zu(this._delegate, ua)));\n }, t.prototype.enablePersistence = function(t) {\n var e = !1, n = !1;\n return t && ju(\"synchronizeTabs\", e = !!t.synchronizeTabs, \"experimentalForceOwningTab\", n = !!t.experimentalForceOwningTab), \n e ? this.Zc.enableMultiTabIndexedDbPersistence(this) : this.Zc.enableIndexedDbPersistence(this, n);\n }, t.prototype.clearPersistence = function() {\n return this.Zc.clearIndexedDbPersistence(this);\n }, t.prototype.terminate = function() {\n return this.tu && (this.tu._removeServiceInstance(\"firestore\"), this.tu._removeServiceInstance(\"firestore-exp\")), \n this._delegate._delete();\n }, t.prototype.waitForPendingWrites = function() {\n return function(t) {\n var e = this, i = new br;\n return t.asyncQueue.enqueueAndForget((function() {\n return n(e, void 0, void 0, (function() {\n var e;\n return r(this, (function(n) {\n switch (n.label) {\n case 0:\n return e = Bs, [ 4 /*yield*/ , Du(t) ];\n\n case 1:\n return [ 2 /*return*/ , e.apply(void 0, [ n.sent(), i ]) ];\n }\n }));\n }));\n })), i.promise;\n }(aa(zu(this._delegate, ua)));\n }, t.prototype.onSnapshotsInSync = function(t) {\n return function(t, e) {\n return function(t, e) {\n var i = this, o = new yu(e);\n return t.asyncQueue.enqueueAndForget((function() {\n return n(i, void 0, void 0, (function() {\n var e;\n return r(this, (function(n) {\n switch (n.label) {\n case 0:\n return e = function(t, e) {\n F(t).Gr.add(e), \n // Immediately fire an initial event, indicating all existing listeners\n // are in-sync.\n e.next();\n }, [ 4 /*yield*/ , Au(t) ];\n\n case 1:\n return [ 2 /*return*/ , e.apply(void 0, [ n.sent(), o ]) ];\n }\n }));\n }));\n })), function() {\n o.Wo(), t.asyncQueue.enqueueAndForget((function() {\n return n(i, void 0, void 0, (function() {\n var e;\n return r(this, (function(n) {\n switch (n.label) {\n case 0:\n return e = function(t, e) {\n F(t).Gr.delete(e);\n }, [ 4 /*yield*/ , Au(t) ];\n\n case 1:\n return [ 2 /*return*/ , e.apply(void 0, [ n.sent(), o ]) ];\n }\n }));\n }));\n }));\n }\n /**\n * Takes an updateFunction in which a set of reads and writes can be performed\n * atomically. In the updateFunction, the client can read and write values\n * using the supplied transaction object. After the updateFunction, all\n * changes will be committed. If a retryable error occurs (ex: some other\n * client has changed any of the data referenced), then the updateFunction\n * will be called again after a backoff. If the updateFunction still fails\n * after all retries, then the transaction will be rejected.\n *\n * The transaction object passed to the updateFunction contains methods for\n * accessing documents and collections. Unlike other datastore access, data\n * accessed with the transaction will not reflect local changes that have not\n * been committed. For this reason, it is required that all reads are\n * performed before any writes. Transactions must be performed while online.\n */;\n }(aa(t = zu(t, ua)), ia(e) ? e : {\n next: e\n });\n }(this._delegate, t);\n }, Object.defineProperty(t.prototype, \"app\", {\n get: function() {\n if (!this.tu) throw new D(N.FAILED_PRECONDITION, \"Firestore was not initialized using the Firebase SDK. 'app' is not available\");\n return this.tu;\n },\n enumerable: !1,\n configurable: !0\n }), t.prototype.collection = function(t) {\n try {\n return new Uc(this, Zu(this._delegate, t));\n } catch (t) {\n throw Rc(t, \"collection()\", \"Firestore.collection()\");\n }\n }, t.prototype.doc = function(t) {\n try {\n return new xc(this, ta(this._delegate, t));\n } catch (t) {\n throw Rc(t, \"doc()\", \"Firestore.doc()\");\n }\n }, t.prototype.collectionGroup = function(t) {\n try {\n return new Mc(this, function(t, e) {\n if (t = zu(t, Yu), Uu(\"collectionGroup\", \"collection id\", e), e.indexOf(\"/\") >= 0) throw new D(N.INVALID_ARGUMENT, \"Invalid collection ID '\" + e + \"' passed to function collectionGroup(). Collection IDs must not contain '/'.\");\n return new Xu(t, \n /* converter= */ null, \n /**\n * Creates a new Query for a collection group query that matches all documents\n * within the provided collection group.\n */\n function(t) {\n return new Wt(H.emptyPath(), t);\n }(e));\n }(this._delegate, t));\n } catch (t) {\n throw Rc(t, \"collectionGroup()\", \"Firestore.collectionGroup()\");\n }\n }, t.prototype.runTransaction = function(t) {\n var e = this;\n return function(t, e) {\n return function(t, e) {\n var i = this, o = new br;\n return t.asyncQueue.enqueueAndForget((function() {\n return n(i, void 0, void 0, (function() {\n var n;\n return r(this, (function(r) {\n switch (r.label) {\n case 0:\n return [ 4 /*yield*/ , function(t) {\n return _u(t).then((function(t) {\n return t.datastore;\n }));\n }(t) ];\n\n case 1:\n return n = r.sent(), new gu(t.asyncQueue, n, e, o).run(), [ 2 /*return*/ ];\n }\n }));\n }));\n })), o.promise;\n }(aa(t), (function(n) {\n return e(new bc(t, n));\n }));\n }(this._delegate, (function(n) {\n return t(new Ac(e, n));\n }));\n }, t.prototype.batch = function() {\n var t = this;\n return aa(this._delegate), new kc(new lc(this._delegate, (function(e) {\n return gc(t._delegate, e);\n })));\n }, t.prototype.loadBundle = function(t) {\n throw new D(N.FAILED_PRECONDITION, '\"loadBundle()\" does not exist, have you imported \"firebase/firestore/bundle\"?');\n }, t.prototype.namedQuery = function(t) {\n throw new D(N.FAILED_PRECONDITION, '\"namedQuery()\" does not exist, have you imported \"firebase/firestore/bundle\"?');\n }, t;\n}(), Nc = /** @class */ function(e) {\n function n(t) {\n var n = this;\n return (n = e.call(this) || this).firestore = t, n;\n }\n return t(n, e), n.prototype.convertBytes = function(t) {\n return new _c(new da(t));\n }, n.prototype.convertReference = function(t) {\n var e = this.convertDocumentKey(t, this.firestore._databaseId);\n return xc.eu(e, this.firestore, /* converter= */ null);\n }, n;\n}(cc);\n\n/**\n * The persistence provider included with the full Firestore SDK.\n */ function Dc(t) {\n var e;\n e = t, A.setLogLevel(e);\n}\n\n/**\n * A reference to a transaction.\n */ var Ac = /** @class */ function() {\n function t(t, e) {\n this._firestore = t, this._delegate = e, this._userDataWriter = new Nc(t);\n }\n return t.prototype.get = function(t) {\n var e = this, n = Bc(t);\n return this._delegate.get(n).then((function(t) {\n return new Pc(e._firestore, new za(e._firestore._delegate, e._userDataWriter, t._key, t._document, t.metadata, n.converter));\n }));\n }, t.prototype.set = function(t, e, n) {\n var r = Bc(t);\n return n ? (Bu(\"Transaction.set\", n), this._delegate.set(r, e, n)) : this._delegate.set(r, e), \n this;\n }, t.prototype.update = function(t, n, r) {\n for (var i, o = [], s = 3; s < arguments.length; s++) o[s - 3] = arguments[s];\n var u = Bc(t);\n return 2 === arguments.length ? this._delegate.update(u, n) : (i = this._delegate).update.apply(i, e([ u, n, r ], o)), \n this;\n }, t.prototype.delete = function(t) {\n var e = Bc(t);\n return this._delegate.delete(e), this;\n }, t;\n}(), kc = /** @class */ function() {\n function t(t) {\n this._delegate = t;\n }\n return t.prototype.set = function(t, e, n) {\n var r = Bc(t);\n return n ? (Bu(\"WriteBatch.set\", n), this._delegate.set(r, e, n)) : this._delegate.set(r, e), \n this;\n }, t.prototype.update = function(t, n, r) {\n for (var i, o = [], s = 3; s < arguments.length; s++) o[s - 3] = arguments[s];\n var u = Bc(t);\n return 2 === arguments.length ? this._delegate.update(u, n) : (i = this._delegate).update.apply(i, e([ u, n, r ], o)), \n this;\n }, t.prototype.delete = function(t) {\n var e = Bc(t);\n return this._delegate.delete(e), this;\n }, t.prototype.commit = function() {\n return this._delegate.commit();\n }, t;\n}(), Cc = /** @class */ function() {\n function t(t, e, n) {\n this._firestore = t, this._userDataWriter = e, this._delegate = n;\n }\n return t.prototype.fromFirestore = function(t, e) {\n var n = new Wa(this._firestore._delegate, this._userDataWriter, t._key, t._document, t.metadata, \n /* converter= */ null);\n return this._delegate.fromFirestore(new Fc(this._firestore, n), null != e ? e : {});\n }, t.prototype.toFirestore = function(t, e) {\n return e ? this._delegate.toFirestore(t, e) : this._delegate.toFirestore(t);\n }, \n // Use the same instance of `FirestoreDataConverter` for the given instances\n // of `Firestore` and `PublicFirestoreDataConverter` so that isEqual() will\n // compare equal for two objects created with the same converter instance.\n t.nu = function(e, n) {\n var r = t.su, i = r.get(e);\n i || (i = new WeakMap, r.set(e, i));\n var o = i.get(n);\n return o || (o = new t(e, new Nc(e), n), i.set(n, o)), o;\n }, t;\n}();\n\nCc.su = new WeakMap;\n\n/**\n * A reference to a particular document in a collection in the database.\n */\nvar xc = /** @class */ function() {\n function t(t, e) {\n this.firestore = t, this._delegate = e, this._userDataWriter = new Nc(t);\n }\n return t.iu = function(e, n, r) {\n if (e.length % 2 != 0) throw new D(N.INVALID_ARGUMENT, \"Invalid document reference. Document references must have an even number of segments, but \" + e.canonicalString() + \" has \" + e.length);\n return new t(n, new $u(n._delegate, r, new ct(e)));\n }, t.eu = function(e, n, r) {\n return new t(n, new $u(n._delegate, r, e));\n }, Object.defineProperty(t.prototype, \"id\", {\n get: function() {\n return this._delegate.id;\n },\n enumerable: !1,\n configurable: !0\n }), Object.defineProperty(t.prototype, \"parent\", {\n get: function() {\n return new Uc(this.firestore, this._delegate.parent);\n },\n enumerable: !1,\n configurable: !0\n }), Object.defineProperty(t.prototype, \"path\", {\n get: function() {\n return this._delegate.path;\n },\n enumerable: !1,\n configurable: !0\n }), t.prototype.collection = function(t) {\n try {\n return new Uc(this.firestore, Zu(this._delegate, t));\n } catch (t) {\n throw Rc(t, \"collection()\", \"DocumentReference.collection()\");\n }\n }, t.prototype.isEqual = function(t) {\n return (t = l(t)) instanceof $u && ea(this._delegate, t);\n }, t.prototype.set = function(t, e) {\n e = Bu(\"DocumentReference.set\", e);\n try {\n return e ? yc(this._delegate, t, e) : yc(this._delegate, t);\n } catch (t) {\n throw Rc(t, \"setDoc()\", \"DocumentReference.set()\");\n }\n }, t.prototype.update = function(t, n) {\n for (var r = [], i = 2; i < arguments.length; i++) r[i - 2] = arguments[i];\n try {\n return 1 === arguments.length ? vc(this._delegate, t) : vc.apply(void 0, e([ this._delegate, t, n ], r));\n } catch (t) {\n throw Rc(t, \"updateDoc()\", \"DocumentReference.update()\");\n }\n }, t.prototype.delete = function() {\n return gc(zu((t = this._delegate).firestore, ua), [ new je(t._key, De.none()) ]);\n var t;\n /**\n * Add a new document to specified `CollectionReference` with the given data,\n * assigning it a document ID automatically.\n *\n * @param reference - A reference to the collection to add this document to.\n * @param data - An Object containing the data for the new document.\n * @returns A `Promise` resolved with a `DocumentReference` pointing to the\n * newly created document after it has been written to the backend (Note that it\n * won't resolve while you're offline).\n */ }, t.prototype.onSnapshot = function() {\n for (var t = this, e = [], n = 0; n < arguments.length; n++) e[n] = arguments[n];\n var r = Lc(e), i = Oc(e, (function(e) {\n return new Pc(t.firestore, new za(t.firestore._delegate, t._userDataWriter, e._key, e._document, e.metadata, t._delegate.converter));\n }));\n return mc(this._delegate, r, i);\n }, t.prototype.get = function(t) {\n var e = this;\n return (\"cache\" === (null == t ? void 0 : t.source) ? function(t) {\n t = zu(t, $u);\n var e = zu(t.firestore, ua), i = aa(e), o = new pc(e);\n return function(t, e) {\n var i = this, o = new br;\n return t.asyncQueue.enqueueAndForget((function() {\n return n(i, void 0, void 0, (function() {\n var i;\n return r(this, (function(s) {\n switch (s.label) {\n case 0:\n return i = function(t, e, i) {\n return n(this, void 0, void 0, (function() {\n var n, o;\n return r(this, (function(r) {\n switch (r.label) {\n case 0:\n return r.trys.push([ 0, 2, , 3 ]), [ 4 /*yield*/ , function(t, e) {\n var n = F(t);\n return n.persistence.runTransaction(\"read document\", \"readonly\", (function(t) {\n return n.Mn.mn(t, e);\n }));\n }(t, e) ];\n\n case 1:\n return (o = r.sent()).isFoundDocument() ? i.resolve(o) : o.isNoDocument() ? i.resolve(null) : i.reject(new D(N.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.)\")), \n [ 3 /*break*/ , 3 ];\n\n case 2:\n return n = r.sent(), o = hs(n, \"Failed to get document '\" + e + \" from cache\"), \n i.reject(o), [ 3 /*break*/ , 3 ];\n\n case 3:\n return [ 2 /*return*/ ];\n }\n }));\n }));\n }, [ 4 /*yield*/ , Su(t) ];\n\n case 1:\n return [ 2 /*return*/ , i.apply(void 0, [ s.sent(), e, o ]) ];\n }\n }));\n }));\n })), o.promise;\n }(i, t._key).then((function(n) {\n return new za(e, o, t._key, n, new Qa(null !== n && n.hasLocalMutations, \n /* fromCache= */ !0), t.converter);\n }));\n }(this._delegate) : \"server\" === (null == t ? void 0 : t.source) ? function(t) {\n t = zu(t, $u);\n var e = zu(t.firestore, ua);\n return ku(aa(e), t._key, {\n source: \"server\"\n }).then((function(n) {\n return wc(e, t, n);\n }));\n }(this._delegate) : function(t) {\n t = zu(t, $u);\n var e = zu(t.firestore, ua);\n return ku(aa(e), t._key).then((function(n) {\n return wc(e, t, n);\n }));\n }(this._delegate)).then((function(t) {\n return new Pc(e.firestore, new za(e.firestore._delegate, e._userDataWriter, t._key, t._document, t.metadata, e._delegate.converter));\n }));\n }, t.prototype.withConverter = function(e) {\n return new t(this.firestore, e ? this._delegate.withConverter(Cc.nu(this.firestore, e)) : this._delegate.withConverter(null));\n }, t;\n}();\n\n/**\n * Replaces the function name in an error thrown by the firestore-exp API\n * with the function names used in the classic API.\n */ function Rc(t, e, n) {\n return t.message = t.message.replace(e, n), t\n /**\n * Iterates the list of arguments from an `onSnapshot` call and returns the\n * first argument that may be an `SnapshotListenOptions` object. Returns an\n * empty object if none is found.\n */;\n}\n\nfunction Lc(t) {\n for (var e = 0, n = t; e < n.length; e++) {\n var r = n[e];\n if (\"object\" == typeof r && !ia(r)) return r;\n }\n return {};\n}\n\n/**\n * Creates an observer that can be passed to the firestore-exp SDK. The\n * observer converts all observed values into the format expected by the classic\n * SDK.\n *\n * @param args - The list of arguments from an `onSnapshot` call.\n * @param wrapper - The function that converts the firestore-exp type into the\n * type used by this shim.\n */ function Oc(t, e) {\n var n, r, i;\n return {\n next: function(t) {\n i.next && i.next(e(t));\n },\n error: null === (n = (i = ia(t[0]) ? t[0] : ia(t[1]) ? t[1] : \"function\" == typeof t[0] ? {\n next: t[0],\n error: t[1],\n complete: t[2]\n } : {\n next: t[1],\n error: t[2],\n complete: t[3]\n }).error) || void 0 === n ? void 0 : n.bind(i),\n complete: null === (r = i.complete) || void 0 === r ? void 0 : r.bind(i)\n };\n}\n\nvar Pc = /** @class */ function() {\n function t(t, e) {\n this._firestore = t, this._delegate = e;\n }\n return Object.defineProperty(t.prototype, \"ref\", {\n get: function() {\n return new xc(this._firestore, this._delegate.ref);\n },\n enumerable: !1,\n configurable: !0\n }), Object.defineProperty(t.prototype, \"id\", {\n get: function() {\n return this._delegate.id;\n },\n enumerable: !1,\n configurable: !0\n }), Object.defineProperty(t.prototype, \"metadata\", {\n get: function() {\n return this._delegate.metadata;\n },\n enumerable: !1,\n configurable: !0\n }), Object.defineProperty(t.prototype, \"exists\", {\n get: function() {\n return this._delegate.exists();\n },\n enumerable: !1,\n configurable: !0\n }), t.prototype.data = function(t) {\n return this._delegate.data(t);\n }, t.prototype.get = function(t, e) {\n return this._delegate.get(t, e);\n }, t.prototype.isEqual = function(t) {\n return $a(this._delegate, t._delegate);\n }, t;\n}(), Fc = /** @class */ function(e) {\n function n() {\n return null !== e && e.apply(this, arguments) || this;\n }\n return t(n, e), n.prototype.data = function(t) {\n return this._delegate.data(t);\n }, n;\n}(Pc), Mc = /** @class */ function() {\n function t(t, e) {\n this.firestore = t, this._delegate = e, this._userDataWriter = new Nc(t);\n }\n return t.prototype.where = function(e, n, r) {\n try {\n // The \"as string\" cast is a little bit of a hack. `where` accepts the\n // FieldPath Compat type as input, but is not typed as such in order to\n // not expose this via our public typings file.\n return new t(this.firestore, Za(this._delegate, function(t, e, n) {\n var r = e, i = Ga(\"where\", t);\n return new tc(i, r, n);\n }(e, n, r)));\n } catch (e) {\n throw Rc(e, /(orderBy|where)\\(\\)/, \"Query.$1()\");\n }\n }, t.prototype.orderBy = function(e, n) {\n try {\n // The \"as string\" cast is a little bit of a hack. `orderBy` accepts the\n // FieldPath Compat type as input, but is not typed as such in order to\n // not expose this via our public typings file.\n return new t(this.firestore, Za(this._delegate, function(t, e) {\n void 0 === e && (e = \"asc\");\n var n = e, r = Ga(\"orderBy\", t);\n return new ec(r, n);\n }(e, n)));\n } catch (e) {\n throw Rc(e, /(orderBy|where)\\(\\)/, \"Query.$1()\");\n }\n }, t.prototype.limit = function(e) {\n try {\n return new t(this.firestore, Za(this._delegate, function(t) {\n return Wu(\"limit\", t), new nc(\"limit\", t, \"F\" /* First */);\n }(e)));\n } catch (e) {\n throw Rc(e, \"limit()\", \"Query.limit()\");\n }\n }, t.prototype.limitToLast = function(e) {\n try {\n return new t(this.firestore, Za(this._delegate, function(t) {\n return Wu(\"limitToLast\", t), new nc(\"limitToLast\", t, \"L\" /* Last */);\n }(e)));\n } catch (e) {\n throw Rc(e, \"limitToLast()\", \"Query.limitToLast()\");\n }\n }, t.prototype.startAt = function() {\n for (var e = [], n = 0; n < arguments.length; n++) e[n] = arguments[n];\n try {\n return new t(this.firestore, Za(this._delegate, function() {\n for (var t = [], e = 0; e < arguments.length; e++) t[e] = arguments[e];\n return new rc(\"startAt\", t, /*before=*/ !0);\n }.apply(void 0, e)));\n } catch (e) {\n throw Rc(e, \"startAt()\", \"Query.startAt()\");\n }\n }, t.prototype.startAfter = function() {\n for (var e = [], n = 0; n < arguments.length; n++) e[n] = arguments[n];\n try {\n return new t(this.firestore, Za(this._delegate, function() {\n for (var t = [], e = 0; e < arguments.length; e++) t[e] = arguments[e];\n return new rc(\"startAfter\", t, \n /*before=*/ !1);\n }.apply(void 0, e)));\n } catch (e) {\n throw Rc(e, \"startAfter()\", \"Query.startAfter()\");\n }\n }, t.prototype.endBefore = function() {\n for (var e = [], n = 0; n < arguments.length; n++) e[n] = arguments[n];\n try {\n return new t(this.firestore, Za(this._delegate, function() {\n for (var t = [], e = 0; e < arguments.length; e++) t[e] = arguments[e];\n return new ic(\"endBefore\", t, /*before=*/ !0);\n }.apply(void 0, e)));\n } catch (e) {\n throw Rc(e, \"endBefore()\", \"Query.endBefore()\");\n }\n }, t.prototype.endAt = function() {\n for (var e = [], n = 0; n < arguments.length; n++) e[n] = arguments[n];\n try {\n return new t(this.firestore, Za(this._delegate, function() {\n for (var t = [], e = 0; e < arguments.length; e++) t[e] = arguments[e];\n return new ic(\"endAt\", t, /*before=*/ !1);\n }.apply(void 0, e)));\n } catch (e) {\n throw Rc(e, \"endAt()\", \"Query.endAt()\");\n }\n }, t.prototype.isEqual = function(t) {\n return na(this._delegate, t._delegate);\n }, t.prototype.get = function(t) {\n var e = this;\n return (\"cache\" === (null == t ? void 0 : t.source) ? \n /**\n * Executes the query and returns the results as a `QuerySnapshot` from cache.\n * Returns an error if the document is not currently cached.\n *\n * @returns A `Promise` that will be resolved with the results of the query.\n */\n function(t) {\n t = zu(t, Xu);\n var e = zu(t.firestore, ua), i = aa(e), o = new pc(e);\n return function(t, e) {\n var i = this, o = new br;\n return t.asyncQueue.enqueueAndForget((function() {\n return n(i, void 0, void 0, (function() {\n var i;\n return r(this, (function(s) {\n switch (s.label) {\n case 0:\n return i = function(t, e, i) {\n return n(this, void 0, void 0, (function() {\n var n, o, s, u, a;\n return r(this, (function(r) {\n switch (r.label) {\n case 0:\n return r.trys.push([ 0, 2, , 3 ]), [ 4 /*yield*/ , Yi(t, e, \n /* usePreviousResults= */ !0) ];\n\n case 1:\n return a = r.sent(), n = new As(e, a.Bn), o = n._o(a.documents), s = n.applyChanges(o, \n /* updateLimboDocuments= */ !1), i.resolve(s.snapshot), [ 3 /*break*/ , 3 ];\n\n case 2:\n return u = r.sent(), a = hs(u, \"Failed to execute query '\" + e + \" against cache\"), \n i.reject(a), [ 3 /*break*/ , 3 ];\n\n case 3:\n return [ 2 /*return*/ ];\n }\n }));\n }));\n }, [ 4 /*yield*/ , Su(t) ];\n\n case 1:\n return [ 2 /*return*/ , i.apply(void 0, [ s.sent(), e, o ]) ];\n }\n }));\n }));\n })), o.promise;\n }(i, t._query).then((function(n) {\n return new Ha(e, o, t, n);\n }));\n }(this._delegate) : \"server\" === (null == t ? void 0 : t.source) ? function(t) {\n t = zu(t, Xu);\n var e = zu(t.firestore, ua), n = aa(e), r = new pc(e);\n return Cu(n, t._query, {\n source: \"server\"\n }).then((function(n) {\n return new Ha(e, r, t, n);\n }));\n }(this._delegate) : function(t) {\n t = zu(t, Xu);\n var e = zu(t.firestore, ua), n = aa(e), r = new pc(e);\n return Xa(t._query), Cu(n, t._query).then((function(n) {\n return new Ha(e, r, t, n);\n }));\n }(this._delegate)).then((function(t) {\n return new qc(e.firestore, new Ha(e.firestore._delegate, e._userDataWriter, e._delegate, t._snapshot));\n }));\n }, t.prototype.onSnapshot = function() {\n for (var t = this, e = [], n = 0; n < arguments.length; n++) e[n] = arguments[n];\n var r = Lc(e), i = Oc(e, (function(e) {\n return new qc(t.firestore, new Ha(t.firestore._delegate, t._userDataWriter, t._delegate, e._snapshot));\n }));\n return mc(this._delegate, r, i);\n }, t.prototype.withConverter = function(e) {\n return new t(this.firestore, e ? this._delegate.withConverter(Cc.nu(this.firestore, e)) : this._delegate.withConverter(null));\n }, t;\n}(), Vc = /** @class */ function() {\n function t(t, e) {\n this._firestore = t, this._delegate = e;\n }\n return Object.defineProperty(t.prototype, \"type\", {\n get: function() {\n return this._delegate.type;\n },\n enumerable: !1,\n configurable: !0\n }), Object.defineProperty(t.prototype, \"doc\", {\n get: function() {\n return new Fc(this._firestore, this._delegate.doc);\n },\n enumerable: !1,\n configurable: !0\n }), Object.defineProperty(t.prototype, \"oldIndex\", {\n get: function() {\n return this._delegate.oldIndex;\n },\n enumerable: !1,\n configurable: !0\n }), Object.defineProperty(t.prototype, \"newIndex\", {\n get: function() {\n return this._delegate.newIndex;\n },\n enumerable: !1,\n configurable: !0\n }), t;\n}(), qc = /** @class */ function() {\n function t(t, e) {\n this._firestore = t, this._delegate = e;\n }\n return Object.defineProperty(t.prototype, \"query\", {\n get: function() {\n return new Mc(this._firestore, this._delegate.query);\n },\n enumerable: !1,\n configurable: !0\n }), Object.defineProperty(t.prototype, \"metadata\", {\n get: function() {\n return this._delegate.metadata;\n },\n enumerable: !1,\n configurable: !0\n }), Object.defineProperty(t.prototype, \"size\", {\n get: function() {\n return this._delegate.size;\n },\n enumerable: !1,\n configurable: !0\n }), Object.defineProperty(t.prototype, \"empty\", {\n get: function() {\n return this._delegate.empty;\n },\n enumerable: !1,\n configurable: !0\n }), Object.defineProperty(t.prototype, \"docs\", {\n get: function() {\n var t = this;\n return this._delegate.docs.map((function(e) {\n return new Fc(t._firestore, e);\n }));\n },\n enumerable: !1,\n configurable: !0\n }), t.prototype.docChanges = function(t) {\n var e = this;\n return this._delegate.docChanges(t).map((function(t) {\n return new Vc(e._firestore, t);\n }));\n }, t.prototype.forEach = function(t, e) {\n var n = this;\n this._delegate.forEach((function(r) {\n t.call(e, new Fc(n._firestore, r));\n }));\n }, t.prototype.isEqual = function(t) {\n return $a(this._delegate, t._delegate);\n }, t;\n}(), Uc = /** @class */ function(e) {\n function n(t, n) {\n var r = this;\n return (r = e.call(this, t, n) || this).firestore = t, r._delegate = n, r;\n }\n return t(n, e), Object.defineProperty(n.prototype, \"id\", {\n get: function() {\n return this._delegate.id;\n },\n enumerable: !1,\n configurable: !0\n }), Object.defineProperty(n.prototype, \"path\", {\n get: function() {\n return this._delegate.path;\n },\n enumerable: !1,\n configurable: !0\n }), Object.defineProperty(n.prototype, \"parent\", {\n get: function() {\n var t = this._delegate.parent;\n return t ? new xc(this.firestore, t) : null;\n },\n enumerable: !1,\n configurable: !0\n }), n.prototype.doc = function(t) {\n try {\n return new xc(this.firestore, void 0 === t ? ta(this._delegate) : ta(this._delegate, t));\n } catch (t) {\n throw Rc(t, \"doc()\", \"CollectionReference.doc()\");\n }\n }, n.prototype.add = function(t) {\n var e = this;\n return function(t, e) {\n var n = zu(t.firestore, ua), r = ta(t), i = hc(t.converter, e);\n return gc(n, [ _a(Ta(t.firestore), \"addDoc\", r._key, i, null !== t.converter, {}).toMutation(r._key, De.exists(!1)) ]).then((function() {\n return r;\n }));\n }(this._delegate, t).then((function(t) {\n return new xc(e.firestore, t);\n }));\n }, n.prototype.isEqual = function(t) {\n return ea(this._delegate, t._delegate);\n }, n.prototype.withConverter = function(t) {\n return new n(this.firestore, t ? this._delegate.withConverter(Cc.nu(this.firestore, t)) : this._delegate.withConverter(null));\n }, n;\n}(Mc);\n\nfunction Bc(t) {\n return zu(t, $u);\n}\n\n/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n// The objects that are a part of this API are exposed to third-parties as\n// compiled javascript so we want to flag our private members with a leading\n// underscore to discourage their use.\n/**\n * A `FieldPath` refers to a field in a document. The path may consist of a\n * single field name (referring to a top-level field in the document), or a list\n * of field names (referring to a nested field in the document).\n */ var jc = /** @class */ function() {\n /**\n * Creates a FieldPath from the provided field names. If more than one field\n * name is provided, the path will point to a nested field in a document.\n *\n * @param fieldNames - A list of field names.\n */\n function t() {\n for (var t = [], n = 0; n < arguments.length; n++) t[n] = arguments[n];\n this._delegate = new (la.bind.apply(la, e([ void 0 ], t)));\n }\n return t.documentId = function() {\n /**\n * Internal Note: The backend doesn't technically support querying by\n * document ID. Instead it queries by the entire document name (full path\n * included), but in the cases we currently support documentId(), the net\n * effect is the same.\n */\n return new t($.keyField().canonicalString());\n }, t.prototype.isEqual = function(t) {\n return (t = l(t)) instanceof la && this._delegate._internalPath.isEqual(t._internalPath);\n }, t;\n}(), Kc = /** @class */ function() {\n function t(t) {\n this._delegate = t;\n }\n return t.serverTimestamp = function() {\n var e = new Na(\"serverTimestamp\");\n return e._methodName = \"FieldValue.serverTimestamp\", new t(e);\n }, t.delete = function() {\n var e = new Ea(\"deleteField\");\n return e._methodName = \"FieldValue.delete\", new t(e);\n }, t.arrayUnion = function() {\n for (var e = [], n = 0; n < arguments.length; n++) e[n] = arguments[n];\n var r = \n /**\n * Returns a special value that can be used with {@link @firebase/firestore/lite#(setDoc:1)} or {@link\n * @firebase/firestore/lite#(updateDoc:1)} that tells the server to union the given elements with any array\n * value that already exists on the server. Each specified element that doesn't\n * already exist in the array will be added to the end. If the field being\n * modified is not already an array it will be overwritten with an array\n * containing exactly the specified elements.\n *\n * @param elements - The elements to union into the array.\n * @returns The `FieldValue` sentinel for use in a call to `setDoc()` or\n * `updateDoc()`.\n */\n function() {\n for (var t = [], e = 0; e < arguments.length; e++) t[e] = arguments[e];\n // NOTE: We don't actually parse the data until it's used in set() or\n // update() since we'd need the Firestore instance to do this.\n return new Da(\"arrayUnion\", t);\n }.apply(void 0, e);\n return r._methodName = \"FieldValue.arrayUnion\", new t(r);\n }, t.arrayRemove = function() {\n for (var e = [], n = 0; n < arguments.length; n++) e[n] = arguments[n];\n var r = function() {\n for (var t = [], e = 0; e < arguments.length; e++) t[e] = arguments[e];\n // NOTE: We don't actually parse the data until it's used in set() or\n // update() since we'd need the Firestore instance to do this.\n return new Aa(\"arrayRemove\", t);\n }.apply(void 0, e);\n return r._methodName = \"FieldValue.arrayRemove\", new t(r);\n }, t.increment = function(e) {\n var n = function(t) {\n return new ka(\"increment\", t);\n }(e);\n return n._methodName = \"FieldValue.increment\", new t(n);\n }, t.prototype.isEqual = function(t) {\n return this._delegate.isEqual(t._delegate);\n }, t;\n}();\n\n/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * @license\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nfunction Gc(t) {\n /**\n * Loads a Firestore bundle into the local cache.\n *\n * @param firestore - The {@link Firestore} instance to load bundles for for.\n * @param bundleData - An object representing the bundle to be loaded. Valid objects are\n * `ArrayBuffer`, `ReadableStream` or `string`.\n *\n * @returns\n * A `LoadBundleTask` object, which notifies callers with progress updates, and completion\n * or error events. It can be used as a `Promise`.\n */\n return function(t, e) {\n var i = aa(t = zu(t, ua)), o = new oa;\n return function(t, e, i, o) {\n var s = this, u = function(t, e) {\n return function(t, e) {\n return new vu(t, e);\n }(function(t, e) {\n if (t instanceof Uint8Array) return pu(t, e);\n if (t instanceof ArrayBuffer) return pu(new Uint8Array(t), e);\n if (t instanceof ReadableStream) return t.getReader();\n throw new Error(\"Source of `toByteStreamReader` has to be a ArrayBuffer or ReadableStream\");\n }(\"string\" == typeof t ? (new TextEncoder).encode(t) : t), e);\n }(i, Co(e));\n t.asyncQueue.enqueueAndForget((function() {\n return n(s, void 0, void 0, (function() {\n var e;\n return r(this, (function(n) {\n switch (n.label) {\n case 0:\n return e = cu, [ 4 /*yield*/ , Du(t) ];\n\n case 1:\n return e.apply(void 0, [ n.sent(), u, o ]), [ 2 /*return*/ ];\n }\n }));\n }));\n }));\n }(i, t._databaseId, e, o), o;\n }(this._delegate, t);\n}\n\nfunction Qc(t) {\n var e, i, o = this;\n return (e = this._delegate, i = t, function(t, e) {\n var i = this;\n return t.asyncQueue.enqueue((function() {\n return n(i, void 0, void 0, (function() {\n var n;\n return r(this, (function(r) {\n switch (r.label) {\n case 0:\n return n = function(t, e) {\n var n = F(t);\n return n.persistence.runTransaction(\"Get named query\", \"readonly\", (function(t) {\n return n.Ke.getNamedQuery(t, e);\n }));\n }, [ 4 /*yield*/ , Su(t) ];\n\n case 1:\n return [ 2 /*return*/ , n.apply(void 0, [ r.sent(), e ]) ];\n }\n }));\n }));\n }));\n }(aa(e = zu(e, ua)), i).then((function(t) {\n return t ? new Xu(e, null, t.query) : null;\n }))).then((function(t) {\n return t ? new Mc(o, t) : null;\n }));\n}\n\nexport { ya as C, sa as E, kc as G, xc as H, Sc as K, _c as L, j as M, ua as T, Ec as U, Ac as W, Pc as Z, Qc as a, Kc as c, Mc as e, Uc as i, Dc as j, jc as o, qc as s, Fc as t, Gc as u };\n//# sourceMappingURL=prebuilt-2d830653-6eee25bb.js.map\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n// runtime helper for setting properties on components\n// in a tree-shakable way\nexports.default = (sfc, props) => {\n const target = sfc.__vccOpts || sfc;\n for (const [key, val] of props) {\n target[key] = val;\n }\n return target;\n};\n","'use strict';\nvar arrayToReversed = require('../internals/array-to-reversed');\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\nvar getTypedArrayConstructor = ArrayBufferViewCore.getTypedArrayConstructor;\n\n// `%TypedArray%.prototype.toReversed` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.toreversed\nexportTypedArrayMethod('toReversed', function toReversed() {\n return arrayToReversed(aTypedArray(this), getTypedArrayConstructor(this));\n});\n","import { onBeforeUnmount } from 'vue'\n\nimport History from '../../history.js'\n\nexport default function (showing, hide, hideOnRouteChange) {\n let historyEntry\n\n function removeFromHistory () {\n if (historyEntry !== void 0) {\n History.remove(historyEntry)\n historyEntry = void 0\n }\n }\n\n onBeforeUnmount(() => {\n showing.value === true && removeFromHistory()\n })\n\n return {\n removeFromHistory,\n\n addToHistory () {\n historyEntry = {\n condition: () => hideOnRouteChange.value === true,\n handler: hide\n }\n\n History.add(historyEntry)\n }\n }\n}\n","import { inject, watch, onBeforeUnmount, getCurrentInstance } from 'vue'\n\nimport { formKey } from '../utils/private/symbols.js'\n\nexport default function ({ validate, resetValidation, requiresQForm }) {\n const $form = inject(formKey, false)\n\n if ($form !== false) {\n const { props, proxy } = getCurrentInstance()\n\n // export public method (so it can be used in QForm)\n Object.assign(proxy, validate)\n\n watch(() => props.disable, val => {\n if (val === true) {\n typeof resetValidation === 'function' && resetValidation()\n $form.unbindComponent(proxy)\n }\n else {\n $form.bindComponent(proxy)\n }\n })\n\n // register component to parent QForm\n props.disable !== true && $form.bindComponent(proxy)\n\n onBeforeUnmount(() => {\n // unregister component\n props.disable !== true && $form.unbindComponent(proxy)\n })\n }\n else if (requiresQForm !== true) {\n console.error('Parent QForm not found on useFormChild()!')\n }\n}\n","// file referenced from docs\n\nconst\n hex = /^#[0-9a-fA-F]{3}([0-9a-fA-F]{3})?$/,\n hexa = /^#[0-9a-fA-F]{4}([0-9a-fA-F]{4})?$/,\n hexOrHexa = /^#([0-9a-fA-F]{3}|[0-9a-fA-F]{4}|[0-9a-fA-F]{6}|[0-9a-fA-F]{8})$/,\n rgb = /^rgb\\(((0|[1-9][\\d]?|1[\\d]{0,2}|2[\\d]?|2[0-4][\\d]|25[0-5]),){2}(0|[1-9][\\d]?|1[\\d]{0,2}|2[\\d]?|2[0-4][\\d]|25[0-5])\\)$/,\n rgba = /^rgba\\(((0|[1-9][\\d]?|1[\\d]{0,2}|2[\\d]?|2[0-4][\\d]|25[0-5]),){2}(0|[1-9][\\d]?|1[\\d]{0,2}|2[\\d]?|2[0-4][\\d]|25[0-5]),(0|0\\.[0-9]+[1-9]|0\\.[1-9]+|1)\\)$/\n\nexport const testPattern = {\n date: v => /^-?[\\d]+\\/[0-1]\\d\\/[0-3]\\d$/.test(v),\n time: v => /^([0-1]?\\d|2[0-3]):[0-5]\\d$/.test(v),\n fulltime: v => /^([0-1]?\\d|2[0-3]):[0-5]\\d:[0-5]\\d$/.test(v),\n timeOrFulltime: v => /^([0-1]?\\d|2[0-3]):[0-5]\\d(:[0-5]\\d)?$/.test(v),\n\n hexColor: v => hex.test(v),\n hexaColor: v => hexa.test(v),\n hexOrHexaColor: v => hexOrHexa.test(v),\n\n rgbColor: v => rgb.test(v),\n rgbaColor: v => rgba.test(v),\n rgbOrRgbaColor: v => rgb.test(v) || rgba.test(v),\n\n hexOrRgbColor: v => hex.test(v) || rgb.test(v),\n hexaOrRgbaColor: v => hexa.test(v) || rgba.test(v),\n anyColor: v => hexOrHexa.test(v) || rgb.test(v) || rgba.test(v)\n}\n\nexport default {\n testPattern\n}\n","import { ref, computed, watch, onBeforeUnmount, getCurrentInstance } from 'vue'\n\nimport useFormChild from '../use-form-child.js'\nimport { testPattern } from '../../utils/patterns.js'\n\nconst lazyRulesValues = [ true, false, 'ondemand' ]\n\nexport const useValidateProps = {\n modelValue: {},\n\n error: {\n type: Boolean,\n default: null\n },\n errorMessage: String,\n noErrorIcon: Boolean,\n\n rules: Array,\n reactiveRules: Boolean,\n lazyRules: {\n type: [ Boolean, String ],\n validator: v => lazyRulesValues.includes(v)\n }\n}\n\nexport default function (focused, innerLoading) {\n const { props, proxy } = getCurrentInstance()\n\n const innerError = ref(false)\n const innerErrorMessage = ref(null)\n const isDirtyModel = ref(null)\n\n useFormChild({ validate, resetValidation, requiresQForm: true })\n\n let validateIndex = 0, unwatchRules\n\n const hasRules = computed(() =>\n props.rules !== void 0\n && props.rules !== null\n && props.rules.length > 0\n )\n\n const hasError = computed(() =>\n props.error === true || innerError.value === true\n )\n\n const computedErrorMessage = computed(() => (\n typeof props.errorMessage === 'string' && props.errorMessage.length > 0\n ? props.errorMessage\n : innerErrorMessage.value\n ))\n\n watch(() => props.modelValue, () => {\n validateIfNeeded()\n })\n\n watch(() => props.reactiveRules, val => {\n if (val === true) {\n if (unwatchRules === void 0) {\n unwatchRules = watch(() => props.rules, () => {\n validateIfNeeded(true)\n })\n }\n }\n else if (unwatchRules !== void 0) {\n unwatchRules()\n unwatchRules = void 0\n }\n }, { immediate: true })\n\n watch(focused, val => {\n if (props.lazyRules !== 'ondemand') {\n if (val === true) {\n if (isDirtyModel.value === null) {\n isDirtyModel.value = false\n }\n }\n else if (isDirtyModel.value === false && hasRules.value === true) {\n isDirtyModel.value = true\n validate()\n }\n }\n })\n\n function resetValidation () {\n validateIndex++\n innerLoading.value = false\n isDirtyModel.value = null\n innerError.value = false\n innerErrorMessage.value = null\n }\n\n /*\n * Return value\n * - true (validation succeeded)\n * - false (validation failed)\n * - Promise (pending async validation)\n */\n function validate (val = props.modelValue) {\n if (hasRules.value !== true) {\n return true\n }\n\n validateIndex++\n\n if (innerLoading.value !== true && props.lazyRules !== true) {\n isDirtyModel.value = true\n }\n\n const update = (err, msg) => {\n if (innerError.value !== err) {\n innerError.value = err\n }\n\n const m = msg || void 0\n\n if (innerErrorMessage.value !== m) {\n innerErrorMessage.value = m\n }\n\n if (innerLoading.value !== false) {\n innerLoading.value = false\n }\n }\n\n const promises = []\n\n for (let i = 0; i < props.rules.length; i++) {\n const rule = props.rules[ i ]\n let res\n\n if (typeof rule === 'function') {\n res = rule(val)\n }\n else if (typeof rule === 'string' && testPattern[ rule ] !== void 0) {\n res = testPattern[ rule ](val)\n }\n\n if (res === false || typeof res === 'string') {\n update(true, res)\n return false\n }\n else if (res !== true && res !== void 0) {\n promises.push(res)\n }\n }\n\n if (promises.length === 0) {\n update(false)\n return true\n }\n\n if (innerLoading.value !== true) {\n innerLoading.value = true\n }\n\n const index = validateIndex\n\n return Promise.all(promises).then(\n res => {\n if (index !== validateIndex) {\n return true\n }\n\n if (res === void 0 || Array.isArray(res) === false || res.length === 0) {\n update(false)\n return true\n }\n\n const msg = res.find(r => r === false || typeof r === 'string')\n update(msg !== void 0, msg)\n return msg === void 0\n },\n e => {\n if (index === validateIndex) {\n console.error(e)\n update(true)\n return false\n }\n\n return true\n }\n )\n }\n\n function validateIfNeeded (changedRules) {\n if (\n hasRules.value === true\n && props.lazyRules !== 'ondemand'\n && (isDirtyModel.value === true || (props.lazyRules !== true && changedRules !== true))\n ) {\n validate()\n }\n }\n\n onBeforeUnmount(() => {\n unwatchRules !== void 0 && unwatchRules()\n })\n\n // expose public methods & props\n Object.assign(proxy, { resetValidation, validate })\n Object.defineProperty(proxy, 'hasError', {\n get: () => hasError.value\n })\n\n return {\n isDirtyModel,\n hasRules,\n hasError,\n computedErrorMessage,\n\n validate,\n resetValidation\n }\n}\n","import { ref, onBeforeUpdate } from 'vue'\n\nconst listenerRE = /^on[A-Z]/\n\nexport default function (attrs) {\n const acc = {\n listeners: ref({}),\n attributes: ref({})\n }\n\n function update () {\n const listeners = {}\n const attributes = {}\n\n Object.keys(attrs).forEach(key => {\n if (listenerRE.test(key) === true) {\n listeners[ key ] = attrs[ key ]\n }\n else if (key !== 'class' && key !== 'style') {\n attributes[ key ] = attrs[ key ]\n }\n })\n\n acc.listeners.value = listeners\n acc.attributes.value = attributes\n }\n\n onBeforeUpdate(update)\n\n update()\n\n return acc\n}\n","import { h, ref, computed, watch, Transition, nextTick, onBeforeUnmount, onMounted, getCurrentInstance } from 'vue'\n\nimport { isRuntimeSsrPreHydration } from '../../plugins/Platform.js'\n\nimport QIcon from '../../components/icon/QIcon.js'\nimport QSpinner from '../../components/spinner/QSpinner.js'\n\nimport useDark, { useDarkProps } from '../../composables/private/use-dark.js'\nimport useValidate, { useValidateProps } from './use-validate.js'\nimport useSplitAttrs from './use-split-attrs.js'\n\nimport { hSlot } from '../../utils/private/render.js'\nimport uid from '../../utils/uid.js'\nimport { prevent, stopAndPrevent } from '../../utils/event.js'\nimport { addFocusFn, removeFocusFn } from '../../utils/private/focus-manager.js'\n\nfunction getTargetUid (val) {\n return val === void 0 ? `f_${ uid() }` : val\n}\n\nexport function fieldValueIsFilled (val) {\n return val !== void 0\n && val !== null\n && ('' + val).length > 0\n}\n\nexport const useFieldProps = {\n ...useDarkProps,\n ...useValidateProps,\n\n label: String,\n stackLabel: Boolean,\n hint: String,\n hideHint: Boolean,\n prefix: String,\n suffix: String,\n\n labelColor: String,\n color: String,\n bgColor: String,\n\n filled: Boolean,\n outlined: Boolean,\n borderless: Boolean,\n standout: [ Boolean, String ],\n\n square: Boolean,\n\n loading: Boolean,\n\n labelSlot: Boolean,\n\n bottomSlots: Boolean,\n hideBottomSpace: Boolean,\n\n rounded: Boolean,\n dense: Boolean,\n itemAligned: Boolean,\n\n counter: Boolean,\n\n clearable: Boolean,\n clearIcon: String,\n\n disable: Boolean,\n readonly: Boolean,\n\n autofocus: Boolean,\n\n for: String,\n\n maxlength: [ Number, String ]\n}\n\nexport const useFieldEmits = [ 'update:modelValue', 'clear', 'focus', 'blur', 'popup-show', 'popup-hide' ]\n\nexport function useFieldState () {\n const { props, attrs, proxy } = getCurrentInstance()\n\n const isDark = useDark(props, proxy.$q)\n\n return {\n isDark,\n\n editable: computed(() =>\n props.disable !== true && props.readonly !== true\n ),\n\n innerLoading: ref(false),\n focused: ref(false),\n hasPopupOpen: ref(false),\n\n splitAttrs: useSplitAttrs(attrs),\n targetUid: ref(getTargetUid(props.for)),\n\n rootRef: ref(null),\n targetRef: ref(null),\n controlRef: ref(null)\n\n /**\n * user supplied additionals:\n\n * innerValue - computed\n * floatingLabel - computed\n * inputRef - computed\n\n * fieldClass - computed\n * hasShadow - computed\n\n * controlEvents - Object with fn(e)\n\n * getControl - fn\n * getInnerAppend - fn\n * getControlChild - fn\n * getShadowControl - fn\n * showPopup - fn\n */\n }\n}\n\nexport default function (state) {\n const { props, emit, slots, attrs, proxy } = getCurrentInstance()\n const { $q } = proxy\n\n let focusoutTimer\n\n if (state.hasValue === void 0) {\n state.hasValue = computed(() => fieldValueIsFilled(props.modelValue))\n }\n\n if (state.emitValue === void 0) {\n state.emitValue = value => {\n emit('update:modelValue', value)\n }\n }\n\n if (state.controlEvents === void 0) {\n state.controlEvents = {\n onFocusin: onControlFocusin,\n onFocusout: onControlFocusout\n }\n }\n\n Object.assign(state, {\n clearValue,\n onControlFocusin,\n onControlFocusout,\n focus\n })\n\n if (state.computedCounter === void 0) {\n state.computedCounter = computed(() => {\n if (props.counter !== false) {\n const len = typeof props.modelValue === 'string' || typeof props.modelValue === 'number'\n ? ('' + props.modelValue).length\n : (Array.isArray(props.modelValue) === true ? props.modelValue.length : 0)\n\n const max = props.maxlength !== void 0\n ? props.maxlength\n : props.maxValues\n\n return len + (max !== void 0 ? ' / ' + max : '')\n }\n })\n }\n\n const {\n isDirtyModel,\n hasRules,\n hasError,\n computedErrorMessage,\n resetValidation\n } = useValidate(state.focused, state.innerLoading)\n\n const floatingLabel = state.floatingLabel !== void 0\n ? computed(() => props.stackLabel === true || state.focused.value === true || state.floatingLabel.value === true)\n : computed(() => props.stackLabel === true || state.focused.value === true || state.hasValue.value === true)\n\n const shouldRenderBottom = computed(() =>\n props.bottomSlots === true\n || props.hint !== void 0\n || hasRules.value === true\n || props.counter === true\n || props.error !== null\n )\n\n const styleType = computed(() => {\n if (props.filled === true) { return 'filled' }\n if (props.outlined === true) { return 'outlined' }\n if (props.borderless === true) { return 'borderless' }\n if (props.standout) { return 'standout' }\n return 'standard'\n })\n\n const classes = computed(() =>\n `q-field row no-wrap items-start q-field--${ styleType.value }`\n + (state.fieldClass !== void 0 ? ` ${ state.fieldClass.value }` : '')\n + (props.rounded === true ? ' q-field--rounded' : '')\n + (props.square === true ? ' q-field--square' : '')\n + (floatingLabel.value === true ? ' q-field--float' : '')\n + (hasLabel.value === true ? ' q-field--labeled' : '')\n + (props.dense === true ? ' q-field--dense' : '')\n + (props.itemAligned === true ? ' q-field--item-aligned q-item-type' : '')\n + (state.isDark.value === true ? ' q-field--dark' : '')\n + (state.getControl === void 0 ? ' q-field--auto-height' : '')\n + (state.focused.value === true ? ' q-field--focused' : '')\n + (hasError.value === true ? ' q-field--error' : '')\n + (hasError.value === true || state.focused.value === true ? ' q-field--highlighted' : '')\n + (props.hideBottomSpace !== true && shouldRenderBottom.value === true ? ' q-field--with-bottom' : '')\n + (props.disable === true ? ' q-field--disabled' : (props.readonly === true ? ' q-field--readonly' : ''))\n )\n\n const contentClass = computed(() =>\n 'q-field__control relative-position row no-wrap'\n + (props.bgColor !== void 0 ? ` bg-${ props.bgColor }` : '')\n + (\n hasError.value === true\n ? ' text-negative'\n : (\n typeof props.standout === 'string' && props.standout.length > 0 && state.focused.value === true\n ? ` ${ props.standout }`\n : (props.color !== void 0 ? ` text-${ props.color }` : '')\n )\n )\n )\n\n const hasLabel = computed(() =>\n props.labelSlot === true || props.label !== void 0\n )\n\n const labelClass = computed(() =>\n 'q-field__label no-pointer-events absolute ellipsis'\n + (props.labelColor !== void 0 && hasError.value !== true ? ` text-${ props.labelColor }` : '')\n )\n\n const controlSlotScope = computed(() => ({\n id: state.targetUid.value,\n editable: state.editable.value,\n focused: state.focused.value,\n floatingLabel: floatingLabel.value,\n modelValue: props.modelValue,\n emitValue: state.emitValue\n }))\n\n const attributes = computed(() => {\n const acc = {\n for: state.targetUid.value\n }\n\n if (props.disable === true) {\n acc[ 'aria-disabled' ] = 'true'\n }\n else if (props.readonly === true) {\n acc[ 'aria-readonly' ] = 'true'\n }\n\n return acc\n })\n\n watch(() => props.for, val => {\n // don't transform targetUid into a computed\n // prop as it will break SSR\n state.targetUid.value = getTargetUid(val)\n })\n\n let focusFn\n\n function focus () {\n focusFn !== void 0 && removeFocusFn(focusFn)\n focusFn = addFocusFn(() => {\n focusFn = void 0\n const el = document.activeElement\n let target = state.targetRef !== void 0 && state.targetRef.value\n\n if (target && (el === null || el.id !== state.targetUid.value)) {\n target.hasAttribute('tabindex') === true || (target = target.querySelector('[tabindex]'))\n if (target && target !== el) {\n target.focus()\n }\n }\n })\n }\n\n function blur () {\n focusFn !== void 0 && removeFocusFn(focusFn)\n const el = document.activeElement\n if (el !== null && state.rootRef.value.contains(el)) {\n el.blur()\n }\n }\n\n function onControlFocusin (e) {\n if (state.editable.value === true && state.focused.value === false) {\n state.focused.value = true\n emit('focus', e)\n }\n }\n\n function onControlFocusout (e, then) {\n clearTimeout(focusoutTimer)\n focusoutTimer = setTimeout(() => {\n if (\n document.hasFocus() === true && (\n state.hasPopupOpen.value === true\n || (\n state.controlRef !== void 0\n && (\n state.controlRef.value === null\n || state.controlRef.value.contains(document.activeElement) !== false\n )\n )\n )\n ) {\n return\n }\n\n if (state.focused.value === true) {\n state.focused.value = false\n emit('blur', e)\n }\n\n then !== void 0 && then()\n })\n }\n\n function clearValue (e) {\n // prevent activating the field but keep focus on desktop\n stopAndPrevent(e)\n\n if ($q.platform.is.mobile !== true) {\n const el = (state.targetRef !== void 0 && state.targetRef.value) || state.rootRef.value\n el.focus()\n }\n else if (state.rootRef.value.contains(document.activeElement) === true) {\n document.activeElement.blur()\n }\n\n if (props.type === 'file') { // TODO vue3\n // do not let focus be triggered\n // as it will make the native file dialog\n // appear for another selection\n state.inputRef.value.value = null\n }\n\n emit('update:modelValue', null)\n emit('clear', props.modelValue)\n\n nextTick(() => {\n resetValidation()\n\n if (props.lazyRules !== 'ondemand' && $q.platform.is.mobile !== true) {\n isDirtyModel.value = false\n }\n })\n }\n\n function getContent () {\n const node = []\n\n slots.prepend !== void 0 && node.push(\n h('div', {\n class: 'q-field__prepend q-field__marginal row no-wrap items-center',\n key: 'prepend',\n onClick: prevent\n }, slots.prepend())\n )\n\n node.push(\n h('div', {\n class: 'q-field__control-container col relative-position row no-wrap q-anchor--skip'\n }, getControlContainer())\n )\n\n slots.append !== void 0 && node.push(\n h('div', {\n class: 'q-field__append q-field__marginal row no-wrap items-center',\n key: 'append',\n onClick: prevent\n }, slots.append())\n )\n\n hasError.value === true && props.noErrorIcon === false && node.push(\n getInnerAppendNode('error', [\n h(QIcon, { name: $q.iconSet.field.error, color: 'negative' })\n ])\n )\n\n if (props.loading === true || state.innerLoading.value === true) {\n node.push(\n getInnerAppendNode(\n 'inner-loading-append',\n slots.loading !== void 0\n ? slots.loading()\n : [ h(QSpinner, { color: props.color }) ]\n )\n )\n }\n else if (props.clearable === true && state.hasValue.value === true && state.editable.value === true) {\n node.push(\n getInnerAppendNode('inner-clearable-append', [\n h(QIcon, {\n class: 'q-field__focusable-action',\n tag: 'button',\n name: props.clearIcon || $q.iconSet.field.clear,\n tabindex: 0,\n type: 'button',\n onClick: clearValue\n })\n ])\n )\n }\n\n state.getInnerAppend !== void 0 && node.push(\n getInnerAppendNode('inner-append', state.getInnerAppend())\n )\n\n state.getControlChild !== void 0 && node.push(\n state.getControlChild()\n )\n\n return node\n }\n\n function getControlContainer () {\n const node = []\n\n props.prefix !== void 0 && props.prefix !== null && node.push(\n h('div', {\n class: 'q-field__prefix no-pointer-events row items-center'\n }, props.prefix)\n )\n\n if (state.getShadowControl !== void 0 && state.hasShadow.value === true) {\n node.push(\n state.getShadowControl()\n )\n }\n\n if (state.getControl !== void 0) {\n node.push(state.getControl())\n }\n // internal usage only:\n else if (slots.rawControl !== void 0) {\n node.push(slots.rawControl())\n }\n else if (slots.control !== void 0) {\n node.push(\n h('div', {\n ref: state.targetRef,\n class: 'q-field__native row',\n ...state.splitAttrs.attributes.value,\n 'data-autofocus': props.autofocus === true || void 0\n }, slots.control(controlSlotScope.value))\n )\n }\n\n hasLabel.value === true && node.push(\n h('div', {\n class: labelClass.value\n }, hSlot(slots.label, props.label))\n )\n\n props.suffix !== void 0 && props.suffix !== null && node.push(\n h('div', {\n class: 'q-field__suffix no-pointer-events row items-center'\n }, props.suffix)\n )\n\n return node.concat(hSlot(slots.default))\n }\n\n function getBottom () {\n let msg, key\n\n if (hasError.value === true) {\n if (computedErrorMessage.value !== null) {\n msg = [ h('div', computedErrorMessage.value) ]\n key = `q--slot-error-${ computedErrorMessage.value }`\n }\n else {\n msg = hSlot(slots.error)\n key = 'q--slot-error'\n }\n }\n else if (props.hideHint !== true || state.focused.value === true) {\n if (props.hint !== void 0) {\n msg = [ h('div', props.hint) ]\n key = `q--slot-hint-${ props.hint }`\n }\n else {\n msg = hSlot(slots.hint)\n key = 'q--slot-hint'\n }\n }\n\n const hasCounter = props.counter === true || slots.counter !== void 0\n\n if (props.hideBottomSpace === true && hasCounter === false && msg === void 0) {\n return\n }\n\n const main = h('div', {\n key,\n class: 'q-field__messages col'\n }, msg)\n\n return h('div', {\n class: 'q-field__bottom row items-start q-field__bottom--'\n + (props.hideBottomSpace !== true ? 'animated' : 'stale')\n }, [\n props.hideBottomSpace === true\n ? main\n : h(Transition, { name: 'q-transition--field-message' }, () => main),\n\n hasCounter === true\n ? h('div', {\n class: 'q-field__counter'\n }, slots.counter !== void 0 ? slots.counter() : state.computedCounter.value)\n : null\n ])\n }\n\n function getInnerAppendNode (key, content) {\n return content === null\n ? null\n : h('div', {\n key,\n class: 'q-field__append q-field__marginal row no-wrap items-center q-anchor--skip'\n }, content)\n }\n\n // expose public methods\n Object.assign(proxy, { focus, blur })\n\n onMounted(() => {\n if (isRuntimeSsrPreHydration.value === true && props.for === void 0) {\n state.targetUid.value = getTargetUid()\n }\n\n props.autofocus === true && proxy.focus()\n })\n\n onBeforeUnmount(() => {\n clearTimeout(focusoutTimer)\n })\n\n return function renderField () {\n return h('label', {\n ref: state.rootRef,\n class: state.inheritAttrs !== true\n ? [\n classes.value,\n attrs.class\n ]\n : classes.value,\n style: attrs.style,\n ...attributes.value\n }, [\n slots.before !== void 0\n ? h('div', {\n class: 'q-field__before q-field__marginal row no-wrap items-center',\n onClick: prevent\n }, slots.before())\n : null,\n\n h('div', {\n class: 'q-field__inner relative-position col self-stretch'\n }, [\n h('div', {\n ref: state.controlRef,\n class: contentClass.value,\n tabindex: -1,\n ...state.controlEvents\n }, getContent()),\n\n shouldRenderBottom.value === true\n ? getBottom()\n : null\n ]),\n\n slots.after !== void 0\n ? h('div', {\n class: 'q-field__after q-field__marginal row no-wrap items-center',\n onClick: prevent\n }, slots.after())\n : null\n ])\n }\n}\n","'use strict';\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar clearErrorStack = require('../internals/error-stack-clear');\nvar ERROR_STACK_INSTALLABLE = require('../internals/error-stack-installable');\n\n// non-standard V8\nvar captureStackTrace = Error.captureStackTrace;\n\nmodule.exports = function (error, C, stack, dropEntries) {\n if (ERROR_STACK_INSTALLABLE) {\n if (captureStackTrace) captureStackTrace(error, C);\n else createNonEnumerableProperty(error, 'stack', clearErrorStack(stack, dropEntries));\n }\n};\n","export default function (fn, limit = 250) {\n let wait = false, result\n\n return function (/* ...args */) {\n if (wait === false) {\n wait = true\n setTimeout(() => { wait = false }, limit)\n result = fn.apply(this, arguments)\n }\n\n return result\n }\n}\n","import { css } from '../utils/dom.js'\nimport { position, stop, addEvt, cleanEvt } from '../utils/event.js'\nimport { isKeyCode } from '../utils/private/key-composition.js'\nimport throttle from '../utils/throttle.js'\nimport getSSRProps from '../utils/private/noop-ssr-directive-transform.js'\n\nfunction showRipple (evt, el, ctx, forceCenter) {\n ctx.modifiers.stop === true && stop(evt)\n\n const color = ctx.modifiers.color\n let center = ctx.modifiers.center\n center = center === true || forceCenter === true\n\n const\n node = document.createElement('span'),\n innerNode = document.createElement('span'),\n pos = position(evt),\n { left, top, width, height } = el.getBoundingClientRect(),\n diameter = Math.sqrt(width * width + height * height),\n radius = diameter / 2,\n centerX = `${ (width - diameter) / 2 }px`,\n x = center ? centerX : `${ pos.left - left - radius }px`,\n centerY = `${ (height - diameter) / 2 }px`,\n y = center ? centerY : `${ pos.top - top - radius }px`\n\n innerNode.className = 'q-ripple__inner'\n css(innerNode, {\n height: `${ diameter }px`,\n width: `${ diameter }px`,\n transform: `translate3d(${ x },${ y },0) scale3d(.2,.2,1)`,\n opacity: 0\n })\n\n node.className = `q-ripple${ color ? ' text-' + color : '' }`\n node.setAttribute('dir', 'ltr')\n node.appendChild(innerNode)\n el.appendChild(node)\n\n const abort = () => {\n node.remove()\n clearTimeout(timer)\n }\n ctx.abort.push(abort)\n\n let timer = setTimeout(() => {\n innerNode.classList.add('q-ripple__inner--enter')\n innerNode.style.transform = `translate3d(${ centerX },${ centerY },0) scale3d(1,1,1)`\n innerNode.style.opacity = 0.2\n\n timer = setTimeout(() => {\n innerNode.classList.remove('q-ripple__inner--enter')\n innerNode.classList.add('q-ripple__inner--leave')\n innerNode.style.opacity = 0\n\n timer = setTimeout(() => {\n node.remove()\n ctx.abort.splice(ctx.abort.indexOf(abort), 1)\n }, 275)\n }, 250)\n }, 50)\n}\n\nfunction updateModifiers (ctx, { modifiers, value, arg, instance }) {\n const cfg = Object.assign({}, instance.$q.config.ripple, modifiers, value)\n ctx.modifiers = {\n early: cfg.early === true,\n stop: cfg.stop === true,\n center: cfg.center === true,\n color: cfg.color || arg,\n keyCodes: [].concat(cfg.keyCodes || 13)\n }\n}\n\nexport default __QUASAR_SSR_SERVER__\n ? { name: 'ripple', getSSRProps }\n : {\n name: 'ripple',\n\n beforeMount (el, binding) {\n const ctx = {\n enabled: binding.value !== false,\n modifiers: {},\n abort: [],\n\n start (evt) {\n if (\n ctx.enabled === true\n && evt.qSkipRipple !== true\n && (\n ctx.modifiers.early === true\n ? [ 'mousedown', 'touchstart' ].includes(evt.type) === true\n : evt.type === 'click'\n )\n ) {\n showRipple(evt, el, ctx, evt.qKeyEvent === true)\n }\n },\n\n keystart: throttle(evt => {\n if (\n ctx.enabled === true\n && evt.qSkipRipple !== true\n && isKeyCode(evt, ctx.modifiers.keyCodes) === true\n && evt.type === `key${ ctx.modifiers.early === true ? 'down' : 'up' }`\n ) {\n showRipple(evt, el, ctx, true)\n }\n }, 300)\n }\n\n updateModifiers(ctx, binding)\n\n el.__qripple = ctx\n\n addEvt(ctx, 'main', [\n [ el, 'mousedown', 'start', 'passive' ],\n [ el, 'touchstart', 'start', 'passive' ],\n [ el, 'click', 'start', 'passive' ],\n [ el, 'keydown', 'keystart', 'passive' ],\n [ el, 'keyup', 'keystart', 'passive' ]\n ])\n },\n\n updated (el, binding) {\n if (binding.oldValue !== binding.value) {\n const ctx = el.__qripple\n ctx.enabled = binding.value !== false\n\n if (ctx.enabled === true && Object(binding.value) === binding.value) {\n updateModifiers(ctx, binding)\n }\n }\n },\n\n beforeUnmount (el) {\n const ctx = el.__qripple\n ctx.abort.forEach(fn => { fn() })\n cleanEvt(ctx, 'main')\n delete el._qripple\n }\n }\n","'use strict';\nvar isCallable = require('../internals/is-callable');\nvar isObject = require('../internals/is-object');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\n\n// makes subclassing work correct for wrapped built-ins\nmodule.exports = function ($this, dummy, Wrapper) {\n var NewTarget, NewTargetPrototype;\n if (\n // it can work only with native `setPrototypeOf`\n setPrototypeOf &&\n // we haven't completely correct pre-ES6 way for getting `new.target`, so use this\n isCallable(NewTarget = dummy.constructor) &&\n NewTarget !== Wrapper &&\n isObject(NewTargetPrototype = NewTarget.prototype) &&\n NewTargetPrototype !== Wrapper.prototype\n ) setPrototypeOf($this, NewTargetPrototype);\n return $this;\n};\n","'use strict';\n// we can't use just `it == null` since of `document.all` special case\n// https://tc39.es/ecma262/#sec-IsHTMLDDA-internal-slot-aec\nmodule.exports = function (it) {\n return it === null || it === undefined;\n};\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar aCallable = require('../internals/a-callable');\n\nmodule.exports = function (object, key, method) {\n try {\n // eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\n return uncurryThis(aCallable(Object.getOwnPropertyDescriptor(object, key)[method]));\n } catch (error) { /* empty */ }\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar union = require('../internals/set-union');\nvar setMethodAcceptSetLike = require('../internals/set-method-accept-set-like');\n\n// `Set.prototype.union` method\n// https://tc39.es/ecma262/#sec-set.prototype.union\n$({ target: 'Set', proto: true, real: true, forced: !setMethodAcceptSetLike('union') }, {\n union: union\n});\n","'use strict';\n// eslint-disable-next-line es/no-object-getownpropertysymbols -- safe\nexports.f = Object.getOwnPropertySymbols;\n","'use strict';\nvar globalThis = require('../internals/global-this');\nvar NATIVE_ARRAY_BUFFER = require('../internals/array-buffer-basic-detection');\nvar arrayBufferByteLength = require('../internals/array-buffer-byte-length');\n\nvar DataView = globalThis.DataView;\n\nmodule.exports = function (O) {\n if (!NATIVE_ARRAY_BUFFER || arrayBufferByteLength(O) !== 0) return false;\n try {\n // eslint-disable-next-line no-new -- thrower\n new DataView(O);\n return false;\n } catch (error) {\n return true;\n }\n};\n","import { globalConfig } from './global-config.js'\n\nconst globalNodes = []\nlet target = __QUASAR_SSR_SERVER__\n ? void 0\n : document.body\n\nexport function createGlobalNode (id) {\n const el = document.createElement('div')\n\n if (id !== void 0) {\n el.id = id\n }\n\n if (globalConfig.globalNodes !== void 0) {\n const cls = globalConfig.globalNodes.class\n if (cls !== void 0) {\n el.className = cls\n }\n }\n\n target.appendChild(el)\n globalNodes.push(el)\n\n return el\n}\n\nexport function removeGlobalNode (el) {\n globalNodes.splice(globalNodes.indexOf(el), 1)\n el.remove()\n}\n\nexport function changeGlobalNodesTarget (el) {\n if (el !== target) {\n target = el\n\n globalNodes.forEach(el => {\n if (el.contains(target) === false) {\n target.appendChild(el)\n }\n })\n }\n}\n","'use strict';\n// IE8- don't enum bug keys\nmodule.exports = [\n 'constructor',\n 'hasOwnProperty',\n 'isPrototypeOf',\n 'propertyIsEnumerable',\n 'toLocaleString',\n 'toString',\n 'valueOf'\n];\n","'use strict';\nvar $ = require('../internals/export');\nvar fails = require('../internals/fails');\nvar intersection = require('../internals/set-intersection');\nvar setMethodAcceptSetLike = require('../internals/set-method-accept-set-like');\n\nvar INCORRECT = !setMethodAcceptSetLike('intersection', function (result) {\n return result.size === 2 && result.has(1) && result.has(2);\n}) || fails(function () {\n // eslint-disable-next-line es/no-array-from, es/no-set, es/no-set-prototype-intersection -- testing\n return String(Array.from(new Set([1, 2, 3]).intersection(new Set([3, 2])))) !== '3,2';\n});\n\n// `Set.prototype.intersection` method\n// https://tc39.es/ecma262/#sec-set.prototype.intersection\n$({ target: 'Set', proto: true, real: true, forced: INCORRECT }, {\n intersection: intersection\n});\n","/**\n* @vue/reactivity v3.5.13\n* (c) 2018-present Yuxi (Evan) You and Vue contributors\n* @license MIT\n**/\nimport { hasChanged, extend, isArray, isIntegerKey, isSymbol, isMap, hasOwn, isObject, makeMap, toRawType, capitalize, def, isFunction, EMPTY_OBJ, isSet, isPlainObject, NOOP, remove } from '@vue/shared';\n\nfunction warn(msg, ...args) {\n console.warn(`[Vue warn] ${msg}`, ...args);\n}\n\nlet activeEffectScope;\nclass EffectScope {\n constructor(detached = false) {\n this.detached = detached;\n /**\n * @internal\n */\n this._active = true;\n /**\n * @internal\n */\n this.effects = [];\n /**\n * @internal\n */\n this.cleanups = [];\n this._isPaused = false;\n this.parent = activeEffectScope;\n if (!detached && activeEffectScope) {\n this.index = (activeEffectScope.scopes || (activeEffectScope.scopes = [])).push(\n this\n ) - 1;\n }\n }\n get active() {\n return this._active;\n }\n pause() {\n if (this._active) {\n this._isPaused = true;\n let i, l;\n if (this.scopes) {\n for (i = 0, l = this.scopes.length; i < l; i++) {\n this.scopes[i].pause();\n }\n }\n for (i = 0, l = this.effects.length; i < l; i++) {\n this.effects[i].pause();\n }\n }\n }\n /**\n * Resumes the effect scope, including all child scopes and effects.\n */\n resume() {\n if (this._active) {\n if (this._isPaused) {\n this._isPaused = false;\n let i, l;\n if (this.scopes) {\n for (i = 0, l = this.scopes.length; i < l; i++) {\n this.scopes[i].resume();\n }\n }\n for (i = 0, l = this.effects.length; i < l; i++) {\n this.effects[i].resume();\n }\n }\n }\n }\n run(fn) {\n if (this._active) {\n const currentEffectScope = activeEffectScope;\n try {\n activeEffectScope = this;\n return fn();\n } finally {\n activeEffectScope = currentEffectScope;\n }\n } else if (!!(process.env.NODE_ENV !== \"production\")) {\n warn(`cannot run an inactive effect scope.`);\n }\n }\n /**\n * This should only be called on non-detached scopes\n * @internal\n */\n on() {\n activeEffectScope = this;\n }\n /**\n * This should only be called on non-detached scopes\n * @internal\n */\n off() {\n activeEffectScope = this.parent;\n }\n stop(fromParent) {\n if (this._active) {\n this._active = false;\n let i, l;\n for (i = 0, l = this.effects.length; i < l; i++) {\n this.effects[i].stop();\n }\n this.effects.length = 0;\n for (i = 0, l = this.cleanups.length; i < l; i++) {\n this.cleanups[i]();\n }\n this.cleanups.length = 0;\n if (this.scopes) {\n for (i = 0, l = this.scopes.length; i < l; i++) {\n this.scopes[i].stop(true);\n }\n this.scopes.length = 0;\n }\n if (!this.detached && this.parent && !fromParent) {\n const last = this.parent.scopes.pop();\n if (last && last !== this) {\n this.parent.scopes[this.index] = last;\n last.index = this.index;\n }\n }\n this.parent = void 0;\n }\n }\n}\nfunction effectScope(detached) {\n return new EffectScope(detached);\n}\nfunction getCurrentScope() {\n return activeEffectScope;\n}\nfunction onScopeDispose(fn, failSilently = false) {\n if (activeEffectScope) {\n activeEffectScope.cleanups.push(fn);\n } else if (!!(process.env.NODE_ENV !== \"production\") && !failSilently) {\n warn(\n `onScopeDispose() is called when there is no active effect scope to be associated with.`\n );\n }\n}\n\nlet activeSub;\nconst EffectFlags = {\n \"ACTIVE\": 1,\n \"1\": \"ACTIVE\",\n \"RUNNING\": 2,\n \"2\": \"RUNNING\",\n \"TRACKING\": 4,\n \"4\": \"TRACKING\",\n \"NOTIFIED\": 8,\n \"8\": \"NOTIFIED\",\n \"DIRTY\": 16,\n \"16\": \"DIRTY\",\n \"ALLOW_RECURSE\": 32,\n \"32\": \"ALLOW_RECURSE\",\n \"PAUSED\": 64,\n \"64\": \"PAUSED\"\n};\nconst pausedQueueEffects = /* @__PURE__ */ new WeakSet();\nclass ReactiveEffect {\n constructor(fn) {\n this.fn = fn;\n /**\n * @internal\n */\n this.deps = void 0;\n /**\n * @internal\n */\n this.depsTail = void 0;\n /**\n * @internal\n */\n this.flags = 1 | 4;\n /**\n * @internal\n */\n this.next = void 0;\n /**\n * @internal\n */\n this.cleanup = void 0;\n this.scheduler = void 0;\n if (activeEffectScope && activeEffectScope.active) {\n activeEffectScope.effects.push(this);\n }\n }\n pause() {\n this.flags |= 64;\n }\n resume() {\n if (this.flags & 64) {\n this.flags &= ~64;\n if (pausedQueueEffects.has(this)) {\n pausedQueueEffects.delete(this);\n this.trigger();\n }\n }\n }\n /**\n * @internal\n */\n notify() {\n if (this.flags & 2 && !(this.flags & 32)) {\n return;\n }\n if (!(this.flags & 8)) {\n batch(this);\n }\n }\n run() {\n if (!(this.flags & 1)) {\n return this.fn();\n }\n this.flags |= 2;\n cleanupEffect(this);\n prepareDeps(this);\n const prevEffect = activeSub;\n const prevShouldTrack = shouldTrack;\n activeSub = this;\n shouldTrack = true;\n try {\n return this.fn();\n } finally {\n if (!!(process.env.NODE_ENV !== \"production\") && activeSub !== this) {\n warn(\n \"Active effect was not restored correctly - this is likely a Vue internal bug.\"\n );\n }\n cleanupDeps(this);\n activeSub = prevEffect;\n shouldTrack = prevShouldTrack;\n this.flags &= ~2;\n }\n }\n stop() {\n if (this.flags & 1) {\n for (let link = this.deps; link; link = link.nextDep) {\n removeSub(link);\n }\n this.deps = this.depsTail = void 0;\n cleanupEffect(this);\n this.onStop && this.onStop();\n this.flags &= ~1;\n }\n }\n trigger() {\n if (this.flags & 64) {\n pausedQueueEffects.add(this);\n } else if (this.scheduler) {\n this.scheduler();\n } else {\n this.runIfDirty();\n }\n }\n /**\n * @internal\n */\n runIfDirty() {\n if (isDirty(this)) {\n this.run();\n }\n }\n get dirty() {\n return isDirty(this);\n }\n}\nlet batchDepth = 0;\nlet batchedSub;\nlet batchedComputed;\nfunction batch(sub, isComputed = false) {\n sub.flags |= 8;\n if (isComputed) {\n sub.next = batchedComputed;\n batchedComputed = sub;\n return;\n }\n sub.next = batchedSub;\n batchedSub = sub;\n}\nfunction startBatch() {\n batchDepth++;\n}\nfunction endBatch() {\n if (--batchDepth > 0) {\n return;\n }\n if (batchedComputed) {\n let e = batchedComputed;\n batchedComputed = void 0;\n while (e) {\n const next = e.next;\n e.next = void 0;\n e.flags &= ~8;\n e = next;\n }\n }\n let error;\n while (batchedSub) {\n let e = batchedSub;\n batchedSub = void 0;\n while (e) {\n const next = e.next;\n e.next = void 0;\n e.flags &= ~8;\n if (e.flags & 1) {\n try {\n ;\n e.trigger();\n } catch (err) {\n if (!error) error = err;\n }\n }\n e = next;\n }\n }\n if (error) throw error;\n}\nfunction prepareDeps(sub) {\n for (let link = sub.deps; link; link = link.nextDep) {\n link.version = -1;\n link.prevActiveLink = link.dep.activeLink;\n link.dep.activeLink = link;\n }\n}\nfunction cleanupDeps(sub) {\n let head;\n let tail = sub.depsTail;\n let link = tail;\n while (link) {\n const prev = link.prevDep;\n if (link.version === -1) {\n if (link === tail) tail = prev;\n removeSub(link);\n removeDep(link);\n } else {\n head = link;\n }\n link.dep.activeLink = link.prevActiveLink;\n link.prevActiveLink = void 0;\n link = prev;\n }\n sub.deps = head;\n sub.depsTail = tail;\n}\nfunction isDirty(sub) {\n for (let link = sub.deps; link; link = link.nextDep) {\n if (link.dep.version !== link.version || link.dep.computed && (refreshComputed(link.dep.computed) || link.dep.version !== link.version)) {\n return true;\n }\n }\n if (sub._dirty) {\n return true;\n }\n return false;\n}\nfunction refreshComputed(computed) {\n if (computed.flags & 4 && !(computed.flags & 16)) {\n return;\n }\n computed.flags &= ~16;\n if (computed.globalVersion === globalVersion) {\n return;\n }\n computed.globalVersion = globalVersion;\n const dep = computed.dep;\n computed.flags |= 2;\n if (dep.version > 0 && !computed.isSSR && computed.deps && !isDirty(computed)) {\n computed.flags &= ~2;\n return;\n }\n const prevSub = activeSub;\n const prevShouldTrack = shouldTrack;\n activeSub = computed;\n shouldTrack = true;\n try {\n prepareDeps(computed);\n const value = computed.fn(computed._value);\n if (dep.version === 0 || hasChanged(value, computed._value)) {\n computed._value = value;\n dep.version++;\n }\n } catch (err) {\n dep.version++;\n throw err;\n } finally {\n activeSub = prevSub;\n shouldTrack = prevShouldTrack;\n cleanupDeps(computed);\n computed.flags &= ~2;\n }\n}\nfunction removeSub(link, soft = false) {\n const { dep, prevSub, nextSub } = link;\n if (prevSub) {\n prevSub.nextSub = nextSub;\n link.prevSub = void 0;\n }\n if (nextSub) {\n nextSub.prevSub = prevSub;\n link.nextSub = void 0;\n }\n if (!!(process.env.NODE_ENV !== \"production\") && dep.subsHead === link) {\n dep.subsHead = nextSub;\n }\n if (dep.subs === link) {\n dep.subs = prevSub;\n if (!prevSub && dep.computed) {\n dep.computed.flags &= ~4;\n for (let l = dep.computed.deps; l; l = l.nextDep) {\n removeSub(l, true);\n }\n }\n }\n if (!soft && !--dep.sc && dep.map) {\n dep.map.delete(dep.key);\n }\n}\nfunction removeDep(link) {\n const { prevDep, nextDep } = link;\n if (prevDep) {\n prevDep.nextDep = nextDep;\n link.prevDep = void 0;\n }\n if (nextDep) {\n nextDep.prevDep = prevDep;\n link.nextDep = void 0;\n }\n}\nfunction effect(fn, options) {\n if (fn.effect instanceof ReactiveEffect) {\n fn = fn.effect.fn;\n }\n const e = new ReactiveEffect(fn);\n if (options) {\n extend(e, options);\n }\n try {\n e.run();\n } catch (err) {\n e.stop();\n throw err;\n }\n const runner = e.run.bind(e);\n runner.effect = e;\n return runner;\n}\nfunction stop(runner) {\n runner.effect.stop();\n}\nlet shouldTrack = true;\nconst trackStack = [];\nfunction pauseTracking() {\n trackStack.push(shouldTrack);\n shouldTrack = false;\n}\nfunction enableTracking() {\n trackStack.push(shouldTrack);\n shouldTrack = true;\n}\nfunction resetTracking() {\n const last = trackStack.pop();\n shouldTrack = last === void 0 ? true : last;\n}\nfunction onEffectCleanup(fn, failSilently = false) {\n if (activeSub instanceof ReactiveEffect) {\n activeSub.cleanup = fn;\n } else if (!!(process.env.NODE_ENV !== \"production\") && !failSilently) {\n warn(\n `onEffectCleanup() was called when there was no active effect to associate with.`\n );\n }\n}\nfunction cleanupEffect(e) {\n const { cleanup } = e;\n e.cleanup = void 0;\n if (cleanup) {\n const prevSub = activeSub;\n activeSub = void 0;\n try {\n cleanup();\n } finally {\n activeSub = prevSub;\n }\n }\n}\n\nlet globalVersion = 0;\nclass Link {\n constructor(sub, dep) {\n this.sub = sub;\n this.dep = dep;\n this.version = dep.version;\n this.nextDep = this.prevDep = this.nextSub = this.prevSub = this.prevActiveLink = void 0;\n }\n}\nclass Dep {\n constructor(computed) {\n this.computed = computed;\n this.version = 0;\n /**\n * Link between this dep and the current active effect\n */\n this.activeLink = void 0;\n /**\n * Doubly linked list representing the subscribing effects (tail)\n */\n this.subs = void 0;\n /**\n * For object property deps cleanup\n */\n this.map = void 0;\n this.key = void 0;\n /**\n * Subscriber counter\n */\n this.sc = 0;\n if (!!(process.env.NODE_ENV !== \"production\")) {\n this.subsHead = void 0;\n }\n }\n track(debugInfo) {\n if (!activeSub || !shouldTrack || activeSub === this.computed) {\n return;\n }\n let link = this.activeLink;\n if (link === void 0 || link.sub !== activeSub) {\n link = this.activeLink = new Link(activeSub, this);\n if (!activeSub.deps) {\n activeSub.deps = activeSub.depsTail = link;\n } else {\n link.prevDep = activeSub.depsTail;\n activeSub.depsTail.nextDep = link;\n activeSub.depsTail = link;\n }\n addSub(link);\n } else if (link.version === -1) {\n link.version = this.version;\n if (link.nextDep) {\n const next = link.nextDep;\n next.prevDep = link.prevDep;\n if (link.prevDep) {\n link.prevDep.nextDep = next;\n }\n link.prevDep = activeSub.depsTail;\n link.nextDep = void 0;\n activeSub.depsTail.nextDep = link;\n activeSub.depsTail = link;\n if (activeSub.deps === link) {\n activeSub.deps = next;\n }\n }\n }\n if (!!(process.env.NODE_ENV !== \"production\") && activeSub.onTrack) {\n activeSub.onTrack(\n extend(\n {\n effect: activeSub\n },\n debugInfo\n )\n );\n }\n return link;\n }\n trigger(debugInfo) {\n this.version++;\n globalVersion++;\n this.notify(debugInfo);\n }\n notify(debugInfo) {\n startBatch();\n try {\n if (!!(process.env.NODE_ENV !== \"production\")) {\n for (let head = this.subsHead; head; head = head.nextSub) {\n if (head.sub.onTrigger && !(head.sub.flags & 8)) {\n head.sub.onTrigger(\n extend(\n {\n effect: head.sub\n },\n debugInfo\n )\n );\n }\n }\n }\n for (let link = this.subs; link; link = link.prevSub) {\n if (link.sub.notify()) {\n ;\n link.sub.dep.notify();\n }\n }\n } finally {\n endBatch();\n }\n }\n}\nfunction addSub(link) {\n link.dep.sc++;\n if (link.sub.flags & 4) {\n const computed = link.dep.computed;\n if (computed && !link.dep.subs) {\n computed.flags |= 4 | 16;\n for (let l = computed.deps; l; l = l.nextDep) {\n addSub(l);\n }\n }\n const currentTail = link.dep.subs;\n if (currentTail !== link) {\n link.prevSub = currentTail;\n if (currentTail) currentTail.nextSub = link;\n }\n if (!!(process.env.NODE_ENV !== \"production\") && link.dep.subsHead === void 0) {\n link.dep.subsHead = link;\n }\n link.dep.subs = link;\n }\n}\nconst targetMap = /* @__PURE__ */ new WeakMap();\nconst ITERATE_KEY = Symbol(\n !!(process.env.NODE_ENV !== \"production\") ? \"Object iterate\" : \"\"\n);\nconst MAP_KEY_ITERATE_KEY = Symbol(\n !!(process.env.NODE_ENV !== \"production\") ? \"Map keys iterate\" : \"\"\n);\nconst ARRAY_ITERATE_KEY = Symbol(\n !!(process.env.NODE_ENV !== \"production\") ? \"Array iterate\" : \"\"\n);\nfunction track(target, type, key) {\n if (shouldTrack && activeSub) {\n let depsMap = targetMap.get(target);\n if (!depsMap) {\n targetMap.set(target, depsMap = /* @__PURE__ */ new Map());\n }\n let dep = depsMap.get(key);\n if (!dep) {\n depsMap.set(key, dep = new Dep());\n dep.map = depsMap;\n dep.key = key;\n }\n if (!!(process.env.NODE_ENV !== \"production\")) {\n dep.track({\n target,\n type,\n key\n });\n } else {\n dep.track();\n }\n }\n}\nfunction trigger(target, type, key, newValue, oldValue, oldTarget) {\n const depsMap = targetMap.get(target);\n if (!depsMap) {\n globalVersion++;\n return;\n }\n const run = (dep) => {\n if (dep) {\n if (!!(process.env.NODE_ENV !== \"production\")) {\n dep.trigger({\n target,\n type,\n key,\n newValue,\n oldValue,\n oldTarget\n });\n } else {\n dep.trigger();\n }\n }\n };\n startBatch();\n if (type === \"clear\") {\n depsMap.forEach(run);\n } else {\n const targetIsArray = isArray(target);\n const isArrayIndex = targetIsArray && isIntegerKey(key);\n if (targetIsArray && key === \"length\") {\n const newLength = Number(newValue);\n depsMap.forEach((dep, key2) => {\n if (key2 === \"length\" || key2 === ARRAY_ITERATE_KEY || !isSymbol(key2) && key2 >= newLength) {\n run(dep);\n }\n });\n } else {\n if (key !== void 0 || depsMap.has(void 0)) {\n run(depsMap.get(key));\n }\n if (isArrayIndex) {\n run(depsMap.get(ARRAY_ITERATE_KEY));\n }\n switch (type) {\n case \"add\":\n if (!targetIsArray) {\n run(depsMap.get(ITERATE_KEY));\n if (isMap(target)) {\n run(depsMap.get(MAP_KEY_ITERATE_KEY));\n }\n } else if (isArrayIndex) {\n run(depsMap.get(\"length\"));\n }\n break;\n case \"delete\":\n if (!targetIsArray) {\n run(depsMap.get(ITERATE_KEY));\n if (isMap(target)) {\n run(depsMap.get(MAP_KEY_ITERATE_KEY));\n }\n }\n break;\n case \"set\":\n if (isMap(target)) {\n run(depsMap.get(ITERATE_KEY));\n }\n break;\n }\n }\n }\n endBatch();\n}\nfunction getDepFromReactive(object, key) {\n const depMap = targetMap.get(object);\n return depMap && depMap.get(key);\n}\n\nfunction reactiveReadArray(array) {\n const raw = toRaw(array);\n if (raw === array) return raw;\n track(raw, \"iterate\", ARRAY_ITERATE_KEY);\n return isShallow(array) ? raw : raw.map(toReactive);\n}\nfunction shallowReadArray(arr) {\n track(arr = toRaw(arr), \"iterate\", ARRAY_ITERATE_KEY);\n return arr;\n}\nconst arrayInstrumentations = {\n __proto__: null,\n [Symbol.iterator]() {\n return iterator(this, Symbol.iterator, toReactive);\n },\n concat(...args) {\n return reactiveReadArray(this).concat(\n ...args.map((x) => isArray(x) ? reactiveReadArray(x) : x)\n );\n },\n entries() {\n return iterator(this, \"entries\", (value) => {\n value[1] = toReactive(value[1]);\n return value;\n });\n },\n every(fn, thisArg) {\n return apply(this, \"every\", fn, thisArg, void 0, arguments);\n },\n filter(fn, thisArg) {\n return apply(this, \"filter\", fn, thisArg, (v) => v.map(toReactive), arguments);\n },\n find(fn, thisArg) {\n return apply(this, \"find\", fn, thisArg, toReactive, arguments);\n },\n findIndex(fn, thisArg) {\n return apply(this, \"findIndex\", fn, thisArg, void 0, arguments);\n },\n findLast(fn, thisArg) {\n return apply(this, \"findLast\", fn, thisArg, toReactive, arguments);\n },\n findLastIndex(fn, thisArg) {\n return apply(this, \"findLastIndex\", fn, thisArg, void 0, arguments);\n },\n // flat, flatMap could benefit from ARRAY_ITERATE but are not straight-forward to implement\n forEach(fn, thisArg) {\n return apply(this, \"forEach\", fn, thisArg, void 0, arguments);\n },\n includes(...args) {\n return searchProxy(this, \"includes\", args);\n },\n indexOf(...args) {\n return searchProxy(this, \"indexOf\", args);\n },\n join(separator) {\n return reactiveReadArray(this).join(separator);\n },\n // keys() iterator only reads `length`, no optimisation required\n lastIndexOf(...args) {\n return searchProxy(this, \"lastIndexOf\", args);\n },\n map(fn, thisArg) {\n return apply(this, \"map\", fn, thisArg, void 0, arguments);\n },\n pop() {\n return noTracking(this, \"pop\");\n },\n push(...args) {\n return noTracking(this, \"push\", args);\n },\n reduce(fn, ...args) {\n return reduce(this, \"reduce\", fn, args);\n },\n reduceRight(fn, ...args) {\n return reduce(this, \"reduceRight\", fn, args);\n },\n shift() {\n return noTracking(this, \"shift\");\n },\n // slice could use ARRAY_ITERATE but also seems to beg for range tracking\n some(fn, thisArg) {\n return apply(this, \"some\", fn, thisArg, void 0, arguments);\n },\n splice(...args) {\n return noTracking(this, \"splice\", args);\n },\n toReversed() {\n return reactiveReadArray(this).toReversed();\n },\n toSorted(comparer) {\n return reactiveReadArray(this).toSorted(comparer);\n },\n toSpliced(...args) {\n return reactiveReadArray(this).toSpliced(...args);\n },\n unshift(...args) {\n return noTracking(this, \"unshift\", args);\n },\n values() {\n return iterator(this, \"values\", toReactive);\n }\n};\nfunction iterator(self, method, wrapValue) {\n const arr = shallowReadArray(self);\n const iter = arr[method]();\n if (arr !== self && !isShallow(self)) {\n iter._next = iter.next;\n iter.next = () => {\n const result = iter._next();\n if (result.value) {\n result.value = wrapValue(result.value);\n }\n return result;\n };\n }\n return iter;\n}\nconst arrayProto = Array.prototype;\nfunction apply(self, method, fn, thisArg, wrappedRetFn, args) {\n const arr = shallowReadArray(self);\n const needsWrap = arr !== self && !isShallow(self);\n const methodFn = arr[method];\n if (methodFn !== arrayProto[method]) {\n const result2 = methodFn.apply(self, args);\n return needsWrap ? toReactive(result2) : result2;\n }\n let wrappedFn = fn;\n if (arr !== self) {\n if (needsWrap) {\n wrappedFn = function(item, index) {\n return fn.call(this, toReactive(item), index, self);\n };\n } else if (fn.length > 2) {\n wrappedFn = function(item, index) {\n return fn.call(this, item, index, self);\n };\n }\n }\n const result = methodFn.call(arr, wrappedFn, thisArg);\n return needsWrap && wrappedRetFn ? wrappedRetFn(result) : result;\n}\nfunction reduce(self, method, fn, args) {\n const arr = shallowReadArray(self);\n let wrappedFn = fn;\n if (arr !== self) {\n if (!isShallow(self)) {\n wrappedFn = function(acc, item, index) {\n return fn.call(this, acc, toReactive(item), index, self);\n };\n } else if (fn.length > 3) {\n wrappedFn = function(acc, item, index) {\n return fn.call(this, acc, item, index, self);\n };\n }\n }\n return arr[method](wrappedFn, ...args);\n}\nfunction searchProxy(self, method, args) {\n const arr = toRaw(self);\n track(arr, \"iterate\", ARRAY_ITERATE_KEY);\n const res = arr[method](...args);\n if ((res === -1 || res === false) && isProxy(args[0])) {\n args[0] = toRaw(args[0]);\n return arr[method](...args);\n }\n return res;\n}\nfunction noTracking(self, method, args = []) {\n pauseTracking();\n startBatch();\n const res = toRaw(self)[method].apply(self, args);\n endBatch();\n resetTracking();\n return res;\n}\n\nconst isNonTrackableKeys = /* @__PURE__ */ makeMap(`__proto__,__v_isRef,__isVue`);\nconst builtInSymbols = new Set(\n /* @__PURE__ */ Object.getOwnPropertyNames(Symbol).filter((key) => key !== \"arguments\" && key !== \"caller\").map((key) => Symbol[key]).filter(isSymbol)\n);\nfunction hasOwnProperty(key) {\n if (!isSymbol(key)) key = String(key);\n const obj = toRaw(this);\n track(obj, \"has\", key);\n return obj.hasOwnProperty(key);\n}\nclass BaseReactiveHandler {\n constructor(_isReadonly = false, _isShallow = false) {\n this._isReadonly = _isReadonly;\n this._isShallow = _isShallow;\n }\n get(target, key, receiver) {\n if (key === \"__v_skip\") return target[\"__v_skip\"];\n const isReadonly2 = this._isReadonly, isShallow2 = this._isShallow;\n if (key === \"__v_isReactive\") {\n return !isReadonly2;\n } else if (key === \"__v_isReadonly\") {\n return isReadonly2;\n } else if (key === \"__v_isShallow\") {\n return isShallow2;\n } else if (key === \"__v_raw\") {\n if (receiver === (isReadonly2 ? isShallow2 ? shallowReadonlyMap : readonlyMap : isShallow2 ? shallowReactiveMap : reactiveMap).get(target) || // receiver is not the reactive proxy, but has the same prototype\n // this means the receiver is a user proxy of the reactive proxy\n Object.getPrototypeOf(target) === Object.getPrototypeOf(receiver)) {\n return target;\n }\n return;\n }\n const targetIsArray = isArray(target);\n if (!isReadonly2) {\n let fn;\n if (targetIsArray && (fn = arrayInstrumentations[key])) {\n return fn;\n }\n if (key === \"hasOwnProperty\") {\n return hasOwnProperty;\n }\n }\n const res = Reflect.get(\n target,\n key,\n // if this is a proxy wrapping a ref, return methods using the raw ref\n // as receiver so that we don't have to call `toRaw` on the ref in all\n // its class methods\n isRef(target) ? target : receiver\n );\n if (isSymbol(key) ? builtInSymbols.has(key) : isNonTrackableKeys(key)) {\n return res;\n }\n if (!isReadonly2) {\n track(target, \"get\", key);\n }\n if (isShallow2) {\n return res;\n }\n if (isRef(res)) {\n return targetIsArray && isIntegerKey(key) ? res : res.value;\n }\n if (isObject(res)) {\n return isReadonly2 ? readonly(res) : reactive(res);\n }\n return res;\n }\n}\nclass MutableReactiveHandler extends BaseReactiveHandler {\n constructor(isShallow2 = false) {\n super(false, isShallow2);\n }\n set(target, key, value, receiver) {\n let oldValue = target[key];\n if (!this._isShallow) {\n const isOldValueReadonly = isReadonly(oldValue);\n if (!isShallow(value) && !isReadonly(value)) {\n oldValue = toRaw(oldValue);\n value = toRaw(value);\n }\n if (!isArray(target) && isRef(oldValue) && !isRef(value)) {\n if (isOldValueReadonly) {\n return false;\n } else {\n oldValue.value = value;\n return true;\n }\n }\n }\n const hadKey = isArray(target) && isIntegerKey(key) ? Number(key) < target.length : hasOwn(target, key);\n const result = Reflect.set(\n target,\n key,\n value,\n isRef(target) ? target : receiver\n );\n if (target === toRaw(receiver)) {\n if (!hadKey) {\n trigger(target, \"add\", key, value);\n } else if (hasChanged(value, oldValue)) {\n trigger(target, \"set\", key, value, oldValue);\n }\n }\n return result;\n }\n deleteProperty(target, key) {\n const hadKey = hasOwn(target, key);\n const oldValue = target[key];\n const result = Reflect.deleteProperty(target, key);\n if (result && hadKey) {\n trigger(target, \"delete\", key, void 0, oldValue);\n }\n return result;\n }\n has(target, key) {\n const result = Reflect.has(target, key);\n if (!isSymbol(key) || !builtInSymbols.has(key)) {\n track(target, \"has\", key);\n }\n return result;\n }\n ownKeys(target) {\n track(\n target,\n \"iterate\",\n isArray(target) ? \"length\" : ITERATE_KEY\n );\n return Reflect.ownKeys(target);\n }\n}\nclass ReadonlyReactiveHandler extends BaseReactiveHandler {\n constructor(isShallow2 = false) {\n super(true, isShallow2);\n }\n set(target, key) {\n if (!!(process.env.NODE_ENV !== \"production\")) {\n warn(\n `Set operation on key \"${String(key)}\" failed: target is readonly.`,\n target\n );\n }\n return true;\n }\n deleteProperty(target, key) {\n if (!!(process.env.NODE_ENV !== \"production\")) {\n warn(\n `Delete operation on key \"${String(key)}\" failed: target is readonly.`,\n target\n );\n }\n return true;\n }\n}\nconst mutableHandlers = /* @__PURE__ */ new MutableReactiveHandler();\nconst readonlyHandlers = /* @__PURE__ */ new ReadonlyReactiveHandler();\nconst shallowReactiveHandlers = /* @__PURE__ */ new MutableReactiveHandler(true);\nconst shallowReadonlyHandlers = /* @__PURE__ */ new ReadonlyReactiveHandler(true);\n\nconst toShallow = (value) => value;\nconst getProto = (v) => Reflect.getPrototypeOf(v);\nfunction createIterableMethod(method, isReadonly2, isShallow2) {\n return function(...args) {\n const target = this[\"__v_raw\"];\n const rawTarget = toRaw(target);\n const targetIsMap = isMap(rawTarget);\n const isPair = method === \"entries\" || method === Symbol.iterator && targetIsMap;\n const isKeyOnly = method === \"keys\" && targetIsMap;\n const innerIterator = target[method](...args);\n const wrap = isShallow2 ? toShallow : isReadonly2 ? toReadonly : toReactive;\n !isReadonly2 && track(\n rawTarget,\n \"iterate\",\n isKeyOnly ? MAP_KEY_ITERATE_KEY : ITERATE_KEY\n );\n return {\n // iterator protocol\n next() {\n const { value, done } = innerIterator.next();\n return done ? { value, done } : {\n value: isPair ? [wrap(value[0]), wrap(value[1])] : wrap(value),\n done\n };\n },\n // iterable protocol\n [Symbol.iterator]() {\n return this;\n }\n };\n };\n}\nfunction createReadonlyMethod(type) {\n return function(...args) {\n if (!!(process.env.NODE_ENV !== \"production\")) {\n const key = args[0] ? `on key \"${args[0]}\" ` : ``;\n warn(\n `${capitalize(type)} operation ${key}failed: target is readonly.`,\n toRaw(this)\n );\n }\n return type === \"delete\" ? false : type === \"clear\" ? void 0 : this;\n };\n}\nfunction createInstrumentations(readonly, shallow) {\n const instrumentations = {\n get(key) {\n const target = this[\"__v_raw\"];\n const rawTarget = toRaw(target);\n const rawKey = toRaw(key);\n if (!readonly) {\n if (hasChanged(key, rawKey)) {\n track(rawTarget, \"get\", key);\n }\n track(rawTarget, \"get\", rawKey);\n }\n const { has } = getProto(rawTarget);\n const wrap = shallow ? toShallow : readonly ? toReadonly : toReactive;\n if (has.call(rawTarget, key)) {\n return wrap(target.get(key));\n } else if (has.call(rawTarget, rawKey)) {\n return wrap(target.get(rawKey));\n } else if (target !== rawTarget) {\n target.get(key);\n }\n },\n get size() {\n const target = this[\"__v_raw\"];\n !readonly && track(toRaw(target), \"iterate\", ITERATE_KEY);\n return Reflect.get(target, \"size\", target);\n },\n has(key) {\n const target = this[\"__v_raw\"];\n const rawTarget = toRaw(target);\n const rawKey = toRaw(key);\n if (!readonly) {\n if (hasChanged(key, rawKey)) {\n track(rawTarget, \"has\", key);\n }\n track(rawTarget, \"has\", rawKey);\n }\n return key === rawKey ? target.has(key) : target.has(key) || target.has(rawKey);\n },\n forEach(callback, thisArg) {\n const observed = this;\n const target = observed[\"__v_raw\"];\n const rawTarget = toRaw(target);\n const wrap = shallow ? toShallow : readonly ? toReadonly : toReactive;\n !readonly && track(rawTarget, \"iterate\", ITERATE_KEY);\n return target.forEach((value, key) => {\n return callback.call(thisArg, wrap(value), wrap(key), observed);\n });\n }\n };\n extend(\n instrumentations,\n readonly ? {\n add: createReadonlyMethod(\"add\"),\n set: createReadonlyMethod(\"set\"),\n delete: createReadonlyMethod(\"delete\"),\n clear: createReadonlyMethod(\"clear\")\n } : {\n add(value) {\n if (!shallow && !isShallow(value) && !isReadonly(value)) {\n value = toRaw(value);\n }\n const target = toRaw(this);\n const proto = getProto(target);\n const hadKey = proto.has.call(target, value);\n if (!hadKey) {\n target.add(value);\n trigger(target, \"add\", value, value);\n }\n return this;\n },\n set(key, value) {\n if (!shallow && !isShallow(value) && !isReadonly(value)) {\n value = toRaw(value);\n }\n const target = toRaw(this);\n const { has, get } = getProto(target);\n let hadKey = has.call(target, key);\n if (!hadKey) {\n key = toRaw(key);\n hadKey = has.call(target, key);\n } else if (!!(process.env.NODE_ENV !== \"production\")) {\n checkIdentityKeys(target, has, key);\n }\n const oldValue = get.call(target, key);\n target.set(key, value);\n if (!hadKey) {\n trigger(target, \"add\", key, value);\n } else if (hasChanged(value, oldValue)) {\n trigger(target, \"set\", key, value, oldValue);\n }\n return this;\n },\n delete(key) {\n const target = toRaw(this);\n const { has, get } = getProto(target);\n let hadKey = has.call(target, key);\n if (!hadKey) {\n key = toRaw(key);\n hadKey = has.call(target, key);\n } else if (!!(process.env.NODE_ENV !== \"production\")) {\n checkIdentityKeys(target, has, key);\n }\n const oldValue = get ? get.call(target, key) : void 0;\n const result = target.delete(key);\n if (hadKey) {\n trigger(target, \"delete\", key, void 0, oldValue);\n }\n return result;\n },\n clear() {\n const target = toRaw(this);\n const hadItems = target.size !== 0;\n const oldTarget = !!(process.env.NODE_ENV !== \"production\") ? isMap(target) ? new Map(target) : new Set(target) : void 0;\n const result = target.clear();\n if (hadItems) {\n trigger(\n target,\n \"clear\",\n void 0,\n void 0,\n oldTarget\n );\n }\n return result;\n }\n }\n );\n const iteratorMethods = [\n \"keys\",\n \"values\",\n \"entries\",\n Symbol.iterator\n ];\n iteratorMethods.forEach((method) => {\n instrumentations[method] = createIterableMethod(method, readonly, shallow);\n });\n return instrumentations;\n}\nfunction createInstrumentationGetter(isReadonly2, shallow) {\n const instrumentations = createInstrumentations(isReadonly2, shallow);\n return (target, key, receiver) => {\n if (key === \"__v_isReactive\") {\n return !isReadonly2;\n } else if (key === \"__v_isReadonly\") {\n return isReadonly2;\n } else if (key === \"__v_raw\") {\n return target;\n }\n return Reflect.get(\n hasOwn(instrumentations, key) && key in target ? instrumentations : target,\n key,\n receiver\n );\n };\n}\nconst mutableCollectionHandlers = {\n get: /* @__PURE__ */ createInstrumentationGetter(false, false)\n};\nconst shallowCollectionHandlers = {\n get: /* @__PURE__ */ createInstrumentationGetter(false, true)\n};\nconst readonlyCollectionHandlers = {\n get: /* @__PURE__ */ createInstrumentationGetter(true, false)\n};\nconst shallowReadonlyCollectionHandlers = {\n get: /* @__PURE__ */ createInstrumentationGetter(true, true)\n};\nfunction checkIdentityKeys(target, has, key) {\n const rawKey = toRaw(key);\n if (rawKey !== key && has.call(target, rawKey)) {\n const type = toRawType(target);\n warn(\n `Reactive ${type} contains both the raw and reactive versions of the same object${type === `Map` ? ` as keys` : ``}, which can lead to inconsistencies. Avoid differentiating between the raw and reactive versions of an object and only use the reactive version if possible.`\n );\n }\n}\n\nconst reactiveMap = /* @__PURE__ */ new WeakMap();\nconst shallowReactiveMap = /* @__PURE__ */ new WeakMap();\nconst readonlyMap = /* @__PURE__ */ new WeakMap();\nconst shallowReadonlyMap = /* @__PURE__ */ new WeakMap();\nfunction targetTypeMap(rawType) {\n switch (rawType) {\n case \"Object\":\n case \"Array\":\n return 1 /* COMMON */;\n case \"Map\":\n case \"Set\":\n case \"WeakMap\":\n case \"WeakSet\":\n return 2 /* COLLECTION */;\n default:\n return 0 /* INVALID */;\n }\n}\nfunction getTargetType(value) {\n return value[\"__v_skip\"] || !Object.isExtensible(value) ? 0 /* INVALID */ : targetTypeMap(toRawType(value));\n}\nfunction reactive(target) {\n if (isReadonly(target)) {\n return target;\n }\n return createReactiveObject(\n target,\n false,\n mutableHandlers,\n mutableCollectionHandlers,\n reactiveMap\n );\n}\nfunction shallowReactive(target) {\n return createReactiveObject(\n target,\n false,\n shallowReactiveHandlers,\n shallowCollectionHandlers,\n shallowReactiveMap\n );\n}\nfunction readonly(target) {\n return createReactiveObject(\n target,\n true,\n readonlyHandlers,\n readonlyCollectionHandlers,\n readonlyMap\n );\n}\nfunction shallowReadonly(target) {\n return createReactiveObject(\n target,\n true,\n shallowReadonlyHandlers,\n shallowReadonlyCollectionHandlers,\n shallowReadonlyMap\n );\n}\nfunction createReactiveObject(target, isReadonly2, baseHandlers, collectionHandlers, proxyMap) {\n if (!isObject(target)) {\n if (!!(process.env.NODE_ENV !== \"production\")) {\n warn(\n `value cannot be made ${isReadonly2 ? \"readonly\" : \"reactive\"}: ${String(\n target\n )}`\n );\n }\n return target;\n }\n if (target[\"__v_raw\"] && !(isReadonly2 && target[\"__v_isReactive\"])) {\n return target;\n }\n const existingProxy = proxyMap.get(target);\n if (existingProxy) {\n return existingProxy;\n }\n const targetType = getTargetType(target);\n if (targetType === 0 /* INVALID */) {\n return target;\n }\n const proxy = new Proxy(\n target,\n targetType === 2 /* COLLECTION */ ? collectionHandlers : baseHandlers\n );\n proxyMap.set(target, proxy);\n return proxy;\n}\nfunction isReactive(value) {\n if (isReadonly(value)) {\n return isReactive(value[\"__v_raw\"]);\n }\n return !!(value && value[\"__v_isReactive\"]);\n}\nfunction isReadonly(value) {\n return !!(value && value[\"__v_isReadonly\"]);\n}\nfunction isShallow(value) {\n return !!(value && value[\"__v_isShallow\"]);\n}\nfunction isProxy(value) {\n return value ? !!value[\"__v_raw\"] : false;\n}\nfunction toRaw(observed) {\n const raw = observed && observed[\"__v_raw\"];\n return raw ? toRaw(raw) : observed;\n}\nfunction markRaw(value) {\n if (!hasOwn(value, \"__v_skip\") && Object.isExtensible(value)) {\n def(value, \"__v_skip\", true);\n }\n return value;\n}\nconst toReactive = (value) => isObject(value) ? reactive(value) : value;\nconst toReadonly = (value) => isObject(value) ? readonly(value) : value;\n\nfunction isRef(r) {\n return r ? r[\"__v_isRef\"] === true : false;\n}\nfunction ref(value) {\n return createRef(value, false);\n}\nfunction shallowRef(value) {\n return createRef(value, true);\n}\nfunction createRef(rawValue, shallow) {\n if (isRef(rawValue)) {\n return rawValue;\n }\n return new RefImpl(rawValue, shallow);\n}\nclass RefImpl {\n constructor(value, isShallow2) {\n this.dep = new Dep();\n this[\"__v_isRef\"] = true;\n this[\"__v_isShallow\"] = false;\n this._rawValue = isShallow2 ? value : toRaw(value);\n this._value = isShallow2 ? value : toReactive(value);\n this[\"__v_isShallow\"] = isShallow2;\n }\n get value() {\n if (!!(process.env.NODE_ENV !== \"production\")) {\n this.dep.track({\n target: this,\n type: \"get\",\n key: \"value\"\n });\n } else {\n this.dep.track();\n }\n return this._value;\n }\n set value(newValue) {\n const oldValue = this._rawValue;\n const useDirectValue = this[\"__v_isShallow\"] || isShallow(newValue) || isReadonly(newValue);\n newValue = useDirectValue ? newValue : toRaw(newValue);\n if (hasChanged(newValue, oldValue)) {\n this._rawValue = newValue;\n this._value = useDirectValue ? newValue : toReactive(newValue);\n if (!!(process.env.NODE_ENV !== \"production\")) {\n this.dep.trigger({\n target: this,\n type: \"set\",\n key: \"value\",\n newValue,\n oldValue\n });\n } else {\n this.dep.trigger();\n }\n }\n }\n}\nfunction triggerRef(ref2) {\n if (ref2.dep) {\n if (!!(process.env.NODE_ENV !== \"production\")) {\n ref2.dep.trigger({\n target: ref2,\n type: \"set\",\n key: \"value\",\n newValue: ref2._value\n });\n } else {\n ref2.dep.trigger();\n }\n }\n}\nfunction unref(ref2) {\n return isRef(ref2) ? ref2.value : ref2;\n}\nfunction toValue(source) {\n return isFunction(source) ? source() : unref(source);\n}\nconst shallowUnwrapHandlers = {\n get: (target, key, receiver) => key === \"__v_raw\" ? target : unref(Reflect.get(target, key, receiver)),\n set: (target, key, value, receiver) => {\n const oldValue = target[key];\n if (isRef(oldValue) && !isRef(value)) {\n oldValue.value = value;\n return true;\n } else {\n return Reflect.set(target, key, value, receiver);\n }\n }\n};\nfunction proxyRefs(objectWithRefs) {\n return isReactive(objectWithRefs) ? objectWithRefs : new Proxy(objectWithRefs, shallowUnwrapHandlers);\n}\nclass CustomRefImpl {\n constructor(factory) {\n this[\"__v_isRef\"] = true;\n this._value = void 0;\n const dep = this.dep = new Dep();\n const { get, set } = factory(dep.track.bind(dep), dep.trigger.bind(dep));\n this._get = get;\n this._set = set;\n }\n get value() {\n return this._value = this._get();\n }\n set value(newVal) {\n this._set(newVal);\n }\n}\nfunction customRef(factory) {\n return new CustomRefImpl(factory);\n}\nfunction toRefs(object) {\n if (!!(process.env.NODE_ENV !== \"production\") && !isProxy(object)) {\n warn(`toRefs() expects a reactive object but received a plain one.`);\n }\n const ret = isArray(object) ? new Array(object.length) : {};\n for (const key in object) {\n ret[key] = propertyToRef(object, key);\n }\n return ret;\n}\nclass ObjectRefImpl {\n constructor(_object, _key, _defaultValue) {\n this._object = _object;\n this._key = _key;\n this._defaultValue = _defaultValue;\n this[\"__v_isRef\"] = true;\n this._value = void 0;\n }\n get value() {\n const val = this._object[this._key];\n return this._value = val === void 0 ? this._defaultValue : val;\n }\n set value(newVal) {\n this._object[this._key] = newVal;\n }\n get dep() {\n return getDepFromReactive(toRaw(this._object), this._key);\n }\n}\nclass GetterRefImpl {\n constructor(_getter) {\n this._getter = _getter;\n this[\"__v_isRef\"] = true;\n this[\"__v_isReadonly\"] = true;\n this._value = void 0;\n }\n get value() {\n return this._value = this._getter();\n }\n}\nfunction toRef(source, key, defaultValue) {\n if (isRef(source)) {\n return source;\n } else if (isFunction(source)) {\n return new GetterRefImpl(source);\n } else if (isObject(source) && arguments.length > 1) {\n return propertyToRef(source, key, defaultValue);\n } else {\n return ref(source);\n }\n}\nfunction propertyToRef(source, key, defaultValue) {\n const val = source[key];\n return isRef(val) ? val : new ObjectRefImpl(source, key, defaultValue);\n}\n\nclass ComputedRefImpl {\n constructor(fn, setter, isSSR) {\n this.fn = fn;\n this.setter = setter;\n /**\n * @internal\n */\n this._value = void 0;\n /**\n * @internal\n */\n this.dep = new Dep(this);\n /**\n * @internal\n */\n this.__v_isRef = true;\n // TODO isolatedDeclarations \"__v_isReadonly\"\n // A computed is also a subscriber that tracks other deps\n /**\n * @internal\n */\n this.deps = void 0;\n /**\n * @internal\n */\n this.depsTail = void 0;\n /**\n * @internal\n */\n this.flags = 16;\n /**\n * @internal\n */\n this.globalVersion = globalVersion - 1;\n /**\n * @internal\n */\n this.next = void 0;\n // for backwards compat\n this.effect = this;\n this[\"__v_isReadonly\"] = !setter;\n this.isSSR = isSSR;\n }\n /**\n * @internal\n */\n notify() {\n this.flags |= 16;\n if (!(this.flags & 8) && // avoid infinite self recursion\n activeSub !== this) {\n batch(this, true);\n return true;\n } else if (!!(process.env.NODE_ENV !== \"production\")) ;\n }\n get value() {\n const link = !!(process.env.NODE_ENV !== \"production\") ? this.dep.track({\n target: this,\n type: \"get\",\n key: \"value\"\n }) : this.dep.track();\n refreshComputed(this);\n if (link) {\n link.version = this.dep.version;\n }\n return this._value;\n }\n set value(newValue) {\n if (this.setter) {\n this.setter(newValue);\n } else if (!!(process.env.NODE_ENV !== \"production\")) {\n warn(\"Write operation failed: computed value is readonly\");\n }\n }\n}\nfunction computed(getterOrOptions, debugOptions, isSSR = false) {\n let getter;\n let setter;\n if (isFunction(getterOrOptions)) {\n getter = getterOrOptions;\n } else {\n getter = getterOrOptions.get;\n setter = getterOrOptions.set;\n }\n const cRef = new ComputedRefImpl(getter, setter, isSSR);\n if (!!(process.env.NODE_ENV !== \"production\") && debugOptions && !isSSR) {\n cRef.onTrack = debugOptions.onTrack;\n cRef.onTrigger = debugOptions.onTrigger;\n }\n return cRef;\n}\n\nconst TrackOpTypes = {\n \"GET\": \"get\",\n \"HAS\": \"has\",\n \"ITERATE\": \"iterate\"\n};\nconst TriggerOpTypes = {\n \"SET\": \"set\",\n \"ADD\": \"add\",\n \"DELETE\": \"delete\",\n \"CLEAR\": \"clear\"\n};\nconst ReactiveFlags = {\n \"SKIP\": \"__v_skip\",\n \"IS_REACTIVE\": \"__v_isReactive\",\n \"IS_READONLY\": \"__v_isReadonly\",\n \"IS_SHALLOW\": \"__v_isShallow\",\n \"RAW\": \"__v_raw\",\n \"IS_REF\": \"__v_isRef\"\n};\n\nconst WatchErrorCodes = {\n \"WATCH_GETTER\": 2,\n \"2\": \"WATCH_GETTER\",\n \"WATCH_CALLBACK\": 3,\n \"3\": \"WATCH_CALLBACK\",\n \"WATCH_CLEANUP\": 4,\n \"4\": \"WATCH_CLEANUP\"\n};\nconst INITIAL_WATCHER_VALUE = {};\nconst cleanupMap = /* @__PURE__ */ new WeakMap();\nlet activeWatcher = void 0;\nfunction getCurrentWatcher() {\n return activeWatcher;\n}\nfunction onWatcherCleanup(cleanupFn, failSilently = false, owner = activeWatcher) {\n if (owner) {\n let cleanups = cleanupMap.get(owner);\n if (!cleanups) cleanupMap.set(owner, cleanups = []);\n cleanups.push(cleanupFn);\n } else if (!!(process.env.NODE_ENV !== \"production\") && !failSilently) {\n warn(\n `onWatcherCleanup() was called when there was no active watcher to associate with.`\n );\n }\n}\nfunction watch(source, cb, options = EMPTY_OBJ) {\n const { immediate, deep, once, scheduler, augmentJob, call } = options;\n const warnInvalidSource = (s) => {\n (options.onWarn || warn)(\n `Invalid watch source: `,\n s,\n `A watch source can only be a getter/effect function, a ref, a reactive object, or an array of these types.`\n );\n };\n const reactiveGetter = (source2) => {\n if (deep) return source2;\n if (isShallow(source2) || deep === false || deep === 0)\n return traverse(source2, 1);\n return traverse(source2);\n };\n let effect;\n let getter;\n let cleanup;\n let boundCleanup;\n let forceTrigger = false;\n let isMultiSource = false;\n if (isRef(source)) {\n getter = () => source.value;\n forceTrigger = isShallow(source);\n } else if (isReactive(source)) {\n getter = () => reactiveGetter(source);\n forceTrigger = true;\n } else if (isArray(source)) {\n isMultiSource = true;\n forceTrigger = source.some((s) => isReactive(s) || isShallow(s));\n getter = () => source.map((s) => {\n if (isRef(s)) {\n return s.value;\n } else if (isReactive(s)) {\n return reactiveGetter(s);\n } else if (isFunction(s)) {\n return call ? call(s, 2) : s();\n } else {\n !!(process.env.NODE_ENV !== \"production\") && warnInvalidSource(s);\n }\n });\n } else if (isFunction(source)) {\n if (cb) {\n getter = call ? () => call(source, 2) : source;\n } else {\n getter = () => {\n if (cleanup) {\n pauseTracking();\n try {\n cleanup();\n } finally {\n resetTracking();\n }\n }\n const currentEffect = activeWatcher;\n activeWatcher = effect;\n try {\n return call ? call(source, 3, [boundCleanup]) : source(boundCleanup);\n } finally {\n activeWatcher = currentEffect;\n }\n };\n }\n } else {\n getter = NOOP;\n !!(process.env.NODE_ENV !== \"production\") && warnInvalidSource(source);\n }\n if (cb && deep) {\n const baseGetter = getter;\n const depth = deep === true ? Infinity : deep;\n getter = () => traverse(baseGetter(), depth);\n }\n const scope = getCurrentScope();\n const watchHandle = () => {\n effect.stop();\n if (scope && scope.active) {\n remove(scope.effects, effect);\n }\n };\n if (once && cb) {\n const _cb = cb;\n cb = (...args) => {\n _cb(...args);\n watchHandle();\n };\n }\n let oldValue = isMultiSource ? new Array(source.length).fill(INITIAL_WATCHER_VALUE) : INITIAL_WATCHER_VALUE;\n const job = (immediateFirstRun) => {\n if (!(effect.flags & 1) || !effect.dirty && !immediateFirstRun) {\n return;\n }\n if (cb) {\n const newValue = effect.run();\n if (deep || forceTrigger || (isMultiSource ? newValue.some((v, i) => hasChanged(v, oldValue[i])) : hasChanged(newValue, oldValue))) {\n if (cleanup) {\n cleanup();\n }\n const currentWatcher = activeWatcher;\n activeWatcher = effect;\n try {\n const args = [\n newValue,\n // pass undefined as the old value when it's changed for the first time\n oldValue === INITIAL_WATCHER_VALUE ? void 0 : isMultiSource && oldValue[0] === INITIAL_WATCHER_VALUE ? [] : oldValue,\n boundCleanup\n ];\n call ? call(cb, 3, args) : (\n // @ts-expect-error\n cb(...args)\n );\n oldValue = newValue;\n } finally {\n activeWatcher = currentWatcher;\n }\n }\n } else {\n effect.run();\n }\n };\n if (augmentJob) {\n augmentJob(job);\n }\n effect = new ReactiveEffect(getter);\n effect.scheduler = scheduler ? () => scheduler(job, false) : job;\n boundCleanup = (fn) => onWatcherCleanup(fn, false, effect);\n cleanup = effect.onStop = () => {\n const cleanups = cleanupMap.get(effect);\n if (cleanups) {\n if (call) {\n call(cleanups, 4);\n } else {\n for (const cleanup2 of cleanups) cleanup2();\n }\n cleanupMap.delete(effect);\n }\n };\n if (!!(process.env.NODE_ENV !== \"production\")) {\n effect.onTrack = options.onTrack;\n effect.onTrigger = options.onTrigger;\n }\n if (cb) {\n if (immediate) {\n job(true);\n } else {\n oldValue = effect.run();\n }\n } else if (scheduler) {\n scheduler(job.bind(null, true), true);\n } else {\n effect.run();\n }\n watchHandle.pause = effect.pause.bind(effect);\n watchHandle.resume = effect.resume.bind(effect);\n watchHandle.stop = watchHandle;\n return watchHandle;\n}\nfunction traverse(value, depth = Infinity, seen) {\n if (depth <= 0 || !isObject(value) || value[\"__v_skip\"]) {\n return value;\n }\n seen = seen || /* @__PURE__ */ new Set();\n if (seen.has(value)) {\n return value;\n }\n seen.add(value);\n depth--;\n if (isRef(value)) {\n traverse(value.value, depth, seen);\n } else if (isArray(value)) {\n for (let i = 0; i < value.length; i++) {\n traverse(value[i], depth, seen);\n }\n } else if (isSet(value) || isMap(value)) {\n value.forEach((v) => {\n traverse(v, depth, seen);\n });\n } else if (isPlainObject(value)) {\n for (const key in value) {\n traverse(value[key], depth, seen);\n }\n for (const key of Object.getOwnPropertySymbols(value)) {\n if (Object.prototype.propertyIsEnumerable.call(value, key)) {\n traverse(value[key], depth, seen);\n }\n }\n }\n return value;\n}\n\nexport { ARRAY_ITERATE_KEY, EffectFlags, EffectScope, ITERATE_KEY, MAP_KEY_ITERATE_KEY, ReactiveEffect, ReactiveFlags, TrackOpTypes, TriggerOpTypes, WatchErrorCodes, computed, customRef, effect, effectScope, enableTracking, getCurrentScope, getCurrentWatcher, isProxy, isReactive, isReadonly, isRef, isShallow, markRaw, onEffectCleanup, onScopeDispose, onWatcherCleanup, pauseTracking, proxyRefs, reactive, reactiveReadArray, readonly, ref, resetTracking, shallowReactive, shallowReadArray, shallowReadonly, shallowRef, stop, toRaw, toReactive, toReadonly, toRef, toRefs, toValue, track, traverse, trigger, triggerRef, unref, watch };\n","/**\n* @vue/runtime-core v3.5.13\n* (c) 2018-present Yuxi (Evan) You and Vue contributors\n* @license MIT\n**/\nimport { pauseTracking, resetTracking, isRef, toRaw, traverse, shallowRef, readonly, isReactive, ref, isShallow, shallowReadArray, toReactive, shallowReadonly, track, reactive, shallowReactive, trigger, ReactiveEffect, watch as watch$1, customRef, isProxy, proxyRefs, markRaw, EffectScope, computed as computed$1, isReadonly } from '@vue/reactivity';\nexport { EffectScope, ReactiveEffect, TrackOpTypes, TriggerOpTypes, customRef, effect, effectScope, getCurrentScope, getCurrentWatcher, isProxy, isReactive, isReadonly, isRef, isShallow, markRaw, onScopeDispose, onWatcherCleanup, proxyRefs, reactive, readonly, ref, shallowReactive, shallowReadonly, shallowRef, stop, toRaw, toRef, toRefs, toValue, triggerRef, unref } from '@vue/reactivity';\nimport { isString, isFunction, isPromise, isArray, EMPTY_OBJ, NOOP, getGlobalThis, extend, isBuiltInDirective, hasOwn, remove, def, isOn, isReservedProp, normalizeClass, stringifyStyle, normalizeStyle, isKnownSvgAttr, isBooleanAttr, isKnownHtmlAttr, includeBooleanAttr, isRenderableAttrValue, getEscapedCssVarName, isObject, isRegExp, invokeArrayFns, toHandlerKey, capitalize, camelize, isSymbol, isGloballyAllowed, NO, hyphenate, EMPTY_ARR, toRawType, makeMap, hasChanged, looseToNumber, isModelListener, toNumber } from '@vue/shared';\nexport { camelize, capitalize, normalizeClass, normalizeProps, normalizeStyle, toDisplayString, toHandlerKey } from '@vue/shared';\n\nconst stack = [];\nfunction pushWarningContext(vnode) {\n stack.push(vnode);\n}\nfunction popWarningContext() {\n stack.pop();\n}\nlet isWarning = false;\nfunction warn$1(msg, ...args) {\n if (isWarning) return;\n isWarning = true;\n pauseTracking();\n const instance = stack.length ? stack[stack.length - 1].component : null;\n const appWarnHandler = instance && instance.appContext.config.warnHandler;\n const trace = getComponentTrace();\n if (appWarnHandler) {\n callWithErrorHandling(\n appWarnHandler,\n instance,\n 11,\n [\n // eslint-disable-next-line no-restricted-syntax\n msg + args.map((a) => {\n var _a, _b;\n return (_b = (_a = a.toString) == null ? void 0 : _a.call(a)) != null ? _b : JSON.stringify(a);\n }).join(\"\"),\n instance && instance.proxy,\n trace.map(\n ({ vnode }) => `at <${formatComponentName(instance, vnode.type)}>`\n ).join(\"\\n\"),\n trace\n ]\n );\n } else {\n const warnArgs = [`[Vue warn]: ${msg}`, ...args];\n if (trace.length && // avoid spamming console during tests\n true) {\n warnArgs.push(`\n`, ...formatTrace(trace));\n }\n console.warn(...warnArgs);\n }\n resetTracking();\n isWarning = false;\n}\nfunction getComponentTrace() {\n let currentVNode = stack[stack.length - 1];\n if (!currentVNode) {\n return [];\n }\n const normalizedStack = [];\n while (currentVNode) {\n const last = normalizedStack[0];\n if (last && last.vnode === currentVNode) {\n last.recurseCount++;\n } else {\n normalizedStack.push({\n vnode: currentVNode,\n recurseCount: 0\n });\n }\n const parentInstance = currentVNode.component && currentVNode.component.parent;\n currentVNode = parentInstance && parentInstance.vnode;\n }\n return normalizedStack;\n}\nfunction formatTrace(trace) {\n const logs = [];\n trace.forEach((entry, i) => {\n logs.push(...i === 0 ? [] : [`\n`], ...formatTraceEntry(entry));\n });\n return logs;\n}\nfunction formatTraceEntry({ vnode, recurseCount }) {\n const postfix = recurseCount > 0 ? `... (${recurseCount} recursive calls)` : ``;\n const isRoot = vnode.component ? vnode.component.parent == null : false;\n const open = ` at <${formatComponentName(\n vnode.component,\n vnode.type,\n isRoot\n )}`;\n const close = `>` + postfix;\n return vnode.props ? [open, ...formatProps(vnode.props), close] : [open + close];\n}\nfunction formatProps(props) {\n const res = [];\n const keys = Object.keys(props);\n keys.slice(0, 3).forEach((key) => {\n res.push(...formatProp(key, props[key]));\n });\n if (keys.length > 3) {\n res.push(` ...`);\n }\n return res;\n}\nfunction formatProp(key, value, raw) {\n if (isString(value)) {\n value = JSON.stringify(value);\n return raw ? value : [`${key}=${value}`];\n } else if (typeof value === \"number\" || typeof value === \"boolean\" || value == null) {\n return raw ? value : [`${key}=${value}`];\n } else if (isRef(value)) {\n value = formatProp(key, toRaw(value.value), true);\n return raw ? value : [`${key}=Ref<`, value, `>`];\n } else if (isFunction(value)) {\n return [`${key}=fn${value.name ? `<${value.name}>` : ``}`];\n } else {\n value = toRaw(value);\n return raw ? value : [`${key}=`, value];\n }\n}\nfunction assertNumber(val, type) {\n if (!!!(process.env.NODE_ENV !== \"production\")) return;\n if (val === void 0) {\n return;\n } else if (typeof val !== \"number\") {\n warn$1(`${type} is not a valid number - got ${JSON.stringify(val)}.`);\n } else if (isNaN(val)) {\n warn$1(`${type} is NaN - the duration expression might be incorrect.`);\n }\n}\n\nconst ErrorCodes = {\n \"SETUP_FUNCTION\": 0,\n \"0\": \"SETUP_FUNCTION\",\n \"RENDER_FUNCTION\": 1,\n \"1\": \"RENDER_FUNCTION\",\n \"NATIVE_EVENT_HANDLER\": 5,\n \"5\": \"NATIVE_EVENT_HANDLER\",\n \"COMPONENT_EVENT_HANDLER\": 6,\n \"6\": \"COMPONENT_EVENT_HANDLER\",\n \"VNODE_HOOK\": 7,\n \"7\": \"VNODE_HOOK\",\n \"DIRECTIVE_HOOK\": 8,\n \"8\": \"DIRECTIVE_HOOK\",\n \"TRANSITION_HOOK\": 9,\n \"9\": \"TRANSITION_HOOK\",\n \"APP_ERROR_HANDLER\": 10,\n \"10\": \"APP_ERROR_HANDLER\",\n \"APP_WARN_HANDLER\": 11,\n \"11\": \"APP_WARN_HANDLER\",\n \"FUNCTION_REF\": 12,\n \"12\": \"FUNCTION_REF\",\n \"ASYNC_COMPONENT_LOADER\": 13,\n \"13\": \"ASYNC_COMPONENT_LOADER\",\n \"SCHEDULER\": 14,\n \"14\": \"SCHEDULER\",\n \"COMPONENT_UPDATE\": 15,\n \"15\": \"COMPONENT_UPDATE\",\n \"APP_UNMOUNT_CLEANUP\": 16,\n \"16\": \"APP_UNMOUNT_CLEANUP\"\n};\nconst ErrorTypeStrings$1 = {\n [\"sp\"]: \"serverPrefetch hook\",\n [\"bc\"]: \"beforeCreate hook\",\n [\"c\"]: \"created hook\",\n [\"bm\"]: \"beforeMount hook\",\n [\"m\"]: \"mounted hook\",\n [\"bu\"]: \"beforeUpdate hook\",\n [\"u\"]: \"updated\",\n [\"bum\"]: \"beforeUnmount hook\",\n [\"um\"]: \"unmounted hook\",\n [\"a\"]: \"activated hook\",\n [\"da\"]: \"deactivated hook\",\n [\"ec\"]: \"errorCaptured hook\",\n [\"rtc\"]: \"renderTracked hook\",\n [\"rtg\"]: \"renderTriggered hook\",\n [0]: \"setup function\",\n [1]: \"render function\",\n [2]: \"watcher getter\",\n [3]: \"watcher callback\",\n [4]: \"watcher cleanup function\",\n [5]: \"native event handler\",\n [6]: \"component event handler\",\n [7]: \"vnode hook\",\n [8]: \"directive hook\",\n [9]: \"transition hook\",\n [10]: \"app errorHandler\",\n [11]: \"app warnHandler\",\n [12]: \"ref function\",\n [13]: \"async component loader\",\n [14]: \"scheduler flush\",\n [15]: \"component update\",\n [16]: \"app unmount cleanup function\"\n};\nfunction callWithErrorHandling(fn, instance, type, args) {\n try {\n return args ? fn(...args) : fn();\n } catch (err) {\n handleError(err, instance, type);\n }\n}\nfunction callWithAsyncErrorHandling(fn, instance, type, args) {\n if (isFunction(fn)) {\n const res = callWithErrorHandling(fn, instance, type, args);\n if (res && isPromise(res)) {\n res.catch((err) => {\n handleError(err, instance, type);\n });\n }\n return res;\n }\n if (isArray(fn)) {\n const values = [];\n for (let i = 0; i < fn.length; i++) {\n values.push(callWithAsyncErrorHandling(fn[i], instance, type, args));\n }\n return values;\n } else if (!!(process.env.NODE_ENV !== \"production\")) {\n warn$1(\n `Invalid value type passed to callWithAsyncErrorHandling(): ${typeof fn}`\n );\n }\n}\nfunction handleError(err, instance, type, throwInDev = true) {\n const contextVNode = instance ? instance.vnode : null;\n const { errorHandler, throwUnhandledErrorInProduction } = instance && instance.appContext.config || EMPTY_OBJ;\n if (instance) {\n let cur = instance.parent;\n const exposedInstance = instance.proxy;\n const errorInfo = !!(process.env.NODE_ENV !== \"production\") ? ErrorTypeStrings$1[type] : `https://vuejs.org/error-reference/#runtime-${type}`;\n while (cur) {\n const errorCapturedHooks = cur.ec;\n if (errorCapturedHooks) {\n for (let i = 0; i < errorCapturedHooks.length; i++) {\n if (errorCapturedHooks[i](err, exposedInstance, errorInfo) === false) {\n return;\n }\n }\n }\n cur = cur.parent;\n }\n if (errorHandler) {\n pauseTracking();\n callWithErrorHandling(errorHandler, null, 10, [\n err,\n exposedInstance,\n errorInfo\n ]);\n resetTracking();\n return;\n }\n }\n logError(err, type, contextVNode, throwInDev, throwUnhandledErrorInProduction);\n}\nfunction logError(err, type, contextVNode, throwInDev = true, throwInProd = false) {\n if (!!(process.env.NODE_ENV !== \"production\")) {\n const info = ErrorTypeStrings$1[type];\n if (contextVNode) {\n pushWarningContext(contextVNode);\n }\n warn$1(`Unhandled error${info ? ` during execution of ${info}` : ``}`);\n if (contextVNode) {\n popWarningContext();\n }\n if (throwInDev) {\n throw err;\n } else {\n console.error(err);\n }\n } else if (throwInProd) {\n throw err;\n } else {\n console.error(err);\n }\n}\n\nconst queue = [];\nlet flushIndex = -1;\nconst pendingPostFlushCbs = [];\nlet activePostFlushCbs = null;\nlet postFlushIndex = 0;\nconst resolvedPromise = /* @__PURE__ */ Promise.resolve();\nlet currentFlushPromise = null;\nconst RECURSION_LIMIT = 100;\nfunction nextTick(fn) {\n const p = currentFlushPromise || resolvedPromise;\n return fn ? p.then(this ? fn.bind(this) : fn) : p;\n}\nfunction findInsertionIndex(id) {\n let start = flushIndex + 1;\n let end = queue.length;\n while (start < end) {\n const middle = start + end >>> 1;\n const middleJob = queue[middle];\n const middleJobId = getId(middleJob);\n if (middleJobId < id || middleJobId === id && middleJob.flags & 2) {\n start = middle + 1;\n } else {\n end = middle;\n }\n }\n return start;\n}\nfunction queueJob(job) {\n if (!(job.flags & 1)) {\n const jobId = getId(job);\n const lastJob = queue[queue.length - 1];\n if (!lastJob || // fast path when the job id is larger than the tail\n !(job.flags & 2) && jobId >= getId(lastJob)) {\n queue.push(job);\n } else {\n queue.splice(findInsertionIndex(jobId), 0, job);\n }\n job.flags |= 1;\n queueFlush();\n }\n}\nfunction queueFlush() {\n if (!currentFlushPromise) {\n currentFlushPromise = resolvedPromise.then(flushJobs);\n }\n}\nfunction queuePostFlushCb(cb) {\n if (!isArray(cb)) {\n if (activePostFlushCbs && cb.id === -1) {\n activePostFlushCbs.splice(postFlushIndex + 1, 0, cb);\n } else if (!(cb.flags & 1)) {\n pendingPostFlushCbs.push(cb);\n cb.flags |= 1;\n }\n } else {\n pendingPostFlushCbs.push(...cb);\n }\n queueFlush();\n}\nfunction flushPreFlushCbs(instance, seen, i = flushIndex + 1) {\n if (!!(process.env.NODE_ENV !== \"production\")) {\n seen = seen || /* @__PURE__ */ new Map();\n }\n for (; i < queue.length; i++) {\n const cb = queue[i];\n if (cb && cb.flags & 2) {\n if (instance && cb.id !== instance.uid) {\n continue;\n }\n if (!!(process.env.NODE_ENV !== \"production\") && checkRecursiveUpdates(seen, cb)) {\n continue;\n }\n queue.splice(i, 1);\n i--;\n if (cb.flags & 4) {\n cb.flags &= ~1;\n }\n cb();\n if (!(cb.flags & 4)) {\n cb.flags &= ~1;\n }\n }\n }\n}\nfunction flushPostFlushCbs(seen) {\n if (pendingPostFlushCbs.length) {\n const deduped = [...new Set(pendingPostFlushCbs)].sort(\n (a, b) => getId(a) - getId(b)\n );\n pendingPostFlushCbs.length = 0;\n if (activePostFlushCbs) {\n activePostFlushCbs.push(...deduped);\n return;\n }\n activePostFlushCbs = deduped;\n if (!!(process.env.NODE_ENV !== \"production\")) {\n seen = seen || /* @__PURE__ */ new Map();\n }\n for (postFlushIndex = 0; postFlushIndex < activePostFlushCbs.length; postFlushIndex++) {\n const cb = activePostFlushCbs[postFlushIndex];\n if (!!(process.env.NODE_ENV !== \"production\") && checkRecursiveUpdates(seen, cb)) {\n continue;\n }\n if (cb.flags & 4) {\n cb.flags &= ~1;\n }\n if (!(cb.flags & 8)) cb();\n cb.flags &= ~1;\n }\n activePostFlushCbs = null;\n postFlushIndex = 0;\n }\n}\nconst getId = (job) => job.id == null ? job.flags & 2 ? -1 : Infinity : job.id;\nfunction flushJobs(seen) {\n if (!!(process.env.NODE_ENV !== \"production\")) {\n seen = seen || /* @__PURE__ */ new Map();\n }\n const check = !!(process.env.NODE_ENV !== \"production\") ? (job) => checkRecursiveUpdates(seen, job) : NOOP;\n try {\n for (flushIndex = 0; flushIndex < queue.length; flushIndex++) {\n const job = queue[flushIndex];\n if (job && !(job.flags & 8)) {\n if (!!(process.env.NODE_ENV !== \"production\") && check(job)) {\n continue;\n }\n if (job.flags & 4) {\n job.flags &= ~1;\n }\n callWithErrorHandling(\n job,\n job.i,\n job.i ? 15 : 14\n );\n if (!(job.flags & 4)) {\n job.flags &= ~1;\n }\n }\n }\n } finally {\n for (; flushIndex < queue.length; flushIndex++) {\n const job = queue[flushIndex];\n if (job) {\n job.flags &= ~1;\n }\n }\n flushIndex = -1;\n queue.length = 0;\n flushPostFlushCbs(seen);\n currentFlushPromise = null;\n if (queue.length || pendingPostFlushCbs.length) {\n flushJobs(seen);\n }\n }\n}\nfunction checkRecursiveUpdates(seen, fn) {\n const count = seen.get(fn) || 0;\n if (count > RECURSION_LIMIT) {\n const instance = fn.i;\n const componentName = instance && getComponentName(instance.type);\n handleError(\n `Maximum recursive updates exceeded${componentName ? ` in component <${componentName}>` : ``}. This means you have a reactive effect that is mutating its own dependencies and thus recursively triggering itself. Possible sources include component template, render function, updated hook or watcher source function.`,\n null,\n 10\n );\n return true;\n }\n seen.set(fn, count + 1);\n return false;\n}\n\nlet isHmrUpdating = false;\nconst hmrDirtyComponents = /* @__PURE__ */ new Map();\nif (!!(process.env.NODE_ENV !== \"production\")) {\n getGlobalThis().__VUE_HMR_RUNTIME__ = {\n createRecord: tryWrap(createRecord),\n rerender: tryWrap(rerender),\n reload: tryWrap(reload)\n };\n}\nconst map = /* @__PURE__ */ new Map();\nfunction registerHMR(instance) {\n const id = instance.type.__hmrId;\n let record = map.get(id);\n if (!record) {\n createRecord(id, instance.type);\n record = map.get(id);\n }\n record.instances.add(instance);\n}\nfunction unregisterHMR(instance) {\n map.get(instance.type.__hmrId).instances.delete(instance);\n}\nfunction createRecord(id, initialDef) {\n if (map.has(id)) {\n return false;\n }\n map.set(id, {\n initialDef: normalizeClassComponent(initialDef),\n instances: /* @__PURE__ */ new Set()\n });\n return true;\n}\nfunction normalizeClassComponent(component) {\n return isClassComponent(component) ? component.__vccOpts : component;\n}\nfunction rerender(id, newRender) {\n const record = map.get(id);\n if (!record) {\n return;\n }\n record.initialDef.render = newRender;\n [...record.instances].forEach((instance) => {\n if (newRender) {\n instance.render = newRender;\n normalizeClassComponent(instance.type).render = newRender;\n }\n instance.renderCache = [];\n isHmrUpdating = true;\n instance.update();\n isHmrUpdating = false;\n });\n}\nfunction reload(id, newComp) {\n const record = map.get(id);\n if (!record) return;\n newComp = normalizeClassComponent(newComp);\n updateComponentDef(record.initialDef, newComp);\n const instances = [...record.instances];\n for (let i = 0; i < instances.length; i++) {\n const instance = instances[i];\n const oldComp = normalizeClassComponent(instance.type);\n let dirtyInstances = hmrDirtyComponents.get(oldComp);\n if (!dirtyInstances) {\n if (oldComp !== record.initialDef) {\n updateComponentDef(oldComp, newComp);\n }\n hmrDirtyComponents.set(oldComp, dirtyInstances = /* @__PURE__ */ new Set());\n }\n dirtyInstances.add(instance);\n instance.appContext.propsCache.delete(instance.type);\n instance.appContext.emitsCache.delete(instance.type);\n instance.appContext.optionsCache.delete(instance.type);\n if (instance.ceReload) {\n dirtyInstances.add(instance);\n instance.ceReload(newComp.styles);\n dirtyInstances.delete(instance);\n } else if (instance.parent) {\n queueJob(() => {\n isHmrUpdating = true;\n instance.parent.update();\n isHmrUpdating = false;\n dirtyInstances.delete(instance);\n });\n } else if (instance.appContext.reload) {\n instance.appContext.reload();\n } else if (typeof window !== \"undefined\") {\n window.location.reload();\n } else {\n console.warn(\n \"[HMR] Root or manually mounted instance modified. Full reload required.\"\n );\n }\n if (instance.root.ce && instance !== instance.root) {\n instance.root.ce._removeChildStyle(oldComp);\n }\n }\n queuePostFlushCb(() => {\n hmrDirtyComponents.clear();\n });\n}\nfunction updateComponentDef(oldComp, newComp) {\n extend(oldComp, newComp);\n for (const key in oldComp) {\n if (key !== \"__file\" && !(key in newComp)) {\n delete oldComp[key];\n }\n }\n}\nfunction tryWrap(fn) {\n return (id, arg) => {\n try {\n return fn(id, arg);\n } catch (e) {\n console.error(e);\n console.warn(\n `[HMR] Something went wrong during Vue component hot-reload. Full reload required.`\n );\n }\n };\n}\n\nlet devtools$1;\nlet buffer = [];\nlet devtoolsNotInstalled = false;\nfunction emit$1(event, ...args) {\n if (devtools$1) {\n devtools$1.emit(event, ...args);\n } else if (!devtoolsNotInstalled) {\n buffer.push({ event, args });\n }\n}\nfunction setDevtoolsHook$1(hook, target) {\n var _a, _b;\n devtools$1 = hook;\n if (devtools$1) {\n devtools$1.enabled = true;\n buffer.forEach(({ event, args }) => devtools$1.emit(event, ...args));\n buffer = [];\n } else if (\n // handle late devtools injection - only do this if we are in an actual\n // browser environment to avoid the timer handle stalling test runner exit\n // (#4815)\n typeof window !== \"undefined\" && // some envs mock window but not fully\n window.HTMLElement && // also exclude jsdom\n // eslint-disable-next-line no-restricted-syntax\n !((_b = (_a = window.navigator) == null ? void 0 : _a.userAgent) == null ? void 0 : _b.includes(\"jsdom\"))\n ) {\n const replay = target.__VUE_DEVTOOLS_HOOK_REPLAY__ = target.__VUE_DEVTOOLS_HOOK_REPLAY__ || [];\n replay.push((newHook) => {\n setDevtoolsHook$1(newHook, target);\n });\n setTimeout(() => {\n if (!devtools$1) {\n target.__VUE_DEVTOOLS_HOOK_REPLAY__ = null;\n devtoolsNotInstalled = true;\n buffer = [];\n }\n }, 3e3);\n } else {\n devtoolsNotInstalled = true;\n buffer = [];\n }\n}\nfunction devtoolsInitApp(app, version) {\n emit$1(\"app:init\" /* APP_INIT */, app, version, {\n Fragment,\n Text,\n Comment,\n Static\n });\n}\nfunction devtoolsUnmountApp(app) {\n emit$1(\"app:unmount\" /* APP_UNMOUNT */, app);\n}\nconst devtoolsComponentAdded = /* @__PURE__ */ createDevtoolsComponentHook(\"component:added\" /* COMPONENT_ADDED */);\nconst devtoolsComponentUpdated = /* @__PURE__ */ createDevtoolsComponentHook(\"component:updated\" /* COMPONENT_UPDATED */);\nconst _devtoolsComponentRemoved = /* @__PURE__ */ createDevtoolsComponentHook(\n \"component:removed\" /* COMPONENT_REMOVED */\n);\nconst devtoolsComponentRemoved = (component) => {\n if (devtools$1 && typeof devtools$1.cleanupBuffer === \"function\" && // remove the component if it wasn't buffered\n !devtools$1.cleanupBuffer(component)) {\n _devtoolsComponentRemoved(component);\n }\n};\n/*! #__NO_SIDE_EFFECTS__ */\n// @__NO_SIDE_EFFECTS__\nfunction createDevtoolsComponentHook(hook) {\n return (component) => {\n emit$1(\n hook,\n component.appContext.app,\n component.uid,\n component.parent ? component.parent.uid : void 0,\n component\n );\n };\n}\nconst devtoolsPerfStart = /* @__PURE__ */ createDevtoolsPerformanceHook(\"perf:start\" /* PERFORMANCE_START */);\nconst devtoolsPerfEnd = /* @__PURE__ */ createDevtoolsPerformanceHook(\"perf:end\" /* PERFORMANCE_END */);\nfunction createDevtoolsPerformanceHook(hook) {\n return (component, type, time) => {\n emit$1(hook, component.appContext.app, component.uid, component, type, time);\n };\n}\nfunction devtoolsComponentEmit(component, event, params) {\n emit$1(\n \"component:emit\" /* COMPONENT_EMIT */,\n component.appContext.app,\n component,\n event,\n params\n );\n}\n\nlet currentRenderingInstance = null;\nlet currentScopeId = null;\nfunction setCurrentRenderingInstance(instance) {\n const prev = currentRenderingInstance;\n currentRenderingInstance = instance;\n currentScopeId = instance && instance.type.__scopeId || null;\n return prev;\n}\nfunction pushScopeId(id) {\n currentScopeId = id;\n}\nfunction popScopeId() {\n currentScopeId = null;\n}\nconst withScopeId = (_id) => withCtx;\nfunction withCtx(fn, ctx = currentRenderingInstance, isNonScopedSlot) {\n if (!ctx) return fn;\n if (fn._n) {\n return fn;\n }\n const renderFnWithContext = (...args) => {\n if (renderFnWithContext._d) {\n setBlockTracking(-1);\n }\n const prevInstance = setCurrentRenderingInstance(ctx);\n let res;\n try {\n res = fn(...args);\n } finally {\n setCurrentRenderingInstance(prevInstance);\n if (renderFnWithContext._d) {\n setBlockTracking(1);\n }\n }\n if (!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_DEVTOOLS__) {\n devtoolsComponentUpdated(ctx);\n }\n return res;\n };\n renderFnWithContext._n = true;\n renderFnWithContext._c = true;\n renderFnWithContext._d = true;\n return renderFnWithContext;\n}\n\nfunction validateDirectiveName(name) {\n if (isBuiltInDirective(name)) {\n warn$1(\"Do not use built-in directive ids as custom directive id: \" + name);\n }\n}\nfunction withDirectives(vnode, directives) {\n if (currentRenderingInstance === null) {\n !!(process.env.NODE_ENV !== \"production\") && warn$1(`withDirectives can only be used inside render functions.`);\n return vnode;\n }\n const instance = getComponentPublicInstance(currentRenderingInstance);\n const bindings = vnode.dirs || (vnode.dirs = []);\n for (let i = 0; i < directives.length; i++) {\n let [dir, value, arg, modifiers = EMPTY_OBJ] = directives[i];\n if (dir) {\n if (isFunction(dir)) {\n dir = {\n mounted: dir,\n updated: dir\n };\n }\n if (dir.deep) {\n traverse(value);\n }\n bindings.push({\n dir,\n instance,\n value,\n oldValue: void 0,\n arg,\n modifiers\n });\n }\n }\n return vnode;\n}\nfunction invokeDirectiveHook(vnode, prevVNode, instance, name) {\n const bindings = vnode.dirs;\n const oldBindings = prevVNode && prevVNode.dirs;\n for (let i = 0; i < bindings.length; i++) {\n const binding = bindings[i];\n if (oldBindings) {\n binding.oldValue = oldBindings[i].value;\n }\n let hook = binding.dir[name];\n if (hook) {\n pauseTracking();\n callWithAsyncErrorHandling(hook, instance, 8, [\n vnode.el,\n binding,\n vnode,\n prevVNode\n ]);\n resetTracking();\n }\n }\n}\n\nconst TeleportEndKey = Symbol(\"_vte\");\nconst isTeleport = (type) => type.__isTeleport;\nconst isTeleportDisabled = (props) => props && (props.disabled || props.disabled === \"\");\nconst isTeleportDeferred = (props) => props && (props.defer || props.defer === \"\");\nconst isTargetSVG = (target) => typeof SVGElement !== \"undefined\" && target instanceof SVGElement;\nconst isTargetMathML = (target) => typeof MathMLElement === \"function\" && target instanceof MathMLElement;\nconst resolveTarget = (props, select) => {\n const targetSelector = props && props.to;\n if (isString(targetSelector)) {\n if (!select) {\n !!(process.env.NODE_ENV !== \"production\") && warn$1(\n `Current renderer does not support string target for Teleports. (missing querySelector renderer option)`\n );\n return null;\n } else {\n const target = select(targetSelector);\n if (!!(process.env.NODE_ENV !== \"production\") && !target && !isTeleportDisabled(props)) {\n warn$1(\n `Failed to locate Teleport target with selector \"${targetSelector}\". Note the target element must exist before the component is mounted - i.e. the target cannot be rendered by the component itself, and ideally should be outside of the entire Vue component tree.`\n );\n }\n return target;\n }\n } else {\n if (!!(process.env.NODE_ENV !== \"production\") && !targetSelector && !isTeleportDisabled(props)) {\n warn$1(`Invalid Teleport target: ${targetSelector}`);\n }\n return targetSelector;\n }\n};\nconst TeleportImpl = {\n name: \"Teleport\",\n __isTeleport: true,\n process(n1, n2, container, anchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized, internals) {\n const {\n mc: mountChildren,\n pc: patchChildren,\n pbc: patchBlockChildren,\n o: { insert, querySelector, createText, createComment }\n } = internals;\n const disabled = isTeleportDisabled(n2.props);\n let { shapeFlag, children, dynamicChildren } = n2;\n if (!!(process.env.NODE_ENV !== \"production\") && isHmrUpdating) {\n optimized = false;\n dynamicChildren = null;\n }\n if (n1 == null) {\n const placeholder = n2.el = !!(process.env.NODE_ENV !== \"production\") ? createComment(\"teleport start\") : createText(\"\");\n const mainAnchor = n2.anchor = !!(process.env.NODE_ENV !== \"production\") ? createComment(\"teleport end\") : createText(\"\");\n insert(placeholder, container, anchor);\n insert(mainAnchor, container, anchor);\n const mount = (container2, anchor2) => {\n if (shapeFlag & 16) {\n if (parentComponent && parentComponent.isCE) {\n parentComponent.ce._teleportTarget = container2;\n }\n mountChildren(\n children,\n container2,\n anchor2,\n parentComponent,\n parentSuspense,\n namespace,\n slotScopeIds,\n optimized\n );\n }\n };\n const mountToTarget = () => {\n const target = n2.target = resolveTarget(n2.props, querySelector);\n const targetAnchor = prepareAnchor(target, n2, createText, insert);\n if (target) {\n if (namespace !== \"svg\" && isTargetSVG(target)) {\n namespace = \"svg\";\n } else if (namespace !== \"mathml\" && isTargetMathML(target)) {\n namespace = \"mathml\";\n }\n if (!disabled) {\n mount(target, targetAnchor);\n updateCssVars(n2, false);\n }\n } else if (!!(process.env.NODE_ENV !== \"production\") && !disabled) {\n warn$1(\n \"Invalid Teleport target on mount:\",\n target,\n `(${typeof target})`\n );\n }\n };\n if (disabled) {\n mount(container, mainAnchor);\n updateCssVars(n2, true);\n }\n if (isTeleportDeferred(n2.props)) {\n queuePostRenderEffect(() => {\n mountToTarget();\n n2.el.__isMounted = true;\n }, parentSuspense);\n } else {\n mountToTarget();\n }\n } else {\n if (isTeleportDeferred(n2.props) && !n1.el.__isMounted) {\n queuePostRenderEffect(() => {\n TeleportImpl.process(\n n1,\n n2,\n container,\n anchor,\n parentComponent,\n parentSuspense,\n namespace,\n slotScopeIds,\n optimized,\n internals\n );\n delete n1.el.__isMounted;\n }, parentSuspense);\n return;\n }\n n2.el = n1.el;\n n2.targetStart = n1.targetStart;\n const mainAnchor = n2.anchor = n1.anchor;\n const target = n2.target = n1.target;\n const targetAnchor = n2.targetAnchor = n1.targetAnchor;\n const wasDisabled = isTeleportDisabled(n1.props);\n const currentContainer = wasDisabled ? container : target;\n const currentAnchor = wasDisabled ? mainAnchor : targetAnchor;\n if (namespace === \"svg\" || isTargetSVG(target)) {\n namespace = \"svg\";\n } else if (namespace === \"mathml\" || isTargetMathML(target)) {\n namespace = \"mathml\";\n }\n if (dynamicChildren) {\n patchBlockChildren(\n n1.dynamicChildren,\n dynamicChildren,\n currentContainer,\n parentComponent,\n parentSuspense,\n namespace,\n slotScopeIds\n );\n traverseStaticChildren(n1, n2, true);\n } else if (!optimized) {\n patchChildren(\n n1,\n n2,\n currentContainer,\n currentAnchor,\n parentComponent,\n parentSuspense,\n namespace,\n slotScopeIds,\n false\n );\n }\n if (disabled) {\n if (!wasDisabled) {\n moveTeleport(\n n2,\n container,\n mainAnchor,\n internals,\n 1\n );\n } else {\n if (n2.props && n1.props && n2.props.to !== n1.props.to) {\n n2.props.to = n1.props.to;\n }\n }\n } else {\n if ((n2.props && n2.props.to) !== (n1.props && n1.props.to)) {\n const nextTarget = n2.target = resolveTarget(\n n2.props,\n querySelector\n );\n if (nextTarget) {\n moveTeleport(\n n2,\n nextTarget,\n null,\n internals,\n 0\n );\n } else if (!!(process.env.NODE_ENV !== \"production\")) {\n warn$1(\n \"Invalid Teleport target on update:\",\n target,\n `(${typeof target})`\n );\n }\n } else if (wasDisabled) {\n moveTeleport(\n n2,\n target,\n targetAnchor,\n internals,\n 1\n );\n }\n }\n updateCssVars(n2, disabled);\n }\n },\n remove(vnode, parentComponent, parentSuspense, { um: unmount, o: { remove: hostRemove } }, doRemove) {\n const {\n shapeFlag,\n children,\n anchor,\n targetStart,\n targetAnchor,\n target,\n props\n } = vnode;\n if (target) {\n hostRemove(targetStart);\n hostRemove(targetAnchor);\n }\n doRemove && hostRemove(anchor);\n if (shapeFlag & 16) {\n const shouldRemove = doRemove || !isTeleportDisabled(props);\n for (let i = 0; i < children.length; i++) {\n const child = children[i];\n unmount(\n child,\n parentComponent,\n parentSuspense,\n shouldRemove,\n !!child.dynamicChildren\n );\n }\n }\n },\n move: moveTeleport,\n hydrate: hydrateTeleport\n};\nfunction moveTeleport(vnode, container, parentAnchor, { o: { insert }, m: move }, moveType = 2) {\n if (moveType === 0) {\n insert(vnode.targetAnchor, container, parentAnchor);\n }\n const { el, anchor, shapeFlag, children, props } = vnode;\n const isReorder = moveType === 2;\n if (isReorder) {\n insert(el, container, parentAnchor);\n }\n if (!isReorder || isTeleportDisabled(props)) {\n if (shapeFlag & 16) {\n for (let i = 0; i < children.length; i++) {\n move(\n children[i],\n container,\n parentAnchor,\n 2\n );\n }\n }\n }\n if (isReorder) {\n insert(anchor, container, parentAnchor);\n }\n}\nfunction hydrateTeleport(node, vnode, parentComponent, parentSuspense, slotScopeIds, optimized, {\n o: { nextSibling, parentNode, querySelector, insert, createText }\n}, hydrateChildren) {\n const target = vnode.target = resolveTarget(\n vnode.props,\n querySelector\n );\n if (target) {\n const disabled = isTeleportDisabled(vnode.props);\n const targetNode = target._lpa || target.firstChild;\n if (vnode.shapeFlag & 16) {\n if (disabled) {\n vnode.anchor = hydrateChildren(\n nextSibling(node),\n vnode,\n parentNode(node),\n parentComponent,\n parentSuspense,\n slotScopeIds,\n optimized\n );\n vnode.targetStart = targetNode;\n vnode.targetAnchor = targetNode && nextSibling(targetNode);\n } else {\n vnode.anchor = nextSibling(node);\n let targetAnchor = targetNode;\n while (targetAnchor) {\n if (targetAnchor && targetAnchor.nodeType === 8) {\n if (targetAnchor.data === \"teleport start anchor\") {\n vnode.targetStart = targetAnchor;\n } else if (targetAnchor.data === \"teleport anchor\") {\n vnode.targetAnchor = targetAnchor;\n target._lpa = vnode.targetAnchor && nextSibling(vnode.targetAnchor);\n break;\n }\n }\n targetAnchor = nextSibling(targetAnchor);\n }\n if (!vnode.targetAnchor) {\n prepareAnchor(target, vnode, createText, insert);\n }\n hydrateChildren(\n targetNode && nextSibling(targetNode),\n vnode,\n target,\n parentComponent,\n parentSuspense,\n slotScopeIds,\n optimized\n );\n }\n }\n updateCssVars(vnode, disabled);\n }\n return vnode.anchor && nextSibling(vnode.anchor);\n}\nconst Teleport = TeleportImpl;\nfunction updateCssVars(vnode, isDisabled) {\n const ctx = vnode.ctx;\n if (ctx && ctx.ut) {\n let node, anchor;\n if (isDisabled) {\n node = vnode.el;\n anchor = vnode.anchor;\n } else {\n node = vnode.targetStart;\n anchor = vnode.targetAnchor;\n }\n while (node && node !== anchor) {\n if (node.nodeType === 1) node.setAttribute(\"data-v-owner\", ctx.uid);\n node = node.nextSibling;\n }\n ctx.ut();\n }\n}\nfunction prepareAnchor(target, vnode, createText, insert) {\n const targetStart = vnode.targetStart = createText(\"\");\n const targetAnchor = vnode.targetAnchor = createText(\"\");\n targetStart[TeleportEndKey] = targetAnchor;\n if (target) {\n insert(targetStart, target);\n insert(targetAnchor, target);\n }\n return targetAnchor;\n}\n\nconst leaveCbKey = Symbol(\"_leaveCb\");\nconst enterCbKey = Symbol(\"_enterCb\");\nfunction useTransitionState() {\n const state = {\n isMounted: false,\n isLeaving: false,\n isUnmounting: false,\n leavingVNodes: /* @__PURE__ */ new Map()\n };\n onMounted(() => {\n state.isMounted = true;\n });\n onBeforeUnmount(() => {\n state.isUnmounting = true;\n });\n return state;\n}\nconst TransitionHookValidator = [Function, Array];\nconst BaseTransitionPropsValidators = {\n mode: String,\n appear: Boolean,\n persisted: Boolean,\n // enter\n onBeforeEnter: TransitionHookValidator,\n onEnter: TransitionHookValidator,\n onAfterEnter: TransitionHookValidator,\n onEnterCancelled: TransitionHookValidator,\n // leave\n onBeforeLeave: TransitionHookValidator,\n onLeave: TransitionHookValidator,\n onAfterLeave: TransitionHookValidator,\n onLeaveCancelled: TransitionHookValidator,\n // appear\n onBeforeAppear: TransitionHookValidator,\n onAppear: TransitionHookValidator,\n onAfterAppear: TransitionHookValidator,\n onAppearCancelled: TransitionHookValidator\n};\nconst recursiveGetSubtree = (instance) => {\n const subTree = instance.subTree;\n return subTree.component ? recursiveGetSubtree(subTree.component) : subTree;\n};\nconst BaseTransitionImpl = {\n name: `BaseTransition`,\n props: BaseTransitionPropsValidators,\n setup(props, { slots }) {\n const instance = getCurrentInstance();\n const state = useTransitionState();\n return () => {\n const children = slots.default && getTransitionRawChildren(slots.default(), true);\n if (!children || !children.length) {\n return;\n }\n const child = findNonCommentChild(children);\n const rawProps = toRaw(props);\n const { mode } = rawProps;\n if (!!(process.env.NODE_ENV !== \"production\") && mode && mode !== \"in-out\" && mode !== \"out-in\" && mode !== \"default\") {\n warn$1(`invalid mode: ${mode}`);\n }\n if (state.isLeaving) {\n return emptyPlaceholder(child);\n }\n const innerChild = getInnerChild$1(child);\n if (!innerChild) {\n return emptyPlaceholder(child);\n }\n let enterHooks = resolveTransitionHooks(\n innerChild,\n rawProps,\n state,\n instance,\n // #11061, ensure enterHooks is fresh after clone\n (hooks) => enterHooks = hooks\n );\n if (innerChild.type !== Comment) {\n setTransitionHooks(innerChild, enterHooks);\n }\n let oldInnerChild = instance.subTree && getInnerChild$1(instance.subTree);\n if (oldInnerChild && oldInnerChild.type !== Comment && !isSameVNodeType(innerChild, oldInnerChild) && recursiveGetSubtree(instance).type !== Comment) {\n let leavingHooks = resolveTransitionHooks(\n oldInnerChild,\n rawProps,\n state,\n instance\n );\n setTransitionHooks(oldInnerChild, leavingHooks);\n if (mode === \"out-in\" && innerChild.type !== Comment) {\n state.isLeaving = true;\n leavingHooks.afterLeave = () => {\n state.isLeaving = false;\n if (!(instance.job.flags & 8)) {\n instance.update();\n }\n delete leavingHooks.afterLeave;\n oldInnerChild = void 0;\n };\n return emptyPlaceholder(child);\n } else if (mode === \"in-out\" && innerChild.type !== Comment) {\n leavingHooks.delayLeave = (el, earlyRemove, delayedLeave) => {\n const leavingVNodesCache = getLeavingNodesForType(\n state,\n oldInnerChild\n );\n leavingVNodesCache[String(oldInnerChild.key)] = oldInnerChild;\n el[leaveCbKey] = () => {\n earlyRemove();\n el[leaveCbKey] = void 0;\n delete enterHooks.delayedLeave;\n oldInnerChild = void 0;\n };\n enterHooks.delayedLeave = () => {\n delayedLeave();\n delete enterHooks.delayedLeave;\n oldInnerChild = void 0;\n };\n };\n } else {\n oldInnerChild = void 0;\n }\n } else if (oldInnerChild) {\n oldInnerChild = void 0;\n }\n return child;\n };\n }\n};\nfunction findNonCommentChild(children) {\n let child = children[0];\n if (children.length > 1) {\n let hasFound = false;\n for (const c of children) {\n if (c.type !== Comment) {\n if (!!(process.env.NODE_ENV !== \"production\") && hasFound) {\n warn$1(\n \" can only be used on a single element or component. Use for lists.\"\n );\n break;\n }\n child = c;\n hasFound = true;\n if (!!!(process.env.NODE_ENV !== \"production\")) break;\n }\n }\n }\n return child;\n}\nconst BaseTransition = BaseTransitionImpl;\nfunction getLeavingNodesForType(state, vnode) {\n const { leavingVNodes } = state;\n let leavingVNodesCache = leavingVNodes.get(vnode.type);\n if (!leavingVNodesCache) {\n leavingVNodesCache = /* @__PURE__ */ Object.create(null);\n leavingVNodes.set(vnode.type, leavingVNodesCache);\n }\n return leavingVNodesCache;\n}\nfunction resolveTransitionHooks(vnode, props, state, instance, postClone) {\n const {\n appear,\n mode,\n persisted = false,\n onBeforeEnter,\n onEnter,\n onAfterEnter,\n onEnterCancelled,\n onBeforeLeave,\n onLeave,\n onAfterLeave,\n onLeaveCancelled,\n onBeforeAppear,\n onAppear,\n onAfterAppear,\n onAppearCancelled\n } = props;\n const key = String(vnode.key);\n const leavingVNodesCache = getLeavingNodesForType(state, vnode);\n const callHook = (hook, args) => {\n hook && callWithAsyncErrorHandling(\n hook,\n instance,\n 9,\n args\n );\n };\n const callAsyncHook = (hook, args) => {\n const done = args[1];\n callHook(hook, args);\n if (isArray(hook)) {\n if (hook.every((hook2) => hook2.length <= 1)) done();\n } else if (hook.length <= 1) {\n done();\n }\n };\n const hooks = {\n mode,\n persisted,\n beforeEnter(el) {\n let hook = onBeforeEnter;\n if (!state.isMounted) {\n if (appear) {\n hook = onBeforeAppear || onBeforeEnter;\n } else {\n return;\n }\n }\n if (el[leaveCbKey]) {\n el[leaveCbKey](\n true\n /* cancelled */\n );\n }\n const leavingVNode = leavingVNodesCache[key];\n if (leavingVNode && isSameVNodeType(vnode, leavingVNode) && leavingVNode.el[leaveCbKey]) {\n leavingVNode.el[leaveCbKey]();\n }\n callHook(hook, [el]);\n },\n enter(el) {\n let hook = onEnter;\n let afterHook = onAfterEnter;\n let cancelHook = onEnterCancelled;\n if (!state.isMounted) {\n if (appear) {\n hook = onAppear || onEnter;\n afterHook = onAfterAppear || onAfterEnter;\n cancelHook = onAppearCancelled || onEnterCancelled;\n } else {\n return;\n }\n }\n let called = false;\n const done = el[enterCbKey] = (cancelled) => {\n if (called) return;\n called = true;\n if (cancelled) {\n callHook(cancelHook, [el]);\n } else {\n callHook(afterHook, [el]);\n }\n if (hooks.delayedLeave) {\n hooks.delayedLeave();\n }\n el[enterCbKey] = void 0;\n };\n if (hook) {\n callAsyncHook(hook, [el, done]);\n } else {\n done();\n }\n },\n leave(el, remove) {\n const key2 = String(vnode.key);\n if (el[enterCbKey]) {\n el[enterCbKey](\n true\n /* cancelled */\n );\n }\n if (state.isUnmounting) {\n return remove();\n }\n callHook(onBeforeLeave, [el]);\n let called = false;\n const done = el[leaveCbKey] = (cancelled) => {\n if (called) return;\n called = true;\n remove();\n if (cancelled) {\n callHook(onLeaveCancelled, [el]);\n } else {\n callHook(onAfterLeave, [el]);\n }\n el[leaveCbKey] = void 0;\n if (leavingVNodesCache[key2] === vnode) {\n delete leavingVNodesCache[key2];\n }\n };\n leavingVNodesCache[key2] = vnode;\n if (onLeave) {\n callAsyncHook(onLeave, [el, done]);\n } else {\n done();\n }\n },\n clone(vnode2) {\n const hooks2 = resolveTransitionHooks(\n vnode2,\n props,\n state,\n instance,\n postClone\n );\n if (postClone) postClone(hooks2);\n return hooks2;\n }\n };\n return hooks;\n}\nfunction emptyPlaceholder(vnode) {\n if (isKeepAlive(vnode)) {\n vnode = cloneVNode(vnode);\n vnode.children = null;\n return vnode;\n }\n}\nfunction getInnerChild$1(vnode) {\n if (!isKeepAlive(vnode)) {\n if (isTeleport(vnode.type) && vnode.children) {\n return findNonCommentChild(vnode.children);\n }\n return vnode;\n }\n if (!!(process.env.NODE_ENV !== \"production\") && vnode.component) {\n return vnode.component.subTree;\n }\n const { shapeFlag, children } = vnode;\n if (children) {\n if (shapeFlag & 16) {\n return children[0];\n }\n if (shapeFlag & 32 && isFunction(children.default)) {\n return children.default();\n }\n }\n}\nfunction setTransitionHooks(vnode, hooks) {\n if (vnode.shapeFlag & 6 && vnode.component) {\n vnode.transition = hooks;\n setTransitionHooks(vnode.component.subTree, hooks);\n } else if (vnode.shapeFlag & 128) {\n vnode.ssContent.transition = hooks.clone(vnode.ssContent);\n vnode.ssFallback.transition = hooks.clone(vnode.ssFallback);\n } else {\n vnode.transition = hooks;\n }\n}\nfunction getTransitionRawChildren(children, keepComment = false, parentKey) {\n let ret = [];\n let keyedFragmentCount = 0;\n for (let i = 0; i < children.length; i++) {\n let child = children[i];\n const key = parentKey == null ? child.key : String(parentKey) + String(child.key != null ? child.key : i);\n if (child.type === Fragment) {\n if (child.patchFlag & 128) keyedFragmentCount++;\n ret = ret.concat(\n getTransitionRawChildren(child.children, keepComment, key)\n );\n } else if (keepComment || child.type !== Comment) {\n ret.push(key != null ? cloneVNode(child, { key }) : child);\n }\n }\n if (keyedFragmentCount > 1) {\n for (let i = 0; i < ret.length; i++) {\n ret[i].patchFlag = -2;\n }\n }\n return ret;\n}\n\n/*! #__NO_SIDE_EFFECTS__ */\n// @__NO_SIDE_EFFECTS__\nfunction defineComponent(options, extraOptions) {\n return isFunction(options) ? (\n // #8236: extend call and options.name access are considered side-effects\n // by Rollup, so we have to wrap it in a pure-annotated IIFE.\n /* @__PURE__ */ (() => extend({ name: options.name }, extraOptions, { setup: options }))()\n ) : options;\n}\n\nfunction useId() {\n const i = getCurrentInstance();\n if (i) {\n return (i.appContext.config.idPrefix || \"v\") + \"-\" + i.ids[0] + i.ids[1]++;\n } else if (!!(process.env.NODE_ENV !== \"production\")) {\n warn$1(\n `useId() is called when there is no active component instance to be associated with.`\n );\n }\n return \"\";\n}\nfunction markAsyncBoundary(instance) {\n instance.ids = [instance.ids[0] + instance.ids[2]++ + \"-\", 0, 0];\n}\n\nconst knownTemplateRefs = /* @__PURE__ */ new WeakSet();\nfunction useTemplateRef(key) {\n const i = getCurrentInstance();\n const r = shallowRef(null);\n if (i) {\n const refs = i.refs === EMPTY_OBJ ? i.refs = {} : i.refs;\n let desc;\n if (!!(process.env.NODE_ENV !== \"production\") && (desc = Object.getOwnPropertyDescriptor(refs, key)) && !desc.configurable) {\n warn$1(`useTemplateRef('${key}') already exists.`);\n } else {\n Object.defineProperty(refs, key, {\n enumerable: true,\n get: () => r.value,\n set: (val) => r.value = val\n });\n }\n } else if (!!(process.env.NODE_ENV !== \"production\")) {\n warn$1(\n `useTemplateRef() is called when there is no active component instance to be associated with.`\n );\n }\n const ret = !!(process.env.NODE_ENV !== \"production\") ? readonly(r) : r;\n if (!!(process.env.NODE_ENV !== \"production\")) {\n knownTemplateRefs.add(ret);\n }\n return ret;\n}\n\nfunction setRef(rawRef, oldRawRef, parentSuspense, vnode, isUnmount = false) {\n if (isArray(rawRef)) {\n rawRef.forEach(\n (r, i) => setRef(\n r,\n oldRawRef && (isArray(oldRawRef) ? oldRawRef[i] : oldRawRef),\n parentSuspense,\n vnode,\n isUnmount\n )\n );\n return;\n }\n if (isAsyncWrapper(vnode) && !isUnmount) {\n if (vnode.shapeFlag & 512 && vnode.type.__asyncResolved && vnode.component.subTree.component) {\n setRef(rawRef, oldRawRef, parentSuspense, vnode.component.subTree);\n }\n return;\n }\n const refValue = vnode.shapeFlag & 4 ? getComponentPublicInstance(vnode.component) : vnode.el;\n const value = isUnmount ? null : refValue;\n const { i: owner, r: ref } = rawRef;\n if (!!(process.env.NODE_ENV !== \"production\") && !owner) {\n warn$1(\n `Missing ref owner context. ref cannot be used on hoisted vnodes. A vnode with ref must be created inside the render function.`\n );\n return;\n }\n const oldRef = oldRawRef && oldRawRef.r;\n const refs = owner.refs === EMPTY_OBJ ? owner.refs = {} : owner.refs;\n const setupState = owner.setupState;\n const rawSetupState = toRaw(setupState);\n const canSetSetupRef = setupState === EMPTY_OBJ ? () => false : (key) => {\n if (!!(process.env.NODE_ENV !== \"production\")) {\n if (hasOwn(rawSetupState, key) && !isRef(rawSetupState[key])) {\n warn$1(\n `Template ref \"${key}\" used on a non-ref value. It will not work in the production build.`\n );\n }\n if (knownTemplateRefs.has(rawSetupState[key])) {\n return false;\n }\n }\n return hasOwn(rawSetupState, key);\n };\n if (oldRef != null && oldRef !== ref) {\n if (isString(oldRef)) {\n refs[oldRef] = null;\n if (canSetSetupRef(oldRef)) {\n setupState[oldRef] = null;\n }\n } else if (isRef(oldRef)) {\n oldRef.value = null;\n }\n }\n if (isFunction(ref)) {\n callWithErrorHandling(ref, owner, 12, [value, refs]);\n } else {\n const _isString = isString(ref);\n const _isRef = isRef(ref);\n if (_isString || _isRef) {\n const doSet = () => {\n if (rawRef.f) {\n const existing = _isString ? canSetSetupRef(ref) ? setupState[ref] : refs[ref] : ref.value;\n if (isUnmount) {\n isArray(existing) && remove(existing, refValue);\n } else {\n if (!isArray(existing)) {\n if (_isString) {\n refs[ref] = [refValue];\n if (canSetSetupRef(ref)) {\n setupState[ref] = refs[ref];\n }\n } else {\n ref.value = [refValue];\n if (rawRef.k) refs[rawRef.k] = ref.value;\n }\n } else if (!existing.includes(refValue)) {\n existing.push(refValue);\n }\n }\n } else if (_isString) {\n refs[ref] = value;\n if (canSetSetupRef(ref)) {\n setupState[ref] = value;\n }\n } else if (_isRef) {\n ref.value = value;\n if (rawRef.k) refs[rawRef.k] = value;\n } else if (!!(process.env.NODE_ENV !== \"production\")) {\n warn$1(\"Invalid template ref type:\", ref, `(${typeof ref})`);\n }\n };\n if (value) {\n doSet.id = -1;\n queuePostRenderEffect(doSet, parentSuspense);\n } else {\n doSet();\n }\n } else if (!!(process.env.NODE_ENV !== \"production\")) {\n warn$1(\"Invalid template ref type:\", ref, `(${typeof ref})`);\n }\n }\n}\n\nlet hasLoggedMismatchError = false;\nconst logMismatchError = () => {\n if (hasLoggedMismatchError) {\n return;\n }\n console.error(\"Hydration completed but contains mismatches.\");\n hasLoggedMismatchError = true;\n};\nconst isSVGContainer = (container) => container.namespaceURI.includes(\"svg\") && container.tagName !== \"foreignObject\";\nconst isMathMLContainer = (container) => container.namespaceURI.includes(\"MathML\");\nconst getContainerType = (container) => {\n if (container.nodeType !== 1) return void 0;\n if (isSVGContainer(container)) return \"svg\";\n if (isMathMLContainer(container)) return \"mathml\";\n return void 0;\n};\nconst isComment = (node) => node.nodeType === 8;\nfunction createHydrationFunctions(rendererInternals) {\n const {\n mt: mountComponent,\n p: patch,\n o: {\n patchProp,\n createText,\n nextSibling,\n parentNode,\n remove,\n insert,\n createComment\n }\n } = rendererInternals;\n const hydrate = (vnode, container) => {\n if (!container.hasChildNodes()) {\n (!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_HYDRATION_MISMATCH_DETAILS__) && warn$1(\n `Attempting to hydrate existing markup but container is empty. Performing full mount instead.`\n );\n patch(null, vnode, container);\n flushPostFlushCbs();\n container._vnode = vnode;\n return;\n }\n hydrateNode(container.firstChild, vnode, null, null, null);\n flushPostFlushCbs();\n container._vnode = vnode;\n };\n const hydrateNode = (node, vnode, parentComponent, parentSuspense, slotScopeIds, optimized = false) => {\n optimized = optimized || !!vnode.dynamicChildren;\n const isFragmentStart = isComment(node) && node.data === \"[\";\n const onMismatch = () => handleMismatch(\n node,\n vnode,\n parentComponent,\n parentSuspense,\n slotScopeIds,\n isFragmentStart\n );\n const { type, ref, shapeFlag, patchFlag } = vnode;\n let domType = node.nodeType;\n vnode.el = node;\n if (!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_DEVTOOLS__) {\n def(node, \"__vnode\", vnode, true);\n def(node, \"__vueParentComponent\", parentComponent, true);\n }\n if (patchFlag === -2) {\n optimized = false;\n vnode.dynamicChildren = null;\n }\n let nextNode = null;\n switch (type) {\n case Text:\n if (domType !== 3) {\n if (vnode.children === \"\") {\n insert(vnode.el = createText(\"\"), parentNode(node), node);\n nextNode = node;\n } else {\n nextNode = onMismatch();\n }\n } else {\n if (node.data !== vnode.children) {\n (!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_HYDRATION_MISMATCH_DETAILS__) && warn$1(\n `Hydration text mismatch in`,\n node.parentNode,\n `\n - rendered on server: ${JSON.stringify(\n node.data\n )}\n - expected on client: ${JSON.stringify(vnode.children)}`\n );\n logMismatchError();\n node.data = vnode.children;\n }\n nextNode = nextSibling(node);\n }\n break;\n case Comment:\n if (isTemplateNode(node)) {\n nextNode = nextSibling(node);\n replaceNode(\n vnode.el = node.content.firstChild,\n node,\n parentComponent\n );\n } else if (domType !== 8 || isFragmentStart) {\n nextNode = onMismatch();\n } else {\n nextNode = nextSibling(node);\n }\n break;\n case Static:\n if (isFragmentStart) {\n node = nextSibling(node);\n domType = node.nodeType;\n }\n if (domType === 1 || domType === 3) {\n nextNode = node;\n const needToAdoptContent = !vnode.children.length;\n for (let i = 0; i < vnode.staticCount; i++) {\n if (needToAdoptContent)\n vnode.children += nextNode.nodeType === 1 ? nextNode.outerHTML : nextNode.data;\n if (i === vnode.staticCount - 1) {\n vnode.anchor = nextNode;\n }\n nextNode = nextSibling(nextNode);\n }\n return isFragmentStart ? nextSibling(nextNode) : nextNode;\n } else {\n onMismatch();\n }\n break;\n case Fragment:\n if (!isFragmentStart) {\n nextNode = onMismatch();\n } else {\n nextNode = hydrateFragment(\n node,\n vnode,\n parentComponent,\n parentSuspense,\n slotScopeIds,\n optimized\n );\n }\n break;\n default:\n if (shapeFlag & 1) {\n if ((domType !== 1 || vnode.type.toLowerCase() !== node.tagName.toLowerCase()) && !isTemplateNode(node)) {\n nextNode = onMismatch();\n } else {\n nextNode = hydrateElement(\n node,\n vnode,\n parentComponent,\n parentSuspense,\n slotScopeIds,\n optimized\n );\n }\n } else if (shapeFlag & 6) {\n vnode.slotScopeIds = slotScopeIds;\n const container = parentNode(node);\n if (isFragmentStart) {\n nextNode = locateClosingAnchor(node);\n } else if (isComment(node) && node.data === \"teleport start\") {\n nextNode = locateClosingAnchor(node, node.data, \"teleport end\");\n } else {\n nextNode = nextSibling(node);\n }\n mountComponent(\n vnode,\n container,\n null,\n parentComponent,\n parentSuspense,\n getContainerType(container),\n optimized\n );\n if (isAsyncWrapper(vnode) && !vnode.type.__asyncResolved) {\n let subTree;\n if (isFragmentStart) {\n subTree = createVNode(Fragment);\n subTree.anchor = nextNode ? nextNode.previousSibling : container.lastChild;\n } else {\n subTree = node.nodeType === 3 ? createTextVNode(\"\") : createVNode(\"div\");\n }\n subTree.el = node;\n vnode.component.subTree = subTree;\n }\n } else if (shapeFlag & 64) {\n if (domType !== 8) {\n nextNode = onMismatch();\n } else {\n nextNode = vnode.type.hydrate(\n node,\n vnode,\n parentComponent,\n parentSuspense,\n slotScopeIds,\n optimized,\n rendererInternals,\n hydrateChildren\n );\n }\n } else if (shapeFlag & 128) {\n nextNode = vnode.type.hydrate(\n node,\n vnode,\n parentComponent,\n parentSuspense,\n getContainerType(parentNode(node)),\n slotScopeIds,\n optimized,\n rendererInternals,\n hydrateNode\n );\n } else if (!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_HYDRATION_MISMATCH_DETAILS__) {\n warn$1(\"Invalid HostVNode type:\", type, `(${typeof type})`);\n }\n }\n if (ref != null) {\n setRef(ref, null, parentSuspense, vnode);\n }\n return nextNode;\n };\n const hydrateElement = (el, vnode, parentComponent, parentSuspense, slotScopeIds, optimized) => {\n optimized = optimized || !!vnode.dynamicChildren;\n const { type, props, patchFlag, shapeFlag, dirs, transition } = vnode;\n const forcePatch = type === \"input\" || type === \"option\";\n if (!!(process.env.NODE_ENV !== \"production\") || forcePatch || patchFlag !== -1) {\n if (dirs) {\n invokeDirectiveHook(vnode, null, parentComponent, \"created\");\n }\n let needCallTransitionHooks = false;\n if (isTemplateNode(el)) {\n needCallTransitionHooks = needTransition(\n null,\n // no need check parentSuspense in hydration\n transition\n ) && parentComponent && parentComponent.vnode.props && parentComponent.vnode.props.appear;\n const content = el.content.firstChild;\n if (needCallTransitionHooks) {\n transition.beforeEnter(content);\n }\n replaceNode(content, el, parentComponent);\n vnode.el = el = content;\n }\n if (shapeFlag & 16 && // skip if element has innerHTML / textContent\n !(props && (props.innerHTML || props.textContent))) {\n let next = hydrateChildren(\n el.firstChild,\n vnode,\n el,\n parentComponent,\n parentSuspense,\n slotScopeIds,\n optimized\n );\n let hasWarned = false;\n while (next) {\n if (!isMismatchAllowed(el, 1 /* CHILDREN */)) {\n if ((!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_HYDRATION_MISMATCH_DETAILS__) && !hasWarned) {\n warn$1(\n `Hydration children mismatch on`,\n el,\n `\nServer rendered element contains more child nodes than client vdom.`\n );\n hasWarned = true;\n }\n logMismatchError();\n }\n const cur = next;\n next = next.nextSibling;\n remove(cur);\n }\n } else if (shapeFlag & 8) {\n let clientText = vnode.children;\n if (clientText[0] === \"\\n\" && (el.tagName === \"PRE\" || el.tagName === \"TEXTAREA\")) {\n clientText = clientText.slice(1);\n }\n if (el.textContent !== clientText) {\n if (!isMismatchAllowed(el, 0 /* TEXT */)) {\n (!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_HYDRATION_MISMATCH_DETAILS__) && warn$1(\n `Hydration text content mismatch on`,\n el,\n `\n - rendered on server: ${el.textContent}\n - expected on client: ${vnode.children}`\n );\n logMismatchError();\n }\n el.textContent = vnode.children;\n }\n }\n if (props) {\n if (!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_HYDRATION_MISMATCH_DETAILS__ || forcePatch || !optimized || patchFlag & (16 | 32)) {\n const isCustomElement = el.tagName.includes(\"-\");\n for (const key in props) {\n if ((!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_HYDRATION_MISMATCH_DETAILS__) && // #11189 skip if this node has directives that have created hooks\n // as it could have mutated the DOM in any possible way\n !(dirs && dirs.some((d) => d.dir.created)) && propHasMismatch(el, key, props[key], vnode, parentComponent)) {\n logMismatchError();\n }\n if (forcePatch && (key.endsWith(\"value\") || key === \"indeterminate\") || isOn(key) && !isReservedProp(key) || // force hydrate v-bind with .prop modifiers\n key[0] === \".\" || isCustomElement) {\n patchProp(el, key, null, props[key], void 0, parentComponent);\n }\n }\n } else if (props.onClick) {\n patchProp(\n el,\n \"onClick\",\n null,\n props.onClick,\n void 0,\n parentComponent\n );\n } else if (patchFlag & 4 && isReactive(props.style)) {\n for (const key in props.style) props.style[key];\n }\n }\n let vnodeHooks;\n if (vnodeHooks = props && props.onVnodeBeforeMount) {\n invokeVNodeHook(vnodeHooks, parentComponent, vnode);\n }\n if (dirs) {\n invokeDirectiveHook(vnode, null, parentComponent, \"beforeMount\");\n }\n if ((vnodeHooks = props && props.onVnodeMounted) || dirs || needCallTransitionHooks) {\n queueEffectWithSuspense(() => {\n vnodeHooks && invokeVNodeHook(vnodeHooks, parentComponent, vnode);\n needCallTransitionHooks && transition.enter(el);\n dirs && invokeDirectiveHook(vnode, null, parentComponent, \"mounted\");\n }, parentSuspense);\n }\n }\n return el.nextSibling;\n };\n const hydrateChildren = (node, parentVNode, container, parentComponent, parentSuspense, slotScopeIds, optimized) => {\n optimized = optimized || !!parentVNode.dynamicChildren;\n const children = parentVNode.children;\n const l = children.length;\n let hasWarned = false;\n for (let i = 0; i < l; i++) {\n const vnode = optimized ? children[i] : children[i] = normalizeVNode(children[i]);\n const isText = vnode.type === Text;\n if (node) {\n if (isText && !optimized) {\n if (i + 1 < l && normalizeVNode(children[i + 1]).type === Text) {\n insert(\n createText(\n node.data.slice(vnode.children.length)\n ),\n container,\n nextSibling(node)\n );\n node.data = vnode.children;\n }\n }\n node = hydrateNode(\n node,\n vnode,\n parentComponent,\n parentSuspense,\n slotScopeIds,\n optimized\n );\n } else if (isText && !vnode.children) {\n insert(vnode.el = createText(\"\"), container);\n } else {\n if (!isMismatchAllowed(container, 1 /* CHILDREN */)) {\n if ((!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_HYDRATION_MISMATCH_DETAILS__) && !hasWarned) {\n warn$1(\n `Hydration children mismatch on`,\n container,\n `\nServer rendered element contains fewer child nodes than client vdom.`\n );\n hasWarned = true;\n }\n logMismatchError();\n }\n patch(\n null,\n vnode,\n container,\n null,\n parentComponent,\n parentSuspense,\n getContainerType(container),\n slotScopeIds\n );\n }\n }\n return node;\n };\n const hydrateFragment = (node, vnode, parentComponent, parentSuspense, slotScopeIds, optimized) => {\n const { slotScopeIds: fragmentSlotScopeIds } = vnode;\n if (fragmentSlotScopeIds) {\n slotScopeIds = slotScopeIds ? slotScopeIds.concat(fragmentSlotScopeIds) : fragmentSlotScopeIds;\n }\n const container = parentNode(node);\n const next = hydrateChildren(\n nextSibling(node),\n vnode,\n container,\n parentComponent,\n parentSuspense,\n slotScopeIds,\n optimized\n );\n if (next && isComment(next) && next.data === \"]\") {\n return nextSibling(vnode.anchor = next);\n } else {\n logMismatchError();\n insert(vnode.anchor = createComment(`]`), container, next);\n return next;\n }\n };\n const handleMismatch = (node, vnode, parentComponent, parentSuspense, slotScopeIds, isFragment) => {\n if (!isMismatchAllowed(node.parentElement, 1 /* CHILDREN */)) {\n (!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_HYDRATION_MISMATCH_DETAILS__) && warn$1(\n `Hydration node mismatch:\n- rendered on server:`,\n node,\n node.nodeType === 3 ? `(text)` : isComment(node) && node.data === \"[\" ? `(start of fragment)` : ``,\n `\n- expected on client:`,\n vnode.type\n );\n logMismatchError();\n }\n vnode.el = null;\n if (isFragment) {\n const end = locateClosingAnchor(node);\n while (true) {\n const next2 = nextSibling(node);\n if (next2 && next2 !== end) {\n remove(next2);\n } else {\n break;\n }\n }\n }\n const next = nextSibling(node);\n const container = parentNode(node);\n remove(node);\n patch(\n null,\n vnode,\n container,\n next,\n parentComponent,\n parentSuspense,\n getContainerType(container),\n slotScopeIds\n );\n if (parentComponent) {\n parentComponent.vnode.el = vnode.el;\n updateHOCHostEl(parentComponent, vnode.el);\n }\n return next;\n };\n const locateClosingAnchor = (node, open = \"[\", close = \"]\") => {\n let match = 0;\n while (node) {\n node = nextSibling(node);\n if (node && isComment(node)) {\n if (node.data === open) match++;\n if (node.data === close) {\n if (match === 0) {\n return nextSibling(node);\n } else {\n match--;\n }\n }\n }\n }\n return node;\n };\n const replaceNode = (newNode, oldNode, parentComponent) => {\n const parentNode2 = oldNode.parentNode;\n if (parentNode2) {\n parentNode2.replaceChild(newNode, oldNode);\n }\n let parent = parentComponent;\n while (parent) {\n if (parent.vnode.el === oldNode) {\n parent.vnode.el = parent.subTree.el = newNode;\n }\n parent = parent.parent;\n }\n };\n const isTemplateNode = (node) => {\n return node.nodeType === 1 && node.tagName === \"TEMPLATE\";\n };\n return [hydrate, hydrateNode];\n}\nfunction propHasMismatch(el, key, clientValue, vnode, instance) {\n let mismatchType;\n let mismatchKey;\n let actual;\n let expected;\n if (key === \"class\") {\n actual = el.getAttribute(\"class\");\n expected = normalizeClass(clientValue);\n if (!isSetEqual(toClassSet(actual || \"\"), toClassSet(expected))) {\n mismatchType = 2 /* CLASS */;\n mismatchKey = `class`;\n }\n } else if (key === \"style\") {\n actual = el.getAttribute(\"style\") || \"\";\n expected = isString(clientValue) ? clientValue : stringifyStyle(normalizeStyle(clientValue));\n const actualMap = toStyleMap(actual);\n const expectedMap = toStyleMap(expected);\n if (vnode.dirs) {\n for (const { dir, value } of vnode.dirs) {\n if (dir.name === \"show\" && !value) {\n expectedMap.set(\"display\", \"none\");\n }\n }\n }\n if (instance) {\n resolveCssVars(instance, vnode, expectedMap);\n }\n if (!isMapEqual(actualMap, expectedMap)) {\n mismatchType = 3 /* STYLE */;\n mismatchKey = \"style\";\n }\n } else if (el instanceof SVGElement && isKnownSvgAttr(key) || el instanceof HTMLElement && (isBooleanAttr(key) || isKnownHtmlAttr(key))) {\n if (isBooleanAttr(key)) {\n actual = el.hasAttribute(key);\n expected = includeBooleanAttr(clientValue);\n } else if (clientValue == null) {\n actual = el.hasAttribute(key);\n expected = false;\n } else {\n if (el.hasAttribute(key)) {\n actual = el.getAttribute(key);\n } else if (key === \"value\" && el.tagName === \"TEXTAREA\") {\n actual = el.value;\n } else {\n actual = false;\n }\n expected = isRenderableAttrValue(clientValue) ? String(clientValue) : false;\n }\n if (actual !== expected) {\n mismatchType = 4 /* ATTRIBUTE */;\n mismatchKey = key;\n }\n }\n if (mismatchType != null && !isMismatchAllowed(el, mismatchType)) {\n const format = (v) => v === false ? `(not rendered)` : `${mismatchKey}=\"${v}\"`;\n const preSegment = `Hydration ${MismatchTypeString[mismatchType]} mismatch on`;\n const postSegment = `\n - rendered on server: ${format(actual)}\n - expected on client: ${format(expected)}\n Note: this mismatch is check-only. The DOM will not be rectified in production due to performance overhead.\n You should fix the source of the mismatch.`;\n {\n warn$1(preSegment, el, postSegment);\n }\n return true;\n }\n return false;\n}\nfunction toClassSet(str) {\n return new Set(str.trim().split(/\\s+/));\n}\nfunction isSetEqual(a, b) {\n if (a.size !== b.size) {\n return false;\n }\n for (const s of a) {\n if (!b.has(s)) {\n return false;\n }\n }\n return true;\n}\nfunction toStyleMap(str) {\n const styleMap = /* @__PURE__ */ new Map();\n for (const item of str.split(\";\")) {\n let [key, value] = item.split(\":\");\n key = key.trim();\n value = value && value.trim();\n if (key && value) {\n styleMap.set(key, value);\n }\n }\n return styleMap;\n}\nfunction isMapEqual(a, b) {\n if (a.size !== b.size) {\n return false;\n }\n for (const [key, value] of a) {\n if (value !== b.get(key)) {\n return false;\n }\n }\n return true;\n}\nfunction resolveCssVars(instance, vnode, expectedMap) {\n const root = instance.subTree;\n if (instance.getCssVars && (vnode === root || root && root.type === Fragment && root.children.includes(vnode))) {\n const cssVars = instance.getCssVars();\n for (const key in cssVars) {\n expectedMap.set(\n `--${getEscapedCssVarName(key, false)}`,\n String(cssVars[key])\n );\n }\n }\n if (vnode === root && instance.parent) {\n resolveCssVars(instance.parent, instance.vnode, expectedMap);\n }\n}\nconst allowMismatchAttr = \"data-allow-mismatch\";\nconst MismatchTypeString = {\n [0 /* TEXT */]: \"text\",\n [1 /* CHILDREN */]: \"children\",\n [2 /* CLASS */]: \"class\",\n [3 /* STYLE */]: \"style\",\n [4 /* ATTRIBUTE */]: \"attribute\"\n};\nfunction isMismatchAllowed(el, allowedType) {\n if (allowedType === 0 /* TEXT */ || allowedType === 1 /* CHILDREN */) {\n while (el && !el.hasAttribute(allowMismatchAttr)) {\n el = el.parentElement;\n }\n }\n const allowedAttr = el && el.getAttribute(allowMismatchAttr);\n if (allowedAttr == null) {\n return false;\n } else if (allowedAttr === \"\") {\n return true;\n } else {\n const list = allowedAttr.split(\",\");\n if (allowedType === 0 /* TEXT */ && list.includes(\"children\")) {\n return true;\n }\n return allowedAttr.split(\",\").includes(MismatchTypeString[allowedType]);\n }\n}\n\nconst requestIdleCallback = getGlobalThis().requestIdleCallback || ((cb) => setTimeout(cb, 1));\nconst cancelIdleCallback = getGlobalThis().cancelIdleCallback || ((id) => clearTimeout(id));\nconst hydrateOnIdle = (timeout = 1e4) => (hydrate) => {\n const id = requestIdleCallback(hydrate, { timeout });\n return () => cancelIdleCallback(id);\n};\nfunction elementIsVisibleInViewport(el) {\n const { top, left, bottom, right } = el.getBoundingClientRect();\n const { innerHeight, innerWidth } = window;\n return (top > 0 && top < innerHeight || bottom > 0 && bottom < innerHeight) && (left > 0 && left < innerWidth || right > 0 && right < innerWidth);\n}\nconst hydrateOnVisible = (opts) => (hydrate, forEach) => {\n const ob = new IntersectionObserver((entries) => {\n for (const e of entries) {\n if (!e.isIntersecting) continue;\n ob.disconnect();\n hydrate();\n break;\n }\n }, opts);\n forEach((el) => {\n if (!(el instanceof Element)) return;\n if (elementIsVisibleInViewport(el)) {\n hydrate();\n ob.disconnect();\n return false;\n }\n ob.observe(el);\n });\n return () => ob.disconnect();\n};\nconst hydrateOnMediaQuery = (query) => (hydrate) => {\n if (query) {\n const mql = matchMedia(query);\n if (mql.matches) {\n hydrate();\n } else {\n mql.addEventListener(\"change\", hydrate, { once: true });\n return () => mql.removeEventListener(\"change\", hydrate);\n }\n }\n};\nconst hydrateOnInteraction = (interactions = []) => (hydrate, forEach) => {\n if (isString(interactions)) interactions = [interactions];\n let hasHydrated = false;\n const doHydrate = (e) => {\n if (!hasHydrated) {\n hasHydrated = true;\n teardown();\n hydrate();\n e.target.dispatchEvent(new e.constructor(e.type, e));\n }\n };\n const teardown = () => {\n forEach((el) => {\n for (const i of interactions) {\n el.removeEventListener(i, doHydrate);\n }\n });\n };\n forEach((el) => {\n for (const i of interactions) {\n el.addEventListener(i, doHydrate, { once: true });\n }\n });\n return teardown;\n};\nfunction forEachElement(node, cb) {\n if (isComment(node) && node.data === \"[\") {\n let depth = 1;\n let next = node.nextSibling;\n while (next) {\n if (next.nodeType === 1) {\n const result = cb(next);\n if (result === false) {\n break;\n }\n } else if (isComment(next)) {\n if (next.data === \"]\") {\n if (--depth === 0) break;\n } else if (next.data === \"[\") {\n depth++;\n }\n }\n next = next.nextSibling;\n }\n } else {\n cb(node);\n }\n}\n\nconst isAsyncWrapper = (i) => !!i.type.__asyncLoader;\n/*! #__NO_SIDE_EFFECTS__ */\n// @__NO_SIDE_EFFECTS__\nfunction defineAsyncComponent(source) {\n if (isFunction(source)) {\n source = { loader: source };\n }\n const {\n loader,\n loadingComponent,\n errorComponent,\n delay = 200,\n hydrate: hydrateStrategy,\n timeout,\n // undefined = never times out\n suspensible = true,\n onError: userOnError\n } = source;\n let pendingRequest = null;\n let resolvedComp;\n let retries = 0;\n const retry = () => {\n retries++;\n pendingRequest = null;\n return load();\n };\n const load = () => {\n let thisRequest;\n return pendingRequest || (thisRequest = pendingRequest = loader().catch((err) => {\n err = err instanceof Error ? err : new Error(String(err));\n if (userOnError) {\n return new Promise((resolve, reject) => {\n const userRetry = () => resolve(retry());\n const userFail = () => reject(err);\n userOnError(err, userRetry, userFail, retries + 1);\n });\n } else {\n throw err;\n }\n }).then((comp) => {\n if (thisRequest !== pendingRequest && pendingRequest) {\n return pendingRequest;\n }\n if (!!(process.env.NODE_ENV !== \"production\") && !comp) {\n warn$1(\n `Async component loader resolved to undefined. If you are using retry(), make sure to return its return value.`\n );\n }\n if (comp && (comp.__esModule || comp[Symbol.toStringTag] === \"Module\")) {\n comp = comp.default;\n }\n if (!!(process.env.NODE_ENV !== \"production\") && comp && !isObject(comp) && !isFunction(comp)) {\n throw new Error(`Invalid async component load result: ${comp}`);\n }\n resolvedComp = comp;\n return comp;\n }));\n };\n return defineComponent({\n name: \"AsyncComponentWrapper\",\n __asyncLoader: load,\n __asyncHydrate(el, instance, hydrate) {\n const doHydrate = hydrateStrategy ? () => {\n const teardown = hydrateStrategy(\n hydrate,\n (cb) => forEachElement(el, cb)\n );\n if (teardown) {\n (instance.bum || (instance.bum = [])).push(teardown);\n }\n } : hydrate;\n if (resolvedComp) {\n doHydrate();\n } else {\n load().then(() => !instance.isUnmounted && doHydrate());\n }\n },\n get __asyncResolved() {\n return resolvedComp;\n },\n setup() {\n const instance = currentInstance;\n markAsyncBoundary(instance);\n if (resolvedComp) {\n return () => createInnerComp(resolvedComp, instance);\n }\n const onError = (err) => {\n pendingRequest = null;\n handleError(\n err,\n instance,\n 13,\n !errorComponent\n );\n };\n if (suspensible && instance.suspense || isInSSRComponentSetup) {\n return load().then((comp) => {\n return () => createInnerComp(comp, instance);\n }).catch((err) => {\n onError(err);\n return () => errorComponent ? createVNode(errorComponent, {\n error: err\n }) : null;\n });\n }\n const loaded = ref(false);\n const error = ref();\n const delayed = ref(!!delay);\n if (delay) {\n setTimeout(() => {\n delayed.value = false;\n }, delay);\n }\n if (timeout != null) {\n setTimeout(() => {\n if (!loaded.value && !error.value) {\n const err = new Error(\n `Async component timed out after ${timeout}ms.`\n );\n onError(err);\n error.value = err;\n }\n }, timeout);\n }\n load().then(() => {\n loaded.value = true;\n if (instance.parent && isKeepAlive(instance.parent.vnode)) {\n instance.parent.update();\n }\n }).catch((err) => {\n onError(err);\n error.value = err;\n });\n return () => {\n if (loaded.value && resolvedComp) {\n return createInnerComp(resolvedComp, instance);\n } else if (error.value && errorComponent) {\n return createVNode(errorComponent, {\n error: error.value\n });\n } else if (loadingComponent && !delayed.value) {\n return createVNode(loadingComponent);\n }\n };\n }\n });\n}\nfunction createInnerComp(comp, parent) {\n const { ref: ref2, props, children, ce } = parent.vnode;\n const vnode = createVNode(comp, props, children);\n vnode.ref = ref2;\n vnode.ce = ce;\n delete parent.vnode.ce;\n return vnode;\n}\n\nconst isKeepAlive = (vnode) => vnode.type.__isKeepAlive;\nconst KeepAliveImpl = {\n name: `KeepAlive`,\n // Marker for special handling inside the renderer. We are not using a ===\n // check directly on KeepAlive in the renderer, because importing it directly\n // would prevent it from being tree-shaken.\n __isKeepAlive: true,\n props: {\n include: [String, RegExp, Array],\n exclude: [String, RegExp, Array],\n max: [String, Number]\n },\n setup(props, { slots }) {\n const instance = getCurrentInstance();\n const sharedContext = instance.ctx;\n if (!sharedContext.renderer) {\n return () => {\n const children = slots.default && slots.default();\n return children && children.length === 1 ? children[0] : children;\n };\n }\n const cache = /* @__PURE__ */ new Map();\n const keys = /* @__PURE__ */ new Set();\n let current = null;\n if (!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_DEVTOOLS__) {\n instance.__v_cache = cache;\n }\n const parentSuspense = instance.suspense;\n const {\n renderer: {\n p: patch,\n m: move,\n um: _unmount,\n o: { createElement }\n }\n } = sharedContext;\n const storageContainer = createElement(\"div\");\n sharedContext.activate = (vnode, container, anchor, namespace, optimized) => {\n const instance2 = vnode.component;\n move(vnode, container, anchor, 0, parentSuspense);\n patch(\n instance2.vnode,\n vnode,\n container,\n anchor,\n instance2,\n parentSuspense,\n namespace,\n vnode.slotScopeIds,\n optimized\n );\n queuePostRenderEffect(() => {\n instance2.isDeactivated = false;\n if (instance2.a) {\n invokeArrayFns(instance2.a);\n }\n const vnodeHook = vnode.props && vnode.props.onVnodeMounted;\n if (vnodeHook) {\n invokeVNodeHook(vnodeHook, instance2.parent, vnode);\n }\n }, parentSuspense);\n if (!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_DEVTOOLS__) {\n devtoolsComponentAdded(instance2);\n }\n };\n sharedContext.deactivate = (vnode) => {\n const instance2 = vnode.component;\n invalidateMount(instance2.m);\n invalidateMount(instance2.a);\n move(vnode, storageContainer, null, 1, parentSuspense);\n queuePostRenderEffect(() => {\n if (instance2.da) {\n invokeArrayFns(instance2.da);\n }\n const vnodeHook = vnode.props && vnode.props.onVnodeUnmounted;\n if (vnodeHook) {\n invokeVNodeHook(vnodeHook, instance2.parent, vnode);\n }\n instance2.isDeactivated = true;\n }, parentSuspense);\n if (!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_DEVTOOLS__) {\n devtoolsComponentAdded(instance2);\n }\n };\n function unmount(vnode) {\n resetShapeFlag(vnode);\n _unmount(vnode, instance, parentSuspense, true);\n }\n function pruneCache(filter) {\n cache.forEach((vnode, key) => {\n const name = getComponentName(vnode.type);\n if (name && !filter(name)) {\n pruneCacheEntry(key);\n }\n });\n }\n function pruneCacheEntry(key) {\n const cached = cache.get(key);\n if (cached && (!current || !isSameVNodeType(cached, current))) {\n unmount(cached);\n } else if (current) {\n resetShapeFlag(current);\n }\n cache.delete(key);\n keys.delete(key);\n }\n watch(\n () => [props.include, props.exclude],\n ([include, exclude]) => {\n include && pruneCache((name) => matches(include, name));\n exclude && pruneCache((name) => !matches(exclude, name));\n },\n // prune post-render after `current` has been updated\n { flush: \"post\", deep: true }\n );\n let pendingCacheKey = null;\n const cacheSubtree = () => {\n if (pendingCacheKey != null) {\n if (isSuspense(instance.subTree.type)) {\n queuePostRenderEffect(() => {\n cache.set(pendingCacheKey, getInnerChild(instance.subTree));\n }, instance.subTree.suspense);\n } else {\n cache.set(pendingCacheKey, getInnerChild(instance.subTree));\n }\n }\n };\n onMounted(cacheSubtree);\n onUpdated(cacheSubtree);\n onBeforeUnmount(() => {\n cache.forEach((cached) => {\n const { subTree, suspense } = instance;\n const vnode = getInnerChild(subTree);\n if (cached.type === vnode.type && cached.key === vnode.key) {\n resetShapeFlag(vnode);\n const da = vnode.component.da;\n da && queuePostRenderEffect(da, suspense);\n return;\n }\n unmount(cached);\n });\n });\n return () => {\n pendingCacheKey = null;\n if (!slots.default) {\n return current = null;\n }\n const children = slots.default();\n const rawVNode = children[0];\n if (children.length > 1) {\n if (!!(process.env.NODE_ENV !== \"production\")) {\n warn$1(`KeepAlive should contain exactly one component child.`);\n }\n current = null;\n return children;\n } else if (!isVNode(rawVNode) || !(rawVNode.shapeFlag & 4) && !(rawVNode.shapeFlag & 128)) {\n current = null;\n return rawVNode;\n }\n let vnode = getInnerChild(rawVNode);\n if (vnode.type === Comment) {\n current = null;\n return vnode;\n }\n const comp = vnode.type;\n const name = getComponentName(\n isAsyncWrapper(vnode) ? vnode.type.__asyncResolved || {} : comp\n );\n const { include, exclude, max } = props;\n if (include && (!name || !matches(include, name)) || exclude && name && matches(exclude, name)) {\n vnode.shapeFlag &= ~256;\n current = vnode;\n return rawVNode;\n }\n const key = vnode.key == null ? comp : vnode.key;\n const cachedVNode = cache.get(key);\n if (vnode.el) {\n vnode = cloneVNode(vnode);\n if (rawVNode.shapeFlag & 128) {\n rawVNode.ssContent = vnode;\n }\n }\n pendingCacheKey = key;\n if (cachedVNode) {\n vnode.el = cachedVNode.el;\n vnode.component = cachedVNode.component;\n if (vnode.transition) {\n setTransitionHooks(vnode, vnode.transition);\n }\n vnode.shapeFlag |= 512;\n keys.delete(key);\n keys.add(key);\n } else {\n keys.add(key);\n if (max && keys.size > parseInt(max, 10)) {\n pruneCacheEntry(keys.values().next().value);\n }\n }\n vnode.shapeFlag |= 256;\n current = vnode;\n return isSuspense(rawVNode.type) ? rawVNode : vnode;\n };\n }\n};\nconst KeepAlive = KeepAliveImpl;\nfunction matches(pattern, name) {\n if (isArray(pattern)) {\n return pattern.some((p) => matches(p, name));\n } else if (isString(pattern)) {\n return pattern.split(\",\").includes(name);\n } else if (isRegExp(pattern)) {\n pattern.lastIndex = 0;\n return pattern.test(name);\n }\n return false;\n}\nfunction onActivated(hook, target) {\n registerKeepAliveHook(hook, \"a\", target);\n}\nfunction onDeactivated(hook, target) {\n registerKeepAliveHook(hook, \"da\", target);\n}\nfunction registerKeepAliveHook(hook, type, target = currentInstance) {\n const wrappedHook = hook.__wdc || (hook.__wdc = () => {\n let current = target;\n while (current) {\n if (current.isDeactivated) {\n return;\n }\n current = current.parent;\n }\n return hook();\n });\n injectHook(type, wrappedHook, target);\n if (target) {\n let current = target.parent;\n while (current && current.parent) {\n if (isKeepAlive(current.parent.vnode)) {\n injectToKeepAliveRoot(wrappedHook, type, target, current);\n }\n current = current.parent;\n }\n }\n}\nfunction injectToKeepAliveRoot(hook, type, target, keepAliveRoot) {\n const injected = injectHook(\n type,\n hook,\n keepAliveRoot,\n true\n /* prepend */\n );\n onUnmounted(() => {\n remove(keepAliveRoot[type], injected);\n }, target);\n}\nfunction resetShapeFlag(vnode) {\n vnode.shapeFlag &= ~256;\n vnode.shapeFlag &= ~512;\n}\nfunction getInnerChild(vnode) {\n return vnode.shapeFlag & 128 ? vnode.ssContent : vnode;\n}\n\nfunction injectHook(type, hook, target = currentInstance, prepend = false) {\n if (target) {\n const hooks = target[type] || (target[type] = []);\n const wrappedHook = hook.__weh || (hook.__weh = (...args) => {\n pauseTracking();\n const reset = setCurrentInstance(target);\n const res = callWithAsyncErrorHandling(hook, target, type, args);\n reset();\n resetTracking();\n return res;\n });\n if (prepend) {\n hooks.unshift(wrappedHook);\n } else {\n hooks.push(wrappedHook);\n }\n return wrappedHook;\n } else if (!!(process.env.NODE_ENV !== \"production\")) {\n const apiName = toHandlerKey(ErrorTypeStrings$1[type].replace(/ hook$/, \"\"));\n warn$1(\n `${apiName} is called when there is no active component instance to be associated with. Lifecycle injection APIs can only be used during execution of setup().` + (` If you are using async setup(), make sure to register lifecycle hooks before the first await statement.` )\n );\n }\n}\nconst createHook = (lifecycle) => (hook, target = currentInstance) => {\n if (!isInSSRComponentSetup || lifecycle === \"sp\") {\n injectHook(lifecycle, (...args) => hook(...args), target);\n }\n};\nconst onBeforeMount = createHook(\"bm\");\nconst onMounted = createHook(\"m\");\nconst onBeforeUpdate = createHook(\n \"bu\"\n);\nconst onUpdated = createHook(\"u\");\nconst onBeforeUnmount = createHook(\n \"bum\"\n);\nconst onUnmounted = createHook(\"um\");\nconst onServerPrefetch = createHook(\n \"sp\"\n);\nconst onRenderTriggered = createHook(\"rtg\");\nconst onRenderTracked = createHook(\"rtc\");\nfunction onErrorCaptured(hook, target = currentInstance) {\n injectHook(\"ec\", hook, target);\n}\n\nconst COMPONENTS = \"components\";\nconst DIRECTIVES = \"directives\";\nfunction resolveComponent(name, maybeSelfReference) {\n return resolveAsset(COMPONENTS, name, true, maybeSelfReference) || name;\n}\nconst NULL_DYNAMIC_COMPONENT = Symbol.for(\"v-ndc\");\nfunction resolveDynamicComponent(component) {\n if (isString(component)) {\n return resolveAsset(COMPONENTS, component, false) || component;\n } else {\n return component || NULL_DYNAMIC_COMPONENT;\n }\n}\nfunction resolveDirective(name) {\n return resolveAsset(DIRECTIVES, name);\n}\nfunction resolveAsset(type, name, warnMissing = true, maybeSelfReference = false) {\n const instance = currentRenderingInstance || currentInstance;\n if (instance) {\n const Component = instance.type;\n if (type === COMPONENTS) {\n const selfName = getComponentName(\n Component,\n false\n );\n if (selfName && (selfName === name || selfName === camelize(name) || selfName === capitalize(camelize(name)))) {\n return Component;\n }\n }\n const res = (\n // local registration\n // check instance[type] first which is resolved for options API\n resolve(instance[type] || Component[type], name) || // global registration\n resolve(instance.appContext[type], name)\n );\n if (!res && maybeSelfReference) {\n return Component;\n }\n if (!!(process.env.NODE_ENV !== \"production\") && warnMissing && !res) {\n const extra = type === COMPONENTS ? `\nIf this is a native custom element, make sure to exclude it from component resolution via compilerOptions.isCustomElement.` : ``;\n warn$1(`Failed to resolve ${type.slice(0, -1)}: ${name}${extra}`);\n }\n return res;\n } else if (!!(process.env.NODE_ENV !== \"production\")) {\n warn$1(\n `resolve${capitalize(type.slice(0, -1))} can only be used in render() or setup().`\n );\n }\n}\nfunction resolve(registry, name) {\n return registry && (registry[name] || registry[camelize(name)] || registry[capitalize(camelize(name))]);\n}\n\nfunction renderList(source, renderItem, cache, index) {\n let ret;\n const cached = cache && cache[index];\n const sourceIsArray = isArray(source);\n if (sourceIsArray || isString(source)) {\n const sourceIsReactiveArray = sourceIsArray && isReactive(source);\n let needsWrap = false;\n if (sourceIsReactiveArray) {\n needsWrap = !isShallow(source);\n source = shallowReadArray(source);\n }\n ret = new Array(source.length);\n for (let i = 0, l = source.length; i < l; i++) {\n ret[i] = renderItem(\n needsWrap ? toReactive(source[i]) : source[i],\n i,\n void 0,\n cached && cached[i]\n );\n }\n } else if (typeof source === \"number\") {\n if (!!(process.env.NODE_ENV !== \"production\") && !Number.isInteger(source)) {\n warn$1(`The v-for range expect an integer value but got ${source}.`);\n }\n ret = new Array(source);\n for (let i = 0; i < source; i++) {\n ret[i] = renderItem(i + 1, i, void 0, cached && cached[i]);\n }\n } else if (isObject(source)) {\n if (source[Symbol.iterator]) {\n ret = Array.from(\n source,\n (item, i) => renderItem(item, i, void 0, cached && cached[i])\n );\n } else {\n const keys = Object.keys(source);\n ret = new Array(keys.length);\n for (let i = 0, l = keys.length; i < l; i++) {\n const key = keys[i];\n ret[i] = renderItem(source[key], key, i, cached && cached[i]);\n }\n }\n } else {\n ret = [];\n }\n if (cache) {\n cache[index] = ret;\n }\n return ret;\n}\n\nfunction createSlots(slots, dynamicSlots) {\n for (let i = 0; i < dynamicSlots.length; i++) {\n const slot = dynamicSlots[i];\n if (isArray(slot)) {\n for (let j = 0; j < slot.length; j++) {\n slots[slot[j].name] = slot[j].fn;\n }\n } else if (slot) {\n slots[slot.name] = slot.key ? (...args) => {\n const res = slot.fn(...args);\n if (res) res.key = slot.key;\n return res;\n } : slot.fn;\n }\n }\n return slots;\n}\n\nfunction renderSlot(slots, name, props = {}, fallback, noSlotted) {\n if (currentRenderingInstance.ce || currentRenderingInstance.parent && isAsyncWrapper(currentRenderingInstance.parent) && currentRenderingInstance.parent.ce) {\n if (name !== \"default\") props.name = name;\n return openBlock(), createBlock(\n Fragment,\n null,\n [createVNode(\"slot\", props, fallback && fallback())],\n 64\n );\n }\n let slot = slots[name];\n if (!!(process.env.NODE_ENV !== \"production\") && slot && slot.length > 1) {\n warn$1(\n `SSR-optimized slot function detected in a non-SSR-optimized render function. You need to mark this component with $dynamic-slots in the parent template.`\n );\n slot = () => [];\n }\n if (slot && slot._c) {\n slot._d = false;\n }\n openBlock();\n const validSlotContent = slot && ensureValidVNode(slot(props));\n const slotKey = props.key || // slot content array of a dynamic conditional slot may have a branch\n // key attached in the `createSlots` helper, respect that\n validSlotContent && validSlotContent.key;\n const rendered = createBlock(\n Fragment,\n {\n key: (slotKey && !isSymbol(slotKey) ? slotKey : `_${name}`) + // #7256 force differentiate fallback content from actual content\n (!validSlotContent && fallback ? \"_fb\" : \"\")\n },\n validSlotContent || (fallback ? fallback() : []),\n validSlotContent && slots._ === 1 ? 64 : -2\n );\n if (!noSlotted && rendered.scopeId) {\n rendered.slotScopeIds = [rendered.scopeId + \"-s\"];\n }\n if (slot && slot._c) {\n slot._d = true;\n }\n return rendered;\n}\nfunction ensureValidVNode(vnodes) {\n return vnodes.some((child) => {\n if (!isVNode(child)) return true;\n if (child.type === Comment) return false;\n if (child.type === Fragment && !ensureValidVNode(child.children))\n return false;\n return true;\n }) ? vnodes : null;\n}\n\nfunction toHandlers(obj, preserveCaseIfNecessary) {\n const ret = {};\n if (!!(process.env.NODE_ENV !== \"production\") && !isObject(obj)) {\n warn$1(`v-on with no argument expects an object value.`);\n return ret;\n }\n for (const key in obj) {\n ret[preserveCaseIfNecessary && /[A-Z]/.test(key) ? `on:${key}` : toHandlerKey(key)] = obj[key];\n }\n return ret;\n}\n\nconst getPublicInstance = (i) => {\n if (!i) return null;\n if (isStatefulComponent(i)) return getComponentPublicInstance(i);\n return getPublicInstance(i.parent);\n};\nconst publicPropertiesMap = (\n // Move PURE marker to new line to workaround compiler discarding it\n // due to type annotation\n /* @__PURE__ */ extend(/* @__PURE__ */ Object.create(null), {\n $: (i) => i,\n $el: (i) => i.vnode.el,\n $data: (i) => i.data,\n $props: (i) => !!(process.env.NODE_ENV !== \"production\") ? shallowReadonly(i.props) : i.props,\n $attrs: (i) => !!(process.env.NODE_ENV !== \"production\") ? shallowReadonly(i.attrs) : i.attrs,\n $slots: (i) => !!(process.env.NODE_ENV !== \"production\") ? shallowReadonly(i.slots) : i.slots,\n $refs: (i) => !!(process.env.NODE_ENV !== \"production\") ? shallowReadonly(i.refs) : i.refs,\n $parent: (i) => getPublicInstance(i.parent),\n $root: (i) => getPublicInstance(i.root),\n $host: (i) => i.ce,\n $emit: (i) => i.emit,\n $options: (i) => __VUE_OPTIONS_API__ ? resolveMergedOptions(i) : i.type,\n $forceUpdate: (i) => i.f || (i.f = () => {\n queueJob(i.update);\n }),\n $nextTick: (i) => i.n || (i.n = nextTick.bind(i.proxy)),\n $watch: (i) => __VUE_OPTIONS_API__ ? instanceWatch.bind(i) : NOOP\n })\n);\nconst isReservedPrefix = (key) => key === \"_\" || key === \"$\";\nconst hasSetupBinding = (state, key) => state !== EMPTY_OBJ && !state.__isScriptSetup && hasOwn(state, key);\nconst PublicInstanceProxyHandlers = {\n get({ _: instance }, key) {\n if (key === \"__v_skip\") {\n return true;\n }\n const { ctx, setupState, data, props, accessCache, type, appContext } = instance;\n if (!!(process.env.NODE_ENV !== \"production\") && key === \"__isVue\") {\n return true;\n }\n let normalizedProps;\n if (key[0] !== \"$\") {\n const n = accessCache[key];\n if (n !== void 0) {\n switch (n) {\n case 1 /* SETUP */:\n return setupState[key];\n case 2 /* DATA */:\n return data[key];\n case 4 /* CONTEXT */:\n return ctx[key];\n case 3 /* PROPS */:\n return props[key];\n }\n } else if (hasSetupBinding(setupState, key)) {\n accessCache[key] = 1 /* SETUP */;\n return setupState[key];\n } else if (data !== EMPTY_OBJ && hasOwn(data, key)) {\n accessCache[key] = 2 /* DATA */;\n return data[key];\n } else if (\n // only cache other properties when instance has declared (thus stable)\n // props\n (normalizedProps = instance.propsOptions[0]) && hasOwn(normalizedProps, key)\n ) {\n accessCache[key] = 3 /* PROPS */;\n return props[key];\n } else if (ctx !== EMPTY_OBJ && hasOwn(ctx, key)) {\n accessCache[key] = 4 /* CONTEXT */;\n return ctx[key];\n } else if (!__VUE_OPTIONS_API__ || shouldCacheAccess) {\n accessCache[key] = 0 /* OTHER */;\n }\n }\n const publicGetter = publicPropertiesMap[key];\n let cssModule, globalProperties;\n if (publicGetter) {\n if (key === \"$attrs\") {\n track(instance.attrs, \"get\", \"\");\n !!(process.env.NODE_ENV !== \"production\") && markAttrsAccessed();\n } else if (!!(process.env.NODE_ENV !== \"production\") && key === \"$slots\") {\n track(instance, \"get\", key);\n }\n return publicGetter(instance);\n } else if (\n // css module (injected by vue-loader)\n (cssModule = type.__cssModules) && (cssModule = cssModule[key])\n ) {\n return cssModule;\n } else if (ctx !== EMPTY_OBJ && hasOwn(ctx, key)) {\n accessCache[key] = 4 /* CONTEXT */;\n return ctx[key];\n } else if (\n // global properties\n globalProperties = appContext.config.globalProperties, hasOwn(globalProperties, key)\n ) {\n {\n return globalProperties[key];\n }\n } else if (!!(process.env.NODE_ENV !== \"production\") && currentRenderingInstance && (!isString(key) || // #1091 avoid internal isRef/isVNode checks on component instance leading\n // to infinite warning loop\n key.indexOf(\"__v\") !== 0)) {\n if (data !== EMPTY_OBJ && isReservedPrefix(key[0]) && hasOwn(data, key)) {\n warn$1(\n `Property ${JSON.stringify(\n key\n )} must be accessed via $data because it starts with a reserved character (\"$\" or \"_\") and is not proxied on the render context.`\n );\n } else if (instance === currentRenderingInstance) {\n warn$1(\n `Property ${JSON.stringify(key)} was accessed during render but is not defined on instance.`\n );\n }\n }\n },\n set({ _: instance }, key, value) {\n const { data, setupState, ctx } = instance;\n if (hasSetupBinding(setupState, key)) {\n setupState[key] = value;\n return true;\n } else if (!!(process.env.NODE_ENV !== \"production\") && setupState.__isScriptSetup && hasOwn(setupState, key)) {\n warn$1(`Cannot mutate ';\r\n }\r\n var iframeContents = '' + script + '';\r\n try {\r\n this.myIFrame.doc.open();\r\n this.myIFrame.doc.write(iframeContents);\r\n this.myIFrame.doc.close();\r\n }\r\n catch (e) {\r\n log('frame writing exception');\r\n if (e.stack) {\r\n log(e.stack);\r\n }\r\n log(e);\r\n }\r\n }\r\n else {\r\n this.commandCB = commandCB;\r\n this.onMessageCB = onMessageCB;\r\n }\r\n }\r\n /**\r\n * Each browser has its own funny way to handle iframes. Here we mush them all together into one object that I can\r\n * actually use.\r\n */\r\n FirebaseIFrameScriptHolder.createIFrame_ = function () {\r\n var iframe = document.createElement('iframe');\r\n iframe.style.display = 'none';\r\n // This is necessary in order to initialize the document inside the iframe\r\n if (document.body) {\r\n document.body.appendChild(iframe);\r\n try {\r\n // If document.domain has been modified in IE, this will throw an error, and we need to set the\r\n // domain of the iframe's document manually. We can do this via a javascript: url as the src attribute\r\n // Also note that we must do this *after* the iframe has been appended to the page. Otherwise it doesn't work.\r\n var a = iframe.contentWindow.document;\r\n if (!a) {\r\n // Apologies for the log-spam, I need to do something to keep closure from optimizing out the assignment above.\r\n log('No IE domain setting required');\r\n }\r\n }\r\n catch (e) {\r\n var domain = document.domain;\r\n iframe.src =\r\n \"javascript:void((function(){document.open();document.domain='\" +\r\n domain +\r\n \"';document.close();})())\";\r\n }\r\n }\r\n else {\r\n // LongPollConnection attempts to delay initialization until the document is ready, so hopefully this\r\n // never gets hit.\r\n throw 'Document body has not initialized. Wait to initialize Firebase until after the document is ready.';\r\n }\r\n // Get the document of the iframe in a browser-specific way.\r\n if (iframe.contentDocument) {\r\n iframe.doc = iframe.contentDocument; // Firefox, Opera, Safari\r\n }\r\n else if (iframe.contentWindow) {\r\n iframe.doc = iframe.contentWindow.document; // Internet Explorer\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n }\r\n else if (iframe.document) {\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n iframe.doc = iframe.document; //others?\r\n }\r\n return iframe;\r\n };\r\n /**\r\n * Cancel all outstanding queries and remove the frame.\r\n */\r\n FirebaseIFrameScriptHolder.prototype.close = function () {\r\n var _this = this;\r\n //Mark this iframe as dead, so no new requests are sent.\r\n this.alive = false;\r\n if (this.myIFrame) {\r\n //We have to actually remove all of the html inside this iframe before removing it from the\r\n //window, or IE will continue loading and executing the script tags we've already added, which\r\n //can lead to some errors being thrown. Setting innerHTML seems to be the easiest way to do this.\r\n this.myIFrame.doc.body.innerHTML = '';\r\n setTimeout(function () {\r\n if (_this.myIFrame !== null) {\r\n document.body.removeChild(_this.myIFrame);\r\n _this.myIFrame = null;\r\n }\r\n }, Math.floor(0));\r\n }\r\n // Protect from being called recursively.\r\n var onDisconnect = this.onDisconnect;\r\n if (onDisconnect) {\r\n this.onDisconnect = null;\r\n onDisconnect();\r\n }\r\n };\r\n /**\r\n * Actually start the long-polling session by adding the first script tag(s) to the iframe.\r\n * @param id - The ID of this connection\r\n * @param pw - The password for this connection\r\n */\r\n FirebaseIFrameScriptHolder.prototype.startLongPoll = function (id, pw) {\r\n this.myID = id;\r\n this.myPW = pw;\r\n this.alive = true;\r\n //send the initial request. If there are requests queued, make sure that we transmit as many as we are currently able to.\r\n while (this.newRequest_()) { }\r\n };\r\n /**\r\n * This is called any time someone might want a script tag to be added. It adds a script tag when there aren't\r\n * too many outstanding requests and we are still alive.\r\n *\r\n * If there are outstanding packet segments to send, it sends one. If there aren't, it sends a long-poll anyways if\r\n * needed.\r\n */\r\n FirebaseIFrameScriptHolder.prototype.newRequest_ = function () {\r\n // We keep one outstanding request open all the time to receive data, but if we need to send data\r\n // (pendingSegs.length > 0) then we create a new request to send the data. The server will automatically\r\n // close the old request.\r\n if (this.alive &&\r\n this.sendNewPolls &&\r\n this.outstandingRequests.size < (this.pendingSegs.length > 0 ? 2 : 1)) {\r\n //construct our url\r\n this.currentSerial++;\r\n var urlParams = {};\r\n urlParams[FIREBASE_LONGPOLL_ID_PARAM] = this.myID;\r\n urlParams[FIREBASE_LONGPOLL_PW_PARAM] = this.myPW;\r\n urlParams[FIREBASE_LONGPOLL_SERIAL_PARAM] = this.currentSerial;\r\n var theURL = this.urlFn(urlParams);\r\n //Now add as much data as we can.\r\n var curDataString = '';\r\n var i = 0;\r\n while (this.pendingSegs.length > 0) {\r\n //first, lets see if the next segment will fit.\r\n var nextSeg = this.pendingSegs[0];\r\n if (nextSeg.d.length +\r\n SEG_HEADER_SIZE +\r\n curDataString.length <=\r\n MAX_URL_DATA_SIZE) {\r\n //great, the segment will fit. Lets append it.\r\n var theSeg = this.pendingSegs.shift();\r\n curDataString =\r\n curDataString +\r\n '&' +\r\n FIREBASE_LONGPOLL_SEGMENT_NUM_PARAM +\r\n i +\r\n '=' +\r\n theSeg.seg +\r\n '&' +\r\n FIREBASE_LONGPOLL_SEGMENTS_IN_PACKET +\r\n i +\r\n '=' +\r\n theSeg.ts +\r\n '&' +\r\n FIREBASE_LONGPOLL_DATA_PARAM +\r\n i +\r\n '=' +\r\n theSeg.d;\r\n i++;\r\n }\r\n else {\r\n break;\r\n }\r\n }\r\n theURL = theURL + curDataString;\r\n this.addLongPollTag_(theURL, this.currentSerial);\r\n return true;\r\n }\r\n else {\r\n return false;\r\n }\r\n };\r\n /**\r\n * Queue a packet for transmission to the server.\r\n * @param segnum - A sequential id for this packet segment used for reassembly\r\n * @param totalsegs - The total number of segments in this packet\r\n * @param data - The data for this segment.\r\n */\r\n FirebaseIFrameScriptHolder.prototype.enqueueSegment = function (segnum, totalsegs, data) {\r\n //add this to the queue of segments to send.\r\n this.pendingSegs.push({ seg: segnum, ts: totalsegs, d: data });\r\n //send the data immediately if there isn't already data being transmitted, unless\r\n //startLongPoll hasn't been called yet.\r\n if (this.alive) {\r\n this.newRequest_();\r\n }\r\n };\r\n /**\r\n * Add a script tag for a regular long-poll request.\r\n * @param url - The URL of the script tag.\r\n * @param serial - The serial number of the request.\r\n */\r\n FirebaseIFrameScriptHolder.prototype.addLongPollTag_ = function (url, serial) {\r\n var _this = this;\r\n //remember that we sent this request.\r\n this.outstandingRequests.add(serial);\r\n var doNewRequest = function () {\r\n _this.outstandingRequests.delete(serial);\r\n _this.newRequest_();\r\n };\r\n // If this request doesn't return on its own accord (by the server sending us some data), we'll\r\n // create a new one after the KEEPALIVE interval to make sure we always keep a fresh request open.\r\n var keepaliveTimeout = setTimeout(doNewRequest, Math.floor(KEEPALIVE_REQUEST_INTERVAL));\r\n var readyStateCB = function () {\r\n // Request completed. Cancel the keepalive.\r\n clearTimeout(keepaliveTimeout);\r\n // Trigger a new request so we can continue receiving data.\r\n doNewRequest();\r\n };\r\n this.addTag(url, readyStateCB);\r\n };\r\n /**\r\n * Add an arbitrary script tag to the iframe.\r\n * @param url - The URL for the script tag source.\r\n * @param loadCB - A callback to be triggered once the script has loaded.\r\n */\r\n FirebaseIFrameScriptHolder.prototype.addTag = function (url, loadCB) {\r\n var _this = this;\r\n if (isNodeSdk()) {\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n this.doNodeLongPoll(url, loadCB);\r\n }\r\n else {\r\n setTimeout(function () {\r\n try {\r\n // if we're already closed, don't add this poll\r\n if (!_this.sendNewPolls) {\r\n return;\r\n }\r\n var newScript_1 = _this.myIFrame.doc.createElement('script');\r\n newScript_1.type = 'text/javascript';\r\n newScript_1.async = true;\r\n newScript_1.src = url;\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n newScript_1.onload = newScript_1.onreadystatechange = function () {\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n var rstate = newScript_1.readyState;\r\n if (!rstate || rstate === 'loaded' || rstate === 'complete') {\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n newScript_1.onload = newScript_1.onreadystatechange = null;\r\n if (newScript_1.parentNode) {\r\n newScript_1.parentNode.removeChild(newScript_1);\r\n }\r\n loadCB();\r\n }\r\n };\r\n newScript_1.onerror = function () {\r\n log('Long-poll script failed to load: ' + url);\r\n _this.sendNewPolls = false;\r\n _this.close();\r\n };\r\n _this.myIFrame.doc.body.appendChild(newScript_1);\r\n }\r\n catch (e) {\r\n // TODO: we should make this error visible somehow\r\n }\r\n }, Math.floor(1));\r\n }\r\n };\r\n return FirebaseIFrameScriptHolder;\r\n}());\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nvar WEBSOCKET_MAX_FRAME_SIZE = 16384;\r\nvar WEBSOCKET_KEEPALIVE_INTERVAL = 45000;\r\nvar WebSocketImpl = null;\r\nif (typeof MozWebSocket !== 'undefined') {\r\n WebSocketImpl = MozWebSocket;\r\n}\r\nelse if (typeof WebSocket !== 'undefined') {\r\n WebSocketImpl = WebSocket;\r\n}\r\n/**\r\n * Create a new websocket connection with the given callbacks.\r\n */\r\nvar WebSocketConnection = /** @class */ (function () {\r\n /**\r\n * @param connId identifier for this transport\r\n * @param repoInfo The info for the websocket endpoint.\r\n * @param applicationId The Firebase App ID for this project.\r\n * @param appCheckToken The App Check Token for this client.\r\n * @param authToken The Auth Token for this client.\r\n * @param transportSessionId Optional transportSessionId if this is connecting\r\n * to an existing transport session\r\n * @param lastSessionId Optional lastSessionId if there was a previous\r\n * connection\r\n */\r\n function WebSocketConnection(connId, repoInfo, applicationId, appCheckToken, authToken, transportSessionId, lastSessionId) {\r\n this.connId = connId;\r\n this.applicationId = applicationId;\r\n this.appCheckToken = appCheckToken;\r\n this.authToken = authToken;\r\n this.keepaliveTimer = null;\r\n this.frames = null;\r\n this.totalFrames = 0;\r\n this.bytesSent = 0;\r\n this.bytesReceived = 0;\r\n this.log_ = logWrapper(this.connId);\r\n this.stats_ = statsManagerGetCollection(repoInfo);\r\n this.connURL = WebSocketConnection.connectionURL_(repoInfo, transportSessionId, lastSessionId, appCheckToken);\r\n this.nodeAdmin = repoInfo.nodeAdmin;\r\n }\r\n /**\r\n * @param repoInfo - The info for the websocket endpoint.\r\n * @param transportSessionId - Optional transportSessionId if this is connecting to an existing transport\r\n * session\r\n * @param lastSessionId - Optional lastSessionId if there was a previous connection\r\n * @returns connection url\r\n */\r\n WebSocketConnection.connectionURL_ = function (repoInfo, transportSessionId, lastSessionId, appCheckToken) {\r\n var urlParams = {};\r\n urlParams[VERSION_PARAM] = PROTOCOL_VERSION;\r\n if (!isNodeSdk() &&\r\n typeof location !== 'undefined' &&\r\n location.hostname &&\r\n FORGE_DOMAIN_RE.test(location.hostname)) {\r\n urlParams[REFERER_PARAM] = FORGE_REF;\r\n }\r\n if (transportSessionId) {\r\n urlParams[TRANSPORT_SESSION_PARAM] = transportSessionId;\r\n }\r\n if (lastSessionId) {\r\n urlParams[LAST_SESSION_PARAM] = lastSessionId;\r\n }\r\n if (appCheckToken) {\r\n urlParams[APP_CHECK_TOKEN_PARAM] = appCheckToken;\r\n }\r\n return repoInfoConnectionURL(repoInfo, WEBSOCKET, urlParams);\r\n };\r\n /**\r\n * @param onMessage - Callback when messages arrive\r\n * @param onDisconnect - Callback with connection lost.\r\n */\r\n WebSocketConnection.prototype.open = function (onMessage, onDisconnect) {\r\n var _this = this;\r\n this.onDisconnect = onDisconnect;\r\n this.onMessage = onMessage;\r\n this.log_('Websocket connecting to ' + this.connURL);\r\n this.everConnected_ = false;\r\n // Assume failure until proven otherwise.\r\n PersistentStorage.set('previous_websocket_failure', true);\r\n try {\r\n if (isNodeSdk()) {\r\n var device = this.nodeAdmin ? 'AdminNode' : 'Node';\r\n // UA Format: Firebase////\r\n var options = {\r\n headers: {\r\n 'User-Agent': \"Firebase/\" + PROTOCOL_VERSION + \"/\" + SDK_VERSION + \"/\" + process.platform + \"/\" + device,\r\n 'X-Firebase-GMPID': this.applicationId || ''\r\n }\r\n };\r\n // If using Node with admin creds, AppCheck-related checks are unnecessary.\r\n // Note that we send the credentials here even if they aren't admin credentials, which is\r\n // not a problem.\r\n // Note that this header is just used to bypass appcheck, and the token should still be sent\r\n // through the websocket connection once it is established.\r\n if (this.authToken) {\r\n options.headers['Authorization'] = \"Bearer \" + this.authToken;\r\n }\r\n if (this.appCheckToken) {\r\n options.headers['X-Firebase-AppCheck'] = this.appCheckToken;\r\n }\r\n // Plumb appropriate http_proxy environment variable into faye-websocket if it exists.\r\n var env = process['env'];\r\n var proxy = this.connURL.indexOf('wss://') === 0\r\n ? env['HTTPS_PROXY'] || env['https_proxy']\r\n : env['HTTP_PROXY'] || env['http_proxy'];\r\n if (proxy) {\r\n options['proxy'] = { origin: proxy };\r\n }\r\n this.mySock = new WebSocketImpl(this.connURL, [], options);\r\n }\r\n else {\r\n var options = {\r\n headers: {\r\n 'X-Firebase-GMPID': this.applicationId || '',\r\n 'X-Firebase-AppCheck': this.appCheckToken || ''\r\n }\r\n };\r\n this.mySock = new WebSocketImpl(this.connURL, [], options);\r\n }\r\n }\r\n catch (e) {\r\n this.log_('Error instantiating WebSocket.');\r\n var error = e.message || e.data;\r\n if (error) {\r\n this.log_(error);\r\n }\r\n this.onClosed_();\r\n return;\r\n }\r\n this.mySock.onopen = function () {\r\n _this.log_('Websocket connected.');\r\n _this.everConnected_ = true;\r\n };\r\n this.mySock.onclose = function () {\r\n _this.log_('Websocket connection was disconnected.');\r\n _this.mySock = null;\r\n _this.onClosed_();\r\n };\r\n this.mySock.onmessage = function (m) {\r\n _this.handleIncomingFrame(m);\r\n };\r\n this.mySock.onerror = function (e) {\r\n _this.log_('WebSocket error. Closing connection.');\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n var error = e.message || e.data;\r\n if (error) {\r\n _this.log_(error);\r\n }\r\n _this.onClosed_();\r\n };\r\n };\r\n /**\r\n * No-op for websockets, we don't need to do anything once the connection is confirmed as open\r\n */\r\n WebSocketConnection.prototype.start = function () { };\r\n WebSocketConnection.forceDisallow = function () {\r\n WebSocketConnection.forceDisallow_ = true;\r\n };\r\n WebSocketConnection.isAvailable = function () {\r\n var isOldAndroid = false;\r\n if (typeof navigator !== 'undefined' && navigator.userAgent) {\r\n var oldAndroidRegex = /Android ([0-9]{0,}\\.[0-9]{0,})/;\r\n var oldAndroidMatch = navigator.userAgent.match(oldAndroidRegex);\r\n if (oldAndroidMatch && oldAndroidMatch.length > 1) {\r\n if (parseFloat(oldAndroidMatch[1]) < 4.4) {\r\n isOldAndroid = true;\r\n }\r\n }\r\n }\r\n return (!isOldAndroid &&\r\n WebSocketImpl !== null &&\r\n !WebSocketConnection.forceDisallow_);\r\n };\r\n /**\r\n * Returns true if we previously failed to connect with this transport.\r\n */\r\n WebSocketConnection.previouslyFailed = function () {\r\n // If our persistent storage is actually only in-memory storage,\r\n // we default to assuming that it previously failed to be safe.\r\n return (PersistentStorage.isInMemoryStorage ||\r\n PersistentStorage.get('previous_websocket_failure') === true);\r\n };\r\n WebSocketConnection.prototype.markConnectionHealthy = function () {\r\n PersistentStorage.remove('previous_websocket_failure');\r\n };\r\n WebSocketConnection.prototype.appendFrame_ = function (data) {\r\n this.frames.push(data);\r\n if (this.frames.length === this.totalFrames) {\r\n var fullMess = this.frames.join('');\r\n this.frames = null;\r\n var jsonMess = jsonEval(fullMess);\r\n //handle the message\r\n this.onMessage(jsonMess);\r\n }\r\n };\r\n /**\r\n * @param frameCount - The number of frames we are expecting from the server\r\n */\r\n WebSocketConnection.prototype.handleNewFrameCount_ = function (frameCount) {\r\n this.totalFrames = frameCount;\r\n this.frames = [];\r\n };\r\n /**\r\n * Attempts to parse a frame count out of some text. If it can't, assumes a value of 1\r\n * @returns Any remaining data to be process, or null if there is none\r\n */\r\n WebSocketConnection.prototype.extractFrameCount_ = function (data) {\r\n assert(this.frames === null, 'We already have a frame buffer');\r\n // TODO: The server is only supposed to send up to 9999 frames (i.e. length <= 4), but that isn't being enforced\r\n // currently. So allowing larger frame counts (length <= 6). See https://app.asana.com/0/search/8688598998380/8237608042508\r\n if (data.length <= 6) {\r\n var frameCount = Number(data);\r\n if (!isNaN(frameCount)) {\r\n this.handleNewFrameCount_(frameCount);\r\n return null;\r\n }\r\n }\r\n this.handleNewFrameCount_(1);\r\n return data;\r\n };\r\n /**\r\n * Process a websocket frame that has arrived from the server.\r\n * @param mess - The frame data\r\n */\r\n WebSocketConnection.prototype.handleIncomingFrame = function (mess) {\r\n if (this.mySock === null) {\r\n return; // Chrome apparently delivers incoming packets even after we .close() the connection sometimes.\r\n }\r\n var data = mess['data'];\r\n this.bytesReceived += data.length;\r\n this.stats_.incrementCounter('bytes_received', data.length);\r\n this.resetKeepAlive();\r\n if (this.frames !== null) {\r\n // we're buffering\r\n this.appendFrame_(data);\r\n }\r\n else {\r\n // try to parse out a frame count, otherwise, assume 1 and process it\r\n var remainingData = this.extractFrameCount_(data);\r\n if (remainingData !== null) {\r\n this.appendFrame_(remainingData);\r\n }\r\n }\r\n };\r\n /**\r\n * Send a message to the server\r\n * @param data - The JSON object to transmit\r\n */\r\n WebSocketConnection.prototype.send = function (data) {\r\n this.resetKeepAlive();\r\n var dataStr = stringify(data);\r\n this.bytesSent += dataStr.length;\r\n this.stats_.incrementCounter('bytes_sent', dataStr.length);\r\n //We can only fit a certain amount in each websocket frame, so we need to split this request\r\n //up into multiple pieces if it doesn't fit in one request.\r\n var dataSegs = splitStringBySize(dataStr, WEBSOCKET_MAX_FRAME_SIZE);\r\n //Send the length header\r\n if (dataSegs.length > 1) {\r\n this.sendString_(String(dataSegs.length));\r\n }\r\n //Send the actual data in segments.\r\n for (var i = 0; i < dataSegs.length; i++) {\r\n this.sendString_(dataSegs[i]);\r\n }\r\n };\r\n WebSocketConnection.prototype.shutdown_ = function () {\r\n this.isClosed_ = true;\r\n if (this.keepaliveTimer) {\r\n clearInterval(this.keepaliveTimer);\r\n this.keepaliveTimer = null;\r\n }\r\n if (this.mySock) {\r\n this.mySock.close();\r\n this.mySock = null;\r\n }\r\n };\r\n WebSocketConnection.prototype.onClosed_ = function () {\r\n if (!this.isClosed_) {\r\n this.log_('WebSocket is closing itself');\r\n this.shutdown_();\r\n // since this is an internal close, trigger the close listener\r\n if (this.onDisconnect) {\r\n this.onDisconnect(this.everConnected_);\r\n this.onDisconnect = null;\r\n }\r\n }\r\n };\r\n /**\r\n * External-facing close handler.\r\n * Close the websocket and kill the connection.\r\n */\r\n WebSocketConnection.prototype.close = function () {\r\n if (!this.isClosed_) {\r\n this.log_('WebSocket is being closed');\r\n this.shutdown_();\r\n }\r\n };\r\n /**\r\n * Kill the current keepalive timer and start a new one, to ensure that it always fires N seconds after\r\n * the last activity.\r\n */\r\n WebSocketConnection.prototype.resetKeepAlive = function () {\r\n var _this = this;\r\n clearInterval(this.keepaliveTimer);\r\n this.keepaliveTimer = setInterval(function () {\r\n //If there has been no websocket activity for a while, send a no-op\r\n if (_this.mySock) {\r\n _this.sendString_('0');\r\n }\r\n _this.resetKeepAlive();\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n }, Math.floor(WEBSOCKET_KEEPALIVE_INTERVAL));\r\n };\r\n /**\r\n * Send a string over the websocket.\r\n *\r\n * @param str - String to send.\r\n */\r\n WebSocketConnection.prototype.sendString_ = function (str) {\r\n // Firefox seems to sometimes throw exceptions (NS_ERROR_UNEXPECTED) from websocket .send()\r\n // calls for some unknown reason. We treat these as an error and disconnect.\r\n // See https://app.asana.com/0/58926111402292/68021340250410\r\n try {\r\n this.mySock.send(str);\r\n }\r\n catch (e) {\r\n this.log_('Exception thrown from WebSocket.send():', e.message || e.data, 'Closing connection.');\r\n setTimeout(this.onClosed_.bind(this), 0);\r\n }\r\n };\r\n /**\r\n * Number of response before we consider the connection \"healthy.\"\r\n */\r\n WebSocketConnection.responsesRequiredToBeHealthy = 2;\r\n /**\r\n * Time to wait for the connection te become healthy before giving up.\r\n */\r\n WebSocketConnection.healthyTimeout = 30000;\r\n return WebSocketConnection;\r\n}());\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * Currently simplistic, this class manages what transport a Connection should use at various stages of its\r\n * lifecycle.\r\n *\r\n * It starts with longpolling in a browser, and httppolling on node. It then upgrades to websockets if\r\n * they are available.\r\n */\r\nvar TransportManager = /** @class */ (function () {\r\n /**\r\n * @param repoInfo - Metadata around the namespace we're connecting to\r\n */\r\n function TransportManager(repoInfo) {\r\n this.initTransports_(repoInfo);\r\n }\r\n Object.defineProperty(TransportManager, \"ALL_TRANSPORTS\", {\r\n get: function () {\r\n return [BrowserPollConnection, WebSocketConnection];\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n TransportManager.prototype.initTransports_ = function (repoInfo) {\r\n var e_1, _a;\r\n var isWebSocketsAvailable = WebSocketConnection && WebSocketConnection['isAvailable']();\r\n var isSkipPollConnection = isWebSocketsAvailable && !WebSocketConnection.previouslyFailed();\r\n if (repoInfo.webSocketOnly) {\r\n if (!isWebSocketsAvailable) {\r\n warn(\"wss:// URL used, but browser isn't known to support websockets. Trying anyway.\");\r\n }\r\n isSkipPollConnection = true;\r\n }\r\n if (isSkipPollConnection) {\r\n this.transports_ = [WebSocketConnection];\r\n }\r\n else {\r\n var transports = (this.transports_ = []);\r\n try {\r\n for (var _b = __values(TransportManager.ALL_TRANSPORTS), _c = _b.next(); !_c.done; _c = _b.next()) {\r\n var transport = _c.value;\r\n if (transport && transport['isAvailable']()) {\r\n transports.push(transport);\r\n }\r\n }\r\n }\r\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\r\n finally {\r\n try {\r\n if (_c && !_c.done && (_a = _b.return)) _a.call(_b);\r\n }\r\n finally { if (e_1) throw e_1.error; }\r\n }\r\n }\r\n };\r\n /**\r\n * @returns The constructor for the initial transport to use\r\n */\r\n TransportManager.prototype.initialTransport = function () {\r\n if (this.transports_.length > 0) {\r\n return this.transports_[0];\r\n }\r\n else {\r\n throw new Error('No transports available');\r\n }\r\n };\r\n /**\r\n * @returns The constructor for the next transport, or null\r\n */\r\n TransportManager.prototype.upgradeTransport = function () {\r\n if (this.transports_.length > 1) {\r\n return this.transports_[1];\r\n }\r\n else {\r\n return null;\r\n }\r\n };\r\n return TransportManager;\r\n}());\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n// Abort upgrade attempt if it takes longer than 60s.\r\nvar UPGRADE_TIMEOUT = 60000;\r\n// For some transports (WebSockets), we need to \"validate\" the transport by exchanging a few requests and responses.\r\n// If we haven't sent enough requests within 5s, we'll start sending noop ping requests.\r\nvar DELAY_BEFORE_SENDING_EXTRA_REQUESTS = 5000;\r\n// If the initial data sent triggers a lot of bandwidth (i.e. it's a large put or a listen for a large amount of data)\r\n// then we may not be able to exchange our ping/pong requests within the healthy timeout. So if we reach the timeout\r\n// but we've sent/received enough bytes, we don't cancel the connection.\r\nvar BYTES_SENT_HEALTHY_OVERRIDE = 10 * 1024;\r\nvar BYTES_RECEIVED_HEALTHY_OVERRIDE = 100 * 1024;\r\nvar MESSAGE_TYPE = 't';\r\nvar MESSAGE_DATA = 'd';\r\nvar CONTROL_SHUTDOWN = 's';\r\nvar CONTROL_RESET = 'r';\r\nvar CONTROL_ERROR = 'e';\r\nvar CONTROL_PONG = 'o';\r\nvar SWITCH_ACK = 'a';\r\nvar END_TRANSMISSION = 'n';\r\nvar PING = 'p';\r\nvar SERVER_HELLO = 'h';\r\n/**\r\n * Creates a new real-time connection to the server using whichever method works\r\n * best in the current browser.\r\n */\r\nvar Connection = /** @class */ (function () {\r\n /**\r\n * @param id - an id for this connection\r\n * @param repoInfo_ - the info for the endpoint to connect to\r\n * @param applicationId_ - the Firebase App ID for this project\r\n * @param appCheckToken_ - The App Check Token for this device.\r\n * @param authToken_ - The auth token for this session.\r\n * @param onMessage_ - the callback to be triggered when a server-push message arrives\r\n * @param onReady_ - the callback to be triggered when this connection is ready to send messages.\r\n * @param onDisconnect_ - the callback to be triggered when a connection was lost\r\n * @param onKill_ - the callback to be triggered when this connection has permanently shut down.\r\n * @param lastSessionId - last session id in persistent connection. is used to clean up old session in real-time server\r\n */\r\n function Connection(id, repoInfo_, applicationId_, appCheckToken_, authToken_, onMessage_, onReady_, onDisconnect_, onKill_, lastSessionId) {\r\n this.id = id;\r\n this.repoInfo_ = repoInfo_;\r\n this.applicationId_ = applicationId_;\r\n this.appCheckToken_ = appCheckToken_;\r\n this.authToken_ = authToken_;\r\n this.onMessage_ = onMessage_;\r\n this.onReady_ = onReady_;\r\n this.onDisconnect_ = onDisconnect_;\r\n this.onKill_ = onKill_;\r\n this.lastSessionId = lastSessionId;\r\n this.connectionCount = 0;\r\n this.pendingDataMessages = [];\r\n this.state_ = 0 /* CONNECTING */;\r\n this.log_ = logWrapper('c:' + this.id + ':');\r\n this.transportManager_ = new TransportManager(repoInfo_);\r\n this.log_('Connection created');\r\n this.start_();\r\n }\r\n /**\r\n * Starts a connection attempt\r\n */\r\n Connection.prototype.start_ = function () {\r\n var _this = this;\r\n var conn = this.transportManager_.initialTransport();\r\n this.conn_ = new conn(this.nextTransportId_(), this.repoInfo_, this.applicationId_, this.appCheckToken_, this.authToken_, null, this.lastSessionId);\r\n // For certain transports (WebSockets), we need to send and receive several messages back and forth before we\r\n // can consider the transport healthy.\r\n this.primaryResponsesRequired_ = conn['responsesRequiredToBeHealthy'] || 0;\r\n var onMessageReceived = this.connReceiver_(this.conn_);\r\n var onConnectionLost = this.disconnReceiver_(this.conn_);\r\n this.tx_ = this.conn_;\r\n this.rx_ = this.conn_;\r\n this.secondaryConn_ = null;\r\n this.isHealthy_ = false;\r\n /*\r\n * Firefox doesn't like when code from one iframe tries to create another iframe by way of the parent frame.\r\n * This can occur in the case of a redirect, i.e. we guessed wrong on what server to connect to and received a reset.\r\n * Somehow, setTimeout seems to make this ok. That doesn't make sense from a security perspective, since you should\r\n * still have the context of your originating frame.\r\n */\r\n setTimeout(function () {\r\n // this.conn_ gets set to null in some of the tests. Check to make sure it still exists before using it\r\n _this.conn_ && _this.conn_.open(onMessageReceived, onConnectionLost);\r\n }, Math.floor(0));\r\n var healthyTimeoutMS = conn['healthyTimeout'] || 0;\r\n if (healthyTimeoutMS > 0) {\r\n this.healthyTimeout_ = setTimeoutNonBlocking(function () {\r\n _this.healthyTimeout_ = null;\r\n if (!_this.isHealthy_) {\r\n if (_this.conn_ &&\r\n _this.conn_.bytesReceived > BYTES_RECEIVED_HEALTHY_OVERRIDE) {\r\n _this.log_('Connection exceeded healthy timeout but has received ' +\r\n _this.conn_.bytesReceived +\r\n ' bytes. Marking connection healthy.');\r\n _this.isHealthy_ = true;\r\n _this.conn_.markConnectionHealthy();\r\n }\r\n else if (_this.conn_ &&\r\n _this.conn_.bytesSent > BYTES_SENT_HEALTHY_OVERRIDE) {\r\n _this.log_('Connection exceeded healthy timeout but has sent ' +\r\n _this.conn_.bytesSent +\r\n ' bytes. Leaving connection alive.');\r\n // NOTE: We don't want to mark it healthy, since we have no guarantee that the bytes have made it to\r\n // the server.\r\n }\r\n else {\r\n _this.log_('Closing unhealthy connection after timeout.');\r\n _this.close();\r\n }\r\n }\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n }, Math.floor(healthyTimeoutMS));\r\n }\r\n };\r\n Connection.prototype.nextTransportId_ = function () {\r\n return 'c:' + this.id + ':' + this.connectionCount++;\r\n };\r\n Connection.prototype.disconnReceiver_ = function (conn) {\r\n var _this = this;\r\n return function (everConnected) {\r\n if (conn === _this.conn_) {\r\n _this.onConnectionLost_(everConnected);\r\n }\r\n else if (conn === _this.secondaryConn_) {\r\n _this.log_('Secondary connection lost.');\r\n _this.onSecondaryConnectionLost_();\r\n }\r\n else {\r\n _this.log_('closing an old connection');\r\n }\r\n };\r\n };\r\n Connection.prototype.connReceiver_ = function (conn) {\r\n var _this = this;\r\n return function (message) {\r\n if (_this.state_ !== 2 /* DISCONNECTED */) {\r\n if (conn === _this.rx_) {\r\n _this.onPrimaryMessageReceived_(message);\r\n }\r\n else if (conn === _this.secondaryConn_) {\r\n _this.onSecondaryMessageReceived_(message);\r\n }\r\n else {\r\n _this.log_('message on old connection');\r\n }\r\n }\r\n };\r\n };\r\n /**\r\n * @param dataMsg - An arbitrary data message to be sent to the server\r\n */\r\n Connection.prototype.sendRequest = function (dataMsg) {\r\n // wrap in a data message envelope and send it on\r\n var msg = { t: 'd', d: dataMsg };\r\n this.sendData_(msg);\r\n };\r\n Connection.prototype.tryCleanupConnection = function () {\r\n if (this.tx_ === this.secondaryConn_ && this.rx_ === this.secondaryConn_) {\r\n this.log_('cleaning up and promoting a connection: ' + this.secondaryConn_.connId);\r\n this.conn_ = this.secondaryConn_;\r\n this.secondaryConn_ = null;\r\n // the server will shutdown the old connection\r\n }\r\n };\r\n Connection.prototype.onSecondaryControl_ = function (controlData) {\r\n if (MESSAGE_TYPE in controlData) {\r\n var cmd = controlData[MESSAGE_TYPE];\r\n if (cmd === SWITCH_ACK) {\r\n this.upgradeIfSecondaryHealthy_();\r\n }\r\n else if (cmd === CONTROL_RESET) {\r\n // Most likely the session wasn't valid. Abandon the switch attempt\r\n this.log_('Got a reset on secondary, closing it');\r\n this.secondaryConn_.close();\r\n // If we were already using this connection for something, than we need to fully close\r\n if (this.tx_ === this.secondaryConn_ ||\r\n this.rx_ === this.secondaryConn_) {\r\n this.close();\r\n }\r\n }\r\n else if (cmd === CONTROL_PONG) {\r\n this.log_('got pong on secondary.');\r\n this.secondaryResponsesRequired_--;\r\n this.upgradeIfSecondaryHealthy_();\r\n }\r\n }\r\n };\r\n Connection.prototype.onSecondaryMessageReceived_ = function (parsedData) {\r\n var layer = requireKey('t', parsedData);\r\n var data = requireKey('d', parsedData);\r\n if (layer === 'c') {\r\n this.onSecondaryControl_(data);\r\n }\r\n else if (layer === 'd') {\r\n // got a data message, but we're still second connection. Need to buffer it up\r\n this.pendingDataMessages.push(data);\r\n }\r\n else {\r\n throw new Error('Unknown protocol layer: ' + layer);\r\n }\r\n };\r\n Connection.prototype.upgradeIfSecondaryHealthy_ = function () {\r\n if (this.secondaryResponsesRequired_ <= 0) {\r\n this.log_('Secondary connection is healthy.');\r\n this.isHealthy_ = true;\r\n this.secondaryConn_.markConnectionHealthy();\r\n this.proceedWithUpgrade_();\r\n }\r\n else {\r\n // Send a ping to make sure the connection is healthy.\r\n this.log_('sending ping on secondary.');\r\n this.secondaryConn_.send({ t: 'c', d: { t: PING, d: {} } });\r\n }\r\n };\r\n Connection.prototype.proceedWithUpgrade_ = function () {\r\n // tell this connection to consider itself open\r\n this.secondaryConn_.start();\r\n // send ack\r\n this.log_('sending client ack on secondary');\r\n this.secondaryConn_.send({ t: 'c', d: { t: SWITCH_ACK, d: {} } });\r\n // send end packet on primary transport, switch to sending on this one\r\n // can receive on this one, buffer responses until end received on primary transport\r\n this.log_('Ending transmission on primary');\r\n this.conn_.send({ t: 'c', d: { t: END_TRANSMISSION, d: {} } });\r\n this.tx_ = this.secondaryConn_;\r\n this.tryCleanupConnection();\r\n };\r\n Connection.prototype.onPrimaryMessageReceived_ = function (parsedData) {\r\n // Must refer to parsedData properties in quotes, so closure doesn't touch them.\r\n var layer = requireKey('t', parsedData);\r\n var data = requireKey('d', parsedData);\r\n if (layer === 'c') {\r\n this.onControl_(data);\r\n }\r\n else if (layer === 'd') {\r\n this.onDataMessage_(data);\r\n }\r\n };\r\n Connection.prototype.onDataMessage_ = function (message) {\r\n this.onPrimaryResponse_();\r\n // We don't do anything with data messages, just kick them up a level\r\n this.onMessage_(message);\r\n };\r\n Connection.prototype.onPrimaryResponse_ = function () {\r\n if (!this.isHealthy_) {\r\n this.primaryResponsesRequired_--;\r\n if (this.primaryResponsesRequired_ <= 0) {\r\n this.log_('Primary connection is healthy.');\r\n this.isHealthy_ = true;\r\n this.conn_.markConnectionHealthy();\r\n }\r\n }\r\n };\r\n Connection.prototype.onControl_ = function (controlData) {\r\n var cmd = requireKey(MESSAGE_TYPE, controlData);\r\n if (MESSAGE_DATA in controlData) {\r\n var payload = controlData[MESSAGE_DATA];\r\n if (cmd === SERVER_HELLO) {\r\n this.onHandshake_(payload);\r\n }\r\n else if (cmd === END_TRANSMISSION) {\r\n this.log_('recvd end transmission on primary');\r\n this.rx_ = this.secondaryConn_;\r\n for (var i = 0; i < this.pendingDataMessages.length; ++i) {\r\n this.onDataMessage_(this.pendingDataMessages[i]);\r\n }\r\n this.pendingDataMessages = [];\r\n this.tryCleanupConnection();\r\n }\r\n else if (cmd === CONTROL_SHUTDOWN) {\r\n // This was previously the 'onKill' callback passed to the lower-level connection\r\n // payload in this case is the reason for the shutdown. Generally a human-readable error\r\n this.onConnectionShutdown_(payload);\r\n }\r\n else if (cmd === CONTROL_RESET) {\r\n // payload in this case is the host we should contact\r\n this.onReset_(payload);\r\n }\r\n else if (cmd === CONTROL_ERROR) {\r\n error('Server Error: ' + payload);\r\n }\r\n else if (cmd === CONTROL_PONG) {\r\n this.log_('got pong on primary.');\r\n this.onPrimaryResponse_();\r\n this.sendPingOnPrimaryIfNecessary_();\r\n }\r\n else {\r\n error('Unknown control packet command: ' + cmd);\r\n }\r\n }\r\n };\r\n /**\r\n * @param handshake - The handshake data returned from the server\r\n */\r\n Connection.prototype.onHandshake_ = function (handshake) {\r\n var timestamp = handshake.ts;\r\n var version = handshake.v;\r\n var host = handshake.h;\r\n this.sessionId = handshake.s;\r\n this.repoInfo_.host = host;\r\n // if we've already closed the connection, then don't bother trying to progress further\r\n if (this.state_ === 0 /* CONNECTING */) {\r\n this.conn_.start();\r\n this.onConnectionEstablished_(this.conn_, timestamp);\r\n if (PROTOCOL_VERSION !== version) {\r\n warn('Protocol version mismatch detected');\r\n }\r\n // TODO: do we want to upgrade? when? maybe a delay?\r\n this.tryStartUpgrade_();\r\n }\r\n };\r\n Connection.prototype.tryStartUpgrade_ = function () {\r\n var conn = this.transportManager_.upgradeTransport();\r\n if (conn) {\r\n this.startUpgrade_(conn);\r\n }\r\n };\r\n Connection.prototype.startUpgrade_ = function (conn) {\r\n var _this = this;\r\n this.secondaryConn_ = new conn(this.nextTransportId_(), this.repoInfo_, this.applicationId_, this.appCheckToken_, this.authToken_, this.sessionId);\r\n // For certain transports (WebSockets), we need to send and receive several messages back and forth before we\r\n // can consider the transport healthy.\r\n this.secondaryResponsesRequired_ =\r\n conn['responsesRequiredToBeHealthy'] || 0;\r\n var onMessage = this.connReceiver_(this.secondaryConn_);\r\n var onDisconnect = this.disconnReceiver_(this.secondaryConn_);\r\n this.secondaryConn_.open(onMessage, onDisconnect);\r\n // If we haven't successfully upgraded after UPGRADE_TIMEOUT, give up and kill the secondary.\r\n setTimeoutNonBlocking(function () {\r\n if (_this.secondaryConn_) {\r\n _this.log_('Timed out trying to upgrade.');\r\n _this.secondaryConn_.close();\r\n }\r\n }, Math.floor(UPGRADE_TIMEOUT));\r\n };\r\n Connection.prototype.onReset_ = function (host) {\r\n this.log_('Reset packet received. New host: ' + host);\r\n this.repoInfo_.host = host;\r\n // TODO: if we're already \"connected\", we need to trigger a disconnect at the next layer up.\r\n // We don't currently support resets after the connection has already been established\r\n if (this.state_ === 1 /* CONNECTED */) {\r\n this.close();\r\n }\r\n else {\r\n // Close whatever connections we have open and start again.\r\n this.closeConnections_();\r\n this.start_();\r\n }\r\n };\r\n Connection.prototype.onConnectionEstablished_ = function (conn, timestamp) {\r\n var _this = this;\r\n this.log_('Realtime connection established.');\r\n this.conn_ = conn;\r\n this.state_ = 1 /* CONNECTED */;\r\n if (this.onReady_) {\r\n this.onReady_(timestamp, this.sessionId);\r\n this.onReady_ = null;\r\n }\r\n // If after 5 seconds we haven't sent enough requests to the server to get the connection healthy,\r\n // send some pings.\r\n if (this.primaryResponsesRequired_ === 0) {\r\n this.log_('Primary connection is healthy.');\r\n this.isHealthy_ = true;\r\n }\r\n else {\r\n setTimeoutNonBlocking(function () {\r\n _this.sendPingOnPrimaryIfNecessary_();\r\n }, Math.floor(DELAY_BEFORE_SENDING_EXTRA_REQUESTS));\r\n }\r\n };\r\n Connection.prototype.sendPingOnPrimaryIfNecessary_ = function () {\r\n // If the connection isn't considered healthy yet, we'll send a noop ping packet request.\r\n if (!this.isHealthy_ && this.state_ === 1 /* CONNECTED */) {\r\n this.log_('sending ping on primary.');\r\n this.sendData_({ t: 'c', d: { t: PING, d: {} } });\r\n }\r\n };\r\n Connection.prototype.onSecondaryConnectionLost_ = function () {\r\n var conn = this.secondaryConn_;\r\n this.secondaryConn_ = null;\r\n if (this.tx_ === conn || this.rx_ === conn) {\r\n // we are relying on this connection already in some capacity. Therefore, a failure is real\r\n this.close();\r\n }\r\n };\r\n /**\r\n * @param everConnected - Whether or not the connection ever reached a server. Used to determine if\r\n * we should flush the host cache\r\n */\r\n Connection.prototype.onConnectionLost_ = function (everConnected) {\r\n this.conn_ = null;\r\n // NOTE: IF you're seeing a Firefox error for this line, I think it might be because it's getting\r\n // called on window close and RealtimeState.CONNECTING is no longer defined. Just a guess.\r\n if (!everConnected && this.state_ === 0 /* CONNECTING */) {\r\n this.log_('Realtime connection failed.');\r\n // Since we failed to connect at all, clear any cached entry for this namespace in case the machine went away\r\n if (this.repoInfo_.isCacheableHost()) {\r\n PersistentStorage.remove('host:' + this.repoInfo_.host);\r\n // reset the internal host to what we would show the user, i.e. .firebaseio.com\r\n this.repoInfo_.internalHost = this.repoInfo_.host;\r\n }\r\n }\r\n else if (this.state_ === 1 /* CONNECTED */) {\r\n this.log_('Realtime connection lost.');\r\n }\r\n this.close();\r\n };\r\n Connection.prototype.onConnectionShutdown_ = function (reason) {\r\n this.log_('Connection shutdown command received. Shutting down...');\r\n if (this.onKill_) {\r\n this.onKill_(reason);\r\n this.onKill_ = null;\r\n }\r\n // We intentionally don't want to fire onDisconnect (kill is a different case),\r\n // so clear the callback.\r\n this.onDisconnect_ = null;\r\n this.close();\r\n };\r\n Connection.prototype.sendData_ = function (data) {\r\n if (this.state_ !== 1 /* CONNECTED */) {\r\n throw 'Connection is not connected';\r\n }\r\n else {\r\n this.tx_.send(data);\r\n }\r\n };\r\n /**\r\n * Cleans up this connection, calling the appropriate callbacks\r\n */\r\n Connection.prototype.close = function () {\r\n if (this.state_ !== 2 /* DISCONNECTED */) {\r\n this.log_('Closing realtime connection.');\r\n this.state_ = 2 /* DISCONNECTED */;\r\n this.closeConnections_();\r\n if (this.onDisconnect_) {\r\n this.onDisconnect_();\r\n this.onDisconnect_ = null;\r\n }\r\n }\r\n };\r\n Connection.prototype.closeConnections_ = function () {\r\n this.log_('Shutting down all connections');\r\n if (this.conn_) {\r\n this.conn_.close();\r\n this.conn_ = null;\r\n }\r\n if (this.secondaryConn_) {\r\n this.secondaryConn_.close();\r\n this.secondaryConn_ = null;\r\n }\r\n if (this.healthyTimeout_) {\r\n clearTimeout(this.healthyTimeout_);\r\n this.healthyTimeout_ = null;\r\n }\r\n };\r\n return Connection;\r\n}());\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * Interface defining the set of actions that can be performed against the Firebase server\r\n * (basically corresponds to our wire protocol).\r\n *\r\n * @interface\r\n */\r\nvar ServerActions = /** @class */ (function () {\r\n function ServerActions() {\r\n }\r\n ServerActions.prototype.put = function (pathString, data, onComplete, hash) { };\r\n ServerActions.prototype.merge = function (pathString, data, onComplete, hash) { };\r\n /**\r\n * Refreshes the auth token for the current connection.\r\n * @param token - The authentication token\r\n */\r\n ServerActions.prototype.refreshAuthToken = function (token) { };\r\n /**\r\n * Refreshes the app check token for the current connection.\r\n * @param token The app check token\r\n */\r\n ServerActions.prototype.refreshAppCheckToken = function (token) { };\r\n ServerActions.prototype.onDisconnectPut = function (pathString, data, onComplete) { };\r\n ServerActions.prototype.onDisconnectMerge = function (pathString, data, onComplete) { };\r\n ServerActions.prototype.onDisconnectCancel = function (pathString, onComplete) { };\r\n ServerActions.prototype.reportStats = function (stats) { };\r\n return ServerActions;\r\n}());\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * Base class to be used if you want to emit events. Call the constructor with\r\n * the set of allowed event names.\r\n */\r\nvar EventEmitter = /** @class */ (function () {\r\n function EventEmitter(allowedEvents_) {\r\n this.allowedEvents_ = allowedEvents_;\r\n this.listeners_ = {};\r\n assert(Array.isArray(allowedEvents_) && allowedEvents_.length > 0, 'Requires a non-empty array');\r\n }\r\n /**\r\n * To be called by derived classes to trigger events.\r\n */\r\n EventEmitter.prototype.trigger = function (eventType) {\r\n var varArgs = [];\r\n for (var _i = 1; _i < arguments.length; _i++) {\r\n varArgs[_i - 1] = arguments[_i];\r\n }\r\n if (Array.isArray(this.listeners_[eventType])) {\r\n // Clone the list, since callbacks could add/remove listeners.\r\n var listeners = __spreadArray([], __read(this.listeners_[eventType]));\r\n for (var i = 0; i < listeners.length; i++) {\r\n listeners[i].callback.apply(listeners[i].context, varArgs);\r\n }\r\n }\r\n };\r\n EventEmitter.prototype.on = function (eventType, callback, context) {\r\n this.validateEventType_(eventType);\r\n this.listeners_[eventType] = this.listeners_[eventType] || [];\r\n this.listeners_[eventType].push({ callback: callback, context: context });\r\n var eventData = this.getInitialEvent(eventType);\r\n if (eventData) {\r\n callback.apply(context, eventData);\r\n }\r\n };\r\n EventEmitter.prototype.off = function (eventType, callback, context) {\r\n this.validateEventType_(eventType);\r\n var listeners = this.listeners_[eventType] || [];\r\n for (var i = 0; i < listeners.length; i++) {\r\n if (listeners[i].callback === callback &&\r\n (!context || context === listeners[i].context)) {\r\n listeners.splice(i, 1);\r\n return;\r\n }\r\n }\r\n };\r\n EventEmitter.prototype.validateEventType_ = function (eventType) {\r\n assert(this.allowedEvents_.find(function (et) {\r\n return et === eventType;\r\n }), 'Unknown event: ' + eventType);\r\n };\r\n return EventEmitter;\r\n}());\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * Monitors online state (as reported by window.online/offline events).\r\n *\r\n * The expectation is that this could have many false positives (thinks we are online\r\n * when we're not), but no false negatives. So we can safely use it to determine when\r\n * we definitely cannot reach the internet.\r\n */\r\nvar OnlineMonitor = /** @class */ (function (_super) {\r\n __extends(OnlineMonitor, _super);\r\n function OnlineMonitor() {\r\n var _this = _super.call(this, ['online']) || this;\r\n _this.online_ = true;\r\n // We've had repeated complaints that Cordova apps can get stuck \"offline\", e.g.\r\n // https://forum.ionicframework.com/t/firebase-connection-is-lost-and-never-come-back/43810\r\n // It would seem that the 'online' event does not always fire consistently. So we disable it\r\n // for Cordova.\r\n if (typeof window !== 'undefined' &&\r\n typeof window.addEventListener !== 'undefined' &&\r\n !isMobileCordova()) {\r\n window.addEventListener('online', function () {\r\n if (!_this.online_) {\r\n _this.online_ = true;\r\n _this.trigger('online', true);\r\n }\r\n }, false);\r\n window.addEventListener('offline', function () {\r\n if (_this.online_) {\r\n _this.online_ = false;\r\n _this.trigger('online', false);\r\n }\r\n }, false);\r\n }\r\n return _this;\r\n }\r\n OnlineMonitor.getInstance = function () {\r\n return new OnlineMonitor();\r\n };\r\n OnlineMonitor.prototype.getInitialEvent = function (eventType) {\r\n assert(eventType === 'online', 'Unknown event type: ' + eventType);\r\n return [this.online_];\r\n };\r\n OnlineMonitor.prototype.currentlyOnline = function () {\r\n return this.online_;\r\n };\r\n return OnlineMonitor;\r\n}(EventEmitter));\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/** Maximum key depth. */\r\nvar MAX_PATH_DEPTH = 32;\r\n/** Maximum number of (UTF8) bytes in a Firebase path. */\r\nvar MAX_PATH_LENGTH_BYTES = 768;\r\n/**\r\n * An immutable object representing a parsed path. It's immutable so that you\r\n * can pass them around to other functions without worrying about them changing\r\n * it.\r\n */\r\nvar Path = /** @class */ (function () {\r\n /**\r\n * @param pathOrString - Path string to parse, or another path, or the raw\r\n * tokens array\r\n */\r\n function Path(pathOrString, pieceNum) {\r\n if (pieceNum === void 0) {\r\n this.pieces_ = pathOrString.split('/');\r\n // Remove empty pieces.\r\n var copyTo = 0;\r\n for (var i = 0; i < this.pieces_.length; i++) {\r\n if (this.pieces_[i].length > 0) {\r\n this.pieces_[copyTo] = this.pieces_[i];\r\n copyTo++;\r\n }\r\n }\r\n this.pieces_.length = copyTo;\r\n this.pieceNum_ = 0;\r\n }\r\n else {\r\n this.pieces_ = pathOrString;\r\n this.pieceNum_ = pieceNum;\r\n }\r\n }\r\n Path.prototype.toString = function () {\r\n var pathString = '';\r\n for (var i = this.pieceNum_; i < this.pieces_.length; i++) {\r\n if (this.pieces_[i] !== '') {\r\n pathString += '/' + this.pieces_[i];\r\n }\r\n }\r\n return pathString || '/';\r\n };\r\n return Path;\r\n}());\r\nfunction newEmptyPath() {\r\n return new Path('');\r\n}\r\nfunction pathGetFront(path) {\r\n if (path.pieceNum_ >= path.pieces_.length) {\r\n return null;\r\n }\r\n return path.pieces_[path.pieceNum_];\r\n}\r\n/**\r\n * @returns The number of segments in this path\r\n */\r\nfunction pathGetLength(path) {\r\n return path.pieces_.length - path.pieceNum_;\r\n}\r\nfunction pathPopFront(path) {\r\n var pieceNum = path.pieceNum_;\r\n if (pieceNum < path.pieces_.length) {\r\n pieceNum++;\r\n }\r\n return new Path(path.pieces_, pieceNum);\r\n}\r\nfunction pathGetBack(path) {\r\n if (path.pieceNum_ < path.pieces_.length) {\r\n return path.pieces_[path.pieces_.length - 1];\r\n }\r\n return null;\r\n}\r\nfunction pathToUrlEncodedString(path) {\r\n var pathString = '';\r\n for (var i = path.pieceNum_; i < path.pieces_.length; i++) {\r\n if (path.pieces_[i] !== '') {\r\n pathString += '/' + encodeURIComponent(String(path.pieces_[i]));\r\n }\r\n }\r\n return pathString || '/';\r\n}\r\n/**\r\n * Shallow copy of the parts of the path.\r\n *\r\n */\r\nfunction pathSlice(path, begin) {\r\n if (begin === void 0) { begin = 0; }\r\n return path.pieces_.slice(path.pieceNum_ + begin);\r\n}\r\nfunction pathParent(path) {\r\n if (path.pieceNum_ >= path.pieces_.length) {\r\n return null;\r\n }\r\n var pieces = [];\r\n for (var i = path.pieceNum_; i < path.pieces_.length - 1; i++) {\r\n pieces.push(path.pieces_[i]);\r\n }\r\n return new Path(pieces, 0);\r\n}\r\nfunction pathChild(path, childPathObj) {\r\n var pieces = [];\r\n for (var i = path.pieceNum_; i < path.pieces_.length; i++) {\r\n pieces.push(path.pieces_[i]);\r\n }\r\n if (childPathObj instanceof Path) {\r\n for (var i = childPathObj.pieceNum_; i < childPathObj.pieces_.length; i++) {\r\n pieces.push(childPathObj.pieces_[i]);\r\n }\r\n }\r\n else {\r\n var childPieces = childPathObj.split('/');\r\n for (var i = 0; i < childPieces.length; i++) {\r\n if (childPieces[i].length > 0) {\r\n pieces.push(childPieces[i]);\r\n }\r\n }\r\n }\r\n return new Path(pieces, 0);\r\n}\r\n/**\r\n * @returns True if there are no segments in this path\r\n */\r\nfunction pathIsEmpty(path) {\r\n return path.pieceNum_ >= path.pieces_.length;\r\n}\r\n/**\r\n * @returns The path from outerPath to innerPath\r\n */\r\nfunction newRelativePath(outerPath, innerPath) {\r\n var outer = pathGetFront(outerPath), inner = pathGetFront(innerPath);\r\n if (outer === null) {\r\n return innerPath;\r\n }\r\n else if (outer === inner) {\r\n return newRelativePath(pathPopFront(outerPath), pathPopFront(innerPath));\r\n }\r\n else {\r\n throw new Error('INTERNAL ERROR: innerPath (' +\r\n innerPath +\r\n ') is not within ' +\r\n 'outerPath (' +\r\n outerPath +\r\n ')');\r\n }\r\n}\r\n/**\r\n * @returns -1, 0, 1 if left is less, equal, or greater than the right.\r\n */\r\nfunction pathCompare(left, right) {\r\n var leftKeys = pathSlice(left, 0);\r\n var rightKeys = pathSlice(right, 0);\r\n for (var i = 0; i < leftKeys.length && i < rightKeys.length; i++) {\r\n var cmp = nameCompare(leftKeys[i], rightKeys[i]);\r\n if (cmp !== 0) {\r\n return cmp;\r\n }\r\n }\r\n if (leftKeys.length === rightKeys.length) {\r\n return 0;\r\n }\r\n return leftKeys.length < rightKeys.length ? -1 : 1;\r\n}\r\n/**\r\n * @returns true if paths are the same.\r\n */\r\nfunction pathEquals(path, other) {\r\n if (pathGetLength(path) !== pathGetLength(other)) {\r\n return false;\r\n }\r\n for (var i = path.pieceNum_, j = other.pieceNum_; i <= path.pieces_.length; i++, j++) {\r\n if (path.pieces_[i] !== other.pieces_[j]) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n}\r\n/**\r\n * @returns True if this path is a parent (or the same as) other\r\n */\r\nfunction pathContains(path, other) {\r\n var i = path.pieceNum_;\r\n var j = other.pieceNum_;\r\n if (pathGetLength(path) > pathGetLength(other)) {\r\n return false;\r\n }\r\n while (i < path.pieces_.length) {\r\n if (path.pieces_[i] !== other.pieces_[j]) {\r\n return false;\r\n }\r\n ++i;\r\n ++j;\r\n }\r\n return true;\r\n}\r\n/**\r\n * Dynamic (mutable) path used to count path lengths.\r\n *\r\n * This class is used to efficiently check paths for valid\r\n * length (in UTF8 bytes) and depth (used in path validation).\r\n *\r\n * Throws Error exception if path is ever invalid.\r\n *\r\n * The definition of a path always begins with '/'.\r\n */\r\nvar ValidationPath = /** @class */ (function () {\r\n /**\r\n * @param path - Initial Path.\r\n * @param errorPrefix_ - Prefix for any error messages.\r\n */\r\n function ValidationPath(path, errorPrefix_) {\r\n this.errorPrefix_ = errorPrefix_;\r\n this.parts_ = pathSlice(path, 0);\r\n /** Initialize to number of '/' chars needed in path. */\r\n this.byteLength_ = Math.max(1, this.parts_.length);\r\n for (var i = 0; i < this.parts_.length; i++) {\r\n this.byteLength_ += stringLength(this.parts_[i]);\r\n }\r\n validationPathCheckValid(this);\r\n }\r\n return ValidationPath;\r\n}());\r\nfunction validationPathPush(validationPath, child) {\r\n // Count the needed '/'\r\n if (validationPath.parts_.length > 0) {\r\n validationPath.byteLength_ += 1;\r\n }\r\n validationPath.parts_.push(child);\r\n validationPath.byteLength_ += stringLength(child);\r\n validationPathCheckValid(validationPath);\r\n}\r\nfunction validationPathPop(validationPath) {\r\n var last = validationPath.parts_.pop();\r\n validationPath.byteLength_ -= stringLength(last);\r\n // Un-count the previous '/'\r\n if (validationPath.parts_.length > 0) {\r\n validationPath.byteLength_ -= 1;\r\n }\r\n}\r\nfunction validationPathCheckValid(validationPath) {\r\n if (validationPath.byteLength_ > MAX_PATH_LENGTH_BYTES) {\r\n throw new Error(validationPath.errorPrefix_ +\r\n 'has a key path longer than ' +\r\n MAX_PATH_LENGTH_BYTES +\r\n ' bytes (' +\r\n validationPath.byteLength_ +\r\n ').');\r\n }\r\n if (validationPath.parts_.length > MAX_PATH_DEPTH) {\r\n throw new Error(validationPath.errorPrefix_ +\r\n 'path specified exceeds the maximum depth that can be written (' +\r\n MAX_PATH_DEPTH +\r\n ') or object contains a cycle ' +\r\n validationPathToErrorString(validationPath));\r\n }\r\n}\r\n/**\r\n * String for use in error messages - uses '.' notation for path.\r\n */\r\nfunction validationPathToErrorString(validationPath) {\r\n if (validationPath.parts_.length === 0) {\r\n return '';\r\n }\r\n return \"in property '\" + validationPath.parts_.join('.') + \"'\";\r\n}\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nvar VisibilityMonitor = /** @class */ (function (_super) {\r\n __extends(VisibilityMonitor, _super);\r\n function VisibilityMonitor() {\r\n var _this = _super.call(this, ['visible']) || this;\r\n var hidden;\r\n var visibilityChange;\r\n if (typeof document !== 'undefined' &&\r\n typeof document.addEventListener !== 'undefined') {\r\n if (typeof document['hidden'] !== 'undefined') {\r\n // Opera 12.10 and Firefox 18 and later support\r\n visibilityChange = 'visibilitychange';\r\n hidden = 'hidden';\r\n }\r\n else if (typeof document['mozHidden'] !== 'undefined') {\r\n visibilityChange = 'mozvisibilitychange';\r\n hidden = 'mozHidden';\r\n }\r\n else if (typeof document['msHidden'] !== 'undefined') {\r\n visibilityChange = 'msvisibilitychange';\r\n hidden = 'msHidden';\r\n }\r\n else if (typeof document['webkitHidden'] !== 'undefined') {\r\n visibilityChange = 'webkitvisibilitychange';\r\n hidden = 'webkitHidden';\r\n }\r\n }\r\n // Initially, we always assume we are visible. This ensures that in browsers\r\n // without page visibility support or in cases where we are never visible\r\n // (e.g. chrome extension), we act as if we are visible, i.e. don't delay\r\n // reconnects\r\n _this.visible_ = true;\r\n if (visibilityChange) {\r\n document.addEventListener(visibilityChange, function () {\r\n var visible = !document[hidden];\r\n if (visible !== _this.visible_) {\r\n _this.visible_ = visible;\r\n _this.trigger('visible', visible);\r\n }\r\n }, false);\r\n }\r\n return _this;\r\n }\r\n VisibilityMonitor.getInstance = function () {\r\n return new VisibilityMonitor();\r\n };\r\n VisibilityMonitor.prototype.getInitialEvent = function (eventType) {\r\n assert(eventType === 'visible', 'Unknown event type: ' + eventType);\r\n return [this.visible_];\r\n };\r\n return VisibilityMonitor;\r\n}(EventEmitter));\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nvar RECONNECT_MIN_DELAY = 1000;\r\nvar RECONNECT_MAX_DELAY_DEFAULT = 60 * 5 * 1000; // 5 minutes in milliseconds (Case: 1858)\r\nvar GET_CONNECT_TIMEOUT = 3 * 1000;\r\nvar RECONNECT_MAX_DELAY_FOR_ADMINS = 30 * 1000; // 30 seconds for admin clients (likely to be a backend server)\r\nvar RECONNECT_DELAY_MULTIPLIER = 1.3;\r\nvar RECONNECT_DELAY_RESET_TIMEOUT = 30000; // Reset delay back to MIN_DELAY after being connected for 30sec.\r\nvar SERVER_KILL_INTERRUPT_REASON = 'server_kill';\r\n// If auth fails repeatedly, we'll assume something is wrong and log a warning / back off.\r\nvar INVALID_TOKEN_THRESHOLD = 3;\r\n/**\r\n * Firebase connection. Abstracts wire protocol and handles reconnecting.\r\n *\r\n * NOTE: All JSON objects sent to the realtime connection must have property names enclosed\r\n * in quotes to make sure the closure compiler does not minify them.\r\n */\r\nvar PersistentConnection = /** @class */ (function (_super) {\r\n __extends(PersistentConnection, _super);\r\n /**\r\n * @param repoInfo_ - Data about the namespace we are connecting to\r\n * @param applicationId_ - The Firebase App ID for this project\r\n * @param onDataUpdate_ - A callback for new data from the server\r\n */\r\n function PersistentConnection(repoInfo_, applicationId_, onDataUpdate_, onConnectStatus_, onServerInfoUpdate_, authTokenProvider_, appCheckTokenProvider_, authOverride_) {\r\n var _this = _super.call(this) || this;\r\n _this.repoInfo_ = repoInfo_;\r\n _this.applicationId_ = applicationId_;\r\n _this.onDataUpdate_ = onDataUpdate_;\r\n _this.onConnectStatus_ = onConnectStatus_;\r\n _this.onServerInfoUpdate_ = onServerInfoUpdate_;\r\n _this.authTokenProvider_ = authTokenProvider_;\r\n _this.appCheckTokenProvider_ = appCheckTokenProvider_;\r\n _this.authOverride_ = authOverride_;\r\n // Used for diagnostic logging.\r\n _this.id = PersistentConnection.nextPersistentConnectionId_++;\r\n _this.log_ = logWrapper('p:' + _this.id + ':');\r\n _this.interruptReasons_ = {};\r\n _this.listens = new Map();\r\n _this.outstandingPuts_ = [];\r\n _this.outstandingGets_ = [];\r\n _this.outstandingPutCount_ = 0;\r\n _this.outstandingGetCount_ = 0;\r\n _this.onDisconnectRequestQueue_ = [];\r\n _this.connected_ = false;\r\n _this.reconnectDelay_ = RECONNECT_MIN_DELAY;\r\n _this.maxReconnectDelay_ = RECONNECT_MAX_DELAY_DEFAULT;\r\n _this.securityDebugCallback_ = null;\r\n _this.lastSessionId = null;\r\n _this.establishConnectionTimer_ = null;\r\n _this.visible_ = false;\r\n // Before we get connected, we keep a queue of pending messages to send.\r\n _this.requestCBHash_ = {};\r\n _this.requestNumber_ = 0;\r\n _this.realtime_ = null;\r\n _this.authToken_ = null;\r\n _this.appCheckToken_ = null;\r\n _this.forceTokenRefresh_ = false;\r\n _this.invalidAuthTokenCount_ = 0;\r\n _this.invalidAppCheckTokenCount_ = 0;\r\n _this.firstConnection_ = true;\r\n _this.lastConnectionAttemptTime_ = null;\r\n _this.lastConnectionEstablishedTime_ = null;\r\n if (authOverride_ && !isNodeSdk()) {\r\n throw new Error('Auth override specified in options, but not supported on non Node.js platforms');\r\n }\r\n VisibilityMonitor.getInstance().on('visible', _this.onVisible_, _this);\r\n if (repoInfo_.host.indexOf('fblocal') === -1) {\r\n OnlineMonitor.getInstance().on('online', _this.onOnline_, _this);\r\n }\r\n return _this;\r\n }\r\n PersistentConnection.prototype.sendRequest = function (action, body, onResponse) {\r\n var curReqNum = ++this.requestNumber_;\r\n var msg = { r: curReqNum, a: action, b: body };\r\n this.log_(stringify(msg));\r\n assert(this.connected_, \"sendRequest call when we're not connected not allowed.\");\r\n this.realtime_.sendRequest(msg);\r\n if (onResponse) {\r\n this.requestCBHash_[curReqNum] = onResponse;\r\n }\r\n };\r\n PersistentConnection.prototype.get = function (query) {\r\n var _this = this;\r\n this.initConnection_();\r\n var deferred = new Deferred();\r\n var request = {\r\n p: query._path.toString(),\r\n q: query._queryObject\r\n };\r\n var outstandingGet = {\r\n action: 'g',\r\n request: request,\r\n onComplete: function (message) {\r\n var payload = message['d'];\r\n if (message['s'] === 'ok') {\r\n _this.onDataUpdate_(request['p'], payload, \r\n /*isMerge*/ false, \r\n /*tag*/ null);\r\n deferred.resolve(payload);\r\n }\r\n else {\r\n deferred.reject(payload);\r\n }\r\n }\r\n };\r\n this.outstandingGets_.push(outstandingGet);\r\n this.outstandingGetCount_++;\r\n var index = this.outstandingGets_.length - 1;\r\n if (!this.connected_) {\r\n setTimeout(function () {\r\n var get = _this.outstandingGets_[index];\r\n if (get === undefined || outstandingGet !== get) {\r\n return;\r\n }\r\n delete _this.outstandingGets_[index];\r\n _this.outstandingGetCount_--;\r\n if (_this.outstandingGetCount_ === 0) {\r\n _this.outstandingGets_ = [];\r\n }\r\n _this.log_('get ' + index + ' timed out on connection');\r\n deferred.reject(new Error('Client is offline.'));\r\n }, GET_CONNECT_TIMEOUT);\r\n }\r\n if (this.connected_) {\r\n this.sendGet_(index);\r\n }\r\n return deferred.promise;\r\n };\r\n PersistentConnection.prototype.listen = function (query, currentHashFn, tag, onComplete) {\r\n this.initConnection_();\r\n var queryId = query._queryIdentifier;\r\n var pathString = query._path.toString();\r\n this.log_('Listen called for ' + pathString + ' ' + queryId);\r\n if (!this.listens.has(pathString)) {\r\n this.listens.set(pathString, new Map());\r\n }\r\n assert(query._queryParams.isDefault() || !query._queryParams.loadsAllData(), 'listen() called for non-default but complete query');\r\n assert(!this.listens.get(pathString).has(queryId), 'listen() called twice for same path/queryId.');\r\n var listenSpec = {\r\n onComplete: onComplete,\r\n hashFn: currentHashFn,\r\n query: query,\r\n tag: tag\r\n };\r\n this.listens.get(pathString).set(queryId, listenSpec);\r\n if (this.connected_) {\r\n this.sendListen_(listenSpec);\r\n }\r\n };\r\n PersistentConnection.prototype.sendGet_ = function (index) {\r\n var _this = this;\r\n var get = this.outstandingGets_[index];\r\n this.sendRequest('g', get.request, function (message) {\r\n delete _this.outstandingGets_[index];\r\n _this.outstandingGetCount_--;\r\n if (_this.outstandingGetCount_ === 0) {\r\n _this.outstandingGets_ = [];\r\n }\r\n if (get.onComplete) {\r\n get.onComplete(message);\r\n }\r\n });\r\n };\r\n PersistentConnection.prototype.sendListen_ = function (listenSpec) {\r\n var _this = this;\r\n var query = listenSpec.query;\r\n var pathString = query._path.toString();\r\n var queryId = query._queryIdentifier;\r\n this.log_('Listen on ' + pathString + ' for ' + queryId);\r\n var req = { /*path*/ p: pathString };\r\n var action = 'q';\r\n // Only bother to send query if it's non-default.\r\n if (listenSpec.tag) {\r\n req['q'] = query._queryObject;\r\n req['t'] = listenSpec.tag;\r\n }\r\n req[ /*hash*/'h'] = listenSpec.hashFn();\r\n this.sendRequest(action, req, function (message) {\r\n var payload = message[ /*data*/'d'];\r\n var status = message[ /*status*/'s'];\r\n // print warnings in any case...\r\n PersistentConnection.warnOnListenWarnings_(payload, query);\r\n var currentListenSpec = _this.listens.get(pathString) &&\r\n _this.listens.get(pathString).get(queryId);\r\n // only trigger actions if the listen hasn't been removed and readded\r\n if (currentListenSpec === listenSpec) {\r\n _this.log_('listen response', message);\r\n if (status !== 'ok') {\r\n _this.removeListen_(pathString, queryId);\r\n }\r\n if (listenSpec.onComplete) {\r\n listenSpec.onComplete(status, payload);\r\n }\r\n }\r\n });\r\n };\r\n PersistentConnection.warnOnListenWarnings_ = function (payload, query) {\r\n if (payload && typeof payload === 'object' && contains(payload, 'w')) {\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n var warnings = safeGet(payload, 'w');\r\n if (Array.isArray(warnings) && ~warnings.indexOf('no_index')) {\r\n var indexSpec = '\".indexOn\": \"' + query._queryParams.getIndex().toString() + '\"';\r\n var indexPath = query._path.toString();\r\n warn(\"Using an unspecified index. Your data will be downloaded and \" +\r\n (\"filtered on the client. Consider adding \" + indexSpec + \" at \") +\r\n (indexPath + \" to your security rules for better performance.\"));\r\n }\r\n }\r\n };\r\n PersistentConnection.prototype.refreshAuthToken = function (token) {\r\n this.authToken_ = token;\r\n this.log_('Auth token refreshed');\r\n if (this.authToken_) {\r\n this.tryAuth();\r\n }\r\n else {\r\n //If we're connected we want to let the server know to unauthenticate us. If we're not connected, simply delete\r\n //the credential so we dont become authenticated next time we connect.\r\n if (this.connected_) {\r\n this.sendRequest('unauth', {}, function () { });\r\n }\r\n }\r\n this.reduceReconnectDelayIfAdminCredential_(token);\r\n };\r\n PersistentConnection.prototype.reduceReconnectDelayIfAdminCredential_ = function (credential) {\r\n // NOTE: This isn't intended to be bulletproof (a malicious developer can always just modify the client).\r\n // Additionally, we don't bother resetting the max delay back to the default if auth fails / expires.\r\n var isFirebaseSecret = credential && credential.length === 40;\r\n if (isFirebaseSecret || isAdmin(credential)) {\r\n this.log_('Admin auth credential detected. Reducing max reconnect time.');\r\n this.maxReconnectDelay_ = RECONNECT_MAX_DELAY_FOR_ADMINS;\r\n }\r\n };\r\n PersistentConnection.prototype.refreshAppCheckToken = function (token) {\r\n this.appCheckToken_ = token;\r\n this.log_('App check token refreshed');\r\n if (this.appCheckToken_) {\r\n this.tryAppCheck();\r\n }\r\n else {\r\n //If we're connected we want to let the server know to unauthenticate us.\r\n //If we're not connected, simply delete the credential so we dont become\r\n // authenticated next time we connect.\r\n if (this.connected_) {\r\n this.sendRequest('unappeck', {}, function () { });\r\n }\r\n }\r\n };\r\n /**\r\n * Attempts to authenticate with the given credentials. If the authentication attempt fails, it's triggered like\r\n * a auth revoked (the connection is closed).\r\n */\r\n PersistentConnection.prototype.tryAuth = function () {\r\n var _this = this;\r\n if (this.connected_ && this.authToken_) {\r\n var token_1 = this.authToken_;\r\n var authMethod = isValidFormat(token_1) ? 'auth' : 'gauth';\r\n var requestData = { cred: token_1 };\r\n if (this.authOverride_ === null) {\r\n requestData['noauth'] = true;\r\n }\r\n else if (typeof this.authOverride_ === 'object') {\r\n requestData['authvar'] = this.authOverride_;\r\n }\r\n this.sendRequest(authMethod, requestData, function (res) {\r\n var status = res[ /*status*/'s'];\r\n var data = res[ /*data*/'d'] || 'error';\r\n if (_this.authToken_ === token_1) {\r\n if (status === 'ok') {\r\n _this.invalidAuthTokenCount_ = 0;\r\n }\r\n else {\r\n // Triggers reconnect and force refresh for auth token\r\n _this.onAuthRevoked_(status, data);\r\n }\r\n }\r\n });\r\n }\r\n };\r\n /**\r\n * Attempts to authenticate with the given token. If the authentication\r\n * attempt fails, it's triggered like the token was revoked (the connection is\r\n * closed).\r\n */\r\n PersistentConnection.prototype.tryAppCheck = function () {\r\n var _this = this;\r\n if (this.connected_ && this.appCheckToken_) {\r\n this.sendRequest('appcheck', { 'token': this.appCheckToken_ }, function (res) {\r\n var status = res[ /*status*/'s'];\r\n var data = res[ /*data*/'d'] || 'error';\r\n if (status === 'ok') {\r\n _this.invalidAppCheckTokenCount_ = 0;\r\n }\r\n else {\r\n _this.onAppCheckRevoked_(status, data);\r\n }\r\n });\r\n }\r\n };\r\n /**\r\n * @inheritDoc\r\n */\r\n PersistentConnection.prototype.unlisten = function (query, tag) {\r\n var pathString = query._path.toString();\r\n var queryId = query._queryIdentifier;\r\n this.log_('Unlisten called for ' + pathString + ' ' + queryId);\r\n assert(query._queryParams.isDefault() || !query._queryParams.loadsAllData(), 'unlisten() called for non-default but complete query');\r\n var listen = this.removeListen_(pathString, queryId);\r\n if (listen && this.connected_) {\r\n this.sendUnlisten_(pathString, queryId, query._queryObject, tag);\r\n }\r\n };\r\n PersistentConnection.prototype.sendUnlisten_ = function (pathString, queryId, queryObj, tag) {\r\n this.log_('Unlisten on ' + pathString + ' for ' + queryId);\r\n var req = { /*path*/ p: pathString };\r\n var action = 'n';\r\n // Only bother sending queryId if it's non-default.\r\n if (tag) {\r\n req['q'] = queryObj;\r\n req['t'] = tag;\r\n }\r\n this.sendRequest(action, req);\r\n };\r\n PersistentConnection.prototype.onDisconnectPut = function (pathString, data, onComplete) {\r\n this.initConnection_();\r\n if (this.connected_) {\r\n this.sendOnDisconnect_('o', pathString, data, onComplete);\r\n }\r\n else {\r\n this.onDisconnectRequestQueue_.push({\r\n pathString: pathString,\r\n action: 'o',\r\n data: data,\r\n onComplete: onComplete\r\n });\r\n }\r\n };\r\n PersistentConnection.prototype.onDisconnectMerge = function (pathString, data, onComplete) {\r\n this.initConnection_();\r\n if (this.connected_) {\r\n this.sendOnDisconnect_('om', pathString, data, onComplete);\r\n }\r\n else {\r\n this.onDisconnectRequestQueue_.push({\r\n pathString: pathString,\r\n action: 'om',\r\n data: data,\r\n onComplete: onComplete\r\n });\r\n }\r\n };\r\n PersistentConnection.prototype.onDisconnectCancel = function (pathString, onComplete) {\r\n this.initConnection_();\r\n if (this.connected_) {\r\n this.sendOnDisconnect_('oc', pathString, null, onComplete);\r\n }\r\n else {\r\n this.onDisconnectRequestQueue_.push({\r\n pathString: pathString,\r\n action: 'oc',\r\n data: null,\r\n onComplete: onComplete\r\n });\r\n }\r\n };\r\n PersistentConnection.prototype.sendOnDisconnect_ = function (action, pathString, data, onComplete) {\r\n var request = { /*path*/ p: pathString, /*data*/ d: data };\r\n this.log_('onDisconnect ' + action, request);\r\n this.sendRequest(action, request, function (response) {\r\n if (onComplete) {\r\n setTimeout(function () {\r\n onComplete(response[ /*status*/'s'], response[ /* data */'d']);\r\n }, Math.floor(0));\r\n }\r\n });\r\n };\r\n PersistentConnection.prototype.put = function (pathString, data, onComplete, hash) {\r\n this.putInternal('p', pathString, data, onComplete, hash);\r\n };\r\n PersistentConnection.prototype.merge = function (pathString, data, onComplete, hash) {\r\n this.putInternal('m', pathString, data, onComplete, hash);\r\n };\r\n PersistentConnection.prototype.putInternal = function (action, pathString, data, onComplete, hash) {\r\n this.initConnection_();\r\n var request = {\r\n /*path*/ p: pathString,\r\n /*data*/ d: data\r\n };\r\n if (hash !== undefined) {\r\n request[ /*hash*/'h'] = hash;\r\n }\r\n // TODO: Only keep track of the most recent put for a given path?\r\n this.outstandingPuts_.push({\r\n action: action,\r\n request: request,\r\n onComplete: onComplete\r\n });\r\n this.outstandingPutCount_++;\r\n var index = this.outstandingPuts_.length - 1;\r\n if (this.connected_) {\r\n this.sendPut_(index);\r\n }\r\n else {\r\n this.log_('Buffering put: ' + pathString);\r\n }\r\n };\r\n PersistentConnection.prototype.sendPut_ = function (index) {\r\n var _this = this;\r\n var action = this.outstandingPuts_[index].action;\r\n var request = this.outstandingPuts_[index].request;\r\n var onComplete = this.outstandingPuts_[index].onComplete;\r\n this.outstandingPuts_[index].queued = this.connected_;\r\n this.sendRequest(action, request, function (message) {\r\n _this.log_(action + ' response', message);\r\n delete _this.outstandingPuts_[index];\r\n _this.outstandingPutCount_--;\r\n // Clean up array occasionally.\r\n if (_this.outstandingPutCount_ === 0) {\r\n _this.outstandingPuts_ = [];\r\n }\r\n if (onComplete) {\r\n onComplete(message[ /*status*/'s'], message[ /* data */'d']);\r\n }\r\n });\r\n };\r\n PersistentConnection.prototype.reportStats = function (stats) {\r\n var _this = this;\r\n // If we're not connected, we just drop the stats.\r\n if (this.connected_) {\r\n var request = { /*counters*/ c: stats };\r\n this.log_('reportStats', request);\r\n this.sendRequest(/*stats*/ 's', request, function (result) {\r\n var status = result[ /*status*/'s'];\r\n if (status !== 'ok') {\r\n var errorReason = result[ /* data */'d'];\r\n _this.log_('reportStats', 'Error sending stats: ' + errorReason);\r\n }\r\n });\r\n }\r\n };\r\n PersistentConnection.prototype.onDataMessage_ = function (message) {\r\n if ('r' in message) {\r\n // this is a response\r\n this.log_('from server: ' + stringify(message));\r\n var reqNum = message['r'];\r\n var onResponse = this.requestCBHash_[reqNum];\r\n if (onResponse) {\r\n delete this.requestCBHash_[reqNum];\r\n onResponse(message[ /*body*/'b']);\r\n }\r\n }\r\n else if ('error' in message) {\r\n throw 'A server-side error has occurred: ' + message['error'];\r\n }\r\n else if ('a' in message) {\r\n // a and b are action and body, respectively\r\n this.onDataPush_(message['a'], message['b']);\r\n }\r\n };\r\n PersistentConnection.prototype.onDataPush_ = function (action, body) {\r\n this.log_('handleServerMessage', action, body);\r\n if (action === 'd') {\r\n this.onDataUpdate_(body[ /*path*/'p'], body[ /*data*/'d'], \r\n /*isMerge*/ false, body['t']);\r\n }\r\n else if (action === 'm') {\r\n this.onDataUpdate_(body[ /*path*/'p'], body[ /*data*/'d'], \r\n /*isMerge=*/ true, body['t']);\r\n }\r\n else if (action === 'c') {\r\n this.onListenRevoked_(body[ /*path*/'p'], body[ /*query*/'q']);\r\n }\r\n else if (action === 'ac') {\r\n this.onAuthRevoked_(body[ /*status code*/'s'], body[ /* explanation */'d']);\r\n }\r\n else if (action === 'apc') {\r\n this.onAppCheckRevoked_(body[ /*status code*/'s'], body[ /* explanation */'d']);\r\n }\r\n else if (action === 'sd') {\r\n this.onSecurityDebugPacket_(body);\r\n }\r\n else {\r\n error('Unrecognized action received from server: ' +\r\n stringify(action) +\r\n '\\nAre you using the latest client?');\r\n }\r\n };\r\n PersistentConnection.prototype.onReady_ = function (timestamp, sessionId) {\r\n this.log_('connection ready');\r\n this.connected_ = true;\r\n this.lastConnectionEstablishedTime_ = new Date().getTime();\r\n this.handleTimestamp_(timestamp);\r\n this.lastSessionId = sessionId;\r\n if (this.firstConnection_) {\r\n this.sendConnectStats_();\r\n }\r\n this.restoreState_();\r\n this.firstConnection_ = false;\r\n this.onConnectStatus_(true);\r\n };\r\n PersistentConnection.prototype.scheduleConnect_ = function (timeout) {\r\n var _this = this;\r\n assert(!this.realtime_, \"Scheduling a connect when we're already connected/ing?\");\r\n if (this.establishConnectionTimer_) {\r\n clearTimeout(this.establishConnectionTimer_);\r\n }\r\n // NOTE: Even when timeout is 0, it's important to do a setTimeout to work around an infuriating \"Security Error\" in\r\n // Firefox when trying to write to our long-polling iframe in some scenarios (e.g. Forge or our unit tests).\r\n this.establishConnectionTimer_ = setTimeout(function () {\r\n _this.establishConnectionTimer_ = null;\r\n _this.establishConnection_();\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n }, Math.floor(timeout));\r\n };\r\n PersistentConnection.prototype.initConnection_ = function () {\r\n if (!this.realtime_ && this.firstConnection_) {\r\n this.scheduleConnect_(0);\r\n }\r\n };\r\n PersistentConnection.prototype.onVisible_ = function (visible) {\r\n // NOTE: Tabbing away and back to a window will defeat our reconnect backoff, but I think that's fine.\r\n if (visible &&\r\n !this.visible_ &&\r\n this.reconnectDelay_ === this.maxReconnectDelay_) {\r\n this.log_('Window became visible. Reducing delay.');\r\n this.reconnectDelay_ = RECONNECT_MIN_DELAY;\r\n if (!this.realtime_) {\r\n this.scheduleConnect_(0);\r\n }\r\n }\r\n this.visible_ = visible;\r\n };\r\n PersistentConnection.prototype.onOnline_ = function (online) {\r\n if (online) {\r\n this.log_('Browser went online.');\r\n this.reconnectDelay_ = RECONNECT_MIN_DELAY;\r\n if (!this.realtime_) {\r\n this.scheduleConnect_(0);\r\n }\r\n }\r\n else {\r\n this.log_('Browser went offline. Killing connection.');\r\n if (this.realtime_) {\r\n this.realtime_.close();\r\n }\r\n }\r\n };\r\n PersistentConnection.prototype.onRealtimeDisconnect_ = function () {\r\n this.log_('data client disconnected');\r\n this.connected_ = false;\r\n this.realtime_ = null;\r\n // Since we don't know if our sent transactions succeeded or not, we need to cancel them.\r\n this.cancelSentTransactions_();\r\n // Clear out the pending requests.\r\n this.requestCBHash_ = {};\r\n if (this.shouldReconnect_()) {\r\n if (!this.visible_) {\r\n this.log_(\"Window isn't visible. Delaying reconnect.\");\r\n this.reconnectDelay_ = this.maxReconnectDelay_;\r\n this.lastConnectionAttemptTime_ = new Date().getTime();\r\n }\r\n else if (this.lastConnectionEstablishedTime_) {\r\n // If we've been connected long enough, reset reconnect delay to minimum.\r\n var timeSinceLastConnectSucceeded = new Date().getTime() - this.lastConnectionEstablishedTime_;\r\n if (timeSinceLastConnectSucceeded > RECONNECT_DELAY_RESET_TIMEOUT) {\r\n this.reconnectDelay_ = RECONNECT_MIN_DELAY;\r\n }\r\n this.lastConnectionEstablishedTime_ = null;\r\n }\r\n var timeSinceLastConnectAttempt = new Date().getTime() - this.lastConnectionAttemptTime_;\r\n var reconnectDelay = Math.max(0, this.reconnectDelay_ - timeSinceLastConnectAttempt);\r\n reconnectDelay = Math.random() * reconnectDelay;\r\n this.log_('Trying to reconnect in ' + reconnectDelay + 'ms');\r\n this.scheduleConnect_(reconnectDelay);\r\n // Adjust reconnect delay for next time.\r\n this.reconnectDelay_ = Math.min(this.maxReconnectDelay_, this.reconnectDelay_ * RECONNECT_DELAY_MULTIPLIER);\r\n }\r\n this.onConnectStatus_(false);\r\n };\r\n PersistentConnection.prototype.establishConnection_ = function () {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var onDataMessage, onReady, onDisconnect_1, connId, lastSessionId, canceled_1, connection_1, closeFn, sendRequestFn, forceRefresh, _a, authToken, appCheckToken, error_1;\r\n var _this = this;\r\n return __generator(this, function (_b) {\r\n switch (_b.label) {\r\n case 0:\r\n if (!this.shouldReconnect_()) return [3 /*break*/, 4];\r\n this.log_('Making a connection attempt');\r\n this.lastConnectionAttemptTime_ = new Date().getTime();\r\n this.lastConnectionEstablishedTime_ = null;\r\n onDataMessage = this.onDataMessage_.bind(this);\r\n onReady = this.onReady_.bind(this);\r\n onDisconnect_1 = this.onRealtimeDisconnect_.bind(this);\r\n connId = this.id + ':' + PersistentConnection.nextConnectionId_++;\r\n lastSessionId = this.lastSessionId;\r\n canceled_1 = false;\r\n connection_1 = null;\r\n closeFn = function () {\r\n if (connection_1) {\r\n connection_1.close();\r\n }\r\n else {\r\n canceled_1 = true;\r\n onDisconnect_1();\r\n }\r\n };\r\n sendRequestFn = function (msg) {\r\n assert(connection_1, \"sendRequest call when we're not connected not allowed.\");\r\n connection_1.sendRequest(msg);\r\n };\r\n this.realtime_ = {\r\n close: closeFn,\r\n sendRequest: sendRequestFn\r\n };\r\n forceRefresh = this.forceTokenRefresh_;\r\n this.forceTokenRefresh_ = false;\r\n _b.label = 1;\r\n case 1:\r\n _b.trys.push([1, 3, , 4]);\r\n return [4 /*yield*/, Promise.all([\r\n this.authTokenProvider_.getToken(forceRefresh),\r\n this.appCheckTokenProvider_.getToken(forceRefresh)\r\n ])];\r\n case 2:\r\n _a = __read.apply(void 0, [_b.sent(), 2]), authToken = _a[0], appCheckToken = _a[1];\r\n if (!canceled_1) {\r\n log('getToken() completed. Creating connection.');\r\n this.authToken_ = authToken && authToken.accessToken;\r\n this.appCheckToken_ = appCheckToken && appCheckToken.token;\r\n connection_1 = new Connection(connId, this.repoInfo_, this.applicationId_, this.appCheckToken_, this.authToken_, onDataMessage, onReady, onDisconnect_1, \r\n /* onKill= */ function (reason) {\r\n warn(reason + ' (' + _this.repoInfo_.toString() + ')');\r\n _this.interrupt(SERVER_KILL_INTERRUPT_REASON);\r\n }, lastSessionId);\r\n }\r\n else {\r\n log('getToken() completed but was canceled');\r\n }\r\n return [3 /*break*/, 4];\r\n case 3:\r\n error_1 = _b.sent();\r\n this.log_('Failed to get token: ' + error_1);\r\n if (!canceled_1) {\r\n if (this.repoInfo_.nodeAdmin) {\r\n // This may be a critical error for the Admin Node.js SDK, so log a warning.\r\n // But getToken() may also just have temporarily failed, so we still want to\r\n // continue retrying.\r\n warn(error_1);\r\n }\r\n closeFn();\r\n }\r\n return [3 /*break*/, 4];\r\n case 4: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n PersistentConnection.prototype.interrupt = function (reason) {\r\n log('Interrupting connection for reason: ' + reason);\r\n this.interruptReasons_[reason] = true;\r\n if (this.realtime_) {\r\n this.realtime_.close();\r\n }\r\n else {\r\n if (this.establishConnectionTimer_) {\r\n clearTimeout(this.establishConnectionTimer_);\r\n this.establishConnectionTimer_ = null;\r\n }\r\n if (this.connected_) {\r\n this.onRealtimeDisconnect_();\r\n }\r\n }\r\n };\r\n PersistentConnection.prototype.resume = function (reason) {\r\n log('Resuming connection for reason: ' + reason);\r\n delete this.interruptReasons_[reason];\r\n if (isEmpty(this.interruptReasons_)) {\r\n this.reconnectDelay_ = RECONNECT_MIN_DELAY;\r\n if (!this.realtime_) {\r\n this.scheduleConnect_(0);\r\n }\r\n }\r\n };\r\n PersistentConnection.prototype.handleTimestamp_ = function (timestamp) {\r\n var delta = timestamp - new Date().getTime();\r\n this.onServerInfoUpdate_({ serverTimeOffset: delta });\r\n };\r\n PersistentConnection.prototype.cancelSentTransactions_ = function () {\r\n for (var i = 0; i < this.outstandingPuts_.length; i++) {\r\n var put = this.outstandingPuts_[i];\r\n if (put && /*hash*/ 'h' in put.request && put.queued) {\r\n if (put.onComplete) {\r\n put.onComplete('disconnect');\r\n }\r\n delete this.outstandingPuts_[i];\r\n this.outstandingPutCount_--;\r\n }\r\n }\r\n // Clean up array occasionally.\r\n if (this.outstandingPutCount_ === 0) {\r\n this.outstandingPuts_ = [];\r\n }\r\n };\r\n PersistentConnection.prototype.onListenRevoked_ = function (pathString, query) {\r\n // Remove the listen and manufacture a \"permission_denied\" error for the failed listen.\r\n var queryId;\r\n if (!query) {\r\n queryId = 'default';\r\n }\r\n else {\r\n queryId = query.map(function (q) { return ObjectToUniqueKey(q); }).join('$');\r\n }\r\n var listen = this.removeListen_(pathString, queryId);\r\n if (listen && listen.onComplete) {\r\n listen.onComplete('permission_denied');\r\n }\r\n };\r\n PersistentConnection.prototype.removeListen_ = function (pathString, queryId) {\r\n var normalizedPathString = new Path(pathString).toString(); // normalize path.\r\n var listen;\r\n if (this.listens.has(normalizedPathString)) {\r\n var map = this.listens.get(normalizedPathString);\r\n listen = map.get(queryId);\r\n map.delete(queryId);\r\n if (map.size === 0) {\r\n this.listens.delete(normalizedPathString);\r\n }\r\n }\r\n else {\r\n // all listens for this path has already been removed\r\n listen = undefined;\r\n }\r\n return listen;\r\n };\r\n PersistentConnection.prototype.onAuthRevoked_ = function (statusCode, explanation) {\r\n log('Auth token revoked: ' + statusCode + '/' + explanation);\r\n this.authToken_ = null;\r\n this.forceTokenRefresh_ = true;\r\n this.realtime_.close();\r\n if (statusCode === 'invalid_token' || statusCode === 'permission_denied') {\r\n // We'll wait a couple times before logging the warning / increasing the\r\n // retry period since oauth tokens will report as \"invalid\" if they're\r\n // just expired. Plus there may be transient issues that resolve themselves.\r\n this.invalidAuthTokenCount_++;\r\n if (this.invalidAuthTokenCount_ >= INVALID_TOKEN_THRESHOLD) {\r\n // Set a long reconnect delay because recovery is unlikely\r\n this.reconnectDelay_ = RECONNECT_MAX_DELAY_FOR_ADMINS;\r\n // Notify the auth token provider that the token is invalid, which will log\r\n // a warning\r\n this.authTokenProvider_.notifyForInvalidToken();\r\n }\r\n }\r\n };\r\n PersistentConnection.prototype.onAppCheckRevoked_ = function (statusCode, explanation) {\r\n log('App check token revoked: ' + statusCode + '/' + explanation);\r\n this.appCheckToken_ = null;\r\n this.forceTokenRefresh_ = true;\r\n // Note: We don't close the connection as the developer may not have\r\n // enforcement enabled. The backend closes connections with enforcements.\r\n if (statusCode === 'invalid_token' || statusCode === 'permission_denied') {\r\n // We'll wait a couple times before logging the warning / increasing the\r\n // retry period since oauth tokens will report as \"invalid\" if they're\r\n // just expired. Plus there may be transient issues that resolve themselves.\r\n this.invalidAppCheckTokenCount_++;\r\n if (this.invalidAppCheckTokenCount_ >= INVALID_TOKEN_THRESHOLD) {\r\n this.appCheckTokenProvider_.notifyForInvalidToken();\r\n }\r\n }\r\n };\r\n PersistentConnection.prototype.onSecurityDebugPacket_ = function (body) {\r\n if (this.securityDebugCallback_) {\r\n this.securityDebugCallback_(body);\r\n }\r\n else {\r\n if ('msg' in body) {\r\n console.log('FIREBASE: ' + body['msg'].replace('\\n', '\\nFIREBASE: '));\r\n }\r\n }\r\n };\r\n PersistentConnection.prototype.restoreState_ = function () {\r\n var e_1, _a, e_2, _b;\r\n //Re-authenticate ourselves if we have a credential stored.\r\n this.tryAuth();\r\n this.tryAppCheck();\r\n try {\r\n // Puts depend on having received the corresponding data update from the server before they complete, so we must\r\n // make sure to send listens before puts.\r\n for (var _c = __values(this.listens.values()), _d = _c.next(); !_d.done; _d = _c.next()) {\r\n var queries = _d.value;\r\n try {\r\n for (var _e = (e_2 = void 0, __values(queries.values())), _f = _e.next(); !_f.done; _f = _e.next()) {\r\n var listenSpec = _f.value;\r\n this.sendListen_(listenSpec);\r\n }\r\n }\r\n catch (e_2_1) { e_2 = { error: e_2_1 }; }\r\n finally {\r\n try {\r\n if (_f && !_f.done && (_b = _e.return)) _b.call(_e);\r\n }\r\n finally { if (e_2) throw e_2.error; }\r\n }\r\n }\r\n }\r\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\r\n finally {\r\n try {\r\n if (_d && !_d.done && (_a = _c.return)) _a.call(_c);\r\n }\r\n finally { if (e_1) throw e_1.error; }\r\n }\r\n for (var i = 0; i < this.outstandingPuts_.length; i++) {\r\n if (this.outstandingPuts_[i]) {\r\n this.sendPut_(i);\r\n }\r\n }\r\n while (this.onDisconnectRequestQueue_.length) {\r\n var request = this.onDisconnectRequestQueue_.shift();\r\n this.sendOnDisconnect_(request.action, request.pathString, request.data, request.onComplete);\r\n }\r\n for (var i = 0; i < this.outstandingGets_.length; i++) {\r\n if (this.outstandingGets_[i]) {\r\n this.sendGet_(i);\r\n }\r\n }\r\n };\r\n /**\r\n * Sends client stats for first connection\r\n */\r\n PersistentConnection.prototype.sendConnectStats_ = function () {\r\n var stats = {};\r\n var clientName = 'js';\r\n if (isNodeSdk()) {\r\n if (this.repoInfo_.nodeAdmin) {\r\n clientName = 'admin_node';\r\n }\r\n else {\r\n clientName = 'node';\r\n }\r\n }\r\n stats['sdk.' + clientName + '.' + SDK_VERSION.replace(/\\./g, '-')] = 1;\r\n if (isMobileCordova()) {\r\n stats['framework.cordova'] = 1;\r\n }\r\n else if (isReactNative()) {\r\n stats['framework.reactnative'] = 1;\r\n }\r\n this.reportStats(stats);\r\n };\r\n PersistentConnection.prototype.shouldReconnect_ = function () {\r\n var online = OnlineMonitor.getInstance().currentlyOnline();\r\n return isEmpty(this.interruptReasons_) && online;\r\n };\r\n PersistentConnection.nextPersistentConnectionId_ = 0;\r\n /**\r\n * Counter for number of connections created. Mainly used for tagging in the logs\r\n */\r\n PersistentConnection.nextConnectionId_ = 0;\r\n return PersistentConnection;\r\n}(ServerActions));\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nvar NamedNode = /** @class */ (function () {\r\n function NamedNode(name, node) {\r\n this.name = name;\r\n this.node = node;\r\n }\r\n NamedNode.Wrap = function (name, node) {\r\n return new NamedNode(name, node);\r\n };\r\n return NamedNode;\r\n}());\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nvar Index = /** @class */ (function () {\r\n function Index() {\r\n }\r\n /**\r\n * @returns A standalone comparison function for\r\n * this index\r\n */\r\n Index.prototype.getCompare = function () {\r\n return this.compare.bind(this);\r\n };\r\n /**\r\n * Given a before and after value for a node, determine if the indexed value has changed. Even if they are different,\r\n * it's possible that the changes are isolated to parts of the snapshot that are not indexed.\r\n *\r\n *\r\n * @returns True if the portion of the snapshot being indexed changed between oldNode and newNode\r\n */\r\n Index.prototype.indexedValueChanged = function (oldNode, newNode) {\r\n var oldWrapped = new NamedNode(MIN_NAME, oldNode);\r\n var newWrapped = new NamedNode(MIN_NAME, newNode);\r\n return this.compare(oldWrapped, newWrapped) !== 0;\r\n };\r\n /**\r\n * @returns a node wrapper that will sort equal to or less than\r\n * any other node wrapper, using this index\r\n */\r\n Index.prototype.minPost = function () {\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n return NamedNode.MIN;\r\n };\r\n return Index;\r\n}());\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nvar __EMPTY_NODE;\r\nvar KeyIndex = /** @class */ (function (_super) {\r\n __extends(KeyIndex, _super);\r\n function KeyIndex() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n Object.defineProperty(KeyIndex, \"__EMPTY_NODE\", {\r\n get: function () {\r\n return __EMPTY_NODE;\r\n },\r\n set: function (val) {\r\n __EMPTY_NODE = val;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n KeyIndex.prototype.compare = function (a, b) {\r\n return nameCompare(a.name, b.name);\r\n };\r\n KeyIndex.prototype.isDefinedOn = function (node) {\r\n // We could probably return true here (since every node has a key), but it's never called\r\n // so just leaving unimplemented for now.\r\n throw assertionError('KeyIndex.isDefinedOn not expected to be called.');\r\n };\r\n KeyIndex.prototype.indexedValueChanged = function (oldNode, newNode) {\r\n return false; // The key for a node never changes.\r\n };\r\n KeyIndex.prototype.minPost = function () {\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n return NamedNode.MIN;\r\n };\r\n KeyIndex.prototype.maxPost = function () {\r\n // TODO: This should really be created once and cached in a static property, but\r\n // NamedNode isn't defined yet, so I can't use it in a static. Bleh.\r\n return new NamedNode(MAX_NAME, __EMPTY_NODE);\r\n };\r\n KeyIndex.prototype.makePost = function (indexValue, name) {\r\n assert(typeof indexValue === 'string', 'KeyIndex indexValue must always be a string.');\r\n // We just use empty node, but it'll never be compared, since our comparator only looks at name.\r\n return new NamedNode(indexValue, __EMPTY_NODE);\r\n };\r\n /**\r\n * @returns String representation for inclusion in a query spec\r\n */\r\n KeyIndex.prototype.toString = function () {\r\n return '.key';\r\n };\r\n return KeyIndex;\r\n}(Index));\r\nvar KEY_INDEX = new KeyIndex();\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * An iterator over an LLRBNode.\r\n */\r\nvar SortedMapIterator = /** @class */ (function () {\r\n /**\r\n * @param node - Node to iterate.\r\n * @param isReverse_ - Whether or not to iterate in reverse\r\n */\r\n function SortedMapIterator(node, startKey, comparator, isReverse_, resultGenerator_) {\r\n if (resultGenerator_ === void 0) { resultGenerator_ = null; }\r\n this.isReverse_ = isReverse_;\r\n this.resultGenerator_ = resultGenerator_;\r\n this.nodeStack_ = [];\r\n var cmp = 1;\r\n while (!node.isEmpty()) {\r\n node = node;\r\n cmp = startKey ? comparator(node.key, startKey) : 1;\r\n // flip the comparison if we're going in reverse\r\n if (isReverse_) {\r\n cmp *= -1;\r\n }\r\n if (cmp < 0) {\r\n // This node is less than our start key. ignore it\r\n if (this.isReverse_) {\r\n node = node.left;\r\n }\r\n else {\r\n node = node.right;\r\n }\r\n }\r\n else if (cmp === 0) {\r\n // This node is exactly equal to our start key. Push it on the stack, but stop iterating;\r\n this.nodeStack_.push(node);\r\n break;\r\n }\r\n else {\r\n // This node is greater than our start key, add it to the stack and move to the next one\r\n this.nodeStack_.push(node);\r\n if (this.isReverse_) {\r\n node = node.right;\r\n }\r\n else {\r\n node = node.left;\r\n }\r\n }\r\n }\r\n }\r\n SortedMapIterator.prototype.getNext = function () {\r\n if (this.nodeStack_.length === 0) {\r\n return null;\r\n }\r\n var node = this.nodeStack_.pop();\r\n var result;\r\n if (this.resultGenerator_) {\r\n result = this.resultGenerator_(node.key, node.value);\r\n }\r\n else {\r\n result = { key: node.key, value: node.value };\r\n }\r\n if (this.isReverse_) {\r\n node = node.left;\r\n while (!node.isEmpty()) {\r\n this.nodeStack_.push(node);\r\n node = node.right;\r\n }\r\n }\r\n else {\r\n node = node.right;\r\n while (!node.isEmpty()) {\r\n this.nodeStack_.push(node);\r\n node = node.left;\r\n }\r\n }\r\n return result;\r\n };\r\n SortedMapIterator.prototype.hasNext = function () {\r\n return this.nodeStack_.length > 0;\r\n };\r\n SortedMapIterator.prototype.peek = function () {\r\n if (this.nodeStack_.length === 0) {\r\n return null;\r\n }\r\n var node = this.nodeStack_[this.nodeStack_.length - 1];\r\n if (this.resultGenerator_) {\r\n return this.resultGenerator_(node.key, node.value);\r\n }\r\n else {\r\n return { key: node.key, value: node.value };\r\n }\r\n };\r\n return SortedMapIterator;\r\n}());\r\n/**\r\n * Represents a node in a Left-leaning Red-Black tree.\r\n */\r\nvar LLRBNode = /** @class */ (function () {\r\n /**\r\n * @param key - Key associated with this node.\r\n * @param value - Value associated with this node.\r\n * @param color - Whether this node is red.\r\n * @param left - Left child.\r\n * @param right - Right child.\r\n */\r\n function LLRBNode(key, value, color, left, right) {\r\n this.key = key;\r\n this.value = value;\r\n this.color = color != null ? color : LLRBNode.RED;\r\n this.left =\r\n left != null ? left : SortedMap.EMPTY_NODE;\r\n this.right =\r\n right != null ? right : SortedMap.EMPTY_NODE;\r\n }\r\n /**\r\n * Returns a copy of the current node, optionally replacing pieces of it.\r\n *\r\n * @param key - New key for the node, or null.\r\n * @param value - New value for the node, or null.\r\n * @param color - New color for the node, or null.\r\n * @param left - New left child for the node, or null.\r\n * @param right - New right child for the node, or null.\r\n * @returns The node copy.\r\n */\r\n LLRBNode.prototype.copy = function (key, value, color, left, right) {\r\n return new LLRBNode(key != null ? key : this.key, value != null ? value : this.value, color != null ? color : this.color, left != null ? left : this.left, right != null ? right : this.right);\r\n };\r\n /**\r\n * @returns The total number of nodes in the tree.\r\n */\r\n LLRBNode.prototype.count = function () {\r\n return this.left.count() + 1 + this.right.count();\r\n };\r\n /**\r\n * @returns True if the tree is empty.\r\n */\r\n LLRBNode.prototype.isEmpty = function () {\r\n return false;\r\n };\r\n /**\r\n * Traverses the tree in key order and calls the specified action function\r\n * for each node.\r\n *\r\n * @param action - Callback function to be called for each\r\n * node. If it returns true, traversal is aborted.\r\n * @returns The first truthy value returned by action, or the last falsey\r\n * value returned by action\r\n */\r\n LLRBNode.prototype.inorderTraversal = function (action) {\r\n return (this.left.inorderTraversal(action) ||\r\n !!action(this.key, this.value) ||\r\n this.right.inorderTraversal(action));\r\n };\r\n /**\r\n * Traverses the tree in reverse key order and calls the specified action function\r\n * for each node.\r\n *\r\n * @param action - Callback function to be called for each\r\n * node. If it returns true, traversal is aborted.\r\n * @returns True if traversal was aborted.\r\n */\r\n LLRBNode.prototype.reverseTraversal = function (action) {\r\n return (this.right.reverseTraversal(action) ||\r\n action(this.key, this.value) ||\r\n this.left.reverseTraversal(action));\r\n };\r\n /**\r\n * @returns The minimum node in the tree.\r\n */\r\n LLRBNode.prototype.min_ = function () {\r\n if (this.left.isEmpty()) {\r\n return this;\r\n }\r\n else {\r\n return this.left.min_();\r\n }\r\n };\r\n /**\r\n * @returns The maximum key in the tree.\r\n */\r\n LLRBNode.prototype.minKey = function () {\r\n return this.min_().key;\r\n };\r\n /**\r\n * @returns The maximum key in the tree.\r\n */\r\n LLRBNode.prototype.maxKey = function () {\r\n if (this.right.isEmpty()) {\r\n return this.key;\r\n }\r\n else {\r\n return this.right.maxKey();\r\n }\r\n };\r\n /**\r\n * @param key - Key to insert.\r\n * @param value - Value to insert.\r\n * @param comparator - Comparator.\r\n * @returns New tree, with the key/value added.\r\n */\r\n LLRBNode.prototype.insert = function (key, value, comparator) {\r\n var n = this;\r\n var cmp = comparator(key, n.key);\r\n if (cmp < 0) {\r\n n = n.copy(null, null, null, n.left.insert(key, value, comparator), null);\r\n }\r\n else if (cmp === 0) {\r\n n = n.copy(null, value, null, null, null);\r\n }\r\n else {\r\n n = n.copy(null, null, null, null, n.right.insert(key, value, comparator));\r\n }\r\n return n.fixUp_();\r\n };\r\n /**\r\n * @returns New tree, with the minimum key removed.\r\n */\r\n LLRBNode.prototype.removeMin_ = function () {\r\n if (this.left.isEmpty()) {\r\n return SortedMap.EMPTY_NODE;\r\n }\r\n var n = this;\r\n if (!n.left.isRed_() && !n.left.left.isRed_()) {\r\n n = n.moveRedLeft_();\r\n }\r\n n = n.copy(null, null, null, n.left.removeMin_(), null);\r\n return n.fixUp_();\r\n };\r\n /**\r\n * @param key - The key of the item to remove.\r\n * @param comparator - Comparator.\r\n * @returns New tree, with the specified item removed.\r\n */\r\n LLRBNode.prototype.remove = function (key, comparator) {\r\n var n, smallest;\r\n n = this;\r\n if (comparator(key, n.key) < 0) {\r\n if (!n.left.isEmpty() && !n.left.isRed_() && !n.left.left.isRed_()) {\r\n n = n.moveRedLeft_();\r\n }\r\n n = n.copy(null, null, null, n.left.remove(key, comparator), null);\r\n }\r\n else {\r\n if (n.left.isRed_()) {\r\n n = n.rotateRight_();\r\n }\r\n if (!n.right.isEmpty() && !n.right.isRed_() && !n.right.left.isRed_()) {\r\n n = n.moveRedRight_();\r\n }\r\n if (comparator(key, n.key) === 0) {\r\n if (n.right.isEmpty()) {\r\n return SortedMap.EMPTY_NODE;\r\n }\r\n else {\r\n smallest = n.right.min_();\r\n n = n.copy(smallest.key, smallest.value, null, null, n.right.removeMin_());\r\n }\r\n }\r\n n = n.copy(null, null, null, null, n.right.remove(key, comparator));\r\n }\r\n return n.fixUp_();\r\n };\r\n /**\r\n * @returns Whether this is a RED node.\r\n */\r\n LLRBNode.prototype.isRed_ = function () {\r\n return this.color;\r\n };\r\n /**\r\n * @returns New tree after performing any needed rotations.\r\n */\r\n LLRBNode.prototype.fixUp_ = function () {\r\n var n = this;\r\n if (n.right.isRed_() && !n.left.isRed_()) {\r\n n = n.rotateLeft_();\r\n }\r\n if (n.left.isRed_() && n.left.left.isRed_()) {\r\n n = n.rotateRight_();\r\n }\r\n if (n.left.isRed_() && n.right.isRed_()) {\r\n n = n.colorFlip_();\r\n }\r\n return n;\r\n };\r\n /**\r\n * @returns New tree, after moveRedLeft.\r\n */\r\n LLRBNode.prototype.moveRedLeft_ = function () {\r\n var n = this.colorFlip_();\r\n if (n.right.left.isRed_()) {\r\n n = n.copy(null, null, null, null, n.right.rotateRight_());\r\n n = n.rotateLeft_();\r\n n = n.colorFlip_();\r\n }\r\n return n;\r\n };\r\n /**\r\n * @returns New tree, after moveRedRight.\r\n */\r\n LLRBNode.prototype.moveRedRight_ = function () {\r\n var n = this.colorFlip_();\r\n if (n.left.left.isRed_()) {\r\n n = n.rotateRight_();\r\n n = n.colorFlip_();\r\n }\r\n return n;\r\n };\r\n /**\r\n * @returns New tree, after rotateLeft.\r\n */\r\n LLRBNode.prototype.rotateLeft_ = function () {\r\n var nl = this.copy(null, null, LLRBNode.RED, null, this.right.left);\r\n return this.right.copy(null, null, this.color, nl, null);\r\n };\r\n /**\r\n * @returns New tree, after rotateRight.\r\n */\r\n LLRBNode.prototype.rotateRight_ = function () {\r\n var nr = this.copy(null, null, LLRBNode.RED, this.left.right, null);\r\n return this.left.copy(null, null, this.color, null, nr);\r\n };\r\n /**\r\n * @returns Newt ree, after colorFlip.\r\n */\r\n LLRBNode.prototype.colorFlip_ = function () {\r\n var left = this.left.copy(null, null, !this.left.color, null, null);\r\n var right = this.right.copy(null, null, !this.right.color, null, null);\r\n return this.copy(null, null, !this.color, left, right);\r\n };\r\n /**\r\n * For testing.\r\n *\r\n * @returns True if all is well.\r\n */\r\n LLRBNode.prototype.checkMaxDepth_ = function () {\r\n var blackDepth = this.check_();\r\n return Math.pow(2.0, blackDepth) <= this.count() + 1;\r\n };\r\n LLRBNode.prototype.check_ = function () {\r\n if (this.isRed_() && this.left.isRed_()) {\r\n throw new Error('Red node has red child(' + this.key + ',' + this.value + ')');\r\n }\r\n if (this.right.isRed_()) {\r\n throw new Error('Right child of (' + this.key + ',' + this.value + ') is red');\r\n }\r\n var blackDepth = this.left.check_();\r\n if (blackDepth !== this.right.check_()) {\r\n throw new Error('Black depths differ');\r\n }\r\n else {\r\n return blackDepth + (this.isRed_() ? 0 : 1);\r\n }\r\n };\r\n LLRBNode.RED = true;\r\n LLRBNode.BLACK = false;\r\n return LLRBNode;\r\n}());\r\n/**\r\n * Represents an empty node (a leaf node in the Red-Black Tree).\r\n */\r\nvar LLRBEmptyNode = /** @class */ (function () {\r\n function LLRBEmptyNode() {\r\n }\r\n /**\r\n * Returns a copy of the current node.\r\n *\r\n * @returns The node copy.\r\n */\r\n LLRBEmptyNode.prototype.copy = function (key, value, color, left, right) {\r\n return this;\r\n };\r\n /**\r\n * Returns a copy of the tree, with the specified key/value added.\r\n *\r\n * @param key - Key to be added.\r\n * @param value - Value to be added.\r\n * @param comparator - Comparator.\r\n * @returns New tree, with item added.\r\n */\r\n LLRBEmptyNode.prototype.insert = function (key, value, comparator) {\r\n return new LLRBNode(key, value, null);\r\n };\r\n /**\r\n * Returns a copy of the tree, with the specified key removed.\r\n *\r\n * @param key - The key to remove.\r\n * @param comparator - Comparator.\r\n * @returns New tree, with item removed.\r\n */\r\n LLRBEmptyNode.prototype.remove = function (key, comparator) {\r\n return this;\r\n };\r\n /**\r\n * @returns The total number of nodes in the tree.\r\n */\r\n LLRBEmptyNode.prototype.count = function () {\r\n return 0;\r\n };\r\n /**\r\n * @returns True if the tree is empty.\r\n */\r\n LLRBEmptyNode.prototype.isEmpty = function () {\r\n return true;\r\n };\r\n /**\r\n * Traverses the tree in key order and calls the specified action function\r\n * for each node.\r\n *\r\n * @param action - Callback function to be called for each\r\n * node. If it returns true, traversal is aborted.\r\n * @returns True if traversal was aborted.\r\n */\r\n LLRBEmptyNode.prototype.inorderTraversal = function (action) {\r\n return false;\r\n };\r\n /**\r\n * Traverses the tree in reverse key order and calls the specified action function\r\n * for each node.\r\n *\r\n * @param action - Callback function to be called for each\r\n * node. If it returns true, traversal is aborted.\r\n * @returns True if traversal was aborted.\r\n */\r\n LLRBEmptyNode.prototype.reverseTraversal = function (action) {\r\n return false;\r\n };\r\n LLRBEmptyNode.prototype.minKey = function () {\r\n return null;\r\n };\r\n LLRBEmptyNode.prototype.maxKey = function () {\r\n return null;\r\n };\r\n LLRBEmptyNode.prototype.check_ = function () {\r\n return 0;\r\n };\r\n /**\r\n * @returns Whether this node is red.\r\n */\r\n LLRBEmptyNode.prototype.isRed_ = function () {\r\n return false;\r\n };\r\n return LLRBEmptyNode;\r\n}());\r\n/**\r\n * An immutable sorted map implementation, based on a Left-leaning Red-Black\r\n * tree.\r\n */\r\nvar SortedMap = /** @class */ (function () {\r\n /**\r\n * @param comparator_ - Key comparator.\r\n * @param root_ - Optional root node for the map.\r\n */\r\n function SortedMap(comparator_, root_) {\r\n if (root_ === void 0) { root_ = SortedMap.EMPTY_NODE; }\r\n this.comparator_ = comparator_;\r\n this.root_ = root_;\r\n }\r\n /**\r\n * Returns a copy of the map, with the specified key/value added or replaced.\r\n * (TODO: We should perhaps rename this method to 'put')\r\n *\r\n * @param key - Key to be added.\r\n * @param value - Value to be added.\r\n * @returns New map, with item added.\r\n */\r\n SortedMap.prototype.insert = function (key, value) {\r\n return new SortedMap(this.comparator_, this.root_\r\n .insert(key, value, this.comparator_)\r\n .copy(null, null, LLRBNode.BLACK, null, null));\r\n };\r\n /**\r\n * Returns a copy of the map, with the specified key removed.\r\n *\r\n * @param key - The key to remove.\r\n * @returns New map, with item removed.\r\n */\r\n SortedMap.prototype.remove = function (key) {\r\n return new SortedMap(this.comparator_, this.root_\r\n .remove(key, this.comparator_)\r\n .copy(null, null, LLRBNode.BLACK, null, null));\r\n };\r\n /**\r\n * Returns the value of the node with the given key, or null.\r\n *\r\n * @param key - The key to look up.\r\n * @returns The value of the node with the given key, or null if the\r\n * key doesn't exist.\r\n */\r\n SortedMap.prototype.get = function (key) {\r\n var cmp;\r\n var node = this.root_;\r\n while (!node.isEmpty()) {\r\n cmp = this.comparator_(key, node.key);\r\n if (cmp === 0) {\r\n return node.value;\r\n }\r\n else if (cmp < 0) {\r\n node = node.left;\r\n }\r\n else if (cmp > 0) {\r\n node = node.right;\r\n }\r\n }\r\n return null;\r\n };\r\n /**\r\n * Returns the key of the item *before* the specified key, or null if key is the first item.\r\n * @param key - The key to find the predecessor of\r\n * @returns The predecessor key.\r\n */\r\n SortedMap.prototype.getPredecessorKey = function (key) {\r\n var cmp, node = this.root_, rightParent = null;\r\n while (!node.isEmpty()) {\r\n cmp = this.comparator_(key, node.key);\r\n if (cmp === 0) {\r\n if (!node.left.isEmpty()) {\r\n node = node.left;\r\n while (!node.right.isEmpty()) {\r\n node = node.right;\r\n }\r\n return node.key;\r\n }\r\n else if (rightParent) {\r\n return rightParent.key;\r\n }\r\n else {\r\n return null; // first item.\r\n }\r\n }\r\n else if (cmp < 0) {\r\n node = node.left;\r\n }\r\n else if (cmp > 0) {\r\n rightParent = node;\r\n node = node.right;\r\n }\r\n }\r\n throw new Error('Attempted to find predecessor key for a nonexistent key. What gives?');\r\n };\r\n /**\r\n * @returns True if the map is empty.\r\n */\r\n SortedMap.prototype.isEmpty = function () {\r\n return this.root_.isEmpty();\r\n };\r\n /**\r\n * @returns The total number of nodes in the map.\r\n */\r\n SortedMap.prototype.count = function () {\r\n return this.root_.count();\r\n };\r\n /**\r\n * @returns The minimum key in the map.\r\n */\r\n SortedMap.prototype.minKey = function () {\r\n return this.root_.minKey();\r\n };\r\n /**\r\n * @returns The maximum key in the map.\r\n */\r\n SortedMap.prototype.maxKey = function () {\r\n return this.root_.maxKey();\r\n };\r\n /**\r\n * Traverses the map in key order and calls the specified action function\r\n * for each key/value pair.\r\n *\r\n * @param action - Callback function to be called\r\n * for each key/value pair. If action returns true, traversal is aborted.\r\n * @returns The first truthy value returned by action, or the last falsey\r\n * value returned by action\r\n */\r\n SortedMap.prototype.inorderTraversal = function (action) {\r\n return this.root_.inorderTraversal(action);\r\n };\r\n /**\r\n * Traverses the map in reverse key order and calls the specified action function\r\n * for each key/value pair.\r\n *\r\n * @param action - Callback function to be called\r\n * for each key/value pair. If action returns true, traversal is aborted.\r\n * @returns True if the traversal was aborted.\r\n */\r\n SortedMap.prototype.reverseTraversal = function (action) {\r\n return this.root_.reverseTraversal(action);\r\n };\r\n /**\r\n * Returns an iterator over the SortedMap.\r\n * @returns The iterator.\r\n */\r\n SortedMap.prototype.getIterator = function (resultGenerator) {\r\n return new SortedMapIterator(this.root_, null, this.comparator_, false, resultGenerator);\r\n };\r\n SortedMap.prototype.getIteratorFrom = function (key, resultGenerator) {\r\n return new SortedMapIterator(this.root_, key, this.comparator_, false, resultGenerator);\r\n };\r\n SortedMap.prototype.getReverseIteratorFrom = function (key, resultGenerator) {\r\n return new SortedMapIterator(this.root_, key, this.comparator_, true, resultGenerator);\r\n };\r\n SortedMap.prototype.getReverseIterator = function (resultGenerator) {\r\n return new SortedMapIterator(this.root_, null, this.comparator_, true, resultGenerator);\r\n };\r\n /**\r\n * Always use the same empty node, to reduce memory.\r\n */\r\n SortedMap.EMPTY_NODE = new LLRBEmptyNode();\r\n return SortedMap;\r\n}());\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nfunction NAME_ONLY_COMPARATOR(left, right) {\r\n return nameCompare(left.name, right.name);\r\n}\r\nfunction NAME_COMPARATOR(left, right) {\r\n return nameCompare(left, right);\r\n}\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nvar MAX_NODE$2;\r\nfunction setMaxNode$1(val) {\r\n MAX_NODE$2 = val;\r\n}\r\nvar priorityHashText = function (priority) {\r\n if (typeof priority === 'number') {\r\n return 'number:' + doubleToIEEE754String(priority);\r\n }\r\n else {\r\n return 'string:' + priority;\r\n }\r\n};\r\n/**\r\n * Validates that a priority snapshot Node is valid.\r\n */\r\nvar validatePriorityNode = function (priorityNode) {\r\n if (priorityNode.isLeafNode()) {\r\n var val = priorityNode.val();\r\n assert(typeof val === 'string' ||\r\n typeof val === 'number' ||\r\n (typeof val === 'object' && contains(val, '.sv')), 'Priority must be a string or number.');\r\n }\r\n else {\r\n assert(priorityNode === MAX_NODE$2 || priorityNode.isEmpty(), 'priority of unexpected type.');\r\n }\r\n // Don't call getPriority() on MAX_NODE to avoid hitting assertion.\r\n assert(priorityNode === MAX_NODE$2 || priorityNode.getPriority().isEmpty(), \"Priority nodes can't have a priority of their own.\");\r\n};\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nvar __childrenNodeConstructor;\r\n/**\r\n * LeafNode is a class for storing leaf nodes in a DataSnapshot. It\r\n * implements Node and stores the value of the node (a string,\r\n * number, or boolean) accessible via getValue().\r\n */\r\nvar LeafNode = /** @class */ (function () {\r\n /**\r\n * @param value_ - The value to store in this leaf node. The object type is\r\n * possible in the event of a deferred value\r\n * @param priorityNode_ - The priority of this node.\r\n */\r\n function LeafNode(value_, priorityNode_) {\r\n if (priorityNode_ === void 0) { priorityNode_ = LeafNode.__childrenNodeConstructor.EMPTY_NODE; }\r\n this.value_ = value_;\r\n this.priorityNode_ = priorityNode_;\r\n this.lazyHash_ = null;\r\n assert(this.value_ !== undefined && this.value_ !== null, \"LeafNode shouldn't be created with null/undefined value.\");\r\n validatePriorityNode(this.priorityNode_);\r\n }\r\n Object.defineProperty(LeafNode, \"__childrenNodeConstructor\", {\r\n get: function () {\r\n return __childrenNodeConstructor;\r\n },\r\n set: function (val) {\r\n __childrenNodeConstructor = val;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n /** @inheritDoc */\r\n LeafNode.prototype.isLeafNode = function () {\r\n return true;\r\n };\r\n /** @inheritDoc */\r\n LeafNode.prototype.getPriority = function () {\r\n return this.priorityNode_;\r\n };\r\n /** @inheritDoc */\r\n LeafNode.prototype.updatePriority = function (newPriorityNode) {\r\n return new LeafNode(this.value_, newPriorityNode);\r\n };\r\n /** @inheritDoc */\r\n LeafNode.prototype.getImmediateChild = function (childName) {\r\n // Hack to treat priority as a regular child\r\n if (childName === '.priority') {\r\n return this.priorityNode_;\r\n }\r\n else {\r\n return LeafNode.__childrenNodeConstructor.EMPTY_NODE;\r\n }\r\n };\r\n /** @inheritDoc */\r\n LeafNode.prototype.getChild = function (path) {\r\n if (pathIsEmpty(path)) {\r\n return this;\r\n }\r\n else if (pathGetFront(path) === '.priority') {\r\n return this.priorityNode_;\r\n }\r\n else {\r\n return LeafNode.__childrenNodeConstructor.EMPTY_NODE;\r\n }\r\n };\r\n LeafNode.prototype.hasChild = function () {\r\n return false;\r\n };\r\n /** @inheritDoc */\r\n LeafNode.prototype.getPredecessorChildName = function (childName, childNode) {\r\n return null;\r\n };\r\n /** @inheritDoc */\r\n LeafNode.prototype.updateImmediateChild = function (childName, newChildNode) {\r\n if (childName === '.priority') {\r\n return this.updatePriority(newChildNode);\r\n }\r\n else if (newChildNode.isEmpty() && childName !== '.priority') {\r\n return this;\r\n }\r\n else {\r\n return LeafNode.__childrenNodeConstructor.EMPTY_NODE.updateImmediateChild(childName, newChildNode).updatePriority(this.priorityNode_);\r\n }\r\n };\r\n /** @inheritDoc */\r\n LeafNode.prototype.updateChild = function (path, newChildNode) {\r\n var front = pathGetFront(path);\r\n if (front === null) {\r\n return newChildNode;\r\n }\r\n else if (newChildNode.isEmpty() && front !== '.priority') {\r\n return this;\r\n }\r\n else {\r\n assert(front !== '.priority' || pathGetLength(path) === 1, '.priority must be the last token in a path');\r\n return this.updateImmediateChild(front, LeafNode.__childrenNodeConstructor.EMPTY_NODE.updateChild(pathPopFront(path), newChildNode));\r\n }\r\n };\r\n /** @inheritDoc */\r\n LeafNode.prototype.isEmpty = function () {\r\n return false;\r\n };\r\n /** @inheritDoc */\r\n LeafNode.prototype.numChildren = function () {\r\n return 0;\r\n };\r\n /** @inheritDoc */\r\n LeafNode.prototype.forEachChild = function (index, action) {\r\n return false;\r\n };\r\n LeafNode.prototype.val = function (exportFormat) {\r\n if (exportFormat && !this.getPriority().isEmpty()) {\r\n return {\r\n '.value': this.getValue(),\r\n '.priority': this.getPriority().val()\r\n };\r\n }\r\n else {\r\n return this.getValue();\r\n }\r\n };\r\n /** @inheritDoc */\r\n LeafNode.prototype.hash = function () {\r\n if (this.lazyHash_ === null) {\r\n var toHash = '';\r\n if (!this.priorityNode_.isEmpty()) {\r\n toHash +=\r\n 'priority:' +\r\n priorityHashText(this.priorityNode_.val()) +\r\n ':';\r\n }\r\n var type = typeof this.value_;\r\n toHash += type + ':';\r\n if (type === 'number') {\r\n toHash += doubleToIEEE754String(this.value_);\r\n }\r\n else {\r\n toHash += this.value_;\r\n }\r\n this.lazyHash_ = sha1(toHash);\r\n }\r\n return this.lazyHash_;\r\n };\r\n /**\r\n * Returns the value of the leaf node.\r\n * @returns The value of the node.\r\n */\r\n LeafNode.prototype.getValue = function () {\r\n return this.value_;\r\n };\r\n LeafNode.prototype.compareTo = function (other) {\r\n if (other === LeafNode.__childrenNodeConstructor.EMPTY_NODE) {\r\n return 1;\r\n }\r\n else if (other instanceof LeafNode.__childrenNodeConstructor) {\r\n return -1;\r\n }\r\n else {\r\n assert(other.isLeafNode(), 'Unknown node type');\r\n return this.compareToLeafNode_(other);\r\n }\r\n };\r\n /**\r\n * Comparison specifically for two leaf nodes\r\n */\r\n LeafNode.prototype.compareToLeafNode_ = function (otherLeaf) {\r\n var otherLeafType = typeof otherLeaf.value_;\r\n var thisLeafType = typeof this.value_;\r\n var otherIndex = LeafNode.VALUE_TYPE_ORDER.indexOf(otherLeafType);\r\n var thisIndex = LeafNode.VALUE_TYPE_ORDER.indexOf(thisLeafType);\r\n assert(otherIndex >= 0, 'Unknown leaf type: ' + otherLeafType);\r\n assert(thisIndex >= 0, 'Unknown leaf type: ' + thisLeafType);\r\n if (otherIndex === thisIndex) {\r\n // Same type, compare values\r\n if (thisLeafType === 'object') {\r\n // Deferred value nodes are all equal, but we should also never get to this point...\r\n return 0;\r\n }\r\n else {\r\n // Note that this works because true > false, all others are number or string comparisons\r\n if (this.value_ < otherLeaf.value_) {\r\n return -1;\r\n }\r\n else if (this.value_ === otherLeaf.value_) {\r\n return 0;\r\n }\r\n else {\r\n return 1;\r\n }\r\n }\r\n }\r\n else {\r\n return thisIndex - otherIndex;\r\n }\r\n };\r\n LeafNode.prototype.withIndex = function () {\r\n return this;\r\n };\r\n LeafNode.prototype.isIndexed = function () {\r\n return true;\r\n };\r\n LeafNode.prototype.equals = function (other) {\r\n if (other === this) {\r\n return true;\r\n }\r\n else if (other.isLeafNode()) {\r\n var otherLeaf = other;\r\n return (this.value_ === otherLeaf.value_ &&\r\n this.priorityNode_.equals(otherLeaf.priorityNode_));\r\n }\r\n else {\r\n return false;\r\n }\r\n };\r\n /**\r\n * The sort order for comparing leaf nodes of different types. If two leaf nodes have\r\n * the same type, the comparison falls back to their value\r\n */\r\n LeafNode.VALUE_TYPE_ORDER = ['object', 'boolean', 'number', 'string'];\r\n return LeafNode;\r\n}());\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nvar nodeFromJSON$1;\r\nvar MAX_NODE$1;\r\nfunction setNodeFromJSON(val) {\r\n nodeFromJSON$1 = val;\r\n}\r\nfunction setMaxNode(val) {\r\n MAX_NODE$1 = val;\r\n}\r\nvar PriorityIndex = /** @class */ (function (_super) {\r\n __extends(PriorityIndex, _super);\r\n function PriorityIndex() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n PriorityIndex.prototype.compare = function (a, b) {\r\n var aPriority = a.node.getPriority();\r\n var bPriority = b.node.getPriority();\r\n var indexCmp = aPriority.compareTo(bPriority);\r\n if (indexCmp === 0) {\r\n return nameCompare(a.name, b.name);\r\n }\r\n else {\r\n return indexCmp;\r\n }\r\n };\r\n PriorityIndex.prototype.isDefinedOn = function (node) {\r\n return !node.getPriority().isEmpty();\r\n };\r\n PriorityIndex.prototype.indexedValueChanged = function (oldNode, newNode) {\r\n return !oldNode.getPriority().equals(newNode.getPriority());\r\n };\r\n PriorityIndex.prototype.minPost = function () {\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n return NamedNode.MIN;\r\n };\r\n PriorityIndex.prototype.maxPost = function () {\r\n return new NamedNode(MAX_NAME, new LeafNode('[PRIORITY-POST]', MAX_NODE$1));\r\n };\r\n PriorityIndex.prototype.makePost = function (indexValue, name) {\r\n var priorityNode = nodeFromJSON$1(indexValue);\r\n return new NamedNode(name, new LeafNode('[PRIORITY-POST]', priorityNode));\r\n };\r\n /**\r\n * @returns String representation for inclusion in a query spec\r\n */\r\n PriorityIndex.prototype.toString = function () {\r\n return '.priority';\r\n };\r\n return PriorityIndex;\r\n}(Index));\r\nvar PRIORITY_INDEX = new PriorityIndex();\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nvar LOG_2 = Math.log(2);\r\nvar Base12Num = /** @class */ (function () {\r\n function Base12Num(length) {\r\n var logBase2 = function (num) {\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n return parseInt((Math.log(num) / LOG_2), 10);\r\n };\r\n var bitMask = function (bits) { return parseInt(Array(bits + 1).join('1'), 2); };\r\n this.count = logBase2(length + 1);\r\n this.current_ = this.count - 1;\r\n var mask = bitMask(this.count);\r\n this.bits_ = (length + 1) & mask;\r\n }\r\n Base12Num.prototype.nextBitIsOne = function () {\r\n //noinspection JSBitwiseOperatorUsage\r\n var result = !(this.bits_ & (0x1 << this.current_));\r\n this.current_--;\r\n return result;\r\n };\r\n return Base12Num;\r\n}());\r\n/**\r\n * Takes a list of child nodes and constructs a SortedSet using the given comparison\r\n * function\r\n *\r\n * Uses the algorithm described in the paper linked here:\r\n * http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.46.1458\r\n *\r\n * @param childList - Unsorted list of children\r\n * @param cmp - The comparison method to be used\r\n * @param keyFn - An optional function to extract K from a node wrapper, if K's\r\n * type is not NamedNode\r\n * @param mapSortFn - An optional override for comparator used by the generated sorted map\r\n */\r\nvar buildChildSet = function (childList, cmp, keyFn, mapSortFn) {\r\n childList.sort(cmp);\r\n var buildBalancedTree = function (low, high) {\r\n var length = high - low;\r\n var namedNode;\r\n var key;\r\n if (length === 0) {\r\n return null;\r\n }\r\n else if (length === 1) {\r\n namedNode = childList[low];\r\n key = keyFn ? keyFn(namedNode) : namedNode;\r\n return new LLRBNode(key, namedNode.node, LLRBNode.BLACK, null, null);\r\n }\r\n else {\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n var middle = parseInt((length / 2), 10) + low;\r\n var left = buildBalancedTree(low, middle);\r\n var right = buildBalancedTree(middle + 1, high);\r\n namedNode = childList[middle];\r\n key = keyFn ? keyFn(namedNode) : namedNode;\r\n return new LLRBNode(key, namedNode.node, LLRBNode.BLACK, left, right);\r\n }\r\n };\r\n var buildFrom12Array = function (base12) {\r\n var node = null;\r\n var root = null;\r\n var index = childList.length;\r\n var buildPennant = function (chunkSize, color) {\r\n var low = index - chunkSize;\r\n var high = index;\r\n index -= chunkSize;\r\n var childTree = buildBalancedTree(low + 1, high);\r\n var namedNode = childList[low];\r\n var key = keyFn ? keyFn(namedNode) : namedNode;\r\n attachPennant(new LLRBNode(key, namedNode.node, color, null, childTree));\r\n };\r\n var attachPennant = function (pennant) {\r\n if (node) {\r\n node.left = pennant;\r\n node = pennant;\r\n }\r\n else {\r\n root = pennant;\r\n node = pennant;\r\n }\r\n };\r\n for (var i = 0; i < base12.count; ++i) {\r\n var isOne = base12.nextBitIsOne();\r\n // The number of nodes taken in each slice is 2^(arr.length - (i + 1))\r\n var chunkSize = Math.pow(2, base12.count - (i + 1));\r\n if (isOne) {\r\n buildPennant(chunkSize, LLRBNode.BLACK);\r\n }\r\n else {\r\n // current == 2\r\n buildPennant(chunkSize, LLRBNode.BLACK);\r\n buildPennant(chunkSize, LLRBNode.RED);\r\n }\r\n }\r\n return root;\r\n };\r\n var base12 = new Base12Num(childList.length);\r\n var root = buildFrom12Array(base12);\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n return new SortedMap(mapSortFn || cmp, root);\r\n};\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nvar _defaultIndexMap;\r\nvar fallbackObject = {};\r\nvar IndexMap = /** @class */ (function () {\r\n function IndexMap(indexes_, indexSet_) {\r\n this.indexes_ = indexes_;\r\n this.indexSet_ = indexSet_;\r\n }\r\n Object.defineProperty(IndexMap, \"Default\", {\r\n /**\r\n * The default IndexMap for nodes without a priority\r\n */\r\n get: function () {\r\n assert(fallbackObject && PRIORITY_INDEX, 'ChildrenNode.ts has not been loaded');\r\n _defaultIndexMap =\r\n _defaultIndexMap ||\r\n new IndexMap({ '.priority': fallbackObject }, { '.priority': PRIORITY_INDEX });\r\n return _defaultIndexMap;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n IndexMap.prototype.get = function (indexKey) {\r\n var sortedMap = safeGet(this.indexes_, indexKey);\r\n if (!sortedMap) {\r\n throw new Error('No index defined for ' + indexKey);\r\n }\r\n if (sortedMap instanceof SortedMap) {\r\n return sortedMap;\r\n }\r\n else {\r\n // The index exists, but it falls back to just name comparison. Return null so that the calling code uses the\r\n // regular child map\r\n return null;\r\n }\r\n };\r\n IndexMap.prototype.hasIndex = function (indexDefinition) {\r\n return contains(this.indexSet_, indexDefinition.toString());\r\n };\r\n IndexMap.prototype.addIndex = function (indexDefinition, existingChildren) {\r\n assert(indexDefinition !== KEY_INDEX, \"KeyIndex always exists and isn't meant to be added to the IndexMap.\");\r\n var childList = [];\r\n var sawIndexedValue = false;\r\n var iter = existingChildren.getIterator(NamedNode.Wrap);\r\n var next = iter.getNext();\r\n while (next) {\r\n sawIndexedValue =\r\n sawIndexedValue || indexDefinition.isDefinedOn(next.node);\r\n childList.push(next);\r\n next = iter.getNext();\r\n }\r\n var newIndex;\r\n if (sawIndexedValue) {\r\n newIndex = buildChildSet(childList, indexDefinition.getCompare());\r\n }\r\n else {\r\n newIndex = fallbackObject;\r\n }\r\n var indexName = indexDefinition.toString();\r\n var newIndexSet = __assign({}, this.indexSet_);\r\n newIndexSet[indexName] = indexDefinition;\r\n var newIndexes = __assign({}, this.indexes_);\r\n newIndexes[indexName] = newIndex;\r\n return new IndexMap(newIndexes, newIndexSet);\r\n };\r\n /**\r\n * Ensure that this node is properly tracked in any indexes that we're maintaining\r\n */\r\n IndexMap.prototype.addToIndexes = function (namedNode, existingChildren) {\r\n var _this = this;\r\n var newIndexes = map(this.indexes_, function (indexedChildren, indexName) {\r\n var index = safeGet(_this.indexSet_, indexName);\r\n assert(index, 'Missing index implementation for ' + indexName);\r\n if (indexedChildren === fallbackObject) {\r\n // Check to see if we need to index everything\r\n if (index.isDefinedOn(namedNode.node)) {\r\n // We need to build this index\r\n var childList = [];\r\n var iter = existingChildren.getIterator(NamedNode.Wrap);\r\n var next = iter.getNext();\r\n while (next) {\r\n if (next.name !== namedNode.name) {\r\n childList.push(next);\r\n }\r\n next = iter.getNext();\r\n }\r\n childList.push(namedNode);\r\n return buildChildSet(childList, index.getCompare());\r\n }\r\n else {\r\n // No change, this remains a fallback\r\n return fallbackObject;\r\n }\r\n }\r\n else {\r\n var existingSnap = existingChildren.get(namedNode.name);\r\n var newChildren = indexedChildren;\r\n if (existingSnap) {\r\n newChildren = newChildren.remove(new NamedNode(namedNode.name, existingSnap));\r\n }\r\n return newChildren.insert(namedNode, namedNode.node);\r\n }\r\n });\r\n return new IndexMap(newIndexes, this.indexSet_);\r\n };\r\n /**\r\n * Create a new IndexMap instance with the given value removed\r\n */\r\n IndexMap.prototype.removeFromIndexes = function (namedNode, existingChildren) {\r\n var newIndexes = map(this.indexes_, function (indexedChildren) {\r\n if (indexedChildren === fallbackObject) {\r\n // This is the fallback. Just return it, nothing to do in this case\r\n return indexedChildren;\r\n }\r\n else {\r\n var existingSnap = existingChildren.get(namedNode.name);\r\n if (existingSnap) {\r\n return indexedChildren.remove(new NamedNode(namedNode.name, existingSnap));\r\n }\r\n else {\r\n // No record of this child\r\n return indexedChildren;\r\n }\r\n }\r\n });\r\n return new IndexMap(newIndexes, this.indexSet_);\r\n };\r\n return IndexMap;\r\n}());\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n// TODO: For memory savings, don't store priorityNode_ if it's empty.\r\nvar EMPTY_NODE;\r\n/**\r\n * ChildrenNode is a class for storing internal nodes in a DataSnapshot\r\n * (i.e. nodes with children). It implements Node and stores the\r\n * list of children in the children property, sorted by child name.\r\n */\r\nvar ChildrenNode = /** @class */ (function () {\r\n /**\r\n * @param children_ - List of children of this node..\r\n * @param priorityNode_ - The priority of this node (as a snapshot node).\r\n */\r\n function ChildrenNode(children_, priorityNode_, indexMap_) {\r\n this.children_ = children_;\r\n this.priorityNode_ = priorityNode_;\r\n this.indexMap_ = indexMap_;\r\n this.lazyHash_ = null;\r\n /**\r\n * Note: The only reason we allow null priority is for EMPTY_NODE, since we can't use\r\n * EMPTY_NODE as the priority of EMPTY_NODE. We might want to consider making EMPTY_NODE its own\r\n * class instead of an empty ChildrenNode.\r\n */\r\n if (this.priorityNode_) {\r\n validatePriorityNode(this.priorityNode_);\r\n }\r\n if (this.children_.isEmpty()) {\r\n assert(!this.priorityNode_ || this.priorityNode_.isEmpty(), 'An empty node cannot have a priority');\r\n }\r\n }\r\n Object.defineProperty(ChildrenNode, \"EMPTY_NODE\", {\r\n get: function () {\r\n return (EMPTY_NODE ||\r\n (EMPTY_NODE = new ChildrenNode(new SortedMap(NAME_COMPARATOR), null, IndexMap.Default)));\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n /** @inheritDoc */\r\n ChildrenNode.prototype.isLeafNode = function () {\r\n return false;\r\n };\r\n /** @inheritDoc */\r\n ChildrenNode.prototype.getPriority = function () {\r\n return this.priorityNode_ || EMPTY_NODE;\r\n };\r\n /** @inheritDoc */\r\n ChildrenNode.prototype.updatePriority = function (newPriorityNode) {\r\n if (this.children_.isEmpty()) {\r\n // Don't allow priorities on empty nodes\r\n return this;\r\n }\r\n else {\r\n return new ChildrenNode(this.children_, newPriorityNode, this.indexMap_);\r\n }\r\n };\r\n /** @inheritDoc */\r\n ChildrenNode.prototype.getImmediateChild = function (childName) {\r\n // Hack to treat priority as a regular child\r\n if (childName === '.priority') {\r\n return this.getPriority();\r\n }\r\n else {\r\n var child = this.children_.get(childName);\r\n return child === null ? EMPTY_NODE : child;\r\n }\r\n };\r\n /** @inheritDoc */\r\n ChildrenNode.prototype.getChild = function (path) {\r\n var front = pathGetFront(path);\r\n if (front === null) {\r\n return this;\r\n }\r\n return this.getImmediateChild(front).getChild(pathPopFront(path));\r\n };\r\n /** @inheritDoc */\r\n ChildrenNode.prototype.hasChild = function (childName) {\r\n return this.children_.get(childName) !== null;\r\n };\r\n /** @inheritDoc */\r\n ChildrenNode.prototype.updateImmediateChild = function (childName, newChildNode) {\r\n assert(newChildNode, 'We should always be passing snapshot nodes');\r\n if (childName === '.priority') {\r\n return this.updatePriority(newChildNode);\r\n }\r\n else {\r\n var namedNode = new NamedNode(childName, newChildNode);\r\n var newChildren = void 0, newIndexMap = void 0;\r\n if (newChildNode.isEmpty()) {\r\n newChildren = this.children_.remove(childName);\r\n newIndexMap = this.indexMap_.removeFromIndexes(namedNode, this.children_);\r\n }\r\n else {\r\n newChildren = this.children_.insert(childName, newChildNode);\r\n newIndexMap = this.indexMap_.addToIndexes(namedNode, this.children_);\r\n }\r\n var newPriority = newChildren.isEmpty()\r\n ? EMPTY_NODE\r\n : this.priorityNode_;\r\n return new ChildrenNode(newChildren, newPriority, newIndexMap);\r\n }\r\n };\r\n /** @inheritDoc */\r\n ChildrenNode.prototype.updateChild = function (path, newChildNode) {\r\n var front = pathGetFront(path);\r\n if (front === null) {\r\n return newChildNode;\r\n }\r\n else {\r\n assert(pathGetFront(path) !== '.priority' || pathGetLength(path) === 1, '.priority must be the last token in a path');\r\n var newImmediateChild = this.getImmediateChild(front).updateChild(pathPopFront(path), newChildNode);\r\n return this.updateImmediateChild(front, newImmediateChild);\r\n }\r\n };\r\n /** @inheritDoc */\r\n ChildrenNode.prototype.isEmpty = function () {\r\n return this.children_.isEmpty();\r\n };\r\n /** @inheritDoc */\r\n ChildrenNode.prototype.numChildren = function () {\r\n return this.children_.count();\r\n };\r\n /** @inheritDoc */\r\n ChildrenNode.prototype.val = function (exportFormat) {\r\n if (this.isEmpty()) {\r\n return null;\r\n }\r\n var obj = {};\r\n var numKeys = 0, maxKey = 0, allIntegerKeys = true;\r\n this.forEachChild(PRIORITY_INDEX, function (key, childNode) {\r\n obj[key] = childNode.val(exportFormat);\r\n numKeys++;\r\n if (allIntegerKeys && ChildrenNode.INTEGER_REGEXP_.test(key)) {\r\n maxKey = Math.max(maxKey, Number(key));\r\n }\r\n else {\r\n allIntegerKeys = false;\r\n }\r\n });\r\n if (!exportFormat && allIntegerKeys && maxKey < 2 * numKeys) {\r\n // convert to array.\r\n var array = [];\r\n // eslint-disable-next-line guard-for-in\r\n for (var key in obj) {\r\n array[key] = obj[key];\r\n }\r\n return array;\r\n }\r\n else {\r\n if (exportFormat && !this.getPriority().isEmpty()) {\r\n obj['.priority'] = this.getPriority().val();\r\n }\r\n return obj;\r\n }\r\n };\r\n /** @inheritDoc */\r\n ChildrenNode.prototype.hash = function () {\r\n if (this.lazyHash_ === null) {\r\n var toHash_1 = '';\r\n if (!this.getPriority().isEmpty()) {\r\n toHash_1 +=\r\n 'priority:' +\r\n priorityHashText(this.getPriority().val()) +\r\n ':';\r\n }\r\n this.forEachChild(PRIORITY_INDEX, function (key, childNode) {\r\n var childHash = childNode.hash();\r\n if (childHash !== '') {\r\n toHash_1 += ':' + key + ':' + childHash;\r\n }\r\n });\r\n this.lazyHash_ = toHash_1 === '' ? '' : sha1(toHash_1);\r\n }\r\n return this.lazyHash_;\r\n };\r\n /** @inheritDoc */\r\n ChildrenNode.prototype.getPredecessorChildName = function (childName, childNode, index) {\r\n var idx = this.resolveIndex_(index);\r\n if (idx) {\r\n var predecessor = idx.getPredecessorKey(new NamedNode(childName, childNode));\r\n return predecessor ? predecessor.name : null;\r\n }\r\n else {\r\n return this.children_.getPredecessorKey(childName);\r\n }\r\n };\r\n ChildrenNode.prototype.getFirstChildName = function (indexDefinition) {\r\n var idx = this.resolveIndex_(indexDefinition);\r\n if (idx) {\r\n var minKey = idx.minKey();\r\n return minKey && minKey.name;\r\n }\r\n else {\r\n return this.children_.minKey();\r\n }\r\n };\r\n ChildrenNode.prototype.getFirstChild = function (indexDefinition) {\r\n var minKey = this.getFirstChildName(indexDefinition);\r\n if (minKey) {\r\n return new NamedNode(minKey, this.children_.get(minKey));\r\n }\r\n else {\r\n return null;\r\n }\r\n };\r\n /**\r\n * Given an index, return the key name of the largest value we have, according to that index\r\n */\r\n ChildrenNode.prototype.getLastChildName = function (indexDefinition) {\r\n var idx = this.resolveIndex_(indexDefinition);\r\n if (idx) {\r\n var maxKey = idx.maxKey();\r\n return maxKey && maxKey.name;\r\n }\r\n else {\r\n return this.children_.maxKey();\r\n }\r\n };\r\n ChildrenNode.prototype.getLastChild = function (indexDefinition) {\r\n var maxKey = this.getLastChildName(indexDefinition);\r\n if (maxKey) {\r\n return new NamedNode(maxKey, this.children_.get(maxKey));\r\n }\r\n else {\r\n return null;\r\n }\r\n };\r\n ChildrenNode.prototype.forEachChild = function (index, action) {\r\n var idx = this.resolveIndex_(index);\r\n if (idx) {\r\n return idx.inorderTraversal(function (wrappedNode) {\r\n return action(wrappedNode.name, wrappedNode.node);\r\n });\r\n }\r\n else {\r\n return this.children_.inorderTraversal(action);\r\n }\r\n };\r\n ChildrenNode.prototype.getIterator = function (indexDefinition) {\r\n return this.getIteratorFrom(indexDefinition.minPost(), indexDefinition);\r\n };\r\n ChildrenNode.prototype.getIteratorFrom = function (startPost, indexDefinition) {\r\n var idx = this.resolveIndex_(indexDefinition);\r\n if (idx) {\r\n return idx.getIteratorFrom(startPost, function (key) { return key; });\r\n }\r\n else {\r\n var iterator = this.children_.getIteratorFrom(startPost.name, NamedNode.Wrap);\r\n var next = iterator.peek();\r\n while (next != null && indexDefinition.compare(next, startPost) < 0) {\r\n iterator.getNext();\r\n next = iterator.peek();\r\n }\r\n return iterator;\r\n }\r\n };\r\n ChildrenNode.prototype.getReverseIterator = function (indexDefinition) {\r\n return this.getReverseIteratorFrom(indexDefinition.maxPost(), indexDefinition);\r\n };\r\n ChildrenNode.prototype.getReverseIteratorFrom = function (endPost, indexDefinition) {\r\n var idx = this.resolveIndex_(indexDefinition);\r\n if (idx) {\r\n return idx.getReverseIteratorFrom(endPost, function (key) {\r\n return key;\r\n });\r\n }\r\n else {\r\n var iterator = this.children_.getReverseIteratorFrom(endPost.name, NamedNode.Wrap);\r\n var next = iterator.peek();\r\n while (next != null && indexDefinition.compare(next, endPost) > 0) {\r\n iterator.getNext();\r\n next = iterator.peek();\r\n }\r\n return iterator;\r\n }\r\n };\r\n ChildrenNode.prototype.compareTo = function (other) {\r\n if (this.isEmpty()) {\r\n if (other.isEmpty()) {\r\n return 0;\r\n }\r\n else {\r\n return -1;\r\n }\r\n }\r\n else if (other.isLeafNode() || other.isEmpty()) {\r\n return 1;\r\n }\r\n else if (other === MAX_NODE) {\r\n return -1;\r\n }\r\n else {\r\n // Must be another node with children.\r\n return 0;\r\n }\r\n };\r\n ChildrenNode.prototype.withIndex = function (indexDefinition) {\r\n if (indexDefinition === KEY_INDEX ||\r\n this.indexMap_.hasIndex(indexDefinition)) {\r\n return this;\r\n }\r\n else {\r\n var newIndexMap = this.indexMap_.addIndex(indexDefinition, this.children_);\r\n return new ChildrenNode(this.children_, this.priorityNode_, newIndexMap);\r\n }\r\n };\r\n ChildrenNode.prototype.isIndexed = function (index) {\r\n return index === KEY_INDEX || this.indexMap_.hasIndex(index);\r\n };\r\n ChildrenNode.prototype.equals = function (other) {\r\n if (other === this) {\r\n return true;\r\n }\r\n else if (other.isLeafNode()) {\r\n return false;\r\n }\r\n else {\r\n var otherChildrenNode = other;\r\n if (!this.getPriority().equals(otherChildrenNode.getPriority())) {\r\n return false;\r\n }\r\n else if (this.children_.count() === otherChildrenNode.children_.count()) {\r\n var thisIter = this.getIterator(PRIORITY_INDEX);\r\n var otherIter = otherChildrenNode.getIterator(PRIORITY_INDEX);\r\n var thisCurrent = thisIter.getNext();\r\n var otherCurrent = otherIter.getNext();\r\n while (thisCurrent && otherCurrent) {\r\n if (thisCurrent.name !== otherCurrent.name ||\r\n !thisCurrent.node.equals(otherCurrent.node)) {\r\n return false;\r\n }\r\n thisCurrent = thisIter.getNext();\r\n otherCurrent = otherIter.getNext();\r\n }\r\n return thisCurrent === null && otherCurrent === null;\r\n }\r\n else {\r\n return false;\r\n }\r\n }\r\n };\r\n /**\r\n * Returns a SortedMap ordered by index, or null if the default (by-key) ordering can be used\r\n * instead.\r\n *\r\n */\r\n ChildrenNode.prototype.resolveIndex_ = function (indexDefinition) {\r\n if (indexDefinition === KEY_INDEX) {\r\n return null;\r\n }\r\n else {\r\n return this.indexMap_.get(indexDefinition.toString());\r\n }\r\n };\r\n ChildrenNode.INTEGER_REGEXP_ = /^(0|[1-9]\\d*)$/;\r\n return ChildrenNode;\r\n}());\r\nvar MaxNode = /** @class */ (function (_super) {\r\n __extends(MaxNode, _super);\r\n function MaxNode() {\r\n return _super.call(this, new SortedMap(NAME_COMPARATOR), ChildrenNode.EMPTY_NODE, IndexMap.Default) || this;\r\n }\r\n MaxNode.prototype.compareTo = function (other) {\r\n if (other === this) {\r\n return 0;\r\n }\r\n else {\r\n return 1;\r\n }\r\n };\r\n MaxNode.prototype.equals = function (other) {\r\n // Not that we every compare it, but MAX_NODE is only ever equal to itself\r\n return other === this;\r\n };\r\n MaxNode.prototype.getPriority = function () {\r\n return this;\r\n };\r\n MaxNode.prototype.getImmediateChild = function (childName) {\r\n return ChildrenNode.EMPTY_NODE;\r\n };\r\n MaxNode.prototype.isEmpty = function () {\r\n return false;\r\n };\r\n return MaxNode;\r\n}(ChildrenNode));\r\n/**\r\n * Marker that will sort higher than any other snapshot.\r\n */\r\nvar MAX_NODE = new MaxNode();\r\nObject.defineProperties(NamedNode, {\r\n MIN: {\r\n value: new NamedNode(MIN_NAME, ChildrenNode.EMPTY_NODE)\r\n },\r\n MAX: {\r\n value: new NamedNode(MAX_NAME, MAX_NODE)\r\n }\r\n});\r\n/**\r\n * Reference Extensions\r\n */\r\nKeyIndex.__EMPTY_NODE = ChildrenNode.EMPTY_NODE;\r\nLeafNode.__childrenNodeConstructor = ChildrenNode;\r\nsetMaxNode$1(MAX_NODE);\r\nsetMaxNode(MAX_NODE);\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nvar USE_HINZE = true;\r\n/**\r\n * Constructs a snapshot node representing the passed JSON and returns it.\r\n * @param json - JSON to create a node for.\r\n * @param priority - Optional priority to use. This will be ignored if the\r\n * passed JSON contains a .priority property.\r\n */\r\nfunction nodeFromJSON(json, priority) {\r\n if (priority === void 0) { priority = null; }\r\n if (json === null) {\r\n return ChildrenNode.EMPTY_NODE;\r\n }\r\n if (typeof json === 'object' && '.priority' in json) {\r\n priority = json['.priority'];\r\n }\r\n assert(priority === null ||\r\n typeof priority === 'string' ||\r\n typeof priority === 'number' ||\r\n (typeof priority === 'object' && '.sv' in priority), 'Invalid priority type found: ' + typeof priority);\r\n if (typeof json === 'object' && '.value' in json && json['.value'] !== null) {\r\n json = json['.value'];\r\n }\r\n // Valid leaf nodes include non-objects or server-value wrapper objects\r\n if (typeof json !== 'object' || '.sv' in json) {\r\n var jsonLeaf = json;\r\n return new LeafNode(jsonLeaf, nodeFromJSON(priority));\r\n }\r\n if (!(json instanceof Array) && USE_HINZE) {\r\n var children_1 = [];\r\n var childrenHavePriority_1 = false;\r\n var hinzeJsonObj = json;\r\n each(hinzeJsonObj, function (key, child) {\r\n if (key.substring(0, 1) !== '.') {\r\n // Ignore metadata nodes\r\n var childNode = nodeFromJSON(child);\r\n if (!childNode.isEmpty()) {\r\n childrenHavePriority_1 =\r\n childrenHavePriority_1 || !childNode.getPriority().isEmpty();\r\n children_1.push(new NamedNode(key, childNode));\r\n }\r\n }\r\n });\r\n if (children_1.length === 0) {\r\n return ChildrenNode.EMPTY_NODE;\r\n }\r\n var childSet = buildChildSet(children_1, NAME_ONLY_COMPARATOR, function (namedNode) { return namedNode.name; }, NAME_COMPARATOR);\r\n if (childrenHavePriority_1) {\r\n var sortedChildSet = buildChildSet(children_1, PRIORITY_INDEX.getCompare());\r\n return new ChildrenNode(childSet, nodeFromJSON(priority), new IndexMap({ '.priority': sortedChildSet }, { '.priority': PRIORITY_INDEX }));\r\n }\r\n else {\r\n return new ChildrenNode(childSet, nodeFromJSON(priority), IndexMap.Default);\r\n }\r\n }\r\n else {\r\n var node_1 = ChildrenNode.EMPTY_NODE;\r\n each(json, function (key, childData) {\r\n if (contains(json, key)) {\r\n if (key.substring(0, 1) !== '.') {\r\n // ignore metadata nodes.\r\n var childNode = nodeFromJSON(childData);\r\n if (childNode.isLeafNode() || !childNode.isEmpty()) {\r\n node_1 = node_1.updateImmediateChild(key, childNode);\r\n }\r\n }\r\n }\r\n });\r\n return node_1.updatePriority(nodeFromJSON(priority));\r\n }\r\n}\r\nsetNodeFromJSON(nodeFromJSON);\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nvar PathIndex = /** @class */ (function (_super) {\r\n __extends(PathIndex, _super);\r\n function PathIndex(indexPath_) {\r\n var _this = _super.call(this) || this;\r\n _this.indexPath_ = indexPath_;\r\n assert(!pathIsEmpty(indexPath_) && pathGetFront(indexPath_) !== '.priority', \"Can't create PathIndex with empty path or .priority key\");\r\n return _this;\r\n }\r\n PathIndex.prototype.extractChild = function (snap) {\r\n return snap.getChild(this.indexPath_);\r\n };\r\n PathIndex.prototype.isDefinedOn = function (node) {\r\n return !node.getChild(this.indexPath_).isEmpty();\r\n };\r\n PathIndex.prototype.compare = function (a, b) {\r\n var aChild = this.extractChild(a.node);\r\n var bChild = this.extractChild(b.node);\r\n var indexCmp = aChild.compareTo(bChild);\r\n if (indexCmp === 0) {\r\n return nameCompare(a.name, b.name);\r\n }\r\n else {\r\n return indexCmp;\r\n }\r\n };\r\n PathIndex.prototype.makePost = function (indexValue, name) {\r\n var valueNode = nodeFromJSON(indexValue);\r\n var node = ChildrenNode.EMPTY_NODE.updateChild(this.indexPath_, valueNode);\r\n return new NamedNode(name, node);\r\n };\r\n PathIndex.prototype.maxPost = function () {\r\n var node = ChildrenNode.EMPTY_NODE.updateChild(this.indexPath_, MAX_NODE);\r\n return new NamedNode(MAX_NAME, node);\r\n };\r\n PathIndex.prototype.toString = function () {\r\n return pathSlice(this.indexPath_, 0).join('/');\r\n };\r\n return PathIndex;\r\n}(Index));\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nvar ValueIndex = /** @class */ (function (_super) {\r\n __extends(ValueIndex, _super);\r\n function ValueIndex() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n ValueIndex.prototype.compare = function (a, b) {\r\n var indexCmp = a.node.compareTo(b.node);\r\n if (indexCmp === 0) {\r\n return nameCompare(a.name, b.name);\r\n }\r\n else {\r\n return indexCmp;\r\n }\r\n };\r\n ValueIndex.prototype.isDefinedOn = function (node) {\r\n return true;\r\n };\r\n ValueIndex.prototype.indexedValueChanged = function (oldNode, newNode) {\r\n return !oldNode.equals(newNode);\r\n };\r\n ValueIndex.prototype.minPost = function () {\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n return NamedNode.MIN;\r\n };\r\n ValueIndex.prototype.maxPost = function () {\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n return NamedNode.MAX;\r\n };\r\n ValueIndex.prototype.makePost = function (indexValue, name) {\r\n var valueNode = nodeFromJSON(indexValue);\r\n return new NamedNode(name, valueNode);\r\n };\r\n /**\r\n * @returns String representation for inclusion in a query spec\r\n */\r\n ValueIndex.prototype.toString = function () {\r\n return '.value';\r\n };\r\n return ValueIndex;\r\n}(Index));\r\nvar VALUE_INDEX = new ValueIndex();\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n// Modeled after base64 web-safe chars, but ordered by ASCII.\r\nvar PUSH_CHARS = '-0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz';\r\nvar MIN_PUSH_CHAR = '-';\r\nvar MAX_PUSH_CHAR = 'z';\r\nvar MAX_KEY_LEN = 786;\r\n/**\r\n * Fancy ID generator that creates 20-character string identifiers with the\r\n * following properties:\r\n *\r\n * 1. They're based on timestamp so that they sort *after* any existing ids.\r\n * 2. They contain 72-bits of random data after the timestamp so that IDs won't\r\n * collide with other clients' IDs.\r\n * 3. They sort *lexicographically* (so the timestamp is converted to characters\r\n * that will sort properly).\r\n * 4. They're monotonically increasing. Even if you generate more than one in\r\n * the same timestamp, the latter ones will sort after the former ones. We do\r\n * this by using the previous random bits but \"incrementing\" them by 1 (only\r\n * in the case of a timestamp collision).\r\n */\r\nvar nextPushId = (function () {\r\n // Timestamp of last push, used to prevent local collisions if you push twice\r\n // in one ms.\r\n var lastPushTime = 0;\r\n // We generate 72-bits of randomness which get turned into 12 characters and\r\n // appended to the timestamp to prevent collisions with other clients. We\r\n // store the last characters we generated because in the event of a collision,\r\n // we'll use those same characters except \"incremented\" by one.\r\n var lastRandChars = [];\r\n return function (now) {\r\n var duplicateTime = now === lastPushTime;\r\n lastPushTime = now;\r\n var i;\r\n var timeStampChars = new Array(8);\r\n for (i = 7; i >= 0; i--) {\r\n timeStampChars[i] = PUSH_CHARS.charAt(now % 64);\r\n // NOTE: Can't use << here because javascript will convert to int and lose\r\n // the upper bits.\r\n now = Math.floor(now / 64);\r\n }\r\n assert(now === 0, 'Cannot push at time == 0');\r\n var id = timeStampChars.join('');\r\n if (!duplicateTime) {\r\n for (i = 0; i < 12; i++) {\r\n lastRandChars[i] = Math.floor(Math.random() * 64);\r\n }\r\n }\r\n else {\r\n // If the timestamp hasn't changed since last push, use the same random\r\n // number, except incremented by 1.\r\n for (i = 11; i >= 0 && lastRandChars[i] === 63; i--) {\r\n lastRandChars[i] = 0;\r\n }\r\n lastRandChars[i]++;\r\n }\r\n for (i = 0; i < 12; i++) {\r\n id += PUSH_CHARS.charAt(lastRandChars[i]);\r\n }\r\n assert(id.length === 20, 'nextPushId: Length should be 20.');\r\n return id;\r\n };\r\n})();\r\nvar successor = function (key) {\r\n if (key === '' + INTEGER_32_MAX) {\r\n // See https://firebase.google.com/docs/database/web/lists-of-data#data-order\r\n return MIN_PUSH_CHAR;\r\n }\r\n var keyAsInt = tryParseInt(key);\r\n if (keyAsInt != null) {\r\n return '' + (keyAsInt + 1);\r\n }\r\n var next = new Array(key.length);\r\n for (var i_1 = 0; i_1 < next.length; i_1++) {\r\n next[i_1] = key.charAt(i_1);\r\n }\r\n if (next.length < MAX_KEY_LEN) {\r\n next.push(MIN_PUSH_CHAR);\r\n return next.join('');\r\n }\r\n var i = next.length - 1;\r\n while (i >= 0 && next[i] === MAX_PUSH_CHAR) {\r\n i--;\r\n }\r\n // `successor` was called on the largest possible key, so return the\r\n // MAX_NAME, which sorts larger than all keys.\r\n if (i === -1) {\r\n return MAX_NAME;\r\n }\r\n var source = next[i];\r\n var sourcePlusOne = PUSH_CHARS.charAt(PUSH_CHARS.indexOf(source) + 1);\r\n next[i] = sourcePlusOne;\r\n return next.slice(0, i + 1).join('');\r\n};\r\n// `key` is assumed to be non-empty.\r\nvar predecessor = function (key) {\r\n if (key === '' + INTEGER_32_MIN) {\r\n return MIN_NAME;\r\n }\r\n var keyAsInt = tryParseInt(key);\r\n if (keyAsInt != null) {\r\n return '' + (keyAsInt - 1);\r\n }\r\n var next = new Array(key.length);\r\n for (var i = 0; i < next.length; i++) {\r\n next[i] = key.charAt(i);\r\n }\r\n // If `key` ends in `MIN_PUSH_CHAR`, the largest key lexicographically\r\n // smaller than `key`, is `key[0:key.length - 1]`. The next key smaller\r\n // than that, `predecessor(predecessor(key))`, is\r\n //\r\n // `key[0:key.length - 2] + (key[key.length - 1] - 1) + \\\r\n // { MAX_PUSH_CHAR repeated MAX_KEY_LEN - (key.length - 1) times }\r\n //\r\n // analogous to increment/decrement for base-10 integers.\r\n //\r\n // This works because lexigographic comparison works character-by-character,\r\n // using length as a tie-breaker if one key is a prefix of the other.\r\n if (next[next.length - 1] === MIN_PUSH_CHAR) {\r\n if (next.length === 1) {\r\n // See https://firebase.google.com/docs/database/web/lists-of-data#orderbykey\r\n return '' + INTEGER_32_MAX;\r\n }\r\n delete next[next.length - 1];\r\n return next.join('');\r\n }\r\n // Replace the last character with it's immediate predecessor, and\r\n // fill the suffix of the key with MAX_PUSH_CHAR. This is the\r\n // lexicographically largest possible key smaller than `key`.\r\n next[next.length - 1] = PUSH_CHARS.charAt(PUSH_CHARS.indexOf(next[next.length - 1]) - 1);\r\n return next.join('') + MAX_PUSH_CHAR.repeat(MAX_KEY_LEN - next.length);\r\n};\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nfunction changeValue(snapshotNode) {\r\n return { type: \"value\" /* VALUE */, snapshotNode: snapshotNode };\r\n}\r\nfunction changeChildAdded(childName, snapshotNode) {\r\n return { type: \"child_added\" /* CHILD_ADDED */, snapshotNode: snapshotNode, childName: childName };\r\n}\r\nfunction changeChildRemoved(childName, snapshotNode) {\r\n return { type: \"child_removed\" /* CHILD_REMOVED */, snapshotNode: snapshotNode, childName: childName };\r\n}\r\nfunction changeChildChanged(childName, snapshotNode, oldSnap) {\r\n return {\r\n type: \"child_changed\" /* CHILD_CHANGED */,\r\n snapshotNode: snapshotNode,\r\n childName: childName,\r\n oldSnap: oldSnap\r\n };\r\n}\r\nfunction changeChildMoved(childName, snapshotNode) {\r\n return { type: \"child_moved\" /* CHILD_MOVED */, snapshotNode: snapshotNode, childName: childName };\r\n}\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * Doesn't really filter nodes but applies an index to the node and keeps track of any changes\r\n */\r\nvar IndexedFilter = /** @class */ (function () {\r\n function IndexedFilter(index_) {\r\n this.index_ = index_;\r\n }\r\n IndexedFilter.prototype.updateChild = function (snap, key, newChild, affectedPath, source, optChangeAccumulator) {\r\n assert(snap.isIndexed(this.index_), 'A node must be indexed if only a child is updated');\r\n var oldChild = snap.getImmediateChild(key);\r\n // Check if anything actually changed.\r\n if (oldChild.getChild(affectedPath).equals(newChild.getChild(affectedPath))) {\r\n // There's an edge case where a child can enter or leave the view because affectedPath was set to null.\r\n // In this case, affectedPath will appear null in both the old and new snapshots. So we need\r\n // to avoid treating these cases as \"nothing changed.\"\r\n if (oldChild.isEmpty() === newChild.isEmpty()) {\r\n // Nothing changed.\r\n // This assert should be valid, but it's expensive (can dominate perf testing) so don't actually do it.\r\n //assert(oldChild.equals(newChild), 'Old and new snapshots should be equal.');\r\n return snap;\r\n }\r\n }\r\n if (optChangeAccumulator != null) {\r\n if (newChild.isEmpty()) {\r\n if (snap.hasChild(key)) {\r\n optChangeAccumulator.trackChildChange(changeChildRemoved(key, oldChild));\r\n }\r\n else {\r\n assert(snap.isLeafNode(), 'A child remove without an old child only makes sense on a leaf node');\r\n }\r\n }\r\n else if (oldChild.isEmpty()) {\r\n optChangeAccumulator.trackChildChange(changeChildAdded(key, newChild));\r\n }\r\n else {\r\n optChangeAccumulator.trackChildChange(changeChildChanged(key, newChild, oldChild));\r\n }\r\n }\r\n if (snap.isLeafNode() && newChild.isEmpty()) {\r\n return snap;\r\n }\r\n else {\r\n // Make sure the node is indexed\r\n return snap.updateImmediateChild(key, newChild).withIndex(this.index_);\r\n }\r\n };\r\n IndexedFilter.prototype.updateFullNode = function (oldSnap, newSnap, optChangeAccumulator) {\r\n if (optChangeAccumulator != null) {\r\n if (!oldSnap.isLeafNode()) {\r\n oldSnap.forEachChild(PRIORITY_INDEX, function (key, childNode) {\r\n if (!newSnap.hasChild(key)) {\r\n optChangeAccumulator.trackChildChange(changeChildRemoved(key, childNode));\r\n }\r\n });\r\n }\r\n if (!newSnap.isLeafNode()) {\r\n newSnap.forEachChild(PRIORITY_INDEX, function (key, childNode) {\r\n if (oldSnap.hasChild(key)) {\r\n var oldChild = oldSnap.getImmediateChild(key);\r\n if (!oldChild.equals(childNode)) {\r\n optChangeAccumulator.trackChildChange(changeChildChanged(key, childNode, oldChild));\r\n }\r\n }\r\n else {\r\n optChangeAccumulator.trackChildChange(changeChildAdded(key, childNode));\r\n }\r\n });\r\n }\r\n }\r\n return newSnap.withIndex(this.index_);\r\n };\r\n IndexedFilter.prototype.updatePriority = function (oldSnap, newPriority) {\r\n if (oldSnap.isEmpty()) {\r\n return ChildrenNode.EMPTY_NODE;\r\n }\r\n else {\r\n return oldSnap.updatePriority(newPriority);\r\n }\r\n };\r\n IndexedFilter.prototype.filtersNodes = function () {\r\n return false;\r\n };\r\n IndexedFilter.prototype.getIndexedFilter = function () {\r\n return this;\r\n };\r\n IndexedFilter.prototype.getIndex = function () {\r\n return this.index_;\r\n };\r\n return IndexedFilter;\r\n}());\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * Filters nodes by range and uses an IndexFilter to track any changes after filtering the node\r\n */\r\nvar RangedFilter = /** @class */ (function () {\r\n function RangedFilter(params) {\r\n this.indexedFilter_ = new IndexedFilter(params.getIndex());\r\n this.index_ = params.getIndex();\r\n this.startPost_ = RangedFilter.getStartPost_(params);\r\n this.endPost_ = RangedFilter.getEndPost_(params);\r\n }\r\n RangedFilter.prototype.getStartPost = function () {\r\n return this.startPost_;\r\n };\r\n RangedFilter.prototype.getEndPost = function () {\r\n return this.endPost_;\r\n };\r\n RangedFilter.prototype.matches = function (node) {\r\n return (this.index_.compare(this.getStartPost(), node) <= 0 &&\r\n this.index_.compare(node, this.getEndPost()) <= 0);\r\n };\r\n RangedFilter.prototype.updateChild = function (snap, key, newChild, affectedPath, source, optChangeAccumulator) {\r\n if (!this.matches(new NamedNode(key, newChild))) {\r\n newChild = ChildrenNode.EMPTY_NODE;\r\n }\r\n return this.indexedFilter_.updateChild(snap, key, newChild, affectedPath, source, optChangeAccumulator);\r\n };\r\n RangedFilter.prototype.updateFullNode = function (oldSnap, newSnap, optChangeAccumulator) {\r\n if (newSnap.isLeafNode()) {\r\n // Make sure we have a children node with the correct index, not a leaf node;\r\n newSnap = ChildrenNode.EMPTY_NODE;\r\n }\r\n var filtered = newSnap.withIndex(this.index_);\r\n // Don't support priorities on queries\r\n filtered = filtered.updatePriority(ChildrenNode.EMPTY_NODE);\r\n var self = this;\r\n newSnap.forEachChild(PRIORITY_INDEX, function (key, childNode) {\r\n if (!self.matches(new NamedNode(key, childNode))) {\r\n filtered = filtered.updateImmediateChild(key, ChildrenNode.EMPTY_NODE);\r\n }\r\n });\r\n return this.indexedFilter_.updateFullNode(oldSnap, filtered, optChangeAccumulator);\r\n };\r\n RangedFilter.prototype.updatePriority = function (oldSnap, newPriority) {\r\n // Don't support priorities on queries\r\n return oldSnap;\r\n };\r\n RangedFilter.prototype.filtersNodes = function () {\r\n return true;\r\n };\r\n RangedFilter.prototype.getIndexedFilter = function () {\r\n return this.indexedFilter_;\r\n };\r\n RangedFilter.prototype.getIndex = function () {\r\n return this.index_;\r\n };\r\n RangedFilter.getStartPost_ = function (params) {\r\n if (params.hasStart()) {\r\n var startName = params.getIndexStartName();\r\n return params.getIndex().makePost(params.getIndexStartValue(), startName);\r\n }\r\n else {\r\n return params.getIndex().minPost();\r\n }\r\n };\r\n RangedFilter.getEndPost_ = function (params) {\r\n if (params.hasEnd()) {\r\n var endName = params.getIndexEndName();\r\n return params.getIndex().makePost(params.getIndexEndValue(), endName);\r\n }\r\n else {\r\n return params.getIndex().maxPost();\r\n }\r\n };\r\n return RangedFilter;\r\n}());\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * Applies a limit and a range to a node and uses RangedFilter to do the heavy lifting where possible\r\n */\r\nvar LimitedFilter = /** @class */ (function () {\r\n function LimitedFilter(params) {\r\n this.rangedFilter_ = new RangedFilter(params);\r\n this.index_ = params.getIndex();\r\n this.limit_ = params.getLimit();\r\n this.reverse_ = !params.isViewFromLeft();\r\n }\r\n LimitedFilter.prototype.updateChild = function (snap, key, newChild, affectedPath, source, optChangeAccumulator) {\r\n if (!this.rangedFilter_.matches(new NamedNode(key, newChild))) {\r\n newChild = ChildrenNode.EMPTY_NODE;\r\n }\r\n if (snap.getImmediateChild(key).equals(newChild)) {\r\n // No change\r\n return snap;\r\n }\r\n else if (snap.numChildren() < this.limit_) {\r\n return this.rangedFilter_\r\n .getIndexedFilter()\r\n .updateChild(snap, key, newChild, affectedPath, source, optChangeAccumulator);\r\n }\r\n else {\r\n return this.fullLimitUpdateChild_(snap, key, newChild, source, optChangeAccumulator);\r\n }\r\n };\r\n LimitedFilter.prototype.updateFullNode = function (oldSnap, newSnap, optChangeAccumulator) {\r\n var filtered;\r\n if (newSnap.isLeafNode() || newSnap.isEmpty()) {\r\n // Make sure we have a children node with the correct index, not a leaf node;\r\n filtered = ChildrenNode.EMPTY_NODE.withIndex(this.index_);\r\n }\r\n else {\r\n if (this.limit_ * 2 < newSnap.numChildren() &&\r\n newSnap.isIndexed(this.index_)) {\r\n // Easier to build up a snapshot, since what we're given has more than twice the elements we want\r\n filtered = ChildrenNode.EMPTY_NODE.withIndex(this.index_);\r\n // anchor to the startPost, endPost, or last element as appropriate\r\n var iterator = void 0;\r\n if (this.reverse_) {\r\n iterator = newSnap.getReverseIteratorFrom(this.rangedFilter_.getEndPost(), this.index_);\r\n }\r\n else {\r\n iterator = newSnap.getIteratorFrom(this.rangedFilter_.getStartPost(), this.index_);\r\n }\r\n var count = 0;\r\n while (iterator.hasNext() && count < this.limit_) {\r\n var next = iterator.getNext();\r\n var inRange = void 0;\r\n if (this.reverse_) {\r\n inRange =\r\n this.index_.compare(this.rangedFilter_.getStartPost(), next) <= 0;\r\n }\r\n else {\r\n inRange =\r\n this.index_.compare(next, this.rangedFilter_.getEndPost()) <= 0;\r\n }\r\n if (inRange) {\r\n filtered = filtered.updateImmediateChild(next.name, next.node);\r\n count++;\r\n }\r\n else {\r\n // if we have reached the end post, we cannot keep adding elemments\r\n break;\r\n }\r\n }\r\n }\r\n else {\r\n // The snap contains less than twice the limit. Faster to delete from the snap than build up a new one\r\n filtered = newSnap.withIndex(this.index_);\r\n // Don't support priorities on queries\r\n filtered = filtered.updatePriority(ChildrenNode.EMPTY_NODE);\r\n var startPost = void 0;\r\n var endPost = void 0;\r\n var cmp = void 0;\r\n var iterator = void 0;\r\n if (this.reverse_) {\r\n iterator = filtered.getReverseIterator(this.index_);\r\n startPost = this.rangedFilter_.getEndPost();\r\n endPost = this.rangedFilter_.getStartPost();\r\n var indexCompare_1 = this.index_.getCompare();\r\n cmp = function (a, b) { return indexCompare_1(b, a); };\r\n }\r\n else {\r\n iterator = filtered.getIterator(this.index_);\r\n startPost = this.rangedFilter_.getStartPost();\r\n endPost = this.rangedFilter_.getEndPost();\r\n cmp = this.index_.getCompare();\r\n }\r\n var count = 0;\r\n var foundStartPost = false;\r\n while (iterator.hasNext()) {\r\n var next = iterator.getNext();\r\n if (!foundStartPost && cmp(startPost, next) <= 0) {\r\n // start adding\r\n foundStartPost = true;\r\n }\r\n var inRange = foundStartPost && count < this.limit_ && cmp(next, endPost) <= 0;\r\n if (inRange) {\r\n count++;\r\n }\r\n else {\r\n filtered = filtered.updateImmediateChild(next.name, ChildrenNode.EMPTY_NODE);\r\n }\r\n }\r\n }\r\n }\r\n return this.rangedFilter_\r\n .getIndexedFilter()\r\n .updateFullNode(oldSnap, filtered, optChangeAccumulator);\r\n };\r\n LimitedFilter.prototype.updatePriority = function (oldSnap, newPriority) {\r\n // Don't support priorities on queries\r\n return oldSnap;\r\n };\r\n LimitedFilter.prototype.filtersNodes = function () {\r\n return true;\r\n };\r\n LimitedFilter.prototype.getIndexedFilter = function () {\r\n return this.rangedFilter_.getIndexedFilter();\r\n };\r\n LimitedFilter.prototype.getIndex = function () {\r\n return this.index_;\r\n };\r\n LimitedFilter.prototype.fullLimitUpdateChild_ = function (snap, childKey, childSnap, source, changeAccumulator) {\r\n // TODO: rename all cache stuff etc to general snap terminology\r\n var cmp;\r\n if (this.reverse_) {\r\n var indexCmp_1 = this.index_.getCompare();\r\n cmp = function (a, b) { return indexCmp_1(b, a); };\r\n }\r\n else {\r\n cmp = this.index_.getCompare();\r\n }\r\n var oldEventCache = snap;\r\n assert(oldEventCache.numChildren() === this.limit_, '');\r\n var newChildNamedNode = new NamedNode(childKey, childSnap);\r\n var windowBoundary = this.reverse_\r\n ? oldEventCache.getFirstChild(this.index_)\r\n : oldEventCache.getLastChild(this.index_);\r\n var inRange = this.rangedFilter_.matches(newChildNamedNode);\r\n if (oldEventCache.hasChild(childKey)) {\r\n var oldChildSnap = oldEventCache.getImmediateChild(childKey);\r\n var nextChild = source.getChildAfterChild(this.index_, windowBoundary, this.reverse_);\r\n while (nextChild != null &&\r\n (nextChild.name === childKey || oldEventCache.hasChild(nextChild.name))) {\r\n // There is a weird edge case where a node is updated as part of a merge in the write tree, but hasn't\r\n // been applied to the limited filter yet. Ignore this next child which will be updated later in\r\n // the limited filter...\r\n nextChild = source.getChildAfterChild(this.index_, nextChild, this.reverse_);\r\n }\r\n var compareNext = nextChild == null ? 1 : cmp(nextChild, newChildNamedNode);\r\n var remainsInWindow = inRange && !childSnap.isEmpty() && compareNext >= 0;\r\n if (remainsInWindow) {\r\n if (changeAccumulator != null) {\r\n changeAccumulator.trackChildChange(changeChildChanged(childKey, childSnap, oldChildSnap));\r\n }\r\n return oldEventCache.updateImmediateChild(childKey, childSnap);\r\n }\r\n else {\r\n if (changeAccumulator != null) {\r\n changeAccumulator.trackChildChange(changeChildRemoved(childKey, oldChildSnap));\r\n }\r\n var newEventCache = oldEventCache.updateImmediateChild(childKey, ChildrenNode.EMPTY_NODE);\r\n var nextChildInRange = nextChild != null && this.rangedFilter_.matches(nextChild);\r\n if (nextChildInRange) {\r\n if (changeAccumulator != null) {\r\n changeAccumulator.trackChildChange(changeChildAdded(nextChild.name, nextChild.node));\r\n }\r\n return newEventCache.updateImmediateChild(nextChild.name, nextChild.node);\r\n }\r\n else {\r\n return newEventCache;\r\n }\r\n }\r\n }\r\n else if (childSnap.isEmpty()) {\r\n // we're deleting a node, but it was not in the window, so ignore it\r\n return snap;\r\n }\r\n else if (inRange) {\r\n if (cmp(windowBoundary, newChildNamedNode) >= 0) {\r\n if (changeAccumulator != null) {\r\n changeAccumulator.trackChildChange(changeChildRemoved(windowBoundary.name, windowBoundary.node));\r\n changeAccumulator.trackChildChange(changeChildAdded(childKey, childSnap));\r\n }\r\n return oldEventCache\r\n .updateImmediateChild(childKey, childSnap)\r\n .updateImmediateChild(windowBoundary.name, ChildrenNode.EMPTY_NODE);\r\n }\r\n else {\r\n return snap;\r\n }\r\n }\r\n else {\r\n return snap;\r\n }\r\n };\r\n return LimitedFilter;\r\n}());\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * This class is an immutable-from-the-public-api struct containing a set of query parameters defining a\r\n * range to be returned for a particular location. It is assumed that validation of parameters is done at the\r\n * user-facing API level, so it is not done here.\r\n */\r\nvar QueryParams = /** @class */ (function () {\r\n function QueryParams() {\r\n this.limitSet_ = false;\r\n this.startSet_ = false;\r\n this.startNameSet_ = false;\r\n this.startAfterSet_ = false;\r\n this.endSet_ = false;\r\n this.endNameSet_ = false;\r\n this.endBeforeSet_ = false;\r\n this.limit_ = 0;\r\n this.viewFrom_ = '';\r\n this.indexStartValue_ = null;\r\n this.indexStartName_ = '';\r\n this.indexEndValue_ = null;\r\n this.indexEndName_ = '';\r\n this.index_ = PRIORITY_INDEX;\r\n }\r\n QueryParams.prototype.hasStart = function () {\r\n return this.startSet_;\r\n };\r\n QueryParams.prototype.hasStartAfter = function () {\r\n return this.startAfterSet_;\r\n };\r\n QueryParams.prototype.hasEndBefore = function () {\r\n return this.endBeforeSet_;\r\n };\r\n /**\r\n * @returns True if it would return from left.\r\n */\r\n QueryParams.prototype.isViewFromLeft = function () {\r\n if (this.viewFrom_ === '') {\r\n // limit(), rather than limitToFirst or limitToLast was called.\r\n // This means that only one of startSet_ and endSet_ is true. Use them\r\n // to calculate which side of the view to anchor to. If neither is set,\r\n // anchor to the end.\r\n return this.startSet_;\r\n }\r\n else {\r\n return this.viewFrom_ === \"l\" /* VIEW_FROM_LEFT */;\r\n }\r\n };\r\n /**\r\n * Only valid to call if hasStart() returns true\r\n */\r\n QueryParams.prototype.getIndexStartValue = function () {\r\n assert(this.startSet_, 'Only valid if start has been set');\r\n return this.indexStartValue_;\r\n };\r\n /**\r\n * Only valid to call if hasStart() returns true.\r\n * Returns the starting key name for the range defined by these query parameters\r\n */\r\n QueryParams.prototype.getIndexStartName = function () {\r\n assert(this.startSet_, 'Only valid if start has been set');\r\n if (this.startNameSet_) {\r\n return this.indexStartName_;\r\n }\r\n else {\r\n return MIN_NAME;\r\n }\r\n };\r\n QueryParams.prototype.hasEnd = function () {\r\n return this.endSet_;\r\n };\r\n /**\r\n * Only valid to call if hasEnd() returns true.\r\n */\r\n QueryParams.prototype.getIndexEndValue = function () {\r\n assert(this.endSet_, 'Only valid if end has been set');\r\n return this.indexEndValue_;\r\n };\r\n /**\r\n * Only valid to call if hasEnd() returns true.\r\n * Returns the end key name for the range defined by these query parameters\r\n */\r\n QueryParams.prototype.getIndexEndName = function () {\r\n assert(this.endSet_, 'Only valid if end has been set');\r\n if (this.endNameSet_) {\r\n return this.indexEndName_;\r\n }\r\n else {\r\n return MAX_NAME;\r\n }\r\n };\r\n QueryParams.prototype.hasLimit = function () {\r\n return this.limitSet_;\r\n };\r\n /**\r\n * @returns True if a limit has been set and it has been explicitly anchored\r\n */\r\n QueryParams.prototype.hasAnchoredLimit = function () {\r\n return this.limitSet_ && this.viewFrom_ !== '';\r\n };\r\n /**\r\n * Only valid to call if hasLimit() returns true\r\n */\r\n QueryParams.prototype.getLimit = function () {\r\n assert(this.limitSet_, 'Only valid if limit has been set');\r\n return this.limit_;\r\n };\r\n QueryParams.prototype.getIndex = function () {\r\n return this.index_;\r\n };\r\n QueryParams.prototype.loadsAllData = function () {\r\n return !(this.startSet_ || this.endSet_ || this.limitSet_);\r\n };\r\n QueryParams.prototype.isDefault = function () {\r\n return this.loadsAllData() && this.index_ === PRIORITY_INDEX;\r\n };\r\n QueryParams.prototype.copy = function () {\r\n var copy = new QueryParams();\r\n copy.limitSet_ = this.limitSet_;\r\n copy.limit_ = this.limit_;\r\n copy.startSet_ = this.startSet_;\r\n copy.indexStartValue_ = this.indexStartValue_;\r\n copy.startNameSet_ = this.startNameSet_;\r\n copy.indexStartName_ = this.indexStartName_;\r\n copy.endSet_ = this.endSet_;\r\n copy.indexEndValue_ = this.indexEndValue_;\r\n copy.endNameSet_ = this.endNameSet_;\r\n copy.indexEndName_ = this.indexEndName_;\r\n copy.index_ = this.index_;\r\n copy.viewFrom_ = this.viewFrom_;\r\n return copy;\r\n };\r\n return QueryParams;\r\n}());\r\nfunction queryParamsGetNodeFilter(queryParams) {\r\n if (queryParams.loadsAllData()) {\r\n return new IndexedFilter(queryParams.getIndex());\r\n }\r\n else if (queryParams.hasLimit()) {\r\n return new LimitedFilter(queryParams);\r\n }\r\n else {\r\n return new RangedFilter(queryParams);\r\n }\r\n}\r\nfunction queryParamsLimitToFirst(queryParams, newLimit) {\r\n var newParams = queryParams.copy();\r\n newParams.limitSet_ = true;\r\n newParams.limit_ = newLimit;\r\n newParams.viewFrom_ = \"l\" /* VIEW_FROM_LEFT */;\r\n return newParams;\r\n}\r\nfunction queryParamsLimitToLast(queryParams, newLimit) {\r\n var newParams = queryParams.copy();\r\n newParams.limitSet_ = true;\r\n newParams.limit_ = newLimit;\r\n newParams.viewFrom_ = \"r\" /* VIEW_FROM_RIGHT */;\r\n return newParams;\r\n}\r\nfunction queryParamsStartAt(queryParams, indexValue, key) {\r\n var newParams = queryParams.copy();\r\n newParams.startSet_ = true;\r\n if (indexValue === undefined) {\r\n indexValue = null;\r\n }\r\n newParams.indexStartValue_ = indexValue;\r\n if (key != null) {\r\n newParams.startNameSet_ = true;\r\n newParams.indexStartName_ = key;\r\n }\r\n else {\r\n newParams.startNameSet_ = false;\r\n newParams.indexStartName_ = '';\r\n }\r\n return newParams;\r\n}\r\nfunction queryParamsStartAfter(queryParams, indexValue, key) {\r\n var params;\r\n if (queryParams.index_ === KEY_INDEX) {\r\n if (typeof indexValue === 'string') {\r\n indexValue = successor(indexValue);\r\n }\r\n params = queryParamsStartAt(queryParams, indexValue, key);\r\n }\r\n else {\r\n var childKey = void 0;\r\n if (key == null) {\r\n childKey = MAX_NAME;\r\n }\r\n else {\r\n childKey = successor(key);\r\n }\r\n params = queryParamsStartAt(queryParams, indexValue, childKey);\r\n }\r\n params.startAfterSet_ = true;\r\n return params;\r\n}\r\nfunction queryParamsEndAt(queryParams, indexValue, key) {\r\n var newParams = queryParams.copy();\r\n newParams.endSet_ = true;\r\n if (indexValue === undefined) {\r\n indexValue = null;\r\n }\r\n newParams.indexEndValue_ = indexValue;\r\n if (key !== undefined) {\r\n newParams.endNameSet_ = true;\r\n newParams.indexEndName_ = key;\r\n }\r\n else {\r\n newParams.endNameSet_ = false;\r\n newParams.indexEndName_ = '';\r\n }\r\n return newParams;\r\n}\r\nfunction queryParamsEndBefore(queryParams, indexValue, key) {\r\n var childKey;\r\n var params;\r\n if (queryParams.index_ === KEY_INDEX) {\r\n if (typeof indexValue === 'string') {\r\n indexValue = predecessor(indexValue);\r\n }\r\n params = queryParamsEndAt(queryParams, indexValue, key);\r\n }\r\n else {\r\n if (key == null) {\r\n childKey = MIN_NAME;\r\n }\r\n else {\r\n childKey = predecessor(key);\r\n }\r\n params = queryParamsEndAt(queryParams, indexValue, childKey);\r\n }\r\n params.endBeforeSet_ = true;\r\n return params;\r\n}\r\nfunction queryParamsOrderBy(queryParams, index) {\r\n var newParams = queryParams.copy();\r\n newParams.index_ = index;\r\n return newParams;\r\n}\r\n/**\r\n * Returns a set of REST query string parameters representing this query.\r\n *\r\n * @returns query string parameters\r\n */\r\nfunction queryParamsToRestQueryStringParameters(queryParams) {\r\n var qs = {};\r\n if (queryParams.isDefault()) {\r\n return qs;\r\n }\r\n var orderBy;\r\n if (queryParams.index_ === PRIORITY_INDEX) {\r\n orderBy = \"$priority\" /* PRIORITY_INDEX */;\r\n }\r\n else if (queryParams.index_ === VALUE_INDEX) {\r\n orderBy = \"$value\" /* VALUE_INDEX */;\r\n }\r\n else if (queryParams.index_ === KEY_INDEX) {\r\n orderBy = \"$key\" /* KEY_INDEX */;\r\n }\r\n else {\r\n assert(queryParams.index_ instanceof PathIndex, 'Unrecognized index type!');\r\n orderBy = queryParams.index_.toString();\r\n }\r\n qs[\"orderBy\" /* ORDER_BY */] = stringify(orderBy);\r\n if (queryParams.startSet_) {\r\n qs[\"startAt\" /* START_AT */] = stringify(queryParams.indexStartValue_);\r\n if (queryParams.startNameSet_) {\r\n qs[\"startAt\" /* START_AT */] +=\r\n ',' + stringify(queryParams.indexStartName_);\r\n }\r\n }\r\n if (queryParams.endSet_) {\r\n qs[\"endAt\" /* END_AT */] = stringify(queryParams.indexEndValue_);\r\n if (queryParams.endNameSet_) {\r\n qs[\"endAt\" /* END_AT */] +=\r\n ',' + stringify(queryParams.indexEndName_);\r\n }\r\n }\r\n if (queryParams.limitSet_) {\r\n if (queryParams.isViewFromLeft()) {\r\n qs[\"limitToFirst\" /* LIMIT_TO_FIRST */] = queryParams.limit_;\r\n }\r\n else {\r\n qs[\"limitToLast\" /* LIMIT_TO_LAST */] = queryParams.limit_;\r\n }\r\n }\r\n return qs;\r\n}\r\nfunction queryParamsGetQueryObject(queryParams) {\r\n var obj = {};\r\n if (queryParams.startSet_) {\r\n obj[\"sp\" /* INDEX_START_VALUE */] =\r\n queryParams.indexStartValue_;\r\n if (queryParams.startNameSet_) {\r\n obj[\"sn\" /* INDEX_START_NAME */] =\r\n queryParams.indexStartName_;\r\n }\r\n }\r\n if (queryParams.endSet_) {\r\n obj[\"ep\" /* INDEX_END_VALUE */] = queryParams.indexEndValue_;\r\n if (queryParams.endNameSet_) {\r\n obj[\"en\" /* INDEX_END_NAME */] = queryParams.indexEndName_;\r\n }\r\n }\r\n if (queryParams.limitSet_) {\r\n obj[\"l\" /* LIMIT */] = queryParams.limit_;\r\n var viewFrom = queryParams.viewFrom_;\r\n if (viewFrom === '') {\r\n if (queryParams.isViewFromLeft()) {\r\n viewFrom = \"l\" /* VIEW_FROM_LEFT */;\r\n }\r\n else {\r\n viewFrom = \"r\" /* VIEW_FROM_RIGHT */;\r\n }\r\n }\r\n obj[\"vf\" /* VIEW_FROM */] = viewFrom;\r\n }\r\n // For now, priority index is the default, so we only specify if it's some other index\r\n if (queryParams.index_ !== PRIORITY_INDEX) {\r\n obj[\"i\" /* INDEX */] = queryParams.index_.toString();\r\n }\r\n return obj;\r\n}\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * An implementation of ServerActions that communicates with the server via REST requests.\r\n * This is mostly useful for compatibility with crawlers, where we don't want to spin up a full\r\n * persistent connection (using WebSockets or long-polling)\r\n */\r\nvar ReadonlyRestClient = /** @class */ (function (_super) {\r\n __extends(ReadonlyRestClient, _super);\r\n /**\r\n * @param repoInfo_ - Data about the namespace we are connecting to\r\n * @param onDataUpdate_ - A callback for new data from the server\r\n */\r\n function ReadonlyRestClient(repoInfo_, onDataUpdate_, authTokenProvider_, appCheckTokenProvider_) {\r\n var _this = _super.call(this) || this;\r\n _this.repoInfo_ = repoInfo_;\r\n _this.onDataUpdate_ = onDataUpdate_;\r\n _this.authTokenProvider_ = authTokenProvider_;\r\n _this.appCheckTokenProvider_ = appCheckTokenProvider_;\r\n /** @private {function(...[*])} */\r\n _this.log_ = logWrapper('p:rest:');\r\n /**\r\n * We don't actually need to track listens, except to prevent us calling an onComplete for a listen\r\n * that's been removed. :-/\r\n */\r\n _this.listens_ = {};\r\n return _this;\r\n }\r\n ReadonlyRestClient.prototype.reportStats = function (stats) {\r\n throw new Error('Method not implemented.');\r\n };\r\n ReadonlyRestClient.getListenId_ = function (query, tag) {\r\n if (tag !== undefined) {\r\n return 'tag$' + tag;\r\n }\r\n else {\r\n assert(query._queryParams.isDefault(), \"should have a tag if it's not a default query.\");\r\n return query._path.toString();\r\n }\r\n };\r\n /** @inheritDoc */\r\n ReadonlyRestClient.prototype.listen = function (query, currentHashFn, tag, onComplete) {\r\n var _this = this;\r\n var pathString = query._path.toString();\r\n this.log_('Listen called for ' + pathString + ' ' + query._queryIdentifier);\r\n // Mark this listener so we can tell if it's removed.\r\n var listenId = ReadonlyRestClient.getListenId_(query, tag);\r\n var thisListen = {};\r\n this.listens_[listenId] = thisListen;\r\n var queryStringParameters = queryParamsToRestQueryStringParameters(query._queryParams);\r\n this.restRequest_(pathString + '.json', queryStringParameters, function (error, result) {\r\n var data = result;\r\n if (error === 404) {\r\n data = null;\r\n error = null;\r\n }\r\n if (error === null) {\r\n _this.onDataUpdate_(pathString, data, /*isMerge=*/ false, tag);\r\n }\r\n if (safeGet(_this.listens_, listenId) === thisListen) {\r\n var status_1;\r\n if (!error) {\r\n status_1 = 'ok';\r\n }\r\n else if (error === 401) {\r\n status_1 = 'permission_denied';\r\n }\r\n else {\r\n status_1 = 'rest_error:' + error;\r\n }\r\n onComplete(status_1, null);\r\n }\r\n });\r\n };\r\n /** @inheritDoc */\r\n ReadonlyRestClient.prototype.unlisten = function (query, tag) {\r\n var listenId = ReadonlyRestClient.getListenId_(query, tag);\r\n delete this.listens_[listenId];\r\n };\r\n ReadonlyRestClient.prototype.get = function (query) {\r\n var _this = this;\r\n var queryStringParameters = queryParamsToRestQueryStringParameters(query._queryParams);\r\n var pathString = query._path.toString();\r\n var deferred = new Deferred();\r\n this.restRequest_(pathString + '.json', queryStringParameters, function (error, result) {\r\n var data = result;\r\n if (error === 404) {\r\n data = null;\r\n error = null;\r\n }\r\n if (error === null) {\r\n _this.onDataUpdate_(pathString, data, \r\n /*isMerge=*/ false, \r\n /*tag=*/ null);\r\n deferred.resolve(data);\r\n }\r\n else {\r\n deferred.reject(new Error(data));\r\n }\r\n });\r\n return deferred.promise;\r\n };\r\n /** @inheritDoc */\r\n ReadonlyRestClient.prototype.refreshAuthToken = function (token) {\r\n // no-op since we just always call getToken.\r\n };\r\n /**\r\n * Performs a REST request to the given path, with the provided query string parameters,\r\n * and any auth credentials we have.\r\n */\r\n ReadonlyRestClient.prototype.restRequest_ = function (pathString, queryStringParameters, callback) {\r\n var _this = this;\r\n if (queryStringParameters === void 0) { queryStringParameters = {}; }\r\n queryStringParameters['format'] = 'export';\r\n return Promise.all([\r\n this.authTokenProvider_.getToken(/*forceRefresh=*/ false),\r\n this.appCheckTokenProvider_.getToken(/*forceRefresh=*/ false)\r\n ]).then(function (_a) {\r\n var _b = __read(_a, 2), authToken = _b[0], appCheckToken = _b[1];\r\n if (authToken && authToken.accessToken) {\r\n queryStringParameters['auth'] = authToken.accessToken;\r\n }\r\n if (appCheckToken && appCheckToken.token) {\r\n queryStringParameters['ac'] = appCheckToken.token;\r\n }\r\n var url = (_this.repoInfo_.secure ? 'https://' : 'http://') +\r\n _this.repoInfo_.host +\r\n pathString +\r\n '?' +\r\n 'ns=' +\r\n _this.repoInfo_.namespace +\r\n querystring(queryStringParameters);\r\n _this.log_('Sending REST request for ' + url);\r\n var xhr = new XMLHttpRequest();\r\n xhr.onreadystatechange = function () {\r\n if (callback && xhr.readyState === 4) {\r\n _this.log_('REST Response for ' + url + ' received. status:', xhr.status, 'response:', xhr.responseText);\r\n var res = null;\r\n if (xhr.status >= 200 && xhr.status < 300) {\r\n try {\r\n res = jsonEval(xhr.responseText);\r\n }\r\n catch (e) {\r\n warn('Failed to parse JSON response for ' +\r\n url +\r\n ': ' +\r\n xhr.responseText);\r\n }\r\n callback(null, res);\r\n }\r\n else {\r\n // 401 and 404 are expected.\r\n if (xhr.status !== 401 && xhr.status !== 404) {\r\n warn('Got unsuccessful REST response for ' +\r\n url +\r\n ' Status: ' +\r\n xhr.status);\r\n }\r\n callback(xhr.status);\r\n }\r\n callback = null;\r\n }\r\n };\r\n xhr.open('GET', url, /*asynchronous=*/ true);\r\n xhr.send();\r\n });\r\n };\r\n return ReadonlyRestClient;\r\n}(ServerActions));\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * Mutable object which basically just stores a reference to the \"latest\" immutable snapshot.\r\n */\r\nvar SnapshotHolder = /** @class */ (function () {\r\n function SnapshotHolder() {\r\n this.rootNode_ = ChildrenNode.EMPTY_NODE;\r\n }\r\n SnapshotHolder.prototype.getNode = function (path) {\r\n return this.rootNode_.getChild(path);\r\n };\r\n SnapshotHolder.prototype.updateSnapshot = function (path, newSnapshotNode) {\r\n this.rootNode_ = this.rootNode_.updateChild(path, newSnapshotNode);\r\n };\r\n return SnapshotHolder;\r\n}());\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nfunction newSparseSnapshotTree() {\r\n return {\r\n value: null,\r\n children: new Map()\r\n };\r\n}\r\n/**\r\n * Stores the given node at the specified path. If there is already a node\r\n * at a shallower path, it merges the new data into that snapshot node.\r\n *\r\n * @param path - Path to look up snapshot for.\r\n * @param data - The new data, or null.\r\n */\r\nfunction sparseSnapshotTreeRemember(sparseSnapshotTree, path, data) {\r\n if (pathIsEmpty(path)) {\r\n sparseSnapshotTree.value = data;\r\n sparseSnapshotTree.children.clear();\r\n }\r\n else if (sparseSnapshotTree.value !== null) {\r\n sparseSnapshotTree.value = sparseSnapshotTree.value.updateChild(path, data);\r\n }\r\n else {\r\n var childKey = pathGetFront(path);\r\n if (!sparseSnapshotTree.children.has(childKey)) {\r\n sparseSnapshotTree.children.set(childKey, newSparseSnapshotTree());\r\n }\r\n var child = sparseSnapshotTree.children.get(childKey);\r\n path = pathPopFront(path);\r\n sparseSnapshotTreeRemember(child, path, data);\r\n }\r\n}\r\n/**\r\n * Purge the data at path from the cache.\r\n *\r\n * @param path - Path to look up snapshot for.\r\n * @returns True if this node should now be removed.\r\n */\r\nfunction sparseSnapshotTreeForget(sparseSnapshotTree, path) {\r\n if (pathIsEmpty(path)) {\r\n sparseSnapshotTree.value = null;\r\n sparseSnapshotTree.children.clear();\r\n return true;\r\n }\r\n else {\r\n if (sparseSnapshotTree.value !== null) {\r\n if (sparseSnapshotTree.value.isLeafNode()) {\r\n // We're trying to forget a node that doesn't exist\r\n return false;\r\n }\r\n else {\r\n var value = sparseSnapshotTree.value;\r\n sparseSnapshotTree.value = null;\r\n value.forEachChild(PRIORITY_INDEX, function (key, tree) {\r\n sparseSnapshotTreeRemember(sparseSnapshotTree, new Path(key), tree);\r\n });\r\n return sparseSnapshotTreeForget(sparseSnapshotTree, path);\r\n }\r\n }\r\n else if (sparseSnapshotTree.children.size > 0) {\r\n var childKey = pathGetFront(path);\r\n path = pathPopFront(path);\r\n if (sparseSnapshotTree.children.has(childKey)) {\r\n var safeToRemove = sparseSnapshotTreeForget(sparseSnapshotTree.children.get(childKey), path);\r\n if (safeToRemove) {\r\n sparseSnapshotTree.children.delete(childKey);\r\n }\r\n }\r\n return sparseSnapshotTree.children.size === 0;\r\n }\r\n else {\r\n return true;\r\n }\r\n }\r\n}\r\n/**\r\n * Recursively iterates through all of the stored tree and calls the\r\n * callback on each one.\r\n *\r\n * @param prefixPath - Path to look up node for.\r\n * @param func - The function to invoke for each tree.\r\n */\r\nfunction sparseSnapshotTreeForEachTree(sparseSnapshotTree, prefixPath, func) {\r\n if (sparseSnapshotTree.value !== null) {\r\n func(prefixPath, sparseSnapshotTree.value);\r\n }\r\n else {\r\n sparseSnapshotTreeForEachChild(sparseSnapshotTree, function (key, tree) {\r\n var path = new Path(prefixPath.toString() + '/' + key);\r\n sparseSnapshotTreeForEachTree(tree, path, func);\r\n });\r\n }\r\n}\r\n/**\r\n * Iterates through each immediate child and triggers the callback.\r\n * Only seems to be used in tests.\r\n *\r\n * @param func - The function to invoke for each child.\r\n */\r\nfunction sparseSnapshotTreeForEachChild(sparseSnapshotTree, func) {\r\n sparseSnapshotTree.children.forEach(function (tree, key) {\r\n func(key, tree);\r\n });\r\n}\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * Returns the delta from the previous call to get stats.\r\n *\r\n * @param collection_ - The collection to \"listen\" to.\r\n */\r\nvar StatsListener = /** @class */ (function () {\r\n function StatsListener(collection_) {\r\n this.collection_ = collection_;\r\n this.last_ = null;\r\n }\r\n StatsListener.prototype.get = function () {\r\n var newStats = this.collection_.get();\r\n var delta = __assign({}, newStats);\r\n if (this.last_) {\r\n each(this.last_, function (stat, value) {\r\n delta[stat] = delta[stat] - value;\r\n });\r\n }\r\n this.last_ = newStats;\r\n return delta;\r\n };\r\n return StatsListener;\r\n}());\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n// Assuming some apps may have a short amount of time on page, and a bulk of firebase operations probably\r\n// happen on page load, we try to report our first set of stats pretty quickly, but we wait at least 10\r\n// seconds to try to ensure the Firebase connection is established / settled.\r\nvar FIRST_STATS_MIN_TIME = 10 * 1000;\r\nvar FIRST_STATS_MAX_TIME = 30 * 1000;\r\n// We'll continue to report stats on average every 5 minutes.\r\nvar REPORT_STATS_INTERVAL = 5 * 60 * 1000;\r\nvar StatsReporter = /** @class */ (function () {\r\n function StatsReporter(collection, server_) {\r\n this.server_ = server_;\r\n this.statsToReport_ = {};\r\n this.statsListener_ = new StatsListener(collection);\r\n var timeout = FIRST_STATS_MIN_TIME +\r\n (FIRST_STATS_MAX_TIME - FIRST_STATS_MIN_TIME) * Math.random();\r\n setTimeoutNonBlocking(this.reportStats_.bind(this), Math.floor(timeout));\r\n }\r\n StatsReporter.prototype.reportStats_ = function () {\r\n var _this = this;\r\n var stats = this.statsListener_.get();\r\n var reportedStats = {};\r\n var haveStatsToReport = false;\r\n each(stats, function (stat, value) {\r\n if (value > 0 && contains(_this.statsToReport_, stat)) {\r\n reportedStats[stat] = value;\r\n haveStatsToReport = true;\r\n }\r\n });\r\n if (haveStatsToReport) {\r\n this.server_.reportStats(reportedStats);\r\n }\r\n // queue our next run.\r\n setTimeoutNonBlocking(this.reportStats_.bind(this), Math.floor(Math.random() * 2 * REPORT_STATS_INTERVAL));\r\n };\r\n return StatsReporter;\r\n}());\r\nfunction statsReporterIncludeStat(reporter, stat) {\r\n reporter.statsToReport_[stat] = true;\r\n}\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n *\r\n * @enum\r\n */\r\nvar OperationType;\r\n(function (OperationType) {\r\n OperationType[OperationType[\"OVERWRITE\"] = 0] = \"OVERWRITE\";\r\n OperationType[OperationType[\"MERGE\"] = 1] = \"MERGE\";\r\n OperationType[OperationType[\"ACK_USER_WRITE\"] = 2] = \"ACK_USER_WRITE\";\r\n OperationType[OperationType[\"LISTEN_COMPLETE\"] = 3] = \"LISTEN_COMPLETE\";\r\n})(OperationType || (OperationType = {}));\r\nfunction newOperationSourceUser() {\r\n return {\r\n fromUser: true,\r\n fromServer: false,\r\n queryId: null,\r\n tagged: false\r\n };\r\n}\r\nfunction newOperationSourceServer() {\r\n return {\r\n fromUser: false,\r\n fromServer: true,\r\n queryId: null,\r\n tagged: false\r\n };\r\n}\r\nfunction newOperationSourceServerTaggedQuery(queryId) {\r\n return {\r\n fromUser: false,\r\n fromServer: true,\r\n queryId: queryId,\r\n tagged: true\r\n };\r\n}\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nvar AckUserWrite = /** @class */ (function () {\r\n /**\r\n * @param affectedTree - A tree containing true for each affected path. Affected paths can't overlap.\r\n */\r\n function AckUserWrite(\r\n /** @inheritDoc */ path, \r\n /** @inheritDoc */ affectedTree, \r\n /** @inheritDoc */ revert) {\r\n this.path = path;\r\n this.affectedTree = affectedTree;\r\n this.revert = revert;\r\n /** @inheritDoc */\r\n this.type = OperationType.ACK_USER_WRITE;\r\n /** @inheritDoc */\r\n this.source = newOperationSourceUser();\r\n }\r\n AckUserWrite.prototype.operationForChild = function (childName) {\r\n if (!pathIsEmpty(this.path)) {\r\n assert(pathGetFront(this.path) === childName, 'operationForChild called for unrelated child.');\r\n return new AckUserWrite(pathPopFront(this.path), this.affectedTree, this.revert);\r\n }\r\n else if (this.affectedTree.value != null) {\r\n assert(this.affectedTree.children.isEmpty(), 'affectedTree should not have overlapping affected paths.');\r\n // All child locations are affected as well; just return same operation.\r\n return this;\r\n }\r\n else {\r\n var childTree = this.affectedTree.subtree(new Path(childName));\r\n return new AckUserWrite(newEmptyPath(), childTree, this.revert);\r\n }\r\n };\r\n return AckUserWrite;\r\n}());\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nvar ListenComplete = /** @class */ (function () {\r\n function ListenComplete(source, path) {\r\n this.source = source;\r\n this.path = path;\r\n /** @inheritDoc */\r\n this.type = OperationType.LISTEN_COMPLETE;\r\n }\r\n ListenComplete.prototype.operationForChild = function (childName) {\r\n if (pathIsEmpty(this.path)) {\r\n return new ListenComplete(this.source, newEmptyPath());\r\n }\r\n else {\r\n return new ListenComplete(this.source, pathPopFront(this.path));\r\n }\r\n };\r\n return ListenComplete;\r\n}());\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nvar Overwrite = /** @class */ (function () {\r\n function Overwrite(source, path, snap) {\r\n this.source = source;\r\n this.path = path;\r\n this.snap = snap;\r\n /** @inheritDoc */\r\n this.type = OperationType.OVERWRITE;\r\n }\r\n Overwrite.prototype.operationForChild = function (childName) {\r\n if (pathIsEmpty(this.path)) {\r\n return new Overwrite(this.source, newEmptyPath(), this.snap.getImmediateChild(childName));\r\n }\r\n else {\r\n return new Overwrite(this.source, pathPopFront(this.path), this.snap);\r\n }\r\n };\r\n return Overwrite;\r\n}());\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nvar Merge = /** @class */ (function () {\r\n function Merge(\r\n /** @inheritDoc */ source, \r\n /** @inheritDoc */ path, \r\n /** @inheritDoc */ children) {\r\n this.source = source;\r\n this.path = path;\r\n this.children = children;\r\n /** @inheritDoc */\r\n this.type = OperationType.MERGE;\r\n }\r\n Merge.prototype.operationForChild = function (childName) {\r\n if (pathIsEmpty(this.path)) {\r\n var childTree = this.children.subtree(new Path(childName));\r\n if (childTree.isEmpty()) {\r\n // This child is unaffected\r\n return null;\r\n }\r\n else if (childTree.value) {\r\n // We have a snapshot for the child in question. This becomes an overwrite of the child.\r\n return new Overwrite(this.source, newEmptyPath(), childTree.value);\r\n }\r\n else {\r\n // This is a merge at a deeper level\r\n return new Merge(this.source, newEmptyPath(), childTree);\r\n }\r\n }\r\n else {\r\n assert(pathGetFront(this.path) === childName, \"Can't get a merge for a child not on the path of the operation\");\r\n return new Merge(this.source, pathPopFront(this.path), this.children);\r\n }\r\n };\r\n Merge.prototype.toString = function () {\r\n return ('Operation(' +\r\n this.path +\r\n ': ' +\r\n this.source.toString() +\r\n ' merge: ' +\r\n this.children.toString() +\r\n ')');\r\n };\r\n return Merge;\r\n}());\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * A cache node only stores complete children. Additionally it holds a flag whether the node can be considered fully\r\n * initialized in the sense that we know at one point in time this represented a valid state of the world, e.g.\r\n * initialized with data from the server, or a complete overwrite by the client. The filtered flag also tracks\r\n * whether a node potentially had children removed due to a filter.\r\n */\r\nvar CacheNode = /** @class */ (function () {\r\n function CacheNode(node_, fullyInitialized_, filtered_) {\r\n this.node_ = node_;\r\n this.fullyInitialized_ = fullyInitialized_;\r\n this.filtered_ = filtered_;\r\n }\r\n /**\r\n * Returns whether this node was fully initialized with either server data or a complete overwrite by the client\r\n */\r\n CacheNode.prototype.isFullyInitialized = function () {\r\n return this.fullyInitialized_;\r\n };\r\n /**\r\n * Returns whether this node is potentially missing children due to a filter applied to the node\r\n */\r\n CacheNode.prototype.isFiltered = function () {\r\n return this.filtered_;\r\n };\r\n CacheNode.prototype.isCompleteForPath = function (path) {\r\n if (pathIsEmpty(path)) {\r\n return this.isFullyInitialized() && !this.filtered_;\r\n }\r\n var childKey = pathGetFront(path);\r\n return this.isCompleteForChild(childKey);\r\n };\r\n CacheNode.prototype.isCompleteForChild = function (key) {\r\n return ((this.isFullyInitialized() && !this.filtered_) || this.node_.hasChild(key));\r\n };\r\n CacheNode.prototype.getNode = function () {\r\n return this.node_;\r\n };\r\n return CacheNode;\r\n}());\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * An EventGenerator is used to convert \"raw\" changes (Change) as computed by the\r\n * CacheDiffer into actual events (Event) that can be raised. See generateEventsForChanges()\r\n * for details.\r\n *\r\n */\r\nvar EventGenerator = /** @class */ (function () {\r\n function EventGenerator(query_) {\r\n this.query_ = query_;\r\n this.index_ = this.query_._queryParams.getIndex();\r\n }\r\n return EventGenerator;\r\n}());\r\n/**\r\n * Given a set of raw changes (no moved events and prevName not specified yet), and a set of\r\n * EventRegistrations that should be notified of these changes, generate the actual events to be raised.\r\n *\r\n * Notes:\r\n * - child_moved events will be synthesized at this time for any child_changed events that affect\r\n * our index.\r\n * - prevName will be calculated based on the index ordering.\r\n */\r\nfunction eventGeneratorGenerateEventsForChanges(eventGenerator, changes, eventCache, eventRegistrations) {\r\n var events = [];\r\n var moves = [];\r\n changes.forEach(function (change) {\r\n if (change.type === \"child_changed\" /* CHILD_CHANGED */ &&\r\n eventGenerator.index_.indexedValueChanged(change.oldSnap, change.snapshotNode)) {\r\n moves.push(changeChildMoved(change.childName, change.snapshotNode));\r\n }\r\n });\r\n eventGeneratorGenerateEventsForType(eventGenerator, events, \"child_removed\" /* CHILD_REMOVED */, changes, eventRegistrations, eventCache);\r\n eventGeneratorGenerateEventsForType(eventGenerator, events, \"child_added\" /* CHILD_ADDED */, changes, eventRegistrations, eventCache);\r\n eventGeneratorGenerateEventsForType(eventGenerator, events, \"child_moved\" /* CHILD_MOVED */, moves, eventRegistrations, eventCache);\r\n eventGeneratorGenerateEventsForType(eventGenerator, events, \"child_changed\" /* CHILD_CHANGED */, changes, eventRegistrations, eventCache);\r\n eventGeneratorGenerateEventsForType(eventGenerator, events, \"value\" /* VALUE */, changes, eventRegistrations, eventCache);\r\n return events;\r\n}\r\n/**\r\n * Given changes of a single change type, generate the corresponding events.\r\n */\r\nfunction eventGeneratorGenerateEventsForType(eventGenerator, events, eventType, changes, registrations, eventCache) {\r\n var filteredChanges = changes.filter(function (change) { return change.type === eventType; });\r\n filteredChanges.sort(function (a, b) {\r\n return eventGeneratorCompareChanges(eventGenerator, a, b);\r\n });\r\n filteredChanges.forEach(function (change) {\r\n var materializedChange = eventGeneratorMaterializeSingleChange(eventGenerator, change, eventCache);\r\n registrations.forEach(function (registration) {\r\n if (registration.respondsTo(change.type)) {\r\n events.push(registration.createEvent(materializedChange, eventGenerator.query_));\r\n }\r\n });\r\n });\r\n}\r\nfunction eventGeneratorMaterializeSingleChange(eventGenerator, change, eventCache) {\r\n if (change.type === 'value' || change.type === 'child_removed') {\r\n return change;\r\n }\r\n else {\r\n change.prevName = eventCache.getPredecessorChildName(change.childName, change.snapshotNode, eventGenerator.index_);\r\n return change;\r\n }\r\n}\r\nfunction eventGeneratorCompareChanges(eventGenerator, a, b) {\r\n if (a.childName == null || b.childName == null) {\r\n throw assertionError('Should only compare child_ events.');\r\n }\r\n var aWrapped = new NamedNode(a.childName, a.snapshotNode);\r\n var bWrapped = new NamedNode(b.childName, b.snapshotNode);\r\n return eventGenerator.index_.compare(aWrapped, bWrapped);\r\n}\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nfunction newViewCache(eventCache, serverCache) {\r\n return { eventCache: eventCache, serverCache: serverCache };\r\n}\r\nfunction viewCacheUpdateEventSnap(viewCache, eventSnap, complete, filtered) {\r\n return newViewCache(new CacheNode(eventSnap, complete, filtered), viewCache.serverCache);\r\n}\r\nfunction viewCacheUpdateServerSnap(viewCache, serverSnap, complete, filtered) {\r\n return newViewCache(viewCache.eventCache, new CacheNode(serverSnap, complete, filtered));\r\n}\r\nfunction viewCacheGetCompleteEventSnap(viewCache) {\r\n return viewCache.eventCache.isFullyInitialized()\r\n ? viewCache.eventCache.getNode()\r\n : null;\r\n}\r\nfunction viewCacheGetCompleteServerSnap(viewCache) {\r\n return viewCache.serverCache.isFullyInitialized()\r\n ? viewCache.serverCache.getNode()\r\n : null;\r\n}\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nvar emptyChildrenSingleton;\r\n/**\r\n * Singleton empty children collection.\r\n *\r\n */\r\nvar EmptyChildren = function () {\r\n if (!emptyChildrenSingleton) {\r\n emptyChildrenSingleton = new SortedMap(stringCompare);\r\n }\r\n return emptyChildrenSingleton;\r\n};\r\n/**\r\n * A tree with immutable elements.\r\n */\r\nvar ImmutableTree = /** @class */ (function () {\r\n function ImmutableTree(value, children) {\r\n if (children === void 0) { children = EmptyChildren(); }\r\n this.value = value;\r\n this.children = children;\r\n }\r\n ImmutableTree.fromObject = function (obj) {\r\n var tree = new ImmutableTree(null);\r\n each(obj, function (childPath, childSnap) {\r\n tree = tree.set(new Path(childPath), childSnap);\r\n });\r\n return tree;\r\n };\r\n /**\r\n * True if the value is empty and there are no children\r\n */\r\n ImmutableTree.prototype.isEmpty = function () {\r\n return this.value === null && this.children.isEmpty();\r\n };\r\n /**\r\n * Given a path and predicate, return the first node and the path to that node\r\n * where the predicate returns true.\r\n *\r\n * TODO Do a perf test -- If we're creating a bunch of `{path: value:}`\r\n * objects on the way back out, it may be better to pass down a pathSoFar obj.\r\n *\r\n * @param relativePath - The remainder of the path\r\n * @param predicate - The predicate to satisfy to return a node\r\n */\r\n ImmutableTree.prototype.findRootMostMatchingPathAndValue = function (relativePath, predicate) {\r\n if (this.value != null && predicate(this.value)) {\r\n return { path: newEmptyPath(), value: this.value };\r\n }\r\n else {\r\n if (pathIsEmpty(relativePath)) {\r\n return null;\r\n }\r\n else {\r\n var front = pathGetFront(relativePath);\r\n var child = this.children.get(front);\r\n if (child !== null) {\r\n var childExistingPathAndValue = child.findRootMostMatchingPathAndValue(pathPopFront(relativePath), predicate);\r\n if (childExistingPathAndValue != null) {\r\n var fullPath = pathChild(new Path(front), childExistingPathAndValue.path);\r\n return { path: fullPath, value: childExistingPathAndValue.value };\r\n }\r\n else {\r\n return null;\r\n }\r\n }\r\n else {\r\n return null;\r\n }\r\n }\r\n }\r\n };\r\n /**\r\n * Find, if it exists, the shortest subpath of the given path that points a defined\r\n * value in the tree\r\n */\r\n ImmutableTree.prototype.findRootMostValueAndPath = function (relativePath) {\r\n return this.findRootMostMatchingPathAndValue(relativePath, function () { return true; });\r\n };\r\n /**\r\n * @returns The subtree at the given path\r\n */\r\n ImmutableTree.prototype.subtree = function (relativePath) {\r\n if (pathIsEmpty(relativePath)) {\r\n return this;\r\n }\r\n else {\r\n var front = pathGetFront(relativePath);\r\n var childTree = this.children.get(front);\r\n if (childTree !== null) {\r\n return childTree.subtree(pathPopFront(relativePath));\r\n }\r\n else {\r\n return new ImmutableTree(null);\r\n }\r\n }\r\n };\r\n /**\r\n * Sets a value at the specified path.\r\n *\r\n * @param relativePath - Path to set value at.\r\n * @param toSet - Value to set.\r\n * @returns Resulting tree.\r\n */\r\n ImmutableTree.prototype.set = function (relativePath, toSet) {\r\n if (pathIsEmpty(relativePath)) {\r\n return new ImmutableTree(toSet, this.children);\r\n }\r\n else {\r\n var front = pathGetFront(relativePath);\r\n var child = this.children.get(front) || new ImmutableTree(null);\r\n var newChild = child.set(pathPopFront(relativePath), toSet);\r\n var newChildren = this.children.insert(front, newChild);\r\n return new ImmutableTree(this.value, newChildren);\r\n }\r\n };\r\n /**\r\n * Removes the value at the specified path.\r\n *\r\n * @param relativePath - Path to value to remove.\r\n * @returns Resulting tree.\r\n */\r\n ImmutableTree.prototype.remove = function (relativePath) {\r\n if (pathIsEmpty(relativePath)) {\r\n if (this.children.isEmpty()) {\r\n return new ImmutableTree(null);\r\n }\r\n else {\r\n return new ImmutableTree(null, this.children);\r\n }\r\n }\r\n else {\r\n var front = pathGetFront(relativePath);\r\n var child = this.children.get(front);\r\n if (child) {\r\n var newChild = child.remove(pathPopFront(relativePath));\r\n var newChildren = void 0;\r\n if (newChild.isEmpty()) {\r\n newChildren = this.children.remove(front);\r\n }\r\n else {\r\n newChildren = this.children.insert(front, newChild);\r\n }\r\n if (this.value === null && newChildren.isEmpty()) {\r\n return new ImmutableTree(null);\r\n }\r\n else {\r\n return new ImmutableTree(this.value, newChildren);\r\n }\r\n }\r\n else {\r\n return this;\r\n }\r\n }\r\n };\r\n /**\r\n * Gets a value from the tree.\r\n *\r\n * @param relativePath - Path to get value for.\r\n * @returns Value at path, or null.\r\n */\r\n ImmutableTree.prototype.get = function (relativePath) {\r\n if (pathIsEmpty(relativePath)) {\r\n return this.value;\r\n }\r\n else {\r\n var front = pathGetFront(relativePath);\r\n var child = this.children.get(front);\r\n if (child) {\r\n return child.get(pathPopFront(relativePath));\r\n }\r\n else {\r\n return null;\r\n }\r\n }\r\n };\r\n /**\r\n * Replace the subtree at the specified path with the given new tree.\r\n *\r\n * @param relativePath - Path to replace subtree for.\r\n * @param newTree - New tree.\r\n * @returns Resulting tree.\r\n */\r\n ImmutableTree.prototype.setTree = function (relativePath, newTree) {\r\n if (pathIsEmpty(relativePath)) {\r\n return newTree;\r\n }\r\n else {\r\n var front = pathGetFront(relativePath);\r\n var child = this.children.get(front) || new ImmutableTree(null);\r\n var newChild = child.setTree(pathPopFront(relativePath), newTree);\r\n var newChildren = void 0;\r\n if (newChild.isEmpty()) {\r\n newChildren = this.children.remove(front);\r\n }\r\n else {\r\n newChildren = this.children.insert(front, newChild);\r\n }\r\n return new ImmutableTree(this.value, newChildren);\r\n }\r\n };\r\n /**\r\n * Performs a depth first fold on this tree. Transforms a tree into a single\r\n * value, given a function that operates on the path to a node, an optional\r\n * current value, and a map of child names to folded subtrees\r\n */\r\n ImmutableTree.prototype.fold = function (fn) {\r\n return this.fold_(newEmptyPath(), fn);\r\n };\r\n /**\r\n * Recursive helper for public-facing fold() method\r\n */\r\n ImmutableTree.prototype.fold_ = function (pathSoFar, fn) {\r\n var accum = {};\r\n this.children.inorderTraversal(function (childKey, childTree) {\r\n accum[childKey] = childTree.fold_(pathChild(pathSoFar, childKey), fn);\r\n });\r\n return fn(pathSoFar, this.value, accum);\r\n };\r\n /**\r\n * Find the first matching value on the given path. Return the result of applying f to it.\r\n */\r\n ImmutableTree.prototype.findOnPath = function (path, f) {\r\n return this.findOnPath_(path, newEmptyPath(), f);\r\n };\r\n ImmutableTree.prototype.findOnPath_ = function (pathToFollow, pathSoFar, f) {\r\n var result = this.value ? f(pathSoFar, this.value) : false;\r\n if (result) {\r\n return result;\r\n }\r\n else {\r\n if (pathIsEmpty(pathToFollow)) {\r\n return null;\r\n }\r\n else {\r\n var front = pathGetFront(pathToFollow);\r\n var nextChild = this.children.get(front);\r\n if (nextChild) {\r\n return nextChild.findOnPath_(pathPopFront(pathToFollow), pathChild(pathSoFar, front), f);\r\n }\r\n else {\r\n return null;\r\n }\r\n }\r\n }\r\n };\r\n ImmutableTree.prototype.foreachOnPath = function (path, f) {\r\n return this.foreachOnPath_(path, newEmptyPath(), f);\r\n };\r\n ImmutableTree.prototype.foreachOnPath_ = function (pathToFollow, currentRelativePath, f) {\r\n if (pathIsEmpty(pathToFollow)) {\r\n return this;\r\n }\r\n else {\r\n if (this.value) {\r\n f(currentRelativePath, this.value);\r\n }\r\n var front = pathGetFront(pathToFollow);\r\n var nextChild = this.children.get(front);\r\n if (nextChild) {\r\n return nextChild.foreachOnPath_(pathPopFront(pathToFollow), pathChild(currentRelativePath, front), f);\r\n }\r\n else {\r\n return new ImmutableTree(null);\r\n }\r\n }\r\n };\r\n /**\r\n * Calls the given function for each node in the tree that has a value.\r\n *\r\n * @param f - A function to be called with the path from the root of the tree to\r\n * a node, and the value at that node. Called in depth-first order.\r\n */\r\n ImmutableTree.prototype.foreach = function (f) {\r\n this.foreach_(newEmptyPath(), f);\r\n };\r\n ImmutableTree.prototype.foreach_ = function (currentRelativePath, f) {\r\n this.children.inorderTraversal(function (childName, childTree) {\r\n childTree.foreach_(pathChild(currentRelativePath, childName), f);\r\n });\r\n if (this.value) {\r\n f(currentRelativePath, this.value);\r\n }\r\n };\r\n ImmutableTree.prototype.foreachChild = function (f) {\r\n this.children.inorderTraversal(function (childName, childTree) {\r\n if (childTree.value) {\r\n f(childName, childTree.value);\r\n }\r\n });\r\n };\r\n return ImmutableTree;\r\n}());\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * This class holds a collection of writes that can be applied to nodes in unison. It abstracts away the logic with\r\n * dealing with priority writes and multiple nested writes. At any given path there is only allowed to be one write\r\n * modifying that path. Any write to an existing path or shadowing an existing path will modify that existing write\r\n * to reflect the write added.\r\n */\r\nvar CompoundWrite = /** @class */ (function () {\r\n function CompoundWrite(writeTree_) {\r\n this.writeTree_ = writeTree_;\r\n }\r\n CompoundWrite.empty = function () {\r\n return new CompoundWrite(new ImmutableTree(null));\r\n };\r\n return CompoundWrite;\r\n}());\r\nfunction compoundWriteAddWrite(compoundWrite, path, node) {\r\n if (pathIsEmpty(path)) {\r\n return new CompoundWrite(new ImmutableTree(node));\r\n }\r\n else {\r\n var rootmost = compoundWrite.writeTree_.findRootMostValueAndPath(path);\r\n if (rootmost != null) {\r\n var rootMostPath = rootmost.path;\r\n var value = rootmost.value;\r\n var relativePath = newRelativePath(rootMostPath, path);\r\n value = value.updateChild(relativePath, node);\r\n return new CompoundWrite(compoundWrite.writeTree_.set(rootMostPath, value));\r\n }\r\n else {\r\n var subtree = new ImmutableTree(node);\r\n var newWriteTree = compoundWrite.writeTree_.setTree(path, subtree);\r\n return new CompoundWrite(newWriteTree);\r\n }\r\n }\r\n}\r\nfunction compoundWriteAddWrites(compoundWrite, path, updates) {\r\n var newWrite = compoundWrite;\r\n each(updates, function (childKey, node) {\r\n newWrite = compoundWriteAddWrite(newWrite, pathChild(path, childKey), node);\r\n });\r\n return newWrite;\r\n}\r\n/**\r\n * Will remove a write at the given path and deeper paths. This will not modify a write at a higher\r\n * location, which must be removed by calling this method with that path.\r\n *\r\n * @param compoundWrite - The CompoundWrite to remove.\r\n * @param path - The path at which a write and all deeper writes should be removed\r\n * @returns The new CompoundWrite with the removed path\r\n */\r\nfunction compoundWriteRemoveWrite(compoundWrite, path) {\r\n if (pathIsEmpty(path)) {\r\n return CompoundWrite.empty();\r\n }\r\n else {\r\n var newWriteTree = compoundWrite.writeTree_.setTree(path, new ImmutableTree(null));\r\n return new CompoundWrite(newWriteTree);\r\n }\r\n}\r\n/**\r\n * Returns whether this CompoundWrite will fully overwrite a node at a given location and can therefore be\r\n * considered \"complete\".\r\n *\r\n * @param compoundWrite - The CompoundWrite to check.\r\n * @param path - The path to check for\r\n * @returns Whether there is a complete write at that path\r\n */\r\nfunction compoundWriteHasCompleteWrite(compoundWrite, path) {\r\n return compoundWriteGetCompleteNode(compoundWrite, path) != null;\r\n}\r\n/**\r\n * Returns a node for a path if and only if the node is a \"complete\" overwrite at that path. This will not aggregate\r\n * writes from deeper paths, but will return child nodes from a more shallow path.\r\n *\r\n * @param compoundWrite - The CompoundWrite to get the node from.\r\n * @param path - The path to get a complete write\r\n * @returns The node if complete at that path, or null otherwise.\r\n */\r\nfunction compoundWriteGetCompleteNode(compoundWrite, path) {\r\n var rootmost = compoundWrite.writeTree_.findRootMostValueAndPath(path);\r\n if (rootmost != null) {\r\n return compoundWrite.writeTree_\r\n .get(rootmost.path)\r\n .getChild(newRelativePath(rootmost.path, path));\r\n }\r\n else {\r\n return null;\r\n }\r\n}\r\n/**\r\n * Returns all children that are guaranteed to be a complete overwrite.\r\n *\r\n * @param compoundWrite - The CompoundWrite to get children from.\r\n * @returns A list of all complete children.\r\n */\r\nfunction compoundWriteGetCompleteChildren(compoundWrite) {\r\n var children = [];\r\n var node = compoundWrite.writeTree_.value;\r\n if (node != null) {\r\n // If it's a leaf node, it has no children; so nothing to do.\r\n if (!node.isLeafNode()) {\r\n node.forEachChild(PRIORITY_INDEX, function (childName, childNode) {\r\n children.push(new NamedNode(childName, childNode));\r\n });\r\n }\r\n }\r\n else {\r\n compoundWrite.writeTree_.children.inorderTraversal(function (childName, childTree) {\r\n if (childTree.value != null) {\r\n children.push(new NamedNode(childName, childTree.value));\r\n }\r\n });\r\n }\r\n return children;\r\n}\r\nfunction compoundWriteChildCompoundWrite(compoundWrite, path) {\r\n if (pathIsEmpty(path)) {\r\n return compoundWrite;\r\n }\r\n else {\r\n var shadowingNode = compoundWriteGetCompleteNode(compoundWrite, path);\r\n if (shadowingNode != null) {\r\n return new CompoundWrite(new ImmutableTree(shadowingNode));\r\n }\r\n else {\r\n return new CompoundWrite(compoundWrite.writeTree_.subtree(path));\r\n }\r\n }\r\n}\r\n/**\r\n * Returns true if this CompoundWrite is empty and therefore does not modify any nodes.\r\n * @returns Whether this CompoundWrite is empty\r\n */\r\nfunction compoundWriteIsEmpty(compoundWrite) {\r\n return compoundWrite.writeTree_.isEmpty();\r\n}\r\n/**\r\n * Applies this CompoundWrite to a node. The node is returned with all writes from this CompoundWrite applied to the\r\n * node\r\n * @param node - The node to apply this CompoundWrite to\r\n * @returns The node with all writes applied\r\n */\r\nfunction compoundWriteApply(compoundWrite, node) {\r\n return applySubtreeWrite(newEmptyPath(), compoundWrite.writeTree_, node);\r\n}\r\nfunction applySubtreeWrite(relativePath, writeTree, node) {\r\n if (writeTree.value != null) {\r\n // Since there a write is always a leaf, we're done here\r\n return node.updateChild(relativePath, writeTree.value);\r\n }\r\n else {\r\n var priorityWrite_1 = null;\r\n writeTree.children.inorderTraversal(function (childKey, childTree) {\r\n if (childKey === '.priority') {\r\n // Apply priorities at the end so we don't update priorities for either empty nodes or forget\r\n // to apply priorities to empty nodes that are later filled\r\n assert(childTree.value !== null, 'Priority writes must always be leaf nodes');\r\n priorityWrite_1 = childTree.value;\r\n }\r\n else {\r\n node = applySubtreeWrite(pathChild(relativePath, childKey), childTree, node);\r\n }\r\n });\r\n // If there was a priority write, we only apply it if the node is not empty\r\n if (!node.getChild(relativePath).isEmpty() && priorityWrite_1 !== null) {\r\n node = node.updateChild(pathChild(relativePath, '.priority'), priorityWrite_1);\r\n }\r\n return node;\r\n }\r\n}\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * Create a new WriteTreeRef for the given path. For use with a new sync point at the given path.\r\n *\r\n */\r\nfunction writeTreeChildWrites(writeTree, path) {\r\n return newWriteTreeRef(path, writeTree);\r\n}\r\n/**\r\n * Record a new overwrite from user code.\r\n *\r\n * @param visible - This is set to false by some transactions. It should be excluded from event caches\r\n */\r\nfunction writeTreeAddOverwrite(writeTree, path, snap, writeId, visible) {\r\n assert(writeId > writeTree.lastWriteId, 'Stacking an older write on top of newer ones');\r\n if (visible === undefined) {\r\n visible = true;\r\n }\r\n writeTree.allWrites.push({\r\n path: path,\r\n snap: snap,\r\n writeId: writeId,\r\n visible: visible\r\n });\r\n if (visible) {\r\n writeTree.visibleWrites = compoundWriteAddWrite(writeTree.visibleWrites, path, snap);\r\n }\r\n writeTree.lastWriteId = writeId;\r\n}\r\n/**\r\n * Record a new merge from user code.\r\n */\r\nfunction writeTreeAddMerge(writeTree, path, changedChildren, writeId) {\r\n assert(writeId > writeTree.lastWriteId, 'Stacking an older merge on top of newer ones');\r\n writeTree.allWrites.push({\r\n path: path,\r\n children: changedChildren,\r\n writeId: writeId,\r\n visible: true\r\n });\r\n writeTree.visibleWrites = compoundWriteAddWrites(writeTree.visibleWrites, path, changedChildren);\r\n writeTree.lastWriteId = writeId;\r\n}\r\nfunction writeTreeGetWrite(writeTree, writeId) {\r\n for (var i = 0; i < writeTree.allWrites.length; i++) {\r\n var record = writeTree.allWrites[i];\r\n if (record.writeId === writeId) {\r\n return record;\r\n }\r\n }\r\n return null;\r\n}\r\n/**\r\n * Remove a write (either an overwrite or merge) that has been successfully acknowledge by the server. Recalculates\r\n * the tree if necessary. We return true if it may have been visible, meaning views need to reevaluate.\r\n *\r\n * @returns true if the write may have been visible (meaning we'll need to reevaluate / raise\r\n * events as a result).\r\n */\r\nfunction writeTreeRemoveWrite(writeTree, writeId) {\r\n // Note: disabling this check. It could be a transaction that preempted another transaction, and thus was applied\r\n // out of order.\r\n //const validClear = revert || this.allWrites_.length === 0 || writeId <= this.allWrites_[0].writeId;\r\n //assert(validClear, \"Either we don't have this write, or it's the first one in the queue\");\r\n var idx = writeTree.allWrites.findIndex(function (s) {\r\n return s.writeId === writeId;\r\n });\r\n assert(idx >= 0, 'removeWrite called with nonexistent writeId.');\r\n var writeToRemove = writeTree.allWrites[idx];\r\n writeTree.allWrites.splice(idx, 1);\r\n var removedWriteWasVisible = writeToRemove.visible;\r\n var removedWriteOverlapsWithOtherWrites = false;\r\n var i = writeTree.allWrites.length - 1;\r\n while (removedWriteWasVisible && i >= 0) {\r\n var currentWrite = writeTree.allWrites[i];\r\n if (currentWrite.visible) {\r\n if (i >= idx &&\r\n writeTreeRecordContainsPath_(currentWrite, writeToRemove.path)) {\r\n // The removed write was completely shadowed by a subsequent write.\r\n removedWriteWasVisible = false;\r\n }\r\n else if (pathContains(writeToRemove.path, currentWrite.path)) {\r\n // Either we're covering some writes or they're covering part of us (depending on which came first).\r\n removedWriteOverlapsWithOtherWrites = true;\r\n }\r\n }\r\n i--;\r\n }\r\n if (!removedWriteWasVisible) {\r\n return false;\r\n }\r\n else if (removedWriteOverlapsWithOtherWrites) {\r\n // There's some shadowing going on. Just rebuild the visible writes from scratch.\r\n writeTreeResetTree_(writeTree);\r\n return true;\r\n }\r\n else {\r\n // There's no shadowing. We can safely just remove the write(s) from visibleWrites.\r\n if (writeToRemove.snap) {\r\n writeTree.visibleWrites = compoundWriteRemoveWrite(writeTree.visibleWrites, writeToRemove.path);\r\n }\r\n else {\r\n var children = writeToRemove.children;\r\n each(children, function (childName) {\r\n writeTree.visibleWrites = compoundWriteRemoveWrite(writeTree.visibleWrites, pathChild(writeToRemove.path, childName));\r\n });\r\n }\r\n return true;\r\n }\r\n}\r\nfunction writeTreeRecordContainsPath_(writeRecord, path) {\r\n if (writeRecord.snap) {\r\n return pathContains(writeRecord.path, path);\r\n }\r\n else {\r\n for (var childName in writeRecord.children) {\r\n if (writeRecord.children.hasOwnProperty(childName) &&\r\n pathContains(pathChild(writeRecord.path, childName), path)) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n }\r\n}\r\n/**\r\n * Re-layer the writes and merges into a tree so we can efficiently calculate event snapshots\r\n */\r\nfunction writeTreeResetTree_(writeTree) {\r\n writeTree.visibleWrites = writeTreeLayerTree_(writeTree.allWrites, writeTreeDefaultFilter_, newEmptyPath());\r\n if (writeTree.allWrites.length > 0) {\r\n writeTree.lastWriteId =\r\n writeTree.allWrites[writeTree.allWrites.length - 1].writeId;\r\n }\r\n else {\r\n writeTree.lastWriteId = -1;\r\n }\r\n}\r\n/**\r\n * The default filter used when constructing the tree. Keep everything that's visible.\r\n */\r\nfunction writeTreeDefaultFilter_(write) {\r\n return write.visible;\r\n}\r\n/**\r\n * Static method. Given an array of WriteRecords, a filter for which ones to include, and a path, construct the tree of\r\n * event data at that path.\r\n */\r\nfunction writeTreeLayerTree_(writes, filter, treeRoot) {\r\n var compoundWrite = CompoundWrite.empty();\r\n for (var i = 0; i < writes.length; ++i) {\r\n var write = writes[i];\r\n // Theory, a later set will either:\r\n // a) abort a relevant transaction, so no need to worry about excluding it from calculating that transaction\r\n // b) not be relevant to a transaction (separate branch), so again will not affect the data for that transaction\r\n if (filter(write)) {\r\n var writePath = write.path;\r\n var relativePath = void 0;\r\n if (write.snap) {\r\n if (pathContains(treeRoot, writePath)) {\r\n relativePath = newRelativePath(treeRoot, writePath);\r\n compoundWrite = compoundWriteAddWrite(compoundWrite, relativePath, write.snap);\r\n }\r\n else if (pathContains(writePath, treeRoot)) {\r\n relativePath = newRelativePath(writePath, treeRoot);\r\n compoundWrite = compoundWriteAddWrite(compoundWrite, newEmptyPath(), write.snap.getChild(relativePath));\r\n }\r\n else ;\r\n }\r\n else if (write.children) {\r\n if (pathContains(treeRoot, writePath)) {\r\n relativePath = newRelativePath(treeRoot, writePath);\r\n compoundWrite = compoundWriteAddWrites(compoundWrite, relativePath, write.children);\r\n }\r\n else if (pathContains(writePath, treeRoot)) {\r\n relativePath = newRelativePath(writePath, treeRoot);\r\n if (pathIsEmpty(relativePath)) {\r\n compoundWrite = compoundWriteAddWrites(compoundWrite, newEmptyPath(), write.children);\r\n }\r\n else {\r\n var child = safeGet(write.children, pathGetFront(relativePath));\r\n if (child) {\r\n // There exists a child in this node that matches the root path\r\n var deepNode = child.getChild(pathPopFront(relativePath));\r\n compoundWrite = compoundWriteAddWrite(compoundWrite, newEmptyPath(), deepNode);\r\n }\r\n }\r\n }\r\n else ;\r\n }\r\n else {\r\n throw assertionError('WriteRecord should have .snap or .children');\r\n }\r\n }\r\n }\r\n return compoundWrite;\r\n}\r\n/**\r\n * Given optional, underlying server data, and an optional set of constraints (exclude some sets, include hidden\r\n * writes), attempt to calculate a complete snapshot for the given path\r\n *\r\n * @param writeIdsToExclude - An optional set to be excluded\r\n * @param includeHiddenWrites - Defaults to false, whether or not to layer on writes with visible set to false\r\n */\r\nfunction writeTreeCalcCompleteEventCache(writeTree, treePath, completeServerCache, writeIdsToExclude, includeHiddenWrites) {\r\n if (!writeIdsToExclude && !includeHiddenWrites) {\r\n var shadowingNode = compoundWriteGetCompleteNode(writeTree.visibleWrites, treePath);\r\n if (shadowingNode != null) {\r\n return shadowingNode;\r\n }\r\n else {\r\n var subMerge = compoundWriteChildCompoundWrite(writeTree.visibleWrites, treePath);\r\n if (compoundWriteIsEmpty(subMerge)) {\r\n return completeServerCache;\r\n }\r\n else if (completeServerCache == null &&\r\n !compoundWriteHasCompleteWrite(subMerge, newEmptyPath())) {\r\n // We wouldn't have a complete snapshot, since there's no underlying data and no complete shadow\r\n return null;\r\n }\r\n else {\r\n var layeredCache = completeServerCache || ChildrenNode.EMPTY_NODE;\r\n return compoundWriteApply(subMerge, layeredCache);\r\n }\r\n }\r\n }\r\n else {\r\n var merge = compoundWriteChildCompoundWrite(writeTree.visibleWrites, treePath);\r\n if (!includeHiddenWrites && compoundWriteIsEmpty(merge)) {\r\n return completeServerCache;\r\n }\r\n else {\r\n // If the server cache is null, and we don't have a complete cache, we need to return null\r\n if (!includeHiddenWrites &&\r\n completeServerCache == null &&\r\n !compoundWriteHasCompleteWrite(merge, newEmptyPath())) {\r\n return null;\r\n }\r\n else {\r\n var filter = function (write) {\r\n return ((write.visible || includeHiddenWrites) &&\r\n (!writeIdsToExclude ||\r\n !~writeIdsToExclude.indexOf(write.writeId)) &&\r\n (pathContains(write.path, treePath) ||\r\n pathContains(treePath, write.path)));\r\n };\r\n var mergeAtPath = writeTreeLayerTree_(writeTree.allWrites, filter, treePath);\r\n var layeredCache = completeServerCache || ChildrenNode.EMPTY_NODE;\r\n return compoundWriteApply(mergeAtPath, layeredCache);\r\n }\r\n }\r\n }\r\n}\r\n/**\r\n * With optional, underlying server data, attempt to return a children node of children that we have complete data for.\r\n * Used when creating new views, to pre-fill their complete event children snapshot.\r\n */\r\nfunction writeTreeCalcCompleteEventChildren(writeTree, treePath, completeServerChildren) {\r\n var completeChildren = ChildrenNode.EMPTY_NODE;\r\n var topLevelSet = compoundWriteGetCompleteNode(writeTree.visibleWrites, treePath);\r\n if (topLevelSet) {\r\n if (!topLevelSet.isLeafNode()) {\r\n // we're shadowing everything. Return the children.\r\n topLevelSet.forEachChild(PRIORITY_INDEX, function (childName, childSnap) {\r\n completeChildren = completeChildren.updateImmediateChild(childName, childSnap);\r\n });\r\n }\r\n return completeChildren;\r\n }\r\n else if (completeServerChildren) {\r\n // Layer any children we have on top of this\r\n // We know we don't have a top-level set, so just enumerate existing children\r\n var merge_1 = compoundWriteChildCompoundWrite(writeTree.visibleWrites, treePath);\r\n completeServerChildren.forEachChild(PRIORITY_INDEX, function (childName, childNode) {\r\n var node = compoundWriteApply(compoundWriteChildCompoundWrite(merge_1, new Path(childName)), childNode);\r\n completeChildren = completeChildren.updateImmediateChild(childName, node);\r\n });\r\n // Add any complete children we have from the set\r\n compoundWriteGetCompleteChildren(merge_1).forEach(function (namedNode) {\r\n completeChildren = completeChildren.updateImmediateChild(namedNode.name, namedNode.node);\r\n });\r\n return completeChildren;\r\n }\r\n else {\r\n // We don't have anything to layer on top of. Layer on any children we have\r\n // Note that we can return an empty snap if we have a defined delete\r\n var merge = compoundWriteChildCompoundWrite(writeTree.visibleWrites, treePath);\r\n compoundWriteGetCompleteChildren(merge).forEach(function (namedNode) {\r\n completeChildren = completeChildren.updateImmediateChild(namedNode.name, namedNode.node);\r\n });\r\n return completeChildren;\r\n }\r\n}\r\n/**\r\n * Given that the underlying server data has updated, determine what, if anything, needs to be\r\n * applied to the event cache.\r\n *\r\n * Possibilities:\r\n *\r\n * 1. No writes are shadowing. Events should be raised, the snap to be applied comes from the server data\r\n *\r\n * 2. Some write is completely shadowing. No events to be raised\r\n *\r\n * 3. Is partially shadowed. Events\r\n *\r\n * Either existingEventSnap or existingServerSnap must exist\r\n */\r\nfunction writeTreeCalcEventCacheAfterServerOverwrite(writeTree, treePath, childPath, existingEventSnap, existingServerSnap) {\r\n assert(existingEventSnap || existingServerSnap, 'Either existingEventSnap or existingServerSnap must exist');\r\n var path = pathChild(treePath, childPath);\r\n if (compoundWriteHasCompleteWrite(writeTree.visibleWrites, path)) {\r\n // At this point we can probably guarantee that we're in case 2, meaning no events\r\n // May need to check visibility while doing the findRootMostValueAndPath call\r\n return null;\r\n }\r\n else {\r\n // No complete shadowing. We're either partially shadowing or not shadowing at all.\r\n var childMerge = compoundWriteChildCompoundWrite(writeTree.visibleWrites, path);\r\n if (compoundWriteIsEmpty(childMerge)) {\r\n // We're not shadowing at all. Case 1\r\n return existingServerSnap.getChild(childPath);\r\n }\r\n else {\r\n // This could be more efficient if the serverNode + updates doesn't change the eventSnap\r\n // However this is tricky to find out, since user updates don't necessary change the server\r\n // snap, e.g. priority updates on empty nodes, or deep deletes. Another special case is if the server\r\n // adds nodes, but doesn't change any existing writes. It is therefore not enough to\r\n // only check if the updates change the serverNode.\r\n // Maybe check if the merge tree contains these special cases and only do a full overwrite in that case?\r\n return compoundWriteApply(childMerge, existingServerSnap.getChild(childPath));\r\n }\r\n }\r\n}\r\n/**\r\n * Returns a complete child for a given server snap after applying all user writes or null if there is no\r\n * complete child for this ChildKey.\r\n */\r\nfunction writeTreeCalcCompleteChild(writeTree, treePath, childKey, existingServerSnap) {\r\n var path = pathChild(treePath, childKey);\r\n var shadowingNode = compoundWriteGetCompleteNode(writeTree.visibleWrites, path);\r\n if (shadowingNode != null) {\r\n return shadowingNode;\r\n }\r\n else {\r\n if (existingServerSnap.isCompleteForChild(childKey)) {\r\n var childMerge = compoundWriteChildCompoundWrite(writeTree.visibleWrites, path);\r\n return compoundWriteApply(childMerge, existingServerSnap.getNode().getImmediateChild(childKey));\r\n }\r\n else {\r\n return null;\r\n }\r\n }\r\n}\r\n/**\r\n * Returns a node if there is a complete overwrite for this path. More specifically, if there is a write at\r\n * a higher path, this will return the child of that write relative to the write and this path.\r\n * Returns null if there is no write at this path.\r\n */\r\nfunction writeTreeShadowingWrite(writeTree, path) {\r\n return compoundWriteGetCompleteNode(writeTree.visibleWrites, path);\r\n}\r\n/**\r\n * This method is used when processing child remove events on a query. If we can, we pull in children that were outside\r\n * the window, but may now be in the window.\r\n */\r\nfunction writeTreeCalcIndexedSlice(writeTree, treePath, completeServerData, startPost, count, reverse, index) {\r\n var toIterate;\r\n var merge = compoundWriteChildCompoundWrite(writeTree.visibleWrites, treePath);\r\n var shadowingNode = compoundWriteGetCompleteNode(merge, newEmptyPath());\r\n if (shadowingNode != null) {\r\n toIterate = shadowingNode;\r\n }\r\n else if (completeServerData != null) {\r\n toIterate = compoundWriteApply(merge, completeServerData);\r\n }\r\n else {\r\n // no children to iterate on\r\n return [];\r\n }\r\n toIterate = toIterate.withIndex(index);\r\n if (!toIterate.isEmpty() && !toIterate.isLeafNode()) {\r\n var nodes = [];\r\n var cmp = index.getCompare();\r\n var iter = reverse\r\n ? toIterate.getReverseIteratorFrom(startPost, index)\r\n : toIterate.getIteratorFrom(startPost, index);\r\n var next = iter.getNext();\r\n while (next && nodes.length < count) {\r\n if (cmp(next, startPost) !== 0) {\r\n nodes.push(next);\r\n }\r\n next = iter.getNext();\r\n }\r\n return nodes;\r\n }\r\n else {\r\n return [];\r\n }\r\n}\r\nfunction newWriteTree() {\r\n return {\r\n visibleWrites: CompoundWrite.empty(),\r\n allWrites: [],\r\n lastWriteId: -1\r\n };\r\n}\r\n/**\r\n * If possible, returns a complete event cache, using the underlying server data if possible. In addition, can be used\r\n * to get a cache that includes hidden writes, and excludes arbitrary writes. Note that customizing the returned node\r\n * can lead to a more expensive calculation.\r\n *\r\n * @param writeIdsToExclude - Optional writes to exclude.\r\n * @param includeHiddenWrites - Defaults to false, whether or not to layer on writes with visible set to false\r\n */\r\nfunction writeTreeRefCalcCompleteEventCache(writeTreeRef, completeServerCache, writeIdsToExclude, includeHiddenWrites) {\r\n return writeTreeCalcCompleteEventCache(writeTreeRef.writeTree, writeTreeRef.treePath, completeServerCache, writeIdsToExclude, includeHiddenWrites);\r\n}\r\n/**\r\n * If possible, returns a children node containing all of the complete children we have data for. The returned data is a\r\n * mix of the given server data and write data.\r\n *\r\n */\r\nfunction writeTreeRefCalcCompleteEventChildren(writeTreeRef, completeServerChildren) {\r\n return writeTreeCalcCompleteEventChildren(writeTreeRef.writeTree, writeTreeRef.treePath, completeServerChildren);\r\n}\r\n/**\r\n * Given that either the underlying server data has updated or the outstanding writes have updated, determine what,\r\n * if anything, needs to be applied to the event cache.\r\n *\r\n * Possibilities:\r\n *\r\n * 1. No writes are shadowing. Events should be raised, the snap to be applied comes from the server data\r\n *\r\n * 2. Some write is completely shadowing. No events to be raised\r\n *\r\n * 3. Is partially shadowed. Events should be raised\r\n *\r\n * Either existingEventSnap or existingServerSnap must exist, this is validated via an assert\r\n *\r\n *\r\n */\r\nfunction writeTreeRefCalcEventCacheAfterServerOverwrite(writeTreeRef, path, existingEventSnap, existingServerSnap) {\r\n return writeTreeCalcEventCacheAfterServerOverwrite(writeTreeRef.writeTree, writeTreeRef.treePath, path, existingEventSnap, existingServerSnap);\r\n}\r\n/**\r\n * Returns a node if there is a complete overwrite for this path. More specifically, if there is a write at\r\n * a higher path, this will return the child of that write relative to the write and this path.\r\n * Returns null if there is no write at this path.\r\n *\r\n */\r\nfunction writeTreeRefShadowingWrite(writeTreeRef, path) {\r\n return writeTreeShadowingWrite(writeTreeRef.writeTree, pathChild(writeTreeRef.treePath, path));\r\n}\r\n/**\r\n * This method is used when processing child remove events on a query. If we can, we pull in children that were outside\r\n * the window, but may now be in the window\r\n */\r\nfunction writeTreeRefCalcIndexedSlice(writeTreeRef, completeServerData, startPost, count, reverse, index) {\r\n return writeTreeCalcIndexedSlice(writeTreeRef.writeTree, writeTreeRef.treePath, completeServerData, startPost, count, reverse, index);\r\n}\r\n/**\r\n * Returns a complete child for a given server snap after applying all user writes or null if there is no\r\n * complete child for this ChildKey.\r\n */\r\nfunction writeTreeRefCalcCompleteChild(writeTreeRef, childKey, existingServerCache) {\r\n return writeTreeCalcCompleteChild(writeTreeRef.writeTree, writeTreeRef.treePath, childKey, existingServerCache);\r\n}\r\n/**\r\n * Return a WriteTreeRef for a child.\r\n */\r\nfunction writeTreeRefChild(writeTreeRef, childName) {\r\n return newWriteTreeRef(pathChild(writeTreeRef.treePath, childName), writeTreeRef.writeTree);\r\n}\r\nfunction newWriteTreeRef(path, writeTree) {\r\n return {\r\n treePath: path,\r\n writeTree: writeTree\r\n };\r\n}\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nvar ChildChangeAccumulator = /** @class */ (function () {\r\n function ChildChangeAccumulator() {\r\n this.changeMap = new Map();\r\n }\r\n ChildChangeAccumulator.prototype.trackChildChange = function (change) {\r\n var type = change.type;\r\n var childKey = change.childName;\r\n assert(type === \"child_added\" /* CHILD_ADDED */ ||\r\n type === \"child_changed\" /* CHILD_CHANGED */ ||\r\n type === \"child_removed\" /* CHILD_REMOVED */, 'Only child changes supported for tracking');\r\n assert(childKey !== '.priority', 'Only non-priority child changes can be tracked.');\r\n var oldChange = this.changeMap.get(childKey);\r\n if (oldChange) {\r\n var oldType = oldChange.type;\r\n if (type === \"child_added\" /* CHILD_ADDED */ &&\r\n oldType === \"child_removed\" /* CHILD_REMOVED */) {\r\n this.changeMap.set(childKey, changeChildChanged(childKey, change.snapshotNode, oldChange.snapshotNode));\r\n }\r\n else if (type === \"child_removed\" /* CHILD_REMOVED */ &&\r\n oldType === \"child_added\" /* CHILD_ADDED */) {\r\n this.changeMap.delete(childKey);\r\n }\r\n else if (type === \"child_removed\" /* CHILD_REMOVED */ &&\r\n oldType === \"child_changed\" /* CHILD_CHANGED */) {\r\n this.changeMap.set(childKey, changeChildRemoved(childKey, oldChange.oldSnap));\r\n }\r\n else if (type === \"child_changed\" /* CHILD_CHANGED */ &&\r\n oldType === \"child_added\" /* CHILD_ADDED */) {\r\n this.changeMap.set(childKey, changeChildAdded(childKey, change.snapshotNode));\r\n }\r\n else if (type === \"child_changed\" /* CHILD_CHANGED */ &&\r\n oldType === \"child_changed\" /* CHILD_CHANGED */) {\r\n this.changeMap.set(childKey, changeChildChanged(childKey, change.snapshotNode, oldChange.oldSnap));\r\n }\r\n else {\r\n throw assertionError('Illegal combination of changes: ' +\r\n change +\r\n ' occurred after ' +\r\n oldChange);\r\n }\r\n }\r\n else {\r\n this.changeMap.set(childKey, change);\r\n }\r\n };\r\n ChildChangeAccumulator.prototype.getChanges = function () {\r\n return Array.from(this.changeMap.values());\r\n };\r\n return ChildChangeAccumulator;\r\n}());\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * An implementation of CompleteChildSource that never returns any additional children\r\n */\r\n// eslint-disable-next-line @typescript-eslint/naming-convention\r\nvar NoCompleteChildSource_ = /** @class */ (function () {\r\n function NoCompleteChildSource_() {\r\n }\r\n NoCompleteChildSource_.prototype.getCompleteChild = function (childKey) {\r\n return null;\r\n };\r\n NoCompleteChildSource_.prototype.getChildAfterChild = function (index, child, reverse) {\r\n return null;\r\n };\r\n return NoCompleteChildSource_;\r\n}());\r\n/**\r\n * Singleton instance.\r\n */\r\nvar NO_COMPLETE_CHILD_SOURCE = new NoCompleteChildSource_();\r\n/**\r\n * An implementation of CompleteChildSource that uses a WriteTree in addition to any other server data or\r\n * old event caches available to calculate complete children.\r\n */\r\nvar WriteTreeCompleteChildSource = /** @class */ (function () {\r\n function WriteTreeCompleteChildSource(writes_, viewCache_, optCompleteServerCache_) {\r\n if (optCompleteServerCache_ === void 0) { optCompleteServerCache_ = null; }\r\n this.writes_ = writes_;\r\n this.viewCache_ = viewCache_;\r\n this.optCompleteServerCache_ = optCompleteServerCache_;\r\n }\r\n WriteTreeCompleteChildSource.prototype.getCompleteChild = function (childKey) {\r\n var node = this.viewCache_.eventCache;\r\n if (node.isCompleteForChild(childKey)) {\r\n return node.getNode().getImmediateChild(childKey);\r\n }\r\n else {\r\n var serverNode = this.optCompleteServerCache_ != null\r\n ? new CacheNode(this.optCompleteServerCache_, true, false)\r\n : this.viewCache_.serverCache;\r\n return writeTreeRefCalcCompleteChild(this.writes_, childKey, serverNode);\r\n }\r\n };\r\n WriteTreeCompleteChildSource.prototype.getChildAfterChild = function (index, child, reverse) {\r\n var completeServerData = this.optCompleteServerCache_ != null\r\n ? this.optCompleteServerCache_\r\n : viewCacheGetCompleteServerSnap(this.viewCache_);\r\n var nodes = writeTreeRefCalcIndexedSlice(this.writes_, completeServerData, child, 1, reverse, index);\r\n if (nodes.length === 0) {\r\n return null;\r\n }\r\n else {\r\n return nodes[0];\r\n }\r\n };\r\n return WriteTreeCompleteChildSource;\r\n}());\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nfunction newViewProcessor(filter) {\r\n return { filter: filter };\r\n}\r\nfunction viewProcessorAssertIndexed(viewProcessor, viewCache) {\r\n assert(viewCache.eventCache.getNode().isIndexed(viewProcessor.filter.getIndex()), 'Event snap not indexed');\r\n assert(viewCache.serverCache.getNode().isIndexed(viewProcessor.filter.getIndex()), 'Server snap not indexed');\r\n}\r\nfunction viewProcessorApplyOperation(viewProcessor, oldViewCache, operation, writesCache, completeCache) {\r\n var accumulator = new ChildChangeAccumulator();\r\n var newViewCache, filterServerNode;\r\n if (operation.type === OperationType.OVERWRITE) {\r\n var overwrite = operation;\r\n if (overwrite.source.fromUser) {\r\n newViewCache = viewProcessorApplyUserOverwrite(viewProcessor, oldViewCache, overwrite.path, overwrite.snap, writesCache, completeCache, accumulator);\r\n }\r\n else {\r\n assert(overwrite.source.fromServer, 'Unknown source.');\r\n // We filter the node if it's a tagged update or the node has been previously filtered and the\r\n // update is not at the root in which case it is ok (and necessary) to mark the node unfiltered\r\n // again\r\n filterServerNode =\r\n overwrite.source.tagged ||\r\n (oldViewCache.serverCache.isFiltered() && !pathIsEmpty(overwrite.path));\r\n newViewCache = viewProcessorApplyServerOverwrite(viewProcessor, oldViewCache, overwrite.path, overwrite.snap, writesCache, completeCache, filterServerNode, accumulator);\r\n }\r\n }\r\n else if (operation.type === OperationType.MERGE) {\r\n var merge = operation;\r\n if (merge.source.fromUser) {\r\n newViewCache = viewProcessorApplyUserMerge(viewProcessor, oldViewCache, merge.path, merge.children, writesCache, completeCache, accumulator);\r\n }\r\n else {\r\n assert(merge.source.fromServer, 'Unknown source.');\r\n // We filter the node if it's a tagged update or the node has been previously filtered\r\n filterServerNode =\r\n merge.source.tagged || oldViewCache.serverCache.isFiltered();\r\n newViewCache = viewProcessorApplyServerMerge(viewProcessor, oldViewCache, merge.path, merge.children, writesCache, completeCache, filterServerNode, accumulator);\r\n }\r\n }\r\n else if (operation.type === OperationType.ACK_USER_WRITE) {\r\n var ackUserWrite = operation;\r\n if (!ackUserWrite.revert) {\r\n newViewCache = viewProcessorAckUserWrite(viewProcessor, oldViewCache, ackUserWrite.path, ackUserWrite.affectedTree, writesCache, completeCache, accumulator);\r\n }\r\n else {\r\n newViewCache = viewProcessorRevertUserWrite(viewProcessor, oldViewCache, ackUserWrite.path, writesCache, completeCache, accumulator);\r\n }\r\n }\r\n else if (operation.type === OperationType.LISTEN_COMPLETE) {\r\n newViewCache = viewProcessorListenComplete(viewProcessor, oldViewCache, operation.path, writesCache, accumulator);\r\n }\r\n else {\r\n throw assertionError('Unknown operation type: ' + operation.type);\r\n }\r\n var changes = accumulator.getChanges();\r\n viewProcessorMaybeAddValueEvent(oldViewCache, newViewCache, changes);\r\n return { viewCache: newViewCache, changes: changes };\r\n}\r\nfunction viewProcessorMaybeAddValueEvent(oldViewCache, newViewCache, accumulator) {\r\n var eventSnap = newViewCache.eventCache;\r\n if (eventSnap.isFullyInitialized()) {\r\n var isLeafOrEmpty = eventSnap.getNode().isLeafNode() || eventSnap.getNode().isEmpty();\r\n var oldCompleteSnap = viewCacheGetCompleteEventSnap(oldViewCache);\r\n if (accumulator.length > 0 ||\r\n !oldViewCache.eventCache.isFullyInitialized() ||\r\n (isLeafOrEmpty && !eventSnap.getNode().equals(oldCompleteSnap)) ||\r\n !eventSnap.getNode().getPriority().equals(oldCompleteSnap.getPriority())) {\r\n accumulator.push(changeValue(viewCacheGetCompleteEventSnap(newViewCache)));\r\n }\r\n }\r\n}\r\nfunction viewProcessorGenerateEventCacheAfterServerEvent(viewProcessor, viewCache, changePath, writesCache, source, accumulator) {\r\n var oldEventSnap = viewCache.eventCache;\r\n if (writeTreeRefShadowingWrite(writesCache, changePath) != null) {\r\n // we have a shadowing write, ignore changes\r\n return viewCache;\r\n }\r\n else {\r\n var newEventCache = void 0, serverNode = void 0;\r\n if (pathIsEmpty(changePath)) {\r\n // TODO: figure out how this plays with \"sliding ack windows\"\r\n assert(viewCache.serverCache.isFullyInitialized(), 'If change path is empty, we must have complete server data');\r\n if (viewCache.serverCache.isFiltered()) {\r\n // We need to special case this, because we need to only apply writes to complete children, or\r\n // we might end up raising events for incomplete children. If the server data is filtered deep\r\n // writes cannot be guaranteed to be complete\r\n var serverCache = viewCacheGetCompleteServerSnap(viewCache);\r\n var completeChildren = serverCache instanceof ChildrenNode\r\n ? serverCache\r\n : ChildrenNode.EMPTY_NODE;\r\n var completeEventChildren = writeTreeRefCalcCompleteEventChildren(writesCache, completeChildren);\r\n newEventCache = viewProcessor.filter.updateFullNode(viewCache.eventCache.getNode(), completeEventChildren, accumulator);\r\n }\r\n else {\r\n var completeNode = writeTreeRefCalcCompleteEventCache(writesCache, viewCacheGetCompleteServerSnap(viewCache));\r\n newEventCache = viewProcessor.filter.updateFullNode(viewCache.eventCache.getNode(), completeNode, accumulator);\r\n }\r\n }\r\n else {\r\n var childKey = pathGetFront(changePath);\r\n if (childKey === '.priority') {\r\n assert(pathGetLength(changePath) === 1, \"Can't have a priority with additional path components\");\r\n var oldEventNode = oldEventSnap.getNode();\r\n serverNode = viewCache.serverCache.getNode();\r\n // we might have overwrites for this priority\r\n var updatedPriority = writeTreeRefCalcEventCacheAfterServerOverwrite(writesCache, changePath, oldEventNode, serverNode);\r\n if (updatedPriority != null) {\r\n newEventCache = viewProcessor.filter.updatePriority(oldEventNode, updatedPriority);\r\n }\r\n else {\r\n // priority didn't change, keep old node\r\n newEventCache = oldEventSnap.getNode();\r\n }\r\n }\r\n else {\r\n var childChangePath = pathPopFront(changePath);\r\n // update child\r\n var newEventChild = void 0;\r\n if (oldEventSnap.isCompleteForChild(childKey)) {\r\n serverNode = viewCache.serverCache.getNode();\r\n var eventChildUpdate = writeTreeRefCalcEventCacheAfterServerOverwrite(writesCache, changePath, oldEventSnap.getNode(), serverNode);\r\n if (eventChildUpdate != null) {\r\n newEventChild = oldEventSnap\r\n .getNode()\r\n .getImmediateChild(childKey)\r\n .updateChild(childChangePath, eventChildUpdate);\r\n }\r\n else {\r\n // Nothing changed, just keep the old child\r\n newEventChild = oldEventSnap.getNode().getImmediateChild(childKey);\r\n }\r\n }\r\n else {\r\n newEventChild = writeTreeRefCalcCompleteChild(writesCache, childKey, viewCache.serverCache);\r\n }\r\n if (newEventChild != null) {\r\n newEventCache = viewProcessor.filter.updateChild(oldEventSnap.getNode(), childKey, newEventChild, childChangePath, source, accumulator);\r\n }\r\n else {\r\n // no complete child available or no change\r\n newEventCache = oldEventSnap.getNode();\r\n }\r\n }\r\n }\r\n return viewCacheUpdateEventSnap(viewCache, newEventCache, oldEventSnap.isFullyInitialized() || pathIsEmpty(changePath), viewProcessor.filter.filtersNodes());\r\n }\r\n}\r\nfunction viewProcessorApplyServerOverwrite(viewProcessor, oldViewCache, changePath, changedSnap, writesCache, completeCache, filterServerNode, accumulator) {\r\n var oldServerSnap = oldViewCache.serverCache;\r\n var newServerCache;\r\n var serverFilter = filterServerNode\r\n ? viewProcessor.filter\r\n : viewProcessor.filter.getIndexedFilter();\r\n if (pathIsEmpty(changePath)) {\r\n newServerCache = serverFilter.updateFullNode(oldServerSnap.getNode(), changedSnap, null);\r\n }\r\n else if (serverFilter.filtersNodes() && !oldServerSnap.isFiltered()) {\r\n // we want to filter the server node, but we didn't filter the server node yet, so simulate a full update\r\n var newServerNode = oldServerSnap\r\n .getNode()\r\n .updateChild(changePath, changedSnap);\r\n newServerCache = serverFilter.updateFullNode(oldServerSnap.getNode(), newServerNode, null);\r\n }\r\n else {\r\n var childKey = pathGetFront(changePath);\r\n if (!oldServerSnap.isCompleteForPath(changePath) &&\r\n pathGetLength(changePath) > 1) {\r\n // We don't update incomplete nodes with updates intended for other listeners\r\n return oldViewCache;\r\n }\r\n var childChangePath = pathPopFront(changePath);\r\n var childNode = oldServerSnap.getNode().getImmediateChild(childKey);\r\n var newChildNode = childNode.updateChild(childChangePath, changedSnap);\r\n if (childKey === '.priority') {\r\n newServerCache = serverFilter.updatePriority(oldServerSnap.getNode(), newChildNode);\r\n }\r\n else {\r\n newServerCache = serverFilter.updateChild(oldServerSnap.getNode(), childKey, newChildNode, childChangePath, NO_COMPLETE_CHILD_SOURCE, null);\r\n }\r\n }\r\n var newViewCache = viewCacheUpdateServerSnap(oldViewCache, newServerCache, oldServerSnap.isFullyInitialized() || pathIsEmpty(changePath), serverFilter.filtersNodes());\r\n var source = new WriteTreeCompleteChildSource(writesCache, newViewCache, completeCache);\r\n return viewProcessorGenerateEventCacheAfterServerEvent(viewProcessor, newViewCache, changePath, writesCache, source, accumulator);\r\n}\r\nfunction viewProcessorApplyUserOverwrite(viewProcessor, oldViewCache, changePath, changedSnap, writesCache, completeCache, accumulator) {\r\n var oldEventSnap = oldViewCache.eventCache;\r\n var newViewCache, newEventCache;\r\n var source = new WriteTreeCompleteChildSource(writesCache, oldViewCache, completeCache);\r\n if (pathIsEmpty(changePath)) {\r\n newEventCache = viewProcessor.filter.updateFullNode(oldViewCache.eventCache.getNode(), changedSnap, accumulator);\r\n newViewCache = viewCacheUpdateEventSnap(oldViewCache, newEventCache, true, viewProcessor.filter.filtersNodes());\r\n }\r\n else {\r\n var childKey = pathGetFront(changePath);\r\n if (childKey === '.priority') {\r\n newEventCache = viewProcessor.filter.updatePriority(oldViewCache.eventCache.getNode(), changedSnap);\r\n newViewCache = viewCacheUpdateEventSnap(oldViewCache, newEventCache, oldEventSnap.isFullyInitialized(), oldEventSnap.isFiltered());\r\n }\r\n else {\r\n var childChangePath = pathPopFront(changePath);\r\n var oldChild = oldEventSnap.getNode().getImmediateChild(childKey);\r\n var newChild = void 0;\r\n if (pathIsEmpty(childChangePath)) {\r\n // Child overwrite, we can replace the child\r\n newChild = changedSnap;\r\n }\r\n else {\r\n var childNode = source.getCompleteChild(childKey);\r\n if (childNode != null) {\r\n if (pathGetBack(childChangePath) === '.priority' &&\r\n childNode.getChild(pathParent(childChangePath)).isEmpty()) {\r\n // This is a priority update on an empty node. If this node exists on the server, the\r\n // server will send down the priority in the update, so ignore for now\r\n newChild = childNode;\r\n }\r\n else {\r\n newChild = childNode.updateChild(childChangePath, changedSnap);\r\n }\r\n }\r\n else {\r\n // There is no complete child node available\r\n newChild = ChildrenNode.EMPTY_NODE;\r\n }\r\n }\r\n if (!oldChild.equals(newChild)) {\r\n var newEventSnap = viewProcessor.filter.updateChild(oldEventSnap.getNode(), childKey, newChild, childChangePath, source, accumulator);\r\n newViewCache = viewCacheUpdateEventSnap(oldViewCache, newEventSnap, oldEventSnap.isFullyInitialized(), viewProcessor.filter.filtersNodes());\r\n }\r\n else {\r\n newViewCache = oldViewCache;\r\n }\r\n }\r\n }\r\n return newViewCache;\r\n}\r\nfunction viewProcessorCacheHasChild(viewCache, childKey) {\r\n return viewCache.eventCache.isCompleteForChild(childKey);\r\n}\r\nfunction viewProcessorApplyUserMerge(viewProcessor, viewCache, path, changedChildren, writesCache, serverCache, accumulator) {\r\n // HACK: In the case of a limit query, there may be some changes that bump things out of the\r\n // window leaving room for new items. It's important we process these changes first, so we\r\n // iterate the changes twice, first processing any that affect items currently in view.\r\n // TODO: I consider an item \"in view\" if cacheHasChild is true, which checks both the server\r\n // and event snap. I'm not sure if this will result in edge cases when a child is in one but\r\n // not the other.\r\n var curViewCache = viewCache;\r\n changedChildren.foreach(function (relativePath, childNode) {\r\n var writePath = pathChild(path, relativePath);\r\n if (viewProcessorCacheHasChild(viewCache, pathGetFront(writePath))) {\r\n curViewCache = viewProcessorApplyUserOverwrite(viewProcessor, curViewCache, writePath, childNode, writesCache, serverCache, accumulator);\r\n }\r\n });\r\n changedChildren.foreach(function (relativePath, childNode) {\r\n var writePath = pathChild(path, relativePath);\r\n if (!viewProcessorCacheHasChild(viewCache, pathGetFront(writePath))) {\r\n curViewCache = viewProcessorApplyUserOverwrite(viewProcessor, curViewCache, writePath, childNode, writesCache, serverCache, accumulator);\r\n }\r\n });\r\n return curViewCache;\r\n}\r\nfunction viewProcessorApplyMerge(viewProcessor, node, merge) {\r\n merge.foreach(function (relativePath, childNode) {\r\n node = node.updateChild(relativePath, childNode);\r\n });\r\n return node;\r\n}\r\nfunction viewProcessorApplyServerMerge(viewProcessor, viewCache, path, changedChildren, writesCache, serverCache, filterServerNode, accumulator) {\r\n // If we don't have a cache yet, this merge was intended for a previously listen in the same location. Ignore it and\r\n // wait for the complete data update coming soon.\r\n if (viewCache.serverCache.getNode().isEmpty() &&\r\n !viewCache.serverCache.isFullyInitialized()) {\r\n return viewCache;\r\n }\r\n // HACK: In the case of a limit query, there may be some changes that bump things out of the\r\n // window leaving room for new items. It's important we process these changes first, so we\r\n // iterate the changes twice, first processing any that affect items currently in view.\r\n // TODO: I consider an item \"in view\" if cacheHasChild is true, which checks both the server\r\n // and event snap. I'm not sure if this will result in edge cases when a child is in one but\r\n // not the other.\r\n var curViewCache = viewCache;\r\n var viewMergeTree;\r\n if (pathIsEmpty(path)) {\r\n viewMergeTree = changedChildren;\r\n }\r\n else {\r\n viewMergeTree = new ImmutableTree(null).setTree(path, changedChildren);\r\n }\r\n var serverNode = viewCache.serverCache.getNode();\r\n viewMergeTree.children.inorderTraversal(function (childKey, childTree) {\r\n if (serverNode.hasChild(childKey)) {\r\n var serverChild = viewCache.serverCache\r\n .getNode()\r\n .getImmediateChild(childKey);\r\n var newChild = viewProcessorApplyMerge(viewProcessor, serverChild, childTree);\r\n curViewCache = viewProcessorApplyServerOverwrite(viewProcessor, curViewCache, new Path(childKey), newChild, writesCache, serverCache, filterServerNode, accumulator);\r\n }\r\n });\r\n viewMergeTree.children.inorderTraversal(function (childKey, childMergeTree) {\r\n var isUnknownDeepMerge = !viewCache.serverCache.isCompleteForChild(childKey) &&\r\n childMergeTree.value === undefined;\r\n if (!serverNode.hasChild(childKey) && !isUnknownDeepMerge) {\r\n var serverChild = viewCache.serverCache\r\n .getNode()\r\n .getImmediateChild(childKey);\r\n var newChild = viewProcessorApplyMerge(viewProcessor, serverChild, childMergeTree);\r\n curViewCache = viewProcessorApplyServerOverwrite(viewProcessor, curViewCache, new Path(childKey), newChild, writesCache, serverCache, filterServerNode, accumulator);\r\n }\r\n });\r\n return curViewCache;\r\n}\r\nfunction viewProcessorAckUserWrite(viewProcessor, viewCache, ackPath, affectedTree, writesCache, completeCache, accumulator) {\r\n if (writeTreeRefShadowingWrite(writesCache, ackPath) != null) {\r\n return viewCache;\r\n }\r\n // Only filter server node if it is currently filtered\r\n var filterServerNode = viewCache.serverCache.isFiltered();\r\n // Essentially we'll just get our existing server cache for the affected paths and re-apply it as a server update\r\n // now that it won't be shadowed.\r\n var serverCache = viewCache.serverCache;\r\n if (affectedTree.value != null) {\r\n // This is an overwrite.\r\n if ((pathIsEmpty(ackPath) && serverCache.isFullyInitialized()) ||\r\n serverCache.isCompleteForPath(ackPath)) {\r\n return viewProcessorApplyServerOverwrite(viewProcessor, viewCache, ackPath, serverCache.getNode().getChild(ackPath), writesCache, completeCache, filterServerNode, accumulator);\r\n }\r\n else if (pathIsEmpty(ackPath)) {\r\n // This is a goofy edge case where we are acking data at this location but don't have full data. We\r\n // should just re-apply whatever we have in our cache as a merge.\r\n var changedChildren_1 = new ImmutableTree(null);\r\n serverCache.getNode().forEachChild(KEY_INDEX, function (name, node) {\r\n changedChildren_1 = changedChildren_1.set(new Path(name), node);\r\n });\r\n return viewProcessorApplyServerMerge(viewProcessor, viewCache, ackPath, changedChildren_1, writesCache, completeCache, filterServerNode, accumulator);\r\n }\r\n else {\r\n return viewCache;\r\n }\r\n }\r\n else {\r\n // This is a merge.\r\n var changedChildren_2 = new ImmutableTree(null);\r\n affectedTree.foreach(function (mergePath, value) {\r\n var serverCachePath = pathChild(ackPath, mergePath);\r\n if (serverCache.isCompleteForPath(serverCachePath)) {\r\n changedChildren_2 = changedChildren_2.set(mergePath, serverCache.getNode().getChild(serverCachePath));\r\n }\r\n });\r\n return viewProcessorApplyServerMerge(viewProcessor, viewCache, ackPath, changedChildren_2, writesCache, completeCache, filterServerNode, accumulator);\r\n }\r\n}\r\nfunction viewProcessorListenComplete(viewProcessor, viewCache, path, writesCache, accumulator) {\r\n var oldServerNode = viewCache.serverCache;\r\n var newViewCache = viewCacheUpdateServerSnap(viewCache, oldServerNode.getNode(), oldServerNode.isFullyInitialized() || pathIsEmpty(path), oldServerNode.isFiltered());\r\n return viewProcessorGenerateEventCacheAfterServerEvent(viewProcessor, newViewCache, path, writesCache, NO_COMPLETE_CHILD_SOURCE, accumulator);\r\n}\r\nfunction viewProcessorRevertUserWrite(viewProcessor, viewCache, path, writesCache, completeServerCache, accumulator) {\r\n var complete;\r\n if (writeTreeRefShadowingWrite(writesCache, path) != null) {\r\n return viewCache;\r\n }\r\n else {\r\n var source = new WriteTreeCompleteChildSource(writesCache, viewCache, completeServerCache);\r\n var oldEventCache = viewCache.eventCache.getNode();\r\n var newEventCache = void 0;\r\n if (pathIsEmpty(path) || pathGetFront(path) === '.priority') {\r\n var newNode = void 0;\r\n if (viewCache.serverCache.isFullyInitialized()) {\r\n newNode = writeTreeRefCalcCompleteEventCache(writesCache, viewCacheGetCompleteServerSnap(viewCache));\r\n }\r\n else {\r\n var serverChildren = viewCache.serverCache.getNode();\r\n assert(serverChildren instanceof ChildrenNode, 'serverChildren would be complete if leaf node');\r\n newNode = writeTreeRefCalcCompleteEventChildren(writesCache, serverChildren);\r\n }\r\n newNode = newNode;\r\n newEventCache = viewProcessor.filter.updateFullNode(oldEventCache, newNode, accumulator);\r\n }\r\n else {\r\n var childKey = pathGetFront(path);\r\n var newChild = writeTreeRefCalcCompleteChild(writesCache, childKey, viewCache.serverCache);\r\n if (newChild == null &&\r\n viewCache.serverCache.isCompleteForChild(childKey)) {\r\n newChild = oldEventCache.getImmediateChild(childKey);\r\n }\r\n if (newChild != null) {\r\n newEventCache = viewProcessor.filter.updateChild(oldEventCache, childKey, newChild, pathPopFront(path), source, accumulator);\r\n }\r\n else if (viewCache.eventCache.getNode().hasChild(childKey)) {\r\n // No complete child available, delete the existing one, if any\r\n newEventCache = viewProcessor.filter.updateChild(oldEventCache, childKey, ChildrenNode.EMPTY_NODE, pathPopFront(path), source, accumulator);\r\n }\r\n else {\r\n newEventCache = oldEventCache;\r\n }\r\n if (newEventCache.isEmpty() &&\r\n viewCache.serverCache.isFullyInitialized()) {\r\n // We might have reverted all child writes. Maybe the old event was a leaf node\r\n complete = writeTreeRefCalcCompleteEventCache(writesCache, viewCacheGetCompleteServerSnap(viewCache));\r\n if (complete.isLeafNode()) {\r\n newEventCache = viewProcessor.filter.updateFullNode(newEventCache, complete, accumulator);\r\n }\r\n }\r\n }\r\n complete =\r\n viewCache.serverCache.isFullyInitialized() ||\r\n writeTreeRefShadowingWrite(writesCache, newEmptyPath()) != null;\r\n return viewCacheUpdateEventSnap(viewCache, newEventCache, complete, viewProcessor.filter.filtersNodes());\r\n }\r\n}\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * A view represents a specific location and query that has 1 or more event registrations.\r\n *\r\n * It does several things:\r\n * - Maintains the list of event registrations for this location/query.\r\n * - Maintains a cache of the data visible for this location/query.\r\n * - Applies new operations (via applyOperation), updates the cache, and based on the event\r\n * registrations returns the set of events to be raised.\r\n */\r\nvar View = /** @class */ (function () {\r\n function View(query_, initialViewCache) {\r\n this.query_ = query_;\r\n this.eventRegistrations_ = [];\r\n var params = this.query_._queryParams;\r\n var indexFilter = new IndexedFilter(params.getIndex());\r\n var filter = queryParamsGetNodeFilter(params);\r\n this.processor_ = newViewProcessor(filter);\r\n var initialServerCache = initialViewCache.serverCache;\r\n var initialEventCache = initialViewCache.eventCache;\r\n // Don't filter server node with other filter than index, wait for tagged listen\r\n var serverSnap = indexFilter.updateFullNode(ChildrenNode.EMPTY_NODE, initialServerCache.getNode(), null);\r\n var eventSnap = filter.updateFullNode(ChildrenNode.EMPTY_NODE, initialEventCache.getNode(), null);\r\n var newServerCache = new CacheNode(serverSnap, initialServerCache.isFullyInitialized(), indexFilter.filtersNodes());\r\n var newEventCache = new CacheNode(eventSnap, initialEventCache.isFullyInitialized(), filter.filtersNodes());\r\n this.viewCache_ = newViewCache(newEventCache, newServerCache);\r\n this.eventGenerator_ = new EventGenerator(this.query_);\r\n }\r\n Object.defineProperty(View.prototype, \"query\", {\r\n get: function () {\r\n return this.query_;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n return View;\r\n}());\r\nfunction viewGetServerCache(view) {\r\n return view.viewCache_.serverCache.getNode();\r\n}\r\nfunction viewGetCompleteNode(view) {\r\n return viewCacheGetCompleteEventSnap(view.viewCache_);\r\n}\r\nfunction viewGetCompleteServerCache(view, path) {\r\n var cache = viewCacheGetCompleteServerSnap(view.viewCache_);\r\n if (cache) {\r\n // If this isn't a \"loadsAllData\" view, then cache isn't actually a complete cache and\r\n // we need to see if it contains the child we're interested in.\r\n if (view.query._queryParams.loadsAllData() ||\r\n (!pathIsEmpty(path) &&\r\n !cache.getImmediateChild(pathGetFront(path)).isEmpty())) {\r\n return cache.getChild(path);\r\n }\r\n }\r\n return null;\r\n}\r\nfunction viewIsEmpty(view) {\r\n return view.eventRegistrations_.length === 0;\r\n}\r\nfunction viewAddEventRegistration(view, eventRegistration) {\r\n view.eventRegistrations_.push(eventRegistration);\r\n}\r\n/**\r\n * @param eventRegistration - If null, remove all callbacks.\r\n * @param cancelError - If a cancelError is provided, appropriate cancel events will be returned.\r\n * @returns Cancel events, if cancelError was provided.\r\n */\r\nfunction viewRemoveEventRegistration(view, eventRegistration, cancelError) {\r\n var cancelEvents = [];\r\n if (cancelError) {\r\n assert(eventRegistration == null, 'A cancel should cancel all event registrations.');\r\n var path_1 = view.query._path;\r\n view.eventRegistrations_.forEach(function (registration) {\r\n var maybeEvent = registration.createCancelEvent(cancelError, path_1);\r\n if (maybeEvent) {\r\n cancelEvents.push(maybeEvent);\r\n }\r\n });\r\n }\r\n if (eventRegistration) {\r\n var remaining = [];\r\n for (var i = 0; i < view.eventRegistrations_.length; ++i) {\r\n var existing = view.eventRegistrations_[i];\r\n if (!existing.matches(eventRegistration)) {\r\n remaining.push(existing);\r\n }\r\n else if (eventRegistration.hasAnyCallback()) {\r\n // We're removing just this one\r\n remaining = remaining.concat(view.eventRegistrations_.slice(i + 1));\r\n break;\r\n }\r\n }\r\n view.eventRegistrations_ = remaining;\r\n }\r\n else {\r\n view.eventRegistrations_ = [];\r\n }\r\n return cancelEvents;\r\n}\r\n/**\r\n * Applies the given Operation, updates our cache, and returns the appropriate events.\r\n */\r\nfunction viewApplyOperation(view, operation, writesCache, completeServerCache) {\r\n if (operation.type === OperationType.MERGE &&\r\n operation.source.queryId !== null) {\r\n assert(viewCacheGetCompleteServerSnap(view.viewCache_), 'We should always have a full cache before handling merges');\r\n assert(viewCacheGetCompleteEventSnap(view.viewCache_), 'Missing event cache, even though we have a server cache');\r\n }\r\n var oldViewCache = view.viewCache_;\r\n var result = viewProcessorApplyOperation(view.processor_, oldViewCache, operation, writesCache, completeServerCache);\r\n viewProcessorAssertIndexed(view.processor_, result.viewCache);\r\n assert(result.viewCache.serverCache.isFullyInitialized() ||\r\n !oldViewCache.serverCache.isFullyInitialized(), 'Once a server snap is complete, it should never go back');\r\n view.viewCache_ = result.viewCache;\r\n return viewGenerateEventsForChanges_(view, result.changes, result.viewCache.eventCache.getNode(), null);\r\n}\r\nfunction viewGetInitialEvents(view, registration) {\r\n var eventSnap = view.viewCache_.eventCache;\r\n var initialChanges = [];\r\n if (!eventSnap.getNode().isLeafNode()) {\r\n var eventNode = eventSnap.getNode();\r\n eventNode.forEachChild(PRIORITY_INDEX, function (key, childNode) {\r\n initialChanges.push(changeChildAdded(key, childNode));\r\n });\r\n }\r\n if (eventSnap.isFullyInitialized()) {\r\n initialChanges.push(changeValue(eventSnap.getNode()));\r\n }\r\n return viewGenerateEventsForChanges_(view, initialChanges, eventSnap.getNode(), registration);\r\n}\r\nfunction viewGenerateEventsForChanges_(view, changes, eventCache, eventRegistration) {\r\n var registrations = eventRegistration\r\n ? [eventRegistration]\r\n : view.eventRegistrations_;\r\n return eventGeneratorGenerateEventsForChanges(view.eventGenerator_, changes, eventCache, registrations);\r\n}\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nvar referenceConstructor$1;\r\n/**\r\n * SyncPoint represents a single location in a SyncTree with 1 or more event registrations, meaning we need to\r\n * maintain 1 or more Views at this location to cache server data and raise appropriate events for server changes\r\n * and user writes (set, transaction, update).\r\n *\r\n * It's responsible for:\r\n * - Maintaining the set of 1 or more views necessary at this location (a SyncPoint with 0 views should be removed).\r\n * - Proxying user / server operations to the views as appropriate (i.e. applyServerOverwrite,\r\n * applyUserOverwrite, etc.)\r\n */\r\nvar SyncPoint = /** @class */ (function () {\r\n function SyncPoint() {\r\n /**\r\n * The Views being tracked at this location in the tree, stored as a map where the key is a\r\n * queryId and the value is the View for that query.\r\n *\r\n * NOTE: This list will be quite small (usually 1, but perhaps 2 or 3; any more is an odd use case).\r\n */\r\n this.views = new Map();\r\n }\r\n return SyncPoint;\r\n}());\r\nfunction syncPointSetReferenceConstructor(val) {\r\n assert(!referenceConstructor$1, '__referenceConstructor has already been defined');\r\n referenceConstructor$1 = val;\r\n}\r\nfunction syncPointGetReferenceConstructor() {\r\n assert(referenceConstructor$1, 'Reference.ts has not been loaded');\r\n return referenceConstructor$1;\r\n}\r\nfunction syncPointIsEmpty(syncPoint) {\r\n return syncPoint.views.size === 0;\r\n}\r\nfunction syncPointApplyOperation(syncPoint, operation, writesCache, optCompleteServerCache) {\r\n var e_1, _a;\r\n var queryId = operation.source.queryId;\r\n if (queryId !== null) {\r\n var view = syncPoint.views.get(queryId);\r\n assert(view != null, 'SyncTree gave us an op for an invalid query.');\r\n return viewApplyOperation(view, operation, writesCache, optCompleteServerCache);\r\n }\r\n else {\r\n var events = [];\r\n try {\r\n for (var _b = __values(syncPoint.views.values()), _c = _b.next(); !_c.done; _c = _b.next()) {\r\n var view = _c.value;\r\n events = events.concat(viewApplyOperation(view, operation, writesCache, optCompleteServerCache));\r\n }\r\n }\r\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\r\n finally {\r\n try {\r\n if (_c && !_c.done && (_a = _b.return)) _a.call(_b);\r\n }\r\n finally { if (e_1) throw e_1.error; }\r\n }\r\n return events;\r\n }\r\n}\r\n/**\r\n * Get a view for the specified query.\r\n *\r\n * @param query - The query to return a view for\r\n * @param writesCache\r\n * @param serverCache\r\n * @param serverCacheComplete\r\n * @returns Events to raise.\r\n */\r\nfunction syncPointGetView(syncPoint, query, writesCache, serverCache, serverCacheComplete) {\r\n var queryId = query._queryIdentifier;\r\n var view = syncPoint.views.get(queryId);\r\n if (!view) {\r\n // TODO: make writesCache take flag for complete server node\r\n var eventCache = writeTreeRefCalcCompleteEventCache(writesCache, serverCacheComplete ? serverCache : null);\r\n var eventCacheComplete = false;\r\n if (eventCache) {\r\n eventCacheComplete = true;\r\n }\r\n else if (serverCache instanceof ChildrenNode) {\r\n eventCache = writeTreeRefCalcCompleteEventChildren(writesCache, serverCache);\r\n eventCacheComplete = false;\r\n }\r\n else {\r\n eventCache = ChildrenNode.EMPTY_NODE;\r\n eventCacheComplete = false;\r\n }\r\n var viewCache = newViewCache(new CacheNode(eventCache, eventCacheComplete, false), new CacheNode(serverCache, serverCacheComplete, false));\r\n return new View(query, viewCache);\r\n }\r\n return view;\r\n}\r\n/**\r\n * Add an event callback for the specified query.\r\n *\r\n * @param query\r\n * @param eventRegistration\r\n * @param writesCache\r\n * @param serverCache - Complete server cache, if we have it.\r\n * @param serverCacheComplete\r\n * @returns Events to raise.\r\n */\r\nfunction syncPointAddEventRegistration(syncPoint, query, eventRegistration, writesCache, serverCache, serverCacheComplete) {\r\n var view = syncPointGetView(syncPoint, query, writesCache, serverCache, serverCacheComplete);\r\n if (!syncPoint.views.has(query._queryIdentifier)) {\r\n syncPoint.views.set(query._queryIdentifier, view);\r\n }\r\n // This is guaranteed to exist now, we just created anything that was missing\r\n viewAddEventRegistration(view, eventRegistration);\r\n return viewGetInitialEvents(view, eventRegistration);\r\n}\r\n/**\r\n * Remove event callback(s). Return cancelEvents if a cancelError is specified.\r\n *\r\n * If query is the default query, we'll check all views for the specified eventRegistration.\r\n * If eventRegistration is null, we'll remove all callbacks for the specified view(s).\r\n *\r\n * @param eventRegistration - If null, remove all callbacks.\r\n * @param cancelError - If a cancelError is provided, appropriate cancel events will be returned.\r\n * @returns removed queries and any cancel events\r\n */\r\nfunction syncPointRemoveEventRegistration(syncPoint, query, eventRegistration, cancelError) {\r\n var e_2, _a;\r\n var queryId = query._queryIdentifier;\r\n var removed = [];\r\n var cancelEvents = [];\r\n var hadCompleteView = syncPointHasCompleteView(syncPoint);\r\n if (queryId === 'default') {\r\n try {\r\n // When you do ref.off(...), we search all views for the registration to remove.\r\n for (var _b = __values(syncPoint.views.entries()), _c = _b.next(); !_c.done; _c = _b.next()) {\r\n var _d = __read(_c.value, 2), viewQueryId = _d[0], view = _d[1];\r\n cancelEvents = cancelEvents.concat(viewRemoveEventRegistration(view, eventRegistration, cancelError));\r\n if (viewIsEmpty(view)) {\r\n syncPoint.views.delete(viewQueryId);\r\n // We'll deal with complete views later.\r\n if (!view.query._queryParams.loadsAllData()) {\r\n removed.push(view.query);\r\n }\r\n }\r\n }\r\n }\r\n catch (e_2_1) { e_2 = { error: e_2_1 }; }\r\n finally {\r\n try {\r\n if (_c && !_c.done && (_a = _b.return)) _a.call(_b);\r\n }\r\n finally { if (e_2) throw e_2.error; }\r\n }\r\n }\r\n else {\r\n // remove the callback from the specific view.\r\n var view = syncPoint.views.get(queryId);\r\n if (view) {\r\n cancelEvents = cancelEvents.concat(viewRemoveEventRegistration(view, eventRegistration, cancelError));\r\n if (viewIsEmpty(view)) {\r\n syncPoint.views.delete(queryId);\r\n // We'll deal with complete views later.\r\n if (!view.query._queryParams.loadsAllData()) {\r\n removed.push(view.query);\r\n }\r\n }\r\n }\r\n }\r\n if (hadCompleteView && !syncPointHasCompleteView(syncPoint)) {\r\n // We removed our last complete view.\r\n removed.push(new (syncPointGetReferenceConstructor())(query._repo, query._path));\r\n }\r\n return { removed: removed, events: cancelEvents };\r\n}\r\nfunction syncPointGetQueryViews(syncPoint) {\r\n var e_3, _a;\r\n var result = [];\r\n try {\r\n for (var _b = __values(syncPoint.views.values()), _c = _b.next(); !_c.done; _c = _b.next()) {\r\n var view = _c.value;\r\n if (!view.query._queryParams.loadsAllData()) {\r\n result.push(view);\r\n }\r\n }\r\n }\r\n catch (e_3_1) { e_3 = { error: e_3_1 }; }\r\n finally {\r\n try {\r\n if (_c && !_c.done && (_a = _b.return)) _a.call(_b);\r\n }\r\n finally { if (e_3) throw e_3.error; }\r\n }\r\n return result;\r\n}\r\n/**\r\n * @param path - The path to the desired complete snapshot\r\n * @returns A complete cache, if it exists\r\n */\r\nfunction syncPointGetCompleteServerCache(syncPoint, path) {\r\n var e_4, _a;\r\n var serverCache = null;\r\n try {\r\n for (var _b = __values(syncPoint.views.values()), _c = _b.next(); !_c.done; _c = _b.next()) {\r\n var view = _c.value;\r\n serverCache = serverCache || viewGetCompleteServerCache(view, path);\r\n }\r\n }\r\n catch (e_4_1) { e_4 = { error: e_4_1 }; }\r\n finally {\r\n try {\r\n if (_c && !_c.done && (_a = _b.return)) _a.call(_b);\r\n }\r\n finally { if (e_4) throw e_4.error; }\r\n }\r\n return serverCache;\r\n}\r\nfunction syncPointViewForQuery(syncPoint, query) {\r\n var params = query._queryParams;\r\n if (params.loadsAllData()) {\r\n return syncPointGetCompleteView(syncPoint);\r\n }\r\n else {\r\n var queryId = query._queryIdentifier;\r\n return syncPoint.views.get(queryId);\r\n }\r\n}\r\nfunction syncPointViewExistsForQuery(syncPoint, query) {\r\n return syncPointViewForQuery(syncPoint, query) != null;\r\n}\r\nfunction syncPointHasCompleteView(syncPoint) {\r\n return syncPointGetCompleteView(syncPoint) != null;\r\n}\r\nfunction syncPointGetCompleteView(syncPoint) {\r\n var e_5, _a;\r\n try {\r\n for (var _b = __values(syncPoint.views.values()), _c = _b.next(); !_c.done; _c = _b.next()) {\r\n var view = _c.value;\r\n if (view.query._queryParams.loadsAllData()) {\r\n return view;\r\n }\r\n }\r\n }\r\n catch (e_5_1) { e_5 = { error: e_5_1 }; }\r\n finally {\r\n try {\r\n if (_c && !_c.done && (_a = _b.return)) _a.call(_b);\r\n }\r\n finally { if (e_5) throw e_5.error; }\r\n }\r\n return null;\r\n}\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nvar referenceConstructor;\r\nfunction syncTreeSetReferenceConstructor(val) {\r\n assert(!referenceConstructor, '__referenceConstructor has already been defined');\r\n referenceConstructor = val;\r\n}\r\nfunction syncTreeGetReferenceConstructor() {\r\n assert(referenceConstructor, 'Reference.ts has not been loaded');\r\n return referenceConstructor;\r\n}\r\n/**\r\n * Static tracker for next query tag.\r\n */\r\nvar syncTreeNextQueryTag_ = 1;\r\n/**\r\n * SyncTree is the central class for managing event callback registration, data caching, views\r\n * (query processing), and event generation. There are typically two SyncTree instances for\r\n * each Repo, one for the normal Firebase data, and one for the .info data.\r\n *\r\n * It has a number of responsibilities, including:\r\n * - Tracking all user event callbacks (registered via addEventRegistration() and removeEventRegistration()).\r\n * - Applying and caching data changes for user set(), transaction(), and update() calls\r\n * (applyUserOverwrite(), applyUserMerge()).\r\n * - Applying and caching data changes for server data changes (applyServerOverwrite(),\r\n * applyServerMerge()).\r\n * - Generating user-facing events for server and user changes (all of the apply* methods\r\n * return the set of events that need to be raised as a result).\r\n * - Maintaining the appropriate set of server listens to ensure we are always subscribed\r\n * to the correct set of paths and queries to satisfy the current set of user event\r\n * callbacks (listens are started/stopped using the provided listenProvider).\r\n *\r\n * NOTE: Although SyncTree tracks event callbacks and calculates events to raise, the actual\r\n * events are returned to the caller rather than raised synchronously.\r\n *\r\n */\r\nvar SyncTree = /** @class */ (function () {\r\n /**\r\n * @param listenProvider_ - Used by SyncTree to start / stop listening\r\n * to server data.\r\n */\r\n function SyncTree(listenProvider_) {\r\n this.listenProvider_ = listenProvider_;\r\n /**\r\n * Tree of SyncPoints. There's a SyncPoint at any location that has 1 or more views.\r\n */\r\n this.syncPointTree_ = new ImmutableTree(null);\r\n /**\r\n * A tree of all pending user writes (user-initiated set()'s, transaction()'s, update()'s, etc.).\r\n */\r\n this.pendingWriteTree_ = newWriteTree();\r\n this.tagToQueryMap = new Map();\r\n this.queryToTagMap = new Map();\r\n }\r\n return SyncTree;\r\n}());\r\n/**\r\n * Apply the data changes for a user-generated set() or transaction() call.\r\n *\r\n * @returns Events to raise.\r\n */\r\nfunction syncTreeApplyUserOverwrite(syncTree, path, newData, writeId, visible) {\r\n // Record pending write.\r\n writeTreeAddOverwrite(syncTree.pendingWriteTree_, path, newData, writeId, visible);\r\n if (!visible) {\r\n return [];\r\n }\r\n else {\r\n return syncTreeApplyOperationToSyncPoints_(syncTree, new Overwrite(newOperationSourceUser(), path, newData));\r\n }\r\n}\r\n/**\r\n * Apply the data from a user-generated update() call\r\n *\r\n * @returns Events to raise.\r\n */\r\nfunction syncTreeApplyUserMerge(syncTree, path, changedChildren, writeId) {\r\n // Record pending merge.\r\n writeTreeAddMerge(syncTree.pendingWriteTree_, path, changedChildren, writeId);\r\n var changeTree = ImmutableTree.fromObject(changedChildren);\r\n return syncTreeApplyOperationToSyncPoints_(syncTree, new Merge(newOperationSourceUser(), path, changeTree));\r\n}\r\n/**\r\n * Acknowledge a pending user write that was previously registered with applyUserOverwrite() or applyUserMerge().\r\n *\r\n * @param revert - True if the given write failed and needs to be reverted\r\n * @returns Events to raise.\r\n */\r\nfunction syncTreeAckUserWrite(syncTree, writeId, revert) {\r\n if (revert === void 0) { revert = false; }\r\n var write = writeTreeGetWrite(syncTree.pendingWriteTree_, writeId);\r\n var needToReevaluate = writeTreeRemoveWrite(syncTree.pendingWriteTree_, writeId);\r\n if (!needToReevaluate) {\r\n return [];\r\n }\r\n else {\r\n var affectedTree_1 = new ImmutableTree(null);\r\n if (write.snap != null) {\r\n // overwrite\r\n affectedTree_1 = affectedTree_1.set(newEmptyPath(), true);\r\n }\r\n else {\r\n each(write.children, function (pathString) {\r\n affectedTree_1 = affectedTree_1.set(new Path(pathString), true);\r\n });\r\n }\r\n return syncTreeApplyOperationToSyncPoints_(syncTree, new AckUserWrite(write.path, affectedTree_1, revert));\r\n }\r\n}\r\n/**\r\n * Apply new server data for the specified path..\r\n *\r\n * @returns Events to raise.\r\n */\r\nfunction syncTreeApplyServerOverwrite(syncTree, path, newData) {\r\n return syncTreeApplyOperationToSyncPoints_(syncTree, new Overwrite(newOperationSourceServer(), path, newData));\r\n}\r\n/**\r\n * Apply new server data to be merged in at the specified path.\r\n *\r\n * @returns Events to raise.\r\n */\r\nfunction syncTreeApplyServerMerge(syncTree, path, changedChildren) {\r\n var changeTree = ImmutableTree.fromObject(changedChildren);\r\n return syncTreeApplyOperationToSyncPoints_(syncTree, new Merge(newOperationSourceServer(), path, changeTree));\r\n}\r\n/**\r\n * Apply a listen complete for a query\r\n *\r\n * @returns Events to raise.\r\n */\r\nfunction syncTreeApplyListenComplete(syncTree, path) {\r\n return syncTreeApplyOperationToSyncPoints_(syncTree, new ListenComplete(newOperationSourceServer(), path));\r\n}\r\n/**\r\n * Apply a listen complete for a tagged query\r\n *\r\n * @returns Events to raise.\r\n */\r\nfunction syncTreeApplyTaggedListenComplete(syncTree, path, tag) {\r\n var queryKey = syncTreeQueryKeyForTag_(syncTree, tag);\r\n if (queryKey) {\r\n var r = syncTreeParseQueryKey_(queryKey);\r\n var queryPath = r.path, queryId = r.queryId;\r\n var relativePath = newRelativePath(queryPath, path);\r\n var op = new ListenComplete(newOperationSourceServerTaggedQuery(queryId), relativePath);\r\n return syncTreeApplyTaggedOperation_(syncTree, queryPath, op);\r\n }\r\n else {\r\n // We've already removed the query. No big deal, ignore the update\r\n return [];\r\n }\r\n}\r\n/**\r\n * Remove event callback(s).\r\n *\r\n * If query is the default query, we'll check all queries for the specified eventRegistration.\r\n * If eventRegistration is null, we'll remove all callbacks for the specified query/queries.\r\n *\r\n * @param eventRegistration - If null, all callbacks are removed.\r\n * @param cancelError - If a cancelError is provided, appropriate cancel events will be returned.\r\n * @returns Cancel events, if cancelError was provided.\r\n */\r\nfunction syncTreeRemoveEventRegistration(syncTree, query, eventRegistration, cancelError) {\r\n // Find the syncPoint first. Then deal with whether or not it has matching listeners\r\n var path = query._path;\r\n var maybeSyncPoint = syncTree.syncPointTree_.get(path);\r\n var cancelEvents = [];\r\n // A removal on a default query affects all queries at that location. A removal on an indexed query, even one without\r\n // other query constraints, does *not* affect all queries at that location. So this check must be for 'default', and\r\n // not loadsAllData().\r\n if (maybeSyncPoint &&\r\n (query._queryIdentifier === 'default' ||\r\n syncPointViewExistsForQuery(maybeSyncPoint, query))) {\r\n var removedAndEvents = syncPointRemoveEventRegistration(maybeSyncPoint, query, eventRegistration, cancelError);\r\n if (syncPointIsEmpty(maybeSyncPoint)) {\r\n syncTree.syncPointTree_ = syncTree.syncPointTree_.remove(path);\r\n }\r\n var removed = removedAndEvents.removed;\r\n cancelEvents = removedAndEvents.events;\r\n // We may have just removed one of many listeners and can short-circuit this whole process\r\n // We may also not have removed a default listener, in which case all of the descendant listeners should already be\r\n // properly set up.\r\n //\r\n // Since indexed queries can shadow if they don't have other query constraints, check for loadsAllData(), instead of\r\n // queryId === 'default'\r\n var removingDefault = -1 !==\r\n removed.findIndex(function (query) {\r\n return query._queryParams.loadsAllData();\r\n });\r\n var covered = syncTree.syncPointTree_.findOnPath(path, function (relativePath, parentSyncPoint) {\r\n return syncPointHasCompleteView(parentSyncPoint);\r\n });\r\n if (removingDefault && !covered) {\r\n var subtree = syncTree.syncPointTree_.subtree(path);\r\n // There are potentially child listeners. Determine what if any listens we need to send before executing the\r\n // removal\r\n if (!subtree.isEmpty()) {\r\n // We need to fold over our subtree and collect the listeners to send\r\n var newViews = syncTreeCollectDistinctViewsForSubTree_(subtree);\r\n // Ok, we've collected all the listens we need. Set them up.\r\n for (var i = 0; i < newViews.length; ++i) {\r\n var view = newViews[i], newQuery = view.query;\r\n var listener = syncTreeCreateListenerForView_(syncTree, view);\r\n syncTree.listenProvider_.startListening(syncTreeQueryForListening_(newQuery), syncTreeTagForQuery_(syncTree, newQuery), listener.hashFn, listener.onComplete);\r\n }\r\n }\r\n }\r\n // If we removed anything and we're not covered by a higher up listen, we need to stop listening on this query\r\n // The above block has us covered in terms of making sure we're set up on listens lower in the tree.\r\n // Also, note that if we have a cancelError, it's already been removed at the provider level.\r\n if (!covered && removed.length > 0 && !cancelError) {\r\n // If we removed a default, then we weren't listening on any of the other queries here. Just cancel the one\r\n // default. Otherwise, we need to iterate through and cancel each individual query\r\n if (removingDefault) {\r\n // We don't tag default listeners\r\n var defaultTag = null;\r\n syncTree.listenProvider_.stopListening(syncTreeQueryForListening_(query), defaultTag);\r\n }\r\n else {\r\n removed.forEach(function (queryToRemove) {\r\n var tagToRemove = syncTree.queryToTagMap.get(syncTreeMakeQueryKey_(queryToRemove));\r\n syncTree.listenProvider_.stopListening(syncTreeQueryForListening_(queryToRemove), tagToRemove);\r\n });\r\n }\r\n }\r\n // Now, clear all of the tags we're tracking for the removed listens\r\n syncTreeRemoveTags_(syncTree, removed);\r\n }\r\n return cancelEvents;\r\n}\r\n/**\r\n * Apply new server data for the specified tagged query.\r\n *\r\n * @returns Events to raise.\r\n */\r\nfunction syncTreeApplyTaggedQueryOverwrite(syncTree, path, snap, tag) {\r\n var queryKey = syncTreeQueryKeyForTag_(syncTree, tag);\r\n if (queryKey != null) {\r\n var r = syncTreeParseQueryKey_(queryKey);\r\n var queryPath = r.path, queryId = r.queryId;\r\n var relativePath = newRelativePath(queryPath, path);\r\n var op = new Overwrite(newOperationSourceServerTaggedQuery(queryId), relativePath, snap);\r\n return syncTreeApplyTaggedOperation_(syncTree, queryPath, op);\r\n }\r\n else {\r\n // Query must have been removed already\r\n return [];\r\n }\r\n}\r\n/**\r\n * Apply server data to be merged in for the specified tagged query.\r\n *\r\n * @returns Events to raise.\r\n */\r\nfunction syncTreeApplyTaggedQueryMerge(syncTree, path, changedChildren, tag) {\r\n var queryKey = syncTreeQueryKeyForTag_(syncTree, tag);\r\n if (queryKey) {\r\n var r = syncTreeParseQueryKey_(queryKey);\r\n var queryPath = r.path, queryId = r.queryId;\r\n var relativePath = newRelativePath(queryPath, path);\r\n var changeTree = ImmutableTree.fromObject(changedChildren);\r\n var op = new Merge(newOperationSourceServerTaggedQuery(queryId), relativePath, changeTree);\r\n return syncTreeApplyTaggedOperation_(syncTree, queryPath, op);\r\n }\r\n else {\r\n // We've already removed the query. No big deal, ignore the update\r\n return [];\r\n }\r\n}\r\n/**\r\n * Add an event callback for the specified query.\r\n *\r\n * @returns Events to raise.\r\n */\r\nfunction syncTreeAddEventRegistration(syncTree, query, eventRegistration) {\r\n var path = query._path;\r\n var serverCache = null;\r\n var foundAncestorDefaultView = false;\r\n // Any covering writes will necessarily be at the root, so really all we need to find is the server cache.\r\n // Consider optimizing this once there's a better understanding of what actual behavior will be.\r\n syncTree.syncPointTree_.foreachOnPath(path, function (pathToSyncPoint, sp) {\r\n var relativePath = newRelativePath(pathToSyncPoint, path);\r\n serverCache =\r\n serverCache || syncPointGetCompleteServerCache(sp, relativePath);\r\n foundAncestorDefaultView =\r\n foundAncestorDefaultView || syncPointHasCompleteView(sp);\r\n });\r\n var syncPoint = syncTree.syncPointTree_.get(path);\r\n if (!syncPoint) {\r\n syncPoint = new SyncPoint();\r\n syncTree.syncPointTree_ = syncTree.syncPointTree_.set(path, syncPoint);\r\n }\r\n else {\r\n foundAncestorDefaultView =\r\n foundAncestorDefaultView || syncPointHasCompleteView(syncPoint);\r\n serverCache =\r\n serverCache || syncPointGetCompleteServerCache(syncPoint, newEmptyPath());\r\n }\r\n var serverCacheComplete;\r\n if (serverCache != null) {\r\n serverCacheComplete = true;\r\n }\r\n else {\r\n serverCacheComplete = false;\r\n serverCache = ChildrenNode.EMPTY_NODE;\r\n var subtree = syncTree.syncPointTree_.subtree(path);\r\n subtree.foreachChild(function (childName, childSyncPoint) {\r\n var completeCache = syncPointGetCompleteServerCache(childSyncPoint, newEmptyPath());\r\n if (completeCache) {\r\n serverCache = serverCache.updateImmediateChild(childName, completeCache);\r\n }\r\n });\r\n }\r\n var viewAlreadyExists = syncPointViewExistsForQuery(syncPoint, query);\r\n if (!viewAlreadyExists && !query._queryParams.loadsAllData()) {\r\n // We need to track a tag for this query\r\n var queryKey = syncTreeMakeQueryKey_(query);\r\n assert(!syncTree.queryToTagMap.has(queryKey), 'View does not exist, but we have a tag');\r\n var tag = syncTreeGetNextQueryTag_();\r\n syncTree.queryToTagMap.set(queryKey, tag);\r\n syncTree.tagToQueryMap.set(tag, queryKey);\r\n }\r\n var writesCache = writeTreeChildWrites(syncTree.pendingWriteTree_, path);\r\n var events = syncPointAddEventRegistration(syncPoint, query, eventRegistration, writesCache, serverCache, serverCacheComplete);\r\n if (!viewAlreadyExists && !foundAncestorDefaultView) {\r\n var view = syncPointViewForQuery(syncPoint, query);\r\n events = events.concat(syncTreeSetupListener_(syncTree, query, view));\r\n }\r\n return events;\r\n}\r\n/**\r\n * Returns a complete cache, if we have one, of the data at a particular path. If the location does not have a\r\n * listener above it, we will get a false \"null\". This shouldn't be a problem because transactions will always\r\n * have a listener above, and atomic operations would correctly show a jitter of ->\r\n * as the write is applied locally and then acknowledged at the server.\r\n *\r\n * Note: this method will *include* hidden writes from transaction with applyLocally set to false.\r\n *\r\n * @param path - The path to the data we want\r\n * @param writeIdsToExclude - A specific set to be excluded\r\n */\r\nfunction syncTreeCalcCompleteEventCache(syncTree, path, writeIdsToExclude) {\r\n var includeHiddenSets = true;\r\n var writeTree = syncTree.pendingWriteTree_;\r\n var serverCache = syncTree.syncPointTree_.findOnPath(path, function (pathSoFar, syncPoint) {\r\n var relativePath = newRelativePath(pathSoFar, path);\r\n var serverCache = syncPointGetCompleteServerCache(syncPoint, relativePath);\r\n if (serverCache) {\r\n return serverCache;\r\n }\r\n });\r\n return writeTreeCalcCompleteEventCache(writeTree, path, serverCache, writeIdsToExclude, includeHiddenSets);\r\n}\r\nfunction syncTreeGetServerValue(syncTree, query) {\r\n var path = query._path;\r\n var serverCache = null;\r\n // Any covering writes will necessarily be at the root, so really all we need to find is the server cache.\r\n // Consider optimizing this once there's a better understanding of what actual behavior will be.\r\n syncTree.syncPointTree_.foreachOnPath(path, function (pathToSyncPoint, sp) {\r\n var relativePath = newRelativePath(pathToSyncPoint, path);\r\n serverCache =\r\n serverCache || syncPointGetCompleteServerCache(sp, relativePath);\r\n });\r\n var syncPoint = syncTree.syncPointTree_.get(path);\r\n if (!syncPoint) {\r\n syncPoint = new SyncPoint();\r\n syncTree.syncPointTree_ = syncTree.syncPointTree_.set(path, syncPoint);\r\n }\r\n else {\r\n serverCache =\r\n serverCache || syncPointGetCompleteServerCache(syncPoint, newEmptyPath());\r\n }\r\n var serverCacheComplete = serverCache != null;\r\n var serverCacheNode = serverCacheComplete\r\n ? new CacheNode(serverCache, true, false)\r\n : null;\r\n var writesCache = writeTreeChildWrites(syncTree.pendingWriteTree_, query._path);\r\n var view = syncPointGetView(syncPoint, query, writesCache, serverCacheComplete ? serverCacheNode.getNode() : ChildrenNode.EMPTY_NODE, serverCacheComplete);\r\n return viewGetCompleteNode(view);\r\n}\r\n/**\r\n * A helper method that visits all descendant and ancestor SyncPoints, applying the operation.\r\n *\r\n * NOTES:\r\n * - Descendant SyncPoints will be visited first (since we raise events depth-first).\r\n *\r\n * - We call applyOperation() on each SyncPoint passing three things:\r\n * 1. A version of the Operation that has been made relative to the SyncPoint location.\r\n * 2. A WriteTreeRef of any writes we have cached at the SyncPoint location.\r\n * 3. A snapshot Node with cached server data, if we have it.\r\n *\r\n * - We concatenate all of the events returned by each SyncPoint and return the result.\r\n */\r\nfunction syncTreeApplyOperationToSyncPoints_(syncTree, operation) {\r\n return syncTreeApplyOperationHelper_(operation, syncTree.syncPointTree_, \r\n /*serverCache=*/ null, writeTreeChildWrites(syncTree.pendingWriteTree_, newEmptyPath()));\r\n}\r\n/**\r\n * Recursive helper for applyOperationToSyncPoints_\r\n */\r\nfunction syncTreeApplyOperationHelper_(operation, syncPointTree, serverCache, writesCache) {\r\n if (pathIsEmpty(operation.path)) {\r\n return syncTreeApplyOperationDescendantsHelper_(operation, syncPointTree, serverCache, writesCache);\r\n }\r\n else {\r\n var syncPoint = syncPointTree.get(newEmptyPath());\r\n // If we don't have cached server data, see if we can get it from this SyncPoint.\r\n if (serverCache == null && syncPoint != null) {\r\n serverCache = syncPointGetCompleteServerCache(syncPoint, newEmptyPath());\r\n }\r\n var events = [];\r\n var childName = pathGetFront(operation.path);\r\n var childOperation = operation.operationForChild(childName);\r\n var childTree = syncPointTree.children.get(childName);\r\n if (childTree && childOperation) {\r\n var childServerCache = serverCache\r\n ? serverCache.getImmediateChild(childName)\r\n : null;\r\n var childWritesCache = writeTreeRefChild(writesCache, childName);\r\n events = events.concat(syncTreeApplyOperationHelper_(childOperation, childTree, childServerCache, childWritesCache));\r\n }\r\n if (syncPoint) {\r\n events = events.concat(syncPointApplyOperation(syncPoint, operation, writesCache, serverCache));\r\n }\r\n return events;\r\n }\r\n}\r\n/**\r\n * Recursive helper for applyOperationToSyncPoints_\r\n */\r\nfunction syncTreeApplyOperationDescendantsHelper_(operation, syncPointTree, serverCache, writesCache) {\r\n var syncPoint = syncPointTree.get(newEmptyPath());\r\n // If we don't have cached server data, see if we can get it from this SyncPoint.\r\n if (serverCache == null && syncPoint != null) {\r\n serverCache = syncPointGetCompleteServerCache(syncPoint, newEmptyPath());\r\n }\r\n var events = [];\r\n syncPointTree.children.inorderTraversal(function (childName, childTree) {\r\n var childServerCache = serverCache\r\n ? serverCache.getImmediateChild(childName)\r\n : null;\r\n var childWritesCache = writeTreeRefChild(writesCache, childName);\r\n var childOperation = operation.operationForChild(childName);\r\n if (childOperation) {\r\n events = events.concat(syncTreeApplyOperationDescendantsHelper_(childOperation, childTree, childServerCache, childWritesCache));\r\n }\r\n });\r\n if (syncPoint) {\r\n events = events.concat(syncPointApplyOperation(syncPoint, operation, writesCache, serverCache));\r\n }\r\n return events;\r\n}\r\nfunction syncTreeCreateListenerForView_(syncTree, view) {\r\n var query = view.query;\r\n var tag = syncTreeTagForQuery_(syncTree, query);\r\n return {\r\n hashFn: function () {\r\n var cache = viewGetServerCache(view) || ChildrenNode.EMPTY_NODE;\r\n return cache.hash();\r\n },\r\n onComplete: function (status) {\r\n if (status === 'ok') {\r\n if (tag) {\r\n return syncTreeApplyTaggedListenComplete(syncTree, query._path, tag);\r\n }\r\n else {\r\n return syncTreeApplyListenComplete(syncTree, query._path);\r\n }\r\n }\r\n else {\r\n // If a listen failed, kill all of the listeners here, not just the one that triggered the error.\r\n // Note that this may need to be scoped to just this listener if we change permissions on filtered children\r\n var error = errorForServerCode(status, query);\r\n return syncTreeRemoveEventRegistration(syncTree, query, \r\n /*eventRegistration*/ null, error);\r\n }\r\n }\r\n };\r\n}\r\n/**\r\n * Return the tag associated with the given query.\r\n */\r\nfunction syncTreeTagForQuery_(syncTree, query) {\r\n var queryKey = syncTreeMakeQueryKey_(query);\r\n return syncTree.queryToTagMap.get(queryKey);\r\n}\r\n/**\r\n * Given a query, computes a \"queryKey\" suitable for use in our queryToTagMap_.\r\n */\r\nfunction syncTreeMakeQueryKey_(query) {\r\n return query._path.toString() + '$' + query._queryIdentifier;\r\n}\r\n/**\r\n * Return the query associated with the given tag, if we have one\r\n */\r\nfunction syncTreeQueryKeyForTag_(syncTree, tag) {\r\n return syncTree.tagToQueryMap.get(tag);\r\n}\r\n/**\r\n * Given a queryKey (created by makeQueryKey), parse it back into a path and queryId.\r\n */\r\nfunction syncTreeParseQueryKey_(queryKey) {\r\n var splitIndex = queryKey.indexOf('$');\r\n assert(splitIndex !== -1 && splitIndex < queryKey.length - 1, 'Bad queryKey.');\r\n return {\r\n queryId: queryKey.substr(splitIndex + 1),\r\n path: new Path(queryKey.substr(0, splitIndex))\r\n };\r\n}\r\n/**\r\n * A helper method to apply tagged operations\r\n */\r\nfunction syncTreeApplyTaggedOperation_(syncTree, queryPath, operation) {\r\n var syncPoint = syncTree.syncPointTree_.get(queryPath);\r\n assert(syncPoint, \"Missing sync point for query tag that we're tracking\");\r\n var writesCache = writeTreeChildWrites(syncTree.pendingWriteTree_, queryPath);\r\n return syncPointApplyOperation(syncPoint, operation, writesCache, null);\r\n}\r\n/**\r\n * This collapses multiple unfiltered views into a single view, since we only need a single\r\n * listener for them.\r\n */\r\nfunction syncTreeCollectDistinctViewsForSubTree_(subtree) {\r\n return subtree.fold(function (relativePath, maybeChildSyncPoint, childMap) {\r\n if (maybeChildSyncPoint && syncPointHasCompleteView(maybeChildSyncPoint)) {\r\n var completeView = syncPointGetCompleteView(maybeChildSyncPoint);\r\n return [completeView];\r\n }\r\n else {\r\n // No complete view here, flatten any deeper listens into an array\r\n var views_1 = [];\r\n if (maybeChildSyncPoint) {\r\n views_1 = syncPointGetQueryViews(maybeChildSyncPoint);\r\n }\r\n each(childMap, function (_key, childViews) {\r\n views_1 = views_1.concat(childViews);\r\n });\r\n return views_1;\r\n }\r\n });\r\n}\r\n/**\r\n * Normalizes a query to a query we send the server for listening\r\n *\r\n * @returns The normalized query\r\n */\r\nfunction syncTreeQueryForListening_(query) {\r\n if (query._queryParams.loadsAllData() && !query._queryParams.isDefault()) {\r\n // We treat queries that load all data as default queries\r\n // Cast is necessary because ref() technically returns Firebase which is actually fb.api.Firebase which inherits\r\n // from Query\r\n return new (syncTreeGetReferenceConstructor())(query._repo, query._path);\r\n }\r\n else {\r\n return query;\r\n }\r\n}\r\nfunction syncTreeRemoveTags_(syncTree, queries) {\r\n for (var j = 0; j < queries.length; ++j) {\r\n var removedQuery = queries[j];\r\n if (!removedQuery._queryParams.loadsAllData()) {\r\n // We should have a tag for this\r\n var removedQueryKey = syncTreeMakeQueryKey_(removedQuery);\r\n var removedQueryTag = syncTree.queryToTagMap.get(removedQueryKey);\r\n syncTree.queryToTagMap.delete(removedQueryKey);\r\n syncTree.tagToQueryMap.delete(removedQueryTag);\r\n }\r\n }\r\n}\r\n/**\r\n * Static accessor for query tags.\r\n */\r\nfunction syncTreeGetNextQueryTag_() {\r\n return syncTreeNextQueryTag_++;\r\n}\r\n/**\r\n * For a given new listen, manage the de-duplication of outstanding subscriptions.\r\n *\r\n * @returns This method can return events to support synchronous data sources\r\n */\r\nfunction syncTreeSetupListener_(syncTree, query, view) {\r\n var path = query._path;\r\n var tag = syncTreeTagForQuery_(syncTree, query);\r\n var listener = syncTreeCreateListenerForView_(syncTree, view);\r\n var events = syncTree.listenProvider_.startListening(syncTreeQueryForListening_(query), tag, listener.hashFn, listener.onComplete);\r\n var subtree = syncTree.syncPointTree_.subtree(path);\r\n // The root of this subtree has our query. We're here because we definitely need to send a listen for that, but we\r\n // may need to shadow other listens as well.\r\n if (tag) {\r\n assert(!syncPointHasCompleteView(subtree.value), \"If we're adding a query, it shouldn't be shadowed\");\r\n }\r\n else {\r\n // Shadow everything at or below this location, this is a default listener.\r\n var queriesToStop = subtree.fold(function (relativePath, maybeChildSyncPoint, childMap) {\r\n if (!pathIsEmpty(relativePath) &&\r\n maybeChildSyncPoint &&\r\n syncPointHasCompleteView(maybeChildSyncPoint)) {\r\n return [syncPointGetCompleteView(maybeChildSyncPoint).query];\r\n }\r\n else {\r\n // No default listener here, flatten any deeper queries into an array\r\n var queries_1 = [];\r\n if (maybeChildSyncPoint) {\r\n queries_1 = queries_1.concat(syncPointGetQueryViews(maybeChildSyncPoint).map(function (view) { return view.query; }));\r\n }\r\n each(childMap, function (_key, childQueries) {\r\n queries_1 = queries_1.concat(childQueries);\r\n });\r\n return queries_1;\r\n }\r\n });\r\n for (var i = 0; i < queriesToStop.length; ++i) {\r\n var queryToStop = queriesToStop[i];\r\n syncTree.listenProvider_.stopListening(syncTreeQueryForListening_(queryToStop), syncTreeTagForQuery_(syncTree, queryToStop));\r\n }\r\n }\r\n return events;\r\n}\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nvar ExistingValueProvider = /** @class */ (function () {\r\n function ExistingValueProvider(node_) {\r\n this.node_ = node_;\r\n }\r\n ExistingValueProvider.prototype.getImmediateChild = function (childName) {\r\n var child = this.node_.getImmediateChild(childName);\r\n return new ExistingValueProvider(child);\r\n };\r\n ExistingValueProvider.prototype.node = function () {\r\n return this.node_;\r\n };\r\n return ExistingValueProvider;\r\n}());\r\nvar DeferredValueProvider = /** @class */ (function () {\r\n function DeferredValueProvider(syncTree, path) {\r\n this.syncTree_ = syncTree;\r\n this.path_ = path;\r\n }\r\n DeferredValueProvider.prototype.getImmediateChild = function (childName) {\r\n var childPath = pathChild(this.path_, childName);\r\n return new DeferredValueProvider(this.syncTree_, childPath);\r\n };\r\n DeferredValueProvider.prototype.node = function () {\r\n return syncTreeCalcCompleteEventCache(this.syncTree_, this.path_);\r\n };\r\n return DeferredValueProvider;\r\n}());\r\n/**\r\n * Generate placeholders for deferred values.\r\n */\r\nvar generateWithValues = function (values) {\r\n values = values || {};\r\n values['timestamp'] = values['timestamp'] || new Date().getTime();\r\n return values;\r\n};\r\n/**\r\n * Value to use when firing local events. When writing server values, fire\r\n * local events with an approximate value, otherwise return value as-is.\r\n */\r\nvar resolveDeferredLeafValue = function (value, existingVal, serverValues) {\r\n if (!value || typeof value !== 'object') {\r\n return value;\r\n }\r\n assert('.sv' in value, 'Unexpected leaf node or priority contents');\r\n if (typeof value['.sv'] === 'string') {\r\n return resolveScalarDeferredValue(value['.sv'], existingVal, serverValues);\r\n }\r\n else if (typeof value['.sv'] === 'object') {\r\n return resolveComplexDeferredValue(value['.sv'], existingVal);\r\n }\r\n else {\r\n assert(false, 'Unexpected server value: ' + JSON.stringify(value, null, 2));\r\n }\r\n};\r\nvar resolveScalarDeferredValue = function (op, existing, serverValues) {\r\n switch (op) {\r\n case 'timestamp':\r\n return serverValues['timestamp'];\r\n default:\r\n assert(false, 'Unexpected server value: ' + op);\r\n }\r\n};\r\nvar resolveComplexDeferredValue = function (op, existing, unused) {\r\n if (!op.hasOwnProperty('increment')) {\r\n assert(false, 'Unexpected server value: ' + JSON.stringify(op, null, 2));\r\n }\r\n var delta = op['increment'];\r\n if (typeof delta !== 'number') {\r\n assert(false, 'Unexpected increment value: ' + delta);\r\n }\r\n var existingNode = existing.node();\r\n assert(existingNode !== null && typeof existingNode !== 'undefined', 'Expected ChildrenNode.EMPTY_NODE for nulls');\r\n // Incrementing a non-number sets the value to the incremented amount\r\n if (!existingNode.isLeafNode()) {\r\n return delta;\r\n }\r\n var leaf = existingNode;\r\n var existingVal = leaf.getValue();\r\n if (typeof existingVal !== 'number') {\r\n return delta;\r\n }\r\n // No need to do over/underflow arithmetic here because JS only handles floats under the covers\r\n return existingVal + delta;\r\n};\r\n/**\r\n * Recursively replace all deferred values and priorities in the tree with the\r\n * specified generated replacement values.\r\n * @param path - path to which write is relative\r\n * @param node - new data written at path\r\n * @param syncTree - current data\r\n */\r\nvar resolveDeferredValueTree = function (path, node, syncTree, serverValues) {\r\n return resolveDeferredValue(node, new DeferredValueProvider(syncTree, path), serverValues);\r\n};\r\n/**\r\n * Recursively replace all deferred values and priorities in the node with the\r\n * specified generated replacement values. If there are no server values in the node,\r\n * it'll be returned as-is.\r\n */\r\nvar resolveDeferredValueSnapshot = function (node, existing, serverValues) {\r\n return resolveDeferredValue(node, new ExistingValueProvider(existing), serverValues);\r\n};\r\nfunction resolveDeferredValue(node, existingVal, serverValues) {\r\n var rawPri = node.getPriority().val();\r\n var priority = resolveDeferredLeafValue(rawPri, existingVal.getImmediateChild('.priority'), serverValues);\r\n var newNode;\r\n if (node.isLeafNode()) {\r\n var leafNode = node;\r\n var value = resolveDeferredLeafValue(leafNode.getValue(), existingVal, serverValues);\r\n if (value !== leafNode.getValue() ||\r\n priority !== leafNode.getPriority().val()) {\r\n return new LeafNode(value, nodeFromJSON(priority));\r\n }\r\n else {\r\n return node;\r\n }\r\n }\r\n else {\r\n var childrenNode = node;\r\n newNode = childrenNode;\r\n if (priority !== childrenNode.getPriority().val()) {\r\n newNode = newNode.updatePriority(new LeafNode(priority));\r\n }\r\n childrenNode.forEachChild(PRIORITY_INDEX, function (childName, childNode) {\r\n var newChildNode = resolveDeferredValue(childNode, existingVal.getImmediateChild(childName), serverValues);\r\n if (newChildNode !== childNode) {\r\n newNode = newNode.updateImmediateChild(childName, newChildNode);\r\n }\r\n });\r\n return newNode;\r\n }\r\n}\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * A light-weight tree, traversable by path. Nodes can have both values and children.\r\n * Nodes are not enumerated (by forEachChild) unless they have a value or non-empty\r\n * children.\r\n */\r\nvar Tree = /** @class */ (function () {\r\n /**\r\n * @param name - Optional name of the node.\r\n * @param parent - Optional parent node.\r\n * @param node - Optional node to wrap.\r\n */\r\n function Tree(name, parent, node) {\r\n if (name === void 0) { name = ''; }\r\n if (parent === void 0) { parent = null; }\r\n if (node === void 0) { node = { children: {}, childCount: 0 }; }\r\n this.name = name;\r\n this.parent = parent;\r\n this.node = node;\r\n }\r\n return Tree;\r\n}());\r\n/**\r\n * Returns a sub-Tree for the given path.\r\n *\r\n * @param pathObj - Path to look up.\r\n * @returns Tree for path.\r\n */\r\nfunction treeSubTree(tree, pathObj) {\r\n // TODO: Require pathObj to be Path?\r\n var path = pathObj instanceof Path ? pathObj : new Path(pathObj);\r\n var child = tree, next = pathGetFront(path);\r\n while (next !== null) {\r\n var childNode = safeGet(child.node.children, next) || {\r\n children: {},\r\n childCount: 0\r\n };\r\n child = new Tree(next, child, childNode);\r\n path = pathPopFront(path);\r\n next = pathGetFront(path);\r\n }\r\n return child;\r\n}\r\n/**\r\n * Returns the data associated with this tree node.\r\n *\r\n * @returns The data or null if no data exists.\r\n */\r\nfunction treeGetValue(tree) {\r\n return tree.node.value;\r\n}\r\n/**\r\n * Sets data to this tree node.\r\n *\r\n * @param value - Value to set.\r\n */\r\nfunction treeSetValue(tree, value) {\r\n tree.node.value = value;\r\n treeUpdateParents(tree);\r\n}\r\n/**\r\n * @returns Whether the tree has any children.\r\n */\r\nfunction treeHasChildren(tree) {\r\n return tree.node.childCount > 0;\r\n}\r\n/**\r\n * @returns Whethe rthe tree is empty (no value or children).\r\n */\r\nfunction treeIsEmpty(tree) {\r\n return treeGetValue(tree) === undefined && !treeHasChildren(tree);\r\n}\r\n/**\r\n * Calls action for each child of this tree node.\r\n *\r\n * @param action - Action to be called for each child.\r\n */\r\nfunction treeForEachChild(tree, action) {\r\n each(tree.node.children, function (child, childTree) {\r\n action(new Tree(child, tree, childTree));\r\n });\r\n}\r\n/**\r\n * Does a depth-first traversal of this node's descendants, calling action for each one.\r\n *\r\n * @param action - Action to be called for each child.\r\n * @param includeSelf - Whether to call action on this node as well. Defaults to\r\n * false.\r\n * @param childrenFirst - Whether to call action on children before calling it on\r\n * parent.\r\n */\r\nfunction treeForEachDescendant(tree, action, includeSelf, childrenFirst) {\r\n if (includeSelf && !childrenFirst) {\r\n action(tree);\r\n }\r\n treeForEachChild(tree, function (child) {\r\n treeForEachDescendant(child, action, true, childrenFirst);\r\n });\r\n if (includeSelf && childrenFirst) {\r\n action(tree);\r\n }\r\n}\r\n/**\r\n * Calls action on each ancestor node.\r\n *\r\n * @param action - Action to be called on each parent; return\r\n * true to abort.\r\n * @param includeSelf - Whether to call action on this node as well.\r\n * @returns true if the action callback returned true.\r\n */\r\nfunction treeForEachAncestor(tree, action, includeSelf) {\r\n var node = includeSelf ? tree : tree.parent;\r\n while (node !== null) {\r\n if (action(node)) {\r\n return true;\r\n }\r\n node = node.parent;\r\n }\r\n return false;\r\n}\r\n/**\r\n * @returns The path of this tree node, as a Path.\r\n */\r\nfunction treeGetPath(tree) {\r\n return new Path(tree.parent === null\r\n ? tree.name\r\n : treeGetPath(tree.parent) + '/' + tree.name);\r\n}\r\n/**\r\n * Adds or removes this child from its parent based on whether it's empty or not.\r\n */\r\nfunction treeUpdateParents(tree) {\r\n if (tree.parent !== null) {\r\n treeUpdateChild(tree.parent, tree.name, tree);\r\n }\r\n}\r\n/**\r\n * Adds or removes the passed child to this tree node, depending on whether it's empty.\r\n *\r\n * @param childName - The name of the child to update.\r\n * @param child - The child to update.\r\n */\r\nfunction treeUpdateChild(tree, childName, child) {\r\n var childEmpty = treeIsEmpty(child);\r\n var childExists = contains(tree.node.children, childName);\r\n if (childEmpty && childExists) {\r\n delete tree.node.children[childName];\r\n tree.node.childCount--;\r\n treeUpdateParents(tree);\r\n }\r\n else if (!childEmpty && !childExists) {\r\n tree.node.children[childName] = child.node;\r\n tree.node.childCount++;\r\n treeUpdateParents(tree);\r\n }\r\n}\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * True for invalid Firebase keys\r\n */\r\nvar INVALID_KEY_REGEX_ = /[\\[\\].#$\\/\\u0000-\\u001F\\u007F]/;\r\n/**\r\n * True for invalid Firebase paths.\r\n * Allows '/' in paths.\r\n */\r\nvar INVALID_PATH_REGEX_ = /[\\[\\].#$\\u0000-\\u001F\\u007F]/;\r\n/**\r\n * Maximum number of characters to allow in leaf value\r\n */\r\nvar MAX_LEAF_SIZE_ = 10 * 1024 * 1024;\r\nvar isValidKey = function (key) {\r\n return (typeof key === 'string' && key.length !== 0 && !INVALID_KEY_REGEX_.test(key));\r\n};\r\nvar isValidPathString = function (pathString) {\r\n return (typeof pathString === 'string' &&\r\n pathString.length !== 0 &&\r\n !INVALID_PATH_REGEX_.test(pathString));\r\n};\r\nvar isValidRootPathString = function (pathString) {\r\n if (pathString) {\r\n // Allow '/.info/' at the beginning.\r\n pathString = pathString.replace(/^\\/*\\.info(\\/|$)/, '/');\r\n }\r\n return isValidPathString(pathString);\r\n};\r\nvar isValidPriority = function (priority) {\r\n return (priority === null ||\r\n typeof priority === 'string' ||\r\n (typeof priority === 'number' && !isInvalidJSONNumber(priority)) ||\r\n (priority &&\r\n typeof priority === 'object' &&\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n contains(priority, '.sv')));\r\n};\r\n/**\r\n * Pre-validate a datum passed as an argument to Firebase function.\r\n */\r\nvar validateFirebaseDataArg = function (fnName, value, path, optional) {\r\n if (optional && value === undefined) {\r\n return;\r\n }\r\n validateFirebaseData(errorPrefix(fnName, 'value'), value, path);\r\n};\r\n/**\r\n * Validate a data object client-side before sending to server.\r\n */\r\nvar validateFirebaseData = function (errorPrefix, data, path_) {\r\n var path = path_ instanceof Path ? new ValidationPath(path_, errorPrefix) : path_;\r\n if (data === undefined) {\r\n throw new Error(errorPrefix + 'contains undefined ' + validationPathToErrorString(path));\r\n }\r\n if (typeof data === 'function') {\r\n throw new Error(errorPrefix +\r\n 'contains a function ' +\r\n validationPathToErrorString(path) +\r\n ' with contents = ' +\r\n data.toString());\r\n }\r\n if (isInvalidJSONNumber(data)) {\r\n throw new Error(errorPrefix +\r\n 'contains ' +\r\n data.toString() +\r\n ' ' +\r\n validationPathToErrorString(path));\r\n }\r\n // Check max leaf size, but try to avoid the utf8 conversion if we can.\r\n if (typeof data === 'string' &&\r\n data.length > MAX_LEAF_SIZE_ / 3 &&\r\n stringLength(data) > MAX_LEAF_SIZE_) {\r\n throw new Error(errorPrefix +\r\n 'contains a string greater than ' +\r\n MAX_LEAF_SIZE_ +\r\n ' utf8 bytes ' +\r\n validationPathToErrorString(path) +\r\n \" ('\" +\r\n data.substring(0, 50) +\r\n \"...')\");\r\n }\r\n // TODO = Perf = Consider combining the recursive validation of keys into NodeFromJSON\r\n // to save extra walking of large objects.\r\n if (data && typeof data === 'object') {\r\n var hasDotValue_1 = false;\r\n var hasActualChild_1 = false;\r\n each(data, function (key, value) {\r\n if (key === '.value') {\r\n hasDotValue_1 = true;\r\n }\r\n else if (key !== '.priority' && key !== '.sv') {\r\n hasActualChild_1 = true;\r\n if (!isValidKey(key)) {\r\n throw new Error(errorPrefix +\r\n ' contains an invalid key (' +\r\n key +\r\n ') ' +\r\n validationPathToErrorString(path) +\r\n '. Keys must be non-empty strings ' +\r\n 'and can\\'t contain \".\", \"#\", \"$\", \"/\", \"[\", or \"]\"');\r\n }\r\n }\r\n validationPathPush(path, key);\r\n validateFirebaseData(errorPrefix, value, path);\r\n validationPathPop(path);\r\n });\r\n if (hasDotValue_1 && hasActualChild_1) {\r\n throw new Error(errorPrefix +\r\n ' contains \".value\" child ' +\r\n validationPathToErrorString(path) +\r\n ' in addition to actual children.');\r\n }\r\n }\r\n};\r\n/**\r\n * Pre-validate paths passed in the firebase function.\r\n */\r\nvar validateFirebaseMergePaths = function (errorPrefix, mergePaths) {\r\n var i, curPath;\r\n for (i = 0; i < mergePaths.length; i++) {\r\n curPath = mergePaths[i];\r\n var keys = pathSlice(curPath);\r\n for (var j = 0; j < keys.length; j++) {\r\n if (keys[j] === '.priority' && j === keys.length - 1) ;\r\n else if (!isValidKey(keys[j])) {\r\n throw new Error(errorPrefix +\r\n 'contains an invalid key (' +\r\n keys[j] +\r\n ') in path ' +\r\n curPath.toString() +\r\n '. Keys must be non-empty strings ' +\r\n 'and can\\'t contain \".\", \"#\", \"$\", \"/\", \"[\", or \"]\"');\r\n }\r\n }\r\n }\r\n // Check that update keys are not descendants of each other.\r\n // We rely on the property that sorting guarantees that ancestors come\r\n // right before descendants.\r\n mergePaths.sort(pathCompare);\r\n var prevPath = null;\r\n for (i = 0; i < mergePaths.length; i++) {\r\n curPath = mergePaths[i];\r\n if (prevPath !== null && pathContains(prevPath, curPath)) {\r\n throw new Error(errorPrefix +\r\n 'contains a path ' +\r\n prevPath.toString() +\r\n ' that is ancestor of another path ' +\r\n curPath.toString());\r\n }\r\n prevPath = curPath;\r\n }\r\n};\r\n/**\r\n * pre-validate an object passed as an argument to firebase function (\r\n * must be an object - e.g. for firebase.update()).\r\n */\r\nvar validateFirebaseMergeDataArg = function (fnName, data, path, optional) {\r\n if (optional && data === undefined) {\r\n return;\r\n }\r\n var errorPrefix$1 = errorPrefix(fnName, 'values');\r\n if (!(data && typeof data === 'object') || Array.isArray(data)) {\r\n throw new Error(errorPrefix$1 + ' must be an object containing the children to replace.');\r\n }\r\n var mergePaths = [];\r\n each(data, function (key, value) {\r\n var curPath = new Path(key);\r\n validateFirebaseData(errorPrefix$1, value, pathChild(path, curPath));\r\n if (pathGetBack(curPath) === '.priority') {\r\n if (!isValidPriority(value)) {\r\n throw new Error(errorPrefix$1 +\r\n \"contains an invalid value for '\" +\r\n curPath.toString() +\r\n \"', which must be a valid \" +\r\n 'Firebase priority (a string, finite number, server value, or null).');\r\n }\r\n }\r\n mergePaths.push(curPath);\r\n });\r\n validateFirebaseMergePaths(errorPrefix$1, mergePaths);\r\n};\r\nvar validatePriority = function (fnName, priority, optional) {\r\n if (optional && priority === undefined) {\r\n return;\r\n }\r\n if (isInvalidJSONNumber(priority)) {\r\n throw new Error(errorPrefix(fnName, 'priority') +\r\n 'is ' +\r\n priority.toString() +\r\n ', but must be a valid Firebase priority (a string, finite number, ' +\r\n 'server value, or null).');\r\n }\r\n // Special case to allow importing data with a .sv.\r\n if (!isValidPriority(priority)) {\r\n throw new Error(errorPrefix(fnName, 'priority') +\r\n 'must be a valid Firebase priority ' +\r\n '(a string, finite number, server value, or null).');\r\n }\r\n};\r\nvar validateEventType = function (fnName, eventType, optional) {\r\n if (optional && eventType === undefined) {\r\n return;\r\n }\r\n switch (eventType) {\r\n case 'value':\r\n case 'child_added':\r\n case 'child_removed':\r\n case 'child_changed':\r\n case 'child_moved':\r\n break;\r\n default:\r\n throw new Error(errorPrefix(fnName, 'eventType') +\r\n 'must be a valid event type = \"value\", \"child_added\", \"child_removed\", ' +\r\n '\"child_changed\", or \"child_moved\".');\r\n }\r\n};\r\nvar validateKey = function (fnName, argumentName, key, optional) {\r\n if (optional && key === undefined) {\r\n return;\r\n }\r\n if (!isValidKey(key)) {\r\n throw new Error(errorPrefix(fnName, argumentName) +\r\n 'was an invalid key = \"' +\r\n key +\r\n '\". Firebase keys must be non-empty strings and ' +\r\n 'can\\'t contain \".\", \"#\", \"$\", \"/\", \"[\", or \"]\").');\r\n }\r\n};\r\nvar validatePathString = function (fnName, argumentName, pathString, optional) {\r\n if (optional && pathString === undefined) {\r\n return;\r\n }\r\n if (!isValidPathString(pathString)) {\r\n throw new Error(errorPrefix(fnName, argumentName) +\r\n 'was an invalid path = \"' +\r\n pathString +\r\n '\". Paths must be non-empty strings and ' +\r\n 'can\\'t contain \".\", \"#\", \"$\", \"[\", or \"]\"');\r\n }\r\n};\r\nvar validateRootPathString = function (fnName, argumentName, pathString, optional) {\r\n if (pathString) {\r\n // Allow '/.info/' at the beginning.\r\n pathString = pathString.replace(/^\\/*\\.info(\\/|$)/, '/');\r\n }\r\n validatePathString(fnName, argumentName, pathString, optional);\r\n};\r\nvar validateWritablePath = function (fnName, path) {\r\n if (pathGetFront(path) === '.info') {\r\n throw new Error(fnName + \" failed = Can't modify data under /.info/\");\r\n }\r\n};\r\nvar validateUrl = function (fnName, parsedUrl) {\r\n // TODO = Validate server better.\r\n var pathString = parsedUrl.path.toString();\r\n if (!(typeof parsedUrl.repoInfo.host === 'string') ||\r\n parsedUrl.repoInfo.host.length === 0 ||\r\n (!isValidKey(parsedUrl.repoInfo.namespace) &&\r\n parsedUrl.repoInfo.host.split(':')[0] !== 'localhost') ||\r\n (pathString.length !== 0 && !isValidRootPathString(pathString))) {\r\n throw new Error(errorPrefix(fnName, 'url') +\r\n 'must be a valid firebase URL and ' +\r\n 'the path can\\'t contain \".\", \"#\", \"$\", \"[\", or \"]\".');\r\n }\r\n};\r\nvar validateBoolean = function (fnName, argumentName, bool, optional) {\r\n if (optional && bool === undefined) {\r\n return;\r\n }\r\n if (typeof bool !== 'boolean') {\r\n throw new Error(errorPrefix(fnName, argumentName) + 'must be a boolean.');\r\n }\r\n};\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * The event queue serves a few purposes:\r\n * 1. It ensures we maintain event order in the face of event callbacks doing operations that result in more\r\n * events being queued.\r\n * 2. raiseQueuedEvents() handles being called reentrantly nicely. That is, if in the course of raising events,\r\n * raiseQueuedEvents() is called again, the \"inner\" call will pick up raising events where the \"outer\" call\r\n * left off, ensuring that the events are still raised synchronously and in order.\r\n * 3. You can use raiseEventsAtPath and raiseEventsForChangedPath to ensure only relevant previously-queued\r\n * events are raised synchronously.\r\n *\r\n * NOTE: This can all go away if/when we move to async events.\r\n *\r\n */\r\nvar EventQueue = /** @class */ (function () {\r\n function EventQueue() {\r\n this.eventLists_ = [];\r\n /**\r\n * Tracks recursion depth of raiseQueuedEvents_, for debugging purposes.\r\n */\r\n this.recursionDepth_ = 0;\r\n }\r\n return EventQueue;\r\n}());\r\n/**\r\n * @param eventDataList - The new events to queue.\r\n */\r\nfunction eventQueueQueueEvents(eventQueue, eventDataList) {\r\n // We group events by path, storing them in a single EventList, to make it easier to skip over them quickly.\r\n var currList = null;\r\n for (var i = 0; i < eventDataList.length; i++) {\r\n var data = eventDataList[i];\r\n var path = data.getPath();\r\n if (currList !== null && !pathEquals(path, currList.path)) {\r\n eventQueue.eventLists_.push(currList);\r\n currList = null;\r\n }\r\n if (currList === null) {\r\n currList = { events: [], path: path };\r\n }\r\n currList.events.push(data);\r\n }\r\n if (currList) {\r\n eventQueue.eventLists_.push(currList);\r\n }\r\n}\r\n/**\r\n * Queues the specified events and synchronously raises all events (including previously queued ones)\r\n * for the specified path.\r\n *\r\n * It is assumed that the new events are all for the specified path.\r\n *\r\n * @param path - The path to raise events for.\r\n * @param eventDataList - The new events to raise.\r\n */\r\nfunction eventQueueRaiseEventsAtPath(eventQueue, path, eventDataList) {\r\n eventQueueQueueEvents(eventQueue, eventDataList);\r\n eventQueueRaiseQueuedEventsMatchingPredicate(eventQueue, function (eventPath) {\r\n return pathEquals(eventPath, path);\r\n });\r\n}\r\n/**\r\n * Queues the specified events and synchronously raises all events (including previously queued ones) for\r\n * locations related to the specified change path (i.e. all ancestors and descendants).\r\n *\r\n * It is assumed that the new events are all related (ancestor or descendant) to the specified path.\r\n *\r\n * @param changedPath - The path to raise events for.\r\n * @param eventDataList - The events to raise\r\n */\r\nfunction eventQueueRaiseEventsForChangedPath(eventQueue, changedPath, eventDataList) {\r\n eventQueueQueueEvents(eventQueue, eventDataList);\r\n eventQueueRaiseQueuedEventsMatchingPredicate(eventQueue, function (eventPath) {\r\n return pathContains(eventPath, changedPath) ||\r\n pathContains(changedPath, eventPath);\r\n });\r\n}\r\nfunction eventQueueRaiseQueuedEventsMatchingPredicate(eventQueue, predicate) {\r\n eventQueue.recursionDepth_++;\r\n var sentAll = true;\r\n for (var i = 0; i < eventQueue.eventLists_.length; i++) {\r\n var eventList = eventQueue.eventLists_[i];\r\n if (eventList) {\r\n var eventPath = eventList.path;\r\n if (predicate(eventPath)) {\r\n eventListRaise(eventQueue.eventLists_[i]);\r\n eventQueue.eventLists_[i] = null;\r\n }\r\n else {\r\n sentAll = false;\r\n }\r\n }\r\n }\r\n if (sentAll) {\r\n eventQueue.eventLists_ = [];\r\n }\r\n eventQueue.recursionDepth_--;\r\n}\r\n/**\r\n * Iterates through the list and raises each event\r\n */\r\nfunction eventListRaise(eventList) {\r\n for (var i = 0; i < eventList.events.length; i++) {\r\n var eventData = eventList.events[i];\r\n if (eventData !== null) {\r\n eventList.events[i] = null;\r\n var eventFn = eventData.getEventRunner();\r\n if (logger) {\r\n log('event: ' + eventData.toString());\r\n }\r\n exceptionGuard(eventFn);\r\n }\r\n }\r\n}\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nvar INTERRUPT_REASON = 'repo_interrupt';\r\n/**\r\n * If a transaction does not succeed after 25 retries, we abort it. Among other\r\n * things this ensure that if there's ever a bug causing a mismatch between\r\n * client / server hashes for some data, we won't retry indefinitely.\r\n */\r\nvar MAX_TRANSACTION_RETRIES = 25;\r\n/**\r\n * A connection to a single data repository.\r\n */\r\nvar Repo = /** @class */ (function () {\r\n function Repo(repoInfo_, forceRestClient_, authTokenProvider_, appCheckProvider_) {\r\n this.repoInfo_ = repoInfo_;\r\n this.forceRestClient_ = forceRestClient_;\r\n this.authTokenProvider_ = authTokenProvider_;\r\n this.appCheckProvider_ = appCheckProvider_;\r\n this.dataUpdateCount = 0;\r\n this.statsListener_ = null;\r\n this.eventQueue_ = new EventQueue();\r\n this.nextWriteId_ = 1;\r\n this.interceptServerDataCallback_ = null;\r\n /** A list of data pieces and paths to be set when this client disconnects. */\r\n this.onDisconnect_ = newSparseSnapshotTree();\r\n /** Stores queues of outstanding transactions for Firebase locations. */\r\n this.transactionQueueTree_ = new Tree();\r\n // TODO: This should be @private but it's used by test_access.js and internal.js\r\n this.persistentConnection_ = null;\r\n // This key is intentionally not updated if RepoInfo is later changed or replaced\r\n this.key = this.repoInfo_.toURLString();\r\n }\r\n /**\r\n * @returns The URL corresponding to the root of this Firebase.\r\n */\r\n Repo.prototype.toString = function () {\r\n return ((this.repoInfo_.secure ? 'https://' : 'http://') + this.repoInfo_.host);\r\n };\r\n return Repo;\r\n}());\r\nfunction repoStart(repo, appId, authOverride) {\r\n repo.stats_ = statsManagerGetCollection(repo.repoInfo_);\r\n if (repo.forceRestClient_ || beingCrawled()) {\r\n repo.server_ = new ReadonlyRestClient(repo.repoInfo_, function (pathString, data, isMerge, tag) {\r\n repoOnDataUpdate(repo, pathString, data, isMerge, tag);\r\n }, repo.authTokenProvider_, repo.appCheckProvider_);\r\n // Minor hack: Fire onConnect immediately, since there's no actual connection.\r\n setTimeout(function () { return repoOnConnectStatus(repo, /* connectStatus= */ true); }, 0);\r\n }\r\n else {\r\n // Validate authOverride\r\n if (typeof authOverride !== 'undefined' && authOverride !== null) {\r\n if (typeof authOverride !== 'object') {\r\n throw new Error('Only objects are supported for option databaseAuthVariableOverride');\r\n }\r\n try {\r\n stringify(authOverride);\r\n }\r\n catch (e) {\r\n throw new Error('Invalid authOverride provided: ' + e);\r\n }\r\n }\r\n repo.persistentConnection_ = new PersistentConnection(repo.repoInfo_, appId, function (pathString, data, isMerge, tag) {\r\n repoOnDataUpdate(repo, pathString, data, isMerge, tag);\r\n }, function (connectStatus) {\r\n repoOnConnectStatus(repo, connectStatus);\r\n }, function (updates) {\r\n repoOnServerInfoUpdate(repo, updates);\r\n }, repo.authTokenProvider_, repo.appCheckProvider_, authOverride);\r\n repo.server_ = repo.persistentConnection_;\r\n }\r\n repo.authTokenProvider_.addTokenChangeListener(function (token) {\r\n repo.server_.refreshAuthToken(token);\r\n });\r\n repo.appCheckProvider_.addTokenChangeListener(function (result) {\r\n repo.server_.refreshAppCheckToken(result.token);\r\n });\r\n // In the case of multiple Repos for the same repoInfo (i.e. there are multiple Firebase.Contexts being used),\r\n // we only want to create one StatsReporter. As such, we'll report stats over the first Repo created.\r\n repo.statsReporter_ = statsManagerGetOrCreateReporter(repo.repoInfo_, function () { return new StatsReporter(repo.stats_, repo.server_); });\r\n // Used for .info.\r\n repo.infoData_ = new SnapshotHolder();\r\n repo.infoSyncTree_ = new SyncTree({\r\n startListening: function (query, tag, currentHashFn, onComplete) {\r\n var infoEvents = [];\r\n var node = repo.infoData_.getNode(query._path);\r\n // This is possibly a hack, but we have different semantics for .info endpoints. We don't raise null events\r\n // on initial data...\r\n if (!node.isEmpty()) {\r\n infoEvents = syncTreeApplyServerOverwrite(repo.infoSyncTree_, query._path, node);\r\n setTimeout(function () {\r\n onComplete('ok');\r\n }, 0);\r\n }\r\n return infoEvents;\r\n },\r\n stopListening: function () { }\r\n });\r\n repoUpdateInfo(repo, 'connected', false);\r\n repo.serverSyncTree_ = new SyncTree({\r\n startListening: function (query, tag, currentHashFn, onComplete) {\r\n repo.server_.listen(query, currentHashFn, tag, function (status, data) {\r\n var events = onComplete(status, data);\r\n eventQueueRaiseEventsForChangedPath(repo.eventQueue_, query._path, events);\r\n });\r\n // No synchronous events for network-backed sync trees\r\n return [];\r\n },\r\n stopListening: function (query, tag) {\r\n repo.server_.unlisten(query, tag);\r\n }\r\n });\r\n}\r\n/**\r\n * @returns The time in milliseconds, taking the server offset into account if we have one.\r\n */\r\nfunction repoServerTime(repo) {\r\n var offsetNode = repo.infoData_.getNode(new Path('.info/serverTimeOffset'));\r\n var offset = offsetNode.val() || 0;\r\n return new Date().getTime() + offset;\r\n}\r\n/**\r\n * Generate ServerValues using some variables from the repo object.\r\n */\r\nfunction repoGenerateServerValues(repo) {\r\n return generateWithValues({\r\n timestamp: repoServerTime(repo)\r\n });\r\n}\r\n/**\r\n * Called by realtime when we get new messages from the server.\r\n */\r\nfunction repoOnDataUpdate(repo, pathString, data, isMerge, tag) {\r\n // For testing.\r\n repo.dataUpdateCount++;\r\n var path = new Path(pathString);\r\n data = repo.interceptServerDataCallback_\r\n ? repo.interceptServerDataCallback_(pathString, data)\r\n : data;\r\n var events = [];\r\n if (tag) {\r\n if (isMerge) {\r\n var taggedChildren = map(data, function (raw) { return nodeFromJSON(raw); });\r\n events = syncTreeApplyTaggedQueryMerge(repo.serverSyncTree_, path, taggedChildren, tag);\r\n }\r\n else {\r\n var taggedSnap = nodeFromJSON(data);\r\n events = syncTreeApplyTaggedQueryOverwrite(repo.serverSyncTree_, path, taggedSnap, tag);\r\n }\r\n }\r\n else if (isMerge) {\r\n var changedChildren = map(data, function (raw) { return nodeFromJSON(raw); });\r\n events = syncTreeApplyServerMerge(repo.serverSyncTree_, path, changedChildren);\r\n }\r\n else {\r\n var snap = nodeFromJSON(data);\r\n events = syncTreeApplyServerOverwrite(repo.serverSyncTree_, path, snap);\r\n }\r\n var affectedPath = path;\r\n if (events.length > 0) {\r\n // Since we have a listener outstanding for each transaction, receiving any events\r\n // is a proxy for some change having occurred.\r\n affectedPath = repoRerunTransactions(repo, path);\r\n }\r\n eventQueueRaiseEventsForChangedPath(repo.eventQueue_, affectedPath, events);\r\n}\r\n// TODO: This should be @private but it's used by test_access.js and internal.js\r\nfunction repoInterceptServerData(repo, callback) {\r\n repo.interceptServerDataCallback_ = callback;\r\n}\r\nfunction repoOnConnectStatus(repo, connectStatus) {\r\n repoUpdateInfo(repo, 'connected', connectStatus);\r\n if (connectStatus === false) {\r\n repoRunOnDisconnectEvents(repo);\r\n }\r\n}\r\nfunction repoOnServerInfoUpdate(repo, updates) {\r\n each(updates, function (key, value) {\r\n repoUpdateInfo(repo, key, value);\r\n });\r\n}\r\nfunction repoUpdateInfo(repo, pathString, value) {\r\n var path = new Path('/.info/' + pathString);\r\n var newNode = nodeFromJSON(value);\r\n repo.infoData_.updateSnapshot(path, newNode);\r\n var events = syncTreeApplyServerOverwrite(repo.infoSyncTree_, path, newNode);\r\n eventQueueRaiseEventsForChangedPath(repo.eventQueue_, path, events);\r\n}\r\nfunction repoGetNextWriteId(repo) {\r\n return repo.nextWriteId_++;\r\n}\r\n/**\r\n * The purpose of `getValue` is to return the latest known value\r\n * satisfying `query`.\r\n *\r\n * This method will first check for in-memory cached values\r\n * belonging to active listeners. If they are found, such values\r\n * are considered to be the most up-to-date.\r\n *\r\n * If the client is not connected, this method will try to\r\n * establish a connection and request the value for `query`. If\r\n * the client is not able to retrieve the query result, it reports\r\n * an error.\r\n *\r\n * @param query - The query to surface a value for.\r\n */\r\nfunction repoGetValue(repo, query) {\r\n // Only active queries are cached. There is no persisted cache.\r\n var cached = syncTreeGetServerValue(repo.serverSyncTree_, query);\r\n if (cached != null) {\r\n return Promise.resolve(cached);\r\n }\r\n return repo.server_.get(query).then(function (payload) {\r\n var node = nodeFromJSON(payload).withIndex(query._queryParams.getIndex());\r\n var events = syncTreeApplyServerOverwrite(repo.serverSyncTree_, query._path, node);\r\n eventQueueRaiseEventsAtPath(repo.eventQueue_, query._path, events);\r\n return Promise.resolve(node);\r\n }, function (err) {\r\n repoLog(repo, 'get for query ' + stringify(query) + ' failed: ' + err);\r\n return Promise.reject(new Error(err));\r\n });\r\n}\r\nfunction repoSetWithPriority(repo, path, newVal, newPriority, onComplete) {\r\n repoLog(repo, 'set', {\r\n path: path.toString(),\r\n value: newVal,\r\n priority: newPriority\r\n });\r\n // TODO: Optimize this behavior to either (a) store flag to skip resolving where possible and / or\r\n // (b) store unresolved paths on JSON parse\r\n var serverValues = repoGenerateServerValues(repo);\r\n var newNodeUnresolved = nodeFromJSON(newVal, newPriority);\r\n var existing = syncTreeCalcCompleteEventCache(repo.serverSyncTree_, path);\r\n var newNode = resolveDeferredValueSnapshot(newNodeUnresolved, existing, serverValues);\r\n var writeId = repoGetNextWriteId(repo);\r\n var events = syncTreeApplyUserOverwrite(repo.serverSyncTree_, path, newNode, writeId, true);\r\n eventQueueQueueEvents(repo.eventQueue_, events);\r\n repo.server_.put(path.toString(), newNodeUnresolved.val(/*export=*/ true), function (status, errorReason) {\r\n var success = status === 'ok';\r\n if (!success) {\r\n warn('set at ' + path + ' failed: ' + status);\r\n }\r\n var clearEvents = syncTreeAckUserWrite(repo.serverSyncTree_, writeId, !success);\r\n eventQueueRaiseEventsForChangedPath(repo.eventQueue_, path, clearEvents);\r\n repoCallOnCompleteCallback(repo, onComplete, status, errorReason);\r\n });\r\n var affectedPath = repoAbortTransactions(repo, path);\r\n repoRerunTransactions(repo, affectedPath);\r\n // We queued the events above, so just flush the queue here\r\n eventQueueRaiseEventsForChangedPath(repo.eventQueue_, affectedPath, []);\r\n}\r\nfunction repoUpdate(repo, path, childrenToMerge, onComplete) {\r\n repoLog(repo, 'update', { path: path.toString(), value: childrenToMerge });\r\n // Start with our existing data and merge each child into it.\r\n var empty = true;\r\n var serverValues = repoGenerateServerValues(repo);\r\n var changedChildren = {};\r\n each(childrenToMerge, function (changedKey, changedValue) {\r\n empty = false;\r\n changedChildren[changedKey] = resolveDeferredValueTree(pathChild(path, changedKey), nodeFromJSON(changedValue), repo.serverSyncTree_, serverValues);\r\n });\r\n if (!empty) {\r\n var writeId_1 = repoGetNextWriteId(repo);\r\n var events = syncTreeApplyUserMerge(repo.serverSyncTree_, path, changedChildren, writeId_1);\r\n eventQueueQueueEvents(repo.eventQueue_, events);\r\n repo.server_.merge(path.toString(), childrenToMerge, function (status, errorReason) {\r\n var success = status === 'ok';\r\n if (!success) {\r\n warn('update at ' + path + ' failed: ' + status);\r\n }\r\n var clearEvents = syncTreeAckUserWrite(repo.serverSyncTree_, writeId_1, !success);\r\n var affectedPath = clearEvents.length > 0 ? repoRerunTransactions(repo, path) : path;\r\n eventQueueRaiseEventsForChangedPath(repo.eventQueue_, affectedPath, clearEvents);\r\n repoCallOnCompleteCallback(repo, onComplete, status, errorReason);\r\n });\r\n each(childrenToMerge, function (changedPath) {\r\n var affectedPath = repoAbortTransactions(repo, pathChild(path, changedPath));\r\n repoRerunTransactions(repo, affectedPath);\r\n });\r\n // We queued the events above, so just flush the queue here\r\n eventQueueRaiseEventsForChangedPath(repo.eventQueue_, path, []);\r\n }\r\n else {\r\n log(\"update() called with empty data. Don't do anything.\");\r\n repoCallOnCompleteCallback(repo, onComplete, 'ok', undefined);\r\n }\r\n}\r\n/**\r\n * Applies all of the changes stored up in the onDisconnect_ tree.\r\n */\r\nfunction repoRunOnDisconnectEvents(repo) {\r\n repoLog(repo, 'onDisconnectEvents');\r\n var serverValues = repoGenerateServerValues(repo);\r\n var resolvedOnDisconnectTree = newSparseSnapshotTree();\r\n sparseSnapshotTreeForEachTree(repo.onDisconnect_, newEmptyPath(), function (path, node) {\r\n var resolved = resolveDeferredValueTree(path, node, repo.serverSyncTree_, serverValues);\r\n sparseSnapshotTreeRemember(resolvedOnDisconnectTree, path, resolved);\r\n });\r\n var events = [];\r\n sparseSnapshotTreeForEachTree(resolvedOnDisconnectTree, newEmptyPath(), function (path, snap) {\r\n events = events.concat(syncTreeApplyServerOverwrite(repo.serverSyncTree_, path, snap));\r\n var affectedPath = repoAbortTransactions(repo, path);\r\n repoRerunTransactions(repo, affectedPath);\r\n });\r\n repo.onDisconnect_ = newSparseSnapshotTree();\r\n eventQueueRaiseEventsForChangedPath(repo.eventQueue_, newEmptyPath(), events);\r\n}\r\nfunction repoOnDisconnectCancel(repo, path, onComplete) {\r\n repo.server_.onDisconnectCancel(path.toString(), function (status, errorReason) {\r\n if (status === 'ok') {\r\n sparseSnapshotTreeForget(repo.onDisconnect_, path);\r\n }\r\n repoCallOnCompleteCallback(repo, onComplete, status, errorReason);\r\n });\r\n}\r\nfunction repoOnDisconnectSet(repo, path, value, onComplete) {\r\n var newNode = nodeFromJSON(value);\r\n repo.server_.onDisconnectPut(path.toString(), newNode.val(/*export=*/ true), function (status, errorReason) {\r\n if (status === 'ok') {\r\n sparseSnapshotTreeRemember(repo.onDisconnect_, path, newNode);\r\n }\r\n repoCallOnCompleteCallback(repo, onComplete, status, errorReason);\r\n });\r\n}\r\nfunction repoOnDisconnectSetWithPriority(repo, path, value, priority, onComplete) {\r\n var newNode = nodeFromJSON(value, priority);\r\n repo.server_.onDisconnectPut(path.toString(), newNode.val(/*export=*/ true), function (status, errorReason) {\r\n if (status === 'ok') {\r\n sparseSnapshotTreeRemember(repo.onDisconnect_, path, newNode);\r\n }\r\n repoCallOnCompleteCallback(repo, onComplete, status, errorReason);\r\n });\r\n}\r\nfunction repoOnDisconnectUpdate(repo, path, childrenToMerge, onComplete) {\r\n if (isEmpty(childrenToMerge)) {\r\n log(\"onDisconnect().update() called with empty data. Don't do anything.\");\r\n repoCallOnCompleteCallback(repo, onComplete, 'ok', undefined);\r\n return;\r\n }\r\n repo.server_.onDisconnectMerge(path.toString(), childrenToMerge, function (status, errorReason) {\r\n if (status === 'ok') {\r\n each(childrenToMerge, function (childName, childNode) {\r\n var newChildNode = nodeFromJSON(childNode);\r\n sparseSnapshotTreeRemember(repo.onDisconnect_, pathChild(path, childName), newChildNode);\r\n });\r\n }\r\n repoCallOnCompleteCallback(repo, onComplete, status, errorReason);\r\n });\r\n}\r\nfunction repoAddEventCallbackForQuery(repo, query, eventRegistration) {\r\n var events;\r\n if (pathGetFront(query._path) === '.info') {\r\n events = syncTreeAddEventRegistration(repo.infoSyncTree_, query, eventRegistration);\r\n }\r\n else {\r\n events = syncTreeAddEventRegistration(repo.serverSyncTree_, query, eventRegistration);\r\n }\r\n eventQueueRaiseEventsAtPath(repo.eventQueue_, query._path, events);\r\n}\r\nfunction repoRemoveEventCallbackForQuery(repo, query, eventRegistration) {\r\n // These are guaranteed not to raise events, since we're not passing in a cancelError. However, we can future-proof\r\n // a little bit by handling the return values anyways.\r\n var events;\r\n if (pathGetFront(query._path) === '.info') {\r\n events = syncTreeRemoveEventRegistration(repo.infoSyncTree_, query, eventRegistration);\r\n }\r\n else {\r\n events = syncTreeRemoveEventRegistration(repo.serverSyncTree_, query, eventRegistration);\r\n }\r\n eventQueueRaiseEventsAtPath(repo.eventQueue_, query._path, events);\r\n}\r\nfunction repoInterrupt(repo) {\r\n if (repo.persistentConnection_) {\r\n repo.persistentConnection_.interrupt(INTERRUPT_REASON);\r\n }\r\n}\r\nfunction repoResume(repo) {\r\n if (repo.persistentConnection_) {\r\n repo.persistentConnection_.resume(INTERRUPT_REASON);\r\n }\r\n}\r\nfunction repoStats(repo, showDelta) {\r\n if (showDelta === void 0) { showDelta = false; }\r\n if (typeof console === 'undefined') {\r\n return;\r\n }\r\n var stats;\r\n if (showDelta) {\r\n if (!repo.statsListener_) {\r\n repo.statsListener_ = new StatsListener(repo.stats_);\r\n }\r\n stats = repo.statsListener_.get();\r\n }\r\n else {\r\n stats = repo.stats_.get();\r\n }\r\n var longestName = Object.keys(stats).reduce(function (previousValue, currentValue) {\r\n return Math.max(currentValue.length, previousValue);\r\n }, 0);\r\n each(stats, function (stat, value) {\r\n var paddedStat = stat;\r\n // pad stat names to be the same length (plus 2 extra spaces).\r\n for (var i = stat.length; i < longestName + 2; i++) {\r\n paddedStat += ' ';\r\n }\r\n console.log(paddedStat + value);\r\n });\r\n}\r\nfunction repoStatsIncrementCounter(repo, metric) {\r\n repo.stats_.incrementCounter(metric);\r\n statsReporterIncludeStat(repo.statsReporter_, metric);\r\n}\r\nfunction repoLog(repo) {\r\n var varArgs = [];\r\n for (var _i = 1; _i < arguments.length; _i++) {\r\n varArgs[_i - 1] = arguments[_i];\r\n }\r\n var prefix = '';\r\n if (repo.persistentConnection_) {\r\n prefix = repo.persistentConnection_.id + ':';\r\n }\r\n log.apply(void 0, __spreadArray([prefix], __read(varArgs)));\r\n}\r\nfunction repoCallOnCompleteCallback(repo, callback, status, errorReason) {\r\n if (callback) {\r\n exceptionGuard(function () {\r\n if (status === 'ok') {\r\n callback(null);\r\n }\r\n else {\r\n var code = (status || 'error').toUpperCase();\r\n var message = code;\r\n if (errorReason) {\r\n message += ': ' + errorReason;\r\n }\r\n var error = new Error(message);\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n error.code = code;\r\n callback(error);\r\n }\r\n });\r\n }\r\n}\r\n/**\r\n * Creates a new transaction, adds it to the transactions we're tracking, and\r\n * sends it to the server if possible.\r\n *\r\n * @param path - Path at which to do transaction.\r\n * @param transactionUpdate - Update callback.\r\n * @param onComplete - Completion callback.\r\n * @param unwatcher - Function that will be called when the transaction no longer\r\n * need data updates for `path`.\r\n * @param applyLocally - Whether or not to make intermediate results visible\r\n */\r\nfunction repoStartTransaction(repo, path, transactionUpdate, onComplete, unwatcher, applyLocally) {\r\n repoLog(repo, 'transaction on ' + path);\r\n // Initialize transaction.\r\n var transaction = {\r\n path: path,\r\n update: transactionUpdate,\r\n onComplete: onComplete,\r\n // One of TransactionStatus enums.\r\n status: null,\r\n // Used when combining transactions at different locations to figure out\r\n // which one goes first.\r\n order: LUIDGenerator(),\r\n // Whether to raise local events for this transaction.\r\n applyLocally: applyLocally,\r\n // Count of how many times we've retried the transaction.\r\n retryCount: 0,\r\n // Function to call to clean up our .on() listener.\r\n unwatcher: unwatcher,\r\n // Stores why a transaction was aborted.\r\n abortReason: null,\r\n currentWriteId: null,\r\n currentInputSnapshot: null,\r\n currentOutputSnapshotRaw: null,\r\n currentOutputSnapshotResolved: null\r\n };\r\n // Run transaction initially.\r\n var currentState = repoGetLatestState(repo, path, undefined);\r\n transaction.currentInputSnapshot = currentState;\r\n var newVal = transaction.update(currentState.val());\r\n if (newVal === undefined) {\r\n // Abort transaction.\r\n transaction.unwatcher();\r\n transaction.currentOutputSnapshotRaw = null;\r\n transaction.currentOutputSnapshotResolved = null;\r\n if (transaction.onComplete) {\r\n transaction.onComplete(null, false, transaction.currentInputSnapshot);\r\n }\r\n }\r\n else {\r\n validateFirebaseData('transaction failed: Data returned ', newVal, transaction.path);\r\n // Mark as run and add to our queue.\r\n transaction.status = 0 /* RUN */;\r\n var queueNode = treeSubTree(repo.transactionQueueTree_, path);\r\n var nodeQueue = treeGetValue(queueNode) || [];\r\n nodeQueue.push(transaction);\r\n treeSetValue(queueNode, nodeQueue);\r\n // Update visibleData and raise events\r\n // Note: We intentionally raise events after updating all of our\r\n // transaction state, since the user could start new transactions from the\r\n // event callbacks.\r\n var priorityForNode = void 0;\r\n if (typeof newVal === 'object' &&\r\n newVal !== null &&\r\n contains(newVal, '.priority')) {\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n priorityForNode = safeGet(newVal, '.priority');\r\n assert(isValidPriority(priorityForNode), 'Invalid priority returned by transaction. ' +\r\n 'Priority must be a valid string, finite number, server value, or null.');\r\n }\r\n else {\r\n var currentNode = syncTreeCalcCompleteEventCache(repo.serverSyncTree_, path) ||\r\n ChildrenNode.EMPTY_NODE;\r\n priorityForNode = currentNode.getPriority().val();\r\n }\r\n var serverValues = repoGenerateServerValues(repo);\r\n var newNodeUnresolved = nodeFromJSON(newVal, priorityForNode);\r\n var newNode = resolveDeferredValueSnapshot(newNodeUnresolved, currentState, serverValues);\r\n transaction.currentOutputSnapshotRaw = newNodeUnresolved;\r\n transaction.currentOutputSnapshotResolved = newNode;\r\n transaction.currentWriteId = repoGetNextWriteId(repo);\r\n var events = syncTreeApplyUserOverwrite(repo.serverSyncTree_, path, newNode, transaction.currentWriteId, transaction.applyLocally);\r\n eventQueueRaiseEventsForChangedPath(repo.eventQueue_, path, events);\r\n repoSendReadyTransactions(repo, repo.transactionQueueTree_);\r\n }\r\n}\r\n/**\r\n * @param excludeSets - A specific set to exclude\r\n */\r\nfunction repoGetLatestState(repo, path, excludeSets) {\r\n return (syncTreeCalcCompleteEventCache(repo.serverSyncTree_, path, excludeSets) ||\r\n ChildrenNode.EMPTY_NODE);\r\n}\r\n/**\r\n * Sends any already-run transactions that aren't waiting for outstanding\r\n * transactions to complete.\r\n *\r\n * Externally it's called with no arguments, but it calls itself recursively\r\n * with a particular transactionQueueTree node to recurse through the tree.\r\n *\r\n * @param node - transactionQueueTree node to start at.\r\n */\r\nfunction repoSendReadyTransactions(repo, node) {\r\n if (node === void 0) { node = repo.transactionQueueTree_; }\r\n // Before recursing, make sure any completed transactions are removed.\r\n if (!node) {\r\n repoPruneCompletedTransactionsBelowNode(repo, node);\r\n }\r\n if (treeGetValue(node)) {\r\n var queue = repoBuildTransactionQueue(repo, node);\r\n assert(queue.length > 0, 'Sending zero length transaction queue');\r\n var allRun = queue.every(function (transaction) { return transaction.status === 0 /* RUN */; });\r\n // If they're all run (and not sent), we can send them. Else, we must wait.\r\n if (allRun) {\r\n repoSendTransactionQueue(repo, treeGetPath(node), queue);\r\n }\r\n }\r\n else if (treeHasChildren(node)) {\r\n treeForEachChild(node, function (childNode) {\r\n repoSendReadyTransactions(repo, childNode);\r\n });\r\n }\r\n}\r\n/**\r\n * Given a list of run transactions, send them to the server and then handle\r\n * the result (success or failure).\r\n *\r\n * @param path - The location of the queue.\r\n * @param queue - Queue of transactions under the specified location.\r\n */\r\nfunction repoSendTransactionQueue(repo, path, queue) {\r\n // Mark transactions as sent and increment retry count!\r\n var setsToIgnore = queue.map(function (txn) {\r\n return txn.currentWriteId;\r\n });\r\n var latestState = repoGetLatestState(repo, path, setsToIgnore);\r\n var snapToSend = latestState;\r\n var latestHash = latestState.hash();\r\n for (var i = 0; i < queue.length; i++) {\r\n var txn = queue[i];\r\n assert(txn.status === 0 /* RUN */, 'tryToSendTransactionQueue_: items in queue should all be run.');\r\n txn.status = 1 /* SENT */;\r\n txn.retryCount++;\r\n var relativePath = newRelativePath(path, txn.path);\r\n // If we've gotten to this point, the output snapshot must be defined.\r\n snapToSend = snapToSend.updateChild(relativePath /** @type {!Node} */, txn.currentOutputSnapshotRaw);\r\n }\r\n var dataToSend = snapToSend.val(true);\r\n var pathToSend = path;\r\n // Send the put.\r\n repo.server_.put(pathToSend.toString(), dataToSend, function (status) {\r\n repoLog(repo, 'transaction put response', {\r\n path: pathToSend.toString(),\r\n status: status\r\n });\r\n var events = [];\r\n if (status === 'ok') {\r\n // Queue up the callbacks and fire them after cleaning up all of our\r\n // transaction state, since the callback could trigger more\r\n // transactions or sets.\r\n var callbacks = [];\r\n var _loop_1 = function (i) {\r\n queue[i].status = 2 /* COMPLETED */;\r\n events = events.concat(syncTreeAckUserWrite(repo.serverSyncTree_, queue[i].currentWriteId));\r\n if (queue[i].onComplete) {\r\n // We never unset the output snapshot, and given that this\r\n // transaction is complete, it should be set\r\n callbacks.push(function () {\r\n return queue[i].onComplete(null, true, queue[i].currentOutputSnapshotResolved);\r\n });\r\n }\r\n queue[i].unwatcher();\r\n };\r\n for (var i = 0; i < queue.length; i++) {\r\n _loop_1(i);\r\n }\r\n // Now remove the completed transactions.\r\n repoPruneCompletedTransactionsBelowNode(repo, treeSubTree(repo.transactionQueueTree_, path));\r\n // There may be pending transactions that we can now send.\r\n repoSendReadyTransactions(repo, repo.transactionQueueTree_);\r\n eventQueueRaiseEventsForChangedPath(repo.eventQueue_, path, events);\r\n // Finally, trigger onComplete callbacks.\r\n for (var i = 0; i < callbacks.length; i++) {\r\n exceptionGuard(callbacks[i]);\r\n }\r\n }\r\n else {\r\n // transactions are no longer sent. Update their status appropriately.\r\n if (status === 'datastale') {\r\n for (var i = 0; i < queue.length; i++) {\r\n if (queue[i].status === 3 /* SENT_NEEDS_ABORT */) {\r\n queue[i].status = 4 /* NEEDS_ABORT */;\r\n }\r\n else {\r\n queue[i].status = 0 /* RUN */;\r\n }\r\n }\r\n }\r\n else {\r\n warn('transaction at ' + pathToSend.toString() + ' failed: ' + status);\r\n for (var i = 0; i < queue.length; i++) {\r\n queue[i].status = 4 /* NEEDS_ABORT */;\r\n queue[i].abortReason = status;\r\n }\r\n }\r\n repoRerunTransactions(repo, path);\r\n }\r\n }, latestHash);\r\n}\r\n/**\r\n * Finds all transactions dependent on the data at changedPath and reruns them.\r\n *\r\n * Should be called any time cached data changes.\r\n *\r\n * Return the highest path that was affected by rerunning transactions. This\r\n * is the path at which events need to be raised for.\r\n *\r\n * @param changedPath - The path in mergedData that changed.\r\n * @returns The rootmost path that was affected by rerunning transactions.\r\n */\r\nfunction repoRerunTransactions(repo, changedPath) {\r\n var rootMostTransactionNode = repoGetAncestorTransactionNode(repo, changedPath);\r\n var path = treeGetPath(rootMostTransactionNode);\r\n var queue = repoBuildTransactionQueue(repo, rootMostTransactionNode);\r\n repoRerunTransactionQueue(repo, queue, path);\r\n return path;\r\n}\r\n/**\r\n * Does all the work of rerunning transactions (as well as cleans up aborted\r\n * transactions and whatnot).\r\n *\r\n * @param queue - The queue of transactions to run.\r\n * @param path - The path the queue is for.\r\n */\r\nfunction repoRerunTransactionQueue(repo, queue, path) {\r\n if (queue.length === 0) {\r\n return; // Nothing to do!\r\n }\r\n // Queue up the callbacks and fire them after cleaning up all of our\r\n // transaction state, since the callback could trigger more transactions or\r\n // sets.\r\n var callbacks = [];\r\n var events = [];\r\n // Ignore all of the sets we're going to re-run.\r\n var txnsToRerun = queue.filter(function (q) {\r\n return q.status === 0 /* RUN */;\r\n });\r\n var setsToIgnore = txnsToRerun.map(function (q) {\r\n return q.currentWriteId;\r\n });\r\n var _loop_2 = function (i) {\r\n var transaction = queue[i];\r\n var relativePath = newRelativePath(path, transaction.path);\r\n var abortTransaction = false, abortReason;\r\n assert(relativePath !== null, 'rerunTransactionsUnderNode_: relativePath should not be null.');\r\n if (transaction.status === 4 /* NEEDS_ABORT */) {\r\n abortTransaction = true;\r\n abortReason = transaction.abortReason;\r\n events = events.concat(syncTreeAckUserWrite(repo.serverSyncTree_, transaction.currentWriteId, true));\r\n }\r\n else if (transaction.status === 0 /* RUN */) {\r\n if (transaction.retryCount >= MAX_TRANSACTION_RETRIES) {\r\n abortTransaction = true;\r\n abortReason = 'maxretry';\r\n events = events.concat(syncTreeAckUserWrite(repo.serverSyncTree_, transaction.currentWriteId, true));\r\n }\r\n else {\r\n // This code reruns a transaction\r\n var currentNode = repoGetLatestState(repo, transaction.path, setsToIgnore);\r\n transaction.currentInputSnapshot = currentNode;\r\n var newData = queue[i].update(currentNode.val());\r\n if (newData !== undefined) {\r\n validateFirebaseData('transaction failed: Data returned ', newData, transaction.path);\r\n var newDataNode = nodeFromJSON(newData);\r\n var hasExplicitPriority = typeof newData === 'object' &&\r\n newData != null &&\r\n contains(newData, '.priority');\r\n if (!hasExplicitPriority) {\r\n // Keep the old priority if there wasn't a priority explicitly specified.\r\n newDataNode = newDataNode.updatePriority(currentNode.getPriority());\r\n }\r\n var oldWriteId = transaction.currentWriteId;\r\n var serverValues = repoGenerateServerValues(repo);\r\n var newNodeResolved = resolveDeferredValueSnapshot(newDataNode, currentNode, serverValues);\r\n transaction.currentOutputSnapshotRaw = newDataNode;\r\n transaction.currentOutputSnapshotResolved = newNodeResolved;\r\n transaction.currentWriteId = repoGetNextWriteId(repo);\r\n // Mutates setsToIgnore in place\r\n setsToIgnore.splice(setsToIgnore.indexOf(oldWriteId), 1);\r\n events = events.concat(syncTreeApplyUserOverwrite(repo.serverSyncTree_, transaction.path, newNodeResolved, transaction.currentWriteId, transaction.applyLocally));\r\n events = events.concat(syncTreeAckUserWrite(repo.serverSyncTree_, oldWriteId, true));\r\n }\r\n else {\r\n abortTransaction = true;\r\n abortReason = 'nodata';\r\n events = events.concat(syncTreeAckUserWrite(repo.serverSyncTree_, transaction.currentWriteId, true));\r\n }\r\n }\r\n }\r\n eventQueueRaiseEventsForChangedPath(repo.eventQueue_, path, events);\r\n events = [];\r\n if (abortTransaction) {\r\n // Abort.\r\n queue[i].status = 2 /* COMPLETED */;\r\n // Removing a listener can trigger pruning which can muck with\r\n // mergedData/visibleData (as it prunes data). So defer the unwatcher\r\n // until we're done.\r\n (function (unwatcher) {\r\n setTimeout(unwatcher, Math.floor(0));\r\n })(queue[i].unwatcher);\r\n if (queue[i].onComplete) {\r\n if (abortReason === 'nodata') {\r\n callbacks.push(function () {\r\n return queue[i].onComplete(null, false, queue[i].currentInputSnapshot);\r\n });\r\n }\r\n else {\r\n callbacks.push(function () {\r\n return queue[i].onComplete(new Error(abortReason), false, null);\r\n });\r\n }\r\n }\r\n }\r\n };\r\n for (var i = 0; i < queue.length; i++) {\r\n _loop_2(i);\r\n }\r\n // Clean up completed transactions.\r\n repoPruneCompletedTransactionsBelowNode(repo, repo.transactionQueueTree_);\r\n // Now fire callbacks, now that we're in a good, known state.\r\n for (var i = 0; i < callbacks.length; i++) {\r\n exceptionGuard(callbacks[i]);\r\n }\r\n // Try to send the transaction result to the server.\r\n repoSendReadyTransactions(repo, repo.transactionQueueTree_);\r\n}\r\n/**\r\n * Returns the rootmost ancestor node of the specified path that has a pending\r\n * transaction on it, or just returns the node for the given path if there are\r\n * no pending transactions on any ancestor.\r\n *\r\n * @param path - The location to start at.\r\n * @returns The rootmost node with a transaction.\r\n */\r\nfunction repoGetAncestorTransactionNode(repo, path) {\r\n var front;\r\n // Start at the root and walk deeper into the tree towards path until we\r\n // find a node with pending transactions.\r\n var transactionNode = repo.transactionQueueTree_;\r\n front = pathGetFront(path);\r\n while (front !== null && treeGetValue(transactionNode) === undefined) {\r\n transactionNode = treeSubTree(transactionNode, front);\r\n path = pathPopFront(path);\r\n front = pathGetFront(path);\r\n }\r\n return transactionNode;\r\n}\r\n/**\r\n * Builds the queue of all transactions at or below the specified\r\n * transactionNode.\r\n *\r\n * @param transactionNode\r\n * @returns The generated queue.\r\n */\r\nfunction repoBuildTransactionQueue(repo, transactionNode) {\r\n // Walk any child transaction queues and aggregate them into a single queue.\r\n var transactionQueue = [];\r\n repoAggregateTransactionQueuesForNode(repo, transactionNode, transactionQueue);\r\n // Sort them by the order the transactions were created.\r\n transactionQueue.sort(function (a, b) { return a.order - b.order; });\r\n return transactionQueue;\r\n}\r\nfunction repoAggregateTransactionQueuesForNode(repo, node, queue) {\r\n var nodeQueue = treeGetValue(node);\r\n if (nodeQueue) {\r\n for (var i = 0; i < nodeQueue.length; i++) {\r\n queue.push(nodeQueue[i]);\r\n }\r\n }\r\n treeForEachChild(node, function (child) {\r\n repoAggregateTransactionQueuesForNode(repo, child, queue);\r\n });\r\n}\r\n/**\r\n * Remove COMPLETED transactions at or below this node in the transactionQueueTree_.\r\n */\r\nfunction repoPruneCompletedTransactionsBelowNode(repo, node) {\r\n var queue = treeGetValue(node);\r\n if (queue) {\r\n var to = 0;\r\n for (var from = 0; from < queue.length; from++) {\r\n if (queue[from].status !== 2 /* COMPLETED */) {\r\n queue[to] = queue[from];\r\n to++;\r\n }\r\n }\r\n queue.length = to;\r\n treeSetValue(node, queue.length > 0 ? queue : undefined);\r\n }\r\n treeForEachChild(node, function (childNode) {\r\n repoPruneCompletedTransactionsBelowNode(repo, childNode);\r\n });\r\n}\r\n/**\r\n * Aborts all transactions on ancestors or descendants of the specified path.\r\n * Called when doing a set() or update() since we consider them incompatible\r\n * with transactions.\r\n *\r\n * @param path - Path for which we want to abort related transactions.\r\n */\r\nfunction repoAbortTransactions(repo, path) {\r\n var affectedPath = treeGetPath(repoGetAncestorTransactionNode(repo, path));\r\n var transactionNode = treeSubTree(repo.transactionQueueTree_, path);\r\n treeForEachAncestor(transactionNode, function (node) {\r\n repoAbortTransactionsOnNode(repo, node);\r\n });\r\n repoAbortTransactionsOnNode(repo, transactionNode);\r\n treeForEachDescendant(transactionNode, function (node) {\r\n repoAbortTransactionsOnNode(repo, node);\r\n });\r\n return affectedPath;\r\n}\r\n/**\r\n * Abort transactions stored in this transaction queue node.\r\n *\r\n * @param node - Node to abort transactions for.\r\n */\r\nfunction repoAbortTransactionsOnNode(repo, node) {\r\n var queue = treeGetValue(node);\r\n if (queue) {\r\n // Queue up the callbacks and fire them after cleaning up all of our\r\n // transaction state, since the callback could trigger more transactions\r\n // or sets.\r\n var callbacks = [];\r\n // Go through queue. Any already-sent transactions must be marked for\r\n // abort, while the unsent ones can be immediately aborted and removed.\r\n var events = [];\r\n var lastSent = -1;\r\n for (var i = 0; i < queue.length; i++) {\r\n if (queue[i].status === 3 /* SENT_NEEDS_ABORT */) ;\r\n else if (queue[i].status === 1 /* SENT */) {\r\n assert(lastSent === i - 1, 'All SENT items should be at beginning of queue.');\r\n lastSent = i;\r\n // Mark transaction for abort when it comes back.\r\n queue[i].status = 3 /* SENT_NEEDS_ABORT */;\r\n queue[i].abortReason = 'set';\r\n }\r\n else {\r\n assert(queue[i].status === 0 /* RUN */, 'Unexpected transaction status in abort');\r\n // We can abort it immediately.\r\n queue[i].unwatcher();\r\n events = events.concat(syncTreeAckUserWrite(repo.serverSyncTree_, queue[i].currentWriteId, true));\r\n if (queue[i].onComplete) {\r\n callbacks.push(queue[i].onComplete.bind(null, new Error('set'), false, null));\r\n }\r\n }\r\n }\r\n if (lastSent === -1) {\r\n // We're not waiting for any sent transactions. We can clear the queue.\r\n treeSetValue(node, undefined);\r\n }\r\n else {\r\n // Remove the transactions we aborted.\r\n queue.length = lastSent + 1;\r\n }\r\n // Now fire the callbacks.\r\n eventQueueRaiseEventsForChangedPath(repo.eventQueue_, treeGetPath(node), events);\r\n for (var i = 0; i < callbacks.length; i++) {\r\n exceptionGuard(callbacks[i]);\r\n }\r\n }\r\n}\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nfunction decodePath(pathString) {\r\n var pathStringDecoded = '';\r\n var pieces = pathString.split('/');\r\n for (var i = 0; i < pieces.length; i++) {\r\n if (pieces[i].length > 0) {\r\n var piece = pieces[i];\r\n try {\r\n piece = decodeURIComponent(piece.replace(/\\+/g, ' '));\r\n }\r\n catch (e) { }\r\n pathStringDecoded += '/' + piece;\r\n }\r\n }\r\n return pathStringDecoded;\r\n}\r\n/**\r\n * @returns key value hash\r\n */\r\nfunction decodeQuery(queryString) {\r\n var e_1, _a;\r\n var results = {};\r\n if (queryString.charAt(0) === '?') {\r\n queryString = queryString.substring(1);\r\n }\r\n try {\r\n for (var _b = __values(queryString.split('&')), _c = _b.next(); !_c.done; _c = _b.next()) {\r\n var segment = _c.value;\r\n if (segment.length === 0) {\r\n continue;\r\n }\r\n var kv = segment.split('=');\r\n if (kv.length === 2) {\r\n results[decodeURIComponent(kv[0])] = decodeURIComponent(kv[1]);\r\n }\r\n else {\r\n warn(\"Invalid query segment '\" + segment + \"' in query '\" + queryString + \"'\");\r\n }\r\n }\r\n }\r\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\r\n finally {\r\n try {\r\n if (_c && !_c.done && (_a = _b.return)) _a.call(_b);\r\n }\r\n finally { if (e_1) throw e_1.error; }\r\n }\r\n return results;\r\n}\r\nvar parseRepoInfo = function (dataURL, nodeAdmin) {\r\n var parsedUrl = parseDatabaseURL(dataURL), namespace = parsedUrl.namespace;\r\n if (parsedUrl.domain === 'firebase.com') {\r\n fatal(parsedUrl.host +\r\n ' is no longer supported. ' +\r\n 'Please use .firebaseio.com instead');\r\n }\r\n // Catch common error of uninitialized namespace value.\r\n if ((!namespace || namespace === 'undefined') &&\r\n parsedUrl.domain !== 'localhost') {\r\n fatal('Cannot parse Firebase url. Please use https://.firebaseio.com');\r\n }\r\n if (!parsedUrl.secure) {\r\n warnIfPageIsSecure();\r\n }\r\n var webSocketOnly = parsedUrl.scheme === 'ws' || parsedUrl.scheme === 'wss';\r\n return {\r\n repoInfo: new RepoInfo(parsedUrl.host, parsedUrl.secure, namespace, nodeAdmin, webSocketOnly, \r\n /*persistenceKey=*/ '', \r\n /*includeNamespaceInQueryParams=*/ namespace !== parsedUrl.subdomain),\r\n path: new Path(parsedUrl.pathString)\r\n };\r\n};\r\nvar parseDatabaseURL = function (dataURL) {\r\n // Default to empty strings in the event of a malformed string.\r\n var host = '', domain = '', subdomain = '', pathString = '', namespace = '';\r\n // Always default to SSL, unless otherwise specified.\r\n var secure = true, scheme = 'https', port = 443;\r\n // Don't do any validation here. The caller is responsible for validating the result of parsing.\r\n if (typeof dataURL === 'string') {\r\n // Parse scheme.\r\n var colonInd = dataURL.indexOf('//');\r\n if (colonInd >= 0) {\r\n scheme = dataURL.substring(0, colonInd - 1);\r\n dataURL = dataURL.substring(colonInd + 2);\r\n }\r\n // Parse host, path, and query string.\r\n var slashInd = dataURL.indexOf('/');\r\n if (slashInd === -1) {\r\n slashInd = dataURL.length;\r\n }\r\n var questionMarkInd = dataURL.indexOf('?');\r\n if (questionMarkInd === -1) {\r\n questionMarkInd = dataURL.length;\r\n }\r\n host = dataURL.substring(0, Math.min(slashInd, questionMarkInd));\r\n if (slashInd < questionMarkInd) {\r\n // For pathString, questionMarkInd will always come after slashInd\r\n pathString = decodePath(dataURL.substring(slashInd, questionMarkInd));\r\n }\r\n var queryParams = decodeQuery(dataURL.substring(Math.min(dataURL.length, questionMarkInd)));\r\n // If we have a port, use scheme for determining if it's secure.\r\n colonInd = host.indexOf(':');\r\n if (colonInd >= 0) {\r\n secure = scheme === 'https' || scheme === 'wss';\r\n port = parseInt(host.substring(colonInd + 1), 10);\r\n }\r\n else {\r\n colonInd = host.length;\r\n }\r\n var hostWithoutPort = host.slice(0, colonInd);\r\n if (hostWithoutPort.toLowerCase() === 'localhost') {\r\n domain = 'localhost';\r\n }\r\n else if (hostWithoutPort.split('.').length <= 2) {\r\n domain = hostWithoutPort;\r\n }\r\n else {\r\n // Interpret the subdomain of a 3 or more component URL as the namespace name.\r\n var dotInd = host.indexOf('.');\r\n subdomain = host.substring(0, dotInd).toLowerCase();\r\n domain = host.substring(dotInd + 1);\r\n // Normalize namespaces to lowercase to share storage / connection.\r\n namespace = subdomain;\r\n }\r\n // Always treat the value of the `ns` as the namespace name if it is present.\r\n if ('ns' in queryParams) {\r\n namespace = queryParams['ns'];\r\n }\r\n }\r\n return {\r\n host: host,\r\n port: port,\r\n domain: domain,\r\n subdomain: subdomain,\r\n secure: secure,\r\n scheme: scheme,\r\n pathString: pathString,\r\n namespace: namespace\r\n };\r\n};\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * Encapsulates the data needed to raise an event\r\n */\r\nvar DataEvent = /** @class */ (function () {\r\n /**\r\n * @param eventType - One of: value, child_added, child_changed, child_moved, child_removed\r\n * @param eventRegistration - The function to call to with the event data. User provided\r\n * @param snapshot - The data backing the event\r\n * @param prevName - Optional, the name of the previous child for child_* events.\r\n */\r\n function DataEvent(eventType, eventRegistration, snapshot, prevName) {\r\n this.eventType = eventType;\r\n this.eventRegistration = eventRegistration;\r\n this.snapshot = snapshot;\r\n this.prevName = prevName;\r\n }\r\n DataEvent.prototype.getPath = function () {\r\n var ref = this.snapshot.ref;\r\n if (this.eventType === 'value') {\r\n return ref._path;\r\n }\r\n else {\r\n return ref.parent._path;\r\n }\r\n };\r\n DataEvent.prototype.getEventType = function () {\r\n return this.eventType;\r\n };\r\n DataEvent.prototype.getEventRunner = function () {\r\n return this.eventRegistration.getEventRunner(this);\r\n };\r\n DataEvent.prototype.toString = function () {\r\n return (this.getPath().toString() +\r\n ':' +\r\n this.eventType +\r\n ':' +\r\n stringify(this.snapshot.exportVal()));\r\n };\r\n return DataEvent;\r\n}());\r\nvar CancelEvent = /** @class */ (function () {\r\n function CancelEvent(eventRegistration, error, path) {\r\n this.eventRegistration = eventRegistration;\r\n this.error = error;\r\n this.path = path;\r\n }\r\n CancelEvent.prototype.getPath = function () {\r\n return this.path;\r\n };\r\n CancelEvent.prototype.getEventType = function () {\r\n return 'cancel';\r\n };\r\n CancelEvent.prototype.getEventRunner = function () {\r\n return this.eventRegistration.getEventRunner(this);\r\n };\r\n CancelEvent.prototype.toString = function () {\r\n return this.path.toString() + ':cancel';\r\n };\r\n return CancelEvent;\r\n}());\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * A wrapper class that converts events from the database@exp SDK to the legacy\r\n * Database SDK. Events are not converted directly as event registration relies\r\n * on reference comparison of the original user callback (see `matches()`) and\r\n * relies on equality of the legacy SDK's `context` object.\r\n */\r\nvar CallbackContext = /** @class */ (function () {\r\n function CallbackContext(snapshotCallback, cancelCallback) {\r\n this.snapshotCallback = snapshotCallback;\r\n this.cancelCallback = cancelCallback;\r\n }\r\n CallbackContext.prototype.onValue = function (expDataSnapshot, previousChildName) {\r\n this.snapshotCallback.call(null, expDataSnapshot, previousChildName);\r\n };\r\n CallbackContext.prototype.onCancel = function (error) {\r\n assert(this.hasCancelCallback, 'Raising a cancel event on a listener with no cancel callback');\r\n return this.cancelCallback.call(null, error);\r\n };\r\n Object.defineProperty(CallbackContext.prototype, \"hasCancelCallback\", {\r\n get: function () {\r\n return !!this.cancelCallback;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n CallbackContext.prototype.matches = function (other) {\r\n return (this.snapshotCallback === other.snapshotCallback ||\r\n (this.snapshotCallback.userCallback !== undefined &&\r\n this.snapshotCallback.userCallback ===\r\n other.snapshotCallback.userCallback &&\r\n this.snapshotCallback.context === other.snapshotCallback.context));\r\n };\r\n return CallbackContext;\r\n}());\n\n/**\r\n * @license\r\n * Copyright 2021 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * The `onDisconnect` class allows you to write or clear data when your client\r\n * disconnects from the Database server. These updates occur whether your\r\n * client disconnects cleanly or not, so you can rely on them to clean up data\r\n * even if a connection is dropped or a client crashes.\r\n *\r\n * The `onDisconnect` class is most commonly used to manage presence in\r\n * applications where it is useful to detect how many clients are connected and\r\n * when other clients disconnect. See\r\n * {@link https://firebase.google.com/docs/database/web/offline-capabilities | Enabling Offline Capabilities in JavaScript}\r\n * for more information.\r\n *\r\n * To avoid problems when a connection is dropped before the requests can be\r\n * transferred to the Database server, these functions should be called before\r\n * writing any data.\r\n *\r\n * Note that `onDisconnect` operations are only triggered once. If you want an\r\n * operation to occur each time a disconnect occurs, you'll need to re-establish\r\n * the `onDisconnect` operations each time you reconnect.\r\n */\r\nvar OnDisconnect$1 = /** @class */ (function () {\r\n /** @hideconstructor */\r\n function OnDisconnect(_repo, _path) {\r\n this._repo = _repo;\r\n this._path = _path;\r\n }\r\n /**\r\n * Cancels all previously queued `onDisconnect()` set or update events for this\r\n * location and all children.\r\n *\r\n * If a write has been queued for this location via a `set()` or `update()` at a\r\n * parent location, the write at this location will be canceled, though writes\r\n * to sibling locations will still occur.\r\n *\r\n * @returns Resolves when synchronization to the server is complete.\r\n */\r\n OnDisconnect.prototype.cancel = function () {\r\n var deferred = new Deferred();\r\n repoOnDisconnectCancel(this._repo, this._path, deferred.wrapCallback(function () { }));\r\n return deferred.promise;\r\n };\r\n /**\r\n * Ensures the data at this location is deleted when the client is disconnected\r\n * (due to closing the browser, navigating to a new page, or network issues).\r\n *\r\n * @returns Resolves when synchronization to the server is complete.\r\n */\r\n OnDisconnect.prototype.remove = function () {\r\n validateWritablePath('OnDisconnect.remove', this._path);\r\n var deferred = new Deferred();\r\n repoOnDisconnectSet(this._repo, this._path, null, deferred.wrapCallback(function () { }));\r\n return deferred.promise;\r\n };\r\n /**\r\n * Ensures the data at this location is set to the specified value when the\r\n * client is disconnected (due to closing the browser, navigating to a new page,\r\n * or network issues).\r\n *\r\n * `set()` is especially useful for implementing \"presence\" systems, where a\r\n * value should be changed or cleared when a user disconnects so that they\r\n * appear \"offline\" to other users. See\r\n * {@link https://firebase.google.com/docs/database/web/offline-capabilities | Enabling Offline Capabilities in JavaScript}\r\n * for more information.\r\n *\r\n * Note that `onDisconnect` operations are only triggered once. If you want an\r\n * operation to occur each time a disconnect occurs, you'll need to re-establish\r\n * the `onDisconnect` operations each time.\r\n *\r\n * @param value - The value to be written to this location on disconnect (can\r\n * be an object, array, string, number, boolean, or null).\r\n * @returns Resolves when synchronization to the Database is complete.\r\n */\r\n OnDisconnect.prototype.set = function (value) {\r\n validateWritablePath('OnDisconnect.set', this._path);\r\n validateFirebaseDataArg('OnDisconnect.set', value, this._path, false);\r\n var deferred = new Deferred();\r\n repoOnDisconnectSet(this._repo, this._path, value, deferred.wrapCallback(function () { }));\r\n return deferred.promise;\r\n };\r\n /**\r\n * Ensures the data at this location is set to the specified value and priority\r\n * when the client is disconnected (due to closing the browser, navigating to a\r\n * new page, or network issues).\r\n *\r\n * @param value - The value to be written to this location on disconnect (can\r\n * be an object, array, string, number, boolean, or null).\r\n * @param priority - The priority to be written (string, number, or null).\r\n * @returns Resolves when synchronization to the Database is complete.\r\n */\r\n OnDisconnect.prototype.setWithPriority = function (value, priority) {\r\n validateWritablePath('OnDisconnect.setWithPriority', this._path);\r\n validateFirebaseDataArg('OnDisconnect.setWithPriority', value, this._path, false);\r\n validatePriority('OnDisconnect.setWithPriority', priority, false);\r\n var deferred = new Deferred();\r\n repoOnDisconnectSetWithPriority(this._repo, this._path, value, priority, deferred.wrapCallback(function () { }));\r\n return deferred.promise;\r\n };\r\n /**\r\n * Writes multiple values at this location when the client is disconnected (due\r\n * to closing the browser, navigating to a new page, or network issues).\r\n *\r\n * The `values` argument contains multiple property-value pairs that will be\r\n * written to the Database together. Each child property can either be a simple\r\n * property (for example, \"name\") or a relative path (for example, \"name/first\")\r\n * from the current location to the data to update.\r\n *\r\n * As opposed to the `set()` method, `update()` can be use to selectively update\r\n * only the referenced properties at the current location (instead of replacing\r\n * all the child properties at the current location).\r\n *\r\n * @param values - Object containing multiple values.\r\n * @returns Resolves when synchronization to the Database is complete.\r\n */\r\n OnDisconnect.prototype.update = function (values) {\r\n validateWritablePath('OnDisconnect.update', this._path);\r\n validateFirebaseMergeDataArg('OnDisconnect.update', values, this._path, false);\r\n var deferred = new Deferred();\r\n repoOnDisconnectUpdate(this._repo, this._path, values, deferred.wrapCallback(function () { }));\r\n return deferred.promise;\r\n };\r\n return OnDisconnect;\r\n}());\n\n/**\r\n * @license\r\n * Copyright 2020 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * @internal\r\n */\r\nvar QueryImpl = /** @class */ (function () {\r\n /**\r\n * @hideconstructor\r\n */\r\n function QueryImpl(_repo, _path, _queryParams, _orderByCalled) {\r\n this._repo = _repo;\r\n this._path = _path;\r\n this._queryParams = _queryParams;\r\n this._orderByCalled = _orderByCalled;\r\n }\r\n Object.defineProperty(QueryImpl.prototype, \"key\", {\r\n get: function () {\r\n if (pathIsEmpty(this._path)) {\r\n return null;\r\n }\r\n else {\r\n return pathGetBack(this._path);\r\n }\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(QueryImpl.prototype, \"ref\", {\r\n get: function () {\r\n return new ReferenceImpl(this._repo, this._path);\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(QueryImpl.prototype, \"_queryIdentifier\", {\r\n get: function () {\r\n var obj = queryParamsGetQueryObject(this._queryParams);\r\n var id = ObjectToUniqueKey(obj);\r\n return id === '{}' ? 'default' : id;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(QueryImpl.prototype, \"_queryObject\", {\r\n /**\r\n * An object representation of the query parameters used by this Query.\r\n */\r\n get: function () {\r\n return queryParamsGetQueryObject(this._queryParams);\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n QueryImpl.prototype.isEqual = function (other) {\r\n other = getModularInstance(other);\r\n if (!(other instanceof QueryImpl)) {\r\n return false;\r\n }\r\n var sameRepo = this._repo === other._repo;\r\n var samePath = pathEquals(this._path, other._path);\r\n var sameQueryIdentifier = this._queryIdentifier === other._queryIdentifier;\r\n return sameRepo && samePath && sameQueryIdentifier;\r\n };\r\n QueryImpl.prototype.toJSON = function () {\r\n return this.toString();\r\n };\r\n QueryImpl.prototype.toString = function () {\r\n return this._repo.toString() + pathToUrlEncodedString(this._path);\r\n };\r\n return QueryImpl;\r\n}());\r\n/**\r\n * Validates that no other order by call has been made\r\n */\r\nfunction validateNoPreviousOrderByCall(query, fnName) {\r\n if (query._orderByCalled === true) {\r\n throw new Error(fnName + \": You can't combine multiple orderBy calls.\");\r\n }\r\n}\r\n/**\r\n * Validates start/end values for queries.\r\n */\r\nfunction validateQueryEndpoints(params) {\r\n var startNode = null;\r\n var endNode = null;\r\n if (params.hasStart()) {\r\n startNode = params.getIndexStartValue();\r\n }\r\n if (params.hasEnd()) {\r\n endNode = params.getIndexEndValue();\r\n }\r\n if (params.getIndex() === KEY_INDEX) {\r\n var tooManyArgsError = 'Query: When ordering by key, you may only pass one argument to ' +\r\n 'startAt(), endAt(), or equalTo().';\r\n var wrongArgTypeError = 'Query: When ordering by key, the argument passed to startAt(), startAfter(), ' +\r\n 'endAt(), endBefore(), or equalTo() must be a string.';\r\n if (params.hasStart()) {\r\n var startName = params.getIndexStartName();\r\n if (startName !== MIN_NAME) {\r\n throw new Error(tooManyArgsError);\r\n }\r\n else if (typeof startNode !== 'string') {\r\n throw new Error(wrongArgTypeError);\r\n }\r\n }\r\n if (params.hasEnd()) {\r\n var endName = params.getIndexEndName();\r\n if (endName !== MAX_NAME) {\r\n throw new Error(tooManyArgsError);\r\n }\r\n else if (typeof endNode !== 'string') {\r\n throw new Error(wrongArgTypeError);\r\n }\r\n }\r\n }\r\n else if (params.getIndex() === PRIORITY_INDEX) {\r\n if ((startNode != null && !isValidPriority(startNode)) ||\r\n (endNode != null && !isValidPriority(endNode))) {\r\n throw new Error('Query: When ordering by priority, the first argument passed to startAt(), ' +\r\n 'startAfter() endAt(), endBefore(), or equalTo() must be a valid priority value ' +\r\n '(null, a number, or a string).');\r\n }\r\n }\r\n else {\r\n assert(params.getIndex() instanceof PathIndex ||\r\n params.getIndex() === VALUE_INDEX, 'unknown index type.');\r\n if ((startNode != null && typeof startNode === 'object') ||\r\n (endNode != null && typeof endNode === 'object')) {\r\n throw new Error('Query: First argument passed to startAt(), startAfter(), endAt(), endBefore(), or ' +\r\n 'equalTo() cannot be an object.');\r\n }\r\n }\r\n}\r\n/**\r\n * Validates that limit* has been called with the correct combination of parameters\r\n */\r\nfunction validateLimit(params) {\r\n if (params.hasStart() &&\r\n params.hasEnd() &&\r\n params.hasLimit() &&\r\n !params.hasAnchoredLimit()) {\r\n throw new Error(\"Query: Can't combine startAt(), startAfter(), endAt(), endBefore(), and limit(). Use \" +\r\n 'limitToFirst() or limitToLast() instead.');\r\n }\r\n}\r\n/**\r\n * @internal\r\n */\r\nvar ReferenceImpl = /** @class */ (function (_super) {\r\n __extends(ReferenceImpl, _super);\r\n /** @hideconstructor */\r\n function ReferenceImpl(repo, path) {\r\n return _super.call(this, repo, path, new QueryParams(), false) || this;\r\n }\r\n Object.defineProperty(ReferenceImpl.prototype, \"parent\", {\r\n get: function () {\r\n var parentPath = pathParent(this._path);\r\n return parentPath === null\r\n ? null\r\n : new ReferenceImpl(this._repo, parentPath);\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(ReferenceImpl.prototype, \"root\", {\r\n get: function () {\r\n var ref = this;\r\n while (ref.parent !== null) {\r\n ref = ref.parent;\r\n }\r\n return ref;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n return ReferenceImpl;\r\n}(QueryImpl));\r\n/**\r\n * A `DataSnapshot` contains data from a Database location.\r\n *\r\n * Any time you read data from the Database, you receive the data as a\r\n * `DataSnapshot`. A `DataSnapshot` is passed to the event callbacks you attach\r\n * with `on()` or `once()`. You can extract the contents of the snapshot as a\r\n * JavaScript object by calling the `val()` method. Alternatively, you can\r\n * traverse into the snapshot by calling `child()` to return child snapshots\r\n * (which you could then call `val()` on).\r\n *\r\n * A `DataSnapshot` is an efficiently generated, immutable copy of the data at\r\n * a Database location. It cannot be modified and will never change (to modify\r\n * data, you always call the `set()` method on a `Reference` directly).\r\n */\r\nvar DataSnapshot$1 = /** @class */ (function () {\r\n /**\r\n * @param _node - A SnapshotNode to wrap.\r\n * @param ref - The location this snapshot came from.\r\n * @param _index - The iteration order for this snapshot\r\n * @hideconstructor\r\n */\r\n function DataSnapshot(_node, \r\n /**\r\n * The location of this DataSnapshot.\r\n */\r\n ref, _index) {\r\n this._node = _node;\r\n this.ref = ref;\r\n this._index = _index;\r\n }\r\n Object.defineProperty(DataSnapshot.prototype, \"priority\", {\r\n /**\r\n * Gets the priority value of the data in this `DataSnapshot`.\r\n *\r\n * Applications need not use priority but can order collections by\r\n * ordinary properties (see\r\n * {@link https://firebase.google.com/docs/database/web/lists-of-data#sorting_and_filtering_data |Sorting and filtering data}\r\n * ).\r\n */\r\n get: function () {\r\n // typecast here because we never return deferred values or internal priorities (MAX_PRIORITY)\r\n return this._node.getPriority().val();\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(DataSnapshot.prototype, \"key\", {\r\n /**\r\n * The key (last part of the path) of the location of this `DataSnapshot`.\r\n *\r\n * The last token in a Database location is considered its key. For example,\r\n * \"ada\" is the key for the /users/ada/ node. Accessing the key on any\r\n * `DataSnapshot` will return the key for the location that generated it.\r\n * However, accessing the key on the root URL of a Database will return\r\n * `null`.\r\n */\r\n get: function () {\r\n return this.ref.key;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(DataSnapshot.prototype, \"size\", {\r\n /** Returns the number of child properties of this `DataSnapshot`. */\r\n get: function () {\r\n return this._node.numChildren();\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n /**\r\n * Gets another `DataSnapshot` for the location at the specified relative path.\r\n *\r\n * Passing a relative path to the `child()` method of a DataSnapshot returns\r\n * another `DataSnapshot` for the location at the specified relative path. The\r\n * relative path can either be a simple child name (for example, \"ada\") or a\r\n * deeper, slash-separated path (for example, \"ada/name/first\"). If the child\r\n * location has no data, an empty `DataSnapshot` (that is, a `DataSnapshot`\r\n * whose value is `null`) is returned.\r\n *\r\n * @param path - A relative path to the location of child data.\r\n */\r\n DataSnapshot.prototype.child = function (path) {\r\n var childPath = new Path(path);\r\n var childRef = child(this.ref, path);\r\n return new DataSnapshot(this._node.getChild(childPath), childRef, PRIORITY_INDEX);\r\n };\r\n /**\r\n * Returns true if this `DataSnapshot` contains any data. It is slightly more\r\n * efficient than using `snapshot.val() !== null`.\r\n */\r\n DataSnapshot.prototype.exists = function () {\r\n return !this._node.isEmpty();\r\n };\r\n /**\r\n * Exports the entire contents of the DataSnapshot as a JavaScript object.\r\n *\r\n * The `exportVal()` method is similar to `val()`, except priority information\r\n * is included (if available), making it suitable for backing up your data.\r\n *\r\n * @returns The DataSnapshot's contents as a JavaScript value (Object,\r\n * Array, string, number, boolean, or `null`).\r\n */\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n DataSnapshot.prototype.exportVal = function () {\r\n return this._node.val(true);\r\n };\r\n /**\r\n * Enumerates the top-level children in the `DataSnapshot`.\r\n *\r\n * Because of the way JavaScript objects work, the ordering of data in the\r\n * JavaScript object returned by `val()` is not guaranteed to match the\r\n * ordering on the server nor the ordering of `onChildAdded()` events. That is\r\n * where `forEach()` comes in handy. It guarantees the children of a\r\n * `DataSnapshot` will be iterated in their query order.\r\n *\r\n * If no explicit `orderBy*()` method is used, results are returned\r\n * ordered by key (unless priorities are used, in which case, results are\r\n * returned by priority).\r\n *\r\n * @param action - A function that will be called for each child DataSnapshot.\r\n * The callback can return true to cancel further enumeration.\r\n * @returns true if enumeration was canceled due to your callback returning\r\n * true.\r\n */\r\n DataSnapshot.prototype.forEach = function (action) {\r\n var _this = this;\r\n if (this._node.isLeafNode()) {\r\n return false;\r\n }\r\n var childrenNode = this._node;\r\n // Sanitize the return value to a boolean. ChildrenNode.forEachChild has a weird return type...\r\n return !!childrenNode.forEachChild(this._index, function (key, node) {\r\n return action(new DataSnapshot(node, child(_this.ref, key), PRIORITY_INDEX));\r\n });\r\n };\r\n /**\r\n * Returns true if the specified child path has (non-null) data.\r\n *\r\n * @param path - A relative path to the location of a potential child.\r\n * @returns `true` if data exists at the specified child path; else\r\n * `false`.\r\n */\r\n DataSnapshot.prototype.hasChild = function (path) {\r\n var childPath = new Path(path);\r\n return !this._node.getChild(childPath).isEmpty();\r\n };\r\n /**\r\n * Returns whether or not the `DataSnapshot` has any non-`null` child\r\n * properties.\r\n *\r\n * You can use `hasChildren()` to determine if a `DataSnapshot` has any\r\n * children. If it does, you can enumerate them using `forEach()`. If it\r\n * doesn't, then either this snapshot contains a primitive value (which can be\r\n * retrieved with `val()`) or it is empty (in which case, `val()` will return\r\n * `null`).\r\n *\r\n * @returns true if this snapshot has any children; else false.\r\n */\r\n DataSnapshot.prototype.hasChildren = function () {\r\n if (this._node.isLeafNode()) {\r\n return false;\r\n }\r\n else {\r\n return !this._node.isEmpty();\r\n }\r\n };\r\n /**\r\n * Returns a JSON-serializable representation of this object.\r\n */\r\n DataSnapshot.prototype.toJSON = function () {\r\n return this.exportVal();\r\n };\r\n /**\r\n * Extracts a JavaScript value from a `DataSnapshot`.\r\n *\r\n * Depending on the data in a `DataSnapshot`, the `val()` method may return a\r\n * scalar type (string, number, or boolean), an array, or an object. It may\r\n * also return null, indicating that the `DataSnapshot` is empty (contains no\r\n * data).\r\n *\r\n * @returns The DataSnapshot's contents as a JavaScript value (Object,\r\n * Array, string, number, boolean, or `null`).\r\n */\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n DataSnapshot.prototype.val = function () {\r\n return this._node.val();\r\n };\r\n return DataSnapshot;\r\n}());\r\n/**\r\n *\r\n * Returns a `Reference` representing the location in the Database\r\n * corresponding to the provided path. If no path is provided, the `Reference`\r\n * will point to the root of the Database.\r\n *\r\n * @param db - The database instance to obtain a reference for.\r\n * @param path - Optional path representing the location the returned\r\n * `Reference` will point. If not provided, the returned `Reference` will\r\n * point to the root of the Database.\r\n * @returns If a path is provided, a `Reference`\r\n * pointing to the provided path. Otherwise, a `Reference` pointing to the\r\n * root of the Database.\r\n */\r\nfunction ref(db, path) {\r\n db = getModularInstance(db);\r\n db._checkNotDeleted('ref');\r\n return path !== undefined ? child(db._root, path) : db._root;\r\n}\r\n/**\r\n * Returns a `Reference` representing the location in the Database\r\n * corresponding to the provided Firebase URL.\r\n *\r\n * An exception is thrown if the URL is not a valid Firebase Database URL or it\r\n * has a different domain than the current `Database` instance.\r\n *\r\n * Note that all query parameters (`orderBy`, `limitToLast`, etc.) are ignored\r\n * and are not applied to the returned `Reference`.\r\n *\r\n * @param db - The database instance to obtain a reference for.\r\n * @param url - The Firebase URL at which the returned `Reference` will\r\n * point.\r\n * @returns A `Reference` pointing to the provided\r\n * Firebase URL.\r\n */\r\nfunction refFromURL(db, url) {\r\n db = getModularInstance(db);\r\n db._checkNotDeleted('refFromURL');\r\n var parsedURL = parseRepoInfo(url, db._repo.repoInfo_.nodeAdmin);\r\n validateUrl('refFromURL', parsedURL);\r\n var repoInfo = parsedURL.repoInfo;\r\n if (!db._repo.repoInfo_.isCustomHost() &&\r\n repoInfo.host !== db._repo.repoInfo_.host) {\r\n fatal('refFromURL' +\r\n ': Host name does not match the current database: ' +\r\n '(found ' +\r\n repoInfo.host +\r\n ' but expected ' +\r\n db._repo.repoInfo_.host +\r\n ')');\r\n }\r\n return ref(db, parsedURL.path.toString());\r\n}\r\n/**\r\n * Gets a `Reference` for the location at the specified relative path.\r\n *\r\n * The relative path can either be a simple child name (for example, \"ada\") or\r\n * a deeper slash-separated path (for example, \"ada/name/first\").\r\n *\r\n * @param parent - The parent location.\r\n * @param path - A relative path from this location to the desired child\r\n * location.\r\n * @returns The specified child location.\r\n */\r\nfunction child(parent, path) {\r\n parent = getModularInstance(parent);\r\n if (pathGetFront(parent._path) === null) {\r\n validateRootPathString('child', 'path', path, false);\r\n }\r\n else {\r\n validatePathString('child', 'path', path, false);\r\n }\r\n return new ReferenceImpl(parent._repo, pathChild(parent._path, path));\r\n}\r\n/**\r\n * Generates a new child location using a unique key and returns its\r\n * `Reference`.\r\n *\r\n * This is the most common pattern for adding data to a collection of items.\r\n *\r\n * If you provide a value to `push()`, the value is written to the\r\n * generated location. If you don't pass a value, nothing is written to the\r\n * database and the child remains empty (but you can use the `Reference`\r\n * elsewhere).\r\n *\r\n * The unique keys generated by `push()` are ordered by the current time, so the\r\n * resulting list of items is chronologically sorted. The keys are also\r\n * designed to be unguessable (they contain 72 random bits of entropy).\r\n *\r\n * See {@link https://firebase.google.com/docs/database/web/lists-of-data#append_to_a_list_of_data | Append to a list of data}\r\n *
See {@link ttps://firebase.googleblog.com/2015/02/the-2120-ways-to-ensure-unique_68.html | The 2^120 Ways to Ensure Unique Identifiers}\r\n *\r\n * @param parent - The parent location.\r\n * @param value - Optional value to be written at the generated location.\r\n * @returns Combined `Promise` and `Reference`; resolves when write is complete,\r\n * but can be used immediately as the `Reference` to the child location.\r\n */\r\nfunction push(parent, value) {\r\n parent = getModularInstance(parent);\r\n validateWritablePath('push', parent._path);\r\n validateFirebaseDataArg('push', value, parent._path, true);\r\n var now = repoServerTime(parent._repo);\r\n var name = nextPushId(now);\r\n // push() returns a ThennableReference whose promise is fulfilled with a\r\n // regular Reference. We use child() to create handles to two different\r\n // references. The first is turned into a ThennableReference below by adding\r\n // then() and catch() methods and is used as the return value of push(). The\r\n // second remains a regular Reference and is used as the fulfilled value of\r\n // the first ThennableReference.\r\n var thennablePushRef = child(parent, name);\r\n var pushRef = child(parent, name);\r\n var promise;\r\n if (value != null) {\r\n promise = set(pushRef, value).then(function () { return pushRef; });\r\n }\r\n else {\r\n promise = Promise.resolve(pushRef);\r\n }\r\n thennablePushRef.then = promise.then.bind(promise);\r\n thennablePushRef.catch = promise.then.bind(promise, undefined);\r\n return thennablePushRef;\r\n}\r\n/**\r\n * Removes the data at this Database location.\r\n *\r\n * Any data at child locations will also be deleted.\r\n *\r\n * The effect of the remove will be visible immediately and the corresponding\r\n * event 'value' will be triggered. Synchronization of the remove to the\r\n * Firebase servers will also be started, and the returned Promise will resolve\r\n * when complete. If provided, the onComplete callback will be called\r\n * asynchronously after synchronization has finished.\r\n *\r\n * @param ref - The location to remove.\r\n * @returns Resolves when remove on server is complete.\r\n */\r\nfunction remove(ref) {\r\n validateWritablePath('remove', ref._path);\r\n return set(ref, null);\r\n}\r\n/**\r\n * Writes data to this Database location.\r\n *\r\n * This will overwrite any data at this location and all child locations.\r\n *\r\n * The effect of the write will be visible immediately, and the corresponding\r\n * events (\"value\", \"child_added\", etc.) will be triggered. Synchronization of\r\n * the data to the Firebase servers will also be started, and the returned\r\n * Promise will resolve when complete. If provided, the `onComplete` callback\r\n * will be called asynchronously after synchronization has finished.\r\n *\r\n * Passing `null` for the new value is equivalent to calling `remove()`; namely,\r\n * all data at this location and all child locations will be deleted.\r\n *\r\n * `set()` will remove any priority stored at this location, so if priority is\r\n * meant to be preserved, you need to use `setWithPriority()` instead.\r\n *\r\n * Note that modifying data with `set()` will cancel any pending transactions\r\n * at that location, so extreme care should be taken if mixing `set()` and\r\n * `transaction()` to modify the same data.\r\n *\r\n * A single `set()` will generate a single \"value\" event at the location where\r\n * the `set()` was performed.\r\n *\r\n * @param ref - The location to write to.\r\n * @param value - The value to be written (string, number, boolean, object,\r\n * array, or null).\r\n * @returns Resolves when write to server is complete.\r\n */\r\nfunction set(ref, value) {\r\n ref = getModularInstance(ref);\r\n validateWritablePath('set', ref._path);\r\n validateFirebaseDataArg('set', value, ref._path, false);\r\n var deferred = new Deferred();\r\n repoSetWithPriority(ref._repo, ref._path, value, \r\n /*priority=*/ null, deferred.wrapCallback(function () { }));\r\n return deferred.promise;\r\n}\r\n/**\r\n * Sets a priority for the data at this Database location.\r\n *\r\n * Applications need not use priority but can order collections by\r\n * ordinary properties (see\r\n * {@link https://firebase.google.com/docs/database/web/lists-of-data#sorting_and_filtering_data | Sorting and filtering data}\r\n * ).\r\n *\r\n * @param ref - The location to write to.\r\n * @param priority - The priority to be written (string, number, or null).\r\n * @returns Resolves when write to server is complete.\r\n */\r\nfunction setPriority(ref, priority) {\r\n ref = getModularInstance(ref);\r\n validateWritablePath('setPriority', ref._path);\r\n validatePriority('setPriority', priority, false);\r\n var deferred = new Deferred();\r\n repoSetWithPriority(ref._repo, pathChild(ref._path, '.priority'), priority, null, deferred.wrapCallback(function () { }));\r\n return deferred.promise;\r\n}\r\n/**\r\n * Writes data the Database location. Like `set()` but also specifies the\r\n * priority for that data.\r\n *\r\n * Applications need not use priority but can order collections by\r\n * ordinary properties (see\r\n * {@link https://firebase.google.com/docs/database/web/lists-of-data#sorting_and_filtering_data | Sorting and filtering data}\r\n * ).\r\n *\r\n * @param ref - The location to write to.\r\n * @param value - The value to be written (string, number, boolean, object,\r\n * array, or null).\r\n * @param priority - The priority to be written (string, number, or null).\r\n * @returns Resolves when write to server is complete.\r\n */\r\nfunction setWithPriority(ref, value, priority) {\r\n validateWritablePath('setWithPriority', ref._path);\r\n validateFirebaseDataArg('setWithPriority', value, ref._path, false);\r\n validatePriority('setWithPriority', priority, false);\r\n if (ref.key === '.length' || ref.key === '.keys') {\r\n throw 'setWithPriority failed: ' + ref.key + ' is a read-only object.';\r\n }\r\n var deferred = new Deferred();\r\n repoSetWithPriority(ref._repo, ref._path, value, priority, deferred.wrapCallback(function () { }));\r\n return deferred.promise;\r\n}\r\n/**\r\n * Writes multiple values to the Database at once.\r\n *\r\n * The `values` argument contains multiple property-value pairs that will be\r\n * written to the Database together. Each child property can either be a simple\r\n * property (for example, \"name\") or a relative path (for example,\r\n * \"name/first\") from the current location to the data to update.\r\n *\r\n * As opposed to the `set()` method, `update()` can be use to selectively update\r\n * only the referenced properties at the current location (instead of replacing\r\n * all the child properties at the current location).\r\n *\r\n * The effect of the write will be visible immediately, and the corresponding\r\n * events ('value', 'child_added', etc.) will be triggered. Synchronization of\r\n * the data to the Firebase servers will also be started, and the returned\r\n * Promise will resolve when complete. If provided, the `onComplete` callback\r\n * will be called asynchronously after synchronization has finished.\r\n *\r\n * A single `update()` will generate a single \"value\" event at the location\r\n * where the `update()` was performed, regardless of how many children were\r\n * modified.\r\n *\r\n * Note that modifying data with `update()` will cancel any pending\r\n * transactions at that location, so extreme care should be taken if mixing\r\n * `update()` and `transaction()` to modify the same data.\r\n *\r\n * Passing `null` to `update()` will remove the data at this location.\r\n *\r\n * See\r\n * {@link https://firebase.googleblog.com/2015/09/introducing-multi-location-updates-and_86.html | Introducing multi-location updates and more}.\r\n *\r\n * @param ref - The location to write to.\r\n * @param values - Object containing multiple values.\r\n * @returns Resolves when update on server is complete.\r\n */\r\nfunction update(ref, values) {\r\n validateFirebaseMergeDataArg('update', values, ref._path, false);\r\n var deferred = new Deferred();\r\n repoUpdate(ref._repo, ref._path, values, deferred.wrapCallback(function () { }));\r\n return deferred.promise;\r\n}\r\n/**\r\n * Gets the most up-to-date result for this query.\r\n *\r\n * @param query - The query to run.\r\n * @returns A promise which resolves to the resulting DataSnapshot if a value is\r\n * available, or rejects if the client is unable to return a value (e.g., if the\r\n * server is unreachable and there is nothing cached).\r\n */\r\nfunction get(query) {\r\n query = getModularInstance(query);\r\n return repoGetValue(query._repo, query).then(function (node) {\r\n return new DataSnapshot$1(node, new ReferenceImpl(query._repo, query._path), query._queryParams.getIndex());\r\n });\r\n}\r\n/**\r\n * Represents registration for 'value' events.\r\n */\r\nvar ValueEventRegistration = /** @class */ (function () {\r\n function ValueEventRegistration(callbackContext) {\r\n this.callbackContext = callbackContext;\r\n }\r\n ValueEventRegistration.prototype.respondsTo = function (eventType) {\r\n return eventType === 'value';\r\n };\r\n ValueEventRegistration.prototype.createEvent = function (change, query) {\r\n var index = query._queryParams.getIndex();\r\n return new DataEvent('value', this, new DataSnapshot$1(change.snapshotNode, new ReferenceImpl(query._repo, query._path), index));\r\n };\r\n ValueEventRegistration.prototype.getEventRunner = function (eventData) {\r\n var _this = this;\r\n if (eventData.getEventType() === 'cancel') {\r\n return function () {\r\n return _this.callbackContext.onCancel(eventData.error);\r\n };\r\n }\r\n else {\r\n return function () {\r\n return _this.callbackContext.onValue(eventData.snapshot, null);\r\n };\r\n }\r\n };\r\n ValueEventRegistration.prototype.createCancelEvent = function (error, path) {\r\n if (this.callbackContext.hasCancelCallback) {\r\n return new CancelEvent(this, error, path);\r\n }\r\n else {\r\n return null;\r\n }\r\n };\r\n ValueEventRegistration.prototype.matches = function (other) {\r\n if (!(other instanceof ValueEventRegistration)) {\r\n return false;\r\n }\r\n else if (!other.callbackContext || !this.callbackContext) {\r\n // If no callback specified, we consider it to match any callback.\r\n return true;\r\n }\r\n else {\r\n return other.callbackContext.matches(this.callbackContext);\r\n }\r\n };\r\n ValueEventRegistration.prototype.hasAnyCallback = function () {\r\n return this.callbackContext !== null;\r\n };\r\n return ValueEventRegistration;\r\n}());\r\n/**\r\n * Represents the registration of a child_x event.\r\n */\r\nvar ChildEventRegistration = /** @class */ (function () {\r\n function ChildEventRegistration(eventType, callbackContext) {\r\n this.eventType = eventType;\r\n this.callbackContext = callbackContext;\r\n }\r\n ChildEventRegistration.prototype.respondsTo = function (eventType) {\r\n var eventToCheck = eventType === 'children_added' ? 'child_added' : eventType;\r\n eventToCheck =\r\n eventToCheck === 'children_removed' ? 'child_removed' : eventToCheck;\r\n return this.eventType === eventToCheck;\r\n };\r\n ChildEventRegistration.prototype.createCancelEvent = function (error, path) {\r\n if (this.callbackContext.hasCancelCallback) {\r\n return new CancelEvent(this, error, path);\r\n }\r\n else {\r\n return null;\r\n }\r\n };\r\n ChildEventRegistration.prototype.createEvent = function (change, query) {\r\n assert(change.childName != null, 'Child events should have a childName.');\r\n var childRef = child(new ReferenceImpl(query._repo, query._path), change.childName);\r\n var index = query._queryParams.getIndex();\r\n return new DataEvent(change.type, this, new DataSnapshot$1(change.snapshotNode, childRef, index), change.prevName);\r\n };\r\n ChildEventRegistration.prototype.getEventRunner = function (eventData) {\r\n var _this = this;\r\n if (eventData.getEventType() === 'cancel') {\r\n return function () {\r\n return _this.callbackContext.onCancel(eventData.error);\r\n };\r\n }\r\n else {\r\n return function () {\r\n return _this.callbackContext.onValue(eventData.snapshot, eventData.prevName);\r\n };\r\n }\r\n };\r\n ChildEventRegistration.prototype.matches = function (other) {\r\n if (other instanceof ChildEventRegistration) {\r\n return (this.eventType === other.eventType &&\r\n (!this.callbackContext ||\r\n !other.callbackContext ||\r\n this.callbackContext.matches(other.callbackContext)));\r\n }\r\n return false;\r\n };\r\n ChildEventRegistration.prototype.hasAnyCallback = function () {\r\n return !!this.callbackContext;\r\n };\r\n return ChildEventRegistration;\r\n}());\r\nfunction addEventListener(query, eventType, callback, cancelCallbackOrListenOptions, options) {\r\n var cancelCallback;\r\n if (typeof cancelCallbackOrListenOptions === 'object') {\r\n cancelCallback = undefined;\r\n options = cancelCallbackOrListenOptions;\r\n }\r\n if (typeof cancelCallbackOrListenOptions === 'function') {\r\n cancelCallback = cancelCallbackOrListenOptions;\r\n }\r\n if (options && options.onlyOnce) {\r\n var userCallback_1 = callback;\r\n var onceCallback = function (dataSnapshot, previousChildName) {\r\n repoRemoveEventCallbackForQuery(query._repo, query, container);\r\n userCallback_1(dataSnapshot, previousChildName);\r\n };\r\n onceCallback.userCallback = callback.userCallback;\r\n onceCallback.context = callback.context;\r\n callback = onceCallback;\r\n }\r\n var callbackContext = new CallbackContext(callback, cancelCallback || undefined);\r\n var container = eventType === 'value'\r\n ? new ValueEventRegistration(callbackContext)\r\n : new ChildEventRegistration(eventType, callbackContext);\r\n repoAddEventCallbackForQuery(query._repo, query, container);\r\n return function () { return repoRemoveEventCallbackForQuery(query._repo, query, container); };\r\n}\r\nfunction onValue(query, callback, cancelCallbackOrListenOptions, options) {\r\n return addEventListener(query, 'value', callback, cancelCallbackOrListenOptions, options);\r\n}\r\nfunction onChildAdded(query, callback, cancelCallbackOrListenOptions, options) {\r\n return addEventListener(query, 'child_added', callback, cancelCallbackOrListenOptions, options);\r\n}\r\nfunction onChildChanged(query, callback, cancelCallbackOrListenOptions, options) {\r\n return addEventListener(query, 'child_changed', callback, cancelCallbackOrListenOptions, options);\r\n}\r\nfunction onChildMoved(query, callback, cancelCallbackOrListenOptions, options) {\r\n return addEventListener(query, 'child_moved', callback, cancelCallbackOrListenOptions, options);\r\n}\r\nfunction onChildRemoved(query, callback, cancelCallbackOrListenOptions, options) {\r\n return addEventListener(query, 'child_removed', callback, cancelCallbackOrListenOptions, options);\r\n}\r\n/**\r\n * Detaches a callback previously attached with `on()`.\r\n *\r\n * Detach a callback previously attached with `on()`. Note that if `on()` was\r\n * called multiple times with the same eventType and callback, the callback\r\n * will be called multiple times for each event, and `off()` must be called\r\n * multiple times to remove the callback. Calling `off()` on a parent listener\r\n * will not automatically remove listeners registered on child nodes, `off()`\r\n * must also be called on any child listeners to remove the callback.\r\n *\r\n * If a callback is not specified, all callbacks for the specified eventType\r\n * will be removed. Similarly, if no eventType is specified, all callbacks\r\n * for the `Reference` will be removed.\r\n *\r\n * Individual listeners can also be removed by invoking their unsubscribe\r\n * callbacks.\r\n *\r\n * @param query - The query that the listener was registered with.\r\n * @param eventType - One of the following strings: \"value\", \"child_added\",\r\n * \"child_changed\", \"child_removed\", or \"child_moved.\" If omitted, all callbacks\r\n * for the `Reference` will be removed.\r\n * @param callback - The callback function that was passed to `on()` or\r\n * `undefined` to remove all callbacks.\r\n */\r\nfunction off(query, eventType, callback) {\r\n var container = null;\r\n var expCallback = callback ? new CallbackContext(callback) : null;\r\n if (eventType === 'value') {\r\n container = new ValueEventRegistration(expCallback);\r\n }\r\n else if (eventType) {\r\n container = new ChildEventRegistration(eventType, expCallback);\r\n }\r\n repoRemoveEventCallbackForQuery(query._repo, query, container);\r\n}\r\n/**\r\n * A `QueryConstraint` is used to narrow the set of documents returned by a\r\n * Database query. `QueryConstraint`s are created by invoking {@link endAt},\r\n * {@link endBefore}, {@link startAt}, {@link startAfter}, {@link\r\n * limitToFirst}, {@link limitToLast}, {@link orderByChild},\r\n * {@link orderByChild}, {@link orderByKey} , {@link orderByPriority} ,\r\n * {@link orderByValue} or {@link equalTo} and\r\n * can then be passed to {@link query} to create a new query instance that\r\n * also contains this `QueryConstraint`.\r\n */\r\nvar QueryConstraint = /** @class */ (function () {\r\n function QueryConstraint() {\r\n }\r\n return QueryConstraint;\r\n}());\r\nvar QueryEndAtConstraint = /** @class */ (function (_super) {\r\n __extends(QueryEndAtConstraint, _super);\r\n function QueryEndAtConstraint(_value, _key) {\r\n var _this = _super.call(this) || this;\r\n _this._value = _value;\r\n _this._key = _key;\r\n return _this;\r\n }\r\n QueryEndAtConstraint.prototype._apply = function (query) {\r\n validateFirebaseDataArg('endAt', this._value, query._path, true);\r\n var newParams = queryParamsEndAt(query._queryParams, this._value, this._key);\r\n validateLimit(newParams);\r\n validateQueryEndpoints(newParams);\r\n if (query._queryParams.hasEnd()) {\r\n throw new Error('endAt: Starting point was already set (by another call to endAt, ' +\r\n 'endBefore or equalTo).');\r\n }\r\n return new QueryImpl(query._repo, query._path, newParams, query._orderByCalled);\r\n };\r\n return QueryEndAtConstraint;\r\n}(QueryConstraint));\r\n/**\r\n * Creates a `QueryConstraint` with the specified ending point.\r\n *\r\n * Using `startAt()`, `startAfter()`, `endBefore()`, `endAt()` and `equalTo()`\r\n * allows you to choose arbitrary starting and ending points for your queries.\r\n *\r\n * The ending point is inclusive, so children with exactly the specified value\r\n * will be included in the query. The optional key argument can be used to\r\n * further limit the range of the query. If it is specified, then children that\r\n * have exactly the specified value must also have a key name less than or equal\r\n * to the specified key.\r\n *\r\n * You can read more about `endAt()` in\r\n * {@link https://firebase.google.com/docs/database/web/lists-of-data#filtering_data | Filtering data}.\r\n *\r\n * @param value - The value to end at. The argument type depends on which\r\n * `orderBy*()` function was used in this query. Specify a value that matches\r\n * the `orderBy*()` type. When used in combination with `orderByKey()`, the\r\n * value must be a string.\r\n * @param key - The child key to end at, among the children with the previously\r\n * specified priority. This argument is only allowed if ordering by child,\r\n * value, or priority.\r\n */\r\nfunction endAt(value, key) {\r\n validateKey('endAt', 'key', key, true);\r\n return new QueryEndAtConstraint(value, key);\r\n}\r\nvar QueryEndBeforeConstraint = /** @class */ (function (_super) {\r\n __extends(QueryEndBeforeConstraint, _super);\r\n function QueryEndBeforeConstraint(_value, _key) {\r\n var _this = _super.call(this) || this;\r\n _this._value = _value;\r\n _this._key = _key;\r\n return _this;\r\n }\r\n QueryEndBeforeConstraint.prototype._apply = function (query) {\r\n validateFirebaseDataArg('endBefore', this._value, query._path, false);\r\n var newParams = queryParamsEndBefore(query._queryParams, this._value, this._key);\r\n validateLimit(newParams);\r\n validateQueryEndpoints(newParams);\r\n if (query._queryParams.hasEnd()) {\r\n throw new Error('endBefore: Starting point was already set (by another call to endAt, ' +\r\n 'endBefore or equalTo).');\r\n }\r\n return new QueryImpl(query._repo, query._path, newParams, query._orderByCalled);\r\n };\r\n return QueryEndBeforeConstraint;\r\n}(QueryConstraint));\r\n/**\r\n * Creates a `QueryConstraint` with the specified ending point (exclusive).\r\n *\r\n * Using `startAt()`, `startAfter()`, `endBefore()`, `endAt()` and `equalTo()`\r\n * allows you to choose arbitrary starting and ending points for your queries.\r\n *\r\n * The ending point is exclusive. If only a value is provided, children\r\n * with a value less than the specified value will be included in the query.\r\n * If a key is specified, then children must have a value lesss than or equal\r\n * to the specified value and a a key name less than the specified key.\r\n *\r\n * @param value - The value to end before. The argument type depends on which\r\n * `orderBy*()` function was used in this query. Specify a value that matches\r\n * the `orderBy*()` type. When used in combination with `orderByKey()`, the\r\n * value must be a string.\r\n * @param key - The child key to end before, among the children with the\r\n * previously specified priority. This argument is only allowed if ordering by\r\n * child, value, or priority.\r\n */\r\nfunction endBefore(value, key) {\r\n validateKey('endBefore', 'key', key, true);\r\n return new QueryEndBeforeConstraint(value, key);\r\n}\r\nvar QueryStartAtConstraint = /** @class */ (function (_super) {\r\n __extends(QueryStartAtConstraint, _super);\r\n function QueryStartAtConstraint(_value, _key) {\r\n var _this = _super.call(this) || this;\r\n _this._value = _value;\r\n _this._key = _key;\r\n return _this;\r\n }\r\n QueryStartAtConstraint.prototype._apply = function (query) {\r\n validateFirebaseDataArg('startAt', this._value, query._path, true);\r\n var newParams = queryParamsStartAt(query._queryParams, this._value, this._key);\r\n validateLimit(newParams);\r\n validateQueryEndpoints(newParams);\r\n if (query._queryParams.hasStart()) {\r\n throw new Error('startAt: Starting point was already set (by another call to startAt, ' +\r\n 'startBefore or equalTo).');\r\n }\r\n return new QueryImpl(query._repo, query._path, newParams, query._orderByCalled);\r\n };\r\n return QueryStartAtConstraint;\r\n}(QueryConstraint));\r\n/**\r\n * Creates a `QueryConstraint` with the specified starting point.\r\n *\r\n * Using `startAt()`, `startAfter()`, `endBefore()`, `endAt()` and `equalTo()`\r\n * allows you to choose arbitrary starting and ending points for your queries.\r\n *\r\n * The starting point is inclusive, so children with exactly the specified value\r\n * will be included in the query. The optional key argument can be used to\r\n * further limit the range of the query. If it is specified, then children that\r\n * have exactly the specified value must also have a key name greater than or\r\n * equal to the specified key.\r\n *\r\n * You can read more about `startAt()` in\r\n * {@link https://firebase.google.com/docs/database/web/lists-of-data#filtering_data | Filtering data}.\r\n *\r\n * @param value - The value to start at. The argument type depends on which\r\n * `orderBy*()` function was used in this query. Specify a value that matches\r\n * the `orderBy*()` type. When used in combination with `orderByKey()`, the\r\n * value must be a string.\r\n * @param key - The child key to start at. This argument is only allowed if\r\n * ordering by child, value, or priority.\r\n */\r\nfunction startAt(value, key) {\r\n if (value === void 0) { value = null; }\r\n validateKey('startAt', 'key', key, true);\r\n return new QueryStartAtConstraint(value, key);\r\n}\r\nvar QueryStartAfterConstraint = /** @class */ (function (_super) {\r\n __extends(QueryStartAfterConstraint, _super);\r\n function QueryStartAfterConstraint(_value, _key) {\r\n var _this = _super.call(this) || this;\r\n _this._value = _value;\r\n _this._key = _key;\r\n return _this;\r\n }\r\n QueryStartAfterConstraint.prototype._apply = function (query) {\r\n validateFirebaseDataArg('startAfter', this._value, query._path, false);\r\n var newParams = queryParamsStartAfter(query._queryParams, this._value, this._key);\r\n validateLimit(newParams);\r\n validateQueryEndpoints(newParams);\r\n if (query._queryParams.hasStart()) {\r\n throw new Error('startAfter: Starting point was already set (by another call to startAt, ' +\r\n 'startAfter, or equalTo).');\r\n }\r\n return new QueryImpl(query._repo, query._path, newParams, query._orderByCalled);\r\n };\r\n return QueryStartAfterConstraint;\r\n}(QueryConstraint));\r\n/**\r\n * Creates a `QueryConstraint` with the specified starting point (exclusive).\r\n *\r\n * Using `startAt()`, `startAfter()`, `endBefore()`, `endAt()` and `equalTo()`\r\n * allows you to choose arbitrary starting and ending points for your queries.\r\n *\r\n * The starting point is exclusive. If only a value is provided, children\r\n * with a value greater than the specified value will be included in the query.\r\n * If a key is specified, then children must have a value greater than or equal\r\n * to the specified value and a a key name greater than the specified key.\r\n *\r\n * @param value - The value to start after. The argument type depends on which\r\n * `orderBy*()` function was used in this query. Specify a value that matches\r\n * the `orderBy*()` type. When used in combination with `orderByKey()`, the\r\n * value must be a string.\r\n * @param key - The child key to start after. This argument is only allowed if\r\n * ordering by child, value, or priority.\r\n */\r\nfunction startAfter(value, key) {\r\n validateKey('startAfter', 'key', key, true);\r\n return new QueryStartAfterConstraint(value, key);\r\n}\r\nvar QueryLimitToFirstConstraint = /** @class */ (function (_super) {\r\n __extends(QueryLimitToFirstConstraint, _super);\r\n function QueryLimitToFirstConstraint(_limit) {\r\n var _this = _super.call(this) || this;\r\n _this._limit = _limit;\r\n return _this;\r\n }\r\n QueryLimitToFirstConstraint.prototype._apply = function (query) {\r\n if (query._queryParams.hasLimit()) {\r\n throw new Error('limitToFirst: Limit was already set (by another call to limitToFirst ' +\r\n 'or limitToLast).');\r\n }\r\n return new QueryImpl(query._repo, query._path, queryParamsLimitToFirst(query._queryParams, this._limit), query._orderByCalled);\r\n };\r\n return QueryLimitToFirstConstraint;\r\n}(QueryConstraint));\r\n/**\r\n * Creates a new `QueryConstraint` that if limited to the first specific number\r\n * of children.\r\n *\r\n * The `limitToFirst()` method is used to set a maximum number of children to be\r\n * synced for a given callback. If we set a limit of 100, we will initially only\r\n * receive up to 100 `child_added` events. If we have fewer than 100 messages\r\n * stored in our Database, a `child_added` event will fire for each message.\r\n * However, if we have over 100 messages, we will only receive a `child_added`\r\n * event for the first 100 ordered messages. As items change, we will receive\r\n * `child_removed` events for each item that drops out of the active list so\r\n * that the total number stays at 100.\r\n *\r\n * You can read more about `limitToFirst()` in\r\n * {@link https://firebase.google.com/docs/database/web/lists-of-data#filtering_data | Filtering data}.\r\n *\r\n * @param limit - The maximum number of nodes to include in this query.\r\n */\r\nfunction limitToFirst(limit) {\r\n if (typeof limit !== 'number' || Math.floor(limit) !== limit || limit <= 0) {\r\n throw new Error('limitToFirst: First argument must be a positive integer.');\r\n }\r\n return new QueryLimitToFirstConstraint(limit);\r\n}\r\nvar QueryLimitToLastConstraint = /** @class */ (function (_super) {\r\n __extends(QueryLimitToLastConstraint, _super);\r\n function QueryLimitToLastConstraint(_limit) {\r\n var _this = _super.call(this) || this;\r\n _this._limit = _limit;\r\n return _this;\r\n }\r\n QueryLimitToLastConstraint.prototype._apply = function (query) {\r\n if (query._queryParams.hasLimit()) {\r\n throw new Error('limitToLast: Limit was already set (by another call to limitToFirst ' +\r\n 'or limitToLast).');\r\n }\r\n return new QueryImpl(query._repo, query._path, queryParamsLimitToLast(query._queryParams, this._limit), query._orderByCalled);\r\n };\r\n return QueryLimitToLastConstraint;\r\n}(QueryConstraint));\r\n/**\r\n * Creates a new `QueryConstraint` that is limited to return only the last\r\n * specified number of children.\r\n *\r\n * The `limitToLast()` method is used to set a maximum number of children to be\r\n * synced for a given callback. If we set a limit of 100, we will initially only\r\n * receive up to 100 `child_added` events. If we have fewer than 100 messages\r\n * stored in our Database, a `child_added` event will fire for each message.\r\n * However, if we have over 100 messages, we will only receive a `child_added`\r\n * event for the last 100 ordered messages. As items change, we will receive\r\n * `child_removed` events for each item that drops out of the active list so\r\n * that the total number stays at 100.\r\n *\r\n * You can read more about `limitToLast()` in\r\n * {@link https://firebase.google.com/docs/database/web/lists-of-data#filtering_data | Filtering data}.\r\n *\r\n * @param limit - The maximum number of nodes to include in this query.\r\n */\r\nfunction limitToLast(limit) {\r\n if (typeof limit !== 'number' || Math.floor(limit) !== limit || limit <= 0) {\r\n throw new Error('limitToLast: First argument must be a positive integer.');\r\n }\r\n return new QueryLimitToLastConstraint(limit);\r\n}\r\nvar QueryOrderByChildConstraint = /** @class */ (function (_super) {\r\n __extends(QueryOrderByChildConstraint, _super);\r\n function QueryOrderByChildConstraint(_path) {\r\n var _this = _super.call(this) || this;\r\n _this._path = _path;\r\n return _this;\r\n }\r\n QueryOrderByChildConstraint.prototype._apply = function (query) {\r\n validateNoPreviousOrderByCall(query, 'orderByChild');\r\n var parsedPath = new Path(this._path);\r\n if (pathIsEmpty(parsedPath)) {\r\n throw new Error('orderByChild: cannot pass in empty path. Use orderByValue() instead.');\r\n }\r\n var index = new PathIndex(parsedPath);\r\n var newParams = queryParamsOrderBy(query._queryParams, index);\r\n validateQueryEndpoints(newParams);\r\n return new QueryImpl(query._repo, query._path, newParams, \r\n /*orderByCalled=*/ true);\r\n };\r\n return QueryOrderByChildConstraint;\r\n}(QueryConstraint));\r\n/**\r\n * Creates a new `QueryConstraint` that orders by the specified child key.\r\n *\r\n * Queries can only order by one key at a time. Calling `orderByChild()`\r\n * multiple times on the same query is an error.\r\n *\r\n * Firebase queries allow you to order your data by any child key on the fly.\r\n * However, if you know in advance what your indexes will be, you can define\r\n * them via the .indexOn rule in your Security Rules for better performance. See\r\n * the{@link https://firebase.google.com/docs/database/security/indexing-data}\r\n * rule for more information.\r\n *\r\n * You can read more about `orderByChild()` in\r\n * {@link https://firebase.google.com/docs/database/web/lists-of-data#sort_data | Sort data}.\r\n *\r\n * @param path - The path to order by.\r\n */\r\nfunction orderByChild(path) {\r\n if (path === '$key') {\r\n throw new Error('orderByChild: \"$key\" is invalid. Use orderByKey() instead.');\r\n }\r\n else if (path === '$priority') {\r\n throw new Error('orderByChild: \"$priority\" is invalid. Use orderByPriority() instead.');\r\n }\r\n else if (path === '$value') {\r\n throw new Error('orderByChild: \"$value\" is invalid. Use orderByValue() instead.');\r\n }\r\n validatePathString('orderByChild', 'path', path, false);\r\n return new QueryOrderByChildConstraint(path);\r\n}\r\nvar QueryOrderByKeyConstraint = /** @class */ (function (_super) {\r\n __extends(QueryOrderByKeyConstraint, _super);\r\n function QueryOrderByKeyConstraint() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n QueryOrderByKeyConstraint.prototype._apply = function (query) {\r\n validateNoPreviousOrderByCall(query, 'orderByKey');\r\n var newParams = queryParamsOrderBy(query._queryParams, KEY_INDEX);\r\n validateQueryEndpoints(newParams);\r\n return new QueryImpl(query._repo, query._path, newParams, \r\n /*orderByCalled=*/ true);\r\n };\r\n return QueryOrderByKeyConstraint;\r\n}(QueryConstraint));\r\n/**\r\n * Creates a new `QueryConstraint` that orders by the key.\r\n *\r\n * Sorts the results of a query by their (ascending) key values.\r\n *\r\n * You can read more about `orderByKey()` in\r\n * {@link https://firebase.google.com/docs/database/web/lists-of-data#sort_data | Sort data}.\r\n */\r\nfunction orderByKey() {\r\n return new QueryOrderByKeyConstraint();\r\n}\r\nvar QueryOrderByPriorityConstraint = /** @class */ (function (_super) {\r\n __extends(QueryOrderByPriorityConstraint, _super);\r\n function QueryOrderByPriorityConstraint() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n QueryOrderByPriorityConstraint.prototype._apply = function (query) {\r\n validateNoPreviousOrderByCall(query, 'orderByPriority');\r\n var newParams = queryParamsOrderBy(query._queryParams, PRIORITY_INDEX);\r\n validateQueryEndpoints(newParams);\r\n return new QueryImpl(query._repo, query._path, newParams, \r\n /*orderByCalled=*/ true);\r\n };\r\n return QueryOrderByPriorityConstraint;\r\n}(QueryConstraint));\r\n/**\r\n * Creates a new `QueryConstraint` that orders by priority.\r\n *\r\n * Applications need not use priority but can order collections by\r\n * ordinary properties (see\r\n * {@link https://firebase.google.com/docs/database/web/lists-of-data#sort_data | Sort data}\r\n * for alternatives to priority.\r\n */\r\nfunction orderByPriority() {\r\n return new QueryOrderByPriorityConstraint();\r\n}\r\nvar QueryOrderByValueConstraint = /** @class */ (function (_super) {\r\n __extends(QueryOrderByValueConstraint, _super);\r\n function QueryOrderByValueConstraint() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n QueryOrderByValueConstraint.prototype._apply = function (query) {\r\n validateNoPreviousOrderByCall(query, 'orderByValue');\r\n var newParams = queryParamsOrderBy(query._queryParams, VALUE_INDEX);\r\n validateQueryEndpoints(newParams);\r\n return new QueryImpl(query._repo, query._path, newParams, \r\n /*orderByCalled=*/ true);\r\n };\r\n return QueryOrderByValueConstraint;\r\n}(QueryConstraint));\r\n/**\r\n * Creates a new `QueryConstraint` that orders by value.\r\n *\r\n * If the children of a query are all scalar values (string, number, or\r\n * boolean), you can order the results by their (ascending) values.\r\n *\r\n * You can read more about `orderByValue()` in\r\n * {@link https://firebase.google.com/docs/database/web/lists-of-data#sort_data | Sort data}.\r\n */\r\nfunction orderByValue() {\r\n return new QueryOrderByValueConstraint();\r\n}\r\nvar QueryEqualToValueConstraint = /** @class */ (function (_super) {\r\n __extends(QueryEqualToValueConstraint, _super);\r\n function QueryEqualToValueConstraint(_value, _key) {\r\n var _this = _super.call(this) || this;\r\n _this._value = _value;\r\n _this._key = _key;\r\n return _this;\r\n }\r\n QueryEqualToValueConstraint.prototype._apply = function (query) {\r\n validateFirebaseDataArg('equalTo', this._value, query._path, false);\r\n if (query._queryParams.hasStart()) {\r\n throw new Error('equalTo: Starting point was already set (by another call to startAt/startAfter or ' +\r\n 'equalTo).');\r\n }\r\n if (query._queryParams.hasEnd()) {\r\n throw new Error('equalTo: Ending point was already set (by another call to endAt/endBefore or ' +\r\n 'equalTo).');\r\n }\r\n return new QueryEndAtConstraint(this._value, this._key)._apply(new QueryStartAtConstraint(this._value, this._key)._apply(query));\r\n };\r\n return QueryEqualToValueConstraint;\r\n}(QueryConstraint));\r\n/**\r\n * Creates a `QueryConstraint` that includes children that match the specified\r\n * value.\r\n *\r\n * Using `startAt()`, `startAfter()`, `endBefore()`, `endAt()` and `equalTo()`\r\n * allows you to choose arbitrary starting and ending points for your queries.\r\n *\r\n * The optional key argument can be used to further limit the range of the\r\n * query. If it is specified, then children that have exactly the specified\r\n * value must also have exactly the specified key as their key name. This can be\r\n * used to filter result sets with many matches for the same value.\r\n *\r\n * You can read more about `equalTo()` in\r\n * {@link https://firebase.google.com/docs/database/web/lists-of-data#filtering_data | Filtering data}.\r\n *\r\n * @param value - The value to match for. The argument type depends on which\r\n * `orderBy*()` function was used in this query. Specify a value that matches\r\n * the `orderBy*()` type. When used in combination with `orderByKey()`, the\r\n * value must be a string.\r\n * @param key - The child key to start at, among the children with the\r\n * previously specified priority. This argument is only allowed if ordering by\r\n * child, value, or priority.\r\n */\r\nfunction equalTo(value, key) {\r\n validateKey('equalTo', 'key', key, true);\r\n return new QueryEqualToValueConstraint(value, key);\r\n}\r\n/**\r\n * Creates a new immutable instance of `Query` that is extended to also include\r\n * additional query constraints.\r\n *\r\n * @param query - The Query instance to use as a base for the new constraints.\r\n * @param queryConstraints - The list of `QueryConstraint`s to apply.\r\n * @throws if any of the provided query constraints cannot be combined with the\r\n * existing or new constraints.\r\n */\r\nfunction query(query) {\r\n var e_1, _a;\r\n var queryConstraints = [];\r\n for (var _i = 1; _i < arguments.length; _i++) {\r\n queryConstraints[_i - 1] = arguments[_i];\r\n }\r\n var queryImpl = getModularInstance(query);\r\n try {\r\n for (var queryConstraints_1 = __values(queryConstraints), queryConstraints_1_1 = queryConstraints_1.next(); !queryConstraints_1_1.done; queryConstraints_1_1 = queryConstraints_1.next()) {\r\n var constraint = queryConstraints_1_1.value;\r\n queryImpl = constraint._apply(queryImpl);\r\n }\r\n }\r\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\r\n finally {\r\n try {\r\n if (queryConstraints_1_1 && !queryConstraints_1_1.done && (_a = queryConstraints_1.return)) _a.call(queryConstraints_1);\r\n }\r\n finally { if (e_1) throw e_1.error; }\r\n }\r\n return queryImpl;\r\n}\r\n/**\r\n * Define reference constructor in various modules\r\n *\r\n * We are doing this here to avoid several circular\r\n * dependency issues\r\n */\r\nsyncPointSetReferenceConstructor(ReferenceImpl);\r\nsyncTreeSetReferenceConstructor(ReferenceImpl);\n\n/**\r\n * @license\r\n * Copyright 2020 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * This variable is also defined in the firebase node.js admin SDK. Before\r\n * modifying this definition, consult the definition in:\r\n *\r\n * https://github.com/firebase/firebase-admin-node\r\n *\r\n * and make sure the two are consistent.\r\n */\r\nvar FIREBASE_DATABASE_EMULATOR_HOST_VAR = 'FIREBASE_DATABASE_EMULATOR_HOST';\r\n/**\r\n * Creates and caches Repo instances.\r\n */\r\nvar repos = {};\r\n/**\r\n * If true, new Repos will be created to use ReadonlyRestClient (for testing purposes).\r\n */\r\nvar useRestClient = false;\r\n/**\r\n * Update an existing repo in place to point to a new host/port.\r\n */\r\nfunction repoManagerApplyEmulatorSettings(repo, host, port, tokenProvider) {\r\n repo.repoInfo_ = new RepoInfo(host + \":\" + port, \r\n /* secure= */ false, repo.repoInfo_.namespace, repo.repoInfo_.webSocketOnly, repo.repoInfo_.nodeAdmin, repo.repoInfo_.persistenceKey, repo.repoInfo_.includeNamespaceInQueryParams);\r\n if (tokenProvider) {\r\n repo.authTokenProvider_ = tokenProvider;\r\n }\r\n}\r\n/**\r\n * This function should only ever be called to CREATE a new database instance.\r\n * @internal\r\n */\r\nfunction repoManagerDatabaseFromApp(app, authProvider, appCheckProvider, url, nodeAdmin) {\r\n var dbUrl = url || app.options.databaseURL;\r\n if (dbUrl === undefined) {\r\n if (!app.options.projectId) {\r\n fatal(\"Can't determine Firebase Database URL. Be sure to include \" +\r\n ' a Project ID when calling firebase.initializeApp().');\r\n }\r\n log('Using default host for project ', app.options.projectId);\r\n dbUrl = app.options.projectId + \"-default-rtdb.firebaseio.com\";\r\n }\r\n var parsedUrl = parseRepoInfo(dbUrl, nodeAdmin);\r\n var repoInfo = parsedUrl.repoInfo;\r\n var isEmulator;\r\n var dbEmulatorHost = undefined;\r\n if (typeof process !== 'undefined') {\r\n dbEmulatorHost = process.env[FIREBASE_DATABASE_EMULATOR_HOST_VAR];\r\n }\r\n if (dbEmulatorHost) {\r\n isEmulator = true;\r\n dbUrl = \"http://\" + dbEmulatorHost + \"?ns=\" + repoInfo.namespace;\r\n parsedUrl = parseRepoInfo(dbUrl, nodeAdmin);\r\n repoInfo = parsedUrl.repoInfo;\r\n }\r\n else {\r\n isEmulator = !parsedUrl.repoInfo.secure;\r\n }\r\n var authTokenProvider = nodeAdmin && isEmulator\r\n ? new EmulatorTokenProvider(EmulatorTokenProvider.OWNER)\r\n : new FirebaseAuthTokenProvider(app.name, app.options, authProvider);\r\n validateUrl('Invalid Firebase Database URL', parsedUrl);\r\n if (!pathIsEmpty(parsedUrl.path)) {\r\n fatal('Database URL must point to the root of a Firebase Database ' +\r\n '(not including a child path).');\r\n }\r\n var repo = repoManagerCreateRepo(repoInfo, app, authTokenProvider, new AppCheckTokenProvider(app.name, appCheckProvider));\r\n return new Database$1(repo, app);\r\n}\r\n/**\r\n * Remove the repo and make sure it is disconnected.\r\n *\r\n */\r\nfunction repoManagerDeleteRepo(repo, appName) {\r\n var appRepos = repos[appName];\r\n // This should never happen...\r\n if (!appRepos || appRepos[repo.key] !== repo) {\r\n fatal(\"Database \" + appName + \"(\" + repo.repoInfo_ + \") has already been deleted.\");\r\n }\r\n repoInterrupt(repo);\r\n delete appRepos[repo.key];\r\n}\r\n/**\r\n * Ensures a repo doesn't already exist and then creates one using the\r\n * provided app.\r\n *\r\n * @param repoInfo - The metadata about the Repo\r\n * @returns The Repo object for the specified server / repoName.\r\n */\r\nfunction repoManagerCreateRepo(repoInfo, app, authTokenProvider, appCheckProvider) {\r\n var appRepos = repos[app.name];\r\n if (!appRepos) {\r\n appRepos = {};\r\n repos[app.name] = appRepos;\r\n }\r\n var repo = appRepos[repoInfo.toURLString()];\r\n if (repo) {\r\n fatal('Database initialized multiple times. Please make sure the format of the database URL matches with each database() call.');\r\n }\r\n repo = new Repo(repoInfo, useRestClient, authTokenProvider, appCheckProvider);\r\n appRepos[repoInfo.toURLString()] = repo;\r\n return repo;\r\n}\r\n/**\r\n * Forces us to use ReadonlyRestClient instead of PersistentConnection for new Repos.\r\n */\r\nfunction repoManagerForceRestClient(forceRestClient) {\r\n useRestClient = forceRestClient;\r\n}\r\n/**\r\n * Class representing a Firebase Realtime Database.\r\n */\r\nvar Database$1 = /** @class */ (function () {\r\n /** @hideconstructor */\r\n function Database(_repoInternal, \r\n /** The FirebaseApp associated with this Realtime Database instance. */\r\n app) {\r\n this._repoInternal = _repoInternal;\r\n this.app = app;\r\n /** Represents a database instance. */\r\n this['type'] = 'database';\r\n /** Track if the instance has been used (root or repo accessed) */\r\n this._instanceStarted = false;\r\n }\r\n Object.defineProperty(Database.prototype, \"_repo\", {\r\n get: function () {\r\n if (!this._instanceStarted) {\r\n repoStart(this._repoInternal, this.app.options.appId, this.app.options['databaseAuthVariableOverride']);\r\n this._instanceStarted = true;\r\n }\r\n return this._repoInternal;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(Database.prototype, \"_root\", {\r\n get: function () {\r\n if (!this._rootInternal) {\r\n this._rootInternal = new ReferenceImpl(this._repo, newEmptyPath());\r\n }\r\n return this._rootInternal;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Database.prototype._delete = function () {\r\n if (this._rootInternal !== null) {\r\n repoManagerDeleteRepo(this._repo, this.app.name);\r\n this._repoInternal = null;\r\n this._rootInternal = null;\r\n }\r\n return Promise.resolve();\r\n };\r\n Database.prototype._checkNotDeleted = function (apiName) {\r\n if (this._rootInternal === null) {\r\n fatal('Cannot call ' + apiName + ' on a deleted database.');\r\n }\r\n };\r\n return Database;\r\n}());\r\n/**\r\n * Modify the provided instance to communicate with the Realtime Database\r\n * emulator.\r\n *\r\n *

Note: This method must be called before performing any other operation.\r\n *\r\n * @param db - The instance to modify.\r\n * @param host - The emulator host (ex: localhost)\r\n * @param port - The emulator port (ex: 8080)\r\n * @param options.mockUserToken - the mock auth token to use for unit testing Security Rules\r\n */\r\nfunction connectDatabaseEmulator(db, host, port, options) {\r\n if (options === void 0) { options = {}; }\r\n db = getModularInstance(db);\r\n db._checkNotDeleted('useEmulator');\r\n if (db._instanceStarted) {\r\n fatal('Cannot call useEmulator() after instance has already been initialized.');\r\n }\r\n var repo = db._repoInternal;\r\n var tokenProvider = undefined;\r\n if (repo.repoInfo_.nodeAdmin) {\r\n if (options.mockUserToken) {\r\n fatal('mockUserToken is not supported by the Admin SDK. For client access with mock users, please use the \"firebase\" package instead of \"firebase-admin\".');\r\n }\r\n tokenProvider = new EmulatorTokenProvider(EmulatorTokenProvider.OWNER);\r\n }\r\n else if (options.mockUserToken) {\r\n var token = typeof options.mockUserToken === 'string'\r\n ? options.mockUserToken\r\n : createMockUserToken(options.mockUserToken, db.app.options.projectId);\r\n tokenProvider = new EmulatorTokenProvider(token);\r\n }\r\n // Modify the repo to apply emulator settings\r\n repoManagerApplyEmulatorSettings(repo, host, port, tokenProvider);\r\n}\r\n/**\r\n * Disconnects from the server (all Database operations will be completed\r\n * offline).\r\n *\r\n * The client automatically maintains a persistent connection to the Database\r\n * server, which will remain active indefinitely and reconnect when\r\n * disconnected. However, the `goOffline()` and `goOnline()` methods may be used\r\n * to control the client connection in cases where a persistent connection is\r\n * undesirable.\r\n *\r\n * While offline, the client will no longer receive data updates from the\r\n * Database. However, all Database operations performed locally will continue to\r\n * immediately fire events, allowing your application to continue behaving\r\n * normally. Additionally, each operation performed locally will automatically\r\n * be queued and retried upon reconnection to the Database server.\r\n *\r\n * To reconnect to the Database and begin receiving remote events, see\r\n * `goOnline()`.\r\n *\r\n * @param db - The instance to disconnect.\r\n */\r\nfunction goOffline(db) {\r\n db = getModularInstance(db);\r\n db._checkNotDeleted('goOffline');\r\n repoInterrupt(db._repo);\r\n}\r\n/**\r\n * Reconnects to the server and synchronizes the offline Database state\r\n * with the server state.\r\n *\r\n * This method should be used after disabling the active connection with\r\n * `goOffline()`. Once reconnected, the client will transmit the proper data\r\n * and fire the appropriate events so that your client \"catches up\"\r\n * automatically.\r\n *\r\n * @param db - The instance to reconnect.\r\n */\r\nfunction goOnline(db) {\r\n db = getModularInstance(db);\r\n db._checkNotDeleted('goOnline');\r\n repoResume(db._repo);\r\n}\n\n/**\r\n * @license\r\n * Copyright 2020 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nvar SERVER_TIMESTAMP = {\r\n '.sv': 'timestamp'\r\n};\r\n/**\r\n * Returns a placeholder value for auto-populating the current timestamp (time\r\n * since the Unix epoch, in milliseconds) as determined by the Firebase\r\n * servers.\r\n */\r\nfunction serverTimestamp() {\r\n return SERVER_TIMESTAMP;\r\n}\r\n/**\r\n * Returns a placeholder value that can be used to atomically increment the\r\n * current database value by the provided delta.\r\n *\r\n * @param delta - the amount to modify the current value atomically.\r\n * @returns A placeholder value for modifying data atomically server-side.\r\n */\r\nfunction increment(delta) {\r\n return {\r\n '.sv': {\r\n 'increment': delta\r\n }\r\n };\r\n}\n\n/**\r\n * @license\r\n * Copyright 2020 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * A type for the resolve value of Firebase.transaction.\r\n */\r\nvar TransactionResult$1 = /** @class */ (function () {\r\n /** @hideconstructor */\r\n function TransactionResult(\r\n /** Whether the transaction was successfully committed. */\r\n committed, \r\n /** The resulting data snapshot. */\r\n snapshot) {\r\n this.committed = committed;\r\n this.snapshot = snapshot;\r\n }\r\n /** Returns a JSON-serializable representation of this object. */\r\n TransactionResult.prototype.toJSON = function () {\r\n return { committed: this.committed, snapshot: this.snapshot.toJSON() };\r\n };\r\n return TransactionResult;\r\n}());\r\n/**\r\n * Atomically modifies the data at this location.\r\n *\r\n * Atomically modify the data at this location. Unlike a normal `set()`, which\r\n * just overwrites the data regardless of its previous value, `transaction()` is\r\n * used to modify the existing value to a new value, ensuring there are no\r\n * conflicts with other clients writing to the same location at the same time.\r\n *\r\n * To accomplish this, you pass `runTransaction()` an update function which is\r\n * used to transform the current value into a new value. If another client\r\n * writes to the location before your new value is successfully written, your\r\n * update function will be called again with the new current value, and the\r\n * write will be retried. This will happen repeatedly until your write succeeds\r\n * without conflict or you abort the transaction by not returning a value from\r\n * your update function.\r\n *\r\n * Note: Modifying data with `set()` will cancel any pending transactions at\r\n * that location, so extreme care should be taken if mixing `set()` and\r\n * `transaction()` to update the same data.\r\n *\r\n * Note: When using transactions with Security and Firebase Rules in place, be\r\n * aware that a client needs `.read` access in addition to `.write` access in\r\n * order to perform a transaction. This is because the client-side nature of\r\n * transactions requires the client to read the data in order to transactionally\r\n * update it.\r\n *\r\n * @param ref - The location to atomically modify.\r\n * @param transactionUpdate - A developer-supplied function which will be passed\r\n * the current data stored at this location (as a JavaScript object). The\r\n * function should return the new value it would like written (as a JavaScript\r\n * object). If `undefined` is returned (i.e. you return with no arguments) the\r\n * transaction will be aborted and the data at this location will not be\r\n * modified.\r\n * @param options - An options object to configure transactions.\r\n * @returns A Promise that can optionally be used instead of the onComplete\r\n * callback to handle success and failure.\r\n */\r\nfunction runTransaction(ref, \r\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\r\ntransactionUpdate, options) {\r\n var _a;\r\n ref = getModularInstance(ref);\r\n validateWritablePath('Reference.transaction', ref._path);\r\n if (ref.key === '.length' || ref.key === '.keys') {\r\n throw ('Reference.transaction failed: ' + ref.key + ' is a read-only object.');\r\n }\r\n var applyLocally = (_a = options === null || options === void 0 ? void 0 : options.applyLocally) !== null && _a !== void 0 ? _a : true;\r\n var deferred = new Deferred();\r\n var promiseComplete = function (error, committed, node) {\r\n var dataSnapshot = null;\r\n if (error) {\r\n deferred.reject(error);\r\n }\r\n else {\r\n dataSnapshot = new DataSnapshot$1(node, new ReferenceImpl(ref._repo, ref._path), PRIORITY_INDEX);\r\n deferred.resolve(new TransactionResult$1(committed, dataSnapshot));\r\n }\r\n };\r\n // Add a watch to make sure we get server updates.\r\n var unwatcher = onValue(ref, function () { });\r\n repoStartTransaction(ref._repo, ref._path, transactionUpdate, promiseComplete, unwatcher, applyLocally);\r\n return deferred.promise;\r\n}\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nvar OnDisconnect = /** @class */ (function () {\r\n function OnDisconnect(_delegate) {\r\n this._delegate = _delegate;\r\n }\r\n OnDisconnect.prototype.cancel = function (onComplete) {\r\n validateArgCount('OnDisconnect.cancel', 0, 1, arguments.length);\r\n validateCallback('OnDisconnect.cancel', 'onComplete', onComplete, true);\r\n var result = this._delegate.cancel();\r\n if (onComplete) {\r\n result.then(function () { return onComplete(null); }, function (error) { return onComplete(error); });\r\n }\r\n return result;\r\n };\r\n OnDisconnect.prototype.remove = function (onComplete) {\r\n validateArgCount('OnDisconnect.remove', 0, 1, arguments.length);\r\n validateCallback('OnDisconnect.remove', 'onComplete', onComplete, true);\r\n var result = this._delegate.remove();\r\n if (onComplete) {\r\n result.then(function () { return onComplete(null); }, function (error) { return onComplete(error); });\r\n }\r\n return result;\r\n };\r\n OnDisconnect.prototype.set = function (value, onComplete) {\r\n validateArgCount('OnDisconnect.set', 1, 2, arguments.length);\r\n validateCallback('OnDisconnect.set', 'onComplete', onComplete, true);\r\n var result = this._delegate.set(value);\r\n if (onComplete) {\r\n result.then(function () { return onComplete(null); }, function (error) { return onComplete(error); });\r\n }\r\n return result;\r\n };\r\n OnDisconnect.prototype.setWithPriority = function (value, priority, onComplete) {\r\n validateArgCount('OnDisconnect.setWithPriority', 2, 3, arguments.length);\r\n validateCallback('OnDisconnect.setWithPriority', 'onComplete', onComplete, true);\r\n var result = this._delegate.setWithPriority(value, priority);\r\n if (onComplete) {\r\n result.then(function () { return onComplete(null); }, function (error) { return onComplete(error); });\r\n }\r\n return result;\r\n };\r\n OnDisconnect.prototype.update = function (objectToMerge, onComplete) {\r\n validateArgCount('OnDisconnect.update', 1, 2, arguments.length);\r\n if (Array.isArray(objectToMerge)) {\r\n var newObjectToMerge = {};\r\n for (var i = 0; i < objectToMerge.length; ++i) {\r\n newObjectToMerge['' + i] = objectToMerge[i];\r\n }\r\n objectToMerge = newObjectToMerge;\r\n warn('Passing an Array to firebase.database.onDisconnect().update() is deprecated. Use set() if you want to overwrite the ' +\r\n 'existing data, or an Object with integer keys if you really do want to only update some of the children.');\r\n }\r\n validateCallback('OnDisconnect.update', 'onComplete', onComplete, true);\r\n var result = this._delegate.update(objectToMerge);\r\n if (onComplete) {\r\n result.then(function () { return onComplete(null); }, function (error) { return onComplete(error); });\r\n }\r\n return result;\r\n };\r\n return OnDisconnect;\r\n}());\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nvar TransactionResult = /** @class */ (function () {\r\n /**\r\n * A type for the resolve value of Firebase.transaction.\r\n */\r\n function TransactionResult(committed, snapshot) {\r\n this.committed = committed;\r\n this.snapshot = snapshot;\r\n }\r\n // Do not create public documentation. This is intended to make JSON serialization work but is otherwise unnecessary\r\n // for end-users\r\n TransactionResult.prototype.toJSON = function () {\r\n validateArgCount('TransactionResult.toJSON', 0, 1, arguments.length);\r\n return { committed: this.committed, snapshot: this.snapshot.toJSON() };\r\n };\r\n return TransactionResult;\r\n}());\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/* eslint-enable @typescript-eslint/no-explicit-any */\r\n/**\r\n * Class representing a firebase data snapshot. It wraps a SnapshotNode and\r\n * surfaces the public methods (val, forEach, etc.) we want to expose.\r\n */\r\nvar DataSnapshot = /** @class */ (function () {\r\n function DataSnapshot(_database, _delegate) {\r\n this._database = _database;\r\n this._delegate = _delegate;\r\n }\r\n /**\r\n * Retrieves the snapshot contents as JSON. Returns null if the snapshot is\r\n * empty.\r\n *\r\n * @returns JSON representation of the DataSnapshot contents, or null if empty.\r\n */\r\n DataSnapshot.prototype.val = function () {\r\n validateArgCount('DataSnapshot.val', 0, 0, arguments.length);\r\n return this._delegate.val();\r\n };\r\n /**\r\n * Returns the snapshot contents as JSON, including priorities of node. Suitable for exporting\r\n * the entire node contents.\r\n * @returns JSON representation of the DataSnapshot contents, or null if empty.\r\n */\r\n DataSnapshot.prototype.exportVal = function () {\r\n validateArgCount('DataSnapshot.exportVal', 0, 0, arguments.length);\r\n return this._delegate.exportVal();\r\n };\r\n // Do not create public documentation. This is intended to make JSON serialization work but is otherwise unnecessary\r\n // for end-users\r\n DataSnapshot.prototype.toJSON = function () {\r\n // Optional spacer argument is unnecessary because we're depending on recursion rather than stringifying the content\r\n validateArgCount('DataSnapshot.toJSON', 0, 1, arguments.length);\r\n return this._delegate.toJSON();\r\n };\r\n /**\r\n * Returns whether the snapshot contains a non-null value.\r\n *\r\n * @returns Whether the snapshot contains a non-null value, or is empty.\r\n */\r\n DataSnapshot.prototype.exists = function () {\r\n validateArgCount('DataSnapshot.exists', 0, 0, arguments.length);\r\n return this._delegate.exists();\r\n };\r\n /**\r\n * Returns a DataSnapshot of the specified child node's contents.\r\n *\r\n * @param path - Path to a child.\r\n * @returns DataSnapshot for child node.\r\n */\r\n DataSnapshot.prototype.child = function (path) {\r\n validateArgCount('DataSnapshot.child', 0, 1, arguments.length);\r\n // Ensure the childPath is a string (can be a number)\r\n path = String(path);\r\n validatePathString('DataSnapshot.child', 'path', path, false);\r\n return new DataSnapshot(this._database, this._delegate.child(path));\r\n };\r\n /**\r\n * Returns whether the snapshot contains a child at the specified path.\r\n *\r\n * @param path - Path to a child.\r\n * @returns Whether the child exists.\r\n */\r\n DataSnapshot.prototype.hasChild = function (path) {\r\n validateArgCount('DataSnapshot.hasChild', 1, 1, arguments.length);\r\n validatePathString('DataSnapshot.hasChild', 'path', path, false);\r\n return this._delegate.hasChild(path);\r\n };\r\n /**\r\n * Returns the priority of the object, or null if no priority was set.\r\n *\r\n * @returns The priority.\r\n */\r\n DataSnapshot.prototype.getPriority = function () {\r\n validateArgCount('DataSnapshot.getPriority', 0, 0, arguments.length);\r\n return this._delegate.priority;\r\n };\r\n /**\r\n * Iterates through child nodes and calls the specified action for each one.\r\n *\r\n * @param action - Callback function to be called\r\n * for each child.\r\n * @returns True if forEach was canceled by action returning true for\r\n * one of the child nodes.\r\n */\r\n DataSnapshot.prototype.forEach = function (action) {\r\n var _this = this;\r\n validateArgCount('DataSnapshot.forEach', 1, 1, arguments.length);\r\n validateCallback('DataSnapshot.forEach', 'action', action, false);\r\n return this._delegate.forEach(function (expDataSnapshot) {\r\n return action(new DataSnapshot(_this._database, expDataSnapshot));\r\n });\r\n };\r\n /**\r\n * Returns whether this DataSnapshot has children.\r\n * @returns True if the DataSnapshot contains 1 or more child nodes.\r\n */\r\n DataSnapshot.prototype.hasChildren = function () {\r\n validateArgCount('DataSnapshot.hasChildren', 0, 0, arguments.length);\r\n return this._delegate.hasChildren();\r\n };\r\n Object.defineProperty(DataSnapshot.prototype, \"key\", {\r\n get: function () {\r\n return this._delegate.key;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n /**\r\n * Returns the number of children for this DataSnapshot.\r\n * @returns The number of children that this DataSnapshot contains.\r\n */\r\n DataSnapshot.prototype.numChildren = function () {\r\n validateArgCount('DataSnapshot.numChildren', 0, 0, arguments.length);\r\n return this._delegate.size;\r\n };\r\n /**\r\n * @returns The Firebase reference for the location this snapshot's data came\r\n * from.\r\n */\r\n DataSnapshot.prototype.getRef = function () {\r\n validateArgCount('DataSnapshot.ref', 0, 0, arguments.length);\r\n return new Reference(this._database, this._delegate.ref);\r\n };\r\n Object.defineProperty(DataSnapshot.prototype, \"ref\", {\r\n get: function () {\r\n return this.getRef();\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n return DataSnapshot;\r\n}());\r\n/**\r\n * A Query represents a filter to be applied to a firebase location. This object purely represents the\r\n * query expression (and exposes our public API to build the query). The actual query logic is in ViewBase.js.\r\n *\r\n * Since every Firebase reference is a query, Firebase inherits from this object.\r\n */\r\nvar Query = /** @class */ (function () {\r\n function Query(database, _delegate) {\r\n this.database = database;\r\n this._delegate = _delegate;\r\n }\r\n Query.prototype.on = function (eventType, callback, cancelCallbackOrContext, context) {\r\n var _this = this;\r\n var _a;\r\n validateArgCount('Query.on', 2, 4, arguments.length);\r\n validateCallback('Query.on', 'callback', callback, false);\r\n var ret = Query.getCancelAndContextArgs_('Query.on', cancelCallbackOrContext, context);\r\n var valueCallback = function (expSnapshot, previousChildName) {\r\n callback.call(ret.context, new DataSnapshot(_this.database, expSnapshot), previousChildName);\r\n };\r\n valueCallback.userCallback = callback;\r\n valueCallback.context = ret.context;\r\n var cancelCallback = (_a = ret.cancel) === null || _a === void 0 ? void 0 : _a.bind(ret.context);\r\n switch (eventType) {\r\n case 'value':\r\n onValue(this._delegate, valueCallback, cancelCallback);\r\n return callback;\r\n case 'child_added':\r\n onChildAdded(this._delegate, valueCallback, cancelCallback);\r\n return callback;\r\n case 'child_removed':\r\n onChildRemoved(this._delegate, valueCallback, cancelCallback);\r\n return callback;\r\n case 'child_changed':\r\n onChildChanged(this._delegate, valueCallback, cancelCallback);\r\n return callback;\r\n case 'child_moved':\r\n onChildMoved(this._delegate, valueCallback, cancelCallback);\r\n return callback;\r\n default:\r\n throw new Error(errorPrefix('Query.on', 'eventType') +\r\n 'must be a valid event type = \"value\", \"child_added\", \"child_removed\", ' +\r\n '\"child_changed\", or \"child_moved\".');\r\n }\r\n };\r\n Query.prototype.off = function (eventType, callback, context) {\r\n validateArgCount('Query.off', 0, 3, arguments.length);\r\n validateEventType('Query.off', eventType, true);\r\n validateCallback('Query.off', 'callback', callback, true);\r\n validateContextObject('Query.off', 'context', context, true);\r\n if (callback) {\r\n var valueCallback = function () { };\r\n valueCallback.userCallback = callback;\r\n valueCallback.context = context;\r\n off(this._delegate, eventType, valueCallback);\r\n }\r\n else {\r\n off(this._delegate, eventType);\r\n }\r\n };\r\n /**\r\n * Get the server-value for this query, or return a cached value if not connected.\r\n */\r\n Query.prototype.get = function () {\r\n var _this = this;\r\n return get(this._delegate).then(function (expSnapshot) {\r\n return new DataSnapshot(_this.database, expSnapshot);\r\n });\r\n };\r\n /**\r\n * Attaches a listener, waits for the first event, and then removes the listener\r\n */\r\n Query.prototype.once = function (eventType, callback, failureCallbackOrContext, context) {\r\n var _this = this;\r\n validateArgCount('Query.once', 1, 4, arguments.length);\r\n validateCallback('Query.once', 'callback', callback, true);\r\n var ret = Query.getCancelAndContextArgs_('Query.once', failureCallbackOrContext, context);\r\n var deferred = new Deferred();\r\n var valueCallback = function (expSnapshot, previousChildName) {\r\n var result = new DataSnapshot(_this.database, expSnapshot);\r\n if (callback) {\r\n callback.call(ret.context, result, previousChildName);\r\n }\r\n deferred.resolve(result);\r\n };\r\n valueCallback.userCallback = callback;\r\n valueCallback.context = ret.context;\r\n var cancelCallback = function (error) {\r\n if (ret.cancel) {\r\n ret.cancel.call(ret.context, error);\r\n }\r\n deferred.reject(error);\r\n };\r\n switch (eventType) {\r\n case 'value':\r\n onValue(this._delegate, valueCallback, cancelCallback, {\r\n onlyOnce: true\r\n });\r\n break;\r\n case 'child_added':\r\n onChildAdded(this._delegate, valueCallback, cancelCallback, {\r\n onlyOnce: true\r\n });\r\n break;\r\n case 'child_removed':\r\n onChildRemoved(this._delegate, valueCallback, cancelCallback, {\r\n onlyOnce: true\r\n });\r\n break;\r\n case 'child_changed':\r\n onChildChanged(this._delegate, valueCallback, cancelCallback, {\r\n onlyOnce: true\r\n });\r\n break;\r\n case 'child_moved':\r\n onChildMoved(this._delegate, valueCallback, cancelCallback, {\r\n onlyOnce: true\r\n });\r\n break;\r\n default:\r\n throw new Error(errorPrefix('Query.once', 'eventType') +\r\n 'must be a valid event type = \"value\", \"child_added\", \"child_removed\", ' +\r\n '\"child_changed\", or \"child_moved\".');\r\n }\r\n return deferred.promise;\r\n };\r\n /**\r\n * Set a limit and anchor it to the start of the window.\r\n */\r\n Query.prototype.limitToFirst = function (limit) {\r\n validateArgCount('Query.limitToFirst', 1, 1, arguments.length);\r\n return new Query(this.database, query(this._delegate, limitToFirst(limit)));\r\n };\r\n /**\r\n * Set a limit and anchor it to the end of the window.\r\n */\r\n Query.prototype.limitToLast = function (limit) {\r\n validateArgCount('Query.limitToLast', 1, 1, arguments.length);\r\n return new Query(this.database, query(this._delegate, limitToLast(limit)));\r\n };\r\n /**\r\n * Given a child path, return a new query ordered by the specified grandchild path.\r\n */\r\n Query.prototype.orderByChild = function (path) {\r\n validateArgCount('Query.orderByChild', 1, 1, arguments.length);\r\n return new Query(this.database, query(this._delegate, orderByChild(path)));\r\n };\r\n /**\r\n * Return a new query ordered by the KeyIndex\r\n */\r\n Query.prototype.orderByKey = function () {\r\n validateArgCount('Query.orderByKey', 0, 0, arguments.length);\r\n return new Query(this.database, query(this._delegate, orderByKey()));\r\n };\r\n /**\r\n * Return a new query ordered by the PriorityIndex\r\n */\r\n Query.prototype.orderByPriority = function () {\r\n validateArgCount('Query.orderByPriority', 0, 0, arguments.length);\r\n return new Query(this.database, query(this._delegate, orderByPriority()));\r\n };\r\n /**\r\n * Return a new query ordered by the ValueIndex\r\n */\r\n Query.prototype.orderByValue = function () {\r\n validateArgCount('Query.orderByValue', 0, 0, arguments.length);\r\n return new Query(this.database, query(this._delegate, orderByValue()));\r\n };\r\n Query.prototype.startAt = function (value, name) {\r\n if (value === void 0) { value = null; }\r\n validateArgCount('Query.startAt', 0, 2, arguments.length);\r\n return new Query(this.database, query(this._delegate, startAt(value, name)));\r\n };\r\n Query.prototype.startAfter = function (value, name) {\r\n if (value === void 0) { value = null; }\r\n validateArgCount('Query.startAfter', 0, 2, arguments.length);\r\n return new Query(this.database, query(this._delegate, startAfter(value, name)));\r\n };\r\n Query.prototype.endAt = function (value, name) {\r\n if (value === void 0) { value = null; }\r\n validateArgCount('Query.endAt', 0, 2, arguments.length);\r\n return new Query(this.database, query(this._delegate, endAt(value, name)));\r\n };\r\n Query.prototype.endBefore = function (value, name) {\r\n if (value === void 0) { value = null; }\r\n validateArgCount('Query.endBefore', 0, 2, arguments.length);\r\n return new Query(this.database, query(this._delegate, endBefore(value, name)));\r\n };\r\n /**\r\n * Load the selection of children with exactly the specified value, and, optionally,\r\n * the specified name.\r\n */\r\n Query.prototype.equalTo = function (value, name) {\r\n validateArgCount('Query.equalTo', 1, 2, arguments.length);\r\n return new Query(this.database, query(this._delegate, equalTo(value, name)));\r\n };\r\n /**\r\n * @returns URL for this location.\r\n */\r\n Query.prototype.toString = function () {\r\n validateArgCount('Query.toString', 0, 0, arguments.length);\r\n return this._delegate.toString();\r\n };\r\n // Do not create public documentation. This is intended to make JSON serialization work but is otherwise unnecessary\r\n // for end-users.\r\n Query.prototype.toJSON = function () {\r\n // An optional spacer argument is unnecessary for a string.\r\n validateArgCount('Query.toJSON', 0, 1, arguments.length);\r\n return this._delegate.toJSON();\r\n };\r\n /**\r\n * Return true if this query and the provided query are equivalent; otherwise, return false.\r\n */\r\n Query.prototype.isEqual = function (other) {\r\n validateArgCount('Query.isEqual', 1, 1, arguments.length);\r\n if (!(other instanceof Query)) {\r\n var error = 'Query.isEqual failed: First argument must be an instance of firebase.database.Query.';\r\n throw new Error(error);\r\n }\r\n return this._delegate.isEqual(other._delegate);\r\n };\r\n /**\r\n * Helper used by .on and .once to extract the context and or cancel arguments.\r\n * @param fnName - The function name (on or once)\r\n *\r\n */\r\n Query.getCancelAndContextArgs_ = function (fnName, cancelOrContext, context) {\r\n var ret = { cancel: undefined, context: undefined };\r\n if (cancelOrContext && context) {\r\n ret.cancel = cancelOrContext;\r\n validateCallback(fnName, 'cancel', ret.cancel, true);\r\n ret.context = context;\r\n validateContextObject(fnName, 'context', ret.context, true);\r\n }\r\n else if (cancelOrContext) {\r\n // we have either a cancel callback or a context.\r\n if (typeof cancelOrContext === 'object' && cancelOrContext !== null) {\r\n // it's a context!\r\n ret.context = cancelOrContext;\r\n }\r\n else if (typeof cancelOrContext === 'function') {\r\n ret.cancel = cancelOrContext;\r\n }\r\n else {\r\n throw new Error(errorPrefix(fnName, 'cancelOrContext') +\r\n ' must either be a cancel callback or a context object.');\r\n }\r\n }\r\n return ret;\r\n };\r\n Object.defineProperty(Query.prototype, \"ref\", {\r\n get: function () {\r\n return new Reference(this.database, new ReferenceImpl(this._delegate._repo, this._delegate._path));\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n return Query;\r\n}());\r\nvar Reference = /** @class */ (function (_super) {\r\n __extends(Reference, _super);\r\n /**\r\n * Call options:\r\n * new Reference(Repo, Path) or\r\n * new Reference(url: string, string|RepoManager)\r\n *\r\n * Externally - this is the firebase.database.Reference type.\r\n */\r\n function Reference(database, _delegate) {\r\n var _this = _super.call(this, database, new QueryImpl(_delegate._repo, _delegate._path, new QueryParams(), false)) || this;\r\n _this.database = database;\r\n _this._delegate = _delegate;\r\n return _this;\r\n }\r\n /** @returns {?string} */\r\n Reference.prototype.getKey = function () {\r\n validateArgCount('Reference.key', 0, 0, arguments.length);\r\n return this._delegate.key;\r\n };\r\n Reference.prototype.child = function (pathString) {\r\n validateArgCount('Reference.child', 1, 1, arguments.length);\r\n if (typeof pathString === 'number') {\r\n pathString = String(pathString);\r\n }\r\n return new Reference(this.database, child(this._delegate, pathString));\r\n };\r\n /** @returns {?Reference} */\r\n Reference.prototype.getParent = function () {\r\n validateArgCount('Reference.parent', 0, 0, arguments.length);\r\n var parent = this._delegate.parent;\r\n return parent ? new Reference(this.database, parent) : null;\r\n };\r\n /** @returns {!Reference} */\r\n Reference.prototype.getRoot = function () {\r\n validateArgCount('Reference.root', 0, 0, arguments.length);\r\n return new Reference(this.database, this._delegate.root);\r\n };\r\n Reference.prototype.set = function (newVal, onComplete) {\r\n validateArgCount('Reference.set', 1, 2, arguments.length);\r\n validateCallback('Reference.set', 'onComplete', onComplete, true);\r\n var result = set(this._delegate, newVal);\r\n if (onComplete) {\r\n result.then(function () { return onComplete(null); }, function (error) { return onComplete(error); });\r\n }\r\n return result;\r\n };\r\n Reference.prototype.update = function (values, onComplete) {\r\n validateArgCount('Reference.update', 1, 2, arguments.length);\r\n if (Array.isArray(values)) {\r\n var newObjectToMerge = {};\r\n for (var i = 0; i < values.length; ++i) {\r\n newObjectToMerge['' + i] = values[i];\r\n }\r\n values = newObjectToMerge;\r\n warn('Passing an Array to Firebase.update() is deprecated. ' +\r\n 'Use set() if you want to overwrite the existing data, or ' +\r\n 'an Object with integer keys if you really do want to ' +\r\n 'only update some of the children.');\r\n }\r\n validateWritablePath('Reference.update', this._delegate._path);\r\n validateCallback('Reference.update', 'onComplete', onComplete, true);\r\n var result = update(this._delegate, values);\r\n if (onComplete) {\r\n result.then(function () { return onComplete(null); }, function (error) { return onComplete(error); });\r\n }\r\n return result;\r\n };\r\n Reference.prototype.setWithPriority = function (newVal, newPriority, onComplete) {\r\n validateArgCount('Reference.setWithPriority', 2, 3, arguments.length);\r\n validateCallback('Reference.setWithPriority', 'onComplete', onComplete, true);\r\n var result = setWithPriority(this._delegate, newVal, newPriority);\r\n if (onComplete) {\r\n result.then(function () { return onComplete(null); }, function (error) { return onComplete(error); });\r\n }\r\n return result;\r\n };\r\n Reference.prototype.remove = function (onComplete) {\r\n validateArgCount('Reference.remove', 0, 1, arguments.length);\r\n validateCallback('Reference.remove', 'onComplete', onComplete, true);\r\n var result = remove(this._delegate);\r\n if (onComplete) {\r\n result.then(function () { return onComplete(null); }, function (error) { return onComplete(error); });\r\n }\r\n return result;\r\n };\r\n Reference.prototype.transaction = function (transactionUpdate, onComplete, applyLocally) {\r\n var _this = this;\r\n validateArgCount('Reference.transaction', 1, 3, arguments.length);\r\n validateCallback('Reference.transaction', 'transactionUpdate', transactionUpdate, false);\r\n validateCallback('Reference.transaction', 'onComplete', onComplete, true);\r\n validateBoolean('Reference.transaction', 'applyLocally', applyLocally, true);\r\n var result = runTransaction(this._delegate, transactionUpdate, {\r\n applyLocally: applyLocally\r\n }).then(function (transactionResult) {\r\n return new TransactionResult(transactionResult.committed, new DataSnapshot(_this.database, transactionResult.snapshot));\r\n });\r\n if (onComplete) {\r\n result.then(function (transactionResult) {\r\n return onComplete(null, transactionResult.committed, transactionResult.snapshot);\r\n }, function (error) { return onComplete(error, false, null); });\r\n }\r\n return result;\r\n };\r\n Reference.prototype.setPriority = function (priority, onComplete) {\r\n validateArgCount('Reference.setPriority', 1, 2, arguments.length);\r\n validateCallback('Reference.setPriority', 'onComplete', onComplete, true);\r\n var result = setPriority(this._delegate, priority);\r\n if (onComplete) {\r\n result.then(function () { return onComplete(null); }, function (error) { return onComplete(error); });\r\n }\r\n return result;\r\n };\r\n Reference.prototype.push = function (value, onComplete) {\r\n var _this = this;\r\n validateArgCount('Reference.push', 0, 2, arguments.length);\r\n validateCallback('Reference.push', 'onComplete', onComplete, true);\r\n var expPromise = push(this._delegate, value);\r\n var promise = expPromise.then(function (expRef) { return new Reference(_this.database, expRef); });\r\n if (onComplete) {\r\n promise.then(function () { return onComplete(null); }, function (error) { return onComplete(error); });\r\n }\r\n var result = new Reference(this.database, expPromise);\r\n result.then = promise.then.bind(promise);\r\n result.catch = promise.catch.bind(promise, undefined);\r\n return result;\r\n };\r\n Reference.prototype.onDisconnect = function () {\r\n validateWritablePath('Reference.onDisconnect', this._delegate._path);\r\n return new OnDisconnect(new OnDisconnect$1(this._delegate._repo, this._delegate._path));\r\n };\r\n Object.defineProperty(Reference.prototype, \"key\", {\r\n get: function () {\r\n return this.getKey();\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(Reference.prototype, \"parent\", {\r\n get: function () {\r\n return this.getParent();\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(Reference.prototype, \"root\", {\r\n get: function () {\r\n return this.getRoot();\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n return Reference;\r\n}(Query));\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * Class representing a firebase database.\r\n */\r\nvar Database = /** @class */ (function () {\r\n /**\r\n * The constructor should not be called by users of our public API.\r\n */\r\n function Database(_delegate, app) {\r\n var _this = this;\r\n this._delegate = _delegate;\r\n this.app = app;\r\n this.INTERNAL = {\r\n delete: function () { return _this._delegate._delete(); }\r\n };\r\n }\r\n /**\r\n * Modify this instance to communicate with the Realtime Database emulator.\r\n *\r\n *

Note: This method must be called before performing any other operation.\r\n *\r\n * @param host - the emulator host (ex: localhost)\r\n * @param port - the emulator port (ex: 8080)\r\n * @param options.mockUserToken - the mock auth token to use for unit testing Security Rules\r\n */\r\n Database.prototype.useEmulator = function (host, port, options) {\r\n if (options === void 0) { options = {}; }\r\n connectDatabaseEmulator(this._delegate, host, port, options);\r\n };\r\n Database.prototype.ref = function (path) {\r\n validateArgCount('database.ref', 0, 1, arguments.length);\r\n if (path instanceof Reference) {\r\n var childRef = refFromURL(this._delegate, path.toString());\r\n return new Reference(this, childRef);\r\n }\r\n else {\r\n var childRef = ref(this._delegate, path);\r\n return new Reference(this, childRef);\r\n }\r\n };\r\n /**\r\n * Returns a reference to the root or the path specified in url.\r\n * We throw a exception if the url is not in the same domain as the\r\n * current repo.\r\n * @returns Firebase reference.\r\n */\r\n Database.prototype.refFromURL = function (url) {\r\n var apiName = 'database.refFromURL';\r\n validateArgCount(apiName, 1, 1, arguments.length);\r\n var childRef = refFromURL(this._delegate, url);\r\n return new Reference(this, childRef);\r\n };\r\n // Make individual repo go offline.\r\n Database.prototype.goOffline = function () {\r\n validateArgCount('database.goOffline', 0, 0, arguments.length);\r\n return goOffline(this._delegate);\r\n };\r\n Database.prototype.goOnline = function () {\r\n validateArgCount('database.goOnline', 0, 0, arguments.length);\r\n return goOnline(this._delegate);\r\n };\r\n Database.ServerValue = {\r\n TIMESTAMP: serverTimestamp(),\r\n increment: function (delta) { return increment(delta); }\r\n };\r\n return Database;\r\n}());\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * INTERNAL methods for internal-use only (tests, etc.).\r\n *\r\n * Customers shouldn't use these or else should be aware that they could break at any time.\r\n */\r\nvar forceLongPolling = function () {\r\n WebSocketConnection.forceDisallow();\r\n BrowserPollConnection.forceAllow();\r\n};\r\nvar forceWebSockets = function () {\r\n BrowserPollConnection.forceDisallow();\r\n};\r\n/* Used by App Manager */\r\nvar isWebSocketsAvailable = function () {\r\n return WebSocketConnection['isAvailable']();\r\n};\r\nvar setSecurityDebugCallback = function (ref, callback) {\r\n var connection = ref._delegate._repo.persistentConnection_;\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n connection.securityDebugCallback_ = callback;\r\n};\r\nvar stats = function (ref, showDelta) {\r\n repoStats(ref._delegate._repo, showDelta);\r\n};\r\nvar statsIncrementCounter = function (ref, metric) {\r\n repoStatsIncrementCounter(ref._delegate._repo, metric);\r\n};\r\nvar dataUpdateCount = function (ref) {\r\n return ref._delegate._repo.dataUpdateCount;\r\n};\r\nvar interceptServerData = function (ref, callback) {\r\n return repoInterceptServerData(ref._delegate._repo, callback);\r\n};\r\n/**\r\n * Used by console to create a database based on the app,\r\n * passed database URL and a custom auth implementation.\r\n *\r\n * @param app - A valid FirebaseApp-like object\r\n * @param url - A valid Firebase databaseURL\r\n * @param version - custom version e.g. firebase-admin version\r\n * @param customAuthImpl - custom auth implementation\r\n */\r\nfunction initStandalone(_a) {\r\n var app = _a.app, url = _a.url, version = _a.version, customAuthImpl = _a.customAuthImpl, namespace = _a.namespace, _b = _a.nodeAdmin, nodeAdmin = _b === void 0 ? false : _b;\r\n setSDKVersion(version);\r\n /**\r\n * ComponentContainer('database-standalone') is just a placeholder that doesn't perform\r\n * any actual function.\r\n */\r\n var authProvider = new Provider('auth-internal', new ComponentContainer('database-standalone'));\r\n authProvider.setComponent(new Component('auth-internal', function () { return customAuthImpl; }, \"PRIVATE\" /* PRIVATE */));\r\n return {\r\n instance: new Database(repoManagerDatabaseFromApp(app, authProvider, \r\n /* appCheckProvider= */ undefined, url, nodeAdmin), app),\r\n namespace: namespace\r\n };\r\n}\n\nvar INTERNAL = /*#__PURE__*/Object.freeze({\n __proto__: null,\n forceLongPolling: forceLongPolling,\n forceWebSockets: forceWebSockets,\n isWebSocketsAvailable: isWebSocketsAvailable,\n setSecurityDebugCallback: setSecurityDebugCallback,\n stats: stats,\n statsIncrementCounter: statsIncrementCounter,\n dataUpdateCount: dataUpdateCount,\n interceptServerData: interceptServerData,\n initStandalone: initStandalone\n});\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nvar DataConnection = PersistentConnection;\r\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\r\nPersistentConnection.prototype.simpleListen = function (pathString, onComplete) {\r\n this.sendRequest('q', { p: pathString }, onComplete);\r\n};\r\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\r\nPersistentConnection.prototype.echo = function (data, onEcho) {\r\n this.sendRequest('echo', { d: data }, onEcho);\r\n};\r\n// RealTimeConnection properties that we use in tests.\r\nvar RealTimeConnection = Connection;\r\nvar hijackHash = function (newHash) {\r\n var oldPut = PersistentConnection.prototype.put;\r\n PersistentConnection.prototype.put = function (pathString, data, onComplete, hash) {\r\n if (hash !== undefined) {\r\n hash = newHash();\r\n }\r\n oldPut.call(this, pathString, data, onComplete, hash);\r\n };\r\n return function () {\r\n PersistentConnection.prototype.put = oldPut;\r\n };\r\n};\r\nvar ConnectionTarget = RepoInfo;\r\nvar queryIdentifier = function (query) {\r\n return query._delegate._queryIdentifier;\r\n};\r\n/**\r\n * Forces the RepoManager to create Repos that use ReadonlyRestClient instead of PersistentConnection.\r\n */\r\nvar forceRestClient = function (forceRestClient) {\r\n repoManagerForceRestClient(forceRestClient);\r\n};\n\nvar TEST_ACCESS = /*#__PURE__*/Object.freeze({\n __proto__: null,\n DataConnection: DataConnection,\n RealTimeConnection: RealTimeConnection,\n hijackHash: hijackHash,\n ConnectionTarget: ConnectionTarget,\n queryIdentifier: queryIdentifier,\n forceRestClient: forceRestClient\n});\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nvar ServerValue = Database.ServerValue;\r\nfunction registerDatabase(instance) {\r\n // set SDK_VERSION\r\n setSDKVersion(instance.SDK_VERSION);\r\n // Register the Database Service with the 'firebase' namespace.\r\n var namespace = instance.INTERNAL.registerComponent(new Component('database', function (container, _a) {\r\n var url = _a.instanceIdentifier;\r\n /* Dependencies */\r\n // getImmediate for FirebaseApp will always succeed\r\n var app = container.getProvider('app').getImmediate();\r\n var authProvider = container.getProvider('auth-internal');\r\n var appCheckProvider = container.getProvider('app-check-internal');\r\n return new Database(repoManagerDatabaseFromApp(app, authProvider, appCheckProvider, url), app);\r\n }, \"PUBLIC\" /* PUBLIC */)\r\n .setServiceProps(\r\n // firebase.database namespace properties\r\n {\r\n Reference: Reference,\r\n Query: Query,\r\n Database: Database,\r\n DataSnapshot: DataSnapshot,\r\n enableLogging: enableLogging,\r\n INTERNAL: INTERNAL,\r\n ServerValue: ServerValue,\r\n TEST_ACCESS: TEST_ACCESS\r\n })\r\n .setMultipleInstances(true));\r\n instance.registerVersion(name, version);\r\n if (isNodeSdk()) {\r\n module.exports = namespace;\r\n }\r\n}\r\nregisterDatabase(firebase);\n\nexport { DataSnapshot, Database, OnDisconnect, Query, Reference, ServerValue, enableLogging, registerDatabase };\n//# sourceMappingURL=index.esm.js.map\n","'use strict';\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar Iterators = require('../internals/iterators');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar ArrayPrototype = Array.prototype;\n\n// check on default Array iterator\nmodule.exports = function (it) {\n return it !== undefined && (Iterators.Array === it || ArrayPrototype[ITERATOR] === it);\n};\n","'use strict';\nvar aSet = require('../internals/a-set');\nvar add = require('../internals/set-helpers').add;\nvar clone = require('../internals/set-clone');\nvar getSetRecord = require('../internals/get-set-record');\nvar iterateSimple = require('../internals/iterate-simple');\n\n// `Set.prototype.union` method\n// https://github.com/tc39/proposal-set-methods\nmodule.exports = function union(other) {\n var O = aSet(this);\n var keysIter = getSetRecord(other).getIterator();\n var result = clone(O);\n iterateSimple(keysIter, function (it) {\n add(result, it);\n });\n return result;\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar globalThis = require('../internals/global-this');\nvar anInstance = require('../internals/an-instance');\nvar anObject = require('../internals/an-object');\nvar isCallable = require('../internals/is-callable');\nvar getPrototypeOf = require('../internals/object-get-prototype-of');\nvar defineBuiltInAccessor = require('../internals/define-built-in-accessor');\nvar createProperty = require('../internals/create-property');\nvar fails = require('../internals/fails');\nvar hasOwn = require('../internals/has-own-property');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar IteratorPrototype = require('../internals/iterators-core').IteratorPrototype;\nvar DESCRIPTORS = require('../internals/descriptors');\nvar IS_PURE = require('../internals/is-pure');\n\nvar CONSTRUCTOR = 'constructor';\nvar ITERATOR = 'Iterator';\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\n\nvar $TypeError = TypeError;\nvar NativeIterator = globalThis[ITERATOR];\n\n// FF56- have non-standard global helper `Iterator`\nvar FORCED = IS_PURE\n || !isCallable(NativeIterator)\n || NativeIterator.prototype !== IteratorPrototype\n // FF44- non-standard `Iterator` passes previous tests\n || !fails(function () { NativeIterator({}); });\n\nvar IteratorConstructor = function Iterator() {\n anInstance(this, IteratorPrototype);\n if (getPrototypeOf(this) === IteratorPrototype) throw new $TypeError('Abstract class Iterator not directly constructable');\n};\n\nvar defineIteratorPrototypeAccessor = function (key, value) {\n if (DESCRIPTORS) {\n defineBuiltInAccessor(IteratorPrototype, key, {\n configurable: true,\n get: function () {\n return value;\n },\n set: function (replacement) {\n anObject(this);\n if (this === IteratorPrototype) throw new $TypeError(\"You can't redefine this property\");\n if (hasOwn(this, key)) this[key] = replacement;\n else createProperty(this, key, replacement);\n }\n });\n } else IteratorPrototype[key] = value;\n};\n\nif (!hasOwn(IteratorPrototype, TO_STRING_TAG)) defineIteratorPrototypeAccessor(TO_STRING_TAG, ITERATOR);\n\nif (FORCED || !hasOwn(IteratorPrototype, CONSTRUCTOR) || IteratorPrototype[CONSTRUCTOR] === Object) {\n defineIteratorPrototypeAccessor(CONSTRUCTOR, IteratorConstructor);\n}\n\nIteratorConstructor.prototype = IteratorPrototype;\n\n// `Iterator` constructor\n// https://tc39.es/ecma262/#sec-iterator\n$({ global: true, constructor: true, forced: FORCED }, {\n Iterator: IteratorConstructor\n});\n","import { h, defineComponent, computed, getCurrentInstance } from 'vue'\n\nimport useDark, { useDarkProps } from '../../composables/private/use-dark.js'\n\nconst insetMap = {\n true: 'inset',\n item: 'item-inset',\n 'item-thumbnail': 'item-thumbnail-inset'\n}\n\nexport const margins = {\n xs: 2,\n sm: 4,\n md: 8,\n lg: 16,\n xl: 24\n}\n\nexport default defineComponent({\n name: 'QSeparator',\n\n props: {\n ...useDarkProps,\n\n spaced: [ Boolean, String ],\n inset: [ Boolean, String ],\n vertical: Boolean,\n color: String,\n size: String\n },\n\n setup (props) {\n const vm = getCurrentInstance()\n const isDark = useDark(props, vm.proxy.$q)\n\n const orientation = computed(() => (\n props.vertical === true\n ? 'vertical'\n : 'horizontal'\n ))\n\n const orientClass = computed(() => ` q-separator--${ orientation.value }`)\n\n const insetClass = computed(() => (\n props.inset !== false\n ? `${ orientClass.value }-${ insetMap[ props.inset ] }`\n : ''\n ))\n\n const classes = computed(() =>\n `q-separator${ orientClass.value }${ insetClass.value }`\n + (props.color !== void 0 ? ` bg-${ props.color }` : '')\n + (isDark.value === true ? ' q-separator--dark' : '')\n )\n\n const style = computed(() => {\n const acc = {}\n\n if (props.size !== void 0) {\n acc[ props.vertical === true ? 'width' : 'height' ] = props.size\n }\n\n if (props.spaced !== false) {\n const size = props.spaced === true\n ? `${ margins.md }px`\n : props.spaced in margins ? `${ margins[ props.spaced ] }px` : props.spaced\n\n const dir = props.vertical === true\n ? [ 'Left', 'Right' ]\n : [ 'Top', 'Bottom' ]\n\n acc[ `margin${ dir[ 0 ] }` ] = acc[ `margin${ dir[ 1 ] }` ] = size\n }\n\n return acc\n })\n\n return () => h('hr', {\n class: classes.value,\n style: style.value,\n role: 'separator',\n 'aria-orientation': orientation.value\n })\n }\n})\n","'use strict';\nvar NATIVE_ARRAY_BUFFER = require('../internals/array-buffer-basic-detection');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar globalThis = require('../internals/global-this');\nvar isCallable = require('../internals/is-callable');\nvar isObject = require('../internals/is-object');\nvar hasOwn = require('../internals/has-own-property');\nvar classof = require('../internals/classof');\nvar tryToString = require('../internals/try-to-string');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar defineBuiltIn = require('../internals/define-built-in');\nvar defineBuiltInAccessor = require('../internals/define-built-in-accessor');\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\nvar getPrototypeOf = require('../internals/object-get-prototype-of');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar uid = require('../internals/uid');\nvar InternalStateModule = require('../internals/internal-state');\n\nvar enforceInternalState = InternalStateModule.enforce;\nvar getInternalState = InternalStateModule.get;\nvar Int8Array = globalThis.Int8Array;\nvar Int8ArrayPrototype = Int8Array && Int8Array.prototype;\nvar Uint8ClampedArray = globalThis.Uint8ClampedArray;\nvar Uint8ClampedArrayPrototype = Uint8ClampedArray && Uint8ClampedArray.prototype;\nvar TypedArray = Int8Array && getPrototypeOf(Int8Array);\nvar TypedArrayPrototype = Int8ArrayPrototype && getPrototypeOf(Int8ArrayPrototype);\nvar ObjectPrototype = Object.prototype;\nvar TypeError = globalThis.TypeError;\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar TYPED_ARRAY_TAG = uid('TYPED_ARRAY_TAG');\nvar TYPED_ARRAY_CONSTRUCTOR = 'TypedArrayConstructor';\n// Fixing native typed arrays in Opera Presto crashes the browser, see #595\nvar NATIVE_ARRAY_BUFFER_VIEWS = NATIVE_ARRAY_BUFFER && !!setPrototypeOf && classof(globalThis.opera) !== 'Opera';\nvar TYPED_ARRAY_TAG_REQUIRED = false;\nvar NAME, Constructor, Prototype;\n\nvar TypedArrayConstructorsList = {\n Int8Array: 1,\n Uint8Array: 1,\n Uint8ClampedArray: 1,\n Int16Array: 2,\n Uint16Array: 2,\n Int32Array: 4,\n Uint32Array: 4,\n Float32Array: 4,\n Float64Array: 8\n};\n\nvar BigIntArrayConstructorsList = {\n BigInt64Array: 8,\n BigUint64Array: 8\n};\n\nvar isView = function isView(it) {\n if (!isObject(it)) return false;\n var klass = classof(it);\n return klass === 'DataView'\n || hasOwn(TypedArrayConstructorsList, klass)\n || hasOwn(BigIntArrayConstructorsList, klass);\n};\n\nvar getTypedArrayConstructor = function (it) {\n var proto = getPrototypeOf(it);\n if (!isObject(proto)) return;\n var state = getInternalState(proto);\n return (state && hasOwn(state, TYPED_ARRAY_CONSTRUCTOR)) ? state[TYPED_ARRAY_CONSTRUCTOR] : getTypedArrayConstructor(proto);\n};\n\nvar isTypedArray = function (it) {\n if (!isObject(it)) return false;\n var klass = classof(it);\n return hasOwn(TypedArrayConstructorsList, klass)\n || hasOwn(BigIntArrayConstructorsList, klass);\n};\n\nvar aTypedArray = function (it) {\n if (isTypedArray(it)) return it;\n throw new TypeError('Target is not a typed array');\n};\n\nvar aTypedArrayConstructor = function (C) {\n if (isCallable(C) && (!setPrototypeOf || isPrototypeOf(TypedArray, C))) return C;\n throw new TypeError(tryToString(C) + ' is not a typed array constructor');\n};\n\nvar exportTypedArrayMethod = function (KEY, property, forced, options) {\n if (!DESCRIPTORS) return;\n if (forced) for (var ARRAY in TypedArrayConstructorsList) {\n var TypedArrayConstructor = globalThis[ARRAY];\n if (TypedArrayConstructor && hasOwn(TypedArrayConstructor.prototype, KEY)) try {\n delete TypedArrayConstructor.prototype[KEY];\n } catch (error) {\n // old WebKit bug - some methods are non-configurable\n try {\n TypedArrayConstructor.prototype[KEY] = property;\n } catch (error2) { /* empty */ }\n }\n }\n if (!TypedArrayPrototype[KEY] || forced) {\n defineBuiltIn(TypedArrayPrototype, KEY, forced ? property\n : NATIVE_ARRAY_BUFFER_VIEWS && Int8ArrayPrototype[KEY] || property, options);\n }\n};\n\nvar exportTypedArrayStaticMethod = function (KEY, property, forced) {\n var ARRAY, TypedArrayConstructor;\n if (!DESCRIPTORS) return;\n if (setPrototypeOf) {\n if (forced) for (ARRAY in TypedArrayConstructorsList) {\n TypedArrayConstructor = globalThis[ARRAY];\n if (TypedArrayConstructor && hasOwn(TypedArrayConstructor, KEY)) try {\n delete TypedArrayConstructor[KEY];\n } catch (error) { /* empty */ }\n }\n if (!TypedArray[KEY] || forced) {\n // V8 ~ Chrome 49-50 `%TypedArray%` methods are non-writable non-configurable\n try {\n return defineBuiltIn(TypedArray, KEY, forced ? property : NATIVE_ARRAY_BUFFER_VIEWS && TypedArray[KEY] || property);\n } catch (error) { /* empty */ }\n } else return;\n }\n for (ARRAY in TypedArrayConstructorsList) {\n TypedArrayConstructor = globalThis[ARRAY];\n if (TypedArrayConstructor && (!TypedArrayConstructor[KEY] || forced)) {\n defineBuiltIn(TypedArrayConstructor, KEY, property);\n }\n }\n};\n\nfor (NAME in TypedArrayConstructorsList) {\n Constructor = globalThis[NAME];\n Prototype = Constructor && Constructor.prototype;\n if (Prototype) enforceInternalState(Prototype)[TYPED_ARRAY_CONSTRUCTOR] = Constructor;\n else NATIVE_ARRAY_BUFFER_VIEWS = false;\n}\n\nfor (NAME in BigIntArrayConstructorsList) {\n Constructor = globalThis[NAME];\n Prototype = Constructor && Constructor.prototype;\n if (Prototype) enforceInternalState(Prototype)[TYPED_ARRAY_CONSTRUCTOR] = Constructor;\n}\n\n// WebKit bug - typed arrays constructors prototype is Object.prototype\nif (!NATIVE_ARRAY_BUFFER_VIEWS || !isCallable(TypedArray) || TypedArray === Function.prototype) {\n // eslint-disable-next-line no-shadow -- safe\n TypedArray = function TypedArray() {\n throw new TypeError('Incorrect invocation');\n };\n if (NATIVE_ARRAY_BUFFER_VIEWS) for (NAME in TypedArrayConstructorsList) {\n if (globalThis[NAME]) setPrototypeOf(globalThis[NAME], TypedArray);\n }\n}\n\nif (!NATIVE_ARRAY_BUFFER_VIEWS || !TypedArrayPrototype || TypedArrayPrototype === ObjectPrototype) {\n TypedArrayPrototype = TypedArray.prototype;\n if (NATIVE_ARRAY_BUFFER_VIEWS) for (NAME in TypedArrayConstructorsList) {\n if (globalThis[NAME]) setPrototypeOf(globalThis[NAME].prototype, TypedArrayPrototype);\n }\n}\n\n// WebKit bug - one more object in Uint8ClampedArray prototype chain\nif (NATIVE_ARRAY_BUFFER_VIEWS && getPrototypeOf(Uint8ClampedArrayPrototype) !== TypedArrayPrototype) {\n setPrototypeOf(Uint8ClampedArrayPrototype, TypedArrayPrototype);\n}\n\nif (DESCRIPTORS && !hasOwn(TypedArrayPrototype, TO_STRING_TAG)) {\n TYPED_ARRAY_TAG_REQUIRED = true;\n defineBuiltInAccessor(TypedArrayPrototype, TO_STRING_TAG, {\n configurable: true,\n get: function () {\n return isObject(this) ? this[TYPED_ARRAY_TAG] : undefined;\n }\n });\n for (NAME in TypedArrayConstructorsList) if (globalThis[NAME]) {\n createNonEnumerableProperty(globalThis[NAME], TYPED_ARRAY_TAG, NAME);\n }\n}\n\nmodule.exports = {\n NATIVE_ARRAY_BUFFER_VIEWS: NATIVE_ARRAY_BUFFER_VIEWS,\n TYPED_ARRAY_TAG: TYPED_ARRAY_TAG_REQUIRED && TYPED_ARRAY_TAG,\n aTypedArray: aTypedArray,\n aTypedArrayConstructor: aTypedArrayConstructor,\n exportTypedArrayMethod: exportTypedArrayMethod,\n exportTypedArrayStaticMethod: exportTypedArrayStaticMethod,\n getTypedArrayConstructor: getTypedArrayConstructor,\n isView: isView,\n isTypedArray: isTypedArray,\n TypedArray: TypedArray,\n TypedArrayPrototype: TypedArrayPrototype\n};\n","// Unique ID creation requires a high quality random # generator. In the browser we therefore\n// require the crypto API and do not support built-in fallback to lower quality random number\n// generators (like Math.random()).\nvar getRandomValues;\nvar rnds8 = new Uint8Array(16);\nexport default function rng() {\n // lazy load so that environments that need to polyfill have a chance to do so\n if (!getRandomValues) {\n // getRandomValues needs to be invoked in a context where \"this\" is a Crypto implementation. Also,\n // find the complete implementation of crypto (msCrypto) on IE11.\n getRandomValues = typeof crypto !== 'undefined' && crypto.getRandomValues && crypto.getRandomValues.bind(crypto) || typeof msCrypto !== 'undefined' && typeof msCrypto.getRandomValues === 'function' && msCrypto.getRandomValues.bind(msCrypto);\n\n if (!getRandomValues) {\n throw new Error('crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported');\n }\n }\n\n return getRandomValues(rnds8);\n}","export default /^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i;","import REGEX from './regex.js';\n\nfunction validate(uuid) {\n return typeof uuid === 'string' && REGEX.test(uuid);\n}\n\nexport default validate;","import validate from './validate.js';\n/**\n * Convert array of 16 byte values to UUID string format of the form:\n * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX\n */\n\nvar byteToHex = [];\n\nfor (var i = 0; i < 256; ++i) {\n byteToHex.push((i + 0x100).toString(16).substr(1));\n}\n\nfunction stringify(arr) {\n var offset = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n // Note: Be careful editing this code! It's been tuned for performance\n // and works in ways you may not expect. See https://github.com/uuidjs/uuid/pull/434\n var uuid = (byteToHex[arr[offset + 0]] + byteToHex[arr[offset + 1]] + byteToHex[arr[offset + 2]] + byteToHex[arr[offset + 3]] + '-' + byteToHex[arr[offset + 4]] + byteToHex[arr[offset + 5]] + '-' + byteToHex[arr[offset + 6]] + byteToHex[arr[offset + 7]] + '-' + byteToHex[arr[offset + 8]] + byteToHex[arr[offset + 9]] + '-' + byteToHex[arr[offset + 10]] + byteToHex[arr[offset + 11]] + byteToHex[arr[offset + 12]] + byteToHex[arr[offset + 13]] + byteToHex[arr[offset + 14]] + byteToHex[arr[offset + 15]]).toLowerCase(); // Consistency check for valid UUID. If this throws, it's likely due to one\n // of the following:\n // - One or more input array values don't map to a hex octet (leading to\n // \"undefined\" in the uuid)\n // - Invalid input values for the RFC `version` or `variant` fields\n\n if (!validate(uuid)) {\n throw TypeError('Stringified UUID is invalid');\n }\n\n return uuid;\n}\n\nexport default stringify;","import rng from './rng.js';\nimport stringify from './stringify.js';\n\nfunction v4(options, buf, offset) {\n options = options || {};\n var rnds = options.random || (options.rng || rng)(); // Per 4.4, set bits for version and `clock_seq_hi_and_reserved`\n\n rnds[6] = rnds[6] & 0x0f | 0x40;\n rnds[8] = rnds[8] & 0x3f | 0x80; // Copy bytes to buffer, if provided\n\n if (buf) {\n offset = offset || 0;\n\n for (var i = 0; i < 16; ++i) {\n buf[offset + i] = rnds[i];\n }\n\n return buf;\n }\n\n return stringify(rnds);\n}\n\nexport default v4;","export default {\n isoName: 'en-US',\n nativeName: 'English (US)',\n label: {\n clear: 'Clear',\n ok: 'OK',\n cancel: 'Cancel',\n close: 'Close',\n set: 'Set',\n select: 'Select',\n reset: 'Reset',\n remove: 'Remove',\n update: 'Update',\n create: 'Create',\n search: 'Search',\n filter: 'Filter',\n refresh: 'Refresh'\n },\n date: {\n days: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),\n daysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'),\n monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n firstDayOfWeek: 0, // 0-6, 0 - Sunday, 1 Monday, ...\n format24h: false,\n pluralDay: 'days'\n },\n table: {\n noData: 'No data available',\n noResults: 'No matching records found',\n loading: 'Loading...',\n selectedRecords: rows => (\n rows === 1\n ? '1 record selected.'\n : (rows === 0 ? 'No' : rows) + ' records selected.'\n ),\n recordsPerPage: 'Records per page:',\n allRows: 'All',\n pagination: (start, end, total) => start + '-' + end + ' of ' + total,\n columns: 'Columns'\n },\n editor: {\n url: 'URL',\n bold: 'Bold',\n italic: 'Italic',\n strikethrough: 'Strikethrough',\n underline: 'Underline',\n unorderedList: 'Unordered List',\n orderedList: 'Ordered List',\n subscript: 'Subscript',\n superscript: 'Superscript',\n hyperlink: 'Hyperlink',\n toggleFullscreen: 'Toggle Fullscreen',\n quote: 'Quote',\n left: 'Left align',\n center: 'Center align',\n right: 'Right align',\n justify: 'Justify align',\n print: 'Print',\n outdent: 'Decrease indentation',\n indent: 'Increase indentation',\n removeFormat: 'Remove formatting',\n formatting: 'Formatting',\n fontSize: 'Font Size',\n align: 'Align',\n hr: 'Insert Horizontal Rule',\n undo: 'Undo',\n redo: 'Redo',\n heading1: 'Heading 1',\n heading2: 'Heading 2',\n heading3: 'Heading 3',\n heading4: 'Heading 4',\n heading5: 'Heading 5',\n heading6: 'Heading 6',\n paragraph: 'Paragraph',\n code: 'Code',\n size1: 'Very small',\n size2: 'A bit small',\n size3: 'Normal',\n size4: 'Medium-large',\n size5: 'Big',\n size6: 'Very big',\n size7: 'Maximum',\n defaultFont: 'Default Font',\n viewSource: 'View Source'\n },\n tree: {\n noNodes: 'No nodes available',\n noResults: 'No matching nodes found'\n }\n}\n","import defineReactivePlugin from './utils/private/define-reactive-plugin.js'\nimport langEn from '../lang/en-US.js'\n\nfunction getLocale () {\n if (__QUASAR_SSR_SERVER__) { return }\n\n const val = Array.isArray(navigator.languages) === true && navigator.languages.length > 0\n ? navigator.languages[ 0 ]\n : navigator.language\n\n if (typeof val === 'string') {\n return val.split(/[-_]/).map((v, i) => (\n i === 0\n ? v.toLowerCase()\n : (\n i > 1 || v.length < 4\n ? v.toUpperCase()\n : (v[ 0 ].toUpperCase() + v.slice(1).toLowerCase())\n )\n )).join('-')\n }\n}\n\nconst Plugin = defineReactivePlugin({\n __langPack: {}\n}, {\n getLocale,\n\n set (langObject = langEn, ssrContext) {\n const lang = {\n ...langObject,\n rtl: langObject.rtl === true,\n getLocale\n }\n\n if (__QUASAR_SSR_SERVER__) {\n if (ssrContext === void 0) {\n console.error('SSR ERROR: second param required: Quasar.lang.set(lang, ssrContext)')\n return\n }\n\n const dir = lang.rtl === true ? 'rtl' : 'ltr'\n const attrs = `lang=${ lang.isoName } dir=${ dir }`\n\n lang.set = ssrContext.$q.lang.set\n\n ssrContext._meta.htmlAttrs = ssrContext.__qPrevLang !== void 0\n ? ssrContext._meta.htmlAttrs.replace(ssrContext.__qPrevLang, attrs)\n : attrs\n\n ssrContext.__qPrevLang = attrs\n ssrContext.$q.lang = lang\n }\n else {\n const el = document.documentElement\n el.setAttribute('dir', lang.rtl === true ? 'rtl' : 'ltr')\n el.setAttribute('lang', lang.isoName)\n\n lang.set = Plugin.set\n\n Object.assign(Plugin.__langPack, lang)\n\n Plugin.props = lang\n Plugin.isoName = lang.isoName\n Plugin.nativeName = lang.nativeName\n }\n },\n\n install ({ $q, lang, ssrContext }) {\n if (__QUASAR_SSR_SERVER__) {\n const initialLang = lang || langEn\n\n $q.lang = {}\n $q.lang.set = langObject => {\n this.set(langObject, ssrContext)\n }\n\n $q.lang.set(initialLang)\n\n // one-time SSR server operation\n if (this.isoName !== initialLang.isoName) {\n this.isoName = initialLang.isoName\n this.nativeName = initialLang.nativeName\n this.props = initialLang\n }\n }\n else {\n $q.lang = Plugin.__langPack\n\n if (this.__installed === true) {\n lang !== void 0 && this.set(lang)\n }\n else {\n this.set(lang || langEn)\n }\n }\n }\n})\n\nexport default Plugin\n","'use strict';\nvar makeBuiltIn = require('../internals/make-built-in');\nvar defineProperty = require('../internals/object-define-property');\n\nmodule.exports = function (target, name, descriptor) {\n if (descriptor.get) makeBuiltIn(descriptor.get, name, { getter: true });\n if (descriptor.set) makeBuiltIn(descriptor.set, name, { setter: true });\n return defineProperty.f(target, name, descriptor);\n};\n","import { h, defineComponent, computed, getCurrentInstance } from 'vue'\n\nimport useDark, { useDarkProps } from '../../composables/private/use-dark.js'\n\nimport { hSlot } from '../../utils/private/render.js'\n\nexport default defineComponent({\n name: 'QCard',\n\n props: {\n ...useDarkProps,\n\n tag: {\n type: String,\n default: 'div'\n },\n\n square: Boolean,\n flat: Boolean,\n bordered: Boolean\n },\n\n setup (props, { slots }) {\n const vm = getCurrentInstance()\n const isDark = useDark(props, vm.proxy.$q)\n\n const classes = computed(() =>\n 'q-card'\n + (isDark.value === true ? ' q-card--dark q-dark' : '')\n + (props.bordered === true ? ' q-card--bordered' : '')\n + (props.square === true ? ' q-card--square no-border-radius' : '')\n + (props.flat === true ? ' q-card--flat no-shadow' : '')\n )\n\n return () => h(props.tag, { class: classes.value }, hSlot(slots.default))\n }\n})\n","import { isRef } from 'vue'\n\nexport function offset (el) {\n if (el === window) {\n return { top: 0, left: 0 }\n }\n const { top, left } = el.getBoundingClientRect()\n return { top, left }\n}\n\nexport function style (el, property) {\n return window.getComputedStyle(el).getPropertyValue(property)\n}\n\nexport function height (el) {\n return el === window\n ? window.innerHeight\n : el.getBoundingClientRect().height\n}\n\nexport function width (el) {\n return el === window\n ? window.innerWidth\n : el.getBoundingClientRect().width\n}\n\nexport function css (element, css) {\n const style = element.style\n\n Object.keys(css).forEach(prop => {\n style[ prop ] = css[ prop ]\n })\n}\n\nexport function cssBatch (elements, style) {\n elements.forEach(el => css(el, style))\n}\n\nexport function ready (fn) {\n if (typeof fn !== 'function') {\n return\n }\n\n if (document.readyState !== 'loading') {\n return fn()\n }\n\n document.addEventListener('DOMContentLoaded', fn, false)\n}\n\n// internal\nexport function getElement (el) {\n if (el === void 0 || el === null) {\n return void 0\n }\n\n if (typeof el === 'string') {\n try {\n return document.querySelector(el) || void 0\n }\n catch (err) {\n return void 0\n }\n }\n\n const target = isRef(el) === true\n ? el.value\n : el\n\n if (target) {\n return target.$el || target\n }\n}\n\n// internal\nexport function childHasFocus (el, focusedEl) {\n if (el === void 0 || el.contains(focusedEl) === true) {\n return true\n }\n\n for (let next = el.nextElementSibling; next !== null; next = next.nextElementSibling) {\n if (next.contains(focusedEl)) {\n return true\n }\n }\n\n return false\n}\n\nexport default {\n offset,\n style,\n height,\n width,\n css,\n cssBatch,\n ready\n}\n","'use strict';\nvar toPrimitive = require('../internals/to-primitive');\n\nvar $TypeError = TypeError;\n\n// `ToBigInt` abstract operation\n// https://tc39.es/ecma262/#sec-tobigint\nmodule.exports = function (argument) {\n var prim = toPrimitive(argument, 'number');\n if (typeof prim == 'number') throw new $TypeError(\"Can't convert number to bigint\");\n // eslint-disable-next-line es/no-bigint -- safe\n return BigInt(prim);\n};\n","import { h, createApp, Transition, onMounted } from 'vue'\n\nimport QSpinner from '../components/spinner/QSpinner.js'\n\nimport defineReactivePlugin from '../utils/private/define-reactive-plugin.js'\nimport { createGlobalNode, removeGlobalNode } from '../utils/private/global-nodes.js'\nimport preventScroll from '../utils/prevent-scroll.js'\n\nlet\n app,\n vm,\n uid = 0,\n timeout,\n props = {}\n\nconst originalDefaults = {\n delay: 0,\n message: false,\n html: false,\n spinnerSize: 80,\n spinnerColor: '',\n messageColor: '',\n backgroundColor: '',\n boxClass: '',\n spinner: QSpinner,\n customClass: ''\n}\n\nconst defaults = { ...originalDefaults }\n\nconst Plugin = defineReactivePlugin({\n isActive: false\n}, {\n show (opts) {\n if (__QUASAR_SSR_SERVER__) { return }\n\n props = opts === Object(opts) && opts.ignoreDefaults === true\n ? { ...originalDefaults, ...opts }\n : { ...defaults, ...opts }\n\n Plugin.isActive = true\n\n if (app !== void 0) {\n props.uid = uid\n vm.$forceUpdate()\n return\n }\n\n props.uid = ++uid\n clearTimeout(timeout)\n\n timeout = setTimeout(() => {\n timeout = void 0\n\n const el = createGlobalNode('q-loading')\n\n app = createApp({\n name: 'QLoading',\n\n setup () {\n onMounted(() => {\n preventScroll(true)\n })\n\n function onAfterLeave () {\n // might be called to finalize\n // previous leave, even if it was cancelled\n if (Plugin.isActive !== true && app !== void 0) {\n preventScroll(false)\n app.unmount(el)\n removeGlobalNode(el)\n app = void 0\n vm = void 0\n }\n }\n\n function getContent () {\n if (Plugin.isActive !== true) {\n return null\n }\n\n const content = [\n h(props.spinner, {\n class: 'q-loading__spinner',\n color: props.spinnerColor,\n size: props.spinnerSize\n })\n ]\n\n props.message && content.push(\n h('div', {\n class: 'q-loading__message'\n + (props.messageColor ? ` text-${ props.messageColor }` : ''),\n [ props.html === true ? 'innerHTML' : 'textContent' ]: props.message\n })\n )\n\n return h('div', {\n class: 'q-loading fullscreen flex flex-center z-max ' + props.customClass.trim(),\n key: props.uid\n }, [\n h('div', {\n class: 'q-loading__backdrop'\n + (props.backgroundColor ? ` bg-${ props.backgroundColor }` : '')\n }),\n\n h('div', {\n class: 'q-loading__box column items-center ' + props.boxClass\n }, content)\n ])\n }\n\n return () => h(Transition, {\n name: 'q-transition--fade',\n appear: true,\n onAfterLeave\n }, getContent)\n }\n })\n\n vm = app.mount(el)\n }, props.delay)\n },\n\n hide () {\n if (__QUASAR_SSR_SERVER__ !== true && Plugin.isActive === true) {\n if (timeout !== void 0) {\n clearTimeout(timeout)\n timeout = void 0\n }\n\n Plugin.isActive = false\n }\n },\n\n setDefaults (opts) {\n if (__QUASAR_SSR_SERVER__ !== true) {\n opts === Object(opts) && Object.assign(defaults, opts)\n }\n },\n\n install ({ $q }) {\n $q.loading = this\n\n if (__QUASAR_SSR_SERVER__ !== true && $q.config.loading !== void 0) {\n this.setDefaults($q.config.loading)\n }\n }\n})\n\nexport default Plugin\n","'use strict';\nvar TO_STRING_TAG_SUPPORT = require('../internals/to-string-tag-support');\nvar isCallable = require('../internals/is-callable');\nvar classofRaw = require('../internals/classof-raw');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar $Object = Object;\n\n// ES3 wrong here\nvar CORRECT_ARGUMENTS = classofRaw(function () { return arguments; }()) === 'Arguments';\n\n// fallback for IE11 Script Access Denied error\nvar tryGet = function (it, key) {\n try {\n return it[key];\n } catch (error) { /* empty */ }\n};\n\n// getting tag from ES6+ `Object.prototype.toString`\nmodule.exports = TO_STRING_TAG_SUPPORT ? classofRaw : function (it) {\n var O, tag, result;\n return it === undefined ? 'Undefined' : it === null ? 'Null'\n // @@toStringTag case\n : typeof (tag = tryGet(O = $Object(it), TO_STRING_TAG)) == 'string' ? tag\n // builtinTag case\n : CORRECT_ARGUMENTS ? classofRaw(O)\n // ES3 arguments fallback\n : (result = classofRaw(O)) === 'Object' && isCallable(O.callee) ? 'Arguments' : result;\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar iterate = require('../internals/iterate');\nvar aCallable = require('../internals/a-callable');\nvar anObject = require('../internals/an-object');\nvar getIteratorDirect = require('../internals/get-iterator-direct');\n\n// `Iterator.prototype.find` method\n// https://tc39.es/ecma262/#sec-iterator.prototype.find\n$({ target: 'Iterator', proto: true, real: true }, {\n find: function find(predicate) {\n anObject(this);\n aCallable(predicate);\n var record = getIteratorDirect(this);\n var counter = 0;\n return iterate(record, function (value, stop) {\n if (predicate(value, counter++)) return stop(value);\n }, { IS_RECORD: true, INTERRUPTED: true }).result;\n }\n});\n","'use strict';\n\nvar utils = require('./../utils');\n\nfunction InterceptorManager() {\n this.handlers = [];\n}\n\n/**\n * Add a new interceptor to the stack\n *\n * @param {Function} fulfilled The function to handle `then` for a `Promise`\n * @param {Function} rejected The function to handle `reject` for a `Promise`\n *\n * @return {Number} An ID used to remove interceptor later\n */\nInterceptorManager.prototype.use = function use(fulfilled, rejected, options) {\n this.handlers.push({\n fulfilled: fulfilled,\n rejected: rejected,\n synchronous: options ? options.synchronous : false,\n runWhen: options ? options.runWhen : null\n });\n return this.handlers.length - 1;\n};\n\n/**\n * Remove an interceptor from the stack\n *\n * @param {Number} id The ID that was returned by `use`\n */\nInterceptorManager.prototype.eject = function eject(id) {\n if (this.handlers[id]) {\n this.handlers[id] = null;\n }\n};\n\n/**\n * Iterate over all the registered interceptors\n *\n * This method is particularly useful for skipping over any\n * interceptors that may have become `null` calling `eject`.\n *\n * @param {Function} fn The function to call for each interceptor\n */\nInterceptorManager.prototype.forEach = function forEach(fn) {\n utils.forEach(this.handlers, function forEachHandler(h) {\n if (h !== null) {\n fn(h);\n }\n });\n};\n\nmodule.exports = InterceptorManager;\n","let queue = []\nconst waitFlags = []\n\nexport function addFocusWaitFlag (flag) {\n waitFlags.push(flag)\n}\n\nexport function removeFocusWaitFlag (flag) {\n const index = waitFlags.indexOf(flag)\n if (index !== -1) {\n waitFlags.splice(index, 1)\n }\n\n if (waitFlags.length === 0 && queue.length > 0) {\n // only call last focus handler (can't focus multiple things at once)\n queue[ queue.length - 1 ]()\n queue = []\n }\n}\n\nexport function addFocusFn (fn) {\n if (waitFlags.length === 0) {\n fn()\n }\n else {\n queue.push(fn)\n return fn\n }\n}\n\nexport function removeFocusFn (fn) {\n const index = queue.indexOf(fn)\n if (index !== -1) {\n queue.splice(index, 1)\n }\n}\n","'use strict';\nvar shared = require('../internals/shared');\nvar uid = require('../internals/uid');\n\nvar keys = shared('keys');\n\nmodule.exports = function (key) {\n return keys[key] || (keys[key] = uid(key));\n};\n","'use strict';\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\n\nvar $RangeError = RangeError;\n\nmodule.exports = function (it) {\n var result = toIntegerOrInfinity(it);\n if (result < 0) throw new $RangeError(\"The argument can't be less than 0\");\n return result;\n};\n","'use strict';\n// toObject with fallback for non-array-like ES3 strings\nvar IndexedObject = require('../internals/indexed-object');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\nmodule.exports = function (it) {\n return IndexedObject(requireObjectCoercible(it));\n};\n","'use strict';\n/* eslint-disable es/no-symbol -- required for testing */\nvar NATIVE_SYMBOL = require('../internals/symbol-constructor-detection');\n\nmodule.exports = NATIVE_SYMBOL &&\n !Symbol.sham &&\n typeof Symbol.iterator == 'symbol';\n","import { __values, __read, __awaiter, __generator, __spreadArray } from 'tslib';\nimport { Deferred } from '@firebase/util';\n\n/**\r\n * Component for service name T, e.g. `auth`, `auth-internal`\r\n */\r\nvar Component = /** @class */ (function () {\r\n /**\r\n *\r\n * @param name The public service name, e.g. app, auth, firestore, database\r\n * @param instanceFactory Service factory responsible for creating the public interface\r\n * @param type whether the service provided by the component is public or private\r\n */\r\n function Component(name, instanceFactory, type) {\r\n this.name = name;\r\n this.instanceFactory = instanceFactory;\r\n this.type = type;\r\n this.multipleInstances = false;\r\n /**\r\n * Properties to be added to the service namespace\r\n */\r\n this.serviceProps = {};\r\n this.instantiationMode = \"LAZY\" /* LAZY */;\r\n this.onInstanceCreated = null;\r\n }\r\n Component.prototype.setInstantiationMode = function (mode) {\r\n this.instantiationMode = mode;\r\n return this;\r\n };\r\n Component.prototype.setMultipleInstances = function (multipleInstances) {\r\n this.multipleInstances = multipleInstances;\r\n return this;\r\n };\r\n Component.prototype.setServiceProps = function (props) {\r\n this.serviceProps = props;\r\n return this;\r\n };\r\n Component.prototype.setInstanceCreatedCallback = function (callback) {\r\n this.onInstanceCreated = callback;\r\n return this;\r\n };\r\n return Component;\r\n}());\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nvar DEFAULT_ENTRY_NAME = '[DEFAULT]';\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * Provider for instance for service name T, e.g. 'auth', 'auth-internal'\r\n * NameServiceMapping[T] is an alias for the type of the instance\r\n */\r\nvar Provider = /** @class */ (function () {\r\n function Provider(name, container) {\r\n this.name = name;\r\n this.container = container;\r\n this.component = null;\r\n this.instances = new Map();\r\n this.instancesDeferred = new Map();\r\n this.instancesOptions = new Map();\r\n this.onInitCallbacks = new Map();\r\n }\r\n /**\r\n * @param identifier A provider can provide mulitple instances of a service\r\n * if this.component.multipleInstances is true.\r\n */\r\n Provider.prototype.get = function (identifier) {\r\n // if multipleInstances is not supported, use the default name\r\n var normalizedIdentifier = this.normalizeInstanceIdentifier(identifier);\r\n if (!this.instancesDeferred.has(normalizedIdentifier)) {\r\n var deferred = new Deferred();\r\n this.instancesDeferred.set(normalizedIdentifier, deferred);\r\n if (this.isInitialized(normalizedIdentifier) ||\r\n this.shouldAutoInitialize()) {\r\n // initialize the service if it can be auto-initialized\r\n try {\r\n var instance = this.getOrInitializeService({\r\n instanceIdentifier: normalizedIdentifier\r\n });\r\n if (instance) {\r\n deferred.resolve(instance);\r\n }\r\n }\r\n catch (e) {\r\n // when the instance factory throws an exception during get(), it should not cause\r\n // a fatal error. We just return the unresolved promise in this case.\r\n }\r\n }\r\n }\r\n return this.instancesDeferred.get(normalizedIdentifier).promise;\r\n };\r\n Provider.prototype.getImmediate = function (options) {\r\n var _a;\r\n // if multipleInstances is not supported, use the default name\r\n var normalizedIdentifier = this.normalizeInstanceIdentifier(options === null || options === void 0 ? void 0 : options.identifier);\r\n var optional = (_a = options === null || options === void 0 ? void 0 : options.optional) !== null && _a !== void 0 ? _a : false;\r\n if (this.isInitialized(normalizedIdentifier) ||\r\n this.shouldAutoInitialize()) {\r\n try {\r\n return this.getOrInitializeService({\r\n instanceIdentifier: normalizedIdentifier\r\n });\r\n }\r\n catch (e) {\r\n if (optional) {\r\n return null;\r\n }\r\n else {\r\n throw e;\r\n }\r\n }\r\n }\r\n else {\r\n // In case a component is not initialized and should/can not be auto-initialized at the moment, return null if the optional flag is set, or throw\r\n if (optional) {\r\n return null;\r\n }\r\n else {\r\n throw Error(\"Service \" + this.name + \" is not available\");\r\n }\r\n }\r\n };\r\n Provider.prototype.getComponent = function () {\r\n return this.component;\r\n };\r\n Provider.prototype.setComponent = function (component) {\r\n var e_1, _a;\r\n if (component.name !== this.name) {\r\n throw Error(\"Mismatching Component \" + component.name + \" for Provider \" + this.name + \".\");\r\n }\r\n if (this.component) {\r\n throw Error(\"Component for \" + this.name + \" has already been provided\");\r\n }\r\n this.component = component;\r\n // return early without attempting to initialize the component if the component requires explicit initialization (calling `Provider.initialize()`)\r\n if (!this.shouldAutoInitialize()) {\r\n return;\r\n }\r\n // if the service is eager, initialize the default instance\r\n if (isComponentEager(component)) {\r\n try {\r\n this.getOrInitializeService({ instanceIdentifier: DEFAULT_ENTRY_NAME });\r\n }\r\n catch (e) {\r\n // when the instance factory for an eager Component throws an exception during the eager\r\n // initialization, it should not cause a fatal error.\r\n // TODO: Investigate if we need to make it configurable, because some component may want to cause\r\n // a fatal error in this case?\r\n }\r\n }\r\n try {\r\n // Create service instances for the pending promises and resolve them\r\n // NOTE: if this.multipleInstances is false, only the default instance will be created\r\n // and all promises with resolve with it regardless of the identifier.\r\n for (var _b = __values(this.instancesDeferred.entries()), _c = _b.next(); !_c.done; _c = _b.next()) {\r\n var _d = __read(_c.value, 2), instanceIdentifier = _d[0], instanceDeferred = _d[1];\r\n var normalizedIdentifier = this.normalizeInstanceIdentifier(instanceIdentifier);\r\n try {\r\n // `getOrInitializeService()` should always return a valid instance since a component is guaranteed. use ! to make typescript happy.\r\n var instance = this.getOrInitializeService({\r\n instanceIdentifier: normalizedIdentifier\r\n });\r\n instanceDeferred.resolve(instance);\r\n }\r\n catch (e) {\r\n // when the instance factory throws an exception, it should not cause\r\n // a fatal error. We just leave the promise unresolved.\r\n }\r\n }\r\n }\r\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\r\n finally {\r\n try {\r\n if (_c && !_c.done && (_a = _b.return)) _a.call(_b);\r\n }\r\n finally { if (e_1) throw e_1.error; }\r\n }\r\n };\r\n Provider.prototype.clearInstance = function (identifier) {\r\n if (identifier === void 0) { identifier = DEFAULT_ENTRY_NAME; }\r\n this.instancesDeferred.delete(identifier);\r\n this.instancesOptions.delete(identifier);\r\n this.instances.delete(identifier);\r\n };\r\n // app.delete() will call this method on every provider to delete the services\r\n // TODO: should we mark the provider as deleted?\r\n Provider.prototype.delete = function () {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var services;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n services = Array.from(this.instances.values());\r\n return [4 /*yield*/, Promise.all(__spreadArray(__spreadArray([], __read(services\r\n .filter(function (service) { return 'INTERNAL' in service; }) // legacy services\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n .map(function (service) { return service.INTERNAL.delete(); }))), __read(services\r\n .filter(function (service) { return '_delete' in service; }) // modularized services\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n .map(function (service) { return service._delete(); }))))];\r\n case 1:\r\n _a.sent();\r\n return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n Provider.prototype.isComponentSet = function () {\r\n return this.component != null;\r\n };\r\n Provider.prototype.isInitialized = function (identifier) {\r\n if (identifier === void 0) { identifier = DEFAULT_ENTRY_NAME; }\r\n return this.instances.has(identifier);\r\n };\r\n Provider.prototype.getOptions = function (identifier) {\r\n if (identifier === void 0) { identifier = DEFAULT_ENTRY_NAME; }\r\n return this.instancesOptions.get(identifier) || {};\r\n };\r\n Provider.prototype.initialize = function (opts) {\r\n var e_2, _a;\r\n if (opts === void 0) { opts = {}; }\r\n var _b = opts.options, options = _b === void 0 ? {} : _b;\r\n var normalizedIdentifier = this.normalizeInstanceIdentifier(opts.instanceIdentifier);\r\n if (this.isInitialized(normalizedIdentifier)) {\r\n throw Error(this.name + \"(\" + normalizedIdentifier + \") has already been initialized\");\r\n }\r\n if (!this.isComponentSet()) {\r\n throw Error(\"Component \" + this.name + \" has not been registered yet\");\r\n }\r\n var instance = this.getOrInitializeService({\r\n instanceIdentifier: normalizedIdentifier,\r\n options: options\r\n });\r\n try {\r\n // resolve any pending promise waiting for the service instance\r\n for (var _c = __values(this.instancesDeferred.entries()), _d = _c.next(); !_d.done; _d = _c.next()) {\r\n var _e = __read(_d.value, 2), instanceIdentifier = _e[0], instanceDeferred = _e[1];\r\n var normalizedDeferredIdentifier = this.normalizeInstanceIdentifier(instanceIdentifier);\r\n if (normalizedIdentifier === normalizedDeferredIdentifier) {\r\n instanceDeferred.resolve(instance);\r\n }\r\n }\r\n }\r\n catch (e_2_1) { e_2 = { error: e_2_1 }; }\r\n finally {\r\n try {\r\n if (_d && !_d.done && (_a = _c.return)) _a.call(_c);\r\n }\r\n finally { if (e_2) throw e_2.error; }\r\n }\r\n return instance;\r\n };\r\n /**\r\n *\r\n * @param callback - a function that will be invoked after the provider has been initialized by calling provider.initialize().\r\n * The function is invoked SYNCHRONOUSLY, so it should not execute any longrunning tasks in order to not block the program.\r\n *\r\n * @param identifier An optional instance identifier\r\n * @returns a function to unregister the callback\r\n */\r\n Provider.prototype.onInit = function (callback, identifier) {\r\n var _a;\r\n var normalizedIdentifier = this.normalizeInstanceIdentifier(identifier);\r\n var existingCallbacks = (_a = this.onInitCallbacks.get(normalizedIdentifier)) !== null && _a !== void 0 ? _a : new Set();\r\n existingCallbacks.add(callback);\r\n this.onInitCallbacks.set(normalizedIdentifier, existingCallbacks);\r\n var existingInstance = this.instances.get(normalizedIdentifier);\r\n if (existingInstance) {\r\n callback(existingInstance, normalizedIdentifier);\r\n }\r\n return function () {\r\n existingCallbacks.delete(callback);\r\n };\r\n };\r\n /**\r\n * Invoke onInit callbacks synchronously\r\n * @param instance the service instance`\r\n */\r\n Provider.prototype.invokeOnInitCallbacks = function (instance, identifier) {\r\n var e_3, _a;\r\n var callbacks = this.onInitCallbacks.get(identifier);\r\n if (!callbacks) {\r\n return;\r\n }\r\n try {\r\n for (var callbacks_1 = __values(callbacks), callbacks_1_1 = callbacks_1.next(); !callbacks_1_1.done; callbacks_1_1 = callbacks_1.next()) {\r\n var callback = callbacks_1_1.value;\r\n try {\r\n callback(instance, identifier);\r\n }\r\n catch (_b) {\r\n // ignore errors in the onInit callback\r\n }\r\n }\r\n }\r\n catch (e_3_1) { e_3 = { error: e_3_1 }; }\r\n finally {\r\n try {\r\n if (callbacks_1_1 && !callbacks_1_1.done && (_a = callbacks_1.return)) _a.call(callbacks_1);\r\n }\r\n finally { if (e_3) throw e_3.error; }\r\n }\r\n };\r\n Provider.prototype.getOrInitializeService = function (_a) {\r\n var instanceIdentifier = _a.instanceIdentifier, _b = _a.options, options = _b === void 0 ? {} : _b;\r\n var instance = this.instances.get(instanceIdentifier);\r\n if (!instance && this.component) {\r\n instance = this.component.instanceFactory(this.container, {\r\n instanceIdentifier: normalizeIdentifierForFactory(instanceIdentifier),\r\n options: options\r\n });\r\n this.instances.set(instanceIdentifier, instance);\r\n this.instancesOptions.set(instanceIdentifier, options);\r\n /**\r\n * Invoke onInit listeners.\r\n * Note this.component.onInstanceCreated is different, which is used by the component creator,\r\n * while onInit listeners are registered by consumers of the provider.\r\n */\r\n this.invokeOnInitCallbacks(instance, instanceIdentifier);\r\n /**\r\n * Order is important\r\n * onInstanceCreated() should be called after this.instances.set(instanceIdentifier, instance); which\r\n * makes `isInitialized()` return true.\r\n */\r\n if (this.component.onInstanceCreated) {\r\n try {\r\n this.component.onInstanceCreated(this.container, instanceIdentifier, instance);\r\n }\r\n catch (_c) {\r\n // ignore errors in the onInstanceCreatedCallback\r\n }\r\n }\r\n }\r\n return instance || null;\r\n };\r\n Provider.prototype.normalizeInstanceIdentifier = function (identifier) {\r\n if (identifier === void 0) { identifier = DEFAULT_ENTRY_NAME; }\r\n if (this.component) {\r\n return this.component.multipleInstances ? identifier : DEFAULT_ENTRY_NAME;\r\n }\r\n else {\r\n return identifier; // assume multiple instances are supported before the component is provided.\r\n }\r\n };\r\n Provider.prototype.shouldAutoInitialize = function () {\r\n return (!!this.component &&\r\n this.component.instantiationMode !== \"EXPLICIT\" /* EXPLICIT */);\r\n };\r\n return Provider;\r\n}());\r\n// undefined should be passed to the service factory for the default instance\r\nfunction normalizeIdentifierForFactory(identifier) {\r\n return identifier === DEFAULT_ENTRY_NAME ? undefined : identifier;\r\n}\r\nfunction isComponentEager(component) {\r\n return component.instantiationMode === \"EAGER\" /* EAGER */;\r\n}\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * ComponentContainer that provides Providers for service name T, e.g. `auth`, `auth-internal`\r\n */\r\nvar ComponentContainer = /** @class */ (function () {\r\n function ComponentContainer(name) {\r\n this.name = name;\r\n this.providers = new Map();\r\n }\r\n /**\r\n *\r\n * @param component Component being added\r\n * @param overwrite When a component with the same name has already been registered,\r\n * if overwrite is true: overwrite the existing component with the new component and create a new\r\n * provider with the new component. It can be useful in tests where you want to use different mocks\r\n * for different tests.\r\n * if overwrite is false: throw an exception\r\n */\r\n ComponentContainer.prototype.addComponent = function (component) {\r\n var provider = this.getProvider(component.name);\r\n if (provider.isComponentSet()) {\r\n throw new Error(\"Component \" + component.name + \" has already been registered with \" + this.name);\r\n }\r\n provider.setComponent(component);\r\n };\r\n ComponentContainer.prototype.addOrOverwriteComponent = function (component) {\r\n var provider = this.getProvider(component.name);\r\n if (provider.isComponentSet()) {\r\n // delete the existing provider from the container, so we can register the new component\r\n this.providers.delete(component.name);\r\n }\r\n this.addComponent(component);\r\n };\r\n /**\r\n * getProvider provides a type safe interface where it can only be called with a field name\r\n * present in NameServiceMapping interface.\r\n *\r\n * Firebase SDKs providing services should extend NameServiceMapping interface to register\r\n * themselves.\r\n */\r\n ComponentContainer.prototype.getProvider = function (name) {\r\n if (this.providers.has(name)) {\r\n return this.providers.get(name);\r\n }\r\n // create a Provider for a service that hasn't registered with Firebase\r\n var provider = new Provider(name, this);\r\n this.providers.set(name, provider);\r\n return provider;\r\n };\r\n ComponentContainer.prototype.getProviders = function () {\r\n return Array.from(this.providers.values());\r\n };\r\n return ComponentContainer;\r\n}());\n\nexport { Component, ComponentContainer, Provider };\n//# sourceMappingURL=index.esm.js.map\n"],"sourceRoot":""}